app/views/katello/api/v2/capsule_content/sync_status.json.rabl
object @capsule
attribute :last_sync_time
node :last_sync_words do |_object|
@capsule&.last_sync_time ? time_ago_in_words(Time.parse(@capsule&.last_sync_time&.to_s)) : nil
end
attribute :download_policy
node :unsyncable_content_types do
::Katello::SmartProxyHelper.new(@capsule).unsyncable_content_types
end
child :active_sync_tasks => :active_sync_tasks do
extends 'foreman_tasks/api/tasks/show'
end
child :last_failed_sync_tasks => :last_failed_sync_tasks do
extends 'foreman_tasks/api/tasks/show'
end
child :last_sync_task => :last_sync_task do
extends 'foreman_tasks/api/tasks/show'
end
node :content_counts do
@capsule.content_counts
end
child :last_failed_reclaim_tasks => :last_failed_reclaim_tasks do
extends 'foreman_tasks/api/tasks/show'
end
child @lifecycle_environments => :lifecycle_environments do
extends 'katello/api/v2/common/identifier'
extends 'katello/api/v2/common/org_reference'
attributes :library
node :syncable do |env|
@capsule.environment_syncable?(env)
end
node :last_sync do |env|
last_env_sync_task = @capsule.last_env_sync_task(env)
attributes = {
:id => last_env_sync_task&.id,
:started_at => last_env_sync_task&.started_at,
:result => last_env_sync_task&.result,
:last_sync_words => last_env_sync_task.try(:started_at) ? time_ago_in_words(Time.parse(last_env_sync_task.started_at.to_s)) : nil
}
attributes
end
if @capsule.has_feature?(SmartProxy::PULP_NODE_FEATURE) || @capsule.has_feature?(SmartProxy::PULP3_FEATURE)
node :counts do |env|
{
:content_views => env.content_views.non_default.count
}
end
node :content_views do |env|
env.content_views.ignore_generated.map do |content_view|
cvv = ::Katello::ContentViewVersion.in_environment(env).find_by(:content_view => content_view)
attributes = {
:id => content_view.id,
:cvv_id => cvv&.id,
:cvv_version => cvv&.version,
:label => content_view.label,
:name => content_view.name,
:composite => content_view.composite,
:last_published => content_view.versions.empty? ? nil : content_view.versions.in_environment(env).first&.created_at,
:default => content_view.default,
:up_to_date => @capsule.repos_pending_sync(env, content_view).empty?,
:counts => {
:repositories => ::Katello::ContentViewVersion.in_environment(env).find_by(:content_view => content_view)&.archived_repos&.count
},
:repositories => ::Katello::ContentViewVersion.in_environment(env)&.find_by(:content_view => content_view)&.archived_repos&.map do |repo|
{
:id => repo.id,
:name => repo.name,
:library_id => repo.library_instance_id,
:product_id => repo.product_id,
:content_type => repo.content_type
}
end
}
attributes
end
end
end
end