Class: Fog::AWS::ElasticBeanstalk::Templates

Inherits:
Collection
  • Object
show all
Defined in:
lib/fog/aws/models/beanstalk/templates.rb

Instance Method Summary collapse

Instance Method Details

#all(options = {}) ⇒ Object

Describes all configuration templates, may optionally pass an ApplicationName filter

Note: This is currently an expensive operation requiring multiple API calls due to a lack of a describe configuration templates call in the AWS API.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/fog/aws/models/beanstalk/templates.rb', line 13

def all(options={})
  application_filter = []
  if options.key?('ApplicationName')
    application_filter << options['ApplicationName']
  end

  # Initialize with empty array
  data = []

  applications = service.describe_applications(application_filter).body['DescribeApplicationsResult']['Applications']
  applications.each { |application|
    application['ConfigurationTemplates'].each { |template_name|
      begin
        options = {
            'ApplicationName' => application['ApplicationName'],
            'TemplateName' => template_name
        }
        settings = service.describe_configuration_settings(options).body['DescribeConfigurationSettingsResult']['ConfigurationSettings']
        if settings.length == 1
          # Add to data
          data << settings.first
        end
      rescue Fog::AWS::ElasticBeanstalk::InvalidParameterError
        # Ignore
      end

    }
  }

  load(data) # data is an array of attribute hashes
end

#get(application_name, template_name) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/fog/aws/models/beanstalk/templates.rb', line 45

def get(application_name, template_name)
  options = {
      'ApplicationName' => application_name,
      'TemplateName' => template_name
  }

  result = nil
  # There is no describe call for templates, so we must use describe_configuration_settings.  Unfortunately,
  # it throws an exception if template name doesn't exist, which is inconsistent, catch and return nil
  begin
    data = service.describe_configuration_settings(options).body['DescribeConfigurationSettingsResult']['ConfigurationSettings']
    if data.length == 1
      result = new(data.first)
    end
  rescue Fog::AWS::ElasticBeanstalk::InvalidParameterError

  end
    result
end