ConfigCommands implements CommandMarker { @CliCommand(value = "configuration modify", help = "Modify the desired configuration") public String modifyConfig(@CliOption(key = "type", mandatory = true, help = "Type of the configuration") ConfigType configType, @CliOption(key = "key", mandatory = true, help = "Key of the config") String key, @CliOption(key = "value", mandatory = true, help = "Value of the config") String value) { String configTypeName = configType.getName(); Map<String, String> config = client.getServiceConfigMap(configTypeName).get(configTypeName); config.put(key, value); client.modifyConfiguration(configTypeName, config); return "Restart is required!\n" + renderSingleMap(config, "KEY", "VALUE"); } @Autowired  ConfigCommands(AmbariClient client, AmbariContext context); @CliAvailabilityIndicator("configuration show") boolean isConfigShowCommandAvailable(); @CliCommand(value = "configuration show", help = "Prints the desired configuration") String showConfig(@CliOption(key = "type", mandatory = true, help = "Type of the configuration") ConfigType configType); @CliAvailabilityIndicator("configuration set") boolean isConfigSetCommandAvailable(); @CliCommand(value = "configuration set", help = "Sets the desired configuration") String setConfig(@CliOption(key = "type", mandatory = true, help = "Type of the configuration") ConfigType configType,
    @CliOption(key = "url", help = "URL of the config") String url,
    @CliOption(key = "file", help = "File of the config") File file); @CliAvailabilityIndicator("configuration modify") boolean isConfigModifyCommandAvailable(); @CliCommand(value = "configuration modify", help = "Modify the desired configuration") String modifyConfig(@CliOption(key = "type", mandatory = true, help = "Type of the configuration") ConfigType configType,
    @CliOption(key = "key", mandatory = true, help = "Key of the config") String key,
    @CliOption(key = "value", mandatory = true, help = "Value of the config") String value); @CliAvailabilityIndicator("configuration download") boolean isConfigDownloadCommandAvailable(); @CliCommand(value = "configuration download", help = "Downloads the desired configuration") String downloadConfig(@CliOption(key = "type", mandatory = true, help = "Type of the configuration") ConfigType configType);  }
@Test public void testModifyConfig() throws IOException { ConfigType configType = mock(ConfigType.class); Map<String, Map<String, String>> mockResult = mock(Map.class); Map<String, String> config = new HashMap<String, String>(); config.put("fs.trash.interval", "350"); config.put("ipc.client.connection.maxidletime", "30000"); when(configType.getName()).thenReturn(CORE_SITE); when(mockResult.get(CORE_SITE)).thenReturn(config); when(client.getServiceConfigMap(CORE_SITE)).thenReturn(mockResult); configCommands.modifyConfig(configType, "fs.trash.interval", "510"); Map<String, String> config2 = new HashMap<String, String>(); config2.put("fs.trash.interval", "510"); config2.put("ipc.client.connection.maxidletime", "30000"); verify(client).modifyConfiguration(CORE_SITE, config2); }