You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@aurora.apache.org by Bill Farner <wf...@apache.org> on 2017/09/28 04:22:26 UTC

Review Request 62623: Use a simpler command line argument system

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/
-----------------------------------------------------------

Review request for Aurora, David McLaughlin and John Sirois.


Repository: aurora


Description
-------

**NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**

This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.

I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.

I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.

Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E


Diffs
-----

  build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
  commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
  commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
  commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
  commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
  commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
  commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
  commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
  commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
  commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
  commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
  commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
  commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
  commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
  commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
  commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
  commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
  commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
  commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
  commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
  commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
  commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
  commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
  commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
  commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
  commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
  commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
  commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
  commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
  commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
  commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
  commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
  commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
  commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
  commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
  commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
  commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
  commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
  commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
  commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
  commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
  commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
  commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
  commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
  commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
  commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
  commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
  commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
  commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
  commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
  commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
  commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
  commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
  src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
  src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
  src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
  src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
  src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
  src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
  src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
  src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
  src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
  src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
  src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
  src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
  src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
  src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
  src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
  src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
  src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
  src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
  src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
  src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
  src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
  src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
  src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
  src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
  src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
  src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
  src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
  src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
  src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
  src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
  src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
  src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
  src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
  src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
  src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
  src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
  src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
  src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
  src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
  src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
  src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
  src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
  src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
  src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
  src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
  src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
  src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
  src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
  src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 


Diff: https://reviews.apache.org/r/62623/diff/1/


Testing
-------


Thanks,

Bill Farner


Re: Review Request 62623: Use a simpler command line argument system

Posted by Santhosh Kumar Shanmugham <sa...@gmail.com>.

> On Sept. 28, 2017, 10:15 p.m., Santhosh Kumar Shanmugham wrote:
> > Mostly nits around parameter validation.
> 
> Bill Farner wrote:
>     My apologies, i could have been more clear on the _not ready to commit_ line.  The commit needs a lot of polish, including parsers.  At this point i'm looking for feedback for the shape of things.  Thanks for the thorough look either way!

Ah, my bad I missed the note.

+1 for removing commandline parsing code and consolidating the options in a single place. Makes it much easier to traverse code.

However, what was the motivation for picking `JCommander`. Have you considered `JOpt` or plain old `Jakarta-cli`? I ask since I find `JCommander` to be limited.


> On Sept. 28, 2017, 10:15 p.m., Santhosh Kumar Shanmugham wrote:
> > src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java
> > Line 55 (original), 54 (patched)
> > <https://reviews.apache.org/r/62623/diff/1/?file=1837704#file1837704line56>
> >
> >     Can we delegate this constraint checking to `JCommander`?
> 
> Bill Farner wrote:
>     I've found this tends to be awkward (in all arg libs i've seen) for args that are required based on the value of other args, which is the case here.

Sounds like we need a library with subcommand support.


- Santhosh Kumar


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186639
-----------------------------------------------------------


On Sept. 27, 2017, 9:22 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 27, 2017, 9:22 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.

> On Sept. 28, 2017, 10:15 p.m., Santhosh Kumar Shanmugham wrote:
> > Mostly nits around parameter validation.
> 
> Bill Farner wrote:
>     My apologies, i could have been more clear on the _not ready to commit_ line.  The commit needs a lot of polish, including parsers.  At this point i'm looking for feedback for the shape of things.  Thanks for the thorough look either way!
> 
> Santhosh Kumar Shanmugham wrote:
>     Ah, my bad I missed the note.
>     
>     +1 for removing commandline parsing code and consolidating the options in a single place. Makes it much easier to traverse code.
>     
>     However, what was the motivation for picking `JCommander`. Have you considered `JOpt` or plain old `Jakarta-cli`? I ask since I find `JCommander` to be limited.

> what was the motivation for picking JCommander

I like that JCommander requires explicit and up-front specificiation of args, types, and parsers.  This in contrast to getopt-style parsers that require calling code to fetch args by a name string, and deal with types and parsing at the call site.  Since we have over 100 args, we would invariably end up wanting to abstract away and centralize such behavior, ultimately finding ourselves writing another args lib.

> Have you considered JOpt or plain old Jakarta-cli

I discarded [JOpt Simple](https://pholser.github.io/jopt-simple/) and [commons-cli](https://commons.apache.org/proper/commons-cli/) (i assume that's what you mean by Jakarta-cli?) because they are both getopt-style libraries.


> On Sept. 28, 2017, 10:15 p.m., Santhosh Kumar Shanmugham wrote:
> > src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java
> > Line 55 (original), 54 (patched)
> > <https://reviews.apache.org/r/62623/diff/1/?file=1837704#file1837704line56>
> >
> >     Can we delegate this constraint checking to `JCommander`?
> 
> Bill Farner wrote:
>     I've found this tends to be awkward (in all arg libs i've seen) for args that are required based on the value of other args, which is the case here.
> 
> Santhosh Kumar Shanmugham wrote:
>     Sounds like we need a library with subcommand support.

JCommander does support subcommands, but i don't see how that helps here.  A subcommand is a different application entrypoint (do thing X _or_ do thing Y).  Here we have `--enable-feature-y` and `--required-flag-for-feature-y`.


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186639
-----------------------------------------------------------


On Sept. 27, 2017, 9:22 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 27, 2017, 9:22 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.

> On Sept. 28, 2017, 10:15 p.m., Santhosh Kumar Shanmugham wrote:
> > src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java
> > Line 55 (original), 54 (patched)
> > <https://reviews.apache.org/r/62623/diff/1/?file=1837704#file1837704line56>
> >
> >     Can we delegate this constraint checking to `JCommander`?
> 
> Bill Farner wrote:
>     I've found this tends to be awkward (in all arg libs i've seen) for args that are required based on the value of other args, which is the case here.
> 
> Santhosh Kumar Shanmugham wrote:
>     Sounds like we need a library with subcommand support.
> 
> Bill Farner wrote:
>     JCommander does support subcommands, but i don't see how that helps here.  A subcommand is a different application entrypoint (do thing X _or_ do thing Y).  Here we have `--enable-feature-y` and `--required-flag-for-feature-y`.
> 
> Santhosh Kumar Shanmugham wrote:
>     Sorry. I meant something like `requiredIf` validation, like `JOpt` provides :)

Aha, now *that* would be nice!


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186639
-----------------------------------------------------------


On Sept. 27, 2017, 9:22 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 27, 2017, 9:22 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.

> On Sept. 28, 2017, 10:15 p.m., Santhosh Kumar Shanmugham wrote:
> > Mostly nits around parameter validation.

My apologies, i could have been more clear on the _not ready to commit_ line.  The commit needs a lot of polish, including parsers.  At this point i'm looking for feedback for the shape of things.  Thanks for the thorough look either way!


> On Sept. 28, 2017, 10:15 p.m., Santhosh Kumar Shanmugham wrote:
> > src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java
> > Line 55 (original), 54 (patched)
> > <https://reviews.apache.org/r/62623/diff/1/?file=1837704#file1837704line56>
> >
> >     Can we delegate this constraint checking to `JCommander`?

I've found this tends to be awkward (in all arg libs i've seen) for args that are required based on the value of other args, which is the case here.


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186639
-----------------------------------------------------------


On Sept. 27, 2017, 9:22 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 27, 2017, 9:22 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Santhosh Kumar Shanmugham <sa...@gmail.com>.

> On Sept. 28, 2017, 10:15 p.m., Santhosh Kumar Shanmugham wrote:
> > Mostly nits around parameter validation.
> 
> Bill Farner wrote:
>     My apologies, i could have been more clear on the _not ready to commit_ line.  The commit needs a lot of polish, including parsers.  At this point i'm looking for feedback for the shape of things.  Thanks for the thorough look either way!
> 
> Santhosh Kumar Shanmugham wrote:
>     Ah, my bad I missed the note.
>     
>     +1 for removing commandline parsing code and consolidating the options in a single place. Makes it much easier to traverse code.
>     
>     However, what was the motivation for picking `JCommander`. Have you considered `JOpt` or plain old `Jakarta-cli`? I ask since I find `JCommander` to be limited.
> 
> Bill Farner wrote:
>     > what was the motivation for picking JCommander
>     
>     I like that JCommander requires explicit and up-front specificiation of args, types, and parsers.  This in contrast to getopt-style parsers that require calling code to fetch args by a name string, and deal with types and parsing at the call site.  Since we have over 100 args, we would invariably end up wanting to abstract away and centralize such behavior, ultimately finding ourselves writing another args lib.
>     
>     > Have you considered JOpt or plain old Jakarta-cli
>     
>     I discarded [JOpt Simple](https://pholser.github.io/jopt-simple/) and [commons-cli](https://commons.apache.org/proper/commons-cli/) (i assume that's what you mean by Jakarta-cli?) because they are both getopt-style libraries.

That seems reasonable.


> On Sept. 28, 2017, 10:15 p.m., Santhosh Kumar Shanmugham wrote:
> > src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java
> > Line 55 (original), 54 (patched)
> > <https://reviews.apache.org/r/62623/diff/1/?file=1837704#file1837704line56>
> >
> >     Can we delegate this constraint checking to `JCommander`?
> 
> Bill Farner wrote:
>     I've found this tends to be awkward (in all arg libs i've seen) for args that are required based on the value of other args, which is the case here.
> 
> Santhosh Kumar Shanmugham wrote:
>     Sounds like we need a library with subcommand support.
> 
> Bill Farner wrote:
>     JCommander does support subcommands, but i don't see how that helps here.  A subcommand is a different application entrypoint (do thing X _or_ do thing Y).  Here we have `--enable-feature-y` and `--required-flag-for-feature-y`.

Sorry. I meant something like `requiredIf` validation, like `JOpt` provides :)


- Santhosh Kumar


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186639
-----------------------------------------------------------


On Sept. 27, 2017, 9:22 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 27, 2017, 9:22 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Santhosh Kumar Shanmugham <sa...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186639
-----------------------------------------------------------



Mostly nits around parameter validation.


