List of usage examples for com.amazonaws.services.elasticbeanstalk.model ConfigurationOptionSetting getValue
public String getValue()
The current value for the configuration option.
From source file:br.com.ingenieux.mojo.beanstalk.AbstractBeanstalkMojo.java
License:Apache License
/** * Boolean predicate for harmful/placebo options <p/> I really mean harmful - If you mention a * terminated environment settings, Elastic Beanstalk will accept, but this might lead to * inconsistent states, specially when creating / listing environments. <p/> Trust me on this * one./*from w w w. j a v a 2 s . c o m*/ * * @param environmentId environment id to lookup * @param optionSetting option setting * @return true if this is not needed */ protected boolean harmfulOptionSettingP(final String environmentId, ConfigurationOptionSetting optionSetting) throws Exception { //aws:autoscaling:launchconfiguration:SecurityGroups['sg-18585f7d'] if (ConfigUtil.optionSettingMatchesP(optionSetting, "aws:autoscaling:launchconfiguration", "SecurityGroups")) { final String securityGroup = optionSetting.getValue(); if (-1 != securityGroup.indexOf(environmentId)) { return true; } if (getLog().isInfoEnabled()) { getLog().info("Probing security group '" + securityGroup + "'"); } Validate.isTrue(securityGroup.matches("^sg-\\p{XDigit}{8}$"), "Invalid Security Group Spec: " + securityGroup); final AmazonEC2 ec2 = this.getClientFactory().getService(AmazonEC2Client.class); final DescribeSecurityGroupsResult describeSecurityGroupsResult = ec2 .describeSecurityGroups(new DescribeSecurityGroupsRequest().withGroupIds(securityGroup)); if (!describeSecurityGroupsResult.getSecurityGroups().isEmpty()) { final Predicate<SecurityGroup> predicate = new Predicate<SecurityGroup>() { @Override public boolean apply(SecurityGroup input) { return -1 == input.getGroupName().indexOf(environmentId); } }; return Collections2.filter(describeSecurityGroupsResult.getSecurityGroups(), predicate).isEmpty(); } } boolean bInvalid = isBlank(optionSetting.getValue()); if (!bInvalid) { bInvalid = (optionSetting.getNamespace().equals("aws:cloudformation:template:parameter") && optionSetting.getOptionName().equals("AppSource")); } if (!bInvalid) { bInvalid = (optionSetting.getNamespace().equals("aws:elasticbeanstalk:sns:topics") && optionSetting.getOptionName().equals("Notification Topic ARN")); } /* * TODO: Apply a more general regex instead */ if (!bInvalid && isNotBlank(environmentId)) { bInvalid = (optionSetting.getValue().contains(environmentId)); } return bInvalid; }
From source file:br.com.ingenieux.mojo.beanstalk.cmd.dns.BindDomainsCommand.java
License:Apache License
protected boolean isSingleInstance(EnvironmentDescription env) { Validate.isTrue("WebServer".equals(env.getTier().getName()), "Not a Web Server environment!"); final DescribeConfigurationSettingsResult describeConfigurationSettingsResult = parentMojo.getService() .describeConfigurationSettings( new DescribeConfigurationSettingsRequest().withApplicationName(env.getApplicationName()) .withEnvironmentName(env.getEnvironmentName())); Validate.isTrue(1 == describeConfigurationSettingsResult.getConfigurationSettings().size(), "There should be one environment"); final List<ConfigurationOptionSetting> optionSettings = describeConfigurationSettingsResult .getConfigurationSettings().get(0).getOptionSettings(); for (ConfigurationOptionSetting optionSetting : optionSettings) { if (ConfigUtil.optionSettingMatchesP(optionSetting, "aws:elasticbeanstalk:environment", "EnvironmentType")) { return "SingleInstance".equals(optionSetting.getValue()); }//from ww w .j a v a 2 s . co m } throw new IllegalStateException("Unreachable code!"); }
From source file:br.com.ingenieux.mojo.beanstalk.config.DescribeConfigurationTemplatesMojo.java
License:Apache License
void describeConfigurationTemplate(String configTemplateName) throws Exception { DescribeConfigurationSettingsRequest req = new DescribeConfigurationSettingsRequest() .withApplicationName(applicationName).withTemplateName(configTemplateName); DescribeConfigurationSettingsResult configSettings = getService().describeConfigurationSettings(req); List<String> buf = new ArrayList<String>(); buf.add("<optionSettings>"); for (ConfigurationSettingsDescription configSetting : configSettings.getConfigurationSettings()) { for (ConfigurationOptionSetting setting : configSetting.getOptionSettings()) { if (harmfulOptionSettingP(null, setting)) { continue; }// w ww . j a v a 2 s. c o m buf.add(" <optionSetting>"); buf.add(String.format(" <%s>%s</%1$s>", "namespace", setting.getNamespace())); buf.add(String.format(" <%s>%s</%1$s>", "optionName", setting.getOptionName())); buf.add(String.format(" <%s>%s</%1$s>", "value", setting.getValue())); buf.add(" </optionSetting>"); } } buf.add("</optionSettings>"); if (null != outputFile) { getLog().info("Dumping results to file: " + outputFile.getName()); String bufChars = StringUtils.join(buf.iterator(), ENDL); FileWriter writer = null; try { writer = new FileWriter(outputFile); IOUtils.copy(new StringReader(bufChars), writer); } catch (IOException e) { throw new RuntimeException("Failure when writing to file: " + outputFile.getName(), e); } finally { IOUtils.closeQuietly(writer); } } else { getLog().info("Dumping results to stdout"); for (String e : buf) { getLog().info(e); } } }
From source file:br.com.ingenieux.mojo.beanstalk.env.DumpEnvironmentSettings.java
License:Apache License
protected Object executeInternal() throws Exception { DescribeConfigurationOptionsResult configOptions = getService() .describeConfigurationOptions(new DescribeConfigurationOptionsRequest() .withApplicationName(applicationName).withEnvironmentName(curEnv.getEnvironmentName())); for (ConfigurationOptionDescription o : configOptions.getOptions()) { String key = String.format("beanstalk.env.%s.%s", o.getNamespace().replace(":", "."), o.getName()); for (Map.Entry<String, ConfigurationOptionSetting> entry : COMMON_PARAMETERS.entrySet()) { ConfigurationOptionSetting cos = entry.getValue(); if (cos.getNamespace().equals(o.getNamespace()) && cos.getOptionName().equals(o.getName())) { key = entry.getKey();//from w w w . j a v a2 s. c o m break; } } defaultSettings.put(key, o); } DescribeConfigurationSettingsResult configurationSettings = getService() .describeConfigurationSettings(new DescribeConfigurationSettingsRequest() .withApplicationName(applicationName).withEnvironmentName(curEnv.getEnvironmentName())); Properties newProperties = new Properties(); if (configurationSettings.getConfigurationSettings().isEmpty()) { throw new IllegalStateException("No Configuration Settings received"); } ConfigurationSettingsDescription configSettings = configurationSettings.getConfigurationSettings().get(0); Map<String, ConfigurationOptionSetting> keyMap = new LinkedHashMap<String, ConfigurationOptionSetting>(); for (ConfigurationOptionSetting d : configSettings.getOptionSettings()) { String key = String.format("beanstalk.env.%s.%s", d.getNamespace().replaceAll(":", "."), d.getOptionName()); String defaultValue = ""; String outputKey = key; keyMap.put(key, d); for (Map.Entry<String, ConfigurationOptionSetting> cosEntry : COMMON_PARAMETERS.entrySet()) { ConfigurationOptionSetting v = cosEntry.getValue(); boolean match = v.getNamespace().equals(d.getNamespace()) && v.getOptionName().equals(d.getOptionName()); if (match) { outputKey = cosEntry.getKey(); break; } } if (defaultSettings.containsKey(outputKey)) { defaultValue = StringUtils.defaultString(defaultSettings.get(outputKey).getDefaultValue()); } String value = d.getValue(); if (null == value || StringUtils.isBlank("" + value)) { continue; } if (!defaultValue.equals(value)) { if (!value.contains(curEnv.getEnvironmentId())) { getLog().info("Adding property " + key); if (changedOnly) { String curValue = project.getProperties().getProperty(outputKey); if (!value.equals(curValue)) { newProperties.put(outputKey, value); } } else { newProperties.put(outputKey, value); } } else { getLog().info("Ignoring property " + outputKey + "(value=" + value + ") due to containing references to the environment id"); } } else { getLog().debug("Ignoring property " + key + " (defaulted)"); } } if ("properties".equals(this.outputFileFormat)) { String comment = "elastic beanstalk environment properties for " + curEnv.getEnvironmentName(); if (null != outputFile) { newProperties.store(new FileOutputStream(outputFile), comment); } else { newProperties.store(System.out, comment); } } else if ("yaml".equals(this.outputFileFormat)) { PrintStream printStream = System.out; if (null != outputFile) { printStream = new PrintStream(outputFile); } printStream.println("option_settings:"); for (Map.Entry<Object, Object> e : newProperties.entrySet()) { ConfigurationOptionSetting c = keyMap.get("" + e.getKey()); String value = "" + e.getValue(); printStream.println(" - namespace: " + c.getNamespace()); printStream.println(" option_name: " + c.getOptionName()); printStream.println(" value: " + value); } printStream.close(); } return null; }
From source file:br.com.ingenieux.mojo.beanstalk.env.ReplaceEnvironmentMojo.java
License:Apache License
/** * Prior to Launching a New Environment, lets look and copy the most we can * * @param curEnv current environment/*from www .j a v a 2s. co m*/ */ private void copyOptionSettings(EnvironmentDescription curEnv) throws Exception { /** * Skip if we don't have anything */ if (null != this.optionSettings && this.optionSettings.length > 0) { return; } DescribeConfigurationSettingsResult configSettings = getService() .describeConfigurationSettings(new DescribeConfigurationSettingsRequest() .withApplicationName(applicationName).withEnvironmentName(curEnv.getEnvironmentName())); List<ConfigurationOptionSetting> newOptionSettings = new ArrayList<ConfigurationOptionSetting>( configSettings.getConfigurationSettings().get(0).getOptionSettings()); ListIterator<ConfigurationOptionSetting> listIterator = newOptionSettings.listIterator(); while (listIterator.hasNext()) { ConfigurationOptionSetting curOptionSetting = listIterator.next(); boolean bInvalid = harmfulOptionSettingP(curEnv.getEnvironmentId(), curOptionSetting); if (bInvalid) { getLog().info(format("Excluding Option Setting: %s:%s['%s']", curOptionSetting.getNamespace(), curOptionSetting.getOptionName(), CredentialsUtil.redact(curOptionSetting.getValue()))); listIterator.remove(); } else { getLog().info(format("Including Option Setting: %s:%s['%s']", curOptionSetting.getNamespace(), curOptionSetting.getOptionName(), CredentialsUtil.redact(curOptionSetting.getValue()))); } } Object __secGroups = project.getProperties().get("beanstalk.securityGroups"); if (null != __secGroups) { String securityGroups = StringUtils.defaultString(__secGroups.toString()); if (!StringUtils.isBlank(securityGroups)) { ConfigurationOptionSetting newOptionSetting = new ConfigurationOptionSetting( "aws:autoscaling:launchconfiguration", "SecurityGroups", securityGroups); newOptionSettings.add(newOptionSetting); getLog().info(format("Including Option Setting: %s:%s['%s']", newOptionSetting.getNamespace(), newOptionSetting.getOptionName(), newOptionSetting.getValue())); } } /* * Then copy it back */ this.optionSettings = newOptionSettings.toArray(new ConfigurationOptionSetting[newOptionSettings.size()]); }