From ca007cee423e282fe5f9d1115b0a8d4156209d2b Mon Sep 17 00:00:00 2001 From: Zita Nemeckova Date: Mon, 9 Dec 2019 12:49:25 +0100 Subject: [PATCH 1/8] Add Tags to PxeServer and its items Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1454712 --- app/helpers/pxe_helper/textual_summary.rb | 4 ++++ app/views/pxe/_pxe_server_details.html.haml | 3 +++ 2 files changed, 7 insertions(+) diff --git a/app/helpers/pxe_helper/textual_summary.rb b/app/helpers/pxe_helper/textual_summary.rb index 02676b2695e..6cb1ea3539d 100644 --- a/app/helpers/pxe_helper/textual_summary.rb +++ b/app/helpers/pxe_helper/textual_summary.rb @@ -32,6 +32,10 @@ def textual_last_refreshed_on {:label => _("Last Refreshed On"), :value => @ps.last_refresh_on.to_s} end + def textual_group_smart_management + %i[tags] + end + def textual_group_pxe_image_menus %i[filename] end diff --git a/app/views/pxe/_pxe_server_details.html.haml b/app/views/pxe/_pxe_server_details.html.haml index 40ca46c92fa..0e29755799a 100644 --- a/app/views/pxe/_pxe_server_details.html.haml +++ b/app/views/pxe/_pxe_server_details.html.haml @@ -52,6 +52,7 @@ = h(i.path) %td = h(i.index) + = react 'GenericGroupWrapper', expand_generic_group(TextualGroup.new(_('Smart Management'), textual_group_smart_management), @record) -# PXE Image is selected - if @img @@ -61,6 +62,7 @@ - else = render(:partial => "layouts/flash_msg") = react 'GenericGroupWrapper', expand_generic_group(TextualGroup.new(_('Basic Information'), textual_pxe_img_basicinfo), @record) + = react 'GenericGroupWrapper', expand_generic_group(TextualGroup.new(_('Smart Management'), textual_group_smart_management), @record) -# Windows Image is selected - if @wimg @@ -70,3 +72,4 @@ - else = render(:partial => "layouts/flash_msg") = react 'GenericGroupWrapper', expand_generic_group(TextualGroup.new(_('Basic Information'), textual_win_img_basicinfo), @record) + = react 'GenericGroupWrapper', expand_generic_group(TextualGroup.new(_('Smart Management'), textual_group_smart_management), @record) From 1125f0ac80ed9846b81f1c1699c32fd9ebc3669e Mon Sep 17 00:00:00 2001 From: Zita Nemeckova Date: Thu, 12 Dec 2019 15:39:49 +0100 Subject: [PATCH 2/8] Add redirect to Tagging page and back --- app/controllers/pxe_controller.rb | 9 +++++++++ .../toolbar/pxe_server_center.rb | 15 +++++++++++++++ config/routes.rb | 3 +++ 3 files changed, 27 insertions(+) diff --git a/app/controllers/pxe_controller.rb b/app/controllers/pxe_controller.rb index 0bd2e73fcc2..0dd53c6cb6a 100644 --- a/app/controllers/pxe_controller.rb +++ b/app/controllers/pxe_controller.rb @@ -22,6 +22,7 @@ class PxeController < ApplicationController 'pxe_server_edit' => :pxe_server_edit, 'pxe_server_delete' => :pxe_server_delete, 'pxe_server_refresh' => :pxe_server_refresh, + 'pxe_server_tag' => :pxe_server_tags_edit, 'pxe_wimg_edit' => :pxe_wimg_edit, 'iso_datastore_new' => :iso_datastore_new, 'iso_datastore_refresh' => :iso_datastore_refresh, @@ -37,6 +38,14 @@ def x_button generic_x_button(PXE_X_BUTTON_ALLOWED_ACTIONS) end + def pxe_server_tags_edit + tag("PxeServer") + end + + def previous_breadcrumb_url + url_for_only_path(:action => @lastaction) + end + def accordion_select super(true) end diff --git a/app/helpers/application_helper/toolbar/pxe_server_center.rb b/app/helpers/application_helper/toolbar/pxe_server_center.rb index 893dea6d984..9dacb36ca9f 100644 --- a/app/helpers/application_helper/toolbar/pxe_server_center.rb +++ b/app/helpers/application_helper/toolbar/pxe_server_center.rb @@ -28,4 +28,19 @@ class ApplicationHelper::Toolbar::PxeServerCenter < ApplicationHelper::Toolbar:: ] ), ]) + button_group('pxe_server_policy', [ + select( + :pxe_server_policy_choice, + nil, + t = N_('Policy'), + t, + :items => [ + button( + :pxe_server_tag, + 'pficon pficon-edit fa-lg', + N_('Edit Tags for this Pxe Server'), + N_('Edit Tags')), + ] + ), + ]) end diff --git a/config/routes.rb b/config/routes.rb index 5cca2a3cc4c..29db1ee86cc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2702,6 +2702,7 @@ :pxe => { :get => %w( explorer + tagging_edit ), :post => %w( accordion_select @@ -2722,6 +2723,8 @@ pxe_wimg_edit pxe_wimg_form_field_changed reload + tag_edit_form_field_changed + tagging_edit template_create_update template_form_field_changed template_list From 0512da7e208bac586b3f91008e47fbc69c31db0a Mon Sep 17 00:00:00 2001 From: Zita Nemeckova Date: Thu, 19 Dec 2019 09:35:57 +0100 Subject: [PATCH 3/8] Add buttons to WindowsImage and PxeImage and clean tags in textual summary --- .../application_controller/tags.rb | 4 +- app/controllers/pxe_controller.rb | 10 +++ app/controllers/pxe_controller/pxe_servers.rb | 4 ++ .../toolbar/pxe_image_center.rb | 15 +++++ .../toolbar/windows_image_center.rb | 15 +++++ app/helpers/pxe_helper/textual_summary.rb | 30 +++++++++ product/views/PxeImage.yaml | 63 +++++++++++++++++++ product/views/WindowsImage.yaml | 63 +++++++++++++++++++ 8 files changed, 202 insertions(+), 2 deletions(-) create mode 100644 product/views/PxeImage.yaml create mode 100644 product/views/WindowsImage.yaml diff --git a/app/controllers/application_controller/tags.rb b/app/controllers/application_controller/tags.rb index bb1409bc1b9..ee32d7f9118 100644 --- a/app/controllers/application_controller/tags.rb +++ b/app/controllers/application_controller/tags.rb @@ -41,8 +41,6 @@ def configuration_manager_provider_tag alias storage_tag tagging_edit alias infra_networking_tag tagging_edit - private ############################ - def get_tag_items record_ids = find_records_with_rbac( @tagging.instance_of?(String) ? @tagging.safe_constantize : @tagging, @@ -52,6 +50,8 @@ def get_tag_items session[:assigned_filters] = assigned_filters end + private ############################ + def tagging_edit_tags_reset get_tag_items if @explorer @object_ids = session[:tag_items] diff --git a/app/controllers/pxe_controller.rb b/app/controllers/pxe_controller.rb index 0dd53c6cb6a..ae6456e873f 100644 --- a/app/controllers/pxe_controller.rb +++ b/app/controllers/pxe_controller.rb @@ -18,6 +18,7 @@ class PxeController < ApplicationController 'pxe_image_type_new' => :pxe_image_type_new, 'pxe_image_type_edit' => :pxe_image_type_edit, 'pxe_image_type_delete' => :pxe_image_type_delete, + 'pxe_image_tag' => :pxe_image_tags_edit, 'pxe_server_new' => :pxe_server_new, 'pxe_server_edit' => :pxe_server_edit, 'pxe_server_delete' => :pxe_server_delete, @@ -27,6 +28,7 @@ class PxeController < ApplicationController 'iso_datastore_new' => :iso_datastore_new, 'iso_datastore_refresh' => :iso_datastore_refresh, 'iso_datastore_delete' => :iso_datastore_delete, + 'windows_image_tag' => :windows_image_tags_edit, 'iso_image_edit' => :iso_image_edit, 'customization_template_new' => :customization_template_new, 'customization_template_delete' => :customization_template_delete, @@ -42,6 +44,14 @@ def pxe_server_tags_edit tag("PxeServer") end + def windows_image_tags_edit + tag("WindowsImage") + end + + def pxe_image_tags_edit + tag("PxeImage") + end + def previous_breadcrumb_url url_for_only_path(:action => @lastaction) end diff --git a/app/controllers/pxe_controller/pxe_servers.rb b/app/controllers/pxe_controller/pxe_servers.rb index c464f95dee1..1de42d588cd 100644 --- a/app/controllers/pxe_controller/pxe_servers.rb +++ b/app/controllers/pxe_controller/pxe_servers.rb @@ -268,12 +268,16 @@ def pxe_server_get_node_info(treenodeid) if (nodes[0] == "ps" && nodes.length == 2) || (%w[pxe_xx win_xx].include?(nodes[1]) && nodes.length == 3) # on pxe server node OR folder node is selected @record = @ps = PxeServer.find(nodes.last) + session[:tag_db] = "PxeServer" + get_tag_items @right_cell_text = _("PXE Server \"%{name}\"") % {:name => @ps.name} elsif nodes[0] == "pi" @record = @img = PxeImage.find(nodes.last) + session[:tag_db] = "PxeImage" @right_cell_text = _("PXE Image \"%{name}\"") % {:name => @img.name} elsif nodes[0] == "wi" @record = @wimg = WindowsImage.find(nodes[1]) + session[:tag_db] = "WindowsImage" @right_cell_text = _("Windows Image \"%{name}\"") % {:name => @wimg.name} end end diff --git a/app/helpers/application_helper/toolbar/pxe_image_center.rb b/app/helpers/application_helper/toolbar/pxe_image_center.rb index f3a73fb31e5..a655cd61332 100644 --- a/app/helpers/application_helper/toolbar/pxe_image_center.rb +++ b/app/helpers/application_helper/toolbar/pxe_image_center.rb @@ -14,4 +14,19 @@ class ApplicationHelper::Toolbar::PxeImageCenter < ApplicationHelper::Toolbar::B ] ), ]) + button_group('pxe_image_policy', [ + select( + :pxe_image_policy_choice, + nil, + t = N_('Policy'), + t, + :items => [ + button( + :pxe_image_tag, + 'pficon pficon-edit fa-lg', + N_('Edit Tags for this Pxe Image'), + N_('Edit Tags')), + ] + ), + ]) end diff --git a/app/helpers/application_helper/toolbar/windows_image_center.rb b/app/helpers/application_helper/toolbar/windows_image_center.rb index ca31d1cd1ad..8bbfa758a20 100644 --- a/app/helpers/application_helper/toolbar/windows_image_center.rb +++ b/app/helpers/application_helper/toolbar/windows_image_center.rb @@ -14,4 +14,19 @@ class ApplicationHelper::Toolbar::WindowsImageCenter < ApplicationHelper::Toolba ] ), ]) + button_group('windows_image_policy', [ + select( + :windows_image_policy_choice, + nil, + t = N_('Policy'), + t, + :items => [ + button( + :windows_image_tag, + 'pficon pficon-edit fa-lg', + N_('Edit Tags for this Windows Image'), + N_('Edit Tags')), + ] + ), + ]) end diff --git a/app/helpers/pxe_helper/textual_summary.rb b/app/helpers/pxe_helper/textual_summary.rb index 6cb1ea3539d..c589b002675 100644 --- a/app/helpers/pxe_helper/textual_summary.rb +++ b/app/helpers/pxe_helper/textual_summary.rb @@ -147,4 +147,34 @@ def textual_iso_img_info_name def textual_iso_img_info_type {:label => _("Type"), :value => @img.pxe_image_type ? @img.pxe_image_type.name : ""} end + + def tags_from_record + tags = [] + @record.tags.each do |tag| + values = tag.name.split('/') + p = tags.find { |x| x[:label] == values[2].humanize } + value = Classification.find_by(:tag_id => tag.id).description + if p.present? + p[:value].push(value) + else + name = Classification.find_by(:id => Classification.find_by(:tag_id => tag.id).parent_id).description + tags.push(:icon => "fa fa-tag", :label => name, :value => [value]) + end + end + tags + end + + def textual_tags_old + label = _("%{name} Tags") % {:name => session[:customer_name]} + tags = {:label => label} + if @record.tags.blank? + tags[:icon] = "fa fa-tag" + tags[:value] = _("No %{label} have been assigned") % {:label => label} + else + tags[:value] = tags_from_record + tags[:value].each { |value| value[:value].sort! } + tags[:value].sort_by! { |x| x[:label] } + end + tags + end end diff --git a/product/views/PxeImage.yaml b/product/views/PxeImage.yaml new file mode 100644 index 00000000000..bd7c7a13fff --- /dev/null +++ b/product/views/PxeImage.yaml @@ -0,0 +1,63 @@ +# +# This is an MIQ Report configuration file +# Single value parameters are specified as: +# single_value_parm: value +# Multiple value parameters are specified as: +# multi_value_parm: +# - value 1 +# - value 2 +# + +# Report title +title: Pxe Image + +# Menu name +name: Pxe Image + +# Main DB table report is based on +db: PxeImage + +# Columns to fetch from the main table +cols: +- name + +# Included tables (joined, has_one, has_many) and columns +include: + +# Order of columns (from all tables) +col_order: +- name + +# Column titles, in order +headers: +- Name + +# Condition(s) string for the SQL query +conditions: + +# Order string for the SQL query +order: Ascending + +# Columns to sort the report on, in order +sortby: +- name + +# Group rows (y=yes,n=no,c=count) +group: n + +# Graph type +# Bar +# Column +# ColumnThreed +# ParallelThreedColumn +# Pie +# PieThreed +# StackedBar +# StackedColumn +# StackedThreedColumn + +graph: + +# Dimensions of graph (1 or 2) +# Note: specifying 2 for a single dimension graph may not return expected results +dims: diff --git a/product/views/WindowsImage.yaml b/product/views/WindowsImage.yaml new file mode 100644 index 00000000000..40d1bff8ee4 --- /dev/null +++ b/product/views/WindowsImage.yaml @@ -0,0 +1,63 @@ +# +# This is an MIQ Report configuration file +# Single value parameters are specified as: +# single_value_parm: value +# Multiple value parameters are specified as: +# multi_value_parm: +# - value 1 +# - value 2 +# + +# Report title +title: Windows Image + +# Menu name +name: Windows Image + +# Main DB table report is based on +db: WindowsImage + +# Columns to fetch from the main table +cols: +- name + +# Included tables (joined, has_one, has_many) and columns +include: + +# Order of columns (from all tables) +col_order: +- name + +# Column titles, in order +headers: +- Name + +# Condition(s) string for the SQL query +conditions: + +# Order string for the SQL query +order: Ascending + +# Columns to sort the report on, in order +sortby: +- name + +# Group rows (y=yes,n=no,c=count) +group: n + +# Graph type +# Bar +# Column +# ColumnThreed +# ParallelThreedColumn +# Pie +# PieThreed +# StackedBar +# StackedColumn +# StackedThreedColumn + +graph: + +# Dimensions of graph (1 or 2) +# Note: specifying 2 for a single dimension graph may not return expected results +dims: From a08232fddc5b63ef4f3c5a7b09f33230aaecf8f9 Mon Sep 17 00:00:00 2001 From: Zita Nemeckova Date: Fri, 20 Dec 2019 15:47:54 +0100 Subject: [PATCH 4/8] Fix display of tags to be less complicated --- app/controllers/pxe_controller/pxe_servers.rb | 2 +- app/helpers/pxe_helper/textual_summary.rb | 30 ------------------- 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/app/controllers/pxe_controller/pxe_servers.rb b/app/controllers/pxe_controller/pxe_servers.rb index 1de42d588cd..9bfb6d25422 100644 --- a/app/controllers/pxe_controller/pxe_servers.rb +++ b/app/controllers/pxe_controller/pxe_servers.rb @@ -269,7 +269,6 @@ def pxe_server_get_node_info(treenodeid) # on pxe server node OR folder node is selected @record = @ps = PxeServer.find(nodes.last) session[:tag_db] = "PxeServer" - get_tag_items @right_cell_text = _("PXE Server \"%{name}\"") % {:name => @ps.name} elsif nodes[0] == "pi" @record = @img = PxeImage.find(nodes.last) @@ -280,6 +279,7 @@ def pxe_server_get_node_info(treenodeid) session[:tag_db] = "WindowsImage" @right_cell_text = _("Windows Image \"%{name}\"") % {:name => @wimg.name} end + get_tagdata(@record) end end end diff --git a/app/helpers/pxe_helper/textual_summary.rb b/app/helpers/pxe_helper/textual_summary.rb index c589b002675..6cb1ea3539d 100644 --- a/app/helpers/pxe_helper/textual_summary.rb +++ b/app/helpers/pxe_helper/textual_summary.rb @@ -147,34 +147,4 @@ def textual_iso_img_info_name def textual_iso_img_info_type {:label => _("Type"), :value => @img.pxe_image_type ? @img.pxe_image_type.name : ""} end - - def tags_from_record - tags = [] - @record.tags.each do |tag| - values = tag.name.split('/') - p = tags.find { |x| x[:label] == values[2].humanize } - value = Classification.find_by(:tag_id => tag.id).description - if p.present? - p[:value].push(value) - else - name = Classification.find_by(:id => Classification.find_by(:tag_id => tag.id).parent_id).description - tags.push(:icon => "fa fa-tag", :label => name, :value => [value]) - end - end - tags - end - - def textual_tags_old - label = _("%{name} Tags") % {:name => session[:customer_name]} - tags = {:label => label} - if @record.tags.blank? - tags[:icon] = "fa fa-tag" - tags[:value] = _("No %{label} have been assigned") % {:label => label} - else - tags[:value] = tags_from_record - tags[:value].each { |value| value[:value].sort! } - tags[:value].sort_by! { |x| x[:label] } - end - tags - end end From 526337ebfadde48a11f8c6de1c27dd86bcba036b Mon Sep 17 00:00:00 2001 From: Zita Nemeckova Date: Mon, 23 Dec 2019 15:37:26 +0100 Subject: [PATCH 5/8] Fix it so it uses correct methods/fucntions --- app/helpers/pxe_helper/textual_summary.rb | 2 +- app/views/pxe/_pxe_server_details.html.haml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/helpers/pxe_helper/textual_summary.rb b/app/helpers/pxe_helper/textual_summary.rb index 6cb1ea3539d..00b1444128d 100644 --- a/app/helpers/pxe_helper/textual_summary.rb +++ b/app/helpers/pxe_helper/textual_summary.rb @@ -33,7 +33,7 @@ def textual_last_refreshed_on end def textual_group_smart_management - %i[tags] + TextualTags.new(_('Smart Management'), %i[tags]) end def textual_group_pxe_image_menus diff --git a/app/views/pxe/_pxe_server_details.html.haml b/app/views/pxe/_pxe_server_details.html.haml index 0e29755799a..770c15e62c5 100644 --- a/app/views/pxe/_pxe_server_details.html.haml +++ b/app/views/pxe/_pxe_server_details.html.haml @@ -52,7 +52,7 @@ = h(i.path) %td = h(i.index) - = react 'GenericGroupWrapper', expand_generic_group(TextualGroup.new(_('Smart Management'), textual_group_smart_management), @record) + = react 'TagGroup', expand_generic_group(textual_group_smart_management, @record) -# PXE Image is selected - if @img @@ -62,7 +62,7 @@ - else = render(:partial => "layouts/flash_msg") = react 'GenericGroupWrapper', expand_generic_group(TextualGroup.new(_('Basic Information'), textual_pxe_img_basicinfo), @record) - = react 'GenericGroupWrapper', expand_generic_group(TextualGroup.new(_('Smart Management'), textual_group_smart_management), @record) + = react 'TagGroup', expand_generic_group(textual_group_smart_management, @record) -# Windows Image is selected - if @wimg @@ -72,4 +72,4 @@ - else = render(:partial => "layouts/flash_msg") = react 'GenericGroupWrapper', expand_generic_group(TextualGroup.new(_('Basic Information'), textual_win_img_basicinfo), @record) - = react 'GenericGroupWrapper', expand_generic_group(TextualGroup.new(_('Smart Management'), textual_group_smart_management), @record) + = react 'TagGroup', expand_generic_group(textual_group_smart_management, @record) From 350b198f0ced8c58f4cca2e175a9a22e3d1ebeac Mon Sep 17 00:00:00 2001 From: Zita Nemeckova Date: Thu, 2 Jan 2020 13:10:00 +0100 Subject: [PATCH 6/8] Add Policy/Edit Tags button to Pxe Servers --- .../toolbar/pxe_servers_center.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/helpers/application_helper/toolbar/pxe_servers_center.rb b/app/helpers/application_helper/toolbar/pxe_servers_center.rb index 10a0feb3929..2e20df2d197 100644 --- a/app/helpers/application_helper/toolbar/pxe_servers_center.rb +++ b/app/helpers/application_helper/toolbar/pxe_servers_center.rb @@ -45,4 +45,22 @@ class ApplicationHelper::Toolbar::PxeServersCenter < ApplicationHelper::Toolbar: ] ), ]) + button_group('pxe_server_policy', [ + select( + :pxe_server_policy_choice, + nil, + t = N_('Policy'), + t, + :items => [ + button( + :pxe_server_tag, + 'pficon pficon-edit fa-lg', + N_('Edit Tags selected Pxe Servers'), + N_('Edit Tags'), + :send_checked => true, + :enabled => false, + :onwhen => "1+"), + ] + ), + ]) end From 021fe5c9d89f9e1d42d6496ae6137645f9bab801 Mon Sep 17 00:00:00 2001 From: Zita Nemeckova Date: Thu, 2 Jan 2020 13:23:23 +0100 Subject: [PATCH 7/8] Fix redirect from Tag Edit screen with multiple Pxe Servers --- app/controllers/pxe_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/pxe_controller.rb b/app/controllers/pxe_controller.rb index ae6456e873f..2f6eecf41c6 100644 --- a/app/controllers/pxe_controller.rb +++ b/app/controllers/pxe_controller.rb @@ -53,7 +53,8 @@ def pxe_image_tags_edit end def previous_breadcrumb_url - url_for_only_path(:action => @lastaction) + action = @lastaction == "pxe_server_list" ? "explorer" : @lastaction + url_for_only_path(:action => action) end def accordion_select From 090909fbcad4223218bbcfc9b680aba702259dac Mon Sep 17 00:00:00 2001 From: Zita Nemeckova Date: Thu, 2 Jan 2020 16:51:15 +0100 Subject: [PATCH 8/8] Set @gtl_type to 'list' so list is displayed instead of quadicon(without image) --- app/controllers/pxe_controller.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/controllers/pxe_controller.rb b/app/controllers/pxe_controller.rb index 2f6eecf41c6..5d0eacb6486 100644 --- a/app/controllers/pxe_controller.rb +++ b/app/controllers/pxe_controller.rb @@ -57,6 +57,11 @@ def previous_breadcrumb_url url_for_only_path(:action => action) end + def tagging_edit_tags_reset + @gtl_type = 'list' + super + end + def accordion_select super(true) end