diff --git a/devops-service/app/api2/handlers/stack.rb b/devops-service/app/api2/handlers/stack.rb index c54a70b..c13ac7f 100644 --- a/devops-service/app/api2/handlers/stack.rb +++ b/devops-service/app/api2/handlers/stack.rb @@ -44,6 +44,8 @@ module Devops stack = self.stack(id) stack.sync_details! Devops::Db.connector.stack_update(stack) + + stack end def resources id diff --git a/devops-service/commands/stack.rb b/devops-service/commands/stack.rb index bfbad63..38cbd2d 100644 --- a/devops-service/commands/stack.rb +++ b/devops-service/commands/stack.rb @@ -5,7 +5,7 @@ module StackCommands include ServerCommands extend self - def stack_bootstrap_proc + def sync_bootstrap_proc lambda do |out, stack, mongo| # two tries each 4 seconds, then 5 tries each 10 seconds, then 5 tries each minute. sleep_times = [4]*2 + [10]*5 + [60]*5 @@ -29,12 +29,15 @@ module StackCommands end end - def bootstrap_stack_servers - + def bootstrap_stack_servers_proc(out, stack, mongo, provider, logger) + mongo.stack_servers(stack.id).each do |server| + key = mongo.key(server.key) + two_phase_bootstrap(server, out, provider, mongo, key.path, logger) + end end CommandsStorage.add_job_lambda( - stack_bootstrap: stack_bootstrap_proc + sync_bootstrap: sync_bootstrap_proc ) end diff --git a/devops-service/db/mongo/connectors/server.rb b/devops-service/db/mongo/connectors/server.rb index 7c40322..508abd8 100644 --- a/devops-service/db/mongo/connectors/server.rb +++ b/devops-service/db/mongo/connectors/server.rb @@ -29,6 +29,10 @@ module Connectors servers_find(q, f) end + def stack_servers(stack_id) + list('stack' => stack_id) + end + def servers_by_names(names) query = {} query['chef_node_name'] = {'$in' => names} unless names.nil? or names.class != Array diff --git a/devops-service/db/mongo/mongo_connector.rb b/devops-service/db/mongo/mongo_connector.rb index 4dbfd7f..2ccd5a8 100644 --- a/devops-service/db/mongo/mongo_connector.rb +++ b/devops-service/db/mongo/mongo_connector.rb @@ -20,7 +20,7 @@ class MongoConnector :project_delete, :is_project_exists?, :check_project_auth] => :projects_connector, [:project_templates, :project_template_insert, :project_template_update, :project_template_delete] => :projects_templates_connector, - [:servers_find, :servers, :servers_by_names, :server_by_instance_id, + [:servers_find, :servers, :stack_servers, :servers_by_names, :server_by_instance_id, :server_by_chef_node_name, :servers_by_key, :server_insert, :server_delete, :server_update, :server_set_chef_node_name, :stack_servers_delete] => :servers_connector, [:user_auth, :user, :users, :users_names, :user_insert, :user_delete, diff --git a/devops-service/workers/stack_bootstrap_worker.rb b/devops-service/workers/stack_bootstrap_worker.rb index f70d0db..95d9b68 100644 --- a/devops-service/workers/stack_bootstrap_worker.rb +++ b/devops-service/workers/stack_bootstrap_worker.rb @@ -16,9 +16,10 @@ class StackBootstrapWorker < Worker stack = mongo.stack(options['stack_id']) save_report(mongo, stack, file) - status = stack_bootstrap_proc.call(out, stack, mongo) + sync_bootstrap_proc.call(out, stack, mongo) persist_stack_servers_in_mongo!(mongo, stack, provider) - status + # logger = DevopsLogger.logger + # bootstrap_stack_servers_proc.call(STDOUT, stack, mongo, provider, logger) end end