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
|
def sync_stack_till_not_in_progress_proc
|
||||||
lambda do |out, stack, mongo|
|
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
|
begin
|
||||||
10.times do |i|
|
out << "Syncing stack '#{stack.id}'...\n"
|
||||||
sleep 10
|
sleep_times.each do |sleep_time|
|
||||||
out << "Syncing stack '#{stack.id}'..."
|
sleep sleep_time
|
||||||
stack.sync_details!
|
stack.sync_details!
|
||||||
if stack.stack_status != 'CREATE_IN_PROGRESS'
|
if stack.stack_status != 'CREATE_IN_PROGRESS'
|
||||||
mongo.stack_update(stack)
|
mongo.stack_update(stack)
|
||||||
out << "Stack '#{stack.id}' status is now #{stack.stack_status}"
|
out << "Stack '#{stack.id}' status is now #{stack.stack_status}"
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
out << "Next try...\n"
|
||||||
end
|
end
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
logger.error e.message
|
logger.error e.message
|
||||||
|
|||||||
@ -38,6 +38,10 @@ module Connectors
|
|||||||
list(options)
|
list(options)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_report_status(jid, status)
|
||||||
|
# TODO: merge from novartis
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def model_from_bson(bson)
|
def model_from_bson(bson)
|
||||||
|
|||||||
@ -4,7 +4,7 @@ module Devops
|
|||||||
self.provider = 'openstack'
|
self.provider = 'openstack'
|
||||||
|
|
||||||
def stack_status
|
def stack_status
|
||||||
details[:stack_status] if details
|
details[:stack_status] || details['stack_status'] if details
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -26,7 +26,7 @@ class MongoConnector
|
|||||||
[:user_auth, :user, :users, :users_names, :user_insert, :user_delete,
|
[:user_auth, :user, :users, :users_names, :user_insert, :user_delete,
|
||||||
:user_update, :create_root_user, :check_user_privileges] => :users_connector,
|
:user_update, :create_root_user, :check_user_privileges] => :users_connector,
|
||||||
[:keys, :key, :key_insert, :key_delete] => :keys_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
|
[:statistic] => :statistics_connector
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -34,6 +34,7 @@ module Devops
|
|||||||
|
|
||||||
jid = StackSyncWorker.perform_async(
|
jid = StackSyncWorker.perform_async(
|
||||||
DevopsConfig[:report_dir_v2],
|
DevopsConfig[:report_dir_v2],
|
||||||
|
stack.provider,
|
||||||
stack.id,
|
stack.id,
|
||||||
request.env['REMOTE_USER'], # owner
|
request.env['REMOTE_USER'], # owner
|
||||||
DevopsConfig.config
|
DevopsConfig.config
|
||||||
|
|||||||
@ -10,8 +10,8 @@ require "db/mongo/models/report"
|
|||||||
class StackSyncWorker < Worker
|
class StackSyncWorker < Worker
|
||||||
include StackCommands
|
include StackCommands
|
||||||
|
|
||||||
def perform(dir, stack_id, owner, conf)
|
def perform(dir, provider, stack_id, owner, conf)
|
||||||
call(conf, nil, dir) do |mongo, useless, out, file|
|
call(conf, provider, dir) do |mongo, provider, out, file|
|
||||||
stack = mongo.stack(stack_id)
|
stack = mongo.stack(stack_id)
|
||||||
o = {
|
o = {
|
||||||
"file" => file,
|
"file" => file,
|
||||||
@ -19,9 +19,9 @@ class StackSyncWorker < Worker
|
|||||||
"created_by" => owner,
|
"created_by" => owner,
|
||||||
"project" => stack.project,
|
"project" => stack.project,
|
||||||
"deploy_env" => stack.deploy_env,
|
"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 = sync_stack_till_not_in_progress_proc.call(out, stack, mongo)
|
||||||
status
|
status
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user