src/main/java/org/apache/aurora/scheduler/TierModule.java
Line 48 (original)
<https://reviews.apache.org/r/62623/#comment263378>

    In JCommander we will require an implementation of `IValueValidator<File>`.



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 113 (patched)
<https://reviews.apache.org/r/62623/#comment263379>

    validateWith = PositiveInteger.class



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 117 (patched)
<https://reviews.apache.org/r/62623/#comment263380>

    validateWith = PositiveInteger.class



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 157 (patched)
<https://reviews.apache.org/r/62623/#comment263376>

    validateWith = PositiveInteger.class



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 162 (patched)
<https://reviews.apache.org/r/62623/#comment263377>

    validateWith = PositiveInteger.class



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 165 (patched)
<https://reviews.apache.org/r/62623/#comment263384>

    validateWith = x implements IValueValidator<File>?
    
    Verify the file has read permissions.



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 168 (patched)
<https://reviews.apache.org/r/62623/#comment263397>

    Positive



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 239 (patched)
<https://reviews.apache.org/r/62623/#comment263388>

    Positive



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 300 (patched)
<https://reviews.apache.org/r/62623/#comment263385>

    Non-negative?



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 407 (patched)
<https://reviews.apache.org/r/62623/#comment263381>

    validateWith = x implements IValueValidator<File>?
    
    Verify the file has read permissions.



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 467 (patched)
<https://reviews.apache.org/r/62623/#comment263374>

    validateWith = PositiveInteger.class ?



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 471-472 (patched)
<https://reviews.apache.org/r/62623/#comment263375>

    validateWith = PositiveInteger.class ?



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 550 (patched)
<https://reviews.apache.org/r/62623/#comment263393>

    Positive



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 554 (patched)
<https://reviews.apache.org/r/62623/#comment263394>

    Positive



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 568 (patched)
<https://reviews.apache.org/r/62623/#comment263395>

    Positive



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 572 (patched)
<https://reviews.apache.org/r/62623/#comment263396>

    Positive



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 577 (patched)
<https://reviews.apache.org/r/62623/#comment263382>

    validateWith = x implements IValueValidator<File>?
    
    Verify the file exists and has read permissions.



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 624 (patched)
<https://reviews.apache.org/r/62623/#comment263386>

    Non-negative



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 628 (patched)
<https://reviews.apache.org/r/62623/#comment263387>

    Non-negative



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 675 (patched)
<https://reviews.apache.org/r/62623/#comment263389>

    Positive



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 679 (patched)
<https://reviews.apache.org/r/62623/#comment263390>

    Positive



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 690 (patched)
<https://reviews.apache.org/r/62623/#comment263391>

    Positive



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 693 (patched)
<https://reviews.apache.org/r/62623/#comment263392>

    Positive



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 720 (patched)
<https://reviews.apache.org/r/62623/#comment263383>

    validateWith = PositiveInteger.class



src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java
Lines 62-63 (original)
<https://reviews.apache.org/r/62623/#comment263371>

    nit - This file seems more appropriate for these constants rather than moving them into `Options`.



src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java
Line 55 (original), 54 (patched)
<https://reviews.apache.org/r/62623/#comment263372>

    Can we delegate this constraint checking to `JCommander`?


- Santhosh Kumar Shanmugham


On Sept. 27, 2017, 9:22 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 27, 2017, 9:22 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.

> On Sept. 29, 2017, 10:03 a.m., Jordan Ly wrote:
> > I am definitely +1 to the spirit of this change.
> > 
> > I would prefer to go the route of multiple classes that hold arguments in logical groupings (ex. ReplicatedLogArgs and etc. along those lines). Do any modules in the scheduler share arguments? How is that done today? I am not too familiar with JCommander/argument parsing libraries but I was wondering how much functionality it gives out of the box for us right now vs. how many custom parsers we will have to write.
> 
> Jordan Ly wrote:
>     The questions are mostly for my curiosity, and splitting the options up/adding parsers can definitely come in later changes.

> I would prefer to go the route of multiple classes that hold arguments in logical groupings

I was really torn on this.  Organization is certainly lost in the global `Options` class.  I may group them once everything is working in this patch, but i didn't want to distract with housekeeping.

> Do any modules in the scheduler share arguments?

Yes, but only in a few outlier cases.

> How is that done today?

Two ways - collecting the arg values into a settings class and passing that around, or the cowboy way of exposing the static arg field and reading it from another class.

> how many custom parsers we will have to write

I count ~13 parsers total, ~all of which i can port from what's currently on master.  This doesn't phase me.  In my mind, the more difficult decision is how to collect and inject all the arg values into the code that uses them.


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186689
-----------------------------------------------------------


On Sept. 27, 2017, 9:22 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 27, 2017, 9:22 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.

> On Sept. 29, 2017, 10:03 a.m., Jordan Ly wrote:
> > I am definitely +1 to the spirit of this change.
> > 
> > I would prefer to go the route of multiple classes that hold arguments in logical groupings (ex. ReplicatedLogArgs and etc. along those lines). Do any modules in the scheduler share arguments? How is that done today? I am not too familiar with JCommander/argument parsing libraries but I was wondering how much functionality it gives out of the box for us right now vs. how many custom parsers we will have to write.
> 
> Jordan Ly wrote:
>     The questions are mostly for my curiosity, and splitting the options up/adding parsers can definitely come in later changes.
> 
> Bill Farner wrote:
>     > I would prefer to go the route of multiple classes that hold arguments in logical groupings
>     
>     I was really torn on this.  Organization is certainly lost in the global `Options` class.  I may group them once everything is working in this patch, but i didn't want to distract with housekeeping.
>     
>     > Do any modules in the scheduler share arguments?
>     
>     Yes, but only in a few outlier cases.
>     
>     > How is that done today?
>     
>     Two ways - collecting the arg values into a settings class and passing that around, or the cowboy way of exposing the static arg field and reading it from another class.
>     
>     > how many custom parsers we will have to write
>     
>     I count ~13 parsers total, ~all of which i can port from what's currently on master.  This doesn't phase me.  In my mind, the more difficult decision is how to collect and inject all the arg values into the code that uses them.

I think i have a sane approach for grouping options and putting them back in the modules, so i'll update the patch to do so.  I will create a dependency cycle between classes that i don't love, but retains the grouping and will make the code review more sane!


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186689
-----------------------------------------------------------


On Sept. 27, 2017, 9:22 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 27, 2017, 9:22 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Jordan Ly <jo...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186689
-----------------------------------------------------------



I am definitely +1 to the spirit of this change.

I would prefer to go the route of multiple classes that hold arguments in logical groupings (ex. ReplicatedLogArgs and etc. along those lines). Do any modules in the scheduler share arguments? How is that done today? I am not too familiar with JCommander/argument parsing libraries but I was wondering how much functionality it gives out of the box for us right now vs. how many custom parsers we will have to write.

- Jordan Ly


On Sept. 28, 2017, 4:22 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 28, 2017, 4:22 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by David McLaughlin <da...@dmclaughlin.com>.

> On Sept. 29, 2017, 6:17 p.m., David McLaughlin wrote:
> > I'm also +1 to the spirit of the patch. One requirement to keep in mind beyond grouping arguments into logical modules is that we also need to make sure we keep the ability to add custom CLI arguments via the guice injection mechanism the Scheduler currently provides. (E.g. being able to add options for pluggable auth, pluggable scheduling, etc.)
> 
> Bill Farner wrote:
>     > custom CLI arguments via the guice injection mechanism the Scheduler currently provides
>     
>     I see 2 sane approaches for custom options:
>     a. maintain a patch that adds these args like others.  this is based on the assumption that a custom aurora module cannot feasibly live outside a fork of the aurora source tree
>     b. add a mechanism to specify additional Options classes to statically populate, which may then be consumed by custom modules
>     
>     I strongly suggest (a) as considerably simpler in both the aurora codebase and forked codebases.
> 
> David McLaughlin wrote:
>     Having to fork individual files causes merge conflicts that have to be manually resolved. For example, we just ran into this with the recent gradle 4.2 changes because we've had to add a couple of extra lines to our build.gradle file, and so that relatively minor commit broke our upstream integration job requiring manual intervention. Not a huge deal, but it's a distraction and hassle if it happens frequently.
>     
>     Having to perform a custom build into a local fork of the OSS repo is obviously not a good plugin story in the first place, but for better or worse it is the only real way to customize Aurora at present, and as a heavy user of the custom Guice modules my view would be the benefits introduced here wouldn't be worth the regression that (a) would introduce.
> 
> Bill Farner wrote:
>     The patch currently passes `CliOptions` to any dynamically-instantiated module, so how would you feel about an arrangement such as:
>     ```java
>     public class CustomModule extends AbstractModule {
>       @Parameters(separators = "=")
>       public static class Options {
>         @Parameter(names = "-custom_flag")
>         public boolean customFlag = false;
>       }
>     
>       static {
>         // Statically register custom options for CLI parsing.
>         CliOptions.registerCustom(new Options());
>       }
>       
>       public CustomModule(CliOptions options) {
>         // Consume parsed and populated options.
>         Options customOpts = FluentIterable.from(options.getCustom())
>             .firstMatch(Predicates.instanceOf(Options.class));
>         System.out.println(customOpts.customFlag);
>       }
>     }
>     ```

Thanks for the follow-up, this looks fine to me.


- David


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186711
-----------------------------------------------------------


On Sept. 30, 2017, 2:07 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 30, 2017, 2:07 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` on page 5, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.

> On Sept. 29, 2017, 11:17 a.m., David McLaughlin wrote:
> > I'm also +1 to the spirit of the patch. One requirement to keep in mind beyond grouping arguments into logical modules is that we also need to make sure we keep the ability to add custom CLI arguments via the guice injection mechanism the Scheduler currently provides. (E.g. being able to add options for pluggable auth, pluggable scheduling, etc.)

> custom CLI arguments via the guice injection mechanism the Scheduler currently provides

I see 2 sane approaches for custom options:
a. maintain a patch that adds these args like others.  this is based on the assumption that a custom aurora module cannot feasibly live outside a fork of the aurora source tree
b. add a mechanism to specify additional Options classes to statically populate, which may then be consumed by custom modules

I strongly suggest (a) as considerably simpler in both the aurora codebase and forked codebases.


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186711
-----------------------------------------------------------


On Sept. 27, 2017, 9:22 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 27, 2017, 9:22 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by David McLaughlin <da...@dmclaughlin.com>.

> On Sept. 29, 2017, 6:17 p.m., David McLaughlin wrote:
> > I'm also +1 to the spirit of the patch. One requirement to keep in mind beyond grouping arguments into logical modules is that we also need to make sure we keep the ability to add custom CLI arguments via the guice injection mechanism the Scheduler currently provides. (E.g. being able to add options for pluggable auth, pluggable scheduling, etc.)
> 
> Bill Farner wrote:
>     > custom CLI arguments via the guice injection mechanism the Scheduler currently provides
>     
>     I see 2 sane approaches for custom options:
>     a. maintain a patch that adds these args like others.  this is based on the assumption that a custom aurora module cannot feasibly live outside a fork of the aurora source tree
>     b. add a mechanism to specify additional Options classes to statically populate, which may then be consumed by custom modules
>     
>     I strongly suggest (a) as considerably simpler in both the aurora codebase and forked codebases.

Having to fork individual files causes merge conflicts that have to be manually resolved. For example, we just ran into this with the recent gradle 4.2 changes because we've had to add a couple of extra lines to our build.gradle file, and so that relatively minor commit broke our upstream integration job requiring manual intervention. Not a huge deal, but it's a distraction and hassle if it happens frequently.

Having to perform a custom build into a local fork of the OSS repo is obviously not a good plugin story in the first place, but for better or worse it is the only real way to customize Aurora at present, and as a heavy user of the custom Guice modules my view would be the benefits introduced here wouldn't be worth the regression that (a) would introduce.


- David


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186711
-----------------------------------------------------------


On Sept. 30, 2017, 2:07 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 30, 2017, 2:07 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` on page 5, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.

