-
Notifications
You must be signed in to change notification settings - Fork 66
Hub Execution Environments
Overview > Execution Environments
An Execution Environment is really a container.
Hub serves as a local container registry, allowing users to upload containers (these are called local EEs), and it can also download containers from other registries (these are called remote EEs).
In pulp terms an execution environment is a pulp_container repository + namespace + distribution (while a Remote Registry is a pulp remote).
Adding locals can only be done using podman/docker:
podman | docker |
---|---|
podman login localhost:5001 --tls-verify=false |
docker login localhost:5001 |
podman pull docker.io/library/alpine |
docker pull alpine |
podman image tag alpine localhost:5001/alpine:latest |
docker image tag alpine localhost:5001/alpine:latest |
podman push localhost:5001/alpine:latest --tls-verify=false |
docker push localhost:5001/alpine:latest |
on dev, this needs /v2/
and /extensions/v2/
proxied to oci-env if you're talking to webpack.
UI for adding remote EEs needs a Remote Registry to exist, and allows adding remote containers to be synced from a remote registry. You can pick a subset of tags to sync (eg. just latest), it's a good idea to do that, pulling large containers with all their versions tends to fail because of rate-limiting on the other side. A remote EE's name can be different than the remote counterpart, the remote name corresponds to the name on the other server, for non-namespaced names some remote registries won't find it without a library/
prefix (eg. alpine
becomes library/alpine
but foo/bar
stays as is). Once added, the remote EE doesn't sync by default, you have to triggger the sync manually. Until that happens, the EE is visible but mostly empty, can't be pulled from.
Local and Remote containers are mostly identical in the UI, except remotes can be synced and the edit form is different.
A "Use in Controller" action is available for containers - you can select a container by tag or digest (sha), and use the use in controller modal to open this in a linked Controller instance. This requires the backend configured with at least one linked Controller url:
(in compose.env
:)
PULP_CONNECTED_ANSIBLE_CONTROLLERS='["https://controller.example.com"]'
All this really does is use the container info and the selected server URL to construct a link into the Controller UI, with the choice of containers prefilled by the shas.
(My assumption would be that in AAP this would be removed from upstream, and hardcoded to use the local controller urls downstream.)
https://ansible.readthedocs.io/projects/galaxy-ng/en/latest/config/container_signing/
TODO
detail screens..
Activity, Images, Image layers (by tag & digest)
multi-arch images
namespace optional - magic route suffix
PageFramework
PageHeader
PageLayout
PageDashboard
PageDashboardCarousel
PageDetails
PageForm
PageTable
PageTabs
PageToolbar
BulkActionDialog
BulkConfirmationDialog
EmptyState
PageCarousel
ReorderItems
useBreakPoint
useFrameworkTranslations
useInMemoryView
useIsMounted
useOpen
usePageNavigate
useSearchParams
useSelectDialog
useTableItems
useView
useWindowLocation
useDeleteRequest
useGet
useGetAllPagesAWX
useGetItem
useGetRequest
useOptions
usePatchRequest
usePostRequest