Merge "add helm-toolkit patch on 0.2.78" into stable/zed
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 3cb5d57..bd2d792 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,6 +1,21 @@
-exclude: '^(roles/kube_prometheus_stack/files/jsonnet|charts)'
+exclude: "^(roles/kube_prometheus_stack/files/jsonnet|charts)"
repos:
+ - repo: local
+ hooks:
+ - id: check-spdx-copyright-text
+ name: Check SPDX-FileCopyrightText
+ entry: '# SPDX-FileCopyrightText: © [0-9]{4} VEXXHOST, Inc.'
+ language: pygrep
+ args: [--negate]
+ files: ^images/.*/Dockerfile$
+ - id: check-spdx-license-identifier
+ name: Check SPDX-License-Identifier
+ entry: '# SPDX-License-Identifier: GPL-3.0-or-later'
+ language: pygrep
+ args: [--negate]
+ files: ^images/.*/Dockerfile$
+
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
diff --git a/build/lint-jobs.py b/build/lint-jobs.py
deleted file mode 100644
index 3edfe12..0000000
--- a/build/lint-jobs.py
+++ /dev/null
@@ -1,42 +0,0 @@
-import sys
-import glob
-import yaml
-
-
-def main():
- passed = True
-
- for file in glob.glob("zuul.d/container-images/*.yaml"):
- with open(file, "r") as file:
- configs = yaml.safe_load(file)
-
- for config in configs:
- if "job" in config:
- job = config["job"]
-
- # Check if build or upload jobs are missing 'atmosphere-buildset-registry' dependency
- if (
- "build-container-image-" in job["name"]
- or "upload-container-image-" in job["name"]
- ):
- deps = job.get("dependencies", [])
- if not any(
- dep.get("name") == "atmosphere-buildset-registry"
- for dep in deps
- ):
- print(
- f"Job '{job['name']}' is missing 'atmosphere-buildset-registry' dependency."
- )
- passed = False
-
- if passed:
- print(
- "All build and upload jobs have 'atmosphere-buildset-registry' dependency."
- )
- else:
- print("Jobs missing 'atmosphere-buildset-registry' dependency.")
- sys.exit(1)
-
-
-if __name__ == "__main__":
- main()
diff --git a/build/pin-images.py b/build/pin-images.py
deleted file mode 100755
index 30700c3..0000000
--- a/build/pin-images.py
+++ /dev/null
@@ -1,177 +0,0 @@
-#!/usr/bin/env python3
-
-import argparse
-import functools
-
-import requests
-from docker_image import reference
-from oslo_config import cfg
-from oslo_log import log as logging
-from ruyaml import YAML
-
-LOG = logging.getLogger(__name__)
-CONF = cfg.CONF
-
-SKIP_IMAGE_LIST = ["secretgen_controller"]
-
-
-def get_digest(image_ref, token=None):
- url = f"https://{image_ref.domain()}/v2/{image_ref.path()}/manifests/{image_ref['tag']}"
-
- headers = {}
- if token:
- headers["Authorization"] = f"Bearer {token}"
- else:
- r = requests.get(url, timeout=5)
- auth_header = r.headers.get("Www-Authenticate")
- if auth_header:
- realm = auth_header.split(",")[0].split("=")[1].strip('"')
-
- r = requests.get(
- realm,
- timeout=5,
- params={"scope": f"repository:{image_ref.path()}:pull"},
- )
- r.raise_for_status()
-
- headers["Authorization"] = f"Bearer {r.json()['token']}"
-
- try:
- headers["Accept"] = "application/vnd.docker.distribution.manifest.v2+json"
-
- r = requests.get(
- f"https://{image_ref.domain()}/v2/{image_ref.path()}/manifests/{image_ref['tag']}",
- timeout=5,
- headers=headers,
- )
- r.raise_for_status()
- return r.headers["Docker-Content-Digest"]
- except requests.exceptions.HTTPError:
- headers["Accept"] = "application/vnd.oci.image.index.v1+json"
-
- r = requests.get(
- f"https://{image_ref.domain()}/v2/{image_ref.path()}/manifests/{image_ref['tag']}",
- timeout=5,
- headers=headers,
- )
- r.raise_for_status()
- return r.headers["Docker-Content-Digest"]
-
-
-@functools.cache
-def get_pinned_image(image_src):
- image_ref = reference.Reference.parse(image_src)
- if image_ref.domain() != "harbor.atmosphere.dev":
- image_ref = reference.Reference.parse("harbor.atmosphere.dev/" + image_src)
-
- if (
- image_ref.domain() == "registry.atmosphere.dev"
- or image_ref.domain() == "harbor.atmosphere.dev"
- ):
- # Get token for docker.io
- r = requests.get(
- "https://harbor.atmosphere.dev/service/token",
- timeout=5,
- params={
- "service": "harbor-registry",
- "scope": f"repository:{image_ref.path()}:pull",
- },
- )
- r.raise_for_status()
- token = r.json()["token"]
-
- digest = get_digest(image_ref, token=token)
- elif image_ref.domain() == "quay.io":
- r = requests.get(
- f"https://quay.io/api/v1/repository/{image_ref.path()}/tag/",
- timeout=5,
- params={"specificTag": image_ref["tag"]},
- )
- r.raise_for_status()
- digest = r.json()["tags"][0]["manifest_digest"]
- elif image_ref.domain() == "docker.io":
- # Get token for docker.io
- r = requests.get(
- "https://auth.docker.io/token",
- timeout=5,
- params={
- "service": "registry.docker.io",
- "scope": f"repository:{image_ref.path()}:pull",
- },
- )
- r.raise_for_status()
- token = r.json()["token"]
-
- r = requests.get(
- f"https://registry-1.docker.io/v2/{image_ref.path()}/manifests/{image_ref['tag']}",
- timeout=5,
- headers={
- "Accept": "application/vnd.docker.distribution.manifest.v2+json",
- "Authorization": f"Bearer {token}",
- },
- )
- r.raise_for_status()
- digest = r.headers["Docker-Content-Digest"]
- elif image_ref.domain() == "ghcr.io":
- # Get token for docker.io
- r = requests.get(
- "https://ghcr.io/token",
- timeout=5,
- params={
- "service": "ghcr.io",
- "scope": f"repository:{image_ref.path()}:pull",
- },
- )
- r.raise_for_status()
- token = r.json()["token"]
-
- digest = get_digest(image_ref, token=token)
- else:
- digest = get_digest(image_ref)
-
- original_ref = reference.Reference.parse(image_src)
- return (
- f"{original_ref.domain()}/{original_ref.path()}:{original_ref['tag']}@{digest}"
- )
-
-
-def main():
- logging.register_options(CONF)
- logging.setup(CONF, "atmosphere-bump-images")
-
- parser = argparse.ArgumentParser("bump-images")
- parser.add_argument(
- "src", help="Path for default values file", type=argparse.FileType("r")
- )
- parser.add_argument(
- "dst", help="Path for output file", type=argparse.FileType("r+")
- )
-
- args = parser.parse_args()
-
- yaml = YAML(typ="rt")
- data = yaml.load(args.src)
-
- for image in data["_atmosphere_images"]:
- if image in SKIP_IMAGE_LIST:
- continue
-
- image_src = (
- data["_atmosphere_images"][image]
- .replace("{{ atmosphere_release }}", data["atmosphere_release"])
- .replace("{{ atmosphere_image_prefix }}", "")
- )
- pinned_image = get_pinned_image(image_src).replace(
- "harbor.atmosphere.dev", "registry.atmosphere.dev"
- )
-
- LOG.info("Pinning image %s from %s to %s", image, image_src, pinned_image)
- data["_atmosphere_images"][image] = "{{ atmosphere_image_prefix }}%s" % (
- pinned_image,
- )
-
- yaml.dump(data, args.dst)
-
-
-if __name__ == "__main__":
- main()
diff --git a/charts/openvswitch/templates/bin/_openvswitch-vswitchd.sh.tpl b/charts/openvswitch/templates/bin/_openvswitch-vswitchd.sh.tpl
index dad613c..c1419b6 100644
--- a/charts/openvswitch/templates/bin/_openvswitch-vswitchd.sh.tpl
+++ b/charts/openvswitch/templates/bin/_openvswitch-vswitchd.sh.tpl
@@ -25,6 +25,7 @@
{{- if .Values.conf.ovs_dpdk.enabled }}
mkdir -p /run/openvswitch/{{ .Values.conf.ovs_dpdk.vhostuser_socket_dir }}
chown {{ .Values.pod.user.nova.uid }}.{{ .Values.pod.user.nova.uid }} /run/openvswitch/{{ .Values.conf.ovs_dpdk.vhostuser_socket_dir }}
+chown {{ .Values.pod.user.nova.uid }}.{{ .Values.pod.user.nova.uid }} {{ .Values.conf.ovs_dpdk.hugepages_mountpath }}
{{- end }}
function start () {
@@ -118,7 +119,8 @@
-vconsole:err \
-vconsole:info \
--pidfile=${OVS_PID} \
- --mlockall
+ --mlockall \
+ --user={{ .Values.conf.ovs_user_name }}
}
function stop () {
diff --git a/charts/openvswitch/templates/daemonset.yaml b/charts/openvswitch/templates/daemonset.yaml
index 3a66fa5..189b507 100644
--- a/charts/openvswitch/templates/daemonset.yaml
+++ b/charts/openvswitch/templates/daemonset.yaml
@@ -150,10 +150,10 @@
- name: run
mountPath: /run
- name: openvswitch-vswitchd
-{{- if .Values.conf.ovs_dpdk.enabled }}
{{/* Run the container in priviledged mode due to the need for root
-permissions when using the uio_pci_generic driver. */}}
+permissions when using --user to specify non root user. */}}
{{- $_ := set $envAll.Values.pod.security_context.ovs.container.vswitchd "privileged" true -}}
+{{- if .Values.conf.ovs_dpdk.enabled }}
{{/* Limiting CPU cores would severely affect packet throughput
It should be handled through lcore and pmd core masks. */}}
{{- if .Values.pod.resources.enabled }}
@@ -271,4 +271,4 @@
hostPath:
path: /sys/fs/cgroup
{{- end }}
-{{- end }}
\ No newline at end of file
+{{- end }}
diff --git a/charts/openvswitch/values.yaml b/charts/openvswitch/values.yaml
index 01aa93d..5555b60 100644
--- a/charts/openvswitch/values.yaml
+++ b/charts/openvswitch/values.yaml
@@ -241,4 +241,9 @@
# vHost IOMMU feature restricts the vhost memory that a virtio device
# access, available with DPDK v17.11
# vhost_iommu_support: true
+
+ ## OVS supports run in non-root for both OVS and OVS DPDK mode, you can
+ # optionally specify to use user with id 42424, ensure the user exists
+ # in the container image.
+ ovs_user_name: "openvswitch:openvswitch"
...
diff --git a/charts/patches/openvswitch/0001-add-openvswitch-user-for-OVS-to-make-it-run-non-root.patch b/charts/patches/openvswitch/0001-add-openvswitch-user-for-OVS-to-make-it-run-non-root.patch
new file mode 100644
index 0000000..327ecad
--- /dev/null
+++ b/charts/patches/openvswitch/0001-add-openvswitch-user-for-OVS-to-make-it-run-non-root.patch
@@ -0,0 +1,74 @@
+From a39ff68c922ecbc1ff9379d7bcd179d0de7d6643 Mon Sep 17 00:00:00 2001
+From: Yaguang Tang <yaguang.tang@vexxhost.com>
+Date: Sun, 19 Jan 2025 18:51:49 +0800
+Subject: [PATCH] add openvswitch user for OVS to make it run non-root
+
+Change-Id: Ib46f95221c4a978a78675c5140bbb8dfdabea3b7
+---
+ openvswitch/templates/bin/_openvswitch-vswitchd.sh.tpl | 4 +++-
+ openvswitch/templates/daemonset.yaml | 6 +++---
+ openvswitch/values.yaml | 5 +++++
+ 3 files changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/openvswitch/templates/bin/_openvswitch-vswitchd.sh.tpl b/openvswitch/templates/bin/_openvswitch-vswitchd.sh.tpl
+index dad613c3..c1419b66 100644
+--- a/openvswitch/templates/bin/_openvswitch-vswitchd.sh.tpl
++++ b/openvswitch/templates/bin/_openvswitch-vswitchd.sh.tpl
+@@ -25,6 +25,7 @@ OVS_PID=/run/openvswitch/ovs-vswitchd.pid
+ {{- if .Values.conf.ovs_dpdk.enabled }}
+ mkdir -p /run/openvswitch/{{ .Values.conf.ovs_dpdk.vhostuser_socket_dir }}
+ chown {{ .Values.pod.user.nova.uid }}.{{ .Values.pod.user.nova.uid }} /run/openvswitch/{{ .Values.conf.ovs_dpdk.vhostuser_socket_dir }}
++chown {{ .Values.pod.user.nova.uid }}.{{ .Values.pod.user.nova.uid }} {{ .Values.conf.ovs_dpdk.hugepages_mountpath }}
+ {{- end }}
+
+ function start () {
+@@ -118,7 +119,8 @@ function start () {
+ -vconsole:err \
+ -vconsole:info \
+ --pidfile=${OVS_PID} \
+- --mlockall
++ --mlockall \
++ --user={{ .Values.conf.ovs_user_name }}
+ }
+
+ function stop () {
+diff --git a/openvswitch/templates/daemonset.yaml b/openvswitch/templates/daemonset.yaml
+index 3a66fa51..189b507a 100644
+--- a/openvswitch/templates/daemonset.yaml
++++ b/openvswitch/templates/daemonset.yaml
+@@ -150,10 +150,10 @@ spec:
+ - name: run
+ mountPath: /run
+ - name: openvswitch-vswitchd
+-{{- if .Values.conf.ovs_dpdk.enabled }}
+ {{/* Run the container in priviledged mode due to the need for root
+-permissions when using the uio_pci_generic driver. */}}
++permissions when using --user to specify non root user. */}}
+ {{- $_ := set $envAll.Values.pod.security_context.ovs.container.vswitchd "privileged" true -}}
++{{- if .Values.conf.ovs_dpdk.enabled }}
+ {{/* Limiting CPU cores would severely affect packet throughput
+ It should be handled through lcore and pmd core masks. */}}
+ {{- if .Values.pod.resources.enabled }}
+@@ -271,4 +271,4 @@ It should be handled through lcore and pmd core masks. */}}
+ hostPath:
+ path: /sys/fs/cgroup
+ {{- end }}
+-{{- end }}
+\ No newline at end of file
++{{- end }}
+diff --git a/openvswitch/values.yaml b/openvswitch/values.yaml
+index 01aa93d3..5555b60f 100644
+--- a/openvswitch/values.yaml
++++ b/openvswitch/values.yaml
+@@ -241,4 +241,9 @@ conf:
+ # vHost IOMMU feature restricts the vhost memory that a virtio device
+ # access, available with DPDK v17.11
+ # vhost_iommu_support: true
++
++ ## OVS supports run in non-root for both OVS and OVS DPDK mode, you can
++ # optionally specify to use user with id 42424, ensure the user exists
++ # in the container image.
++ ovs_user_name: "openvswitch:openvswitch"
+ ...
+--
+2.39.5 (Apple Git-154)
diff --git a/cmd/pinimages/pinimages.go b/cmd/pinimages/pinimages.go
new file mode 100644
index 0000000..c19841e
--- /dev/null
+++ b/cmd/pinimages/pinimages.go
@@ -0,0 +1,197 @@
+package main
+
+import (
+ "context"
+ "fmt"
+ "os"
+ "strings"
+ "sync"
+
+ "github.com/containers/image/v5/docker"
+ "github.com/containers/image/v5/manifest"
+ "github.com/containers/image/v5/types"
+ "github.com/goccy/go-yaml"
+ "github.com/goccy/go-yaml/ast"
+ "github.com/goccy/go-yaml/parser"
+ "github.com/opencontainers/go-digest"
+ log "github.com/sirupsen/logrus"
+ "golang.org/x/sync/singleflight"
+)
+
+var digestGroup singleflight.Group
+
+// GetImageDigest fetches the digest for a given image reference.
+func GetImageDigest(ctx context.Context, reference string) (digest.Digest, error) {
+ ref, err := docker.ParseReference(reference)
+ if err != nil {
+ return "", fmt.Errorf("error parsing reference '%s': %w", reference, err)
+ }
+
+ sysCtx := &types.SystemContext{}
+ imageSource, err := ref.NewImageSource(ctx, sysCtx)
+ if err != nil {
+ return "", fmt.Errorf("error creating image source for '%s': %w", reference, err)
+ }
+ defer imageSource.Close()
+
+ rawManifest, _, err := imageSource.GetManifest(ctx, nil)
+ if err != nil {
+ return "", fmt.Errorf("error getting manifest for '%s': %w", reference, err)
+ }
+
+ dgst, err := manifest.Digest(rawManifest)
+ if err != nil {
+ return "", fmt.Errorf("error getting digest for '%s': %w", reference, err)
+ }
+
+ return dgst, nil
+}
+
+// GetImageNameToPull normalizes the image name by replacing variables and adding necessary prefixes.
+func GetImageNameToPull(image string, release string) string {
+ // Replace Jinja2 variables with actual values
+ image = strings.ReplaceAll(image, "{{ atmosphere_image_prefix }}", "")
+ image = strings.ReplaceAll(image, "{{ atmosphere_release }}", release)
+
+ // Add mirror if the image is not hosted with us
+ if !strings.HasPrefix(image, "registry.atmosphere.dev") {
+ image = fmt.Sprintf("harbor.atmosphere.dev/%s", image)
+ }
+
+ // Switch out of the CDN since we are in CI
+ if strings.HasPrefix(image, "registry.atmosphere.dev") {
+ image = strings.ReplaceAll(image, "registry.atmosphere.dev", "harbor.atmosphere.dev")
+ }
+
+ return image
+}
+
+// AppendDigestToImage appends the digest to the original image reference.
+func AppendDigestToImage(image string, dgst digest.Digest) string {
+ if strings.Contains(image, "@") {
+ // Replace existing digest if present
+ parts := strings.Split(image, "@")
+ return parts[0] + "@" + dgst.String()
+ }
+ // Append digest
+ return image + "@" + dgst.String()
+}
+
+func main() {
+ varsFilePath := "roles/defaults/vars/main.yml"
+
+ file, err := parser.ParseFile(varsFilePath, parser.ParseComments)
+ if err != nil {
+ log.WithError(err).Fatal("error parsing yaml file")
+ }
+
+ if len(file.Docs) != 1 {
+ log.Fatal("expected exactly one yaml document")
+ }
+
+ doc := file.Docs[0]
+ body := doc.Body.(*ast.MappingNode)
+
+ var release string
+ var images *ast.MappingNode
+
+ for _, item := range body.Values {
+ switch item.Key.(*ast.StringNode).Value {
+ case "atmosphere_release":
+ release = item.Value.(*ast.StringNode).Value
+ case "_atmosphere_images":
+ images = item.Value.(*ast.MappingNode)
+ }
+ }
+
+ if release == "" {
+ log.Fatalf("atmosphere_release not found")
+ }
+
+ if images == nil {
+ log.Fatalf("_atmosphere_images not found")
+ }
+
+ type imageInfo struct {
+ Key string
+ Value string
+ Normalized string
+ Digest digest.Digest
+ }
+
+ var imageInfos []imageInfo
+ uniqueImages := make(map[string][]int)
+
+ for i, item := range images.Values {
+ normalized := GetImageNameToPull(item.Value.(*ast.StringNode).Value, release)
+ info := imageInfo{
+ Key: item.Key.(*ast.StringNode).Value,
+ Value: item.Value.(*ast.StringNode).Value,
+ Normalized: normalized,
+ }
+ imageInfos = append(imageInfos, info)
+ uniqueImages[normalized] = append(uniqueImages[normalized], i)
+ }
+
+ digestMap := make(map[string]digest.Digest)
+ var mapMutex sync.Mutex
+ var wg sync.WaitGroup
+
+ for normImg := range uniqueImages {
+ wg.Add(1)
+ go func(normImg string) {
+ defer wg.Done()
+
+ result, err, _ := digestGroup.Do(normImg, func() (interface{}, error) {
+ dgst, err := GetImageDigest(context.TODO(), "//"+normImg)
+ if err != nil {
+ return nil, err
+ }
+ return dgst, nil
+ })
+
+ if err != nil {
+ log.WithError(err).WithFields(log.Fields{
+ "image": normImg,
+ }).Error("Error fetching digest")
+ return
+ }
+
+ dgst := result.(digest.Digest)
+
+ mapMutex.Lock()
+ digestMap[normImg] = dgst
+ mapMutex.Unlock()
+
+ log.WithFields(log.Fields{
+ "image": normImg,
+ "digest": dgst,
+ }).Info("Fetched image digest")
+ }(normImg)
+ }
+
+ wg.Wait()
+
+ // Update the image references with digests
+ for normImg, indices := range uniqueImages {
+ dgst, exists := digestMap[normImg]
+ if !exists {
+ log.WithField("image", normImg).Error("Digest not found, skipping update")
+ continue
+ }
+ for _, idx := range indices {
+ updatedImage, err := yaml.ValueToNode(AppendDigestToImage(imageInfos[idx].Value, dgst))
+ if err != nil {
+ log.WithError(err).Fatal("error converting value to node")
+ }
+
+ images.Values[idx].Value = updatedImage
+ }
+ }
+
+ if err := os.WriteFile(varsFilePath, []byte(file.String()), 0644); err != nil {
+ log.WithError(err).Fatal("error writing updated yaml file")
+ }
+
+ log.Info("Successfully updated YAML file with image digests")
+}
diff --git a/cmd/pinimages/pinimages_test.go b/cmd/pinimages/pinimages_test.go
new file mode 100644
index 0000000..3c480d2
--- /dev/null
+++ b/cmd/pinimages/pinimages_test.go
@@ -0,0 +1,34 @@
+package main
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestGetImageNameToPull(t *testing.T) {
+ tests := []struct {
+ image string
+ release string
+ want string
+ }{
+ {
+ image: "{{ atmosphere_image_prefix }}quay.io/ceph/ceph:v18.2.2",
+ release: "2024.1",
+ want: "harbor.atmosphere.dev/quay.io/ceph/ceph:v18.2.2",
+ },
+ {
+ image: "{{ atmosphere_image_prefix }}registry.atmosphere.dev/library/glance:{{ atmosphere_release }}",
+ release: "2024.1",
+ want: "harbor.atmosphere.dev/library/glance:2024.1",
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.image, func(t *testing.T) {
+ got := GetImageNameToPull(tt.image, tt.release)
+
+ assert.Equal(t, tt.want, got)
+ })
+ }
+}
diff --git a/docker-bake.hcl b/docker-bake.hcl
new file mode 100644
index 0000000..fb1b0fe
--- /dev/null
+++ b/docker-bake.hcl
@@ -0,0 +1,256 @@
+variable "REGISTRY" {
+ default = "harbor.atmosphere.dev/library"
+}
+
+variable "TAG" {
+ default = "main"
+}
+
+target "ubuntu" {
+ context = "images/ubuntu"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "ubuntu" = "docker-image://docker.io/library/ubuntu:jammy-20240227"
+ }
+}
+
+target "ubuntu-cloud-archive" {
+ context = "images/ubuntu-cloud-archive"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "ubuntu" = "target:ubuntu"
+ }
+}
+
+target "python-base" {
+ context = "images/python-base"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "ubuntu-cloud-archive" = "target:ubuntu-cloud-archive"
+ }
+}
+
+target "openstack-venv-builder" {
+ context = "images/openstack-venv-builder"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "ubuntu-cloud-archive" = "target:ubuntu-cloud-archive"
+ "python-base" = "target:python-base"
+ }
+}
+
+target "openstack-runtime" {
+ context = "images/openstack-runtime"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "base" = "target:ubuntu-cloud-archive"
+ }
+}
+
+target "openstack-python-runtime" {
+ context = "images/openstack-runtime"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "base" = "target:python-base"
+ }
+}
+
+target "keepalived" {
+ context = "images/keepalived"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "ubuntu" = "target:ubuntu"
+ }
+
+ tags = [
+ "${REGISTRY}/keepalived:${TAG}"
+ ]
+}
+
+target "kubernetes-entrypoint" {
+ context = "images/kubernetes-entrypoint"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "golang" = "docker-image://docker.io/library/golang:1.21"
+ }
+
+ tags = [
+ "${REGISTRY}/kubernetes-entrypoint:${TAG}"
+ ]
+}
+
+target "libvirtd" {
+ context = "images/libvirtd"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "openstack-runtime" = "target:openstack-runtime"
+ }
+
+ args = {
+ PROJECT = "nova"
+ }
+
+ tags = [
+ "${REGISTRY}/libvirtd:${TAG}"
+ ]
+}
+
+target "netoffload" {
+ context = "images/netoffload"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "golang" = "docker-image://docker.io/library/golang:1.20"
+ "ubuntu" = "target:ubuntu"
+ }
+
+ tags = [
+ "${REGISTRY}/netoffload:${TAG}"
+ ]
+}
+
+target "nova-ssh" {
+ context = "images/nova-ssh"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "openstack-runtime" = "target:openstack-runtime"
+ }
+
+ args = {
+ PROJECT = "nova"
+ }
+
+ tags = [
+ "${REGISTRY}/nova-ssh:${TAG}"
+ ]
+}
+
+target "openvswitch" {
+ context = "images/openvswitch"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "centos" = "docker-image://quay.io/centos/centos:stream9"
+ }
+
+ tags = [
+ "${REGISTRY}/openvswitch:${TAG}"
+ ]
+}
+
+target "ovn" {
+ name = "ovn-${component}"
+ matrix = {
+ component = ["host", "central"]
+ }
+
+ context = "images/ovn"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "golang" = "docker-image://docker.io/library/golang:1.20"
+ "openvswitch" = "target:openvswitch"
+ }
+
+ args = {
+ OVN_COMPONENT = "${component}"
+ }
+
+ tags = [
+ "${REGISTRY}/ovn-${component}:${TAG}"
+ ]
+}
+
+target "python-openstackclient" {
+ context = "images/python-openstackclient"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ contexts = {
+ "openstack-venv-builder" = "target:openstack-venv-builder"
+ "python-base" = "target:python-base"
+ }
+
+ tags = [
+ "${REGISTRY}/python-openstackclient:${TAG}"
+ ]
+}
+
+target "openstack" {
+ name = "openstack-${service}"
+ matrix = {
+ service = [
+ "barbican",
+ "cinder",
+ "designate",
+ "glance",
+ "heat",
+ "horizon",
+ "ironic",
+ "keystone",
+ "magnum",
+ "manila",
+ "neutron",
+ "nova",
+ "octavia",
+ "placement",
+ "staffeln",
+ "tempest",
+ ]
+ }
+
+ context = "images/${service}"
+ platforms = ["linux/amd64", "linux/arm64"]
+
+ args = {
+ PROJECT = "${service}"
+ }
+
+ contexts = {
+ "openstack-venv-builder" = "target:openstack-venv-builder"
+ "openstack-python-runtime" = "target:openstack-python-runtime"
+ }
+
+ tags = [
+ "${REGISTRY}/${service}:${TAG}"
+ ]
+}
+
+group "default" {
+ targets = [
+ "keepalived",
+ "kubernetes-entrypoint",
+ "libvirtd",
+ "netoffload",
+ "nova-ssh",
+ "openstack-barbican",
+ "openstack-cinder",
+ "openstack-designate",
+ "openstack-glance",
+ "openstack-heat",
+ "openstack-horizon",
+ "openstack-ironic",
+ "openstack-keystone",
+ "openstack-magnum",
+ "openstack-manila",
+ "openstack-neutron",
+ "openstack-nova",
+ "openstack-octavia",
+ "openstack-placement",
+ "openstack-staffeln",
+ "openstack-tempest",
+ "openvswitch",
+ "ovn-central",
+ "ovn-host",
+ "python-openstackclient",
+ ]
+}
diff --git a/go.mod b/go.mod
index 41a9305..f5ba530 100644
--- a/go.mod
+++ b/go.mod
@@ -5,8 +5,9 @@
require (
github.com/containers/image/v5 v5.30.1
github.com/erikgeiser/promptkit v0.9.0
- github.com/goccy/go-yaml v1.11.3
+ github.com/goccy/go-yaml v1.15.15
github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1
+ github.com/opencontainers/go-digest v1.0.0
github.com/percona/percona-xtradb-cluster-operator v1.14.0
github.com/prometheus/client_golang v1.19.1
github.com/prometheus/common v0.55.0
@@ -15,6 +16,7 @@
github.com/spf13/pflag v1.0.5
github.com/stretchr/testify v1.9.0
github.com/yannh/kubeconform v0.6.4
+ golang.org/x/sync v0.8.0
gopkg.in/ini.v1 v1.67.0
gopkg.in/yaml.v2 v2.4.0
gorm.io/driver/mysql v1.5.6
@@ -139,7 +141,6 @@
github.com/muesli/termenv v0.15.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
- github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0 // indirect
github.com/opencontainers/runtime-spec v1.2.0 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
@@ -170,13 +171,11 @@
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect
golang.org/x/net v0.27.0 // indirect
golang.org/x/oauth2 v0.21.0 // indirect
- golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.25.0 // indirect
golang.org/x/term v0.24.0 // indirect
golang.org/x/text v0.18.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.23.0 // indirect
- golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b // indirect
google.golang.org/grpc v1.65.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
diff --git a/go.sum b/go.sum
index 02cf386..723c243 100644
--- a/go.sum
+++ b/go.sum
@@ -166,12 +166,6 @@
github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4=
github.com/go-openapi/swag v0.22.10 h1:4y86NVn7Z2yYd6pfS4Z+Nyh3aAUL3Nul+LMbhFKy0gA=
github.com/go-openapi/swag v0.22.10/go.mod h1:Cnn8BYtRlx6BNE3DPN86f/xkapGIcLWzh3CLEb4C1jI=
-github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
-github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
-github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
-github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
-github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
-github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
@@ -181,8 +175,8 @@
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
-github.com/goccy/go-yaml v1.11.3 h1:B3W9IdWbvrUu2OYQGwvU1nZtvMQJPBKgBUuweJjLj6I=
-github.com/goccy/go-yaml v1.11.3/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU=
+github.com/goccy/go-yaml v1.15.15 h1:5turdzAlutS2Q7/QR/9R99Z1K0J00qDb4T0pHJcZ5ew=
+github.com/goccy/go-yaml v1.15.15/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
@@ -281,8 +275,6 @@
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw=
-github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
-github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
@@ -548,8 +540,6 @@
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
diff --git a/images/barbican/Dockerfile b/images/barbican/Dockerfile
index 946396a..723f0b7 100644
--- a/images/barbican/Dockerfile
+++ b/images/barbican/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG BARBICAN_GIT_REF=7d6749fcb1ad16a3350de82cd8e523d5b55306f8
ADD --keep-git-dir=true https://opendev.org/openstack/barbican.git#${BARBICAN_GIT_REF} /src/barbican
RUN git -C /src/barbican fetch --unshallow
@@ -15,5 +13,5 @@
pykmip
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
COPY --from=build --link /var/lib/openstack /var/lib/openstack
diff --git a/images/cinder/Dockerfile b/images/cinder/Dockerfile
index 1f8ca65..df93727 100644
--- a/images/cinder/Dockerfile
+++ b/images/cinder/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2025-01-13T13:53:44Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG CINDER_GIT_REF=4aa6590a483901de64e0d162fff11f3d2d7f9977
ADD --keep-git-dir=true https://opendev.org/openstack/cinder.git#${CINDER_GIT_REF} /src/cinder
RUN git -C /src/cinder fetch --unshallow
@@ -26,7 +24,7 @@
https://github.com/storpool/storpool-openstack-integration/raw/master/drivers/os_brick/openstack/zed/storpool.py \
/var/lib/openstack/lib/python3.10/site-packages/os_brick/initiator/connectors/storpool.py
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/designate/Dockerfile b/images/designate/Dockerfile
index c40e2e1..ea77a0c 100644
--- a/images/designate/Dockerfile
+++ b/images/designate/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG DESIGNATE_GIT_REF=d247267823034c5e656f74e91b50475aa54d3fa6
ADD --keep-git-dir=true https://opendev.org/openstack/designate.git#${DESIGNATE_GIT_REF} /src/designate
RUN git -C /src/designate fetch --unshallow
@@ -14,7 +12,7 @@
/src/designate
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/glance/Dockerfile b/images/glance/Dockerfile
index 8d9c305..b5fe4a9 100644
--- a/images/glance/Dockerfile
+++ b/images/glance/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG GLANCE_GIT_REF=8bbe205c6497032790505579accb4cf1ff341599
ADD --keep-git-dir=true https://opendev.org/openstack/glance.git#${GLANCE_GIT_REF} /src/glance
RUN git -C /src/glance fetch --unshallow
@@ -24,7 +22,7 @@
https://github.com/storpool/storpool-openstack-integration/raw/master/drivers/os_brick/openstack/zed/storpool.py \
/var/lib/openstack/lib/python3.10/site-packages/os_brick/initiator/connectors/storpool.py
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/heat/Dockerfile b/images/heat/Dockerfile
index 0751309..57eb900 100644
--- a/images/heat/Dockerfile
+++ b/images/heat/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG HEAT_GIT_REF=d3948706a3ff28d0160157f76f1e18244a8dad5c
ADD --keep-git-dir=true https://opendev.org/openstack/heat.git#${HEAT_GIT_REF} /src/heat
RUN git -C /src/heat fetch --unshallow
@@ -14,7 +12,7 @@
/src/heat
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/horizon/Dockerfile b/images/horizon/Dockerfile
index 3b7a772..731b607 100644
--- a/images/horizon/Dockerfile
+++ b/images/horizon/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG HORIZON_GIT_REF=5de40f9b222608d35c5a0919117259e966217a86
ADD --keep-git-dir=true https://opendev.org/openstack/horizon.git#${HORIZON_GIT_REF} /src/horizon
RUN git -C /src/horizon fetch --unshallow
@@ -14,7 +12,8 @@
RUN git -C /src/heat-dashboard fetch --unshallow
ADD --keep-git-dir=true https://opendev.org/openstack/ironic-ui.git#unmaintained/zed /src/ironic-ui
RUN git -C /src/ironic-ui fetch --unshallow
-ADD --keep-git-dir=true https://opendev.org/openstack/magnum-ui.git#unmaintained/zed /src/magnum-ui
+ARG MAGNUM_UI_REF=c4c60b779d52a713c0acb3ef4c7987aab1a42657
+ADD --keep-git-dir=true https://opendev.org/openstack/magnum-ui.git#${MAGNUM_UI_REF} /src/magnum-ui
RUN git -C /src/magnum-ui fetch --unshallow
ADD --keep-git-dir=true https://opendev.org/openstack/manila-ui.git#unmaintained/zed /src/manila-ui
RUN git -C /src/manila-ui fetch --unshallow
@@ -42,7 +41,7 @@
/src/senlin-dashboard
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/ironic/Dockerfile b/images/ironic/Dockerfile
index 49beadb..86e6996 100644
--- a/images/ironic/Dockerfile
+++ b/images/ironic/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG IRONIC_GIT_REF=d0fb7bce54e9d241a4442ef2347ac51ee1f4d7af
ADD --keep-git-dir=true https://opendev.org/openstack/ironic.git#${IRONIC_GIT_REF} /src/ironic
RUN git -C /src/ironic fetch --unshallow
@@ -16,7 +14,7 @@
sushy
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/keepalived/Dockerfile b/images/keepalived/Dockerfile
index 37202c8..5b8ca51 100644
--- a/images/keepalived/Dockerfile
+++ b/images/keepalived/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/ubuntu:${RELEASE}
+FROM ubuntu
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/keystone/Dockerfile b/images/keystone/Dockerfile
index f17a44a..0376f18 100644
--- a/images/keystone/Dockerfile
+++ b/images/keystone/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG KEYSTONE_GIT_REF=f63062d47712406a807ce07b4ff3ec6213b0e824
ADD --keep-git-dir=true https://opendev.org/openstack/keystone.git#${KEYSTONE_GIT_REF} /src/keystone
RUN git -C /src/keystone fetch --unshallow
@@ -17,7 +15,7 @@
keystone-keycloak-backend==0.1.8
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
@@ -28,6 +26,11 @@
ARG MOD_AUTH_OPENIDC_VERSION=2.4.12.1
ARG TARGETARCH
RUN <<EOF bash -xe
+# TODO(mnaser): mod_auth_openidc does not have aarch64 builds
+if [ "${TARGETARCH}" = "arm64" ]; then
+ exit 0
+fi
+
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
curl
diff --git a/images/kubernetes-entrypoint/Dockerfile b/images/kubernetes-entrypoint/Dockerfile
index b27599f..18a5ac3 100644
--- a/images/kubernetes-entrypoint/Dockerfile
+++ b/images/kubernetes-entrypoint/Dockerfile
@@ -1,7 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-FROM harbor.atmosphere.dev/docker.io/library/golang:1.21 AS build
+FROM golang AS build
ARG KUBERNETES_ENTRYPOINT_GIT_REF=4fbcf7ce324dc66e78480f73035e31434cfea1e8
ADD https://opendev.org/airship/kubernetes-entrypoint.git#${KUBERNETES_ENTRYPOINT_GIT_REF} /src
WORKDIR /src
diff --git a/images/libvirtd/Dockerfile b/images/libvirtd/Dockerfile
index a025102..2e78633 100644
--- a/images/libvirtd/Dockerfile
+++ b/images/libvirtd/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
# Atmosphere-Rebuild-Time: 2025-01-15T02:05:46Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-runtime:${RELEASE}
+FROM openstack-runtime
ADD --chmod=644 https://download.ceph.com/keys/release.gpg /etc/apt/trusted.gpg.d/ceph.gpg
COPY <<EOF /etc/apt/sources.list.d/ceph.list
deb http://download.ceph.com/debian-reef/ jammy main
diff --git a/images/magnum/Dockerfile b/images/magnum/Dockerfile
index c4bd7c2..c092491 100644
--- a/images/magnum/Dockerfile
+++ b/images/magnum/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/ubuntu:${RELEASE} AS helm
+FROM ubuntu AS helm
ARG TARGETOS
ARG TARGETARCH
ARG HELM_VERSION=3.14.0
@@ -12,7 +10,7 @@
RUN tar -xzf /helm.tar.gz
RUN mv /${TARGETOS}-${TARGETARCH}/helm /usr/bin/helm
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG MAGNUM_GIT_REF=0ee979099a01ae2c8b1b5d6757897a8993e4e34c
ADD --keep-git-dir=true https://opendev.org/openstack/magnum.git#${MAGNUM_GIT_REF} /src/magnum
RUN git -C /src/magnum fetch --unshallow
@@ -25,7 +23,7 @@
magnum-cluster-api==0.24.2
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/manila/Dockerfile b/images/manila/Dockerfile
index b2c6713..6ba6296 100644
--- a/images/manila/Dockerfile
+++ b/images/manila/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG MANILA_GIT_REF=c0fc23a39f87629b59fae7bbf46f70e3e1b459cd
ADD --keep-git-dir=true https://opendev.org/openstack/manila.git#${MANILA_GIT_REF} /src/manila
RUN git -C /src/manila fetch --unshallow
@@ -16,7 +14,7 @@
/src/manila
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/netoffload/Dockerfile b/images/netoffload/Dockerfile
index f3732c5..de0da43 100644
--- a/images/netoffload/Dockerfile
+++ b/images/netoffload/Dockerfile
@@ -1,16 +1,14 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM harbor.atmosphere.dev/docker.io/library/golang:1.20 AS build
+FROM golang AS build
ARG NETOFFLOAD_GIT_REF=94b8c0fdb0b83bd1b7e14b9a58077a047c78a800
ADD https://github.com/vexxhost/netoffload.git#${NETOFFLOAD_GIT_REF} /src
WORKDIR /src
RUN go build -v -o offloadctl ./cmd/offloadctl/main.go
-FROM ${REGISTRY}/ubuntu:${RELEASE}
+FROM ubuntu
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/neutron/Dockerfile b/images/neutron/Dockerfile
index 3b160de..38f6587 100644
--- a/images/neutron/Dockerfile
+++ b/images/neutron/Dockerfile
@@ -1,20 +1,17 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2025-01-24T11:51:19Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG NEUTRON_GIT_REF=ece6a9a7acab20d5a39f54784427258d54b72cfd
ADD --keep-git-dir=true https://opendev.org/openstack/neutron.git#${NEUTRON_GIT_REF} /src/neutron
RUN git -C /src/neutron fetch --unshallow
-ARG NEUTRON_VPNAAS_GIT_REF=45d63e1e9adc2b3ce4e3b2b5728744f99ea70a97
-ADD --keep-git-dir=true https://opendev.org/openstack/neutron-vpnaas.git#${NEUTRON_VPNAAS_GIT_REF} /src/neutron-vpnaas
+ADD --keep-git-dir=true https://opendev.org/openstack/neutron-vpnaas.git#zed-eol /src/neutron-vpnaas
RUN git -C /src/neutron-vpnaas fetch --unshallow
ARG NETWORKING_BAREMETAL_GIT_REF=fc8ddc5f68eba645239e5faa3c370dab5cc94bc9
ADD --keep-git-dir=true https://opendev.org/openstack/networking-baremetal.git#${NETWORKING_BAREMETAL_GIT_REF} /src/networking-baremetal
RUN git -C /src/networking-baremetal fetch --unshallow
-ARG POLICY_SERVER_GIT_REF=85f47edbcf66aaf3a289dc3ae76191adce91018f
+ARG POLICY_SERVER_GIT_REF=d87012b56741cb2ad44fa4dec9c5f24001ad60fe
ADD --keep-git-dir=true https://github.com/vexxhost/neutron-policy-server.git#${POLICY_SERVER_GIT_REF} /src/neutron-policy-server
RUN git -C /src/neutron-policy-server fetch --unshallow
ARG LOG_PASER_GIT_REF=9bc923c1294864ec709c538ba5c309065ef710d5
@@ -32,7 +29,7 @@
/src/neutron-ovn-network-logging-parser
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/nova-ssh/Dockerfile b/images/nova-ssh/Dockerfile
index 5e0e342..9267d90 100644
--- a/images/nova-ssh/Dockerfile
+++ b/images/nova-ssh/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-runtime:${RELEASE}
+FROM openstack-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/nova/Dockerfile b/images/nova/Dockerfile
index 9791974..40a5210 100644
--- a/images/nova/Dockerfile
+++ b/images/nova/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
# Atmosphere-Rebuild-Time: 2024-12-17T01:27:44Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG NOVA_GIT_REF=ba71dc50dbba82bbdecb845afea67ad2275897ec
ADD --keep-git-dir=true https://opendev.org/openstack/nova.git#${NOVA_GIT_REF} /src/nova
RUN git -C /src/nova fetch --unshallow
@@ -26,7 +24,7 @@
https://github.com/storpool/storpool-openstack-integration/raw/master/drivers/os_brick/openstack/zed/storpool.py \
/var/lib/openstack/lib/python3.10/site-packages/os_brick/initiator/connectors/storpool.py
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
ADD https://github.com/novnc/noVNC.git#v1.4.0 /usr/share/novnc
RUN <<EOF bash -xe
apt-get update -qq
diff --git a/images/octavia/Dockerfile b/images/octavia/Dockerfile
index 4ca7118..c071420 100644
--- a/images/octavia/Dockerfile
+++ b/images/octavia/Dockerfile
@@ -1,12 +1,9 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
-ARG OCTAVIA_GIT_REF=000b577f3e9c9ff7cb893e9f6e635753017a78c6
-ADD --keep-git-dir=true https://opendev.org/openstack/octavia.git#${OCTAVIA_GIT_REF} /src/octavia
+FROM openstack-venv-builder AS build
+ADD --keep-git-dir=true https://opendev.org/openstack/octavia.git#zed-eol /src/octavia
RUN git -C /src/octavia fetch --unshallow
COPY patches/octavia /patches/octavia
RUN git -C /src/octavia apply --verbose /patches/octavia/*
@@ -19,7 +16,7 @@
/src/ovn-octavia-provider
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/openstack-runtime/Dockerfile b/images/openstack-runtime/Dockerfile
index b7eb787..3f802be 100644
--- a/images/openstack-runtime/Dockerfile
+++ b/images/openstack-runtime/Dockerfile
@@ -1,11 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-ARG FROM=${REGISTRY}/ubuntu-cloud-archive:${RELEASE}
-FROM ${FROM}
+FROM base
ONBUILD ARG PROJECT
ONBUILD ARG SHELL=/usr/sbin/nologin
ONBUILD RUN \
diff --git a/images/openstack-venv-builder/Dockerfile b/images/openstack-venv-builder/Dockerfile
index 93faa1f..ee8da56 100644
--- a/images/openstack-venv-builder/Dockerfile
+++ b/images/openstack-venv-builder/Dockerfile
@@ -1,12 +1,11 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
-
-# Build
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
ARG REGISTRY
ARG RELEASE
-FROM ${REGISTRY}/ubuntu-cloud-archive:${RELEASE} AS requirements
+FROM ubuntu-cloud-archive AS requirements
ARG REQUIREMENTS_GIT_REF=b4513973fdd1c3b43159fe0e02fa73d845a9c1ba
ADD --keep-git-dir=true https://opendev.org/openstack/requirements.git#${REQUIREMENTS_GIT_REF} /src/requirements
RUN cp /src/requirements/upper-constraints.txt /upper-constraints.txt
@@ -15,7 +14,7 @@
sed -i '/horizon/d' /upper-constraints.txt
EOF
-FROM ${REGISTRY}/python-base:${RELEASE}
+FROM python-base
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/openvswitch/Dockerfile b/images/openvswitch/Dockerfile
index 6ee0a24..80283cd 100644
--- a/images/openvswitch/Dockerfile
+++ b/images/openvswitch/Dockerfile
@@ -1,7 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-FROM quay.io/centos/centos:stream9
+FROM centos
ADD --chmod=755 https://github.com/krallin/tini/releases/download/v0.19.0/tini /tini
ARG OVS_SERIES=3.1
ARG OVS_VERSION=${OVS_SERIES}.0-65
@@ -16,4 +17,6 @@
tcpdump
dnf -y clean all
rm -rf /var/cache/dnf
+usermod -u 42424 openvswitch
+groupmod -g 42424 openvswitch
EOF
diff --git a/images/ovn/Dockerfile b/images/ovn/Dockerfile
index 8fdbf68..5cf94fd 100644
--- a/images/ovn/Dockerfile
+++ b/images/ovn/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM harbor.atmosphere.dev/docker.io/library/golang:1.20 AS ovn-kubernetes
+FROM golang AS ovn-kubernetes
ARG OVN_KUBERNETES_REF=5359e7d7f872058b6e5bf884c9f19d1922451f29
ADD https://github.com/ovn-org/ovn-kubernetes.git#${OVN_KUBERNETES_REF} /src
COPY patches/ovn-kubernetes /patches/ovn-kubernetes
@@ -14,7 +12,8 @@
go build -o /usr/bin/ovn-kube-util ./cmd/ovn-kube-util
EOF
-FROM ${REGISTRY}/openvswitch:${RELEASE}
+FROM openvswitch
+ENV OVS_USER_ID=42424
ARG TARGETPLATFORM
ADD --chmod=755 https://dl.k8s.io/release/v1.29.3/bin/${TARGETPLATFORM}/kubectl /usr/local/bin/kubectl
ARG OVN_SERIES=23.03
@@ -35,3 +34,9 @@
COPY --from=ovn-kubernetes --link /src/dist/images/ovndb-raft-functions.sh /root/ovndb-raft-functions.sh
COPY --from=ovn-kubernetes --link /src/dist/images/ovnkube.sh /root/ovnkube.sh
COPY --from=ovn-kubernetes --link /usr/bin/ovn-kube-util /usr/bin/ovn-kube-util
+
+RUN <<EOF bash -xe
+ usermod -u 42424 openvswitch
+ mkdir -p /var/log/ovn /var/lib/ovn /var/run/ovn
+ chown -Rv 42424:42424 /var/log/ovn /var/lib/ovn /var/run/ovn
+EOF
diff --git a/images/placement/Dockerfile b/images/placement/Dockerfile
index 9115f62..d3c6fec 100644
--- a/images/placement/Dockerfile
+++ b/images/placement/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG PLACEMENT_GIT_REF=d7ced6bd2fc82caf458f20b5652888164b1bbb70
ADD --keep-git-dir=true https://opendev.org/openstack/placement.git#${PLACEMENT_GIT_REF} /src/placement
RUN git -C /src/placement fetch --unshallow
@@ -14,5 +12,5 @@
/src/placement
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
COPY --from=build --link /var/lib/openstack /var/lib/openstack
diff --git a/images/python-base/Dockerfile b/images/python-base/Dockerfile
index 9cf62a3..d2ed54b 100644
--- a/images/python-base/Dockerfile
+++ b/images/python-base/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/ubuntu-cloud-archive:${RELEASE}
+FROM ubuntu-cloud-archive
ENV PATH=/var/lib/openstack/bin:$PATH
RUN \
apt-get update -qq && \
diff --git a/images/python-openstackclient/Dockerfile b/images/python-openstackclient/Dockerfile
index 53dbfce..ece7f8d 100644
--- a/images/python-openstackclient/Dockerfile
+++ b/images/python-openstackclient/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
RUN --mount=type=cache,mode=0755,target=/root/.cache/pip,sharing=private <<EOF bash -xe
pip3 install \
--constraint /upper-constraints.txt \
@@ -23,7 +21,7 @@
python-swiftclient
EOF
-FROM ${REGISTRY}/python-base:${RELEASE}
+FROM python-base
COPY --from=build --link /var/lib/openstack /var/lib/openstack
# NOTE(mnaser): The Magnum client relies on the SHELL environment variable
diff --git a/images/senlin/Dockerfile b/images/senlin/Dockerfile
index fe0fd1e..b0c9166 100644
--- a/images/senlin/Dockerfile
+++ b/images/senlin/Dockerfile
@@ -1,21 +1,9 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG RELEASE
-FROM registry.atmosphere.dev/library/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG SENLIN_GIT_REF=b6ef17b0f787fb7a0609ba36dc13097882a6a3ff
ADD --keep-git-dir=true https://opendev.org/openstack/senlin.git#${SENLIN_GIT_REF} /src/senlin
RUN git -C /src/senlin fetch --unshallow
@@ -25,5 +13,5 @@
/src/senlin
EOF
-FROM registry.atmosphere.dev/library/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
COPY --from=build --link /var/lib/openstack /var/lib/openstack
diff --git a/images/staffeln/Dockerfile b/images/staffeln/Dockerfile
index e63e0ec..ed0e997 100644
--- a/images/staffeln/Dockerfile
+++ b/images/staffeln/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG STAFFELN_GIT_REF=v2.2.3
ADD --keep-git-dir=true https://github.com/vexxhost/staffeln.git#${STAFFELN_GIT_REF} /src/staffeln
RUN git -C /src/staffeln fetch --unshallow
@@ -14,5 +12,5 @@
/src/staffeln
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
COPY --from=build --link /var/lib/openstack /var/lib/openstack
diff --git a/images/tempest/Dockerfile b/images/tempest/Dockerfile
index b8f33bc..f4ed770 100644
--- a/images/tempest/Dockerfile
+++ b/images/tempest/Dockerfile
@@ -1,17 +1,15 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM harbor.atmosphere.dev/docker.io/library/golang:1.18 AS octavia-test-server
+FROM golang AS octavia-test-server
ADD --keep-git-dir=true https://opendev.org/openstack/octavia-tempest-plugin.git#master /src
RUN GO111MODULE=off CGO_ENABLED=0 GOOS=linux go build \
-a -ldflags '-s -w -extldflags -static' \
-o /build/test_server.bin \
/src/octavia_tempest_plugin/contrib/test_server/test_server.go
-FROM ${REGISTRY}/openstack-venv-builder:${RELEASE} AS build
+FROM openstack-venv-builder AS build
ARG TEMPEST_GIT_REF=aeb9b13e930841c87b826d3ba917b224095f1d81
ADD --keep-git-dir=true https://opendev.org/openstack/tempest.git#${TEMPEST_GIT_REF} /src/tempest
RUN git -C /src/tempest fetch --unshallow
@@ -40,7 +38,7 @@
/src/octavia-tempest-plugin
EOF
-FROM ${REGISTRY}/openstack-python-runtime:${RELEASE}
+FROM openstack-python-runtime
RUN <<EOF bash -xe
apt-get update -qq
apt-get install -qq -y --no-install-recommends \
diff --git a/images/ubuntu-cloud-archive/Dockerfile b/images/ubuntu-cloud-archive/Dockerfile
index 4f35561..0b904f1 100644
--- a/images/ubuntu-cloud-archive/Dockerfile
+++ b/images/ubuntu-cloud-archive/Dockerfile
@@ -1,10 +1,8 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-ARG REGISTRY
-ARG RELEASE
-
-FROM ${REGISTRY}/ubuntu:${RELEASE}
+FROM ubuntu
COPY trusted.gpg.d/ubuntu-cloud-keyring.gpg /etc/apt/trusted.gpg.d/ubuntu-cloud-keyring.gpg
COPY <<EOF /etc/apt/sources.list.d/cloudarchive.list
deb http://ubuntu-cloud.archive.canonical.com/ubuntu jammy-updates/zed main
diff --git a/images/ubuntu/Dockerfile b/images/ubuntu/Dockerfile
index 5f5e072..326a690 100644
--- a/images/ubuntu/Dockerfile
+++ b/images/ubuntu/Dockerfile
@@ -1,5 +1,6 @@
-# SPDX-License-Identifier: Apache-2.0
-# Atmosphere-Rebuild-Time: 2024-06-28T12:14:26Z
+# SPDX-FileCopyrightText: © 2025 VEXXHOST, Inc.
+# SPDX-License-Identifier: GPL-3.0-or-later
+# Atmosphere-Rebuild-Time: 2024-06-26T17:38:39Z
-FROM harbor.atmosphere.dev/docker.io/library/ubuntu:jammy-20240227
+FROM ubuntu
LABEL org.opencontainers.image.source=https://github.com/vexxhost/atmosphere
diff --git a/releasenotes/notes/add-neutron-policy-server-address-pair-193aa1434c376c10.yaml b/releasenotes/notes/add-neutron-policy-server-address-pair-193aa1434c376c10.yaml
new file mode 100644
index 0000000..e606b10
--- /dev/null
+++ b/releasenotes/notes/add-neutron-policy-server-address-pair-193aa1434c376c10.yaml
@@ -0,0 +1,8 @@
+---
+features:
+ - |
+ Add support for Neutron policy check when perform port update with
+ add address pairs. This will add a POST method ``/address-pair``.
+ It will check if both ports (to be paired) are created within same project.
+ With this check, we can give non-admin user to operate address pair binding
+ without risk on expose resource to other projects.
diff --git a/releasenotes/notes/fix-ovs-dpdk-permission-issue-fea15d01685d2e1b.yaml b/releasenotes/notes/fix-ovs-dpdk-permission-issue-fea15d01685d2e1b.yaml
new file mode 100644
index 0000000..ab4ea07
--- /dev/null
+++ b/releasenotes/notes/fix-ovs-dpdk-permission-issue-fea15d01685d2e1b.yaml
@@ -0,0 +1,8 @@
+---
+fixes:
+ - |
+ When use OVS with DPDK, by default both OVS and OVN run with root user, this
+ may cause issue that QEMU can't write vhost user socket file in openvswitch
+ runtime directory (``/run/openvswitch``). This has been fixed by config Open
+ vSwitch and OVN componments to run with non root user id 42424 which is same
+ with QEMU and other OpenStack services inside the container.
diff --git a/releasenotes/notes/use-docker-bake-526459f34fabc32b.yaml b/releasenotes/notes/use-docker-bake-526459f34fabc32b.yaml
new file mode 100644
index 0000000..d6c9f10
--- /dev/null
+++ b/releasenotes/notes/use-docker-bake-526459f34fabc32b.yaml
@@ -0,0 +1,6 @@
+---
+other:
+ - The image build process has been refactored to use ``docker-bake`` which
+ allows us to use context/built images from one target to another, allowing
+ for a much easier local building experience. There is no functional change
+ in the images.
diff --git a/roles/neutron/vars/main.yml b/roles/neutron/vars/main.yml
index 9790b5f..33e3436 100644
--- a/roles/neutron/vars/main.yml
+++ b/roles/neutron/vars/main.yml
@@ -113,3 +113,6 @@
delete_port: "(rule:admin_only or rule:context_is_advsvc or role:member and project_id:%(project_id)s or rule:network_owner) and http://neutron-server:9697/port-delete"
update_port:mac_address: "(rule:admin_only or rule:context_is_advsvc) and http://neutron-server:9697/port-update"
update_port:fixed_ips: "(rule:context_is_advsvc or rule:network_owner or rule:admin_only) and http://neutron-server:9697/port-update"
+ update_port:allowed_address_pairs: "(rule:admin_only or rule:network_owner) or (project_id:%(project_id)s and http://neutron-server:9697/address-pair )"
+ update_port:allowed_address_pairs:ip_address: "(rule:admin_only or rule:network_owner) or project_id:%(project_id)s"
+ update_port:allowed_address_pairs:mac_address: "(rule:admin_only or rule:network_owner) or project_id:%(project_id)s"
diff --git a/tox.ini b/tox.ini
index 0673da3..1f34b8a 100644
--- a/tox.ini
+++ b/tox.ini
@@ -20,23 +20,12 @@
commands =
{posargs}
-[testenv:pin-digests]
-skip_install = true
-deps =
- docker-image-py>=0.1.12
- oslo_config
- oslo_log
- ruyaml
-commands =
- python3 {toxinidir}/build/pin-images.py roles/defaults/vars/main.yml roles/defaults/vars/main.yml
-
[testenv:linters]
skipsdist = True
deps =
pre-commit
commands =
pre-commit run --all-files --show-diff-on-failure
- python3 {toxinidir}/build/lint-jobs.py
[testenv:py3]
deps =
@@ -106,6 +95,7 @@
[testenv:build-manila-image]
deps =
diskimage-builder==3.28.0
+ setuptools
allowlist_externals =
bash
commands =
diff --git a/zuul.d/container-images/barbican.yaml b/zuul.d/container-images/barbican.yaml
deleted file mode 100644
index e2ecc40..0000000
--- a/zuul.d/container-images/barbican.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-barbican
- gate:
- jobs:
- - atmosphere-upload-container-image-barbican
- promote:
- jobs:
- - atmosphere-promote-container-image-barbican
-
-- job:
- name: atmosphere-build-container-image-barbican
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-barbican
- container_images:
- - context: images/barbican
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/barbican"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=barbican
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/barbican/.*
-
-- job:
- name: atmosphere-upload-container-image-barbican
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-barbican
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/base.yaml b/zuul.d/container-images/base.yaml
deleted file mode 100644
index 988a2a9..0000000
--- a/zuul.d/container-images/base.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-buildset-registry
- gate:
- jobs:
- - atmosphere-buildset-registry
-
-- job:
- name: atmosphere-buildset-registry
- parent: ci-buildset-registry
- irrelevant-files:
- - ^build/
- - ^doc/
- - ^releasenotes/
-
-- job:
- name: atmosphere-build-container-image
- parent: ci-build-container-image
- abstract: true
- irrelevant-files:
- - ^build/
- - ^doc/
- - ^releasenotes/
- vars: &image_vars
- container_command: docker
- promote_container_image_method: intermediate-registry
- buildset_registry_namespaces:
- - ['docker.io', 'https://registry-1.docker.io']
- - ['quay.io', 'https://quay.io']
- - ['gcr.io', 'https://gcr.io']
- - ['harbor.atmosphere.dev', 'https://harbor.atmosphere.dev']
-
-- job:
- name: atmosphere-upload-container-image
- parent: ci-upload-container-image
- abstract: true
- irrelevant-files:
- - ^doc/
- - ^releasenotes/
- vars: *image_vars
-
-- job:
- name: atmosphere-promote-container-image
- parent: ci-promote-container-image
- irrelevant-files:
- - ^build/
- - ^doc/
- - ^releasenotes/
- nodeset:
- nodes: []
- vars: *image_vars
diff --git a/zuul.d/container-images/cinder.yaml b/zuul.d/container-images/cinder.yaml
deleted file mode 100644
index e039bda..0000000
--- a/zuul.d/container-images/cinder.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-cinder
- gate:
- jobs:
- - atmosphere-upload-container-image-cinder
- promote:
- jobs:
- - atmosphere-promote-container-image-cinder
-
-- job:
- name: atmosphere-build-container-image-cinder
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-cinder
- container_images:
- - context: images/cinder
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/cinder"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=cinder
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/cinder/.*
-
-- job:
- name: atmosphere-upload-container-image-cinder
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-cinder
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/designate.yaml b/zuul.d/container-images/designate.yaml
deleted file mode 100644
index fd02908..0000000
--- a/zuul.d/container-images/designate.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-designate
- gate:
- jobs:
- - atmosphere-upload-container-image-designate
- promote:
- jobs:
- - atmosphere-promote-container-image-designate
-
-- job:
- name: atmosphere-build-container-image-designate
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-designate
- container_images:
- - context: images/designate
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/designate"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=designate
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/designate/.*
-
-- job:
- name: atmosphere-upload-container-image-designate
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-designate
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/glance.yaml b/zuul.d/container-images/glance.yaml
deleted file mode 100644
index 411b5a4..0000000
--- a/zuul.d/container-images/glance.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-glance
- gate:
- jobs:
- - atmosphere-upload-container-image-glance
- promote:
- jobs:
- - atmosphere-promote-container-image-glance
-
-- job:
- name: atmosphere-build-container-image-glance
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-glance
- container_images:
- - context: images/glance
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/glance"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=glance
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/glance/.*
-
-- job:
- name: atmosphere-upload-container-image-glance
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-glance
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/heat.yaml b/zuul.d/container-images/heat.yaml
deleted file mode 100644
index 98b3d2c..0000000
--- a/zuul.d/container-images/heat.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-heat
- gate:
- jobs:
- - atmosphere-upload-container-image-heat
- promote:
- jobs:
- - atmosphere-promote-container-image-heat
-
-- job:
- name: atmosphere-build-container-image-heat
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-heat
- container_images:
- - context: images/heat
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/heat"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=heat
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/heat/.*
-
-- job:
- name: atmosphere-upload-container-image-heat
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-heat
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/horizon.yaml b/zuul.d/container-images/horizon.yaml
deleted file mode 100644
index eb8872b..0000000
--- a/zuul.d/container-images/horizon.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-horizon
- gate:
- jobs:
- - atmosphere-upload-container-image-horizon
- promote:
- jobs:
- - atmosphere-promote-container-image-horizon
-
-- job:
- name: atmosphere-build-container-image-horizon
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-horizon
- container_images:
- - context: images/horizon
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/horizon"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=horizon
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/horizon/.*
-
-- job:
- name: atmosphere-upload-container-image-horizon
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-horizon
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/ironic.yaml b/zuul.d/container-images/ironic.yaml
deleted file mode 100644
index 33a0d4d..0000000
--- a/zuul.d/container-images/ironic.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-ironic
- gate:
- jobs:
- - atmosphere-upload-container-image-ironic
- promote:
- jobs:
- - atmosphere-promote-container-image-ironic
-
-- job:
- name: atmosphere-build-container-image-ironic
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-ironic
- container_images:
- - context: images/ironic
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/ironic"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=ironic
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/ironic/.*
-
-- job:
- name: atmosphere-upload-container-image-ironic
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-ironic
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/keepalived.yaml b/zuul.d/container-images/keepalived.yaml
deleted file mode 100644
index 31e4a6c..0000000
--- a/zuul.d/container-images/keepalived.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-keepalived
- gate:
- jobs:
- - atmosphere-upload-container-image-keepalived
- promote:
- jobs:
- - atmosphere-promote-container-image-keepalived
-
-- job:
- name: atmosphere-build-container-image-keepalived
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-keepalived
- container_images:
- - context: images/keepalived
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/keepalived"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/keepalived/.*
-
-- job:
- name: atmosphere-upload-container-image-keepalived
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-keepalived
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/keystone.yaml b/zuul.d/container-images/keystone.yaml
deleted file mode 100644
index 39d9d10..0000000
--- a/zuul.d/container-images/keystone.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-keystone
- gate:
- jobs:
- - atmosphere-upload-container-image-keystone
- promote:
- jobs:
- - atmosphere-promote-container-image-keystone
-
-- job:
- name: atmosphere-build-container-image-keystone
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-keystone
- container_images:
- - context: images/keystone
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/keystone"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=keystone
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/keystone/.*
-
-- job:
- name: atmosphere-upload-container-image-keystone
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-keystone
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/kubernetes-entrypoint.yaml b/zuul.d/container-images/kubernetes-entrypoint.yaml
deleted file mode 100644
index 8a1132f..0000000
--- a/zuul.d/container-images/kubernetes-entrypoint.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-kubernetes-entrypoint
- gate:
- jobs:
- - atmosphere-upload-container-image-kubernetes-entrypoint
- promote:
- jobs:
- - atmosphere-promote-container-image-kubernetes-entrypoint
-
-- job:
- name: atmosphere-build-container-image-kubernetes-entrypoint
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-kubernetes-entrypoint
- container_images:
- - context: images/kubernetes-entrypoint
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/kubernetes-entrypoint"
- arch:
- - linux/amd64
- - linux/arm64
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/kubernetes-entrypoint/.*
-
-- job:
- name: atmosphere-upload-container-image-kubernetes-entrypoint
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-kubernetes-entrypoint
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/libvirtd.yaml b/zuul.d/container-images/libvirtd.yaml
deleted file mode 100644
index 9b2596b..0000000
--- a/zuul.d/container-images/libvirtd.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-libvirtd
- gate:
- jobs:
- - atmosphere-upload-container-image-libvirtd
- promote:
- jobs:
- - atmosphere-promote-container-image-libvirtd
-
-- job:
- name: atmosphere-build-container-image-libvirtd
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-openstack-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-libvirtd
- container_images:
- - context: images/libvirtd
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/libvirtd"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=nova
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/openstack-runtime/.*
- - images/libvirtd/.*
-
-- job:
- name: atmosphere-upload-container-image-libvirtd
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-openstack-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-libvirtd
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/magnum.yaml b/zuul.d/container-images/magnum.yaml
deleted file mode 100644
index 71001a5..0000000
--- a/zuul.d/container-images/magnum.yaml
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-magnum
- gate:
- jobs:
- - atmosphere-upload-container-image-magnum
- promote:
- jobs:
- - atmosphere-promote-container-image-magnum
-
-- job:
- name: atmosphere-build-container-image-magnum
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-magnum
- container_images:
- - context: images/magnum
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/magnum"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=magnum
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/magnum/.*
-
-- job:
- name: atmosphere-upload-container-image-magnum
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-magnum
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/manila.yaml b/zuul.d/container-images/manila.yaml
deleted file mode 100644
index f82fdea..0000000
--- a/zuul.d/container-images/manila.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-manila
- gate:
- jobs:
- - atmosphere-upload-container-image-manila
- promote:
- jobs:
- - atmosphere-promote-container-image-manila
-
-- job:
- name: atmosphere-build-container-image-manila
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-manila
- container_images:
- - context: images/manila
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/manila"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=manila
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/manila/.*
-
-- job:
- name: atmosphere-upload-container-image-manila
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-manila
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/netoffload.yaml b/zuul.d/container-images/netoffload.yaml
deleted file mode 100644
index 4494d44..0000000
--- a/zuul.d/container-images/netoffload.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-netoffload
- gate:
- jobs:
- - atmosphere-upload-container-image-netoffload
- promote:
- jobs:
- - atmosphere-promote-container-image-netoffload
-
-- job:
- name: atmosphere-build-container-image-netoffload
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-netoffload
- container_images:
- - context: images/netoffload
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/netoffload"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/netoffload/.*
-
-- job:
- name: atmosphere-upload-container-image-netoffload
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-netoffload
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/neutron.yaml b/zuul.d/container-images/neutron.yaml
deleted file mode 100644
index b8dabca..0000000
--- a/zuul.d/container-images/neutron.yaml
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-neutron
- gate:
- jobs:
- - atmosphere-upload-container-image-neutron
- promote:
- jobs:
- - atmosphere-promote-container-image-neutron
-
-- job:
- name: atmosphere-build-container-image-neutron
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-neutron
- container_images:
- - context: images/neutron
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/neutron"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=neutron
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/neutron/.*
-
-- job:
- name: atmosphere-upload-container-image-neutron
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-neutron
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/nova-ssh.yaml b/zuul.d/container-images/nova-ssh.yaml
deleted file mode 100644
index d60275d..0000000
--- a/zuul.d/container-images/nova-ssh.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-nova-ssh
- gate:
- jobs:
- - atmosphere-upload-container-image-nova-ssh
- promote:
- jobs:
- - atmosphere-promote-container-image-nova-ssh
-
-- job:
- name: atmosphere-build-container-image-nova-ssh
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-openstack-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-nova-ssh
- container_images:
- - context: images/nova-ssh
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/nova-ssh"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=nova
- - SHELL=/bin/bash
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/openstack-runtime/.*
- - images/nova-ssh/.*
-
-- job:
- name: atmosphere-upload-container-image-nova-ssh
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-openstack-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-nova-ssh
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/nova.yaml b/zuul.d/container-images/nova.yaml
deleted file mode 100644
index b037875..0000000
--- a/zuul.d/container-images/nova.yaml
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-nova
- gate:
- jobs:
- - atmosphere-upload-container-image-nova
- promote:
- jobs:
- - atmosphere-promote-container-image-nova
-
-- job:
- name: atmosphere-build-container-image-nova
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-nova
- container_images:
- - context: images/nova
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/nova"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=nova
- - SHELL=/bin/bash
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/nova/.*
-
-- job:
- name: atmosphere-upload-container-image-nova
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-nova
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/octavia.yaml b/zuul.d/container-images/octavia.yaml
deleted file mode 100644
index 6710cb8..0000000
--- a/zuul.d/container-images/octavia.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-octavia
- gate:
- jobs:
- - atmosphere-upload-container-image-octavia
- promote:
- jobs:
- - atmosphere-promote-container-image-octavia
-
-- job:
- name: atmosphere-build-container-image-octavia
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-octavia
- container_images:
- - context: images/octavia
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/octavia"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=octavia
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/octavia/.*
-
-- job:
- name: atmosphere-upload-container-image-octavia
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-octavia
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/openstack-python-runtime.yaml b/zuul.d/container-images/openstack-python-runtime.yaml
deleted file mode 100644
index 6256cb5..0000000
--- a/zuul.d/container-images/openstack-python-runtime.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-openstack-python-runtime
- gate:
- jobs:
- - atmosphere-upload-container-image-openstack-python-runtime
- promote:
- jobs:
- - atmosphere-promote-container-image-openstack-python-runtime
-
-- job:
- name: atmosphere-build-container-image-openstack-python-runtime
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-openstack-python-runtime
- container_images:
- - context: images/openstack-runtime
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/openstack-python-runtime"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - "FROM={{ container_registry }}/python-base:{{ zuul.branch | replace('stable/', '') }}"
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-runtime/.*
-
-- job:
- name: atmosphere-upload-container-image-openstack-python-runtime
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-openstack-python-runtime
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/openstack-runtime.yaml b/zuul.d/container-images/openstack-runtime.yaml
deleted file mode 100644
index 35a1b06..0000000
--- a/zuul.d/container-images/openstack-runtime.yaml
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-openstack-runtime
- gate:
- jobs:
- - atmosphere-upload-container-image-openstack-runtime
- promote:
- jobs:
- - atmosphere-promote-container-image-openstack-runtime
-
-- job:
- name: atmosphere-build-container-image-openstack-runtime
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-openstack-runtime
- container_images:
- - context: images/openstack-runtime
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/openstack-runtime"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/openstack-runtime/.*
-
-- job:
- name: atmosphere-upload-container-image-openstack-runtime
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-openstack-runtime
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/openstack-venv-builder.yaml b/zuul.d/container-images/openstack-venv-builder.yaml
deleted file mode 100644
index c042bf8..0000000
--- a/zuul.d/container-images/openstack-venv-builder.yaml
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-openstack-venv-builder
- gate:
- jobs:
- - atmosphere-upload-container-image-openstack-venv-builder
- promote:
- jobs:
- - atmosphere-promote-container-image-openstack-venv-builder
-
-- job:
- name: atmosphere-build-container-image-openstack-venv-builder
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-openstack-venv-builder
- container_images:
- - context: images/openstack-venv-builder
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/openstack-venv-builder"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
-
-- job:
- name: atmosphere-upload-container-image-openstack-venv-builder
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-openstack-venv-builder
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/openvswitch.yaml b/zuul.d/container-images/openvswitch.yaml
deleted file mode 100644
index 2ebec04..0000000
--- a/zuul.d/container-images/openvswitch.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-openvswitch
- gate:
- jobs:
- - atmosphere-upload-container-image-openvswitch
- promote:
- jobs:
- - atmosphere-promote-container-image-openvswitch
-
-- job:
- name: atmosphere-build-container-image-openvswitch
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-openvswitch
- container_images:
- - context: images/openvswitch
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/openvswitch"
- arch:
- - linux/amd64
- - linux/arm64
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/openvswitch/.*
-
-- job:
- name: atmosphere-upload-container-image-openvswitch
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-openvswitch
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/ovn.yaml b/zuul.d/container-images/ovn.yaml
deleted file mode 100644
index 07fa151..0000000
--- a/zuul.d/container-images/ovn.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-ovn
- gate:
- jobs:
- - atmosphere-upload-container-image-ovn
- promote:
- jobs:
- - atmosphere-promote-container-image-ovn
-
-- job:
- name: atmosphere-build-container-image-ovn
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-openvswitch
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-ovn
- container_images:
- - context: images/ovn
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/ovn-central"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - OVN_COMPONENT=central
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- - context: images/ovn
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/ovn-host"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - OVN_COMPONENT=host
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/openvswitch/.*
- - images/ovn/.*
-
-- job:
- name: atmosphere-upload-container-image-ovn
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-openvswitch
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-ovn
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/placement.yaml b/zuul.d/container-images/placement.yaml
deleted file mode 100644
index 945f341..0000000
--- a/zuul.d/container-images/placement.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-placement
- gate:
- jobs:
- - atmosphere-upload-container-image-placement
- promote:
- jobs:
- - atmosphere-promote-container-image-placement
-
-- job:
- name: atmosphere-build-container-image-placement
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-placement
- container_images:
- - context: images/placement
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/placement"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=placement
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/placement/.*
-
-- job:
- name: atmosphere-upload-container-image-placement
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-placement
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/python-base.yaml b/zuul.d/container-images/python-base.yaml
deleted file mode 100644
index 90e5acf..0000000
--- a/zuul.d/container-images/python-base.yaml
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-python-base
- gate:
- jobs:
- - atmosphere-upload-container-image-python-base
- promote:
- jobs:
- - atmosphere-promote-container-image-python-base
-
-- job:
- name: atmosphere-build-container-image-python-base
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-python-base
- container_images:
- - context: images/python-base
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/python-base"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
-
-- job:
- name: atmosphere-upload-container-image-python-base
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-python-base
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/python-openstackclient.yaml b/zuul.d/container-images/python-openstackclient.yaml
deleted file mode 100644
index cfb9826..0000000
--- a/zuul.d/container-images/python-openstackclient.yaml
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-python-openstackclient
- gate:
- jobs:
- - atmosphere-upload-container-image-python-openstackclient
- promote:
- jobs:
- - atmosphere-promote-container-image-python-openstackclient
-
-- job:
- name: atmosphere-build-container-image-python-openstackclient
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-python-openstackclient
- container_images:
- - context: images/python-openstackclient
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/python-openstackclient"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/python-openstackclient/.*
-
-- job:
- name: atmosphere-upload-container-image-python-openstackclient
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-python-openstackclient
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/staffeln.yaml b/zuul.d/container-images/staffeln.yaml
deleted file mode 100644
index 77200c2..0000000
--- a/zuul.d/container-images/staffeln.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-staffeln
- gate:
- jobs:
- - atmosphere-upload-container-image-staffeln
- promote:
- jobs:
- - atmosphere-promote-container-image-staffeln
-
-- job:
- name: atmosphere-build-container-image-staffeln
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-staffeln
- container_images:
- - context: images/staffeln
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/staffeln"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=staffeln
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/staffeln/.*
-
-- job:
- name: atmosphere-upload-container-image-staffeln
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-staffeln
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/tempest.yaml b/zuul.d/container-images/tempest.yaml
deleted file mode 100644
index 22dd426..0000000
--- a/zuul.d/container-images/tempest.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-tempest
- gate:
- jobs:
- - atmosphere-upload-container-image-tempest
- promote:
- jobs:
- - atmosphere-promote-container-image-tempest
-
-- job:
- name: atmosphere-build-container-image-tempest
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- - name: atmosphere-build-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-build-container-image-python-base
- soft: true
- - name: atmosphere-build-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-build-container-image-openstack-python-runtime
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-tempest
- container_images:
- - context: images/tempest
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/tempest"
- arch:
- - linux/amd64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- - PROJECT=tempest
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
- - images/python-base/.*
- - images/openstack-venv-builder/.*
- - images/openstack-python-runtime/.*
- - images/tempest/.*
-
-- job:
- name: atmosphere-upload-container-image-tempest
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- - name: atmosphere-upload-container-image-ubuntu-cloud-archive
- soft: true
- - name: atmosphere-upload-container-image-python-base
- soft: true
- - name: atmosphere-upload-container-image-openstack-venv-builder
- soft: true
- - name: atmosphere-upload-container-image-openstack-python-runtime
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-tempest
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/ubuntu-cloud-archive.yaml b/zuul.d/container-images/ubuntu-cloud-archive.yaml
deleted file mode 100644
index 69e826e..0000000
--- a/zuul.d/container-images/ubuntu-cloud-archive.yaml
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-ubuntu-cloud-archive
- gate:
- jobs:
- - atmosphere-upload-container-image-ubuntu-cloud-archive
- promote:
- jobs:
- - atmosphere-promote-container-image-ubuntu-cloud-archive
-
-- job:
- name: atmosphere-build-container-image-ubuntu-cloud-archive
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-build-container-image-ubuntu
- soft: true
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-ubuntu-cloud-archive
- container_images:
- - context: images/ubuntu-cloud-archive
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/ubuntu-cloud-archive"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
- - images/ubuntu-cloud-archive/.*
-
-- job:
- name: atmosphere-upload-container-image-ubuntu-cloud-archive
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- - name: atmosphere-upload-container-image-ubuntu
- soft: true
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-ubuntu-cloud-archive
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/container-images/ubuntu.yaml b/zuul.d/container-images/ubuntu.yaml
deleted file mode 100644
index 2b54f92..0000000
--- a/zuul.d/container-images/ubuntu.yaml
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (c) 2024 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-- project:
- check:
- jobs:
- - atmosphere-build-container-image-ubuntu
- gate:
- jobs:
- - atmosphere-upload-container-image-ubuntu
- promote:
- jobs:
- - atmosphere-promote-container-image-ubuntu
-
-- job:
- name: atmosphere-build-container-image-ubuntu
- parent: atmosphere-build-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- vars: &container_image_vars
- promote_container_image_job: atmosphere-upload-container-image-ubuntu
- container_images:
- - context: images/ubuntu
- registry: harbor.atmosphere.dev
- repository: "{{ container_registry }}/ubuntu"
- arch:
- - linux/amd64
- - linux/arm64
- build_args:
- - REGISTRY={{ container_registry }}
- - "RELEASE={{ zuul.branch | replace('stable/', '') }}"
- tags:
- - "{{ zuul.branch | replace('stable/', '') }}"
- files: &container_image_files
- - images/ubuntu/.*
-
-- job:
- name: atmosphere-upload-container-image-ubuntu
- parent: atmosphere-upload-container-image
- dependencies:
- - name: atmosphere-buildset-registry
- soft: false
- vars: *container_image_vars
- files: *container_image_files
-
-- job:
- name: atmosphere-promote-container-image-ubuntu
- parent: atmosphere-promote-container-image
- vars: *container_image_vars
- files: *container_image_files
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 2659902..d01cc79 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -46,10 +46,28 @@
parent: tox
- job:
+ name: atmosphere-build-images
+ parent: depot-bake
+ vars:
+ depot_bake_project_id: jd10vkmkwv
+ depot_bake_environment:
+ REGISTRY: harbor.atmosphere.dev/ci
+ TAG: "{{ zuul.change }}"
+ files: &image_build_files
+ - ^images/
+ - docker-bake.hcl
+
+- job:
+ name: atmosphere-promote-images
+ parent: promote-depot-bake
+ files: *image_build_files
+ vars:
+ promote_depot_bake_job: atmosphere-build-images
+
+- job:
name: atmosphere-build-collection
parent: build-ansible-collection
pre-run:
- - zuul.d/playbooks/common/switch-to-atmosphere-mirror.yml
- zuul.d/playbooks/build-collection/pre.yml
irrelevant-files:
- ^doc/
diff --git a/zuul.d/playbooks/build-collection/pre.yml b/zuul.d/playbooks/build-collection/pre.yml
index e57d724..7319377 100644
--- a/zuul.d/playbooks/build-collection/pre.yml
+++ b/zuul.d/playbooks/build-collection/pre.yml
@@ -16,10 +16,17 @@
ansible.builtin.import_playbook: ../common/generate-changelog.yml
- name: Configure Buildset Registry
- ansible.builtin.import_playbook: ../common/configure-buildset-registry.yml
+ ansible.builtin.import_playbook: ../common/configure-ci-registry.yml
- name: Prepare for collection build
hosts: all
+ pre_tasks:
+ - name: Ensure "go" is installed
+ ansible.builtin.include_role:
+ name: ensure-go
+ vars:
+ go_version: "1.22.3"
+
tasks:
- name: Find all roles
find:
@@ -45,9 +52,9 @@
- name: Pin all image digests
ansible.builtin.include_role:
- name: tox
+ name: go
vars:
- tox_envlist: pin-digests
+ go_command: run cmd/pinimages/pinimages.go
- name: Print out the new image manifest file
ansible.builtin.command: |
diff --git a/zuul.d/playbooks/common/configure-buildset-registry.yml b/zuul.d/playbooks/common/configure-buildset-registry.yml
deleted file mode 100644
index 7ab8e75..0000000
--- a/zuul.d/playbooks/common/configure-buildset-registry.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-# SPDX-License-Identifier: Apache-2.0
-
-- name: Configure Buildset Registry
- hosts: all
- tasks:
- # NOTE(mnaser): This can be removed once the following merges
- # https://review.opendev.org/c/zuul/zuul-jobs/+/915025
- - name: Load "buildset_registry" fact
- block:
- - name: Check for results.json
- stat:
- path: "{{ zuul.executor.result_data_file }}"
- register: result_json_stat
- delegate_to: localhost
- - name: Load information from zuul_return
- no_log: true
- set_fact:
- buildset_registry: "{{ (lookup('file', zuul.executor.result_data_file) | from_json)['secret_data']['buildset_registry'] }}"
- when:
- - buildset_registry is not defined
- - result_json_stat.stat.exists
- - result_json_stat.stat.size > 0
- - "'buildset_registry' in (lookup('file', zuul.executor.result_data_file) | from_json).get('secret_data')"
-
- - name: Configure buildset registry
- when: buildset_registry is defined
- block:
- - name: Install CA certificate for the registry
- become: true
- ansible.builtin.copy:
- content: "{{ buildset_registry.cert }}"
- dest: /usr/local/share/ca-certificates/registry.crt
- - name: Update CA certificates
- become: true
- ansible.builtin.shell: update-ca-certificates
- - name: Replace the registry in image manifest
- ansible.builtin.replace:
- path: "{{ zuul.project.src_dir }}/roles/defaults/vars/main.yml"
- regexp: "{{ repo }}:"
- replace: '{{ buildset_registry.host }}:{{ buildset_registry.port }}/{{ repo }}:'
- loop: "{{ zuul.artifacts | default([]) }}"
- loop_control:
- loop_var: zj_zuul_artifact
- when: "'metadata' in zj_zuul_artifact and zj_zuul_artifact.metadata.type | default('') == 'container_image'"
- vars:
- repo: "{{ zj_zuul_artifact.metadata.repository }}"
- - name: Print out the new image manifest file
- ansible.builtin.command: |
- cat {{ zuul.project.src_dir }}/roles/defaults/vars/main.yml
diff --git a/zuul.d/playbooks/common/configure-ci-registry.yml b/zuul.d/playbooks/common/configure-ci-registry.yml
new file mode 100644
index 0000000..57684a1
--- /dev/null
+++ b/zuul.d/playbooks/common/configure-ci-registry.yml
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+- name: Configure CI registry
+ hosts: all
+ tasks:
+ - name: Replace the registry in image manifest
+ ansible.builtin.replace:
+ path: "{{ zuul.project.src_dir }}/roles/defaults/vars/main.yml"
+ regexp: "{{ zj_zuul_artifact.metadata.repository | regex_replace('/ci/', '/library/', 1) }}:.*"
+ replace: '{{ zj_zuul_artifact.metadata.repository }}:{{ zj_zuul_artifact.metadata.tag }}"'
+ loop: "{{ zuul.artifacts | default([]) }}"
+ loop_control:
+ loop_var: zj_zuul_artifact
+ when:
+ - "'metadata' in zj_zuul_artifact"
+ - "zj_zuul_artifact.metadata.type | default('') == 'container_image'"
+
+ - name: Print out the new image manifest file
+ ansible.builtin.command: |
+ cat {{ zuul.project.src_dir }}/roles/defaults/vars/main.yml
diff --git a/zuul.d/playbooks/molecule/pre.yml b/zuul.d/playbooks/molecule/pre.yml
index 932838e..4d9dfed 100644
--- a/zuul.d/playbooks/molecule/pre.yml
+++ b/zuul.d/playbooks/molecule/pre.yml
@@ -44,4 +44,4 @@
chdir: "{{ zuul.project.src_dir }}"
- name: Configure Buildset Registry
- ansible.builtin.import_playbook: ../common/configure-buildset-registry.yml
+ ansible.builtin.import_playbook: ../common/configure-ci-registry.yml
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index e60cd48..556a6a9 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -22,68 +22,21 @@
- atmosphere-tox-promtool-test
- atmosphere-tox-helm-unittest
- atmosphere-tox-py3
+ - atmosphere-build-images
- atmosphere-build-collection:
- dependencies: &molecule_check_dependencies
- - name: atmosphere-build-container-image-barbican
- soft: true
- - name: atmosphere-build-container-image-cinder
- soft: true
- - name: atmosphere-build-container-image-designate
- soft: true
- - name: atmosphere-build-container-image-glance
- soft: true
- - name: atmosphere-build-container-image-heat
- soft: true
- - name: atmosphere-build-container-image-horizon
- soft: true
- - name: atmosphere-build-container-image-ironic
- soft: true
- - name: atmosphere-build-container-image-keepalived
- soft: true
- - name: atmosphere-build-container-image-keystone
- soft: true
- - name: atmosphere-build-container-image-kubernetes-entrypoint
- soft: true
- - name: atmosphere-build-container-image-libvirtd
- soft: true
- - name: atmosphere-build-container-image-magnum
- soft: true
- - name: atmosphere-build-container-image-manila
- soft: true
- - name: atmosphere-build-container-image-netoffload
- soft: true
- - name: atmosphere-build-container-image-neutron
- soft: true
- - name: atmosphere-build-container-image-nova
- soft: true
- - name: atmosphere-build-container-image-nova-ssh
- soft: true
- - name: atmosphere-build-container-image-octavia
- soft: true
- - name: atmosphere-build-container-image-openvswitch
- soft: true
- - name: atmosphere-build-container-image-ovn
- soft: true
- - name: atmosphere-build-container-image-placement
- soft: true
- - name: atmosphere-build-container-image-python-openstackclient
- soft: true
- - name: atmosphere-build-container-image-senlin
- soft: true
- - name: atmosphere-build-container-image-staffeln
- soft: true
- - name: atmosphere-build-container-image-tempest
+ dependencies: &image_build_jobs
+ - name: atmosphere-build-images
soft: true
- atmosphere-molecule-aio-keycloak:
- dependencies: *molecule_check_dependencies
+ dependencies: *image_build_jobs
- atmosphere-molecule-aio-openvswitch:
- dependencies: *molecule_check_dependencies
+ dependencies: *image_build_jobs
- atmosphere-molecule-aio-ovn:
- dependencies: *molecule_check_dependencies
+ dependencies: *image_build_jobs
- atmosphere-molecule-csi-local-path-provisioner:
- dependencies: *molecule_check_dependencies
+ dependencies: *image_build_jobs
- atmosphere-molecule-csi-rbd:
- dependencies: *molecule_check_dependencies
+ dependencies: *image_build_jobs
gate:
jobs:
- atmosphere-chart-vendor
@@ -91,68 +44,19 @@
- atmosphere-golang-go-test
- atmosphere-linters
- atmosphere-tox-py3
+ - atmosphere-build-images
- atmosphere-build-collection:
- dependencies: &molecule_gate_dependencies
- - name: atmosphere-upload-container-image-barbican
- soft: true
- - name: atmosphere-upload-container-image-cinder
- soft: true
- - name: atmosphere-upload-container-image-designate
- soft: true
- - name: atmosphere-upload-container-image-glance
- soft: true
- - name: atmosphere-upload-container-image-heat
- soft: true
- - name: atmosphere-upload-container-image-horizon
- soft: true
- - name: atmosphere-upload-container-image-ironic
- soft: true
- - name: atmosphere-upload-container-image-keepalived
- soft: true
- - name: atmosphere-upload-container-image-keystone
- soft: true
- - name: atmosphere-upload-container-image-kubernetes-entrypoint
- soft: true
- - name: atmosphere-upload-container-image-libvirtd
- soft: true
- - name: atmosphere-upload-container-image-magnum
- soft: true
- - name: atmosphere-upload-container-image-manila
- soft: true
- - name: atmosphere-upload-container-image-netoffload
- soft: true
- - name: atmosphere-upload-container-image-neutron
- soft: true
- - name: atmosphere-upload-container-image-nova
- soft: true
- - name: atmosphere-upload-container-image-nova-ssh
- soft: true
- - name: atmosphere-upload-container-image-octavia
- soft: true
- - name: atmosphere-upload-container-image-openvswitch
- soft: true
- - name: atmosphere-upload-container-image-ovn
- soft: true
- - name: atmosphere-upload-container-image-placement
- soft: true
- - name: atmosphere-upload-container-image-python-openstackclient
- soft: true
- - name: atmosphere-upload-container-image-senlin
- soft: true
- - name: atmosphere-upload-container-image-staffeln
- soft: true
- - name: atmosphere-upload-container-image-tempest
- soft: true
+ dependencies: *image_build_jobs
- atmosphere-molecule-aio-keycloak:
- dependencies: *molecule_gate_dependencies
+ dependencies: *image_build_jobs
- atmosphere-molecule-aio-openvswitch:
- dependencies: *molecule_gate_dependencies
+ dependencies: *image_build_jobs
- atmosphere-molecule-aio-ovn:
- dependencies: *molecule_gate_dependencies
+ dependencies: *image_build_jobs
- atmosphere-molecule-csi-local-path-provisioner:
- dependencies: *molecule_gate_dependencies
+ dependencies: *image_build_jobs
- atmosphere-molecule-csi-rbd:
- dependencies: *molecule_gate_dependencies
+ dependencies: *image_build_jobs
release:
jobs:
- atmosphere-publish-collection