Merge branch 'gscottrw'
This commit is contained in:
commit
70e0f48fa4
|
@ -6,6 +6,7 @@ module Fog
|
|||
extend Fog::Provider
|
||||
|
||||
service(:auto_scaling, 'aws/auto_scaling', 'AutoScaling')
|
||||
service(:beanstalk, 'aws/beanstalk', 'ElasticBeanstalk')
|
||||
service(:cdn, 'aws/cdn', 'CDN')
|
||||
service(:compute, 'aws/compute', 'Compute')
|
||||
service(:cloud_formation, 'aws/cloud_formation', 'CloudFormation')
|
||||
|
|
|
@ -0,0 +1,140 @@
|
|||
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'aws'))
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk < Fog::Service
|
||||
|
||||
class InvalidParameterError < Fog::Errors::Error; end
|
||||
|
||||
requires :aws_access_key_id, :aws_secret_access_key
|
||||
|
||||
request_path 'fog/aws/requests/beanstalk'
|
||||
|
||||
request :check_dns_availability
|
||||
request :create_application
|
||||
request :create_application_version
|
||||
request :create_configuration_template
|
||||
request :create_environment
|
||||
request :create_storage_location
|
||||
request :delete_application
|
||||
request :delete_application_version
|
||||
request :delete_configuration_template
|
||||
request :delete_environment_configuration
|
||||
request :describe_applications
|
||||
request :describe_application_versions
|
||||
request :describe_configuration_options
|
||||
request :describe_configuration_settings
|
||||
request :describe_environment_resources
|
||||
request :describe_environments
|
||||
request :describe_events
|
||||
request :list_available_solution_stacks
|
||||
request :rebuild_environment
|
||||
request :request_environment_info
|
||||
request :restart_app_server
|
||||
request :retrieve_environment_info
|
||||
request :swap_environment_cnames
|
||||
request :terminate_environment
|
||||
request :update_application
|
||||
request :update_application_version
|
||||
request :update_configuration_template
|
||||
request :update_environment
|
||||
request :validate_configuration_settings
|
||||
|
||||
model_path 'fog/aws/models/beanstalk'
|
||||
|
||||
model :application
|
||||
collection :applications
|
||||
model :environment
|
||||
collection :environments
|
||||
model :event
|
||||
collection :events
|
||||
model :template
|
||||
collection :templates
|
||||
model :version
|
||||
collection :versions
|
||||
|
||||
class Mock
|
||||
|
||||
def initialize(options={})
|
||||
Fog::Mock.not_implemented
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Real
|
||||
|
||||
def initialize(options={})
|
||||
require 'fog/core/parser'
|
||||
require 'multi_json'
|
||||
|
||||
@aws_access_key_id = options[:aws_access_key_id]
|
||||
@aws_secret_access_key = options[:aws_secret_access_key]
|
||||
@hmac = Fog::HMAC.new('sha256', @aws_secret_access_key)
|
||||
|
||||
@connection_options = options[:connection_options] || {}
|
||||
options[:region] ||= 'us-east-1'
|
||||
@host = options[:host] || "elasticbeanstalk.#{options[:region]}.amazonaws.com"
|
||||
@path = options[:path] || '/'
|
||||
@persistent = options[:persistent] || false
|
||||
@port = options[:port] || 443
|
||||
@scheme = options[:scheme] || 'https'
|
||||
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)
|
||||
end
|
||||
|
||||
def reload
|
||||
@connection.reset
|
||||
end
|
||||
|
||||
# Returns an array of available solutions stack details
|
||||
def solution_stacks
|
||||
list_available_solution_stacks.body['ListAvailableSolutionStacksResult']['SolutionStackDetails']
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def request(params)
|
||||
idempotent = params.delete(:idempotent)
|
||||
parser = params.delete(:parser)
|
||||
|
||||
body = AWS.signed_params(
|
||||
params,
|
||||
{
|
||||
:aws_access_key_id => @aws_access_key_id,
|
||||
:hmac => @hmac,
|
||||
:host => @host,
|
||||
:path => @path,
|
||||
:port => @port,
|
||||
:version => '2010-12-01'
|
||||
}
|
||||
)
|
||||
|
||||
begin
|
||||
response = @connection.request({
|
||||
:body => body,
|
||||
:expects => 200,
|
||||
:headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
|
||||
:idempotent => idempotent,
|
||||
:host => @host,
|
||||
:method => 'POST',
|
||||
:parser => parser
|
||||
})
|
||||
rescue Excon::Errors::HTTPStatusError => error
|
||||
if match = error.response.body.match(/<Code>(.*)<\/Code>[ \t\n]*<Message>(.*)<\/Message>/)
|
||||
raise case match[1].split('.').last
|
||||
when 'InvalidParameterValue'
|
||||
Fog::AWS::ElasticBeanstalk::InvalidParameterError.slurp(error, match[2])
|
||||
else
|
||||
Fog::AWS::ElasticBeanstalk::Error.slurp(error, "#{match[1]} => #{match[2]}")
|
||||
end
|
||||
else
|
||||
raise error
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,62 @@
|
|||
require 'fog/core/model'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
|
||||
class Application < Fog::Model
|
||||
identity :name, :aliases => 'ApplicationName'
|
||||
attribute :template_names, :aliases => 'ConfigurationTemplates'
|
||||
attribute :created_at, :aliases => 'DateCreated'
|
||||
attribute :updated_at, :aliases => 'DateUpdated'
|
||||
attribute :description, :aliases => 'Description'
|
||||
attribute :version_names, :aliases => 'Versions'
|
||||
|
||||
def initialize(attributes={})
|
||||
super
|
||||
end
|
||||
|
||||
def environments
|
||||
requires :name
|
||||
connection.environments.all({'ApplicationName' => name})
|
||||
end
|
||||
|
||||
def events
|
||||
requires :name
|
||||
connection.events.all({'ApplicationName' => name})
|
||||
end
|
||||
|
||||
def templates
|
||||
requires :name
|
||||
connection.templates.all({'ApplicationName' => name})
|
||||
end
|
||||
|
||||
def versions
|
||||
requires :name
|
||||
connection.versions.all({'ApplicationName' => name})
|
||||
end
|
||||
|
||||
def destroy
|
||||
requires :name
|
||||
connection.delete_application(name)
|
||||
true
|
||||
end
|
||||
|
||||
def save
|
||||
requires :name
|
||||
|
||||
options = {
|
||||
'ApplicationName' => name
|
||||
}
|
||||
options['Description'] = description unless description.nil?
|
||||
|
||||
data = connection.create_application(options).body['CreateApplicationResult']['Application']
|
||||
merge_attributes(data)
|
||||
true
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,25 @@
|
|||
require 'fog/core/collection'
|
||||
require 'fog/aws/models/beanstalk/application'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
|
||||
class Applications < Fog::Collection
|
||||
model Fog::AWS::ElasticBeanstalk::Application
|
||||
|
||||
def all(application_names=[])
|
||||
data = connection.describe_applications(application_names).body['DescribeApplicationsResult']['Applications']
|
||||
load(data) # data is an array of attribute hashes
|
||||
end
|
||||
|
||||
def get(application_name)
|
||||
if data = connection.describe_applications([application_name]).body['DescribeApplicationsResult']['Applications'].first
|
||||
new(data)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,129 @@
|
|||
require 'fog/core/model'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
|
||||
class Environment < Fog::Model
|
||||
identity :name, :aliases => 'EnvironmentName'
|
||||
attribute :id, :aliases => 'EnvironmentId'
|
||||
|
||||
attribute :application_name, :aliases => 'ApplicationName'
|
||||
attribute :cname, :aliases => 'CNAME'
|
||||
attribute :cname_prefix, :aliases => 'CNAMEPrefix'
|
||||
attribute :created_at, :aliases => 'DateCreated'
|
||||
attribute :updated_at, :aliases => 'DateUpdated'
|
||||
attribute :updated_at, :aliases => 'DateUpdated'
|
||||
attribute :description, :aliases => 'Description'
|
||||
attribute :endpoint_url, :aliases => 'EndpointURL'
|
||||
attribute :health, :aliases => 'Health'
|
||||
attribute :resources, :aliases => 'Resources'
|
||||
attribute :solution_stack_name, :aliases => 'SolutionStackName'
|
||||
attribute :status, :aliases => 'Status'
|
||||
attribute :template_name, :aliases => 'TemplateName'
|
||||
attribute :version_label, :aliases => 'VersionLabel'
|
||||
attribute :option_settings, :aliases => 'OptionSettings'
|
||||
attribute :options_to_remove, :aliases => 'OptionsToRemove'
|
||||
|
||||
def healthy?
|
||||
health == 'Green'
|
||||
end
|
||||
|
||||
def ready?
|
||||
status == 'Ready'
|
||||
end
|
||||
|
||||
def terminated?
|
||||
status == 'Terminated'
|
||||
end
|
||||
|
||||
# Returns the current live resources for this environment
|
||||
def live_resources
|
||||
requires :id
|
||||
data = connection.describe_environment_resources({'EnvironmentId' => id}).body['DescribeEnvironmentResourcesResult']['EnvironmentResources']
|
||||
data.delete('EnvironmentName') # Delete the environment name from the result, only return actual resources
|
||||
data
|
||||
end
|
||||
|
||||
# Return events related to this version
|
||||
def events
|
||||
requires :id
|
||||
connection.events.all({'EnvironmentId' => id})
|
||||
end
|
||||
|
||||
# Restarts the app servers in this environment
|
||||
def restart_app_server
|
||||
requires :id
|
||||
connection.restart_app_server({'EnvironmentId' => id})
|
||||
reload
|
||||
end
|
||||
|
||||
# Rebuilds the environment
|
||||
def rebuild
|
||||
requires :id
|
||||
connection.rebuild_environment({'EnvironmentId' => id})
|
||||
reload
|
||||
end
|
||||
|
||||
# Return the version object for this environment
|
||||
def version
|
||||
requires :application_name, :version_label
|
||||
connection.versions.get(application_name, version_label)
|
||||
end
|
||||
|
||||
# Update the running version of this environment
|
||||
def version=(new_version)
|
||||
requires :id
|
||||
if new_version.is_a?(String)
|
||||
new_version_label = new_version
|
||||
elsif new_version.is_a?(Fog::AWS::ElasticBeanstalk::Version)
|
||||
new_version_label = new_version.label
|
||||
else
|
||||
raise "Unknown type for new_version, must be either String or Fog::AWS::ElasticBeanstalk::Version"
|
||||
end
|
||||
|
||||
if new_version.nil?
|
||||
raise "Version label not specified."
|
||||
end
|
||||
|
||||
data = connection.update_environment({
|
||||
'EnvironmentId' => id,
|
||||
'VersionLabel' => new_version_label
|
||||
}).body['UpdateEnvironmentResult']
|
||||
|
||||
merge_attributes(data)
|
||||
end
|
||||
|
||||
def destroy
|
||||
requires :id
|
||||
connection.terminate_environment({'EnvironmentId' => id})
|
||||
true
|
||||
end
|
||||
|
||||
def save
|
||||
requires :name, :application_name
|
||||
requires_one :template_name, :solution_stack_name
|
||||
|
||||
options = {
|
||||
'ApplicationName' => application_name,
|
||||
'CNAMEPrefix' => cname_prefix,
|
||||
'Description' => description,
|
||||
'EnvironmentName' => name,
|
||||
'OptionSettings' => option_settings,
|
||||
'OptionsToRemove' => options_to_remove,
|
||||
'SolutionStackName' => solution_stack_name,
|
||||
'TemplateName' => template_name,
|
||||
'VersionLabel' => version_label
|
||||
}
|
||||
options.delete_if {|key, value| value.nil?}
|
||||
|
||||
data = connection.create_environment(options).body['CreateEnvironmentResult']
|
||||
merge_attributes(data)
|
||||
true
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
require 'fog/core/collection'
|
||||
require 'fog/aws/models/beanstalk/environment'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
|
||||
class Environments < Fog::Collection
|
||||
model Fog::AWS::ElasticBeanstalk::Environment
|
||||
|
||||
def all(options={})
|
||||
data = connection.describe_environments(options).body['DescribeEnvironmentsResult']['Environments']
|
||||
load(data) # data is an array of attribute hashes
|
||||
end
|
||||
|
||||
# Gets an environment given a name.
|
||||
#
|
||||
def get(environment_name)
|
||||
options = { 'EnvironmentNames' => [environment_name] }
|
||||
|
||||
if data = connection.describe_environments(options).body['DescribeEnvironmentsResult']['Environments'].first
|
||||
new(data)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,20 @@
|
|||
require 'fog/core/model'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
|
||||
class Event < Fog::Model
|
||||
attribute :application_name, :aliases => 'ApplicationName'
|
||||
attribute :environment_name, :aliases => 'EnvironmentName'
|
||||
attribute :date, :aliases => 'EventDate'
|
||||
attribute :message, :aliases => 'Message'
|
||||
attribute :request_id, :aliases => 'RequestId'
|
||||
attribute :severity, :aliases => 'Severity'
|
||||
attribute :template_name, :aliases => 'TemplateName'
|
||||
attribute :version_label, :aliases => 'VersionLabel'
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,19 @@
|
|||
require 'fog/core/collection'
|
||||
require 'fog/aws/models/beanstalk/event'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
|
||||
class Events < Fog::Collection
|
||||
model Fog::AWS::ElasticBeanstalk::Event
|
||||
|
||||
def all(options={})
|
||||
data = connection.describe_events(options).body['DescribeEventsResult']['Events']
|
||||
load(data) # data is an array of attribute hashes
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,62 @@
|
|||
require 'fog/core/model'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
|
||||
class Template < Fog::Model
|
||||
attribute :name, :aliases => 'TemplateName'
|
||||
attribute :application_name, :aliases => 'ApplicationName'
|
||||
attribute :created_at, :aliases => 'DateCreated'
|
||||
attribute :updated_at, :aliases => 'DateUpdated'
|
||||
attribute :deployment_status, :aliases => 'DeploymentStatus'
|
||||
attribute :description, :aliases => 'Description'
|
||||
attribute :environment_id
|
||||
attribute :environment_name, :aliases => 'EnvironmentName'
|
||||
attribute :solution_stack_name, :aliases => 'SolutionStackName'
|
||||
attribute :source_configuration
|
||||
attribute :option_settings, :aliases => 'OptionSettings'
|
||||
|
||||
def initialize(attributes={})
|
||||
super
|
||||
end
|
||||
|
||||
# Returns an array of options that may be set on this template
|
||||
def options
|
||||
requires :name, :application_name
|
||||
data = connection.describe_configuration_options({
|
||||
'ApplicationName' => application_name,
|
||||
'TemplateName' => name
|
||||
})
|
||||
data.body['DescribeConfigurationOptionsResult']['Options']
|
||||
end
|
||||
|
||||
def destroy
|
||||
requires :name, :application_name
|
||||
connection.delete_configuration_template(application_name, name)
|
||||
true
|
||||
end
|
||||
|
||||
def save
|
||||
requires :name, :application_name
|
||||
|
||||
options = {
|
||||
'ApplicationName' => application_name,
|
||||
'Description' => description,
|
||||
'EnvironmentId' => environment_id,
|
||||
'OptionSettings' => option_settings,
|
||||
'SolutionStackName' => solution_stack_name,
|
||||
'SourceConfiguration' => source_configuration,
|
||||
'TemplateName' => name
|
||||
}
|
||||
options.delete_if {|key, value| value.nil?}
|
||||
|
||||
data = connection.create_configuration_template(options).body['CreateConfigurationTemplateResult']
|
||||
merge_attributes(data)
|
||||
true
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,70 @@
|
|||
require 'fog/core/collection'
|
||||
require 'fog/aws/models/beanstalk/template'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
|
||||
class Templates < Fog::Collection
|
||||
model Fog::AWS::ElasticBeanstalk::Template
|
||||
|
||||
# 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.
|
||||
def all(options={})
|
||||
application_filter = []
|
||||
if options.has_key?('ApplicationName')
|
||||
application_filter << options['ApplicationName']
|
||||
end
|
||||
|
||||
# Initialize with empty array
|
||||
data = []
|
||||
|
||||
applications = connection.describe_applications(application_filter).body['DescribeApplicationsResult']['Applications']
|
||||
applications.each { |application|
|
||||
application['ConfigurationTemplates'].each { |template_name|
|
||||
begin
|
||||
options = {
|
||||
'ApplicationName' => application['ApplicationName'],
|
||||
'TemplateName' => template_name
|
||||
}
|
||||
settings = connection.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
|
||||
|
||||
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 = connection.describe_configuration_settings(options).body['DescribeConfigurationSettingsResult']['ConfigurationSettings']
|
||||
if data.length == 1
|
||||
result = new(data.first)
|
||||
end
|
||||
rescue Fog::AWS::ElasticBeanstalk::InvalidParameterError
|
||||
|
||||
end
|
||||
result
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,79 @@
|
|||
require 'fog/core/model'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
|
||||
class Version < Fog::Model
|
||||
attribute :label, :aliases => 'VersionLabel'
|
||||
attribute :application_name, :aliases => 'ApplicationName'
|
||||
attribute :created_at, :aliases => 'DateCreated'
|
||||
attribute :updated_at, :aliases => 'DateUpdated'
|
||||
attribute :description, :aliases => 'Description'
|
||||
attribute :source_bundle, :aliases => 'SourceBundle'
|
||||
attribute :auto_create_application # FIXME - should be write only
|
||||
|
||||
def initialize(attributes={})
|
||||
super
|
||||
end
|
||||
|
||||
# Return events related to this version
|
||||
def events
|
||||
requires :label, :application_name
|
||||
connection.events.all({
|
||||
'ApplicationName' => application_name,
|
||||
'VersionLabel' => label
|
||||
})
|
||||
end
|
||||
|
||||
# Returns environments running this version
|
||||
def environments
|
||||
requires :label, :application_name
|
||||
connection.environments.all({
|
||||
'ApplicationName' => application_name,
|
||||
'VersionLabel' => label
|
||||
})
|
||||
end
|
||||
|
||||
def destroy(delete_source_bundle = nil)
|
||||
requires :label, :application_name
|
||||
connection.delete_application_version(application_name, label, delete_source_bundle)
|
||||
true
|
||||
end
|
||||
|
||||
def save
|
||||
requires :label, :application_name
|
||||
|
||||
options = {
|
||||
'ApplicationName' => application_name,
|
||||
'AutoCreateApplication' => auto_create_application,
|
||||
'Description' => description,
|
||||
'SourceBundle' => source_bundle,
|
||||
'VersionLabel' => label
|
||||
}
|
||||
options.delete_if {|key, value| value.nil?}
|
||||
|
||||
data = connection.create_application_version(options).body['CreateApplicationVersionResult']['ApplicationVersion']
|
||||
merge_attributes(data)
|
||||
true
|
||||
end
|
||||
|
||||
# Updates the version label with the current property values. Currently only updates description
|
||||
def update
|
||||
requires :label, :application_name
|
||||
|
||||
options = {
|
||||
'ApplicationName' => application_name,
|
||||
'Description' => description,
|
||||
'VersionLabel' => label
|
||||
}
|
||||
options.delete_if {|key, value| value.nil?}
|
||||
|
||||
data = connection.update_application_version(options).body['UpdateApplicationVersionResult']['ApplicationVersion']
|
||||
merge_attributes(data)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,31 @@
|
|||
require 'fog/core/collection'
|
||||
require 'fog/aws/models/beanstalk/version'
|
||||
|
||||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
|
||||
class Versions < Fog::Collection
|
||||
model Fog::AWS::ElasticBeanstalk::Version
|
||||
|
||||
def all(options={})
|
||||
data = connection.describe_application_versions(options).body['DescribeApplicationVersionsResult']['ApplicationVersions']
|
||||
load(data) # data is an array of attribute hashes
|
||||
end
|
||||
|
||||
def get(application_name, version_label)
|
||||
if data = connection.describe_application_versions({
|
||||
'ApplicationName' => application_name,
|
||||
'VersionLabels' => [version_label]
|
||||
}).body['DescribeApplicationVersionsResult']['ApplicationVersions']
|
||||
if data.length == 1
|
||||
new(data.first)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,19 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class CheckDNSAvailability < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("CheckDNSAvailabilityResult")
|
||||
tag 'FullyQualifiedCNAME', :string
|
||||
tag 'Available', :boolean
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,24 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class CreateApplication < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("CreateApplicationResult")
|
||||
tag 'Application', :object
|
||||
tag 'Versions', :string, :list
|
||||
tag 'ConfigurationTemplates', :string, :list
|
||||
tag 'ApplicationName', :string
|
||||
tag 'Description', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,26 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class CreateApplicationVersion < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("CreateApplicationVersionResult")
|
||||
tag 'ApplicationVersion', :object
|
||||
tag 'ApplicationName', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
tag 'Description', :string
|
||||
tag 'SourceBundle', :object
|
||||
tag 'S3Bucket', :string
|
||||
tag 'S3Key', :string
|
||||
tag 'VersionLabel', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class CreateConfigurationTemplate < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("CreateConfigurationTemplateResult")
|
||||
tag 'ApplicationName', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
tag 'DeploymentStatus', :string
|
||||
tag 'Description', :string
|
||||
tag 'EnvironmentName', :string
|
||||
tag 'OptionSettings', :object, :list
|
||||
tag 'Namespace', :string
|
||||
tag 'OptionName', :string
|
||||
tag 'Value', :string
|
||||
tag 'SolutionStackName', :string
|
||||
tag 'TemplateName', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,37 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class CreateEnvironment < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("CreateEnvironmentResult")
|
||||
tag 'ApplicationName', :string
|
||||
tag 'CNAME', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
tag 'Description', :string
|
||||
tag 'EndpointURL', :string
|
||||
tag 'EnvironmentId', :string
|
||||
tag 'EnvironmentName', :string
|
||||
tag 'Health', :string
|
||||
tag 'Resources', :object
|
||||
tag 'LoadBalancer', :object
|
||||
tag 'Domain', :string
|
||||
tag 'LoadBalancerName', :string
|
||||
tag 'Listeners', :object, :list
|
||||
tag 'Port', :integer
|
||||
tag 'Protocol', :string
|
||||
tag 'SolutionStackName', :string
|
||||
tag 'Status', :string
|
||||
tag 'TemplateName', :string
|
||||
tag 'VersionLabel', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,18 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class CreateStorageLocation < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("CreateStorageLocationResult")
|
||||
tag 'S3Bucket', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,26 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class DescribeApplicationVersions < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("DescribeApplicationVersionsResult")
|
||||
tag 'ApplicationVersions', :object, :list
|
||||
tag 'ApplicationName', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
tag 'Description', :string
|
||||
tag 'SourceBundle', :object
|
||||
tag 'S3Bucket', :string
|
||||
tag 'S3Key', :string
|
||||
tag 'VersionLabel', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,24 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class DescribeApplications < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("DescribeApplicationsResult")
|
||||
tag 'Applications', :object, :list
|
||||
tag 'Versions', :string, :list
|
||||
tag 'ConfigurationTemplates', :string, :list
|
||||
tag 'ApplicationName', :string
|
||||
tag 'Description', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,32 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class DescribeConfigurationOptions < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("DescribeConfigurationOptionsResult")
|
||||
tag 'SolutionStackName', :string
|
||||
tag 'Options', :object, :list
|
||||
tag 'ChangeSeverity', :string
|
||||
tag 'DefaultValue', :string
|
||||
tag 'MaxLength', :integer
|
||||
tag 'MaxValue', :integer
|
||||
tag 'MinValue', :integer
|
||||
tag 'Name', :string
|
||||
tag 'Namespace', :string
|
||||
tag 'Regex', :object
|
||||
tag 'Label', :string
|
||||
tag 'Pattern', :string
|
||||
tag 'UserDefined', :boolean
|
||||
tag 'ValueOptions', :string, :list
|
||||
tag 'ValueType', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,30 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class DescribeConfigurationSettings < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("DescribeConfigurationSettingsResult")
|
||||
tag 'ConfigurationSettings', :object, :list
|
||||
tag 'ApplicationName', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
tag 'DeploymentStatus', :string
|
||||
tag 'Description', :string
|
||||
tag 'EnvironmentName', :string
|
||||
tag 'OptionSettings', :object, :list
|
||||
tag 'Namespace', :string
|
||||
tag 'OptionName', :string
|
||||
tag 'Value', :string
|
||||
tag 'SolutionStackName', :string
|
||||
tag 'TemplateName', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,26 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class DescribeEnvironmentResources < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("DescribeEnvironmentResourcesResult")
|
||||
tag 'EnvironmentResources', :object
|
||||
tag 'AutoScalingGroups', :object, :list
|
||||
tag 'Name', :string
|
||||
tag 'EnvironmentName', :string
|
||||
tag 'Instances', :object, :list
|
||||
tag 'Id', :string
|
||||
tag 'LaunchConfigurations', :object, :list
|
||||
tag 'LoadBalancers', :object, :list
|
||||
tag 'Triggers', :object, :list
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,38 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class DescribeEnvironments < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("DescribeEnvironmentsResult")
|
||||
tag 'Environments', :object, :list
|
||||
tag 'ApplicationName', :string
|
||||
tag 'CNAME', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
tag 'Description', :string
|
||||
tag 'EndpointURL', :string
|
||||
tag 'EnvironmentId', :string
|
||||
tag 'EnvironmentName', :string
|
||||
tag 'Health', :string
|
||||
tag 'Resources', :object
|
||||
tag 'LoadBalancer', :object
|
||||
tag 'Domain', :string
|
||||
tag 'LoadBalancerName', :string
|
||||
tag 'Listeners', :object, :list
|
||||
tag 'Port', :integer
|
||||
tag 'Protocol', :string
|
||||
tag 'SolutionStackName', :string
|
||||
tag 'Status', :string
|
||||
tag 'TemplateName', :string
|
||||
tag 'VersionLabel', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,27 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class DescribeEvents < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("DescribeEventsResult")
|
||||
tag 'Events', :object, :list
|
||||
tag 'ApplicationName', :string
|
||||
tag 'EnvironmentName', :string
|
||||
tag 'EventDate', :datetime
|
||||
tag 'Message', :string
|
||||
tag 'RequestId', :string
|
||||
tag 'Severity', :string
|
||||
tag 'TemplateName', :string
|
||||
tag 'VersionLabel', :string
|
||||
tag 'NextToken', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,27 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
class Empty < Fog::Parsers::Base
|
||||
|
||||
def reset
|
||||
@response = { 'ResponseMetadata' => {} }
|
||||
end
|
||||
|
||||
def end_element(name)
|
||||
case name
|
||||
when 'RequestId'
|
||||
@response['ResponseMetadata'][name] = value
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class ListAvailableSolutionStacks < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("ListAvailableSolutionStacksResult")
|
||||
tag 'SolutionStackDetails', :object, :list
|
||||
tag 'PermittedFileTypes', :string, :list
|
||||
tag 'SolutionStackName', :string
|
||||
tag 'SolutionStacks', :string, :list
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,93 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
class BaseParser < Fog::Parsers::Base
|
||||
|
||||
def initialize(result_name)
|
||||
@result_name = result_name # Set before super, since super calls reset
|
||||
super()
|
||||
@tags = {}
|
||||
@list_tags = {}
|
||||
end
|
||||
|
||||
def reset
|
||||
@response = { @result_name => {}, 'ResponseMetadata' => {} }
|
||||
# Push root object to top of stack
|
||||
@parse_stack = [ { :type => :object, :value => @response[@result_name]} ]
|
||||
end
|
||||
|
||||
|
||||
def tag name, *traits
|
||||
if traits.delete(:list)
|
||||
@list_tags[name] = true
|
||||
end
|
||||
|
||||
if traits.length == 1
|
||||
@tags[name] = traits.last
|
||||
else
|
||||
raise "Too many traits specified, only specify :list or a type"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def start_element(name, attrs = [])
|
||||
super
|
||||
if name == 'member'
|
||||
if @parse_stack.last[:type] == :object
|
||||
@parse_stack.last[:value] << {} # Push any empty object
|
||||
end
|
||||
elsif @list_tags.has_key?(name)
|
||||
set_value(name, [], :array) # Set an empty array
|
||||
@parse_stack.push({ :type => @tags[name], :value => get_parent[name] })
|
||||
elsif @tags[name] == :object
|
||||
set_value(name, {}, :object)
|
||||
@parse_stack.push({ :type => @tags[name], :value => get_parent[name] })
|
||||
end
|
||||
end
|
||||
|
||||
def end_element(name)
|
||||
case name
|
||||
when 'member'
|
||||
if @parse_stack.last[:type] != :object
|
||||
@parse_stack.last[:value] << value
|
||||
end
|
||||
when 'RequestId'
|
||||
@response['ResponseMetadata'][name] = value
|
||||
else
|
||||
if @list_tags.has_key?(name) || @tags[name] == :object
|
||||
@parse_stack.pop()
|
||||
elsif @tags.has_key?(name)
|
||||
set_value(name, value, @tags[name])
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def get_parent
|
||||
parent = @parse_stack.last[:value]
|
||||
parent.is_a?(Array) ? parent.last : parent
|
||||
end
|
||||
|
||||
def set_value(name, value, type)
|
||||
case type
|
||||
when :datetime
|
||||
get_parent[name] = Time.parse value
|
||||
when :boolean
|
||||
get_parent[name] = value == "true" # True only if value is true
|
||||
when :integer
|
||||
get_parent[name] = value.to_i
|
||||
else
|
||||
get_parent[name] = value
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class RetrieveEnvironmentInfo < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("RetrieveEnvironmentInfoResult")
|
||||
tag 'EnvironmentInfo', :object, :list
|
||||
tag 'Ec2InstanceId', :string
|
||||
tag 'InfoType', :string
|
||||
tag 'Message', :string
|
||||
tag 'SampleTimestamp', :datetime
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,37 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class TerminateEnvironment < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("TerminateEnvironmentResult")
|
||||
tag 'ApplicationName', :string
|
||||
tag 'CNAME', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
tag 'Description', :string
|
||||
tag 'EndpointURL', :string
|
||||
tag 'EnvironmentId', :string
|
||||
tag 'EnvironmentName', :string
|
||||
tag 'Health', :string
|
||||
tag 'Resources', :object
|
||||
tag 'LoadBalancer', :object
|
||||
tag 'Domain', :string
|
||||
tag 'LoadBalancerName', :string
|
||||
tag 'Listeners', :object, :list
|
||||
tag 'Port', :integer
|
||||
tag 'Protocol', :string
|
||||
tag 'SolutionStackName', :string
|
||||
tag 'Status', :string
|
||||
tag 'TemplateName', :string
|
||||
tag 'VersionLabel', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,24 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class UpdateApplication < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("UpdateApplicationResult")
|
||||
tag 'Application', :object
|
||||
tag 'Versions', :string, :list
|
||||
tag 'ConfigurationTemplates', :string, :list
|
||||
tag 'ApplicationName', :string
|
||||
tag 'Description', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,26 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class UpdateApplicationVersion < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("UpdateApplicationVersionResult")
|
||||
tag 'ApplicationVersion', :object
|
||||
tag 'ApplicationName', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
tag 'Description', :string
|
||||
tag 'SourceBundle', :object
|
||||
tag 'S3Bucket', :string
|
||||
tag 'S3Key', :string
|
||||
tag 'VersionLabel', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class UpdateConfigurationTemplate < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("UpdateConfigurationTemplateResult")
|
||||
tag 'ApplicationName', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
tag 'DeploymentStatus', :string
|
||||
tag 'Description', :string
|
||||
tag 'EnvironmentName', :string
|
||||
tag 'OptionSettings', :object, :list
|
||||
tag 'Namespace', :string
|
||||
tag 'OptionName', :string
|
||||
tag 'Value', :string
|
||||
tag 'SolutionStackName', :string
|
||||
tag 'TemplateName', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,37 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class UpdateEnvironment < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("UpdateEnvironmentResult")
|
||||
tag 'ApplicationName', :string
|
||||
tag 'CNAME', :string
|
||||
tag 'DateCreated', :datetime
|
||||
tag 'DateUpdated', :datetime
|
||||
tag 'Description', :string
|
||||
tag 'EndpointURL', :string
|
||||
tag 'EnvironmentId', :string
|
||||
tag 'EnvironmentName', :string
|
||||
tag 'Health', :string
|
||||
tag 'Resources', :object
|
||||
tag 'LoadBalancer', :object
|
||||
tag 'Domain', :string
|
||||
tag 'LoadBalancerName', :string
|
||||
tag 'Listeners', :object, :list
|
||||
tag 'Port', :integer
|
||||
tag 'Protocol', :string
|
||||
tag 'SolutionStackName', :string
|
||||
tag 'Status', :string
|
||||
tag 'TemplateName', :string
|
||||
tag 'VersionLabel', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,22 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ElasticBeanstalk
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/parser'
|
||||
class ValidateConfigurationSettings < Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
|
||||
|
||||
def initialize
|
||||
super("ValidateConfigurationSettingsResult")
|
||||
tag 'Messages', :object, :list
|
||||
tag 'Message', :string
|
||||
tag 'Namespace', :string
|
||||
tag 'OptionName', :string
|
||||
tag 'Severity', :string
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,27 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/check_dns_availability'
|
||||
|
||||
# Checks if the specified CNAME is available.
|
||||
#
|
||||
# ==== Options
|
||||
# * CNAMEPrefix<~String>: The prefix used when this CNAME is reserved
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_CheckDNSAvailability.html
|
||||
#
|
||||
def check_dns_availability(options)
|
||||
request({
|
||||
'Operation' => 'CheckDNSAvailability',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::CheckDNSAvailability.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/create_application'
|
||||
|
||||
# Creates an application that has one configuration template named default and no application versions.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: The name of the application.
|
||||
# * Description<~String>: Describes the application.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_CreateApplication.html
|
||||
#
|
||||
def create_application(options={})
|
||||
request({
|
||||
'Operation' => 'CreateApplication',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::CreateApplication.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,41 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/create_application_version'
|
||||
|
||||
# Creates an application version for the specified application.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: The name of the application. If no application is found with this name,
|
||||
# and AutoCreateApplication is false, returns an InvalidParameterValue error.
|
||||
# * AutoCreateApplication<~Boolean>: If true, create the application if it doesn't exist.
|
||||
# * Description<~String>: Describes this version.
|
||||
# * SourceBundle<~Hash>: The Amazon S3 bucket and key that identify the location of the source bundle
|
||||
# for this version. Use keys 'S3Bucket' and 'S3Key' to describe location.
|
||||
# * VersionLabel<~String>: A label identifying this version.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_CreateApplicationVersion.html
|
||||
#
|
||||
def create_application_version(options={})
|
||||
if source_bundle = options.delete('SourceBundle')
|
||||
# flatten hash
|
||||
options.merge!({
|
||||
'SourceBundle.S3Bucket' => source_bundle['S3Bucket'],
|
||||
'SourceBundle.S3Key' => source_bundle['S3Key']
|
||||
})
|
||||
end
|
||||
request({
|
||||
'Operation' => 'CreateApplicationVersion',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::CreateApplicationVersion.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,44 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/create_configuration_template'
|
||||
|
||||
# Creates a configuration template. Templates are associated with a specific application and are used to
|
||||
# deploy different versions of the application with the same configuration settings.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: The name of the application to associate with this configuration template.
|
||||
# If no application is found with this name, AWS Elastic Beanstalk returns an InvalidParameterValue error.
|
||||
# * Description<~String>: Describes this configuration.
|
||||
# * EnvironmentId<~String>: The ID of the environment used with this configuration template.
|
||||
# * OptionSettings<~Hash>: If specified, AWS Elastic Beanstalk sets the specified configuration option
|
||||
# to the requested value. The new value overrides the value obtained from the solution stack or the
|
||||
# source configuration template.
|
||||
# * SolutionStackName<~String>: The name of the solution stack used by this configuration. The solution
|
||||
# stack specifies the operating system, architecture, and application server for a configuration template.
|
||||
# It determines the set of configuration options as well as the possible and default values.
|
||||
# * SourceConfiguration<~String>: If specified, AWS Elastic Beanstalk uses the configuration values from the
|
||||
# specified configuration template to create a new configuration.
|
||||
# * TemplateName<~String>: The name of the configuration template.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_CreateConfigurationTemplate.html
|
||||
#
|
||||
def create_configuration_template(options={})
|
||||
if option_settings = options.delete('OptionSettings')
|
||||
options.merge!(AWS.indexed_param('OptionSettings.member.%d', [*option_settings]))
|
||||
end
|
||||
request({
|
||||
'Operation' => 'CreateConfigurationTemplate',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::CreateConfigurationTemplate.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,50 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/create_environment'
|
||||
|
||||
# Launches an environment for the specified application using the specified configuration.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: If specified, AWS Elastic Beanstalk restricts the returned descriptions
|
||||
# to include only those that are associated with this application.
|
||||
# * CNAMEPrefix<~String>: If specified, the environment attempts to use this value as the prefix for the CNAME.
|
||||
# If not specified, the environment uses the environment name.
|
||||
# * Description<~String>: Describes this environment.
|
||||
# * EnvironmentName<~String>: A unique name for the deployment environment. Used in the application URL.
|
||||
# * OptionSettings<~Array>: If specified, AWS Elastic Beanstalk sets the specified configuration options to
|
||||
# the requested value in the configuration set for the new environment. These override the values obtained
|
||||
# from the solution stack or the configuration template.
|
||||
# * OptionsToRemove<~Array>: A list of custom user-defined configuration options to remove from the
|
||||
# configuration set for this new environment.
|
||||
# * SolutionStackName<~String>: This is an alternative to specifying a configuration name. If specified,
|
||||
# AWS Elastic Beanstalk sets the configuration values to the default values associated with the
|
||||
# specified solution stack.
|
||||
# * TemplateName<~String>: The name of the configuration template to use in deployment. If no configuration
|
||||
# template is found with this name, AWS Elastic Beanstalk returns an InvalidParameterValue error.
|
||||
# * VersionLabel<~String>: The name of the application version to deploy.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_CreateEnvironment.html
|
||||
#
|
||||
def create_environment(options={})
|
||||
if option_settings = options.delete('OptionSettings')
|
||||
options.merge!(AWS.indexed_param('OptionSettings.member.%d', [*option_settings]))
|
||||
end
|
||||
if options_to_remove = options.delete('OptionsToRemove')
|
||||
options.merge!(AWS.indexed_param('OptionsToRemove.member.%d', [*options_to_remove]))
|
||||
end
|
||||
request({
|
||||
'Operation' => 'CreateEnvironment',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::CreateEnvironment.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,27 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/create_storage_location'
|
||||
|
||||
# Creates the Amazon S3 storage location for the account.
|
||||
#
|
||||
# ==== Options
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_CreateStorageLocation.html
|
||||
#
|
||||
def create_storage_location()
|
||||
request({
|
||||
'Operation' => 'CreateStorageLocation',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::CreateStorageLocation.new
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/empty'
|
||||
|
||||
# Deletes the specified application along with all associated versions and configurations.
|
||||
#
|
||||
# ==== Options
|
||||
# * application_name<~String>: The name of the application to delete.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DeleteApplication.html
|
||||
#
|
||||
def delete_application(application_name)
|
||||
options = { 'ApplicationName' => application_name }
|
||||
request({
|
||||
'Operation' => 'DeleteApplication',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::Empty.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,36 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/empty'
|
||||
|
||||
# Deletes the specified version from the specified application.
|
||||
#
|
||||
# ==== Options
|
||||
# * application_name<~String>: The name of the application to delete releases from.
|
||||
# * version_label<~String>: The label of the version to delete.
|
||||
# * delete_source_bundle<~Boolean>: Indicates whether to delete the associated source bundle from Amazon S3.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DeleteApplication.html
|
||||
#
|
||||
def delete_application_version(application_name, version_label, delete_source_bundle = nil)
|
||||
options = {
|
||||
'ApplicationName' => application_name,
|
||||
'VersionLabel' => version_label
|
||||
}
|
||||
options['DeleteSourceBundle'] = delete_source_bundle unless delete_source_bundle.nil?
|
||||
|
||||
request({
|
||||
'Operation' => 'DeleteApplicationVersion',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::Empty.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,34 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/empty'
|
||||
|
||||
# Deletes the specified configuration template.
|
||||
#
|
||||
# ==== Options
|
||||
# * application_name<~String>: The name of the application to delete the configuration template from.
|
||||
# * template_name<~String>: The name of the configuration template to delete.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DeleteConfigurationTemplate.html
|
||||
#
|
||||
def delete_configuration_template(application_name, template_name)
|
||||
options = {
|
||||
'ApplicationName' => application_name,
|
||||
'TemplateName' => template_name
|
||||
}
|
||||
|
||||
request({
|
||||
'Operation' => 'DeleteConfigurationTemplate',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::Empty.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,34 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/empty'
|
||||
|
||||
# Deletes the draft configuration associated with the running environment.
|
||||
#
|
||||
# ==== Options
|
||||
# * application_name<~String>: The name of the application the environment is associated with.
|
||||
# * environment_name<~String>: The name of the environment to delete the draft configuration from.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DeleteConfigurationTemplate.html
|
||||
#
|
||||
def delete_environment_configuration(application_name, environment_name)
|
||||
options = {
|
||||
'ApplicationName' => application_name,
|
||||
'EnvironmentName' => environment_name
|
||||
}
|
||||
|
||||
request({
|
||||
'Operation' => 'DeleteEnvironmentConfiguration',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::Empty.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,34 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/describe_application_versions'
|
||||
|
||||
# Returns descriptions for existing application versions.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: If specified, AWS Elastic Beanstalk restricts the returned descriptions to
|
||||
# only include ones that are associated with the specified application.
|
||||
# * VersionLabels<~Array>: If specified, restricts the returned descriptions to only include ones that have
|
||||
# the specified version labels.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DescribeApplicationVersions.html
|
||||
#
|
||||
def describe_application_versions(options={})
|
||||
if version_labels = options.delete('VersionLabels')
|
||||
options.merge!(AWS.indexed_param('VersionLabels.member.%d', [*version_labels]))
|
||||
end
|
||||
request({
|
||||
'Operation' => 'DescribeApplicationVersions',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::DescribeApplicationVersions.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,30 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/describe_applications'
|
||||
|
||||
# Returns the descriptions of existing applications.
|
||||
#
|
||||
# ==== Options
|
||||
# * application_names<~Array>: If specified, AWS Elastic Beanstalk restricts the returned descriptions
|
||||
# to only include those with the specified names.
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DescribeApplications.html
|
||||
#
|
||||
def describe_applications(application_names=[])
|
||||
options = {}
|
||||
options.merge!(AWS.indexed_param('ApplicationNames.member.%d', [*application_names]))
|
||||
request({
|
||||
'Operation' => 'DescribeApplications',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::DescribeApplications.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,40 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/describe_configuration_options'
|
||||
|
||||
# Describes the configuration options that are used in a particular configuration template or environment,
|
||||
# or that a specified solution stack defines. The description includes the values the options,
|
||||
# their default values, and an indication of the required action on a running environment
|
||||
# if an option value is changed.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: The name of the application associated with the configuration template or
|
||||
# environment. Only needed if you want to describe the configuration options associated with either the
|
||||
# configuration template or environment.
|
||||
# * EnvironmentName<~String>: The name of the environment whose configuration options you want to describe.
|
||||
# * Options<~Array>: If specified, restricts the descriptions to only the specified options.
|
||||
# * SolutionStackName<~String>: The name of the solution stack whose configuration options you want to describe.
|
||||
# * TemplateName<~String>: The name of the configuration template whose configuration options you want to describe.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DescribeConfigurationOptions.html
|
||||
#
|
||||
def describe_configuration_options(options={})
|
||||
if option_filters = options.delete('Options')
|
||||
options.merge!(AWS.indexed_param('Options.member.%d', [*option_filters]))
|
||||
end
|
||||
request({
|
||||
'Operation' => 'DescribeConfigurationOptions',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::DescribeConfigurationOptions.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,31 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/describe_configuration_settings'
|
||||
|
||||
# Returns a description of the settings for the specified configuration set, that is, either a configuration
|
||||
# template or the configuration set associated with a running environment.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: The application for the environment or configuration template.
|
||||
# * EnvironmentName<~String>: The name of the environment to describe.
|
||||
# * TemplateName<~String>: The name of the configuration template to describe.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DescribeConfigurationSettings.html
|
||||
#
|
||||
def describe_configuration_settings(options={})
|
||||
request({
|
||||
'Operation' => 'DescribeConfigurationSettings',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::DescribeConfigurationSettings.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/describe_environment_resources'
|
||||
|
||||
# Returns AWS resources for this environment.
|
||||
#
|
||||
# ==== Options
|
||||
# * EnvironmentId
|
||||
# * EnvironmentName
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DescribeEnvironmentResources.html
|
||||
#
|
||||
def describe_environment_resources(options={})
|
||||
request({
|
||||
'Operation' => 'DescribeEnvironmentResources',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::DescribeEnvironmentResources.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,40 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/describe_environments'
|
||||
|
||||
# Returns descriptions for existing environments.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: If specified, AWS Elastic Beanstalk restricts the returned descriptions
|
||||
# to include only those that are associated with this application.
|
||||
# * EnvironmentIds
|
||||
# * EnvironmentNames
|
||||
# * IncludeDeleted
|
||||
# * IncludedDeletedBackTo
|
||||
# * VersionLabel<~String>:
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html
|
||||
#
|
||||
def describe_environments(options={})
|
||||
if environment_ids = options.delete('EnvironmentIds')
|
||||
options.merge!(AWS.indexed_param('EnvironmentIds.member.%d', [*environment_ids]))
|
||||
end
|
||||
if environment_names = options.delete('EnvironmentNames')
|
||||
options.merge!(AWS.indexed_param('EnvironmentNames.member.%d', [*environment_names]))
|
||||
end
|
||||
request({
|
||||
'Operation' => 'DescribeEnvironments',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::DescribeEnvironments.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/describe_events'
|
||||
|
||||
# Returns list of event descriptions matching criteria up to the last 6 weeks.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: If specified, AWS Elastic Beanstalk restricts the returned descriptions
|
||||
# to include only those that are associated with this application.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html
|
||||
#
|
||||
def describe_events(options={})
|
||||
request({
|
||||
'Operation' => 'DescribeEvents',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::DescribeEvents.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,27 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/list_available_solution_stacks'
|
||||
|
||||
# Checks if the specified CNAME is available.
|
||||
#
|
||||
# ==== Options
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_CheckDNSAvailability.html
|
||||
#
|
||||
def list_available_solution_stacks()
|
||||
request({
|
||||
'Operation' => 'ListAvailableSolutionStacks',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::ListAvailableSolutionStacks.new
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,30 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/empty'
|
||||
|
||||
# Deletes and recreates all of the AWS resources (for example: the Auto Scaling group, load balancer, etc.)
|
||||
# for a specified environment and forces a restart.
|
||||
#
|
||||
# ==== Options
|
||||
# * EnvironmentId
|
||||
# * EnvironmentName
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_RebuildEnvironment.html
|
||||
#
|
||||
def rebuild_environment(options={})
|
||||
request({
|
||||
'Operation' => 'RebuildEnvironment',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::Empty.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/empty'
|
||||
|
||||
# Returns AWS resources for this environment.
|
||||
#
|
||||
# ==== Options
|
||||
# * EnvironmentId
|
||||
# * EnvironmentName
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html
|
||||
#
|
||||
def request_environment_info(options={})
|
||||
request({
|
||||
'Operation' => 'RequestEnvironmentInfo',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::Empty.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/empty'
|
||||
|
||||
# Returns AWS resources for this environment.
|
||||
#
|
||||
# ==== Options
|
||||
# * EnvironmentId
|
||||
# * EnvironmentName
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_RestartAppServer.html
|
||||
#
|
||||
def restart_app_server(options={})
|
||||
request({
|
||||
'Operation' => 'RestartAppServer',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::Empty.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/retrieve_environment_info'
|
||||
|
||||
# Returns AWS resources for this environment.
|
||||
#
|
||||
# ==== Options
|
||||
# * EnvironmentId
|
||||
# * EnvironmentName
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html
|
||||
#
|
||||
def retrieve_environment_info(options={})
|
||||
request({
|
||||
'Operation' => 'RetrieveEnvironmentInfo',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::RetrieveEnvironmentInfo.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/empty'
|
||||
|
||||
# Swaps the CNAMEs of two environments.
|
||||
#
|
||||
# ==== Options
|
||||
# * EnvironmentId
|
||||
# * EnvironmentName
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_SwapEnvironmentCNAMEs.html
|
||||
#
|
||||
def swap_environment_cnames(options={})
|
||||
request({
|
||||
'Operation' => 'SwapEnvironmentCNAMEs',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::Empty.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,31 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/terminate_environment'
|
||||
|
||||
# Terminates the specified environment.
|
||||
#
|
||||
# ==== Options
|
||||
# * EnvironmentId<~String>: The ID of the environment to terminate.
|
||||
# * EnvironmentName<~String>: The name of the environment to terminate.
|
||||
# * TerminateResources<~Boolean>: Indicates whether the associated AWS resources should shut down when the
|
||||
# environment is terminated
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html
|
||||
#
|
||||
def terminate_environment(options={})
|
||||
request({
|
||||
'Operation' => 'TerminateEnvironment',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::TerminateEnvironment.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,30 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/update_application'
|
||||
|
||||
# Updates the specified application to have the specified properties.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: The name of the application to update. If no such application is found,
|
||||
# UpdateApplication returns an InvalidParameterValue error.
|
||||
# * Description<~String>: A new description for the application.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_UpdateApplication.html
|
||||
#
|
||||
def update_application(options)
|
||||
request({
|
||||
'Operation' => 'UpdateApplication',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::UpdateApplication.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,30 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/update_application_version'
|
||||
|
||||
# Updates the specified application version to have the specified properties.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: The name of the application associated with this version.
|
||||
# * VersionLabel<~String>: The name of the version to update.
|
||||
# * Description<~String>: A new description for this release.
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_UpdateApplicationVersion.html
|
||||
#
|
||||
def update_application_version(options)
|
||||
request({
|
||||
'Operation' => 'UpdateApplicationVersion',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::UpdateApplicationVersion.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,36 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/update_configuration_template'
|
||||
|
||||
# Updates the specified configuration template to have the specified properties or configuration option values.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: If specified, AWS Elastic Beanstalk restricts the returned descriptions
|
||||
# to include only those that are associated with this application.
|
||||
# * VersionLabel<~String>:
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_CreateConfigurationTemplate.html
|
||||
#
|
||||
def update_configuration_template(options={})
|
||||
if option_settings = options.delete('OptionSettings')
|
||||
options.merge!(AWS.indexed_param('OptionSettings.member.%d', [*option_settings]))
|
||||
end
|
||||
if options_to_remove = options.delete('OptionsToRemove')
|
||||
options.merge!(AWS.indexed_param('OptionsToRemove.member.%d', [*options_to_remove]))
|
||||
end
|
||||
request({
|
||||
'Operation' => 'UpdateConfigurationTemplate',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::UpdateConfigurationTemplate.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,42 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/update_environment'
|
||||
|
||||
# Updates the environment description, deploys a new application version, updates the configuration settings
|
||||
# to an entirely new configuration template, or updates select configuration option values in
|
||||
# the running environment.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: If specified, AWS Elastic Beanstalk restricts the returned descriptions
|
||||
# to include only those that are associated with this application.
|
||||
# * EnvironmentIds
|
||||
# * EnvironmentNames
|
||||
# * IncludeDeleted
|
||||
# * IncludedDeletedBackTo
|
||||
# * VersionLabel<~String>:
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_CreateEnvironment.html
|
||||
#
|
||||
def update_environment(options={})
|
||||
if option_settings = options.delete('OptionSettings')
|
||||
options.merge!(AWS.indexed_param('OptionSettings.member.%d', [*option_settings]))
|
||||
end
|
||||
if options_to_remove = options.delete('OptionsToRemove')
|
||||
options.merge!(AWS.indexed_param('OptionsToRemove.member.%d', [*options_to_remove]))
|
||||
end
|
||||
request({
|
||||
'Operation' => 'UpdateEnvironment',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::UpdateEnvironment.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,33 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class ElasticBeanstalk
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/beanstalk/validate_configuration_settings'
|
||||
|
||||
# Updates the specified configuration template to have the specified properties or configuration option values.
|
||||
#
|
||||
# ==== Options
|
||||
# * ApplicationName<~String>: If specified, AWS Elastic Beanstalk restricts the returned descriptions
|
||||
# to include only those that are associated with this application.
|
||||
# * VersionLabel<~String>:
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
#
|
||||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/elasticbeanstalk/latest/api/API_CreateConfigurationTemplate.html
|
||||
#
|
||||
def validate_configuration_settings(options={})
|
||||
if option_settings = options.delete('OptionSettings')
|
||||
options.merge!(AWS.indexed_param('OptionSettings.member.%d', [*option_settings]))
|
||||
end
|
||||
request({
|
||||
'Operation' => 'ValidateConfigurationSettings',
|
||||
:parser => Fog::Parsers::AWS::ElasticBeanstalk::ValidateConfigurationSettings.new
|
||||
}.merge(options))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -5,6 +5,8 @@ class AWS < Fog::Bin
|
|||
case key
|
||||
when :auto_scaling
|
||||
Fog::AWS::AutoScaling
|
||||
when :beanstalk
|
||||
Fog::AWS::ElasticBeanstalk
|
||||
when :cdn
|
||||
Fog::CDN::AWS
|
||||
when :cloud_formation
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
Shindo.tests("Fog::AWS[:beanstalk] | application", ['aws', 'beanstalk']) do
|
||||
|
||||
pending if Fog.mocking?
|
||||
|
||||
@application_opts = {
|
||||
:name => uniq_id('fog-test-app'),
|
||||
:description => 'A nice description.'
|
||||
}
|
||||
|
||||
model_tests(Fog::AWS[:beanstalk].applications, @application_opts, false) do
|
||||
|
||||
test("#attributes") do
|
||||
@instance.name == @application_opts[:name] &&
|
||||
@instance.description == @application_opts[:description]
|
||||
end
|
||||
|
||||
test("#events") do
|
||||
# There should be some events now.
|
||||
@instance.events.length > 0
|
||||
end
|
||||
|
||||
version_name = uniq_id('fog-test-ver')
|
||||
@instance.versions.create(
|
||||
:application_name => @instance.name,
|
||||
:label => version_name
|
||||
)
|
||||
|
||||
test("#versions") do
|
||||
# We should have one version.
|
||||
@instance.versions.length == 1
|
||||
end
|
||||
|
||||
template_name = uniq_id('fog-test-template')
|
||||
@instance.templates.create(
|
||||
:application_name => @instance.name,
|
||||
:name => template_name,
|
||||
:solution_stack_name => '32bit Amazon Linux running Tomcat 7'
|
||||
)
|
||||
|
||||
test('#templates') do
|
||||
# We should have one template now.
|
||||
@instance.templates.length == 1
|
||||
end
|
||||
|
||||
environment_name = uniq_id('fog-test-env')
|
||||
environment = @instance.environments.create(
|
||||
:application_name => @instance.name,
|
||||
:name => environment_name,
|
||||
:version_label => version_name,
|
||||
:solution_stack_name => '32bit Amazon Linux running Tomcat 7'
|
||||
)
|
||||
|
||||
# Go ahead an terminate immediately.
|
||||
environment.destroy
|
||||
|
||||
# Create an environment
|
||||
test("#environments") do
|
||||
# We should have one environment now.
|
||||
@instance.environments.length == 1
|
||||
end
|
||||
|
||||
# Must wait for termination before destroying application
|
||||
tests("waiting for test environment to terminate").succeeds do
|
||||
environment.wait_for { terminated? }
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
|
@ -0,0 +1,7 @@
|
|||
Shindo.tests("Fog::AWS[:beanstalk] | applications", ['aws', 'beanstalk']) do
|
||||
|
||||
pending if Fog.mocking?
|
||||
|
||||
collection_tests(Fog::AWS[:beanstalk].applications, {:name => uniq_id('fog-test-app')}, false)
|
||||
|
||||
end
|
|
@ -0,0 +1,132 @@
|
|||
Shindo.tests("Fog::AWS[:beanstalk] | environment", ['aws', 'beanstalk']) do
|
||||
|
||||
pending if Fog.mocking?
|
||||
|
||||
@beanstalk = Fog::AWS[:beanstalk]
|
||||
|
||||
@application_name = uniq_id('fog-test-app')
|
||||
@environment_name = uniq_id('fog-test-env')
|
||||
@version_names = []
|
||||
# Create two unique version names
|
||||
2.times {
|
||||
@version_names << uniq_id('fog-test-version')
|
||||
}
|
||||
|
||||
@application = @beanstalk.applications.create({:name => @application_name})
|
||||
|
||||
@versions = []
|
||||
@version_names.each { |name|
|
||||
@versions << @beanstalk.versions.create({
|
||||
:label => name,
|
||||
:application_name => @application_name,
|
||||
})
|
||||
}
|
||||
|
||||
@environment_opts = {
|
||||
:application_name => @application_name,
|
||||
:name => @environment_name,
|
||||
:version_label => @version_names[0],
|
||||
:solution_stack_name => '32bit Amazon Linux running Tomcat 7'
|
||||
}
|
||||
|
||||
# Note: These model tests can take quite a bit of time to run, about 10 minutes typically.
|
||||
model_tests(@beanstalk.environments, @environment_opts, false) do
|
||||
# Wait for initial ready before next tests.
|
||||
tests("#ready?").succeeds do
|
||||
@instance.wait_for { ready? }
|
||||
end
|
||||
|
||||
tests("#healthy?").succeeds do
|
||||
@instance.wait_for { healthy? }
|
||||
end
|
||||
|
||||
test("#events") do
|
||||
# There should be some events now.
|
||||
@instance.events.length > 0
|
||||
end
|
||||
|
||||
test("#version") do
|
||||
@instance.version.label == @version_names[0]
|
||||
end
|
||||
|
||||
test("#version= string") do
|
||||
# Set to version 2
|
||||
@instance.version = @version_names[1]
|
||||
|
||||
count = 0
|
||||
if @instance.version.label == @version_names[1]
|
||||
@instance.events.each { |event|
|
||||
if event.message == "Environment update is starting."
|
||||
count = count + 1
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
count == 1
|
||||
end
|
||||
|
||||
tests("#ready? after version= string").succeeds do
|
||||
@instance.wait_for { ready? }
|
||||
end
|
||||
|
||||
test("#version= version object") do
|
||||
# reset back to first version using version object
|
||||
@instance.version = @versions[0]
|
||||
|
||||
count = 0
|
||||
if @instance.version.label == @version_names[0]
|
||||
@instance.events.each { |event|
|
||||
if event.message == "Environment update is starting."
|
||||
count = count + 1
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
# Pass if we have two environment updating events
|
||||
count == 2
|
||||
end
|
||||
|
||||
tests("#ready? after version= version object").succeeds do
|
||||
@instance.wait_for { ready? }
|
||||
end
|
||||
|
||||
|
||||
test('#restart_app_server') do
|
||||
@instance.restart_app_server
|
||||
|
||||
passed = false
|
||||
@instance.events.each { |event|
|
||||
if event.message == "restartAppServer is starting."
|
||||
passed = true
|
||||
end
|
||||
}
|
||||
passed
|
||||
end
|
||||
|
||||
test('#rebuild') do
|
||||
@instance.rebuild
|
||||
passed = false
|
||||
@instance.events.each { |event|
|
||||
if event.message == "rebuildEnvironment is starting."
|
||||
passed = true
|
||||
end
|
||||
}
|
||||
passed
|
||||
end
|
||||
|
||||
# Wait for ready or next tests may fail
|
||||
tests("#ready? after rebuild").succeeds do
|
||||
@instance.wait_for { ready? }
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# Wait for instance to terminate before deleting application
|
||||
tests('#terminated?').succeeds do
|
||||
@instance.wait_for { terminated? }
|
||||
end
|
||||
|
||||
# delete application
|
||||
@application.destroy
|
||||
|
||||
end
|
|
@ -0,0 +1,34 @@
|
|||
Shindo.tests("Fog::AWS[:beanstalk] | environments", ['aws', 'beanstalk']) do
|
||||
|
||||
pending if Fog.mocking?
|
||||
|
||||
@beanstalk = Fog::AWS[:beanstalk]
|
||||
|
||||
@application_name = uniq_id('fog-test-app')
|
||||
@environment_name = uniq_id('fog-test-env')
|
||||
@version_name = uniq_id('fog-test-version')
|
||||
|
||||
# Create an application/version to use for testing.
|
||||
@version = @beanstalk.versions.create({
|
||||
:label => @version_name,
|
||||
:application_name => @application_name,
|
||||
:auto_create_application => true
|
||||
})
|
||||
|
||||
@application = @beanstalk.applications.get(@application_name)
|
||||
|
||||
@environment_opts = {
|
||||
:application_name => @application_name,
|
||||
:name => @environment_name,
|
||||
:version_label => @version_name,
|
||||
:solution_stack_name => '32bit Amazon Linux running Tomcat 7'
|
||||
}
|
||||
|
||||
collection_tests(@beanstalk.environments, @environment_opts, false)
|
||||
|
||||
# Wait for instance to terminate before deleting application
|
||||
@instance.wait_for { terminated? }
|
||||
# delete application
|
||||
@application.destroy
|
||||
|
||||
end
|
|
@ -0,0 +1,47 @@
|
|||
Shindo.tests("Fog::AWS[:beanstalk] | template", ['aws', 'beanstalk']) do
|
||||
|
||||
pending if Fog.mocking?
|
||||
|
||||
@beanstalk = Fog::AWS[:beanstalk]
|
||||
|
||||
@application_name = uniq_id('fog-test-app')
|
||||
@template_name = uniq_id('fog-test-template')
|
||||
|
||||
@template_description = 'A nice description'
|
||||
|
||||
@application = @beanstalk.applications.create({:name => @application_name})
|
||||
|
||||
@template_opts = {
|
||||
:application_name => @application_name,
|
||||
:name => @template_name,
|
||||
:description => @template_description,
|
||||
:solution_stack_name => '32bit Amazon Linux running Tomcat 7'
|
||||
}
|
||||
|
||||
model_tests(@beanstalk .templates, @template_opts, false) do
|
||||
|
||||
test("#attributes") do
|
||||
@instance.name == @template_name &&
|
||||
@instance.description == @template_description &&
|
||||
@instance.application_name == @application_name &&
|
||||
@instance.solution_stack_name == @template_opts[:solution_stack_name]
|
||||
end
|
||||
|
||||
test("#options") do
|
||||
options = @instance.options
|
||||
passed = false
|
||||
if options.each { |option|
|
||||
# See if we recognize at least one option
|
||||
if option["Name"] == 'LoadBalancerHTTPPort' && option["Namespace"] == 'aws:elb:loadbalancer'
|
||||
passed = true
|
||||
end
|
||||
}
|
||||
end
|
||||
passed
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# delete application
|
||||
@application.destroy
|
||||
end
|
|
@ -0,0 +1,62 @@
|
|||
Shindo.tests("Fog::AWS[:beanstalk] | templates", ['aws', 'beanstalk']) do
|
||||
|
||||
pending if Fog.mocking?
|
||||
|
||||
@beanstalk = Fog::AWS[:beanstalk]
|
||||
|
||||
@application_name = uniq_id('fog-test-app')
|
||||
@template_name = uniq_id('fog-test-template')
|
||||
|
||||
@template_description = 'A nice description'
|
||||
|
||||
@application = @beanstalk.applications.create({:name => @application_name})
|
||||
|
||||
params = {
|
||||
:application_name => @application_name,
|
||||
:name => @template_name,
|
||||
:description => @template_description,
|
||||
:solution_stack_name => '32bit Amazon Linux running Tomcat 7'
|
||||
}
|
||||
|
||||
collection = @beanstalk.templates
|
||||
|
||||
tests('success') do
|
||||
|
||||
tests("#new(#{params.inspect})").succeeds do
|
||||
pending if Fog.mocking?
|
||||
collection.new(params)
|
||||
end
|
||||
|
||||
tests("#create(#{params.inspect})").succeeds do
|
||||
pending if Fog.mocking?
|
||||
@instance = collection.create(params)
|
||||
end
|
||||
|
||||
tests("#all").succeeds do
|
||||
pending if Fog.mocking?
|
||||
collection.all
|
||||
end
|
||||
|
||||
tests("#get(#{@application_name}, #{@template_name})").succeeds do
|
||||
pending if Fog.mocking?
|
||||
collection.get(@application_name, @template_name)
|
||||
end
|
||||
|
||||
if !Fog.mocking?
|
||||
@instance.destroy
|
||||
end
|
||||
end
|
||||
|
||||
tests('failure') do
|
||||
|
||||
tests("#get(#{@application_name}, #{@template_name})").returns(nil) do
|
||||
pending if Fog.mocking?
|
||||
collection.get(@application_name, @template_name)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# delete application
|
||||
@application.destroy
|
||||
|
||||
end
|
|
@ -0,0 +1,66 @@
|
|||
Shindo.tests("Fog::AWS[:beanstalk] | version", ['aws', 'beanstalk']) do
|
||||
|
||||
pending if Fog.mocking?
|
||||
|
||||
@beanstalk = Fog::AWS[:beanstalk]
|
||||
|
||||
@application_name = uniq_id('fog-test-app')
|
||||
@version_name = uniq_id('fog-test-version')
|
||||
|
||||
@version_description = 'A nice description'
|
||||
|
||||
@application = @beanstalk.applications.create({:name => @application_name})
|
||||
|
||||
@version_opts = {
|
||||
:application_name => @application_name,
|
||||
:label => @version_name,
|
||||
:description => @version_description
|
||||
}
|
||||
|
||||
model_tests(@beanstalk.versions, @version_opts, false) do
|
||||
|
||||
test("attributes") do
|
||||
@instance.label == @version_name &&
|
||||
@instance.description == @version_description &&
|
||||
@instance.application_name == @application_name
|
||||
end
|
||||
|
||||
test("#events") do
|
||||
# There should be some events now.
|
||||
@instance.events.length > 0
|
||||
end
|
||||
|
||||
test("#update description") do
|
||||
new_description = "A completely new description."
|
||||
@instance.description = new_description
|
||||
@instance.update
|
||||
|
||||
passed = false
|
||||
if @instance.description == new_description
|
||||
# reload version from AWS to verify save is committed to server, not just on local object
|
||||
if @beanstalk.versions.get(@application_name, @version_name).description == new_description
|
||||
passed = true
|
||||
end
|
||||
end
|
||||
passed
|
||||
end
|
||||
|
||||
test("#update description empty") do
|
||||
@instance.description = '' # Set to empty to nil out
|
||||
@instance.update
|
||||
|
||||
passed = false
|
||||
if @instance.description == nil
|
||||
# reload version from AWS to verify save is committed to server, not just on local object
|
||||
if @beanstalk.versions.get(@application_name, @version_name).description == nil
|
||||
passed = true
|
||||
end
|
||||
end
|
||||
passed
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# delete application
|
||||
@application.destroy
|
||||
end
|
|
@ -0,0 +1,61 @@
|
|||
Shindo.tests("Fog::AWS[:beanstalk] | versions", ['aws', 'beanstalk']) do
|
||||
|
||||
pending if Fog.mocking?
|
||||
|
||||
@beanstalk = Fog::AWS[:beanstalk]
|
||||
|
||||
@application_name = uniq_id('fog-test-app')
|
||||
@version_name = uniq_id('fog-test-version')
|
||||
|
||||
@version_description = 'A nice description'
|
||||
|
||||
@application = @beanstalk.applications.create({:name => @application_name})
|
||||
|
||||
params = {
|
||||
:application_name => @application_name,
|
||||
:label => @version_name,
|
||||
:description => @version_description
|
||||
}
|
||||
|
||||
collection = @beanstalk.versions
|
||||
|
||||
tests('success') do
|
||||
|
||||
tests("#new(#{params.inspect})").succeeds do
|
||||
pending if Fog.mocking?
|
||||
collection.new(params)
|
||||
end
|
||||
|
||||
tests("#create(#{params.inspect})").succeeds do
|
||||
pending if Fog.mocking?
|
||||
@instance = collection.create(params)
|
||||
end
|
||||
|
||||
tests("#all").succeeds do
|
||||
pending if Fog.mocking?
|
||||
collection.all
|
||||
end
|
||||
|
||||
tests("#get(#{@application_name}, #{@version_name})").succeeds do
|
||||
pending if Fog.mocking?
|
||||
collection.get(@application_name, @version_name)
|
||||
end
|
||||
|
||||
if !Fog.mocking?
|
||||
@instance.destroy
|
||||
end
|
||||
end
|
||||
|
||||
tests('failure') do
|
||||
|
||||
tests("#get(#{@application_name}, #{@version_name})").returns(nil) do
|
||||
pending if Fog.mocking?
|
||||
collection.get(@application_name, @version_name)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
# delete application
|
||||
@application.destroy
|
||||
end
|
|
@ -0,0 +1,140 @@
|
|||
Shindo.tests('AWS::ElasticBeanstalk | application_tests', ['aws', 'beanstalk']) do
|
||||
|
||||
def unique_name(prefix)
|
||||
#get time (with 1/100th of sec accuracy)
|
||||
#want unique domain name and if provider is fast, this can be called more than once per second
|
||||
time = Time.now.to_i.to_s
|
||||
prefix + time
|
||||
end
|
||||
|
||||
unless Fog.mocking?
|
||||
@beanstalk = Fog::AWS[:beanstalk]
|
||||
end
|
||||
|
||||
@test_description = "A unique description."
|
||||
|
||||
@test_app_name = unique_name("fog-test-app-")
|
||||
|
||||
tests('success') do
|
||||
pending if Fog.mocking?
|
||||
|
||||
@describe_applications_format = {
|
||||
'DescribeApplicationsResult' => {
|
||||
'Applications' => [
|
||||
'ApplicationName' => String,
|
||||
'ConfigurationTemplates' => [String],
|
||||
'Description' => Fog::Nullable::String,
|
||||
'DateCreated' => Time,
|
||||
'DateUpdated' => Time,
|
||||
'Versions' => [String]
|
||||
]},
|
||||
'ResponseMetadata' => {'RequestId'=> String},
|
||||
}
|
||||
|
||||
tests("#describe_applications format").formats(@describe_applications_format) do
|
||||
result = @beanstalk.describe_applications.body
|
||||
end
|
||||
|
||||
test("#create_application") {
|
||||
response = @beanstalk.create_application({
|
||||
'ApplicationName' => @test_app_name,
|
||||
'Description' => @test_description
|
||||
})
|
||||
|
||||
result = false
|
||||
if response.status == 200
|
||||
|
||||
app_info = response.body['CreateApplicationResult']['Application']
|
||||
if app_info
|
||||
if app_info['ApplicationName'] == @test_app_name &&
|
||||
app_info['Description'] == @test_description &&
|
||||
app_info['ConfigurationTemplates'].empty? &&
|
||||
app_info['Versions'].empty?
|
||||
result = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
test("#describe_applications all") {
|
||||
response = @beanstalk.describe_applications
|
||||
|
||||
result = false
|
||||
if response.status == 200
|
||||
apps = response.body['DescribeApplicationsResult']['Applications']
|
||||
apps.each { |app_info|
|
||||
if app_info
|
||||
if app_info['ApplicationName'] == @test_app_name &&
|
||||
app_info['Description'] == @test_description &&
|
||||
app_info['ConfigurationTemplates'].empty? &&
|
||||
app_info['Versions'].empty?
|
||||
result = true
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
test("#create_application filter") {
|
||||
# Test for a specific app
|
||||
response = @beanstalk.describe_applications([@test_app_name])
|
||||
|
||||
result = false
|
||||
if response.status == 200
|
||||
apps = response.body['DescribeApplicationsResult']['Applications']
|
||||
if apps && apps.length == 1
|
||||
app_info = apps.first
|
||||
if app_info['ApplicationName'] == @test_app_name &&
|
||||
app_info['Description'] == @test_description &&
|
||||
app_info['ConfigurationTemplates'].empty? &&
|
||||
app_info['Versions'].empty?
|
||||
result = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
test("#update_application description") {
|
||||
|
||||
@test_description = "A completely new description."
|
||||
|
||||
response = @beanstalk.update_application({
|
||||
'ApplicationName' => @test_app_name,
|
||||
'Description' => @test_description
|
||||
})
|
||||
|
||||
result = false
|
||||
if response.status == 200
|
||||
app_info = response.body['UpdateApplicationResult']['Application']
|
||||
if app_info
|
||||
if app_info['ApplicationName'] == @test_app_name &&
|
||||
app_info['Description'] == @test_description &&
|
||||
app_info['ConfigurationTemplates'].empty? &&
|
||||
app_info['Versions'].empty?
|
||||
result = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
test("#delete_application") {
|
||||
response = @beanstalk.delete_application(@test_app_name)
|
||||
|
||||
result = false
|
||||
if response.status == 200
|
||||
result = true
|
||||
end
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
end
|
||||
end
|
|
@ -0,0 +1,22 @@
|
|||
Shindo.tests('AWS::ElasticBeanstalk | solution_stack_tests', ['aws', 'beanstalk']) do
|
||||
|
||||
tests('success') do
|
||||
pending if Fog.mocking?
|
||||
|
||||
@solution_stack_result_format = {
|
||||
'ListAvailableSolutionStacksResult' => {
|
||||
'SolutionStackDetails' => [
|
||||
'SolutionStackName' => String,
|
||||
'PermittedFileTypes' => [String]
|
||||
],
|
||||
'SolutionStacks' => [String]
|
||||
},
|
||||
'ResponseMetadata' => {'RequestId'=> String},
|
||||
}
|
||||
tests("#list_available_solution_stacks").formats(@solution_stack_result_format) do
|
||||
Fog::AWS[:beanstalk].list_available_solution_stacks.body
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue