#789: account fields
This commit is contained in:
parent
f452b1aa32
commit
8d0cd797a2
@ -20,6 +20,10 @@ module Devops
|
||||
::Provider::ProviderFactory.get(provider).accounts
|
||||
end
|
||||
|
||||
def account_fields provider
|
||||
::Provider::ProviderFactory.get_account_class(provider).account_fields
|
||||
end
|
||||
|
||||
def add_account provider
|
||||
account = ::Provider::ProviderFactory.get(provider).create_account(parser.account)
|
||||
key = Devops::Db.connector.key account.ssh_key
|
||||
|
||||
@ -26,6 +26,22 @@ module Devops
|
||||
json Devops::API2_0::Handler::Provider.new(request).providers
|
||||
end
|
||||
|
||||
# Get list of provider account fields
|
||||
#
|
||||
# * *Request*
|
||||
# - method : GET
|
||||
# - headers :
|
||||
# - Accept: application/json
|
||||
#
|
||||
# * *Returns* : hash
|
||||
# key - field
|
||||
# value - description
|
||||
app.get_with_headers "/provider/:provider/account/fields", :headers => [:accept] do |provider|
|
||||
check_privileges("provider", "r")
|
||||
check_provider(provider)
|
||||
json Devops::API2_0::Handler::Provider.new(request).account_fields(provider)
|
||||
end
|
||||
|
||||
# Get list of provider accounts
|
||||
#
|
||||
# * *Request*
|
||||
|
||||
@ -34,6 +34,14 @@ module Devops
|
||||
Ec2ProviderAccount.new a
|
||||
end
|
||||
|
||||
def self.account_fields
|
||||
{
|
||||
access_key_id: "AWS account access key",
|
||||
secret_access_key: "AWS account secret key",
|
||||
availability_zone: "Availability zone, todo: remove field?"
|
||||
}.merge(ProviderAccount::ACCOUNT_FIELDS)
|
||||
end
|
||||
|
||||
# TODO: remove
|
||||
def validate_fields_types
|
||||
|
||||
|
||||
@ -6,6 +6,15 @@ module Devops
|
||||
|
||||
attr_accessor :username, :auth_url, :tenant, :api_key
|
||||
|
||||
def self.account_fields
|
||||
{
|
||||
username: "Openstack user name",
|
||||
auth_url: "Identity API endpoint",
|
||||
tenant: "Tenant to access",
|
||||
api_key: "Openstack user password"
|
||||
}.merge(ProviderAccount::ACCOUNT_FIELDS)
|
||||
end
|
||||
|
||||
def initialize a={}
|
||||
super(a)
|
||||
self.username = a["username"]
|
||||
|
||||
@ -7,14 +7,19 @@ module Devops
|
||||
|
||||
include ModelWithProvider
|
||||
|
||||
attr_accessor :account_name, :description, :ssh_key, :certificate
|
||||
attr_accessor :account_name, :description, :ssh_key
|
||||
|
||||
ACCOUNT_FIELDS = {
|
||||
account_name: "Account name (id)",
|
||||
description: "Account description",
|
||||
ssh_key: "Ssh key id"
|
||||
}
|
||||
|
||||
def initialize a={}
|
||||
self.account_name = a["account_name"]
|
||||
self.description = a["description"]
|
||||
self.ssh_key = a["ssh_key"]
|
||||
self.provider = a["provider"]
|
||||
self.certificate = a["certificate"]
|
||||
self.created_at = a["created_at"]
|
||||
end
|
||||
|
||||
@ -28,7 +33,6 @@ module Devops
|
||||
"description" => self.description,
|
||||
"ssh_key" => self.ssh_key,
|
||||
"provider" => self.provider,
|
||||
"certificate" => self.certificate,
|
||||
"created_at" => self.created_at
|
||||
}
|
||||
end
|
||||
@ -38,8 +42,7 @@ module Devops
|
||||
"_id" => self.account_name,
|
||||
"description" => self.description,
|
||||
"ssh_key" => self.ssh_key,
|
||||
"provider" => self.provider,
|
||||
"certificate" => self.certificate
|
||||
"provider" => self.provider
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@ -9,6 +9,9 @@ module Devops
|
||||
StaticProviderAccount.new a
|
||||
end
|
||||
|
||||
def self.account_fields
|
||||
ProviderAccount::ACCOUNT_FIELDS
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -8,11 +8,11 @@ module Provider
|
||||
create_connection_from_account(config, account)
|
||||
puts "\tFound ec2 account '#{account.account_name}'"
|
||||
end
|
||||
ProviderFactory.add_provider Ec2::PROVIDER unless @connections.empty?
|
||||
end
|
||||
|
||||
def create_connection_from_account config, 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,
|
||||
|
||||
@ -3,11 +3,12 @@ require "sinatra"
|
||||
module Provider
|
||||
module ProviderFactory
|
||||
|
||||
@@available_providers = []
|
||||
@@providers = {}
|
||||
@@providers_with_accounts_factories = {}
|
||||
|
||||
def self.providers
|
||||
@@providers.keys
|
||||
@@available_providers
|
||||
end
|
||||
|
||||
def self.get provider, account=nil
|
||||
@ -25,6 +26,10 @@ module Provider
|
||||
@@providers.values
|
||||
end
|
||||
|
||||
def self.add_provider provider
|
||||
@@available_providers << provider unless @@available_providers.include?(provider)
|
||||
end
|
||||
|
||||
def self.init conf
|
||||
# require providers here to get access to debug properties
|
||||
require_all
|
||||
@ -34,6 +39,7 @@ module Provider
|
||||
o = Provider.const_get(p.capitalize).new(conf)
|
||||
if o.configured?
|
||||
@@providers[p] = o
|
||||
@@available_providers << p
|
||||
puts "Provider '#{p}' has been loaded"
|
||||
end
|
||||
factory = Provider.const_get(p.capitalize + "AccountsFactory").new
|
||||
|
||||
Loading…
Reference in New Issue
Block a user