diff --git a/.zuul.yaml b/.zuul.yaml deleted file mode 100644 index 0fa4e436..00000000 --- a/.zuul.yaml +++ /dev/null @@ -1,74 +0,0 @@ -- job: - name: openstack-operator:images:build - parent: vexxhost-build-docker-image - provides: openstack-operator:image:operator - vars: &openstack_operator_images - docker_images: - - context: images/mcrouter - repository: vexxhost/mcrouter - - context: images/mcrouter_exporter - repository: vexxhost/mcrouter_exporter - - context: images/memcached - repository: vexxhost/memcached - - context: images/memcached_exporter - repository: vexxhost/memcached_exporter - - context: images/rabbitmq - repository: vexxhost/rabbitmq - - context: . - repository: vexxhost/openstack-operator - -- job: - name: openstack-operator:images:upload - parent: vexxhost-upload-docker-image - provides: openstack-operator:image:operator - vars: *openstack_operator_images - -- job: - name: openstack-operator:images:promote - parent: vexxhost-promote-docker-image - vars: *openstack_operator_images - -- job: - name: openstack-operator:linters:chart - parent: chart-testing-lint - vars: - zuul_work_dir: "{{ zuul.project.src_dir }}/chart" - -- job: - name: openstack-operator:functional - parent: devstack-tempest - requires: - - openstack-operator:images - pre-run: playbooks/functional/pre.yaml - run: playbooks/functional/run.yaml - post-run: playbooks/functional/post.yaml - vars: - devstack_services: - etcd3: false - docker_use_buildset_registry: true - minikube_dns_resolvers: ['1.1.1.1', '8.8.8.8'] - -- project: - templates: - - publish-opendev-tox-docs - check: - jobs: - - golangci-lint - - golang-go-test - - openstack-operator:linters:chart - - openstack-operator:images:build - - openstack-operator:functional: - dependencies: - - openstack-operator:images:build - gate: - jobs: - - golangci-lint - - golang-go-test - - openstack-operator:linters:chart - - openstack-operator:images:upload - - openstack-operator:functional: - dependencies: - - openstack-operator:images:upload - promote: - jobs: - - openstack-operator:images:promote diff --git a/Makefile b/Makefile index 6f2d30c6..71b4684a 100644 --- a/Makefile +++ b/Makefile @@ -61,7 +61,7 @@ generate: controller-gen # Build the docker image docker-build: test - docker build . -t ${IMG} + docker build . -f images/openstack-operator/Dockerfile -t ${IMG} # Push the docker image docker-push: @@ -87,8 +87,8 @@ endif # run-time images images: docker build images/mcrouter -t vexxhost/mcrouter:latest - docker build images/mcrouter_exporter -t vexxhost/mcrouter_exporter:latest + docker build images/mcrouter-exporter -t vexxhost/mcrouter-exporter:latest docker build images/memcached -t vexxhost/memcached:latest - docker build images/memcached_exporter -t vexxhost/memcached_exporter:latest + docker build images/memcached-exporter -t vexxhost/memcached-exporter:latest docker build images/rabbitmq -t vexxhost/rabbitmq:latest diff --git a/controllers/mcrouter_controller.go b/controllers/mcrouter_controller.go index 14bde38e..fe70d799 100755 --- a/controllers/mcrouter_controller.go +++ b/controllers/mcrouter_controller.go @@ -107,7 +107,7 @@ func (r *McrouterReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { RunAsUser(999). RunAsGroup(999), ), - builders.Container("exporter", "vexxhost/mcrouter_exporter:latest"). + builders.Container("exporter", "vexxhost/mcrouter-exporter:latest"). Args("-mcrouter.address", "localhost:11211"). Port("metrics", 9442).HTTPProbe("metrics", "/metrics", 10, 30). Resources(500, 128, 500, 2). diff --git a/controllers/memcached_controller.go b/controllers/memcached_controller.go index 6bdacc91..4fede840 100755 --- a/controllers/memcached_controller.go +++ b/controllers/memcached_controller.go @@ -111,7 +111,7 @@ func (r *MemcachedReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { builders.SecurityContext(). RunAsUser(1001), ), - builders.Container("exporter", "vexxhost/memcached_exporter:latest"). + builders.Container("exporter", "vexxhost/memcached-exporter:latest"). Port("metrics", 9150).HTTPProbe("metrics", "/metrics", 10, 30). Resources(500, 128, 500, 2). SecurityContext( diff --git a/hack/update-zuul-jobs.py b/hack/update-zuul-jobs.py new file mode 100755 index 00000000..3e55a492 --- /dev/null +++ b/hack/update-zuul-jobs.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python + +import copy +import os +import sys + +from ruamel import yaml + + +yaml = yaml.YAML() +images = os.listdir("images") + +build_jobs = [] +upload_jobs = [] + +for image in images: + files = [] + if image != 'openstack-operator': + files = ['^images/%s/.*' % image] + deps = ['opendev-buildset-registry'] + + job_vars = { + 'docker_images': [ + { + 'context': 'images/%s' % image, + 'repository': 'vexxhost/%s' % image, + } + ] + } + if image == 'openstack-operator': + job_vars['docker_images'][0]['context'] = '.' + job_vars['docker_images'][0]['dockerfile'] = 'images/openstack-operator/Dockerfile' + + build_job = { + 'job': { + 'name': 'openstack-operator:images:build:%s' % image, + 'parent': 'vexxhost-build-docker-image', + 'provides': 'openstack-operator:image:%s' % image, + 'dependencies': deps, + 'vars': job_vars, + } + } + + upload_job = { + 'job': { + 'name': 'openstack-operator:images:upload:%s' % image, + 'parent': 'vexxhost-upload-docker-image', + 'provides': 'openstack-operator:image:%s' % image, + 'dependencies': deps, + 'vars': job_vars, + } + } + + promote_job = { + 'job': { + 'name': 'openstack-operator:images:promote:%s' % image, + 'parent': 'vexxhost-promote-docker-image', + 'vars': job_vars, + } + } + + if files: + build_job['job']['files'] = files + upload_job['job']['files'] = files + promote_job['job']['files'] = files + + project_config = { + 'project': { + 'check': {'jobs': [build_job['job']['name']]}, + 'gate': {'jobs': [upload_job['job']['name']]}, + 'promote': {'jobs': [promote_job['job']['name']]}, + } + } + + config = [ + build_job, + upload_job, + promote_job, + project_config + ] + + if image == 'openstack-operator': + build_jobs.append(build_job['job']['name']) + upload_jobs.append(upload_job['job']['name']) + else: + build_jobs.append({'name': build_job['job']['name'], 'soft': True}) + upload_jobs.append({'name': upload_job['job']['name'], 'soft': True}) + + with open("zuul.d/%s-jobs.yaml" % image, "w+") as fd: + yaml.dump(config, fd) + + +with open("zuul.d/functional-jobs.yaml") as fd: + data = yaml.load(fd) + +for obj in data: + if 'project' in obj: + for job in obj['project']['check']['jobs']: + if 'openstack-operator:functional' in job: + job['openstack-operator:functional']['dependencies'] = \ + build_jobs + for job in obj['project']['gate']['jobs']: + if 'openstack-operator:functional' in job: + job['openstack-operator:functional']['dependencies'] = \ + upload_jobs + +with open("zuul.d/functional-jobs.yaml", "w+") as fd: + yaml.dump(data, fd) diff --git a/images/mcrouter_exporter/Dockerfile b/images/mcrouter-exporter/Dockerfile similarity index 100% rename from images/mcrouter_exporter/Dockerfile rename to images/mcrouter-exporter/Dockerfile diff --git a/images/memcached_exporter/Dockerfile b/images/memcached-exporter/Dockerfile similarity index 100% rename from images/memcached_exporter/Dockerfile rename to images/memcached-exporter/Dockerfile diff --git a/Dockerfile b/images/openstack-operator/Dockerfile similarity index 100% rename from Dockerfile rename to images/openstack-operator/Dockerfile diff --git a/tox.ini b/tox.ini index b75ece98..cb8000a2 100644 --- a/tox.ini +++ b/tox.ini @@ -2,6 +2,12 @@ minversion = 2.0 skipsdist = True +[testenv:update-zuul-jobs] +deps = + ruamel.yaml +commands = + {toxinidir}/hack/update-zuul-jobs.py + [testenv:docs] deps = -r{toxinidir}/doc/requirements.txt diff --git a/zuul.d/functional-jobs.yaml b/zuul.d/functional-jobs.yaml new file mode 100644 index 00000000..0fa235a8 --- /dev/null +++ b/zuul.d/functional-jobs.yaml @@ -0,0 +1,47 @@ +- job: + name: openstack-operator:functional + parent: devstack-tempest + requires: + - openstack-operator:images + pre-run: playbooks/functional/pre.yaml + run: playbooks/functional/run.yaml + post-run: playbooks/functional/post.yaml + vars: + devstack_services: + etcd3: false + docker_use_buildset_registry: true + minikube_dns_resolvers: [1.1.1.1, 8.8.8.8] + +- project: + check: + jobs: + - opendev-buildset-registry + - openstack-operator:functional: + dependencies: + - name: openstack-operator:images:build:rabbitmq + soft: true + - name: openstack-operator:images:build:memcached + soft: true + - name: openstack-operator:images:build:mcrouter + soft: true + - openstack-operator:images:build:openstack-operator + - name: openstack-operator:images:build:mcrouter-exporter + soft: true + - name: openstack-operator:images:build:memcached-exporter + soft: true + gate: + jobs: + - opendev-buildset-registry + - openstack-operator:functional: + dependencies: + - name: openstack-operator:images:upload:rabbitmq + soft: true + - name: openstack-operator:images:upload:memcached + soft: true + - name: openstack-operator:images:upload:mcrouter + soft: true + - openstack-operator:images:upload:openstack-operator + - name: openstack-operator:images:upload:mcrouter-exporter + soft: true + - name: openstack-operator:images:upload:memcached-exporter + soft: true diff --git a/zuul.d/mcrouter-exporter-jobs.yaml b/zuul.d/mcrouter-exporter-jobs.yaml new file mode 100644 index 00000000..22e23a57 --- /dev/null +++ b/zuul.d/mcrouter-exporter-jobs.yaml @@ -0,0 +1,34 @@ +- job: + name: openstack-operator:images:build:mcrouter-exporter + parent: vexxhost-build-docker-image + provides: openstack-operator:image:mcrouter-exporter + dependencies: &id001 + - opendev-buildset-registry + vars: &id002 + docker_images: + - context: images/mcrouter-exporter + repository: vexxhost/mcrouter-exporter + files: &id003 + - ^images/mcrouter-exporter/.* +- job: + name: openstack-operator:images:upload:mcrouter-exporter + parent: vexxhost-upload-docker-image + provides: openstack-operator:image:mcrouter-exporter + dependencies: *id001 + vars: *id002 + files: *id003 +- job: + name: openstack-operator:images:promote:mcrouter-exporter + parent: vexxhost-promote-docker-image + vars: *id002 + files: *id003 +- project: + check: + jobs: + - openstack-operator:images:build:mcrouter-exporter + gate: + jobs: + - openstack-operator:images:upload:mcrouter-exporter + promote: + jobs: + - openstack-operator:images:promote:mcrouter-exporter diff --git a/zuul.d/mcrouter-jobs.yaml b/zuul.d/mcrouter-jobs.yaml new file mode 100644 index 00000000..ba05df97 --- /dev/null +++ b/zuul.d/mcrouter-jobs.yaml @@ -0,0 +1,34 @@ +- job: + name: openstack-operator:images:build:mcrouter + parent: vexxhost-build-docker-image + provides: openstack-operator:image:mcrouter + dependencies: &id001 + - opendev-buildset-registry + vars: &id002 + docker_images: + - context: images/mcrouter + repository: vexxhost/mcrouter + files: &id003 + - ^images/mcrouter/.* +- job: + name: openstack-operator:images:upload:mcrouter + parent: vexxhost-upload-docker-image + provides: openstack-operator:image:mcrouter + dependencies: *id001 + vars: *id002 + files: *id003 +- job: + name: openstack-operator:images:promote:mcrouter + parent: vexxhost-promote-docker-image + vars: *id002 + files: *id003 +- project: + check: + jobs: + - openstack-operator:images:build:mcrouter + gate: + jobs: + - openstack-operator:images:upload:mcrouter + promote: + jobs: + - openstack-operator:images:promote:mcrouter diff --git a/zuul.d/memcached-exporter-jobs.yaml b/zuul.d/memcached-exporter-jobs.yaml new file mode 100644 index 00000000..bd6096b1 --- /dev/null +++ b/zuul.d/memcached-exporter-jobs.yaml @@ -0,0 +1,34 @@ +- job: + name: openstack-operator:images:build:memcached-exporter + parent: vexxhost-build-docker-image + provides: openstack-operator:image:memcached-exporter + dependencies: &id001 + - opendev-buildset-registry + vars: &id002 + docker_images: + - context: images/memcached-exporter + repository: vexxhost/memcached-exporter + files: &id003 + - ^images/memcached-exporter/.* +- job: + name: openstack-operator:images:upload:memcached-exporter + parent: vexxhost-upload-docker-image + provides: openstack-operator:image:memcached-exporter + dependencies: *id001 + vars: *id002 + files: *id003 +- job: + name: openstack-operator:images:promote:memcached-exporter + parent: vexxhost-promote-docker-image + vars: *id002 + files: *id003 +- project: + check: + jobs: + - openstack-operator:images:build:memcached-exporter + gate: + jobs: + - openstack-operator:images:upload:memcached-exporter + promote: + jobs: + - openstack-operator:images:promote:memcached-exporter diff --git a/zuul.d/memcached-jobs.yaml b/zuul.d/memcached-jobs.yaml new file mode 100644 index 00000000..8849b082 --- /dev/null +++ b/zuul.d/memcached-jobs.yaml @@ -0,0 +1,34 @@ +- job: + name: openstack-operator:images:build:memcached + parent: vexxhost-build-docker-image + provides: openstack-operator:image:memcached + dependencies: &id001 + - opendev-buildset-registry + vars: &id002 + docker_images: + - context: images/memcached + repository: vexxhost/memcached + files: &id003 + - ^images/memcached/.* +- job: + name: openstack-operator:images:upload:memcached + parent: vexxhost-upload-docker-image + provides: openstack-operator:image:memcached + dependencies: *id001 + vars: *id002 + files: *id003 +- job: + name: openstack-operator:images:promote:memcached + parent: vexxhost-promote-docker-image + vars: *id002 + files: *id003 +- project: + check: + jobs: + - openstack-operator:images:build:memcached + gate: + jobs: + - openstack-operator:images:upload:memcached + promote: + jobs: + - openstack-operator:images:promote:memcached diff --git a/zuul.d/misc-jobs.yaml b/zuul.d/misc-jobs.yaml new file mode 100644 index 00000000..cd161085 --- /dev/null +++ b/zuul.d/misc-jobs.yaml @@ -0,0 +1,19 @@ +- job: + name: openstack-operator:linters:chart + parent: chart-testing-lint + vars: + zuul_work_dir: "{{ zuul.project.src_dir }}/chart" + +- project: + templates: + - publish-opendev-tox-docs + check: + jobs: + - golangci-lint + - golang-go-test + - openstack-operator:linters:chart + gate: + jobs: + - golangci-lint + - golang-go-test + - openstack-operator:linters:chart diff --git a/zuul.d/openstack-operator-jobs.yaml b/zuul.d/openstack-operator-jobs.yaml new file mode 100644 index 00000000..bc5f1288 --- /dev/null +++ b/zuul.d/openstack-operator-jobs.yaml @@ -0,0 +1,31 @@ +- job: + name: openstack-operator:images:build:openstack-operator + parent: vexxhost-build-docker-image + provides: openstack-operator:image:openstack-operator + dependencies: &id001 + - opendev-buildset-registry + vars: &id002 + docker_images: + - context: . + repository: vexxhost/openstack-operator + dockerfile: images/openstack-operator/Dockerfile +- job: + name: openstack-operator:images:upload:openstack-operator + parent: vexxhost-upload-docker-image + provides: openstack-operator:image:openstack-operator + dependencies: *id001 + vars: *id002 +- job: + name: openstack-operator:images:promote:openstack-operator + parent: vexxhost-promote-docker-image + vars: *id002 +- project: + check: + jobs: + - openstack-operator:images:build:openstack-operator + gate: + jobs: + - openstack-operator:images:upload:openstack-operator + promote: + jobs: + - openstack-operator:images:promote:openstack-operator diff --git a/zuul.d/rabbitmq-jobs.yaml b/zuul.d/rabbitmq-jobs.yaml new file mode 100644 index 00000000..a118b3c5 --- /dev/null +++ b/zuul.d/rabbitmq-jobs.yaml @@ -0,0 +1,34 @@ +- job: + name: openstack-operator:images:build:rabbitmq + parent: vexxhost-build-docker-image + provides: openstack-operator:image:rabbitmq + dependencies: &id001 + - opendev-buildset-registry + vars: &id002 + docker_images: + - context: images/rabbitmq + repository: vexxhost/rabbitmq + files: &id003 + - ^images/rabbitmq/.* +- job: + name: openstack-operator:images:upload:rabbitmq + parent: vexxhost-upload-docker-image + provides: openstack-operator:image:rabbitmq + dependencies: *id001 + vars: *id002 + files: *id003 +- job: + name: openstack-operator:images:promote:rabbitmq + parent: vexxhost-promote-docker-image + vars: *id002 + files: *id003 +- project: + check: + jobs: + - openstack-operator:images:build:rabbitmq + gate: + jobs: + - openstack-operator:images:upload:rabbitmq + promote: + jobs: + - openstack-operator:images:promote:rabbitmq