SLIDER-653 slider flex does something instead of printing usage (Sherry Guo via gourksaha)
diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
index 59e6848..f44b739 100644
--- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
@@ -2709,11 +2709,15 @@
@Override
@VisibleForTesting
public int actionFlex(String name, ActionFlexArgs args) throws YarnException, IOException {
- verifyBindingsDefined();
validateClusterName(name);
+ Map<String, String> roleMap = args.getComponentMap();
+ // throw usage exception if no changes proposed
+ if (roleMap.size() == 0) {
+ actionHelp(ACTION_FLEX);
+ }
+ verifyBindingsDefined();
log.debug("actionFlex({})", name);
Map<String, Integer> roleInstances = new HashMap<>();
- Map<String, String> roleMap = args.getComponentMap();
for (Map.Entry<String, String> roleEntry : roleMap.entrySet()) {
String key = roleEntry.getKey();
String val = roleEntry.getValue();
diff --git a/slider-core/src/test/groovy/org/apache/slider/client/TestClientBadArgs.groovy b/slider-core/src/test/groovy/org/apache/slider/client/TestClientBadArgs.groovy
index 12736e3..1a90c88 100644
--- a/slider-core/src/test/groovy/org/apache/slider/client/TestClientBadArgs.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/client/TestClientBadArgs.groovy
@@ -237,4 +237,15 @@
assert exception instanceof BadCommandArgumentsException
log.info(exception.toString())
}
+
+ @Test
+ public void testFlexWithNoCompoents() throws Throwable {
+ def exception = launchExpectingException(SliderClient,
+ new Configuration(),
+ "Usage: slider flex <application>",
+ [SliderActions.ACTION_FLEX,
+ "flex1"])
+ assert exception instanceof UsageException
+ log.info(exception.toString())
+ }
}