fluke/devops-service/commands/server.rb

53 lines
1.6 KiB
Ruby
Raw Normal View History

2015-08-05 14:05:14 +03:00
require 'set'
2014-05-08 15:34:26 +04:00
require "commands/knife_commands"
2014-11-20 15:08:42 +03:00
require "commands/deploy"
2015-07-16 17:18:55 +03:00
require "exceptions/record_not_found"
2014-05-08 15:34:26 +04:00
module ServerCommands
2014-11-20 15:08:42 +03:00
include DeployCommands
2015-08-05 14:05:14 +03:00
def create_server project, env, params, user, out
provider = ::Provider::ProviderFactory.get(env.provider)
mongo = ::Devops::Db.connector
begin
out << "Create server...\n"
out.flush if out.respond_to?(:flush)
s = Devops::Model::Server.new
s.provider = provider.name
s.project = project.id
s.deploy_env = env.identifier
s.run_list = params["run_list"] || []
s.chef_node_name = params["name"]
s.key = params["key"] || provider.ssh_key
i = mongo.image env.image
s.remote_user = i.remote_user
s.created_by = user
return 3 unless s.create(provider, env.image, env.flavor, env.subnets, env.groups, out)
out.flush if out.respond_to?(:flush)
DevopsLogger.logger.info "Server with parameters: #{s.to_hash.inspect} is running"
unless params["without_bootstrap"]
s.run_list = Set.new.merge(project.run_list).merge(env.run_list).merge(s.run_list)
2014-10-22 15:01:55 +04:00
key = mongo.key(s.key)
s.chef_node_name = provider.create_default_chef_node_name(s) if s.chef_node_name.nil?
2015-08-11 19:47:54 +03:00
options = {
bootstrap_template: i.bootstrap_template,
cert_path: key.path
}
return two_phase_bootstrap(s, options, out)
2015-08-05 14:05:14 +03:00
else
return 0
2014-10-22 15:01:55 +04:00
end
2015-08-05 14:05:14 +03:00
rescue => e
DevopsLogger.logger.error e.message
DevopsLogger.logger.warn roll_back(s, provider)
mongo.server_delete s.id
return 5
2014-10-22 15:01:55 +04:00
end
end
2014-05-08 15:34:26 +04:00
end