|
#
|
|
# Copyright 2014 Red Hat, Inc.
|
|
#
|
|
# This software is licensed to you under the GNU General Public
|
|
# License as published by the Free Software Foundation; either version
|
|
# 2 of the License (GPLv2) or (at your option) any later version.
|
|
# There is NO WARRANTY for this software, express or implied,
|
|
# including the implied warranties of MERCHANTABILITY,
|
|
# NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
|
|
# have received a copy of GPLv2 along with this software; if not, see
|
|
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
|
|
|
module Actions
|
|
module Katello
|
|
module Repository
|
|
class Sync < Actions::EntryAction
|
|
|
|
include Helpers::Presenter
|
|
|
|
input_format do
|
|
param :id, Integer
|
|
param :sync_result, Hash
|
|
end
|
|
|
|
# @param repo
|
|
# @param pulp_sync_task_id in case the sync was triggered outside
|
|
# of Katello and we just need to finish the rest of the orchestration
|
|
def plan(repo, pulp_sync_task_id = nil)
|
|
sync_task = nil
|
|
action_subject(repo)
|
|
|
|
if repo.url.blank?
|
|
fail _("Unable to sync %s. This repository does not have a feed url.")
|
|
end
|
|
|
|
sequence do
|
|
sync_task = plan_action(Pulp::Repository::Sync, pulp_id: repo.pulp_id, task_id: pulp_sync_task_id)
|
|
concurrence do
|
|
plan_action(Katello::Repository::NodeMetadataGenerate, repo, sync_task.output[:pulp_tasks])
|
|
|
|
plan_action(ElasticSearch::Repository::IndexContent, dependency: sync_task.output[:pulp_tasks], id: repo.id)
|
|
end
|
|
plan_action(ElasticSearch::Reindex, repo)
|
|
plan_action(Katello::Foreman::ContentUpdate, repo.environment, repo.content_view)
|
|
plan_action(Katello::Repository::CorrectChecksum, repo)
|
|
plan_action(Katello::Repository::UpdateMedia, repo)
|
|
end
|
|
plan_self(:sync_result => sync_task.output)
|
|
end
|
|
|
|
def run
|
|
output[:sync_result] = input[:sync_result]
|
|
end
|
|
|
|
def humanized_name
|
|
_("Synchronize") # TODO: rename class to Synchronize and remove this method, add Sync = Synchronize
|
|
end
|
|
|
|
def presenter
|
|
Helpers::Presenter::Delegated.new(self, planned_actions(Pulp::Repository::Sync))
|
|
end
|
|
|
|
def pulp_task_id
|
|
pulp_action = planned_actions(Pulp::Repository::Sync).first
|
|
if pulp_task = Array(pulp_action.external_task).first
|
|
pulp_task.fetch(:task_id)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|