From f8555bd65b5c4655df296729804fdb54abebf197 Mon Sep 17 00:00:00 2001 From: Scott Seago Date: Wed, 11 Jan 2017 22:45:05 -0500 Subject: [PATCH] Use task queue for CRUD operations on auth key pair --- .../auth_key_pair_cloud_controller.rb | 51 +++++++++++++------ config/routes.rb | 1 + 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/app/controllers/auth_key_pair_cloud_controller.rb b/app/controllers/auth_key_pair_cloud_controller.rb index def259f9f235..b038f9891b92 100644 --- a/app/controllers/auth_key_pair_cloud_controller.rb +++ b/app/controllers/auth_key_pair_cloud_controller.rb @@ -112,21 +112,17 @@ def create ext_management_system = find_by_id_filtered(ManageIQ::Providers::CloudManager, options[:ems_id]) kls = kls.class_by_ems(ext_management_system) if kls.is_available?(:create_key_pair, ext_management_system, options) - begin - kls.create_key_pair(ext_management_system, options) - add_flash(_("Creating %{model} %{name}") % { - :model => ui_lookup(:table => 'auth_key_pair_cloud'), - :name => options[:name]}) - rescue => ex - add_flash(_("Unable to create %{model} %{name}. %{error}") % { - :model => ui_lookup(:table => 'auth_key_pair_cloud'), - :name => options[:name], - :error => get_error_message_from_fog(ex.to_s)}, :error) + task_id = kls.create_key_pair_queue(session[:userid], ext_management_system, options) + + add_flash(_("%{model} creation failed: Task start failed: ID [%{id}]") % + {:model => ui_lookup(:table => 'auth_key_pair_cloud'), + :id => task_id.to_s}, :error) unless task_id.kind_of?(Integer) + + if @flash_array + javascript_flash(:spinner_off => true) + else + initiate_wait_for_task(:task_id => task_id, :action => "create_finished") end - @breadcrumbs.pop if @breadcrumbs - session[:edit] = nil - session[:flash_msgs] = @flash_array.dup if @flash_array - javascript_redirect :action => "show_list" else @in_a_form = true add_flash(kls.is_available_now_error_message(:create_key_pair, ext_management_system, kls)) @@ -149,6 +145,30 @@ def create end end + def create_finished + task_id = session[:async][:params][:task_id] + key_pair_name = session[:async][:params][:name] + task = MiqTask.find(task_id) + if MiqTask.status_ok?(task.status) + add_flash(_("%{model} \"%{name}\" created") % { + :model => ui_lookup(:table => 'auth_key_pair_cloud'), + :name => key_pair_name + }) + else + add_flash(_("Unable to create %{model} \"%{name}\": %{details}") % { + :model => ui_lookup(:table => 'auth_key_pair_cloud'), + :name => key_pair_name, + :details => task.message + }, :error) + end + + @breadcrumbs.pop if @breadcrumbs + session[:edit] = nil + session[:flash_msgs] = @flash_array.dup if @flash_array + + javascript_redirect :action => "show_list" + end + # delete selected auth key pairs def delete_auth_key_pairs assert_privileges("auth_key_pair_cloud_delete") @@ -205,8 +225,7 @@ def process_deletions(key_pairs) :userid => session[:userid] } AuditEvent.success(audit) - kp.delete_key_pair - kp.destroy + kp.delete_key_pair_queue(session[:userid]) end add_flash(n_("Delete initiated for %{number} Key Pair", "Delete initiated for %{number} Key Pairs", key_pairs.length) % {:number => key_pairs.length}) diff --git a/config/routes.rb b/config/routes.rb index fc9674c75daf..fd99a1b842a2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -151,6 +151,7 @@ show_list tagging_edit tag_edit_form_field_changed + wait_for_task ) + adv_search_post + compare_post + exp_post + save_post },