autosync stack after creating till status not changed
This commit is contained in:
parent
344514d08e
commit
ef26dc19e4
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
)
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user