Example usage for com.amazonaws.services.elasticbeanstalk.model ConfigurationOptionSetting getValue

List of usage examples for com.amazonaws.services.elasticbeanstalk.model ConfigurationOptionSetting getValue

Introduction

In this page you can find the example usage for com.amazonaws.services.elasticbeanstalk.model ConfigurationOptionSetting getValue.

Prototype


public String getValue() 

Source Link

Document

The current value for the configuration option.

Usage

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()]);
}