> On Sept. 29, 2017, 11:17 a.m., David McLaughlin wrote:
> > I'm also +1 to the spirit of the patch. One requirement to keep in mind beyond grouping arguments into logical modules is that we also need to make sure we keep the ability to add custom CLI arguments via the guice injection mechanism the Scheduler currently provides. (E.g. being able to add options for pluggable auth, pluggable scheduling, etc.)
> 
> Bill Farner wrote:
>     > custom CLI arguments via the guice injection mechanism the Scheduler currently provides
>     
>     I see 2 sane approaches for custom options:
>     a. maintain a patch that adds these args like others.  this is based on the assumption that a custom aurora module cannot feasibly live outside a fork of the aurora source tree
>     b. add a mechanism to specify additional Options classes to statically populate, which may then be consumed by custom modules
>     
>     I strongly suggest (a) as considerably simpler in both the aurora codebase and forked codebases.
> 
> David McLaughlin wrote:
>     Having to fork individual files causes merge conflicts that have to be manually resolved. For example, we just ran into this with the recent gradle 4.2 changes because we've had to add a couple of extra lines to our build.gradle file, and so that relatively minor commit broke our upstream integration job requiring manual intervention. Not a huge deal, but it's a distraction and hassle if it happens frequently.
>     
>     Having to perform a custom build into a local fork of the OSS repo is obviously not a good plugin story in the first place, but for better or worse it is the only real way to customize Aurora at present, and as a heavy user of the custom Guice modules my view would be the benefits introduced here wouldn't be worth the regression that (a) would introduce.

The patch currently passes `CliOptions` to any dynamically-instantiated module, so how would you feel about an arrangement such as:
```java
public class CustomModule extends AbstractModule {
  @Parameters(separators = "=")
  public static class Options {
    @Parameter(names = "-custom_flag")
    public boolean customFlag = false;
  }

  static {
    // Statically register custom options for CLI parsing.
    CliOptions.registerCustom(new Options());
  }
  
  public CustomModule(CliOptions options) {
    // Consume parsed and populated options.
    Options customOpts = FluentIterable.from(options.getCustom())
        .firstMatch(Predicates.instanceOf(Options.class));
    System.out.println(customOpts.customFlag);
  }
}
```


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186711
-----------------------------------------------------------


On Sept. 29, 2017, 7:07 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 29, 2017, 7:07 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` on page 5, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by David McLaughlin <da...@dmclaughlin.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186711
-----------------------------------------------------------



I'm also +1 to the spirit of the patch. One requirement to keep in mind beyond grouping arguments into logical modules is that we also need to make sure we keep the ability to add custom CLI arguments via the guice injection mechanism the Scheduler currently provides. (E.g. being able to add options for pluggable auth, pluggable scheduling, etc.)

- David McLaughlin


On Sept. 28, 2017, 4:22 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 28, 2017, 4:22 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Aurora ReviewBot <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186785
-----------------------------------------------------------


Ship it!




Master (24d2caf) is green with this patch.
  ./build-support/jenkins/build.sh

I will refresh this build result if you post a review containing "@ReviewBot retry"

- Aurora ReviewBot


On Sept. 29, 2017, 7:07 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 29, 2017, 7:07 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` on page 5, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Aurora ReviewBot <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187550
-----------------------------------------------------------


Ship it!




Master (0169b81) is green with this patch.
  ./build-support/jenkins/build.sh

I will refresh this build result if you post a review containing "@ReviewBot retry"

- Aurora ReviewBot


