From b0a8b01cd1863997f786ccfb9c7b73c592abfded Mon Sep 17 00:00:00 2001 From: Justin Sherrill Date: Thu, 16 Oct 2014 20:16:34 -0400 Subject: [PATCH] fixes #7979 - adding better error reporting for repo enable ui --- .../katello/providers/provider_redhat.js | 6 +++ app/assets/stylesheets/katello/contents.scss | 3 ++ .../stylesheets/katello/widgets/tabs.scss | 40 +++++++++---------- .../katello/products_controller.rb | 12 +++++- .../providers/redhat/_enable_errors.haml | 9 +++++ .../providers/redhat/_errors.html.haml | 13 ++++++ 6 files changed, 62 insertions(+), 21 deletions(-) create mode 100644 app/views/katello/providers/redhat/_enable_errors.haml create mode 100644 app/views/katello/providers/redhat/_errors.html.haml diff --git a/app/assets/javascripts/katello/providers/provider_redhat.js b/app/assets/javascripts/katello/providers/provider_redhat.js index 6b195b705e2..45b1b4cc072 100644 --- a/app/assets/javascripts/katello/providers/provider_redhat.js +++ b/app/assets/javascripts/katello/providers/provider_redhat.js @@ -67,6 +67,7 @@ KT.redhat_provider_page = (function($) { $(checkbox).hide(); $('#spinner_'+id).removeClass('hidden').show(); + checkbox.parent().parent().siblings().first().find('.errors').remove(); $.ajax({ type: "PUT", url: url, @@ -80,6 +81,11 @@ KT.redhat_provider_page = (function($) { else { set_checkbox.attr('disabled','disabled'); } + }, + error: function(data) { + checkbox.parent().parent().siblings().first().append(data.responseText); + $(checkbox).removeClass('hidden').show().attr('checked', false); + $('#spinner_'+id).addClass('hidden').hide(); } }); return false; diff --git a/app/assets/stylesheets/katello/contents.scss b/app/assets/stylesheets/katello/contents.scss index ba240a276b4..f55f2592f37 100644 --- a/app/assets/stylesheets/katello/contents.scss +++ b/app/assets/stylesheets/katello/contents.scss @@ -569,6 +569,9 @@ $container_width: ($static_width/2) - 36; } } tbody { + a { + color: $linkfg_color + } tr { background: $white_color; } diff --git a/app/assets/stylesheets/katello/widgets/tabs.scss b/app/assets/stylesheets/katello/widgets/tabs.scss index 8887e97e864..53ef03b56ff 100644 --- a/app/assets/stylesheets/katello/widgets/tabs.scss +++ b/app/assets/stylesheets/katello/widgets/tabs.scss @@ -17,6 +17,26 @@ padding: 0px; .ui-tabs-nav { background: $lightergrey_color; + a { + cursor: pointer; + text-transform: none; + text-decoration: none; + @include text-shadow(0 1px 0 rgba($white_color, 1)); + display: block; + margin: 0; + padding: 8px 16px 6px; + color: $taboff_color; + float: left; + font-weight: bold; + &.selected { + color: $tabon_color; + font-weight: bold; + border-bottom: 3px solid $kselected_color; + padding-bottom: 3px; + } + + &:hover { color: lighten($kselected_color,10%); } + } } .ui-tabs-panel { padding: 0px; @@ -37,26 +57,6 @@ color: $tabon_color; font-weight: bold; } - a { - cursor: pointer; - text-transform: none; - text-decoration: none; - @include text-shadow(0 1px 0 rgba($white_color, 1)); - display: block; - margin: 0; - padding: 8px 16px 6px; - color: $taboff_color; - float: left; - font-weight: bold; - &.selected { - color: $tabon_color; - font-weight: bold; - border-bottom: 3px solid $kselected_color; - padding-bottom: 3px; - } - - &:hover { color: lighten($kselected_color,10%); } - } .icon_wrap { padding-top: 2px; diff --git a/app/controllers/katello/products_controller.rb b/app/controllers/katello/products_controller.rb index 7da6b617240..54d3cb0ec04 100644 --- a/app/controllers/katello/products_controller.rb +++ b/app/controllers/katello/products_controller.rb @@ -29,7 +29,11 @@ def available_repositories render_bad_parameters _('Repository sets are not available for custom products.') else task = sync_task(::Actions::Katello::RepositorySet::ScanCdn, @product, params[:content_id]) - render :partial => 'katello/providers/redhat/repos', :locals => { :scan_cdn => task } + if task.result == 'warning' + render :partial => 'katello/providers/redhat/errors', :locals => { :error_message => task_error(task), :task => task} + else + render :partial => 'katello/providers/redhat/repos', :locals => { :scan_cdn => task } + end end end @@ -41,6 +45,8 @@ def toggle_repository end task = sync_task(action_class, @product, @content, substitutions) render :json => { :task_id => task.id } + rescue => e + render :partial => 'katello/providers/redhat/enable_errors', :locals => { :error_message => e.message}, :status => 500 end def auto_complete @@ -88,5 +94,9 @@ def substitutions params.slice(:basearch, :releasever) end + def task_error(task) + task.failed_steps.first.action(task.execution_plan).steps.map { |s| s.try(:error).try(:message) }.reject(&:blank?).join(', ') + end + end end diff --git a/app/views/katello/providers/redhat/_enable_errors.haml b/app/views/katello/providers/redhat/_enable_errors.haml new file mode 100644 index 00000000000..198aad117c7 --- /dev/null +++ b/app/views/katello/providers/redhat/_enable_errors.haml @@ -0,0 +1,9 @@ +%span.errors + %br + %i.icon-exclamation-sign + = _("There was an error attempting to enable or disable this repository:") + %pre + = error_message + = _("For more information see ") + %a{:href => main_app.foreman_tasks_tasks_path} + = _("the related failed task.") diff --git a/app/views/katello/providers/redhat/_errors.html.haml b/app/views/katello/providers/redhat/_errors.html.haml new file mode 100644 index 00000000000..b11a27e2aeb --- /dev/null +++ b/app/views/katello/providers/redhat/_errors.html.haml @@ -0,0 +1,13 @@ +%table.repo_table{:style=>'display: none;'} + %thead + %th + = _('Errors') + %tbody + %td + %i.icon-exclamation-sign + = _("There was an error attempting to retrieve the repository list:") + %pre + = error_message + = _("For more information see ") + %a{:href => main_app.foreman_tasks_task_path(task.id)} + = _("the failed task.")