hooks in executor
This commit is contained in:
parent
6fb077903d
commit
9fece78466
@ -2,9 +2,10 @@ require 'rufus-scheduler'
|
||||
require "uri"
|
||||
|
||||
require "commands/status"
|
||||
require "commands/server"
|
||||
#require "commands/server"
|
||||
require "commands/bootstrap_templates"
|
||||
|
||||
require "lib/executors/server_executor"
|
||||
require "providers/provider_factory"
|
||||
|
||||
require "db/mongo/models/server"
|
||||
@ -22,7 +23,7 @@ module Devops
|
||||
set_parser Devops::API2_0::Parser::ServerParser
|
||||
|
||||
extend StatusCommands
|
||||
extend ServerCommands
|
||||
# extend ServerCommands
|
||||
extend BootstrapTemplatesCommands
|
||||
|
||||
scheduler = Rufus::Scheduler.new
|
||||
@ -51,10 +52,14 @@ module Devops
|
||||
delete_server(s, Devops::Db.connector, DevopsLogger.logger)
|
||||
end
|
||||
|
||||
def create_server_stream out, body
|
||||
def create_server_stream out
|
||||
status = []
|
||||
prepare_create_server do |project, env, user, body|
|
||||
res = create_server(project, env, body, user, out)
|
||||
e = Devops::Executor::ServerExecutor.new(nil, out)
|
||||
e.project = project
|
||||
e.deploy_env = env
|
||||
body["created_by"] = user
|
||||
res = e.create_server(body)
|
||||
status.push res
|
||||
end
|
||||
status
|
||||
|
||||
@ -10,9 +10,7 @@
|
||||
<% end %>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
<%= @text %>
|
||||
</pre>
|
||||
<pre><%= @text %></pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
require "db/mongo/models/mongo_model"
|
||||
require "hooks"
|
||||
require "db/mongo/models/model_with_provider"
|
||||
|
||||
|
||||
@ -8,20 +7,6 @@ module Devops
|
||||
class Server < MongoModel
|
||||
|
||||
include ModelWithProvider
|
||||
include Hooks
|
||||
#params:
|
||||
# out - container for output data
|
||||
# deploy_info - hash with deploy data
|
||||
define_hook :before_deploy
|
||||
define_hook :after_deploy
|
||||
|
||||
define_hook :before_create
|
||||
define_hook :after_create
|
||||
|
||||
#params:
|
||||
# out - container for output data
|
||||
define_hook :before_bootstrap
|
||||
define_hook :after_bootstrap
|
||||
|
||||
attr_accessor :chef_node_name, :id, :remote_user, :project, :deploy_env, :private_ip, :public_ip, :created_at, :without_bootstrap, :created_by, :reserved_by, :stack, :run_list
|
||||
attr_accessor :key
|
||||
|
||||
@ -1,45 +1,66 @@
|
||||
require "lib/knife/knife_factory"
|
||||
require "hooks"
|
||||
|
||||
module Devops
|
||||
module Executor
|
||||
class ServerExecutor
|
||||
include Hooks
|
||||
|
||||
#params:
|
||||
# out - container for output data
|
||||
# deploy_info - hash with deploy data
|
||||
define_hook :before_deploy
|
||||
define_hook :after_deploy
|
||||
|
||||
define_hook :before_create
|
||||
define_hook :after_create
|
||||
|
||||
#params:
|
||||
# out - container for output data
|
||||
define_hook :before_bootstrap
|
||||
define_hook :after_bootstrap
|
||||
|
||||
def initialize server, out
|
||||
@project = Devops::Db.connector.project(server.project)
|
||||
@deploy_env = @project.deploy_env(server.deploy_env)
|
||||
if server
|
||||
@project = Devops::Db.connector.project(server.project)
|
||||
@deploy_env = @project.deploy_env(server.deploy_env)
|
||||
end
|
||||
@knife_instance = KnifeFactory.instance
|
||||
@server = server
|
||||
@out = out
|
||||
end
|
||||
|
||||
def project= p
|
||||
@project = p
|
||||
end
|
||||
|
||||
def deploy_env= e
|
||||
@deploy_env = e
|
||||
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
|
||||
mongo = ::Devops::Db.connector
|
||||
begin
|
||||
@out << "Create server...\n"
|
||||
@out.flush if @out.respond_to?(:flush)
|
||||
|
||||
=begin
|
||||
s = Devops::Model::Server.new
|
||||
s.provider = provider.name
|
||||
s.project = self.id
|
||||
s.deploy_env = env.identifier
|
||||
s.run_list = options["run_list"] || []
|
||||
s.chef_node_name = options["name"]
|
||||
s.key = options["key"] || provider.ssh_key
|
||||
@server.run_list = options["run_list"] || []
|
||||
@server.chef_node_name = options["name"]
|
||||
@server.key = options["key"] || provider.ssh_key
|
||||
|
||||
s.created_by = user
|
||||
=end
|
||||
i = mongo.image(@deploy_env.image)
|
||||
@server.remote_user = i.remote_user
|
||||
|
||||
res = {}
|
||||
@out << "\nBefore create hooks...\n"
|
||||
res[:before] = self.run_hook :before_create
|
||||
return false unless provider.create_server(@server, @deploy_env.image, @deploy_env.flavor, @deploy_env.subnets, @deploy_env.groups, @out)
|
||||
mongo.server_insert @server
|
||||
@out << "\nAfter create hooks...\n"
|
||||
res[:after] = self.run_hook :after_create
|
||||
res
|
||||
|
||||
# return 3 unless @server.create(provider, env.image, env.flavor, env.subnets, env.groups, @out)
|
||||
@out.flush if @out.respond_to?(:flush)
|
||||
DevopsLogger.logger.info "Server with parameters: #{@server.to_hash.inspect} is running"
|
||||
unless options["without_bootstrap"]
|
||||
@ -64,7 +85,7 @@ module Devops
|
||||
def bootstrap options
|
||||
k = Devops::Db.connector.key(@server.key)
|
||||
cert_path = k.path
|
||||
@out << "Before bootstrap hooks...\n"
|
||||
@out << "\nBefore bootstrap hooks...\n"
|
||||
res = self.run_hook(:before_bootstrap, @out)
|
||||
@out << "Done\n"
|
||||
if @server.private_ip.nil?
|
||||
|
||||
@ -2,15 +2,14 @@ require "commands/knife_commands"
|
||||
|
||||
class KnifeFactory
|
||||
|
||||
@instance = nil
|
||||
class << self
|
||||
attr_accessor :instance
|
||||
def init
|
||||
c = DevopsConfig.config[:knife_config_file]
|
||||
raise "Option ':knife_config_file' is undefined, please check config.rb file" unless c
|
||||
@instance = KnifeCommands.new(c)
|
||||
end
|
||||
|
||||
def instance
|
||||
@instance
|
||||
DevopsLogger.logger.info("Knife instance has been initialized")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -4,12 +4,13 @@
|
||||
require File.join(File.dirname(__FILE__), "worker")
|
||||
|
||||
require "providers/provider_factory"
|
||||
require "commands/server"
|
||||
#require "commands/server"
|
||||
require "db/mongo/models/server"
|
||||
require "db/mongo/models/report"
|
||||
require "lib/executors/server_executor"
|
||||
|
||||
class CreateServerWorker < Worker
|
||||
include ServerCommands
|
||||
# include ServerCommands
|
||||
|
||||
def perform(dir, params, owner, conf)
|
||||
logger.info "Create server"
|
||||
@ -29,7 +30,12 @@ class CreateServerWorker < Worker
|
||||
}
|
||||
mongo.save_report(Devops::Model::Report.new(o))
|
||||
|
||||
status = create_server(project, env, params, owner, out)
|
||||
e = Devops::Executor::ServerExecutor.new(nil, out)
|
||||
e.project = project
|
||||
e.deploy_env = env
|
||||
params["created_by"] = owner
|
||||
status = e.create_server(params)
|
||||
# status = create_server(project, env, params, owner, out)
|
||||
status
|
||||
end
|
||||
end
|
||||
|
||||
@ -11,6 +11,7 @@ require "core/devops-logger"
|
||||
require "core/devops-db"
|
||||
require "providers/provider_factory"
|
||||
require 'workers/workers_storage'
|
||||
require "lib/knife/knife_factory"
|
||||
|
||||
class Worker
|
||||
include Sidekiq::Worker
|
||||
@ -50,6 +51,7 @@ class Worker
|
||||
error = nil
|
||||
provider = nil
|
||||
begin
|
||||
KnifeFactory.init
|
||||
Devops::Db.init
|
||||
::Provider::ProviderFactory.init(DevopsConfig.config)
|
||||
unless e_provider.nil?
|
||||
|
||||
Loading…
Reference in New Issue
Block a user