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