#789: providers accounts factories
This commit is contained in:
parent
e2d49e066f
commit
80b22f8a4d
@ -4,18 +4,20 @@ module Devops
|
|||||||
module Model
|
module Model
|
||||||
class Ec2ProviderAccount < ProviderAccount
|
class Ec2ProviderAccount < ProviderAccount
|
||||||
|
|
||||||
attr_accessor :access_key_id, :availability_zone
|
attr_accessor :access_key_id, :availability_zone, :secret_access_key
|
||||||
|
|
||||||
def initialize a={}
|
def initialize a={}
|
||||||
super(a)
|
super(a)
|
||||||
self.provider = Provider::Ec2::PROVIDER
|
self.provider = Provider::Ec2::PROVIDER
|
||||||
self.availability_zone = a["availability_zone"]
|
self.availability_zone = a["availability_zone"]
|
||||||
self.access_key_id = a["access_key_id"]
|
self.access_key_id = a["access_key_id"]
|
||||||
|
self.secret_access_key = a["secret_access_key"]
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_list_hash
|
def to_list_hash
|
||||||
s = super
|
s = super
|
||||||
s["availability_zone"] = self.availability_zone
|
s["availability_zone"] = self.availability_zone
|
||||||
|
s["access_key_id"] = self.access_key_id
|
||||||
s
|
s
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -23,6 +25,7 @@ module Devops
|
|||||||
s = super
|
s = super
|
||||||
s["availability_zone"] = self.availability_zone
|
s["availability_zone"] = self.availability_zone
|
||||||
s["access_key_id"] = self.access_key_id
|
s["access_key_id"] = self.access_key_id
|
||||||
|
s["secret_access_key"] = self.secret_access_key
|
||||||
s
|
s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,13 @@
|
|||||||
module Provider
|
module Provider
|
||||||
class ConnectionFactory
|
class AccountsFactory
|
||||||
|
|
||||||
def init config
|
def init config
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# providers instances
|
||||||
def connection account_name
|
def connection account_name
|
||||||
@connections[account_name] || @from_config
|
@connections[account_name]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1,7 +1,7 @@
|
|||||||
require "exceptions/conflict_exception"
|
require "exceptions/conflict_exception"
|
||||||
require "providers/base_provider"
|
require "providers/base_provider"
|
||||||
require "db/mongo/models/provider_accounts/ec2_provider_account"
|
require "db/mongo/models/provider_accounts/ec2_provider_account"
|
||||||
require_relative "ec2_connection_factory"
|
require_relative "ec2_accounts_factory"
|
||||||
|
|
||||||
module Provider
|
module Provider
|
||||||
# Provider for Amazon EC2
|
# 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
|
module ProviderFactory
|
||||||
|
|
||||||
@@providers = {}
|
@@providers = {}
|
||||||
|
@@providers_with_accounts_factories = {}
|
||||||
|
|
||||||
def self.providers
|
def self.providers
|
||||||
@@providers.keys
|
@@providers.keys
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.get provider
|
def self.get provider, account=nil
|
||||||
p = @@providers[provider]
|
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?
|
raise ::Sinatra::NotFound.new("Provider #{provider} not found") if p.nil?
|
||||||
p
|
p
|
||||||
end
|
end
|
||||||
@ -30,6 +35,9 @@ module Provider
|
|||||||
@@providers[p] = o
|
@@providers[p] = o
|
||||||
puts "Provider '#{p}' has been loaded"
|
puts "Provider '#{p}' has been loaded"
|
||||||
end
|
end
|
||||||
|
factory = Provider.const_get(p.capitalize + "AccountsFactory").new
|
||||||
|
factory.init(conf)
|
||||||
|
@@providers_with_accounts_factories[p] = factory
|
||||||
rescue => e
|
rescue => e
|
||||||
puts "Error while loading provider '#{p}': " + e.message
|
puts "Error while loading provider '#{p}': " + e.message
|
||||||
next
|
next
|
||||||
@ -41,6 +49,7 @@ module Provider
|
|||||||
["ec2", "openstack", "static"].each do |provider|
|
["ec2", "openstack", "static"].each do |provider|
|
||||||
begin
|
begin
|
||||||
require_relative provider
|
require_relative provider
|
||||||
|
require_relative provider + "_accounts_factory"
|
||||||
rescue LoadError => e
|
rescue LoadError => e
|
||||||
puts "Can not load provider '#{provider}': " + e.message
|
puts "Can not load provider '#{provider}': " + e.message
|
||||||
end
|
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