diff --git a/app/models/katello/concerns/smart_proxy_extensions.rb b/app/models/katello/concerns/smart_proxy_extensions.rb index 12eac3bd72d..0311b4422a4 100644 --- a/app/models/katello/concerns/smart_proxy_extensions.rb +++ b/app/models/katello/concerns/smart_proxy_extensions.rb @@ -131,9 +131,13 @@ def alternate_content_sources SmartProxy.joins(:smart_proxy_alternate_content_sources).where('katello_smart_proxy_alternate_content_sources.smart_proxy_id' => self.id) end - def registration_host + def registration_url url = self.setting('Registration', 'registration_url').presence || self.url - URI.parse(url).host + URI(url) + end + + def registration_host + registration_url.host end def load_balanced? @@ -598,12 +602,16 @@ def pulp_content_url URI(setting(SmartProxy::PULP3_FEATURE, 'content_app_url')) end + def load_balancer_pulp_content_url + URI::HTTPS.build(host: registration_url.host, path: pulp_content_url.path) + end + def audit_capsule_sync write_audit(action: "sync capsule", comment: _('Successfully synced capsule.'), audited_changes: {}) end class ::SmartProxy::Jail < ::Safemode::Jail - allow :rhsm_url, :pulp_content_url + allow :rhsm_url, :pulp_content_url, :load_balancer_pulp_content_url, :registration_url end end end diff --git a/app/views/katello/api/v2/content_facet/base.json.rabl b/app/views/katello/api/v2/content_facet/base.json.rabl index cc7cb976f66..399bf8b278a 100644 --- a/app/views/katello/api/v2/content_facet/base.json.rabl +++ b/app/views/katello/api/v2/content_facet/base.json.rabl @@ -61,7 +61,8 @@ node :lifecycle_environment do |content_facet| end child :content_source => :content_source do - attributes :id, :name, :url + attributes :id, :name, :url, :registration_host + node(:load_balanced) { |content_source| content_source.load_balanced? } end child :kickstart_repository => :kickstart_repository do diff --git a/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js b/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js index cb9cddda82c..7d02b1a194d 100644 --- a/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +++ b/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js @@ -1,5 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; +import { FormattedMessage } from 'react-intl'; import { translate as __ } from 'foremanReact/common/I18n'; import { DescriptionList, @@ -55,12 +56,14 @@ const RegistrationCard = ({ isExpandedGlobal, hostDetails }) => { const subscriptionFacetAttributes = propsToCamelCase(hostDetails?.subscription_facet_attributes || {}); const { - registeredAt, activationKeys, user, + registeredAt, registeredThrough, activationKeys, user, } = subscriptionFacetAttributes; const contentFacetAttributes = propsToCamelCase(hostDetails?.content_facet_attributes || {}); const { contentSourceName } = contentFacetAttributes; + const { contentSource } = propsToCamelCase(contentFacetAttributes || {}); + const { loadBalanced, registrationHost } = propsToCamelCase(contentSource || {}); const login = user?.login; if (!registeredAt) return null; return ( @@ -79,9 +82,32 @@ const RegistrationCard = ({ isExpandedGlobal, hostDetails }) => { {__('Registered by')} + + {__('Registered to')} + {registeredThrough} + + {loadBalanced && ( + + {__('Load balancer')} + {registrationHost} + + )} {__('Content source')} - {contentSourceName} + {!loadBalanced && ( + {contentSourceName} + )} + {loadBalanced && ( + + {contentSourceName}, + }} + /> + + )}