On Oct. 10, 2017, 2:37 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Oct. 10, 2017, 2:37 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` and `CommandLine.java` on page 5.  `CommandLIneTest` on page 8 verifies that every registered option can be parsed.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle d7a4287a4a073aedb905af57309ed08f889eea0b 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/main/java/org/apache/aurora/common/quantity/Amount.java 11be7f518d34934c99040ed9b7fc80a47165777d 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/checkstyle/suppressions.xml cd7fd0a178b68e3a04326910619a027b46e1b558 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java 186fa1b3a4780c0536fb486d50a33133258110cd 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/CommandLine.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/ClassConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DockerParameterConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java 754fde0fdc976b673d78ae15d8ccd8c85b792373 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java 4014a91299d863337c5f58a0495775c5f4aa6c09 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 8c9ea056965a0019273861c1df28a7c4b84dbf2e 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/offers/RandomJitterReturnDelay.java 4b308dcf6db885035e5b14030169263d89105e3a 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculator.java 7107027530e755ec3fa19cafffd26713a6fef9e9 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json e645f640a3e4033ebf5b5a98433c514f1621fe45 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/config/CommandLineTest.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/config/CustomModule.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/configuration/ConfigurationManagerTest.java 50d7499f4332a3feb0e2301cb707f2cea6bb2e98 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 827aa2dc936ffdb5d3f472ac5c3ebc31fcc6fa92 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculatorImplTest.java 2d34729e8f371703ba250b8e82d82c8a2504fcac 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
>   src/test/sh/org/apache/aurora/e2e/Dockerfile.python 86eac351aaa163c1b171d14f9465092ebbbab438 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/5/
> 
> 
> Testing
> -------
> 
> `./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh` (mod necessary patch in [62857](https://reviews.apache.org/r/62857/))
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Aurora ReviewBot <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187547
-----------------------------------------------------------



Master (0169b81) is red with this patch.
  ./build-support/jenkins/build.sh

:licenseTest UP-TO-DATE
:license UP-TO-DATE
:pmdJmh
:pmdMain
:pmdTest
:testI1010 15:31:35.753 [ShutdownHook, SchedulerMain] Stopping scheduler services. 
 FAILED
:jacocoTestReport
Coverage report generated: file:///home/jenkins/jenkins-slave/workspace/AuroraBot/dist/reports/jacoco/test/html/index.html
:jacocoTestCoverageVerification[ant:jacocoReport] Rule violated for bundle aurora: instructions covered ratio is 0.81, but expected minimum is 0.87
[ant:jacocoReport] Rule violated for bundle aurora: branches covered ratio is 0.69, but expected minimum is 0.79
 FAILED

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':test'.
> Process 'Gradle Test Executor 8' finished with non-zero exit value 137

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':jacocoTestCoverageVerification'.
> Rule violated for bundle aurora: instructions covered ratio is 0.81, but expected minimum is 0.87
  Rule violated for bundle aurora: branches covered ratio is 0.69, but expected minimum is 0.79

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
==============================================================================

* Get more help at https://help.gradle.org

BUILD FAILED in 20m 23s
48 actionable tasks: 39 executed, 9 up-to-date


I will refresh this build result if you post a review containing "@ReviewBot retry"

- Aurora ReviewBot


On Oct. 10, 2017, 2:37 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Oct. 10, 2017, 2:37 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` and `CommandLine.java` on page 5.  `CommandLIneTest` on page 8 verifies that every registered option can be parsed.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle d7a4287a4a073aedb905af57309ed08f889eea0b 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/main/java/org/apache/aurora/common/quantity/Amount.java 11be7f518d34934c99040ed9b7fc80a47165777d 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/checkstyle/suppressions.xml cd7fd0a178b68e3a04326910619a027b46e1b558 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java 186fa1b3a4780c0536fb486d50a33133258110cd 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/CommandLine.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/ClassConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DockerParameterConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java 754fde0fdc976b673d78ae15d8ccd8c85b792373 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java 4014a91299d863337c5f58a0495775c5f4aa6c09 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 8c9ea056965a0019273861c1df28a7c4b84dbf2e 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/offers/RandomJitterReturnDelay.java 4b308dcf6db885035e5b14030169263d89105e3a 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculator.java 7107027530e755ec3fa19cafffd26713a6fef9e9 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json e645f640a3e4033ebf5b5a98433c514f1621fe45 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/config/CommandLineTest.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/config/CustomModule.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/configuration/ConfigurationManagerTest.java 50d7499f4332a3feb0e2301cb707f2cea6bb2e98 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 827aa2dc936ffdb5d3f472ac5c3ebc31fcc6fa92 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculatorImplTest.java 2d34729e8f371703ba250b8e82d82c8a2504fcac 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
>   src/test/sh/org/apache/aurora/e2e/Dockerfile.python 86eac351aaa163c1b171d14f9465092ebbbab438 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/5/
> 
> 
> Testing
> -------
> 
> `./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh` (mod necessary patch in [62857](https://reviews.apache.org/r/62857/))
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187544
-----------------------------------------------------------



@ReviewBot retry

- Bill Farner


On Oct. 10, 2017, 7:37 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Oct. 10, 2017, 7:37 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` and `CommandLine.java` on page 5.  `CommandLIneTest` on page 8 verifies that every registered option can be parsed.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle d7a4287a4a073aedb905af57309ed08f889eea0b 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/main/java/org/apache/aurora/common/quantity/Amount.java 11be7f518d34934c99040ed9b7fc80a47165777d 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/checkstyle/suppressions.xml cd7fd0a178b68e3a04326910619a027b46e1b558 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java 186fa1b3a4780c0536fb486d50a33133258110cd 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/CommandLine.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/ClassConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DockerParameterConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java 754fde0fdc976b673d78ae15d8ccd8c85b792373 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java 4014a91299d863337c5f58a0495775c5f4aa6c09 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 8c9ea056965a0019273861c1df28a7c4b84dbf2e 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/offers/RandomJitterReturnDelay.java 4b308dcf6db885035e5b14030169263d89105e3a 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculator.java 7107027530e755ec3fa19cafffd26713a6fef9e9 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json e645f640a3e4033ebf5b5a98433c514f1621fe45 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/config/CommandLineTest.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/config/CustomModule.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/configuration/ConfigurationManagerTest.java 50d7499f4332a3feb0e2301cb707f2cea6bb2e98 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 827aa2dc936ffdb5d3f472ac5c3ebc31fcc6fa92 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculatorImplTest.java 2d34729e8f371703ba250b8e82d82c8a2504fcac 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
>   src/test/sh/org/apache/aurora/e2e/Dockerfile.python 86eac351aaa163c1b171d14f9465092ebbbab438 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/5/
> 
> 
> Testing
> -------
> 
> `./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh` (mod necessary patch in [62857](https://reviews.apache.org/r/62857/))
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Aurora ReviewBot <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187539
-----------------------------------------------------------



Master (0169b81) is red with this patch.
  ./build-support/jenkins/build.sh

#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 232783872 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/jenkins/jenkins-slave/workspace/AuroraBot/hs_err_pid31468.log
I1010 14:49:58.885 [ShutdownHook, SchedulerMain] Stopping scheduler services. 
:test FAILED
:jacocoTestReport
Coverage report generated: file:///home/jenkins/jenkins-slave/workspace/AuroraBot/dist/reports/jacoco/test/html/index.html
:jacocoTestCoverageVerification[ant:jacocoReport] Rule violated for bundle aurora: instructions covered ratio is 0.80, but expected minimum is 0.87
[ant:jacocoReport] Rule violated for bundle aurora: branches covered ratio is 0.69, but expected minimum is 0.79
 FAILED

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':test'.
> Process 'Gradle Test Executor 8' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':jacocoTestCoverageVerification'.
> Rule violated for bundle aurora: instructions covered ratio is 0.80, but expected minimum is 0.87
  Rule violated for bundle aurora: branches covered ratio is 0.69, but expected minimum is 0.79

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
==============================================================================

* Get more help at https://help.gradle.org

BUILD FAILED in 7m 28s
48 actionable tasks: 39 executed, 9 up-to-date


I will refresh this build result if you post a review containing "@ReviewBot retry"

- Aurora ReviewBot


On Oct. 10, 2017, 2:37 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Oct. 10, 2017, 2:37 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` and `CommandLine.java` on page 5.  `CommandLIneTest` on page 8 verifies that every registered option can be parsed.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle d7a4287a4a073aedb905af57309ed08f889eea0b 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/main/java/org/apache/aurora/common/quantity/Amount.java 11be7f518d34934c99040ed9b7fc80a47165777d 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/checkstyle/suppressions.xml cd7fd0a178b68e3a04326910619a027b46e1b558 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java 186fa1b3a4780c0536fb486d50a33133258110cd 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/CommandLine.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/ClassConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DockerParameterConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java 754fde0fdc976b673d78ae15d8ccd8c85b792373 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java 4014a91299d863337c5f58a0495775c5f4aa6c09 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 8c9ea056965a0019273861c1df28a7c4b84dbf2e 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/offers/RandomJitterReturnDelay.java 4b308dcf6db885035e5b14030169263d89105e3a 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculator.java 7107027530e755ec3fa19cafffd26713a6fef9e9 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json e645f640a3e4033ebf5b5a98433c514f1621fe45 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/config/CommandLineTest.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/config/CustomModule.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/configuration/ConfigurationManagerTest.java 50d7499f4332a3feb0e2301cb707f2cea6bb2e98 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 827aa2dc936ffdb5d3f472ac5c3ebc31fcc6fa92 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculatorImplTest.java 2d34729e8f371703ba250b8e82d82c8a2504fcac 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
>   src/test/sh/org/apache/aurora/e2e/Dockerfile.python 86eac351aaa163c1b171d14f9465092ebbbab438 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/5/
> 
> 
> Testing
> -------
> 
> `./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh` (mod necessary patch in [62857](https://reviews.apache.org/r/62857/))
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by David McLaughlin <da...@dmclaughlin.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187575
-----------------------------------------------------------


Ship it!




Ship It!

- David McLaughlin


On Oct. 10, 2017, 2:37 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Oct. 10, 2017, 2:37 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` and `CommandLine.java` on page 5.  `CommandLIneTest` on page 8 verifies that every registered option can be parsed.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle d7a4287a4a073aedb905af57309ed08f889eea0b 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/main/java/org/apache/aurora/common/quantity/Amount.java 11be7f518d34934c99040ed9b7fc80a47165777d 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/checkstyle/suppressions.xml cd7fd0a178b68e3a04326910619a027b46e1b558 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java 186fa1b3a4780c0536fb486d50a33133258110cd 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/CommandLine.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/ClassConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DockerParameterConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java 754fde0fdc976b673d78ae15d8ccd8c85b792373 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java 4014a91299d863337c5f58a0495775c5f4aa6c09 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 8c9ea056965a0019273861c1df28a7c4b84dbf2e 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/offers/RandomJitterReturnDelay.java 4b308dcf6db885035e5b14030169263d89105e3a 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculator.java 7107027530e755ec3fa19cafffd26713a6fef9e9 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json e645f640a3e4033ebf5b5a98433c514f1621fe45 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/config/CommandLineTest.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/config/CustomModule.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/configuration/ConfigurationManagerTest.java 50d7499f4332a3feb0e2301cb707f2cea6bb2e98 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 827aa2dc936ffdb5d3f472ac5c3ebc31fcc6fa92 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculatorImplTest.java 2d34729e8f371703ba250b8e82d82c8a2504fcac 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
>   src/test/sh/org/apache/aurora/e2e/Dockerfile.python 86eac351aaa163c1b171d14f9465092ebbbab438 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/5/
> 
> 
> Testing
> -------
> 
> `./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh` (mod necessary patch in [62857](https://reviews.apache.org/r/62857/))
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Aurora ReviewBot <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187610
-----------------------------------------------------------


Ship it!




Master (cb8e956) is green with this patch.
  ./build-support/jenkins/build.sh

I will refresh this build result if you post a review containing "@ReviewBot retry"

- Aurora ReviewBot


On Oct. 10, 2017, 11:16 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Oct. 10, 2017, 11:16 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` and `CommandLine.java` on page 5.  `CommandLIneTest` on page 8 verifies that every registered option can be parsed.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle d7a4287a4a073aedb905af57309ed08f889eea0b 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/main/java/org/apache/aurora/common/quantity/Amount.java 11be7f518d34934c99040ed9b7fc80a47165777d 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/checkstyle/suppressions.xml cd7fd0a178b68e3a04326910619a027b46e1b558 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java 186fa1b3a4780c0536fb486d50a33133258110cd 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/CommandLine.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/ClassConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DockerParameterConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java 754fde0fdc976b673d78ae15d8ccd8c85b792373 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java 4014a91299d863337c5f58a0495775c5f4aa6c09 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 8c9ea056965a0019273861c1df28a7c4b84dbf2e 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/offers/RandomJitterReturnDelay.java 4b308dcf6db885035e5b14030169263d89105e3a 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculator.java 7107027530e755ec3fa19cafffd26713a6fef9e9 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json e645f640a3e4033ebf5b5a98433c514f1621fe45 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/config/CommandLineTest.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/config/CustomModule.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/configuration/ConfigurationManagerTest.java 50d7499f4332a3feb0e2301cb707f2cea6bb2e98 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 827aa2dc936ffdb5d3f472ac5c3ebc31fcc6fa92 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculatorImplTest.java 2d34729e8f371703ba250b8e82d82c8a2504fcac 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
>   src/test/sh/org/apache/aurora/e2e/Dockerfile.python 86eac351aaa163c1b171d14f9465092ebbbab438 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/7/
> 
> 
> Testing
> -------
> 
> `./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh` (mod necessary patch in [62857](https://reviews.apache.org/r/62857/))
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Aurora ReviewBot <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187605
-----------------------------------------------------------



Master (cb8e956) is red with this patch.
  ./build-support/jenkins/build.sh

        Caused by: java.lang.IllegalAccessException at CommandLineTest.java:431

org.apache.aurora.scheduler.config.CommandLineTest > testCustomOptions FAILED
    java.lang.RuntimeException at CommandLineTest.java:76
        Caused by: java.lang.IllegalAccessException at CommandLineTest.java:76
I1010 23:26:25.706 [ShutdownHook, SchedulerMain] Stopping scheduler services. 

1140 tests completed, 2 failed, 2 skipped
:test FAILED
:jacocoTestReport
Coverage report generated: file:///home/jenkins/jenkins-slave/workspace/AuroraBot/dist/reports/jacoco/test/html/index.html
:jacocoTestCoverageVerification[ant:jacocoReport] Rule violated for bundle aurora: branches covered ratio is 0.78, but expected minimum is 0.79
 FAILED

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at: file:///home/jenkins/jenkins-slave/workspace/AuroraBot/dist/reports/tests/test/index.html

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':jacocoTestCoverageVerification'.
> Rule violated for bundle aurora: branches covered ratio is 0.78, but expected minimum is 0.79

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
==============================================================================

* Get more help at https://help.gradle.org

BUILD FAILED in 5m 55s
48 actionable tasks: 39 executed, 9 up-to-date


I will refresh this build result if you post a review containing "@ReviewBot retry"

- Aurora ReviewBot


On Oct. 10, 2017, 11:16 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Oct. 10, 2017, 11:16 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` and `CommandLine.java` on page 5.  `CommandLIneTest` on page 8 verifies that every registered option can be parsed.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle d7a4287a4a073aedb905af57309ed08f889eea0b 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/main/java/org/apache/aurora/common/quantity/Amount.java 11be7f518d34934c99040ed9b7fc80a47165777d 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/checkstyle/suppressions.xml cd7fd0a178b68e3a04326910619a027b46e1b558 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java 186fa1b3a4780c0536fb486d50a33133258110cd 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/CommandLine.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/ClassConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/DockerParameterConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java 754fde0fdc976b673d78ae15d8ccd8c85b792373 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java 4014a91299d863337c5f58a0495775c5f4aa6c09 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 8c9ea056965a0019273861c1df28a7c4b84dbf2e 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/offers/RandomJitterReturnDelay.java 4b308dcf6db885035e5b14030169263d89105e3a 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculator.java 7107027530e755ec3fa19cafffd26713a6fef9e9 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json e645f640a3e4033ebf5b5a98433c514f1621fe45 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/config/CommandLineTest.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/config/CustomModule.java PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/configuration/ConfigurationManagerTest.java 50d7499f4332a3feb0e2301cb707f2cea6bb2e98 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 827aa2dc936ffdb5d3f472ac5c3ebc31fcc6fa92 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculatorImplTest.java 2d34729e8f371703ba250b8e82d82c8a2504fcac 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
>   src/test/sh/org/apache/aurora/e2e/Dockerfile.python 86eac351aaa163c1b171d14f9465092ebbbab438 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/6/
> 
> 
> Testing
> -------
> 
> `./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh` (mod necessary patch in [62857](https://reviews.apache.org/r/62857/))
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/
-----------------------------------------------------------

(Updated Oct. 10, 2017, 4:16 p.m.)


Review request for Aurora, David McLaughlin and John Sirois.


Changes
-------

make it easier to consume custom options


Repository: aurora


Description
-------

This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` and `CommandLine.java` on page 5.  `CommandLIneTest` on page 8 verifies that every registered option can be parsed.

I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.

Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E


Diffs (updated)
-----

  build.gradle d7a4287a4a073aedb905af57309ed08f889eea0b 
  commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
  commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
  commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
  commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
  commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
  commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
  commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
  commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
  commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
  commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
  commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
  commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
  commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
  commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
  commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
  commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
  commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
  commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
  commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
  commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
  commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
  commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
  commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
  commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
  commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
  commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
  commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
  commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
  commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
  commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
  commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
  commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
  commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
  commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
  commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
  commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
  commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
  commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
  commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
  commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
  commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
  commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
  commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
  commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
  commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
  commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
  commons/src/main/java/org/apache/aurora/common/quantity/Amount.java 11be7f518d34934c99040ed9b7fc80a47165777d 
  commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
  commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
  commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
  commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
  commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
  commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
  config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
  config/checkstyle/suppressions.xml cd7fd0a178b68e3a04326910619a027b46e1b558 
  config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
  src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
  src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
  src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
  src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
  src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
  src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
  src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
  src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
  src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
  src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
  src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
  src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
  src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java 186fa1b3a4780c0536fb486d50a33133258110cd 
  src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/config/CommandLine.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/config/converters/ClassConverter.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/config/converters/DockerParameterConverter.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java 754fde0fdc976b673d78ae15d8ccd8c85b792373 
  src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
  src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
  src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
  src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java 4014a91299d863337c5f58a0495775c5f4aa6c09 
  src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 8c9ea056965a0019273861c1df28a7c4b84dbf2e 
  src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
  src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
  src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
  src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
  src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
  src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
  src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
  src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
  src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
  src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
  src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
  src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
  src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
  src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
  src/main/java/org/apache/aurora/scheduler/offers/RandomJitterReturnDelay.java 4b308dcf6db885035e5b14030169263d89105e3a 
  src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
  src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
  src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
  src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
  src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
  src/main/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculator.java 7107027530e755ec3fa19cafffd26713a6fef9e9 
  src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
  src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
  src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
  src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
  src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
  src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
  src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
  src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
  src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
  src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
  src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
  src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
  src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
  src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
  src/main/resources/org/apache/aurora/scheduler/webhook.json e645f640a3e4033ebf5b5a98433c514f1621fe45 
  src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
  src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
  src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
  src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
  src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
  src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
  src/test/java/org/apache/aurora/scheduler/config/CommandLineTest.java PRE-CREATION 
  src/test/java/org/apache/aurora/scheduler/config/CustomModule.java PRE-CREATION 
  src/test/java/org/apache/aurora/scheduler/configuration/ConfigurationManagerTest.java 50d7499f4332a3feb0e2301cb707f2cea6bb2e98 
  src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
  src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 827aa2dc936ffdb5d3f472ac5c3ebc31fcc6fa92 
  src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
  src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
  src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
  src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
  src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
  src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
  src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
  src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
  src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
  src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
  src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
  src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
  src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
  src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
  src/test/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculatorImplTest.java 2d34729e8f371703ba250b8e82d82c8a2504fcac 
  src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
  src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
  src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
  src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
  src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
  src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
  src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
  src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
  src/test/sh/org/apache/aurora/e2e/Dockerfile.python 86eac351aaa163c1b171d14f9465092ebbbab438 


Diff: https://reviews.apache.org/r/62623/diff/6/

Changes: https://reviews.apache.org/r/62623/diff/5-6/


Testing
-------

`./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh` (mod necessary patch in [62857](https://reviews.apache.org/r/62857/))


Thanks,

Bill Farner


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/
-----------------------------------------------------------

(Updated Oct. 10, 2017, 7:37 a.m.)


Review request for Aurora, David McLaughlin and John Sirois.


Changes
-------

- added and/or ported converters where needed
- added option validators
- added a comprehensive test


Repository: aurora


Description (updated)
-------

This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` and `CommandLine.java` on page 5.  `CommandLIneTest` on page 8 verifies that every registered option can be parsed.

I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.

Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E


Diffs (updated)
-----

  build.gradle d7a4287a4a073aedb905af57309ed08f889eea0b 
  commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
  commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
  commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
  commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
  commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
  commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
  commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
  commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
  commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
  commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
  commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
  commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
  commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
  commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
  commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
  commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
  commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
  commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
  commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
  commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
  commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
  commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
  commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
  commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
  commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
  commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
  commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
  commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
  commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
  commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
  commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
  commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
  commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
  commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
  commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
  commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
  commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
  commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
  commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
  commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
  commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
  commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
  commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
  commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
  commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
  commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
  commons/src/main/java/org/apache/aurora/common/quantity/Amount.java 11be7f518d34934c99040ed9b7fc80a47165777d 
  commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
  commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
  commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
  commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
  commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
  commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
  config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
  config/checkstyle/suppressions.xml cd7fd0a178b68e3a04326910619a027b46e1b558 
  config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
  src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
  src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
  src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
  src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
  src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
  src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
  src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
  src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
  src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
  src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
  src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
  src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
  src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java 186fa1b3a4780c0536fb486d50a33133258110cd 
  src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/config/CommandLine.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/config/converters/ClassConverter.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/config/converters/DockerParameterConverter.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java 754fde0fdc976b673d78ae15d8ccd8c85b792373 
  src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
  src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
  src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
  src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java 4014a91299d863337c5f58a0495775c5f4aa6c09 
  src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 8c9ea056965a0019273861c1df28a7c4b84dbf2e 
  src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
  src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
  src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
  src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
  src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
  src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
  src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
  src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
  src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
  src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
  src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
  src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
  src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
  src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
  src/main/java/org/apache/aurora/scheduler/offers/RandomJitterReturnDelay.java 4b308dcf6db885035e5b14030169263d89105e3a 
  src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
  src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
  src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
  src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
  src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
  src/main/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculator.java 7107027530e755ec3fa19cafffd26713a6fef9e9 
  src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
  src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
  src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
  src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
  src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
  src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
  src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
  src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
  src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
  src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
  src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
  src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
  src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
  src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
  src/main/resources/org/apache/aurora/scheduler/webhook.json e645f640a3e4033ebf5b5a98433c514f1621fe45 
  src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
  src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
  src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
  src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
  src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
  src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
  src/test/java/org/apache/aurora/scheduler/config/CommandLineTest.java PRE-CREATION 
  src/test/java/org/apache/aurora/scheduler/config/CustomModule.java PRE-CREATION 
  src/test/java/org/apache/aurora/scheduler/configuration/ConfigurationManagerTest.java 50d7499f4332a3feb0e2301cb707f2cea6bb2e98 
  src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
  src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 827aa2dc936ffdb5d3f472ac5c3ebc31fcc6fa92 
  src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
  src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
  src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
  src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
  src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
  src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
  src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
  src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
  src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
  src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
  src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
  src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
  src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
  src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
  src/test/java/org/apache/aurora/scheduler/scheduling/RescheduleCalculatorImplTest.java 2d34729e8f371703ba250b8e82d82c8a2504fcac 
  src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
  src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
  src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
  src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
  src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
  src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
  src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
  src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
  src/test/sh/org/apache/aurora/e2e/Dockerfile.python 86eac351aaa163c1b171d14f9465092ebbbab438 


Diff: https://reviews.apache.org/r/62623/diff/5/

Changes: https://reviews.apache.org/r/62623/diff/4-5/


Testing (updated)
-------

`./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh` (mod necessary patch in [62857](https://reviews.apache.org/r/62857/))


Thanks,

Bill Farner


Re: Review Request 62623: Use a simpler command line argument system

Posted by Aurora ReviewBot <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186774
-----------------------------------------------------------



Master (24d2caf) is red with this patch.
  ./build-support/jenkins/build.sh

:findbugsMain
:findbugsTest
:licenseJmh UP-TO-DATE
:licenseMain UP-TO-DATE
:licenseTest UP-TO-DATE
:license UP-TO-DATE
:pmdJmh
:pmdMain
:pmdTest
:test

org.apache.aurora.scheduler.preemptor.PreemptionVictimFilterTest > testRevocableVictimsFiltered FAILED
    java.lang.IllegalStateException at PreemptionVictimFilterTest.java:138

org.apache.aurora.scheduler.preemptor.PreemptionVictimFilterTest > testRevocableVictimRamUsed FAILED
    java.lang.IllegalStateException at PreemptionVictimFilterTest.java:138

org.apache.aurora.scheduler.stats.AsyncStatsModuleTest > testOfferAdapter FAILED
    java.lang.IllegalStateException at AsyncStatsModuleTest.java:57
I0930 03:16:46.786 [ShutdownHook, SchedulerMain] Stopping scheduler services. 

1137 tests completed, 3 failed, 2 skipped
:test FAILED
:jacocoTestReport
Coverage report generated: file:///home/jenkins/jenkins-slave/workspace/AuroraBot/dist/reports/jacoco/test/html/index.html
:jacocoTestCoverageVerification

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at: file:///home/jenkins/jenkins-slave/workspace/AuroraBot/dist/reports/tests/test/index.html

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 6m 0s
48 actionable tasks: 39 executed, 9 up-to-date


I will refresh this build result if you post a review containing "@ReviewBot retry"

- Aurora ReviewBot


On Sept. 29, 2017, 7:07 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 29, 2017, 7:07 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/3/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.

> On Oct. 8, 2017, 10:08 a.m., Stephan Erb wrote:
> > Is anything blocking the merge of this patch? I need to add a new flag and I am wondering if I should sit out until this one is merged :)

Go ahead with your patch, i'll deal with the merge conflict.

The only remaining area for me to address is option type safety.  jcommander only reports lack of support for an option type when parsing a value from a string rather than when collecting option declarations.  This makes it more difficult to have confidence that all declared option types have registered converters.  This is furthermore problematic for `List` and `Set` options, for which jcommander will silently add `String`s if a matching converter is not found.


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187366
-----------------------------------------------------------


On Sept. 29, 2017, 7:07 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 29, 2017, 7:07 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` on page 5, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Stephan Erb <se...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187366
-----------------------------------------------------------



Is anything blocking the merge of this patch? I need to add a new flag and I am wondering if I should sit out until this one is merged :)

- Stephan Erb


On Sept. 30, 2017, 4:07 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 30, 2017, 4:07 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` on page 5, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Stephan Erb <se...@apache.org>.

> On Oct. 4, 2017, 12:29 a.m., Stephan Erb wrote:
> > src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java
> > Line 106 (original), 110 (patched)
> > <https://reviews.apache.org/r/62623/diff/4/?file=1841457#file1841457line119>
> >
> >     Is Guice doing the injection fully automatically for us here? Am I missing something?
> 
> Bill Farner wrote:
>     Most modules are directly constructed, and the per-module `Options` classes (the name is a convention only, no magic) are manually passed to constructors.  In the case of `ExecutorModule`, it's done in `SchedulerMain`:
>     
>     ```java
>         Module module = Modules.combine(
>             appEnvironmentModule,
>             getUniversalModule(options),
>             new ServiceDiscoveryModule(
>                 FlaggedZooKeeperConfig.create(options.zk),
>                 options.main.serversetPath),
>             new BackupModule(options.backup, SnapshotStoreImpl.class),
>             new ExecutorModule(options.executor),
>             new AbstractModule() {
>               @Override
>               protected void configure() {
>                 bind(IServerInfo.class).toInstance(
>                     IServerInfo.build(
>                         new ServerInfo()
>                             .setClusterName(options.main.clusterName)
>                             .setStatsUrlPrefix(options.main.statsUrlPrefix)));
>               }
>             });
>     ```
>     
>     However, some modules are slightly more complex due to the fact that they are dynamically instantiated.  That magic is tucked away in `MoreModules.java`.

Ah, I missed that. Thaks for the explanation.


- Stephan


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187013
-----------------------------------------------------------


On Sept. 30, 2017, 4:07 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 30, 2017, 4:07 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` on page 5, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.

> On Oct. 3, 2017, 3:29 p.m., Stephan Erb wrote:
> > src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java
> > Line 106 (original), 110 (patched)
> > <https://reviews.apache.org/r/62623/diff/4/?file=1841457#file1841457line119>
> >
> >     Is Guice doing the injection fully automatically for us here? Am I missing something?

Most modules are directly constructed, and the per-module `Options` classes (the name is a convention only, no magic) are manually passed to constructors.  In the case of `ExecutorModule`, it's done in `SchedulerMain`:

```java
    Module module = Modules.combine(
        appEnvironmentModule,
        getUniversalModule(options),
        new ServiceDiscoveryModule(
            FlaggedZooKeeperConfig.create(options.zk),
            options.main.serversetPath),
        new BackupModule(options.backup, SnapshotStoreImpl.class),
        new ExecutorModule(options.executor),
        new AbstractModule() {
          @Override
          protected void configure() {
            bind(IServerInfo.class).toInstance(
                IServerInfo.build(
                    new ServerInfo()
                        .setClusterName(options.main.clusterName)
                        .setStatsUrlPrefix(options.main.statsUrlPrefix)));
          }
        });
```

However, some modules are slightly more complex due to the fact that they are dynamically instantiated.  That magic is tucked away in `MoreModules.java`.


> On Oct. 3, 2017, 3:29 p.m., Stephan Erb wrote:
> > src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java
> > Lines 71-72 (patched)
> > <https://reviews.apache.org/r/62623/diff/4/?file=1841466#file1841466line76>
> >
> >     Those two are missing the leading hyphen.
> >     
> >     In the scheduler `-help` they show up as follows, thus breaking the existing flags:
> >     
> >     ```
> >         kerberos_server_keytab
> >           Path to the server keytab.
> >         kerberos_server_principal
> >           Kerberos server principal to use, usually of the form
> >           HTTP/aurora.example.com@EXAMPLE.COM
> >     ```
> >     
> >     Please be so kind to run the end-to-end tests with this patch. Just to be extra sure we don't have any other problems like these.

> Please be so kind to run the end-to-end tests with this patch

Absolutely!


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187013
-----------------------------------------------------------


On Sept. 29, 2017, 7:07 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 29, 2017, 7:07 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` on page 5, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Stephan Erb <se...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review187013
-----------------------------------------------------------


Ship it!




The change looks good to me. I did not check everything in detail though.


src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java
Line 106 (original), 110 (patched)
<https://reviews.apache.org/r/62623/#comment263964>

    Is Guice doing the injection fully automatically for us here? Am I missing something?



src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java
Lines 71-72 (patched)
<https://reviews.apache.org/r/62623/#comment263965>

    Those two are missing the leading hyphen.
    
    In the scheduler `-help` they show up as follows, thus breaking the existing flags:
    
    ```
        kerberos_server_keytab
          Path to the server keytab.
        kerberos_server_principal
          Kerberos server principal to use, usually of the form
          HTTP/aurora.example.com@EXAMPLE.COM
    ```
    
    Please be so kind to run the end-to-end tests with this patch. Just to be extra sure we don't have any other problems like these.


- Stephan Erb


On Sept. 30, 2017, 4:07 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 30, 2017, 4:07 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` on page 5, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by John Sirois <js...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186790
-----------------------------------------------------------


Ship it!




I won't have time to give this a good look until Monday 10/2, but I'm happy with a quick skim!

- John Sirois


On Sept. 29, 2017, 8:07 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 29, 2017, 8:07 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `CliOptions.java` on page 5, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptionVictimFilterTest.java b8d7506c7c3d9eca434d9a22ab40404c7b13cd93 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/stats/AsyncStatsModuleTest.java 50a09a6ed2440454b99b3ddfbb8216f7d3bb8917 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Aurora ReviewBot <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186771
-----------------------------------------------------------



Master (24d2caf) is red with this patch.
  ./build-support/jenkins/build.sh

  [86] ./~/react/cjs/react.development.js 55.3 kB {0} [built]
  [87] ./~/react/cjs/react.production.min.js 5.61 kB {0} [built]
    + 75 hidden modules
:processResources
:classes
:jar
:startScripts
:distTar
:distZip
:assemble
:compileTestJava/home/jenkins/jenkins-slave/workspace/AuroraBot/src/test/java/org/apache/aurora/scheduler/thrift/aop/MockDecoratedThrift.java:38: Note: Wrote forwarder org.apache.aurora.scheduler.thrift.aop.MockDecoratedThriftForwarder
@Forward(AnnotatedAuroraAdmin.class)
^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

:processTestResources
:testClasses
:compileJmhJavaNote: /home/jenkins/jenkins-slave/workspace/AuroraBot/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeSchedulerDriver.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

:processJmhResources NO-SOURCE
:jmhClasses
:checkstyleJmh
:checkstyleMain[ant:checkstyle] [ERROR] /home/jenkins/jenkins-slave/workspace/AuroraBot/src/main/java/org/apache/aurora/scheduler/app/AppModule.java:80: Line is longer than 100 characters (found 101). [LineLength]
 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':checkstyleMain'.
> Checkstyle rule violations were found. See the report at: file:///home/jenkins/jenkins-slave/workspace/AuroraBot/dist/reports/checkstyle/main.html

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 2m 57s
35 actionable tasks: 29 executed, 6 up-to-date


I will refresh this build result if you post a review containing "@ReviewBot retry"

- Aurora ReviewBot


On Sept. 30, 2017, 10:07 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 30, 2017, 10:07 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
>   config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
>   src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
>   src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
>   src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
>   src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
>   src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
>   src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
>   src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
>   src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
>   src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
>   src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
>   src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
>   src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
>   src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
>   src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
>   src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
>   src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
>   src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
>   src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
>   src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
>   src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/2/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/
-----------------------------------------------------------

(Updated Sept. 29, 2017, 7:07 p.m.)


Review request for Aurora, David McLaughlin and John Sirois.


Changes
-------

This draft moves args back to Module classes, and eliminates all but one of the static options accesses.

Still not ready for commit, but this is closer to a shippable shape.


Repository: aurora


Description
-------

**NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**

This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.

I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.

I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.

Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E


Diffs (updated)
-----

  build.gradle f9579a38de95ff9e11cf2e44980d01e103226389 
  commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
  commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
  commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
  commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
  commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
  commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
  commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
  commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
  commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
  commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
  commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
  commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
  commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
  commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
  commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
  commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
  commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
  commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
  commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
  commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
  commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
  commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
  commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
  commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
  commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
  commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
  commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
  commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
  commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
  commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
  commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
  commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
  commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
  commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
  commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
  commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
  commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
  commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
  commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
  commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
  commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
  commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
  commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
  commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
  commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
  commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
  commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
  commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
  commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
  commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
  commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
  commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
  commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
  commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
  commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
  commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
  commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
  commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
  config/checkstyle/checkstyle.xml abc0760659a08357e4ffdebfce68c0afbf580885 
  config/findbugs/excludeFilter.xml f7d5ae0558011051c844713fd109c9f388d19aca 
  src/jmh/java/org/apache/aurora/benchmark/SchedulingBenchmarks.java cb783ce4e4b40f173fb3b1cbd0094a5a4e0300a5 
  src/jmh/java/org/apache/aurora/benchmark/StateManagerBenchmarks.java b4f14f1f352dbe56afe57d66349ae5ae57533050 
  src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java c81387f24d554bcb2ee73e49028ba068ad11e4d6 
  src/jmh/java/org/apache/aurora/benchmark/TaskStoreBenchmarks.java 5b4d2a267b9cc1a14b915a1a10d63b4f4d174d51 
  src/jmh/java/org/apache/aurora/benchmark/ThriftApiBenchmarks.java 440c4fc551905da513df5dae21d0eefe6a42ceeb 
  src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
  src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
  src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
  src/main/java/org/apache/aurora/scheduler/app/MoreModules.java 074f22075e9fa91724995a2ade0138ee58c27806 
  src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java bb7055ed6826d57cb6b5c5c77e4a27c3bcdd10c7 
  src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
  src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
  src/main/java/org/apache/aurora/scheduler/config/CliOptions.java PRE-CREATION 
  src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
  src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
  src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
  src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
  src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
  src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
  src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
  src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
  src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
  src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
  src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
  src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
  src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
  src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
  src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
  src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
  src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
  src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
  src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
  src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
  src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
  src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
  src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
  src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
  src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
  src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
  src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
  src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
  src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
  src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
  src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
  src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
  src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
  src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
  src/main/java/org/apache/aurora/scheduler/thrift/ThriftModule.java bd92ff79c86c8b018583f4bc860c64e63a0d36e1 
  src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
  src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
  src/main/resources/org/apache/aurora/scheduler/webhook.json b78c063d0a72d7a22a8806451e4002d27eaf759a 
  src/test/java/org/apache/aurora/scheduler/TierModuleTest.java 58d95dcdf31bc920ca1f8822baccc6c37b66e739 
  src/test/java/org/apache/aurora/scheduler/app/MoreModulesTest.java 1b23948dd145f9f779b7268761336c5db79dc6be 
  src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
  src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
  src/test/java/org/apache/aurora/scheduler/app/local/LocalSchedulerMain.java b63f014020ea9698d5869a92ca656823a923c21b 
  src/test/java/org/apache/aurora/scheduler/async/AsyncModuleTest.java 4c263f9e33619fe590b066e57e276376db26b606 
  src/test/java/org/apache/aurora/scheduler/cron/quartz/CronIT.java 8556253fc11f6027316871eb9dc66d8627a77fe6 
  src/test/java/org/apache/aurora/scheduler/events/WebhookTest.java 07f39fa487e0ebd2252568750d5f36ac200a96aa 
  src/test/java/org/apache/aurora/scheduler/http/AbstractJettyTest.java fb03f25833587cb823464eecb2c7e5ed6172b9ca 
  src/test/java/org/apache/aurora/scheduler/http/api/ApiBetaTest.java ccef4ab930a7b7e1c10d611f0852aa65de82e726 
  src/test/java/org/apache/aurora/scheduler/http/api/ApiIT.java 0a3ff05586c87e0ab2cc20470e99b5dd609f7039 
  src/test/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityIT.java f3d5336cc444764a8ea7277f33d5f9335c4825c2 
  src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
  src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
  src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
  src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
  src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java 93cc34cf8393f969087cd0fd6f577228c00170e9 
  src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b92ad355cf57f1f1718adae4ab99ba1860eaee03 
  src/test/java/org/apache/aurora/scheduler/preemptor/PreemptorModuleTest.java 3317133630656937fe856e99f1da4da66e022915 
  src/test/java/org/apache/aurora/scheduler/resources/AcceptedOfferTest.java dded9c34749cf599d197ed312ffb6bf63b6033f1 
  src/test/java/org/apache/aurora/scheduler/resources/ResourceManagerTest.java b8b8edb1a21ba89b8b60f8f8451c8c776fc23ae8 
  src/test/java/org/apache/aurora/scheduler/sla/SlaModuleTest.java 341e346e794c9cf9a2789b8799f38fff900ec9b3 
  src/test/java/org/apache/aurora/scheduler/storage/db/RowGarbageCollectorTest.java caaba9b6dff46ff0b037759f1c817a321ae15ee4 
  src/test/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImplIT.java 7f41430975d46440a404ac58395582f66fd902d4 
  src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java 02719c312294b58525c1fddd3ed096a9b1cef601 
  src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java 26fe42992a7e1ae0c07b851383e9490141694972 
  src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
  src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 04a6e1e54a7ee61f1d35b3f5e9044236983fe019 


Diff: https://reviews.apache.org/r/62623/diff/2/

Changes: https://reviews.apache.org/r/62623/diff/1-2/


Testing
-------


Thanks,

Bill Farner


Re: Review Request 62623: Use a simpler command line argument system

Posted by Bill Farner <wf...@apache.org>.

> On Sept. 29, 2017, 3:28 a.m., Reza Motamedi wrote:
> > src/main/java/org/apache/aurora/scheduler/config/Options.java
> > Lines 15 (patched)
> > <https://reviews.apache.org/r/62623/diff/1/?file=1837690#file1837690line15>
> >
> >     This looks a lot nicer. My question is if we are going enforce any kind of ordering or grouping of args, viz based on the class they are used in and such.
> >     
> >     Should we just append to the end of this as they come along?

> My question is if we are going enforce any kind of ordering or grouping of args, viz based on the class they are used in and such

Based on usage seems most sane.  Beyond that, i'd like to see args split out into individual classes for a more clear/natural grouping.  I held back on that, however, as i think the static read/write of options is a more pressing issue to address.


> On Sept. 29, 2017, 3:28 a.m., Reza Motamedi wrote:
> > src/main/java/org/apache/aurora/scheduler/config/Options.java
> > Lines 305 (patched)
> > <https://reviews.apache.org/r/62623/diff/1/?file=1837690#file1837690line305>
> >
> >     If we are validating every arg, should there be an IP validator as well?

Ideally, yes.  However, i'd rather not bog this change down by adding behavior that did not previously exist.


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186656
-----------------------------------------------------------


On Sept. 27, 2017, 9:22 p.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 27, 2017, 9:22 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Reza Motamedi <re...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186656
-----------------------------------------------------------




src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 15 (patched)
<https://reviews.apache.org/r/62623/#comment263456>

    This looks a lot nicer. My question is if we are going enforce any kind of ordering or grouping of args, viz based on the class they are used in and such.
    
    Should we just append to the end of this as they come along?



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 305 (patched)
<https://reviews.apache.org/r/62623/#comment263447>

    If we are validating every arg, should there be an IP validator as well?



src/main/java/org/apache/aurora/scheduler/config/Options.java
Lines 604 (patched)
<https://reviews.apache.org/r/62623/#comment263451>

    positive


- Reza Motamedi


On Sept. 28, 2017, 4:22 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 28, 2017, 4:22 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>


Re: Review Request 62623: Use a simpler command line argument system

Posted by Aurora ReviewBot <wf...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62623/#review186527
-----------------------------------------------------------



Master (7c78519) is red with this patch.
  ./build-support/jenkins/build.sh

:processJmhResources NO-SOURCE
:jmhClasses
:checkstyleJmh
:checkstyleMain
:checkstyleTest
:findbugsJmh
:findbugsMain
:findbugsTest
:licenseJmh UP-TO-DATE
:licenseMain UP-TO-DATE
:licenseTest UP-TO-DATE
:license UP-TO-DATE
:pmdJmh
:pmdMain
:pmdTest
:test

org.apache.aurora.scheduler.mesos.MesosCallbackHandlerTest > testRescindBeforeAdd FAILED
    java.lang.AssertionError at MesosCallbackHandlerTest.java:357
I0928 04:37:03.259 [ShutdownHook, SchedulerMain] Stopping scheduler services. 

1155 tests completed, 1 failed, 2 skipped
:test FAILED
:jacocoTestReport
Coverage report generated: file:///home/jenkins/jenkins-slave/workspace/AuroraBot/dist/reports/jacoco/test/html/index.html
:jacocoTestCoverageVerification

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at: file:///home/jenkins/jenkins-slave/workspace/AuroraBot/dist/reports/tests/test/index.html

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 6m 15s
48 actionable tasks: 39 executed, 9 up-to-date


I will refresh this build result if you post a review containing "@ReviewBot retry"

- Aurora ReviewBot


On Sept. 28, 2017, 4:22 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62623/
> -----------------------------------------------------------
> 
> (Updated Sept. 28, 2017, 4:22 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and John Sirois.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> **NOTE: this patch is not ready to commit, but is ready for initial discussion on the direction**
> 
> This is a very big patch, lots of code removed.  I suggest starting with `Options.java` on page 1, then looking at a few module classes to see the call site changes.
> 
> I made a similar effort a while back, but was unable to finish due to time constraints.  I'm now proposing a more drastic simplification in command line argument handling in the scheduler.  Less magic, more approachable, less brittle with other tools (gradle, IDEs).  The original approach made lots of sense in the original environment where Aurora was developed (a monorepo in a large organization), but this is no longer the case.
> 
> I'm starting by collecting all options in a single class.  I chose the jcommander library to parse args since it is amenable to having multiple classes that hold args, which could be leveraged to bundle args into separate classes if we choose to do so.
> 
> Historical context: https://mail-archives.apache.org/mod_mbox/aurora-dev/201601.mbox/%3CCAFWq12VJPOxDViDP5OsmXU3skHR6rrp5Zp%2BXgi8HgeHic6pTJw%40mail.gmail.com%3E
> 
> 
> Diffs
> -----
> 
>   build.gradle 460500aaeab28dcfeb29ec602d057ea4bca12378 
>   commons-args/src/main/java/org/apache/aurora/common/args/Arg.java 4da91591d325ab657dcd37325e5142c65db2ab8c 
>   commons-args/src/main/java/org/apache/aurora/common/args/ArgParser.java 25ed25093bd9defd78df741b6f51e0de0d1f1709 
>   commons-args/src/main/java/org/apache/aurora/common/args/CmdLine.java a72ea7a1669a53d282f9a5a3709add506c9d4b33 
>   commons-args/src/main/java/org/apache/aurora/common/args/NoParser.java 3366531cebe6a79d9c568322f9117d7dbc3e824d 
>   commons-args/src/main/java/org/apache/aurora/common/args/Parser.java 93c23234df38c9f917c0f582b51c25070f996c94 
>   commons-args/src/main/java/org/apache/aurora/common/args/ParserOracle.java e84d3029a45cf7ea1f0bb885788c677ed649b60e 
>   commons-args/src/main/java/org/apache/aurora/common/args/Verifier.java 8f09a9803b8a05b2ab11326d48f26cccaaa278d1 
>   commons-args/src/main/java/org/apache/aurora/common/args/VerifierFor.java aad8807938f569d0dc7a970166ee71ea36f3537d 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/CmdLineProcessor.java 5fda5dc6cd8b6d97511073830278850d58bb0bc7 
>   commons-args/src/main/java/org/apache/aurora/common/args/apt/Configuration.java 1832d41feeafb07f4e7f0bef9dbcb6097e288508 
>   commons-args/src/main/resources/META-INF/services/javax.annotation.processing.Processor b548fcdc4389af4420e57908a313435b5300445f 
>   commons/src/main/java/org/apache/aurora/common/args/ArgFilters.java 9fd6eaec98516c3ca9b9a8647af848fcc96509bd 
>   commons/src/main/java/org/apache/aurora/common/args/ArgScanner.java 6e7f23d79deff4983b7feb568320cb938583270b 
>   commons/src/main/java/org/apache/aurora/common/args/Args.java 202835debce817df82bd3d860330d23d9710f489 
>   commons/src/main/java/org/apache/aurora/common/args/ArgumentInfo.java a59d1091b36d0b7908143335cf49d0dafb6627a1 
>   commons/src/main/java/org/apache/aurora/common/args/OptionInfo.java 2fcd3e8f068c4ef950aabe52ca8050dcbd562500 
>   commons/src/main/java/org/apache/aurora/common/args/Parsers.java c4e5fafc49028bd15cfe1bd2a874e73792091cb6 
>   commons/src/main/java/org/apache/aurora/common/args/TypeUtil.java 80cbdd00ce2abb298232793c5fd20c83c6ba6de4 
>   commons/src/main/java/org/apache/aurora/common/args/Verifiers.java 0212873258867ccdb17244e7b0678a7346e79b73 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecute.java a26b8a2049a16e96fd97ad2163556de41ba5686e 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanExecuteFileVerifier.java 5d9b36070af7c717af5edcc0eec6774c2e26c102 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanRead.java 3fef6a98e4c926126ac93061dd3b32c39f131e3c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanReadFileVerifier.java 8c26304733264b6670e56ab032d7b039f4dfdbfe 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWrite.java c2beeeb73d475ef9d03e1fde12e6d55983af81ed 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/CanWriteFileVerifier.java eac273868d72993bc3e83742398c050db2ca4aea 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Exists.java 217d10e561b175885d6bb2a058225935fd88b37a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/ExistsFileVerifier.java e79f54701dea77440b585034790cc4cee987b99a 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectory.java d909994937e5ab7f9e125bdf000c8a22c2f84734 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/IsDirectoryFileVerifier.java 968a098357ad37cd6d6121fc049990ffea0fb2d8 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmpty.java 8ff96afdfa2b837526956a77c8819c097c14881c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyIterableVerifier.java 222bdb2a2b97eb910242bdb63e86a19072653d31 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotEmptyStringVerifier.java 4384a97d72320488e27db24c25d615a0134ea098 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegative.java 1c1573fff0201205bc54e13f8a5882b48be23fab 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNegativeNumberVerifier.java 9309224535da742fc69954c1885e170f0ecd844b 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNull.java 57936be4af81d9f2e50271c5f4a1d03cf4a3d038 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/NotNullVerifier.java 53669865ae9c52ecc9baa06de35bec6d7db6ce5c 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Positive.java 2c91f4a956df5504b5aca89d584ae02ff43364b9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/PositiveNumberVerifier.java 95f88573fb01e550213d481afec1107417a6dbba 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/Range.java 71ceb6a415a2a418df1de47be5be3d4cc4c57bd9 
>   commons/src/main/java/org/apache/aurora/common/args/constraints/RangeNumberVerifier.java bec05230c6e5dbb74cfd1e565ec2b8df315c6413 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/AmountParser.java 1eb42bb1ca9eb7831cd2922ef161e33845afe9d1 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/BooleanParser.java 9ceb148dc806489ba1dfe88b39558dc85c38eb96 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ByteParser.java 64ee99885e3485e8a83ff6439a3d864413ebc221 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/CharacterParser.java c2363578a9a31a247064984f31de39be74daf63a 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ClassParser.java 27f71a8701346845b170fef3c28178e41280aaec 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DateParser.java a2ee8f9505d2ea35a8c751c2fe2ec329203f0ac0 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DoubleParser.java 6232437c39fdfc0c7791ce50f8dfb4f970c63b91 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/DurationParser.java 7bf55782e0b91ca71ddebc7e221c91fccce7af4b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/EnumParser.java 1c1e9bf1ed3d4c2ead0ab14187f3da96db04d650 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FileParser.java c8573f530ccbbd37275d8a905425663a12458358 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/FloatParser.java 7ceb11012fa94b199d122109760609312ddab260 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/InetSocketAddressParser.java dfa441eb3236dbaeb9fa9ad69996532c0270b1b2 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/IntegerParser.java 275d1212f56aa1e4033945ac5b2166f0e2b5cfda 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ListParser.java c22443450f22760d71bdb44ed5982a3bf2916ff5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/LongParser.java 95f92b89d2a6d7165f3cf4279083d34571059a39 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MapParser.java 3e1c9166ceb5fc9de94563ef84b46daef577c6e5 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/MultimapParser.java 0c44614dc4bb0fc4e1493aa0f19114b6a00751e4 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NonParameterizedTypeParser.java c77543c5dd31a297f83e4f79be5491d1b9508b9d 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/NumberParser.java a551fa959050bf87c097413f5cbf4edde880c426 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PairParser.java 3465260a635dd82f85506310d41208bd563d2bdb 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/PatternParser.java 0b86a21f5f44d97433847167041aba10400a732b 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/RangeParser.java e8616810a34bf048174eebece0b223048b0fba63 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/SetParser.java 15b6c745ada4fbd861f99f3d5b3a6aa535ac8e69 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/ShortParser.java 1e1323dca05e4fcf25f885e5c94a247247324bcd 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/StringParser.java 5283992481c3c931c67b66d7512cfc25bbb431bc 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/TypeParameterizedParser.java a8455f5bae6c456b1fd4cc835b1f36f58f200728 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URIParser.java 602611264474ea5277670f2b7f67c00785adf679 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/URLParser.java c2fd3014b0af11f813111b5c3e2358fe4515de20 
>   commons/src/main/java/org/apache/aurora/common/args/parsers/UnitParser.java 91098530d697935e02155c208d181102ba63c15a 
>   commons/src/test/java/org/apache/aurora/common/args/ArgFiltersTest.java 03908090f8079413d585316162c6ae70e4e7d534 
>   commons/src/test/java/org/apache/aurora/common/args/ArgScannerTest.java 06ce9144a838c69c61488f8a2c8a18e4b3284457 
>   commons/src/test/java/org/apache/aurora/common/args/ArgTest.java cbcc575abf13c30984f14f6e828ac4d19b737184 
>   commons/src/test/java/org/apache/aurora/common/args/ArgsTest.java 7bccababe87481ae417d7d2d3e91868f7732a7fc 
>   commons/src/test/java/org/apache/aurora/common/args/OptionInfoTest.java 75734305db8e608a75eafb5a4bbcfecf8303057d 
>   commons/src/test/java/org/apache/aurora/common/args/ParsersTest.java 991291de7e3c12dc234dc57e622a97358ff6731d 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/ArgsRoot.java fefff0c43638d51630deb2ba6c4ba61ca1016295 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/ArgsA.java 7777875b450585800e4885a3bc5150a6f8755b0f 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageA/subsubpackage1/ArgsA1.java 43af4f2882b0ebe9300f9ccf9733ae4418dd3673 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageB/ArgsB.java 11ed7e33ea85f1b0e3c62c348073d67924d1ef99 
>   commons/src/test/java/org/apache/aurora/common/args/argfilterstest/subpackageBwithSuffix/ArgsBWithSuffix.java 0ef8d5f92f2387ef1a687089a8e6d7376dfa52b8 
>   src/main/java/org/apache/aurora/scheduler/SchedulerModule.java a62bb069493c41d0ddac783d26a92a9ee3ab8434 
>   src/main/java/org/apache/aurora/scheduler/TierModule.java 61afa31bf975a580dfe8fa120015eea364f7d3f7 
>   src/main/java/org/apache/aurora/scheduler/app/AppModule.java 081dff2bda626f01ba222628b8d7d8afebbb0004 
>   src/main/java/org/apache/aurora/scheduler/app/SchedulerMain.java 3fbe99c4f1af1f11403bf08155bb4be028132e38 
>   src/main/java/org/apache/aurora/scheduler/app/VolumeParser.java c1e99cee7a824b1440c9ef8c23c0d6834b6a1394 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java da07df66b06cef6223119854032b4ca1c57a0859 
>   src/main/java/org/apache/aurora/scheduler/config/Options.java PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java 4dac9757a65e144142d36ee921b85a02a5311fe5 
>   src/main/java/org/apache/aurora/scheduler/cron/quartz/CronModule.java 9c88a2aa212b43d1762f5da816c5e99f32af79d3 
>   src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java e8aafe4a47e3f0e6312c8b93dbc32e1c25445dd3 
>   src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java 1f10af71830386652d21961b733bd0927c5436a1 
>   src/main/java/org/apache/aurora/scheduler/http/H2ConsoleModule.java 01d6b5de0079d6f5709c29fe9a72829fbc8501de 
>   src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java e29bb411bcf399a85b8508f66ae8acc5b2294567 
>   src/main/java/org/apache/aurora/scheduler/http/api/ApiModule.java e46820952fb6028911bca924169ceade6a134bfc 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/HttpSecurityModule.java 5bba496522a689e5de0ce5be58fe2bf9182966ce 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java 945846895c4aaad51f59f88b56bc6b9a865b45c1 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java 9c7aeadfecfca4c766a0430c7927eac5983c7cc8 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParser.java bce20b7e15548cddab786acabd3ed7461d9db94a 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ModuleParser.java ccd9a20e8b18831458cba2d53e6b8b84fef06162 
>   src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParser.java 3ee41b81b7e30375e63f310ed44ce8a1381a6722 
>   src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java 9a6c0c4782531d1ea6d0cce0251b31bab7c52440 
>   src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java 97d3c209f63d1fc76975e1a4d8193ace4e7cb7e5 
>   src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java 3e943ff9ecd6e2de31c8121aa684d74256456a54 
>   src/main/java/org/apache/aurora/scheduler/mesos/SchedulerDriverModule.java 18dc3e033fad213d5ddc6b21c45c0b6dc9e0870d 
>   src/main/java/org/apache/aurora/scheduler/offers/OffersModule.java bbccb17f890ce701c4f199a688ab388c3be6b392 
>   src/main/java/org/apache/aurora/scheduler/preemptor/PreemptorModule.java b3ca1a37308c876ccb0a5b0b31a182662c318ca6 
>   src/main/java/org/apache/aurora/scheduler/pruning/PruningModule.java 735199ac1ccccab343c24471890aa330d6635c26 
>   src/main/java/org/apache/aurora/scheduler/reconciliation/ReconciliationModule.java 80fc6165186ffaf2c83b7f410d18ceb688720efe 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceSettings.java 4e2c42526e91acfbb2f75bcb99c8a8a9adb353d1 
>   src/main/java/org/apache/aurora/scheduler/resources/ResourceType.java de43eaaf2881c5e84c09948deb9d37870588804d 
>   src/main/java/org/apache/aurora/scheduler/scheduling/SchedulingModule.java 04150165ac538ce95dfef9808f7927e7a1990158 
>   src/main/java/org/apache/aurora/scheduler/sla/MetricCalculator.java 9a56cda809fbbcb07e6dd12c7a0feb272542491d 
>   src/main/java/org/apache/aurora/scheduler/sla/SlaModule.java d569241a59f169eaa9982c3bba7003aa4942f50f 
>   src/main/java/org/apache/aurora/scheduler/state/StateModule.java 77a37b8766e3b58151368ac11def805d10315786 
>   src/main/java/org/apache/aurora/scheduler/stats/AsyncStatsModule.java 40451e91aed45866c2030d901160cc4e084834df 
>   src/main/java/org/apache/aurora/scheduler/stats/StatsModule.java 4767ef12e6a3c9d7b2d4a2b5be27786518b5b612 
>   src/main/java/org/apache/aurora/scheduler/storage/backup/BackupModule.java cded40ba4981e0ae287b6a24e49523f40674bef9 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java 0a2516e4843b8f920700ece70b3cc816d2acecf0 
>   src/main/java/org/apache/aurora/scheduler/storage/log/LogStorageModule.java 835f1604c0c5d913a87d570ee01d053bbbf92ecb 
>   src/main/java/org/apache/aurora/scheduler/storage/log/SnapshotStoreImpl.java 9d2164f4f2d18e4595d3039d64cedacb7df00ae2 
>   src/main/java/org/apache/aurora/scheduler/storage/mem/InMemStoresModule.java 1b491f977cf3a81e61f1333082be0547420306d4 
>   src/main/java/org/apache/aurora/scheduler/thrift/aop/AopModule.java ef5edf614b0166ae209657abc81bf849af4817c5 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 36730319265d02fe1a40701f9973e6dc2cb8b532 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java a7c9c83eebbbea7ae8a6c807f98d3ce8bd050137 
>   src/test/java/org/apache/aurora/scheduler/app/VolumeParserTest.java e8f8449b967f15a85219c2be57556db78f42f57f 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/KerberosPrincipalParserTest.java 7e55ef832c3cc36501cb08de389cf5931cb07c34 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ModuleParserTest.java baaeb2390a909de1a92e4328d35a49f7b74c36cb 
>   src/test/java/org/apache/aurora/scheduler/http/api/security/ShiroIniParserTest.java 3ca8c861a1e768d2a8361cd6d079a66ffce05ee5 
>   src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java d2c829e56f4973333f35bdfc5387a35e33fe5440 
>   src/test/java/org/apache/aurora/scheduler/thrift/ThriftIT.java 6b4b17f8dafd5c2d751dcda3080b476335f8aec0 
> 
> 
> Diff: https://reviews.apache.org/r/62623/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bill Farner
> 
>