Class: Actions::Katello::ContentView::IncrementalUpdates
- Inherits:
-
EntryAction
- Object
- EntryAction
- Actions::Katello::ContentView::IncrementalUpdates
- Includes:
- Helpers::Presenter
- Defined in:
- app/lib/actions/katello/content_view/incremental_updates.rb
Instance Method Summary collapse
- #content_output(total_count) ⇒ Object
- #content_output_collection(total_count) ⇒ Object
- #handle_composites(old_new_version_map, composite_version_environments, output_for_version_ids, description) ⇒ Object
- #humanized_name ⇒ Object
- #plan(version_environments, composite_version_environments, content, dep_solve, hosts, description, use_remote_execution = false) ⇒ Object
- #presenter ⇒ Object
- #run ⇒ Object
- #total_counts(input) ⇒ Object
Instance Method Details
#content_output(total_count) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'app/lib/actions/katello/content_view/incremental_updates.rb', line 107 def content_output(total_count) content = content_output_collection(total_count) if content.count >= 1 = _("with") if content.count == 1 + content[0] else += content.pop while content.count > 0 if content.count == 1 = + _(", and") + content.pop else = + "," + content.pop end end end else = "" end end |
#content_output_collection(total_count) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'app/lib/actions/katello/content_view/incremental_updates.rb', line 129 def content_output_collection(total_count) content = [] if total_count[:errata_count] && total_count[:errata_count] > 0 errata = _(" %{errata_count} Errata" % {:errata_count => total_count[:errata_count]}) content << errata end if total_count[:modulemd_count] && total_count[:modulemd_count] > 0 modulemd = _(" %{modulemd_count} Module Stream(s)" % {:modulemd_count => total_count[:modulemd_count]}) content << modulemd end if total_count[:rpm_count] && total_count[:rpm_count] > 0 rpm = _(" %{package_count} Package(s)" % {:package_count => total_count[:rpm_count]}) content << rpm end content end |
#handle_composites(old_new_version_map, composite_version_environments, output_for_version_ids, description) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'app/lib/actions/katello/content_view/incremental_updates.rb', line 47 def handle_composites(old_new_version_map, composite_version_environments, output_for_version_ids, description) concurrence do composite_version_environments.each do |version_environment| composite_version = version_environment[:content_view_version] environments = version_environment[:environments] new_components = composite_version.components.map { |component| old_new_version_map[component] }.compact if new_components.empty? fail _("Incremental update specified for composite %{name} version %{version}, but no components updated.") % {:name => composite_version.content_view.name, :version => composite_version.version} end action = plan_action(ContentViewVersion::IncrementalUpdate, composite_version, environments, :new_components => new_components, :description => description) output_for_version_ids << {:version_id => action.new_content_view_version_id, :output => action.output} end end end |
#humanized_name ⇒ Object
84 85 86 87 88 |
# File 'app/lib/actions/katello/content_view/incremental_updates.rb', line 84 def humanized_name total_count = total_counts(input) _("Incremental Update of %{content_view_count} Content View Version(s) " % {:content_view_count => total_count[:content_view_count]}) + content_output(total_count) end |
#plan(version_environments, composite_version_environments, content, dep_solve, hosts, description, use_remote_execution = false) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'app/lib/actions/katello/content_view/incremental_updates.rb', line 7 def plan(version_environments, composite_version_environments, content, dep_solve, hosts, description, use_remote_execution = false) old_new_version_map = {} output_for_version_ids = [] sequence do concurrence do version_environments.each do |version_environment| version = version_environment[:content_view_version] if version.content_view.generated? fail _("Cannot perform an incremental update on a Generated Content View Version (%{name} version version %{version}") % {:name => version.content_view.name, :version => version.version} end if version.content_view.composite? fail _("Cannot perform an incremental update on a Composite Content View Version (%{name} version version %{version}") % {:name => version.content_view.name, :version => version.version} end action = plan_action(ContentViewVersion::IncrementalUpdate, version, version_environment[:environments], :resolve_dependencies => dep_solve, :content => content, :description => description) old_new_version_map[version] = action.new_content_view_version output_for_version_ids << {:version_id => action.new_content_view_version.id, :output => action.output} end end if composite_version_environments.any? handle_composites(old_new_version_map, composite_version_environments, output_for_version_ids, description) end if hosts.any? && !content[:errata_ids].blank? && !use_remote_execution errata = ::Katello::Erratum.with_identifiers(content[:errata_ids]) hosts = hosts.where(:id => ::Katello::Host::ContentFacet.with_applicable_errata(errata).pluck(:host_id)) plan_action(::Actions::BulkAction, ::Actions::Katello::Host::Erratum::ApplicableErrataInstall, hosts, :errata_ids => content[:errata_ids]) end plan_self(:version_outputs => output_for_version_ids, :host_ids => hosts.pluck(:id), :errata_ids => content[:errata_ids], :use_remote_execution => use_remote_execution) end end |
#presenter ⇒ Object
146 147 148 |
# File 'app/lib/actions/katello/content_view/incremental_updates.rb', line 146 def presenter Presenters::IncrementalUpdatesPresenter.new(self) end |
#run ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'app/lib/actions/katello/content_view/incremental_updates.rb', line 67 def run if input[:errata_ids].present? && input[:host_ids].present? && input[:use_remote_execution] errata_ids = input[:errata_ids].join(',') errata = ::Katello::Erratum.with_identifiers(input[:errata_ids]) hosts = ::Host.where(:id => input[:host_ids] & ::Katello::Host::ContentFacet.with_applicable_errata(errata).pluck(:host_id)) JobInvocationComposer.for_feature('katello_errata_install', hosts, { :errata => errata_ids }).trigger end output[:changed_content] = input[:version_outputs].map do |version_output| { :content_view_version => {:id => version_output[:version_id]}, :added_units => version_output[:output][:added_units] } end end |
#total_counts(input) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'app/lib/actions/katello/content_view/incremental_updates.rb', line 90 def total_counts(input) total_count = {} if input && input[:version_outputs] content_view_count = input[:version_outputs].length input[:version_outputs].map do |version_output| added_units = version_output.try(:[], :output).try(:[], :added_units) if added_units total_count[:errata_count] = added_units[:erratum].try(:count) total_count[:modulemd_count] = added_units[:modulemd].try(:count) total_count[:rpm_count] = added_units[:rpm].try(:count) end end end total_count[:content_view_count] = content_view_count total_count end |