63 lines
1.8 KiB
Ruby
63 lines
1.8 KiB
Ruby
require_relative "provider"
|
|
require_relative "aws/aws_connector"
|
|
require_relative "aws/aws_provider_account"
|
|
require_relative "aws/server_category_provider_aws"
|
|
require_relative "aws/stack_category_provider_aws"
|
|
|
|
module Provider
|
|
class Aws < AbstractProvider
|
|
|
|
PROVIDER = "aws"
|
|
|
|
def name
|
|
PROVIDER
|
|
end
|
|
|
|
def create_connector config, account
|
|
options = {
|
|
#aws_ssh_key: account.ssh_key,
|
|
aws_access_key_id: account.access_key_id,
|
|
aws_secret_access_key: account.secret_access_key,
|
|
aws_use_iam_profile: account.use_iam_profile,
|
|
aws_availability_zone: account.availability_zone,
|
|
storage_bucket_name: account.storage_bucket_name,
|
|
|
|
aws_proxy: config[:aws_proxy],
|
|
aws_no_proxy: config[:aws_no_proxy],
|
|
aws_integration_run_list: config[:aws_integration_run_list]
|
|
}
|
|
add_connector(account.account_name, AwsConnector.new(options))
|
|
end
|
|
|
|
def create_account hash
|
|
Devops::Model::AwsProviderAccount.new(hash)
|
|
end
|
|
|
|
def create_category_provider hash
|
|
category = case hash["type"]
|
|
when Devops::Model::CategoryProvider::SERVER_TYPE
|
|
Devops::Model::ServerCategoryProviderAws.new(hash)
|
|
when Devops::Model::CategoryProvider::STACK_TYPE
|
|
Devops::Model::StackCategoryProviderAws.new(hash)
|
|
else
|
|
raise "Invalid category type: '#{hash['type']}'"
|
|
end
|
|
if DevopsLogger.logger.debug?
|
|
DevopsLogger.logger.debug("Created aws category provider: #{category.to_hash.inspect}")
|
|
end
|
|
category
|
|
end
|
|
|
|
def account name
|
|
Devops::Model::AwsProviderAccount.find(name)
|
|
end
|
|
|
|
def accounts
|
|
Devops::Model::AwsProviderAccount.all
|
|
end
|
|
end
|
|
|
|
register Aws
|
|
|
|
end
|