From 32d6a1da1a27b71051ff8b7f494c713e7a8dded0 Mon Sep 17 00:00:00 2001 From: Anton Chuchkalov Date: Wed, 5 Aug 2015 18:26:21 +0300 Subject: [PATCH] get rid of extract_servers method using --- devops-service/db/mongo/models/server.rb | 1 + .../workers/stack_bootstrap_worker.rb | 44 +++++++++---------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/devops-service/db/mongo/models/server.rb b/devops-service/db/mongo/models/server.rb index eeb4a9b..5433bae 100644 --- a/devops-service/db/mongo/models/server.rb +++ b/devops-service/db/mongo/models/server.rb @@ -61,6 +61,7 @@ module Devops self.reserved_by = s["reserved_by"] self.stack = s["stack"] self.run_list = s["run_list"] || [] + self end def create provider, image, flavor, subnets, groups, out diff --git a/devops-service/workers/stack_bootstrap_worker.rb b/devops-service/workers/stack_bootstrap_worker.rb index 55114e8..84f4628 100644 --- a/devops-service/workers/stack_bootstrap_worker.rb +++ b/devops-service/workers/stack_bootstrap_worker.rb @@ -12,14 +12,12 @@ class StackBootstrapWorker < Worker # :stack_id def perform(options) call(options['config'], options['provider'], options['dir']) do |provider, out, file| - mongo = Devops::Db.connector + mongo = ::Devops::Db.connector stack = mongo.stack(options['stack_id']) save_report(mongo, stack, file) sync_bootstrap_proc.call(out, stack, mongo) - persist_stack_servers_in_mongo!(mongo, stack, provider) - # logger = DevopsLogger.logger - # bootstrap_stack_servers_proc.call(STDOUT, stack, mongo, provider, logger) + persist_stack_servers!(stack, provider) end end @@ -37,34 +35,32 @@ class StackBootstrapWorker < Worker mongo.save_report(report) end - def persist_stack_servers_in_mongo!(mongo, stack, provider) + def persist_stack_servers!(stack, provider) + mongo = ::Devops::Db.connector project = mongo.project(stack.project) deploy_env = project.deploy_env(stack.deploy_env) - stack_servers = [] - stack.resources.each do |resource| - logical_name = resource.resource_name - extended_info = stack.resource(logical_name) - body = { - 'name' => logical_name, - 'key' => extended_info.key_name + extended_info = stack.resource(resource.resource_name) + server_attrs = { + 'provider' => provider.name, + 'project' => project.id, + 'deploy_env' => deploy_env.identifier, + 'remote_user' => mongo.image(deploy_env.image).remote_user, + 'key' => extended_info.key_name || provider.ssh_key, + 'id' => extended_info.id, + 'chef_node_name' => extended_info.name, + 'private_ip' => extended_info.addresses.values.first.first['addr'], + 'created_by' => stack.owner, + 'run_list' => stack.run_list || [], + 'stack' => stack.id } - servers = extract_servers(provider, project, deploy_env, body, stack.owner) - servers.each do |server| - # TODO: improve IP assigning logic - server.private_ip = extended_info.addresses.values.first.first['addr'] - server.id = extended_info.id - server.chef_node_name = extended_info.name - end - stack_servers += servers - end - stack_servers.each_with_index do |server, i| - server.stack = stack.id - mongo.server_insert server + server = ::Devops::Model::Server.new(server_attrs) + mongo.server_insert(server) end end + end WorkersStorage.add_worker(stack_bootstrap: StackBootstrapWorker)