PulpV3GapAnalysis » History » Revision 8
Revision 7 (Brian Bouterse, 06/08/2018 03:09 PM) → Revision 8/40 (Brian Bouterse, 06/08/2018 03:55 PM)
h1. PulpV3GapAnalysis
h1. Content Tab
h2. Content -> Red Hat Repositories
Katello knows the content URLs from candlepin, matches on the CDN, presents them to the user, the user selects them
* Katello creates a Repo tracking this in Pulp with client certificates and CA certificate
* Katello specifies custom options from the 'Custom Repo Creation Page' but these use cases are covered in that section
Katello deletes a Repository
h2. Content -> Products
h3. Content -> Products -> New Product (used for things like CentOS, SLES, etc)
All data here is stored only in Katello since this is a Product not a Repository and Pulp doesn't have a concept of a Product
Sync Plans will *not* be handled inside of Pulp
h3. Content -> Products -> {product_name} -> Repositories
The user selects a type and content-specific fields are shown.
h4. Debian:
h5. Sync Options
* Upstream URL (str)
* Releases (csv list)
* Components (csv list)
* Architectures (csv list)
* Verify SSL (boolean)
* Upstream username (str)
* Upstream password (str)
* Ignore Global http Proxy (bool)
h5. Publish Options
* Publish via HTTP (bool) <----------------------------- PROBLEM AREA
h4. Docker
* Sync Options
* Ustream URL (str)
* Upstream Repository Name (str)
* Verify SSL (bool)
* Upstream username (str)
* Upstream password (str)
* Ignore Global http Proxy (bool)
h4. File
h5. Sync Options
* Upstream URL (str)
* Verify SSL (boolean)
* Upstream username (str)
* Upstream password (str)
* Ignore Global http Proxy (bool)
h5. Publish Options
* Publish via HTTP (bool) <----------------------------- PROBLEM AREA
h4. OSTree
h5. Sync Options
* Upstream URL (str)
* Upstream Sync Policy (choice): Latest Only, All History, Custom Depth (with a number specified) <--- in Pulp2 also specified on distributor
* Verify SSL (boolean)
* Upstream username (str)
* Upstream password (str)
* Ignore Global http Proxy (bool)
h4. Puppet
h5. Sync Options
* Upstream URL (str)
* Verify SSL (boolean)
* Upstream username (str)
* Upstream password (str)
* Mirror on Sync (boolean)
* Ignore Global http Proxy (bool)
h5. Publish Options
* Publish via HTTP (bool) <----------------------------- PROBLEM AREA
h4. Yum
h5. General Fields <------ not used by Pulp
* Restrict to Architecture (choice)
* GPG Key (str)
h5. Sync Settings
* Upstream URL (str)
* Ignorable Content (multiselect): RPM, DRPM, SRPM, Errata, Distribution
* Verify SSL (boolean)
* Upstream username (str)
* Upstream password (str)
* Download Policy (choice): (On Demand, Background, Immediate) <---- Background does not have a strong use case
* Mirror on Sync (bool)
* Ignore Global http Proxy (bool)
* SSL CA Cert (str)
* SSL Client Cert (str)
* SSL Client Key(str)
h5. Publish Settings
* Checksum: (choice) Default, sha256, sha1 <----- for all repodata including primary.xml
h3. Content -> Products -> {product_name} -> Repositories -> {repository_name}
This displays a created repository.
Katello allows the user to upload a package
* Receives the data from the user, sends it to Pulp
* Relies on Pulp to fully parse the metadata and create the unit <------- REQUIREMENT: must have Pulp determine all metadata
* Associates the the unit with the repository
Katello Reads a content Summary on this page
h5. Content -> Products -> {product_name} -> Repositories -> {repository_name} -> Select Action -> Sync Now
Katello tells the remote associated with the repository to sync
h5. Content -> Products -> {product_name} -> Repositories -> {repository_name} -> Select Action -> Advaced Sync
Katello can peroform an 'Advnaced Sync':
Optimized Sync - Normal sync, presented
Complete Sync - force-full on sync and force-full on publish <--------------------- GAP because we don't have force-full
Validate Content Sync - performs a checksum validation on all packages
* True Purpose: Validate existing downloaded content and redownload if the file(s) are missing or corrupt, redownload them. <-------- GAP
h5. Content -> Products -> {product_name} -> Repositories -> {repository_name} -> Select Action -> Republish Repository Metadata
Republishes the metadata.
* Katello would create a new Publication and update the Distribution
h5. Content -> Products -> {product_name} -> Repositories -> {repository_name} -> Select Action -> Delete a Repository
Deletes a repository
h3. Content -> Products -> {product_name} -> Repositories
This is the index view of all repositories
Repsitories in Katello can have the same name, but Pulp enforces a unique name on repositories globally <--------- GAP
Katello takes a Product ID which resolves to a set of repos. Katello fetches this set of repos. For each repo we need to fetch:
* name (str)
* type (str), e.g. 'yum'
* sync status, e.g. 'Not synced, Pending, Error' <------------------------- GAP this would require a second call to load the data per Remote
* Content Summary, e.g. 2 packages, 5 errata, etc. Similarly for other types.
Katello can trigger a sync of one or more Repositories at once.
* Trigger the sync on one or more Remotes as independant calls
Katello can trigger a delete of one or more Repositories at once.
* Trigger the delete call to Pulp as independant calls
Search/Filtering of the list of Repositories, for Repository attributes
* content_type: the type of content
* content_view_id: the id of the content View <-------- not in Pulp anywhere currently
* ignore_global_proxy <--------- GAP area, not currently in Pulp, but probably should be
* name
* product
* redhat <---------- Anything added from Red Hat "Products" page in Katello gets Red Hat.
Search/Filtering of the list of Repositories, for content units
* distribution_arch:
* distribution_bootable <----------- if Katello can detect if it has a vmlinuz init.rd it knows the distribution is bootable. Detected at the end of every sync.
* distribution_family
* distribution_uuid
* distribution_variant
* distribution_version
*NOTE: Must not have to make a call for each item in a list page. Must be able to make one call.*
h3. Content -> Products -> {product_name} -> Repositories -> {repository_name} -> Packages
Lists packages in a repository (the latest repository version)
Removing packages from the repository
* Can remove n packages from the repository
* Republish, Redistribute the repository
h2. Content -> Content Credentials
h3. Content -> Content Credentials -> GPG Keys
GPG keys can be created and stored by Katello
Pulp3 recommendation is to use pulp_file to hold the GPG keys hosted for clients to receive
h3. Content -> Content Credentials -> SSL Certificate (GAP. This whole section is a GAP b/c Pulp doesn't "host" SSL certs, you have to manually install them on the filesystem first)
Stores SSL certificates for use by Pulp at sync time as CA cert, client cert, or client key
* name
* value
Supports updating them
Support deleting them
Support searching them (name, organization_id)
SSL Certs are per-product, so Katello needs some way to restrict the set of available SSL certs for the current "product"
h2. Content -> Sync Plans
Sync plans will not be handled by Pulp 3, Katello/Foreman will handle scheduling.
h2. Content -> Sync Status
Show the most-recent sync status from dynflow data. That data is populated by task status results from Pulp, which needs to contain at a minimum:
* start time
* create time
* end time
* state
* progress reports
* fatal errors
* non-fatal errors
h2. Content -> Lifecycle
h2. Content -> Lifecycle Environments
Creates a lifecycle environment
* Does *not* involve Pulp
h3. Content -> Lifecycle Environments -> {name} -> Details
Each lifecycle environment has a 'Registry Name Pattern'. <------- GAP (specific to Docker only)
* Likely going to be on the Distributor
* Katello would use the template to produce a concrete value to set on the Distributor
* Important to ensure that two Distribution don't both receive the same concrete values
h3. Content -> Lifecycle Environments -> {name} -> Content Views
Filterable by:
* composite
* label
* name
* organization_id
h3. Content -> Lifecycle Environments -> {name} -> Yum Repositories
Content will come from CV section on Yum Repositories
h3. Content -> Lifecycle Environments -> {name} -> Errata
Content will come from CV section on Errata
h3. Content -> Lifecycle Environments -> {name} -> Packages
Content will come from CV section on Packages
h3. Content -> Lifecycle Environments -> {name} -> Puppet Modules
Content will come from CV section on Puppet Modules
h3. Content -> Lifecycle Environments -> {name} -> Container Image Tags
Content will come from CV section on Container Image Tags
h3. Content -> Lifecycle Environments -> {name} -> OSTree Branches
Content will come from CV section on OSTree Branches
h2. Content -> Content Views
h3. Content -> Content Views -> {name} -> Yum Repositories
List/Remove/Add one or more repositories to the Content View
* Does *not* involve Pulp
h3. Content -> Content Views -> {name} -> Yum Filters
h2. Content -> Activation Keys
h2. Content -> Content Types
h2. Content -> Deb Packages
h2. Content -> Container Image Tags
h2. Content -> Errata
h2. Content -> Files
h2. Content -> OSTree Branches
h2. Content -> Packages
h2. Content -> Puppet Modules
h1. Hosts -> Content Hosts
h1. Non UI things
* the API endpoint that clients upload their enabled repos
* the API endpoint that clients upload their package profiles
* the API endpoint that clients register
* the API endpoint that clients unregister
* speed throttling and other global settings?
* Errata mailer
* smart proxy page/details
h1. Terminology
Candlepin Manifest - Defines Products, Subscriptions, and a Content Sets
Product - A collection of repositories. A repository can only belong to one product
Repository Set - Has a name, Label, and URL of the form: /content/rhel/server/7/$RELVER/$BASEARCH/os/