Tracker #33448

Updated by Ian Ballou 6 months ago

Input: smart proxies, optional auth credentials (content credentials or basic auth info), optional headers (needed?), a base url, an optional list of subpaths, and http proxy info

DB tables draft:

-> belongs_to :gpg_key, :ssl_ca_cert, :ssl_client_cert, :ssl_client_key (optional)
-> belongs_to :product (optional, for CDN and probably RHUI ACS)
-> base_url
-> headers (needed?)
-> subpaths (array of strings)
-> type (custom, cdn, rhui)
-> content_type (custom only)
-> belongs_to :http_proxy
-> name
-> label
-> description
-> verify_ssl

-> smart_proxy_id
-> alternate_content_source_id
-> remote_href
-> alternate_content_source_href

Backend DB steps after create form is submitted:
-> Create ACS in Katello DB
-> Create ACSs in Pulp for each Smart Proxy associated to the Katello ACS:
-> Create Pulp remote using Katello ACS base url, auth credentials, headers (if using), and proxy info
-> Create Pulp ACS using the created remote and the Katello ACS’s subpaths
-> Create Smart Proxy ACSs with a remote href, ACS href, Smart Proxy ID, and ACS ID from the ACS creation tasks
-> Since smart proxies can share Katello ACSs but will have separate ACSs and ACS remotes in Pulp

If an ACS has a change in smart proxies, we need a schedule a task to create and/or delete the related ACSs.