#789: providers accounts factories
This commit is contained in:
parent
e2d49e066f
commit
80b22f8a4d
@ -4,18 +4,20 @@ module Devops
|
||||
module Model
|
||||
class Ec2ProviderAccount < ProviderAccount
|
||||
|
||||
attr_accessor :access_key_id, :availability_zone
|
||||
attr_accessor :access_key_id, :availability_zone, :secret_access_key
|
||||
|
||||
def initialize a={}
|
||||
super(a)
|
||||
self.provider = Provider::Ec2::PROVIDER
|
||||
self.availability_zone = a["availability_zone"]
|
||||
self.access_key_id = a["access_key_id"]
|
||||
self.secret_access_key = a["secret_access_key"]
|
||||
end
|
||||
|
||||
def to_list_hash
|
||||
s = super
|
||||
s["availability_zone"] = self.availability_zone
|
||||
s["access_key_id"] = self.access_key_id
|
||||
s
|
||||
end
|
||||
|
||||
@ -23,6 +25,7 @@ module Devops
|
||||
s = super
|
||||
s["availability_zone"] = self.availability_zone
|
||||
s["access_key_id"] = self.access_key_id
|
||||
s["secret_access_key"] = self.secret_access_key
|
||||
s
|
||||
end
|
||||
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
module Provider
|
||||
class ConnectionFactory
|
||||
class AccountsFactory
|
||||
|
||||
def init config
|
||||
|
||||
end
|
||||
|
||||
# providers instances
|
||||
def connection account_name
|
||||
@connections[account_name] || @from_config
|
||||
@connections[account_name]
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -1,7 +1,7 @@
|
||||
require "exceptions/conflict_exception"
|
||||
require "providers/base_provider"
|
||||
require "db/mongo/models/provider_accounts/ec2_provider_account"
|
||||
require_relative "ec2_connection_factory"
|
||||
require_relative "ec2_accounts_factory"
|
||||
|
||||
module Provider
|
||||
# Provider for Amazon EC2
|
||||
|
||||
26
devops-service/providers/ec2_accounts_factory.rb
Normal file
26
devops-service/providers/ec2_accounts_factory.rb
Normal file
@ -0,0 +1,26 @@
|
||||
require_relative "accounts_factory"
|
||||
module Provider
|
||||
class Ec2AccountsFactory < AccountsFactory
|
||||
|
||||
def init config
|
||||
@connections = {}
|
||||
Devops::Db.connector.provider_accounts(Ec2::PROVIDER).each do |account|
|
||||
options = {
|
||||
aws_certificate: account.certificate,
|
||||
aws_ssh_key: account.ssh_key,
|
||||
aws_access_key_id: account.access_key_id,
|
||||
aws_secret_access_key: account.secret_access_key,
|
||||
aws_availability_zone: account.availability_zone,
|
||||
|
||||
aws_proxy: config[:aws_proxy],
|
||||
aws_no_proxy: config[:aws_no_proxy],
|
||||
aws_integration_run_list: config[:aws_integration_run_list]
|
||||
}
|
||||
@connections[account.account_name] = Ec2.new(options)
|
||||
#DevopsLogger.logger.info("Found ec2 account '#{account.account_name}'")
|
||||
puts "\tFound ec2 account '#{account.account_name}'"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@ -1,13 +0,0 @@
|
||||
require_relative "connection_factory"
|
||||
module Provider
|
||||
class Ec2ConnectionFactory < ConnectionFactory
|
||||
|
||||
def init
|
||||
|
||||
end
|
||||
|
||||
def connection account_name
|
||||
@connections
|
||||
end
|
||||
end
|
||||
end
|
||||
6
devops-service/providers/openstack_accounts_factory.rb
Normal file
6
devops-service/providers/openstack_accounts_factory.rb
Normal file
@ -0,0 +1,6 @@
|
||||
require_relative "accounts_factory"
|
||||
module Provider
|
||||
class OpenstackAccountsFactory < AccountsFactory
|
||||
|
||||
end
|
||||
end
|
||||
@ -4,13 +4,18 @@ module Provider
|
||||
module ProviderFactory
|
||||
|
||||
@@providers = {}
|
||||
@@providers_with_accounts_factories = {}
|
||||
|
||||
def self.providers
|
||||
@@providers.keys
|
||||
end
|
||||
|
||||
def self.get provider
|
||||
p = @@providers[provider]
|
||||
def self.get provider, account=nil
|
||||
p = if account.nil?
|
||||
@@providers[provider]
|
||||
else
|
||||
@@providers_with_accounts_factories[provider].connection(account)
|
||||
end
|
||||
raise ::Sinatra::NotFound.new("Provider #{provider} not found") if p.nil?
|
||||
p
|
||||
end
|
||||
@ -30,6 +35,9 @@ module Provider
|
||||
@@providers[p] = o
|
||||
puts "Provider '#{p}' has been loaded"
|
||||
end
|
||||
factory = Provider.const_get(p.capitalize + "AccountsFactory").new
|
||||
factory.init(conf)
|
||||
@@providers_with_accounts_factories[p] = factory
|
||||
rescue => e
|
||||
puts "Error while loading provider '#{p}': " + e.message
|
||||
next
|
||||
@ -41,6 +49,7 @@ module Provider
|
||||
["ec2", "openstack", "static"].each do |provider|
|
||||
begin
|
||||
require_relative provider
|
||||
require_relative provider + "_accounts_factory"
|
||||
rescue LoadError => e
|
||||
puts "Can not load provider '#{provider}': " + e.message
|
||||
end
|
||||
|
||||
6
devops-service/providers/static_accounts_factory.rb
Normal file
6
devops-service/providers/static_accounts_factory.rb
Normal file
@ -0,0 +1,6 @@
|
||||
require_relative "accounts_factory"
|
||||
module Provider
|
||||
class StaticAccountsFactory < AccountsFactory
|
||||
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue
Block a user