autosync stack after creating till status not changed

This commit is contained in:
Anton Chuchkalov 2015-07-21 18:13:10 +04:00
parent 344514d08e
commit ef26dc19e4
6 changed files with 18 additions and 9 deletions

View File

@ -2,16 +2,20 @@ module StackCommands
def sync_stack_till_not_in_progress_proc
lambda do |out, stack, mongo|
# two tries each 5 seconds, then 5 tries each 10 seconds, then 5 tries each minute.
sleep_times = [5]*2 + [10]*5 + [60]*5
begin
10.times do |i|
sleep 10
out << "Syncing stack '#{stack.id}'..."
out << "Syncing stack '#{stack.id}'...\n"
sleep_times.each do |sleep_time|
sleep sleep_time
stack.sync_details!
if stack.stack_status != 'CREATE_IN_PROGRESS'
mongo.stack_update(stack)
out << "Stack '#{stack.id}' status is now #{stack.stack_status}"
break
end
out << "Next try...\n"
end
rescue StandardError => e
logger.error e.message

View File

@ -38,6 +38,10 @@ module Connectors
list(options)
end
def set_report_status(jid, status)
# TODO: merge from novartis
end
private
def model_from_bson(bson)

View File

@ -4,7 +4,7 @@ module Devops
self.provider = 'openstack'
def stack_status
details[:stack_status] if details
details[:stack_status] || details['stack_status'] if details
end
end
end

View File

@ -26,7 +26,7 @@ class MongoConnector
[:user_auth, :user, :users, :users_names, :user_insert, :user_delete,
:user_update, :create_root_user, :check_user_privileges] => :users_connector,
[:keys, :key, :key_insert, :key_delete] => :keys_connector,
[:save_report, :report, :reports] => :reports_connector,
[:save_report, :report, :reports, :set_report_status] => :reports_connector,
[:statistic] => :statistics_connector
)

View File

@ -34,6 +34,7 @@ module Devops
jid = StackSyncWorker.perform_async(
DevopsConfig[:report_dir_v2],
stack.provider,
stack.id,
request.env['REMOTE_USER'], # owner
DevopsConfig.config

View File

@ -10,8 +10,8 @@ require "db/mongo/models/report"
class StackSyncWorker < Worker
include StackCommands
def perform(dir, stack_id, owner, conf)
call(conf, nil, dir) do |mongo, useless, out, file|
def perform(dir, provider, stack_id, owner, conf)
call(conf, provider, dir) do |mongo, provider, out, file|
stack = mongo.stack(stack_id)
o = {
"file" => file,
@ -19,9 +19,9 @@ class StackSyncWorker < Worker
"created_by" => owner,
"project" => stack.project,
"deploy_env" => stack.deploy_env,
"type" => Report::STACK_TYPE
"type" => ::Devops::Model::Report::STACK_TYPE
}
mongo.save_report(Report.new(o))
mongo.save_report(::Devops::Model::Report.new(o))
status = sync_stack_till_not_in_progress_proc.call(out, stack, mongo)
status