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