fluke/devops-service/app/api2/handlers/provider.rb
2015-10-28 14:16:56 +03:00

50 lines
1.7 KiB
Ruby

require "app/api2/parsers/provider"
require "providers/provider_factory"
require_relative "request_handler"
require "db/mongo/models/provider_accounts/static_provider_account"
require "db/mongo/models/provider_accounts/openstack_provider_account"
require "db/mongo/models/provider_accounts/ec2_provider_account"
module Devops
module API2_0
module Handler
class Provider < RequestHandler
set_parser Devops::API2_0::Parser::ProviderParser
def providers
::Provider::ProviderFactory.providers
end
def accounts provider
::Provider::ProviderFactory.get(provider).accounts
end
def add_account provider
account = ::Provider::ProviderFactory.get(provider).create_account(parser.account)
certificate_content = account.certificate
cert_name = "#{account.account_name}.pem"
certificate_path = File.join(Devops::Api2.settings.keys_dir, cert_name)
if File.exists?(certificate_path)
raise ConflictException.new("File '#{cert_name}' already exists")
end
File.open(certificate_path, "w") do |f|
f << certificate_content
end
File.chmod(0600, certificate_path)
DevopsLogger.logger.info("File '#{certificate_path}' for provider account '#{account.account_name}' has been created")
key = Devops::Model::Key.new({"id" => account.ssh_key, "path" => certificate_path, "scope" => Devops::Model::Key::SYSTEM})
Devops::Db.connector.key_insert key
account.certificate = certificate_path
Devops::Db.connector.provider_accounts_insert(account)
account
end
def delete_account name, provider
end
end
end
end
end