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