Class: Katello::Api::V2::ContentViewVersionsController

Inherits:
ApiController
  • Object
show all
Includes:
Api::V2::BulkHostsExtension, Concerns::FilteredAutoCompleteSearch
Defined in:
app/controllers/katello/api/v2/content_view_versions_controller.rb

Constant Summary

Constants included from Concerns::FilteredAutoCompleteSearch

Concerns::FilteredAutoCompleteSearch::PAGE_SIZE

Instance Method Summary collapse

Methods included from Concerns::FilteredAutoCompleteSearch

#auto_complete_search

Methods inherited from ApiController

#empty_search_query?, #full_result_response, #resource_class, #scoped_search, #skip_session

Methods included from Rendering

#respond_for_async, #respond_for_bulk_async, #respond_for_create, #respond_for_destroy, #respond_for_index, #respond_for_show, #respond_for_status, #respond_for_update, #respond_with_template, #respond_with_template_collection, #respond_with_template_resource, #try_specific_collection_template, #try_specific_resource_template

Methods included from Katello::Api::Version2

#api_version

Instance Method Details

#destroyObject



102
103
104
105
106
107
108
# File 'app/controllers/katello/api/v2/content_view_versions_controller.rb', line 102

def destroy
  if @view.rolling?
    fail HttpErrors::BadRequest, _("It's not possible to destroy a version of a rolling content view.")
  end
  task = async_task(::Actions::Katello::ContentViewVersion::Destroy, @content_view_version)
  respond_for_async :resource => task
end

#incremental_updateObject



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'app/controllers/katello/api/v2/content_view_versions_controller.rb', line 132

def incremental_update
  if params[:add_content].values.flatten.empty?
    fail HttpErrors::BadRequest, _("Incremental update requires at least one content unit")
  end
  any_environments = params[:content_view_version_environments].any? { |cvve| cvve[:environment_ids].try(:any?) }
  if params[:add_content]&.key?(:errata_ids) && params[:update_hosts] && any_environments
    hosts = calculate_hosts_for_incremental(params[:update_hosts], params[:propagate_to_composites])
  else
    hosts = []
  end

  validate_content(params[:add_content])
  resolve_dependencies = params.fetch(:resolve_dependencies, true)
  task = async_task(::Actions::Katello::ContentView::IncrementalUpdates, @content_view_version_environments, @composite_version_environments,
                    params[:add_content], resolve_dependencies, hosts, params[:description])
  respond_for_async :resource => task
end

#indexObject



29
30
31
32
33
34
# File 'app/controllers/katello/api/v2/content_view_versions_controller.rb', line 29

def index
  options = {
    :includes => [:content_view, :environments, :composite_content_views, :history => :task],
  }
  respond(:collection => scoped_search(index_relation.distinct, :version, :desc, options))
end

#index_relationObject



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/controllers/katello/api/v2/content_view_versions_controller.rb', line 36

def index_relation
  version_number = params.permit(:version)[:version]
  versions = ContentViewVersion.readable
  versions = versions.triggered_by(params[:triggered_by_id]) if params[:triggered_by_id]
  versions = versions.with_organization_id(params[:organization_id]) if params[:organization_id]
  versions = versions.non_default_view if ::Foreman::Cast.to_bool(params[:nondefault])
  versions = versions.where(:content_view_id => @view.id) if @view
  versions = versions.for_version(version_number) if version_number
  versions = versions.in_environment(@environment) if @environment
  versions = versions.component_of(params[:composite_version_id]) if params[:composite_version_id]
  versions = versions.contains_file(params[:file_id]) if params[:file_id]
  versions
end

#promoteObject



62
63
64
65
66
67
68
69
70
# File 'app/controllers/katello/api/v2/content_view_versions_controller.rb', line 62

def promote
  if @view.rolling?
    fail HttpErrors::BadRequest, _("It's not possible to promote a rolling content view.")
  end
  is_force = ::Foreman::Cast.to_bool(params[:force])
  task = async_task(::Actions::Katello::ContentView::Promote,
                    @content_view_version, @environments, is_force, params[:description])
  respond_for_async :resource => task
end

#republish_repositoriesObject



89
90
91
92
93
94
95
96
97
98
# File 'app/controllers/katello/api/v2/content_view_versions_controller.rb', line 89

def republish_repositories
  mirror_complete_repos = @content_view_version.repositories.joins(:root).where(root: { mirroring_policy: ::Katello::RootRepository::MIRRORING_POLICY_COMPLETE })
  if mirror_complete_repos.size > 0 && !::Foreman::Cast.to_bool(params[:force])
    fail HttpErrors::BadRequest, _("Metadata republishing is dangerous on content view versions with repositories with the 'Complete Mirroring' mirroring policy.
Change the mirroring policy on these repositories: #{mirror_complete_repos.pluck(:name)} and try again.
Alternatively, use the 'force' parameter to regenerate metadata locally. New versions of the content view will continue to use upstream metadata for repositories with 'Complete Mirroring'.")
  end
  task = async_task(::Actions::Katello::ContentViewVersion::RepublishRepositories, @content_view_version, force: ::Foreman::Cast.to_bool(params[:force]))
  respond_for_async :resource => task
end

#showObject



53
54
55
# File 'app/controllers/katello/api/v2/content_view_versions_controller.rb', line 53

def show
  respond :resource => @content_view_version
end

#updateObject



75
76
77
78
79
80
81
82
83
84
# File 'app/controllers/katello/api/v2/content_view_versions_controller.rb', line 75

def update
  history = @content_view_version.history.publish.first
  if history.blank?
    fail HttpErrors::BadRequest, _("This content view version doesn't have a history.")
  else
    history.notes = params[:description]
    history.save!
    respond_for_show(:resource => @content_view_version)
  end
end

#verify_checksumObject



152
153
154
155
# File 'app/controllers/katello/api/v2/content_view_versions_controller.rb', line 152

def verify_checksum
  task = async_task(::Actions::Katello::ContentViewVersion::VerifyChecksum, @content_view_version)
  respond_for_async :resource => task
end