#789: create server and stack with provider account
This commit is contained in:
parent
80b22f8a4d
commit
2dbc20a47f
@ -25,7 +25,10 @@ module Devops
|
||||
raise InvalidRecord.new("Environment '#{env.identifier}' of project '#{project.id}' has no stack template") if env.stack_template.nil?
|
||||
object["stack_template"] = env.stack_template
|
||||
object["owner"] = parser.current_user
|
||||
object["provider"] = env.provider
|
||||
object["provider_account"] = env.provider_account
|
||||
|
||||
# TODO: without provider_name
|
||||
uri = Worker.start_async(StackBootstrapWorker, @request,
|
||||
provider_name: env.provider,
|
||||
stack_attributes: object
|
||||
|
||||
@ -24,6 +24,7 @@ module Devops
|
||||
:groups => {:type => Array, :empty => false},
|
||||
:stack_template => {:type => String, :empty => false, :nil => true}
|
||||
|
||||
#TODO: account validator
|
||||
set_validators ::Validators::DeployEnv::Flavor,
|
||||
::Validators::DeployEnv::Image,
|
||||
::Validators::DeployEnv::SubnetNotEmpty,
|
||||
|
||||
@ -19,10 +19,10 @@ module Devops
|
||||
|
||||
def initialize d={}
|
||||
self.identifier = d["identifier"]
|
||||
set_provider(d)
|
||||
b = d["run_list"] || []
|
||||
self.run_list = b.uniq
|
||||
self.expires = d["expires"]
|
||||
self.provider = d["provider"]
|
||||
b = d["users"] || []
|
||||
self.users = b.uniq
|
||||
end
|
||||
@ -32,9 +32,8 @@ module Devops
|
||||
"identifier" => self.identifier,
|
||||
"run_list" => self.run_list,
|
||||
"expires" => self.expires,
|
||||
"provider" => self.provider,
|
||||
"users" => self.users
|
||||
}
|
||||
}.merge(provider_hash)
|
||||
end
|
||||
|
||||
def add_users users
|
||||
|
||||
@ -4,11 +4,24 @@ module Devops
|
||||
module Model
|
||||
module ModelWithProvider
|
||||
|
||||
attr_accessor :provider
|
||||
attr_accessor :provider, :provider_account
|
||||
|
||||
def provider_instance
|
||||
@provider_instance ||= Provider::ProviderFactory.get(self.provider)
|
||||
@provider_instance ||= Provider::ProviderFactory.get(self.provider, self.provider_account)
|
||||
end
|
||||
|
||||
def set_provider hash
|
||||
self.provider = hash["provider"]
|
||||
self.provider_account = hash["provider_account"]
|
||||
end
|
||||
|
||||
def provider_hash
|
||||
{
|
||||
"provider" => self.provider,
|
||||
"provider_account" => self.provider_account
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -33,7 +33,7 @@ module Devops
|
||||
end
|
||||
|
||||
def initialize s={}
|
||||
self.provider = s["provider"]
|
||||
self.set_provider(s)
|
||||
self.chef_node_name = s["chef_node_name"]
|
||||
self.id = s["_id"]
|
||||
self.remote_user = s["remote_user"]
|
||||
@ -66,7 +66,6 @@ module Devops
|
||||
|
||||
def to_hash_without_id
|
||||
{
|
||||
"provider" => self.provider,
|
||||
"chef_node_name" => self.chef_node_name,
|
||||
"remote_user" => self.remote_user,
|
||||
"project" => self.project,
|
||||
@ -79,7 +78,7 @@ module Devops
|
||||
"reserved_by" => self.reserved_by,
|
||||
"stack" => stack,
|
||||
"run_list" => self.run_list
|
||||
}.delete_if { |k,v| v.nil? }
|
||||
}.merge(provider_hash).delete_if { |k,v| v.nil? }
|
||||
end
|
||||
|
||||
def self.build_from_bson s
|
||||
@ -98,7 +97,7 @@ module Devops
|
||||
end
|
||||
|
||||
def static?
|
||||
(self.provider == Provider::Static::PROVIDER) || false
|
||||
self.provider == Provider::Static::PROVIDER
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@ -21,7 +21,7 @@ module Devops
|
||||
|
||||
def initialize attrs={}
|
||||
# self.provider = self.class.provider
|
||||
|
||||
self.set_provider(attrs)
|
||||
self.id = attrs['id']
|
||||
self.project = attrs['project']
|
||||
self.deploy_env = attrs['deploy_env']
|
||||
@ -36,7 +36,6 @@ module Devops
|
||||
|
||||
def to_hash_without_id
|
||||
{
|
||||
provider: provider,
|
||||
project: project,
|
||||
deploy_env: deploy_env,
|
||||
stack_template: stack_template,
|
||||
@ -46,7 +45,7 @@ module Devops
|
||||
details: bson_safe_details,
|
||||
stack_status: stack_status,
|
||||
owner: owner
|
||||
}
|
||||
}.merge(provider_hash)
|
||||
end
|
||||
|
||||
# overrided in ec2
|
||||
@ -106,6 +105,8 @@ module Devops
|
||||
# - id (String)
|
||||
# - deploy_env (String)
|
||||
# - stack_template (String)
|
||||
# - provider (String)
|
||||
# - provider_account (String)
|
||||
def create(attrs, out)
|
||||
model = new(attrs)
|
||||
model.create_stack_in_cloud!(out)
|
||||
|
||||
@ -74,11 +74,11 @@ module Devops
|
||||
end
|
||||
|
||||
def create_server options
|
||||
@server = Devops::Model::Server.new({"project" => @project.id, "deploy_env" => @deploy_env.identifier, "created_by" => options["created_by"], "provider" => @deploy_env.provider})
|
||||
provider = @server.provider_instance
|
||||
@server = Devops::Model::Server.new({"project" => @project.id, "deploy_env" => @deploy_env.identifier, "created_by" => options["created_by"], "provider" => @deploy_env.provider, "provider_account" => @deploy_env.provider_account})
|
||||
provider = @deploy_env.provider_instance
|
||||
mongo = ::Devops::Db.connector
|
||||
begin
|
||||
@out << "Create server...\n"
|
||||
@out.puts "Create server..."
|
||||
@out.flush
|
||||
|
||||
@server.run_list = options["run_list"] || []
|
||||
|
||||
@ -16,6 +16,7 @@ module Provider
|
||||
else
|
||||
@@providers_with_accounts_factories[provider].connection(account)
|
||||
end
|
||||
# TODO: new exception
|
||||
raise ::Sinatra::NotFound.new("Provider #{provider} not found") if p.nil?
|
||||
p
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user