Move the image specification to the armada manifest

This commit updates to move the image specification from
overrides generation to armada manifest and get the download
image list from both overrides files and armada manifest.

Story: 2005350
Task: 30312
Change-Id: Iea17a516c53cce4a0baaef684aa3c6cf6b3eff28
Signed-off-by: Angie Wang <angie.wang@windriver.com>
This commit is contained in:
Angie Wang 2019-03-22 16:35:01 -04:00
parent d1536ac9df
commit 05cc8f9d77
29 changed files with 301 additions and 552 deletions

View File

@ -126,6 +126,11 @@ data:
- type: job - type: job
labels: labels:
app: rbd-provisioner app: rbd-provisioner
values:
images:
tags:
# TODO: Remove after ceph upgrade
rbd_provisioner_storage_init: docker.io/starlingx/stx-ceph-config-helper:master-centos-dev-latest
source: source:
type: tar type: tar
location: http://172.17.0.1/helm_charts/rbd-provisioner-0.1.0.tgz location: http://172.17.0.1/helm_charts/rbd-provisioner-0.1.0.tgz
@ -187,7 +192,7 @@ data:
values: values:
monitoring: monitoring:
prometheus: prometheus:
enabled: true enabled: false
labels: labels:
server: server:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
@ -195,6 +200,9 @@ data:
prometheus_mysql_exporter: prometheus_mysql_exporter:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
node_selector_value: enabled node_selector_value: enabled
images:
tags:
prometheus_mysql_exporter_helm_tests: docker.io/starlingx/stx-heat:master-centos-dev-latest
pod: pod:
affinity: affinity:
anti: anti:
@ -233,6 +241,9 @@ data:
server: server:
node_selector_key: openstack-compute-node node_selector_key: openstack-compute-node
node_selector_value: enabled node_selector_value: enabled
images:
tags:
garbd: docker.io/starlingx/stx-mariadb:master-centos-stable-latest
source: source:
type: tar type: tar
location: http://172.17.0.1/helm_charts/garbd-0.1.0.tgz location: http://172.17.0.1/helm_charts/garbd-0.1.0.tgz
@ -271,7 +282,7 @@ data:
node_selector_value: enabled node_selector_value: enabled
monitoring: monitoring:
prometheus: prometheus:
enabled: true enabled: false
source: source:
type: tar type: tar
location: http://172.17.0.1/helm_charts/memcached-0.1.0.tgz location: http://172.17.0.1/helm_charts/memcached-0.1.0.tgz
@ -310,7 +321,7 @@ data:
values: values:
monitoring: monitoring:
prometheus: prometheus:
enabled: true enabled: false
labels: labels:
server: server:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
@ -318,6 +329,9 @@ data:
prometheus_rabbitmq_exporter: prometheus_rabbitmq_exporter:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
node_selector_value: enabled node_selector_value: enabled
images:
tags:
prometheus_rabbitmq_exporter_helm_tests: docker.io/starlingx/stx-heat:master-centos-dev-latest
pod: pod:
affinity: affinity:
anti: anti:
@ -376,7 +390,23 @@ data:
job: job:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
node_selector_value: enabled node_selector_value: enabled
images:
tags:
bootstrap: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_drop: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
keystone_api: docker.io/starlingx/stx-keystone:master-centos-dev-latest
keystone_credential_rotate: docker.io/starlingx/stx-keystone:master-centos-dev-latest
keystone_credential_setup: docker.io/starlingx/stx-keystone:master-centos-dev-latest
keystone_db_sync: docker.io/starlingx/stx-keystone:master-centos-dev-latest
keystone_domain_manage: docker.io/starlingx/stx-keystone:master-centos-dev-latest
keystone_fernet_rotate: docker.io/starlingx/stx-keystone:master-centos-dev-latest
keystone_fernet_setup: docker.io/starlingx/stx-keystone:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
pod: pod:
user:
keystone:
uid: 0
replicas: replicas:
api: 2 api: 2
affinity: affinity:
@ -426,6 +456,17 @@ data:
job: job:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
node_selector_value: enabled node_selector_value: enabled
images:
tags:
barbican_api: docker.io/starlingx/stx-barbican:master-centos-dev-latest
barbican_db_sync: docker.io/starlingx/stx-barbican:master-centos-dev-latest
bootstrap: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_drop: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_service: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
scripted_test: docker.io/starlingx/stx-heat:master-centos-dev-latest
pod: pod:
replicas: replicas:
api: 2 api: 2
@ -479,6 +520,18 @@ data:
registry: registry:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
node_selector_value: enabled node_selector_value: enabled
images:
tags:
bootstrap: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_drop: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
glance_storage_init: docker.io/starlingx/stx-ceph-config-helper:master-centos-dev-latest
glance_api: docker.io/starlingx/stx-glance:master-centos-dev-latest
glance_db_sync: docker.io/starlingx/stx-glance:master-centos-dev-latest
glance_registry: docker.io/starlingx/stx-glance:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_service: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
pod: pod:
replicas: replicas:
api: 2 api: 2
@ -539,6 +592,22 @@ data:
volume: volume:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
node_selector_value: enabled node_selector_value: enabled
images:
tags:
bootstrap: docker.io/starlingx/stx-heat:master-centos-dev-latest
cinder_api: docker.io/starlingx/stx-cinder:master-centos-dev-latest
cinder_backup: docker.io/starlingx/stx-cinder:master-centos-dev-latest
cinder_backup_storage_init: docker.io/starlingx/stx-ceph-config-helper:master-centos-dev-latest
cinder_db_sync: docker.io/starlingx/stx-cinder:master-centos-dev-latest
cinder_scheduler: docker.io/starlingx/stx-cinder:master-centos-dev-latest
cinder_storage_init: docker.io/starlingx/stx-ceph-config-helper:master-centos-dev-latest
cinder_volume: docker.io/starlingx/stx-cinder:master-centos-dev-latest
cinder_volume_usage_audit: docker.io/starlingx/stx-cinder:master-centos-dev-latest
db_drop: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_service: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
pod: pod:
replicas: replicas:
api: 2 api: 2
@ -580,6 +649,9 @@ data:
libvirt: libvirt:
node_selector_key: openstack-compute-node node_selector_key: openstack-compute-node
node_selector_value: enabled node_selector_value: enabled
images:
tags:
libvirt: docker.io/starlingx/stx-libvirt:master-centos-stable-latest
source: source:
type: tar type: tar
location: http://172.17.0.1/helm_charts/libvirt-0.1.0.tgz location: http://172.17.0.1/helm_charts/libvirt-0.1.0.tgz
@ -717,6 +789,29 @@ data:
test: test:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
node_selector_value: enabled node_selector_value: enabled
images:
tags:
bootstrap: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_drop: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_service: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
nova_api: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_cell_setup: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_cell_setup_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
nova_compute: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_compute_ironic: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_compute_ssh: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_conductor: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_consoleauth: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_db_sync: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_novncproxy: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_placement: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_scheduler: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_spiceproxy: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_spiceproxy_assets: docker.io/starlingx/stx-nova:master-centos-dev-latest
nova_storage_init: docker.io/starlingx/stx-ceph-config-helper:master-centos-dev-latest
pod: pod:
replicas: replicas:
api_metadata: 1 api_metadata: 1
@ -859,6 +954,11 @@ data:
labels: labels:
release_group: osh-openstack-nova-api-proxy release_group: osh-openstack-nova-api-proxy
component: test component: test
values:
images:
tags:
nova_api_proxy: docker.io/starlingx/stx-nova-api-proxy:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
source: source:
type: tar type: tar
location: http://172.17.0.1/helm_charts/nova-api-proxy-0.1.0.tgz location: http://172.17.0.1/helm_charts/nova-api-proxy-0.1.0.tgz
@ -944,6 +1044,23 @@ data:
test: test:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
node_selector_value: enabled node_selector_value: enabled
images:
tags:
bootstrap: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
neutron_db_sync: docker.io/starlingx/stx-neutron:master-centos-dev-latest
db_drop: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_service: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
neutron_server: docker.io/starlingx/stx-neutron:master-centos-dev-latest
neutron_dhcp: docker.io/starlingx/stx-neutron:master-centos-dev-latest
neutron_metadata: docker.io/starlingx/stx-neutron:master-centos-dev-latest
neutron_l3: docker.io/starlingx/stx-neutron:master-centos-dev-latest
neutron_openvswitch_agent: docker.io/starlingx/stx-neutron:master-centos-dev-latest
neutron_linuxbridge_agent: docker.io/starlingx/stx-neutron:master-centos-dev-latest
neutron_sriov_agent: docker.io/starlingx/stx-neutron:master-centos-dev-latest
neutron_sriov_agent_init: docker.io/starlingx/stx-neutron:master-centos-dev-latest
network: network:
interface: interface:
tunnel: docker0 tunnel: docker0
@ -1081,6 +1198,21 @@ data:
job: job:
node_selector_key: openstack-control-plane node_selector_key: openstack-control-plane
node_selector_value: enabled node_selector_value: enabled
images:
tags:
bootstrap: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_drop: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
heat_api: docker.io/starlingx/stx-heat:master-centos-dev-latest
heat_cfn: docker.io/starlingx/stx-heat:master-centos-dev-latest
heat_cloudwatch: docker.io/starlingx/stx-heat:master-centos-dev-latest
heat_db_sync: docker.io/starlingx/stx-heat:master-centos-dev-latest
heat_engine: docker.io/starlingx/stx-heat:master-centos-dev-latest
heat_engine_cleaner: docker.io/starlingx/stx-heat:master-centos-dev-latest
heat_purge_deleted: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_service: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
conf: conf:
policy: policy:
stacks:global_index: rule:context_is_admin stacks:global_index: rule:context_is_admin
@ -1131,6 +1263,20 @@ data:
release_group: osh-openstack-aodh release_group: osh-openstack-aodh
component: test component: test
values: values:
images:
tags:
bootstrap: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_drop: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
aodh_api: docker.io/starlingx/stx-aodh:master-centos-dev-latest
aodh_alarms_cleaner: docker.io/starlingx/stx-aodh:master-centos-dev-latest
aodh_db_sync: docker.io/starlingx/stx-aodh:master-centos-dev-latest
aodh_evaluator: docker.io/starlingx/stx-aodh:master-centos-dev-latest
aodh_listener: docker.io/starlingx/stx-aodh:master-centos-dev-latest
aodh_notifier: docker.io/starlingx/stx-aodh:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_service: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
pod: pod:
user: user:
aodh: aodh:
@ -1179,6 +1325,18 @@ data:
release_group: osh-openstack-gnocchi release_group: osh-openstack-gnocchi
component: test component: test
values: values:
images:
tags:
db_init: docker.io/starlingx/stx-gnocchi:master-centos-dev-latest
db_init_indexer: docker.io/starlingx/stx-gnocchi:master-centos-dev-latest
db_sync: docker.io/starlingx/stx-gnocchi:master-centos-dev-latest
gnocchi_api: docker.io/starlingx/stx-gnocchi:master-centos-dev-latest
gnocchi_metricd: docker.io/starlingx/stx-gnocchi:master-centos-dev-latest
gnocchi_resources_cleaner: docker.io/starlingx/stx-gnocchi:master-centos-dev-latest
gnocchi_statsd: docker.io/starlingx/stx-gnocchi:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_service: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
conf: conf:
gnocchi: gnocchi:
indexer: indexer:
@ -1324,6 +1482,17 @@ data:
anti: anti:
type: type:
default: requiredDuringSchedulingIgnoredDuringExecution default: requiredDuringSchedulingIgnoredDuringExecution
images:
tags:
bootstrap: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_drop: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
panko_db_sync: docker.io/starlingx/stx-panko:master-centos-dev-latest
panko_api: docker.io/starlingx/stx-panko:master-centos-dev-latest
panko_events_cleaner: docker.io/starlingx/stx-panko:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_service: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
jobs: jobs:
events_cleaner: events_cleaner:
# hourly at the 10 minute mark # hourly at the 10 minute mark
@ -1364,6 +1533,21 @@ data:
release_group: osh-openstack-ceilometer release_group: osh-openstack-ceilometer
component: test component: test
values: values:
images:
tags:
ks_service: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_user: docker.io/starlingx/stx-heat:master-centos-dev-latest
ks_endpoints: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-ceilometer:master-centos-dev-latest
db_init_mongodb: docker.io/starlingx/stx-ceilometer:master-centos-dev-latest
ceilometer_db_sync: docker.io/starlingx/stx-ceilometer:master-centos-dev-latest
ceilometer_central: docker.io/starlingx/stx-ceilometer:master-centos-dev-latest
ceilometer_compute: docker.io/starlingx/stx-ceilometer:master-centos-dev-latest
ceilometer_ipmi: docker.io/starlingx/stx-ceilometer:master-centos-dev-latest
ceilometer_notification: docker.io/starlingx/stx-ceilometer:master-centos-dev-latest
ceilometer_collector: docker.io/starlingx/stx-ceilometer:master-centos-dev-latest
ceilometer_api: docker.io/starlingx/stx-ceilometer:master-centos-dev-latest
test: docker.io/starlingx/stx-ceilometer:master-centos-dev-latest
dependencies: dependencies:
static: static:
central: central:
@ -1871,6 +2055,12 @@ data:
labels: labels:
release_group: osh-openstack-horizon release_group: osh-openstack-horizon
values: values:
images:
tags:
db_drop: docker.io/starlingx/stx-heat:master-centos-dev-latest
db_init: docker.io/starlingx/stx-heat:master-centos-dev-latest
horizon: docker.io/starlingx/stx-horizon:master-centos-dev-latest
horizon_db_sync: docker.io/starlingx/stx-horizon:master-centos-dev-latest
network: network:
node_port: node_port:
enabled: 'true' enabled: 'true'

View File

@ -151,7 +151,7 @@ ephemeral_pools:
# #
images: images:
tags: tags:
rbd_provisioner: quay.io/external_storage/rbd-provisioner:latest rbd_provisioner: quay.io/external_storage/rbd-provisioner:v2.1.1-k8s1.11
rbd_provisioner_storage_init: docker.io/port/ceph-config-helper:v1.10.3 rbd_provisioner_storage_init: docker.io/port/ceph-config-helper:v1.10.3
pull_policy: "IfNotPresent" pull_policy: "IfNotPresent"
local_registry: local_registry:

View File

@ -37,5 +37,6 @@ python-magnumclient>=2.0.0 # Apache-2.0
psutil psutil
simplejson>=2.2.0 # MIT simplejson>=2.2.0 # MIT
rpm rpm
ruamel.yaml>=0.13.14 # MIT
docker # Apache-2.0 docker # Apache-2.0
kubernetes # Apache-2.0 kubernetes # Apache-2.0

View File

@ -20,22 +20,22 @@ from sysinv.helm import helm
CONF = cfg.CONF CONF = cfg.CONF
def create_app_overrides_action(path, app_name=None, repository=None, namespace=None): def create_app_overrides_action(path, app_name=None, namespace=None):
dbapi = api.get_instance() dbapi = api.get_instance()
operator = helm.HelmOperator(dbapi=dbapi, path=path, docker_repository=repository) operator = helm.HelmOperator(dbapi=dbapi, path=path)
operator.generate_helm_application_overrides(app_name, namespace) operator.generate_helm_application_overrides(app_name, namespace)
def create_armada_app_overrides_action(path, app_name=None, repository=None, namespace=None): def create_armada_app_overrides_action(path, app_name=None, namespace=None):
dbapi = api.get_instance() dbapi = api.get_instance()
operator = helm.HelmOperator(dbapi=dbapi, path=path, docker_repository=repository) operator = helm.HelmOperator(dbapi=dbapi, path=path)
operator.generate_helm_application_overrides(app_name, namespace, operator.generate_helm_application_overrides(app_name, namespace,
armada_format=True) armada_format=True)
def create_chart_override_action(path, chart_name=None, repository=None, namespace=None): def create_chart_override_action(path, chart_name=None, namespace=None):
dbapi = api.get_instance() dbapi = api.get_instance()
operator = helm.HelmOperator(dbapi=dbapi, path=path, docker_repository=repository) operator = helm.HelmOperator(dbapi=dbapi, path=path)
operator.generate_helm_chart_overrides(chart_name, namespace) operator.generate_helm_chart_overrides(chart_name, namespace)
@ -44,21 +44,18 @@ def add_action_parsers(subparsers):
parser.set_defaults(func=create_app_overrides_action) parser.set_defaults(func=create_app_overrides_action)
parser.add_argument('path', nargs='?') parser.add_argument('path', nargs='?')
parser.add_argument('app_name', nargs='?') parser.add_argument('app_name', nargs='?')
parser.add_argument('repository', nargs='?')
parser.add_argument('namespace', nargs='?') parser.add_argument('namespace', nargs='?')
parser = subparsers.add_parser('create-armada-app-overrides') parser = subparsers.add_parser('create-armada-app-overrides')
parser.set_defaults(func=create_armada_app_overrides_action) parser.set_defaults(func=create_armada_app_overrides_action)
parser.add_argument('path', nargs='?') parser.add_argument('path', nargs='?')
parser.add_argument('app_name', nargs='?') parser.add_argument('app_name', nargs='?')
parser.add_argument('repository', nargs='?')
parser.add_argument('namespace', nargs='?') parser.add_argument('namespace', nargs='?')
parser = subparsers.add_parser('create-chart-overrides') parser = subparsers.add_parser('create-chart-overrides')
parser.set_defaults(func=create_chart_override_action) parser.set_defaults(func=create_chart_override_action)
parser.add_argument('path', nargs='?') parser.add_argument('path', nargs='?')
parser.add_argument('chart_name', nargs='?') parser.add_argument('chart_name', nargs='?')
parser.add_argument('repository', nargs='?')
parser.add_argument('namespace', nargs='?') parser.add_argument('namespace', nargs='?')
@ -75,18 +72,15 @@ def main():
CONF.action.func(CONF.action.path, CONF.action.func(CONF.action.path,
CONF.action.app_name, CONF.action.app_name,
CONF.action.repository,
CONF.action.namespace) CONF.action.namespace)
elif CONF.action.name == 'create-armada-app-overrides': elif CONF.action.name == 'create-armada-app-overrides':
CONF.action.func(CONF.action.path, CONF.action.func(CONF.action.path,
CONF.action.app_name, CONF.action.app_name,
CONF.action.repository,
CONF.action.namespace) CONF.action.namespace)
elif CONF.action.name == 'create-chart-overrides': elif CONF.action.name == 'create-chart-overrides':
try: try:
CONF.action.func(CONF.action.path, CONF.action.func(CONF.action.path,
CONF.action.chart_name, CONF.action.chart_name,
CONF.action.repository,
CONF.action.namespace) CONF.action.namespace)
except Exception as e: except Exception as e:
print(e) print(e)

View File

@ -16,11 +16,11 @@ import keyring
import os import os
import pwd import pwd
import re import re
import ruamel.yaml as yaml
import shutil import shutil
import subprocess import subprocess
import threading import threading
import time import time
import yaml
from collections import namedtuple from collections import namedtuple
from eventlet import greenpool from eventlet import greenpool
@ -62,6 +62,7 @@ TARFILE_TRANSFER_CHUNK_SIZE = 1024 * 512
DOCKER_REGISTRY_USER = 'admin' DOCKER_REGISTRY_USER = 'admin'
DOCKER_REGISTRY_SERVICE = 'CGCS' DOCKER_REGISTRY_SERVICE = 'CGCS'
DOCKER_REGISTRY_SECRET = 'default-registry-key' DOCKER_REGISTRY_SECRET = 'default-registry-key'
DOCKER_REGISTRY_PORT = '9001'
# Helper functions # Helper functions
@ -311,17 +312,18 @@ class AppOperator(object):
for r, f in cutils.get_files_matching(path, 'values.yaml'): for r, f in cutils.get_files_matching(path, 'values.yaml'):
with open(os.path.join(r, f), 'r') as value_f: with open(os.path.join(r, f), 'r') as value_f:
try: try:
y = yaml.load(value_f) y = yaml.safe_load(value_f)
ids = y["images"]["tags"].values() ids = y["images"]["tags"].values()
except (TypeError, KeyError): except (TypeError, KeyError):
pass pass
image_tags.extend(ids) image_tags.extend(ids)
return list(set(image_tags)) return list(set(image_tags))
def _get_image_tags_by_charts(self, app_images_file, charts): def _get_image_tags_by_charts(self, app_images_file, app_manifest_file):
""" Mine the image tags for charts from the images file. Add the """ Mine the image tags for charts from the images file. Add the
converted image tags to the overrides if the image tags from image tags to the manifest file if the image tags from the charts
the charts do not exist. Intended for system app. do not exist in both overrides file and manifest file. Convert
the image tags in the manifest file. Intended for system app.
The image tagging conversion(local docker registry address prepended): The image tagging conversion(local docker registry address prepended):
${LOCAL_DOCKER_REGISTRY_IP}:${REGISTRY_PORT}/<image-name> ${LOCAL_DOCKER_REGISTRY_IP}:${REGISTRY_PORT}/<image-name>
@ -329,64 +331,102 @@ class AppOperator(object):
""" """
local_registry_server = self._docker.get_local_docker_registry_server() local_registry_server = self._docker.get_local_docker_registry_server()
manifest_image_tags_updated = False
image_tags = [] image_tags = []
if os.path.exists(app_images_file):
with open(app_images_file, 'r') as f:
images_file = yaml.safe_load(f)
if os.path.exists(app_manifest_file):
with open(app_manifest_file, 'r') as f:
charts = list(yaml.load_all(f, Loader=yaml.RoundTripLoader))
for chart in charts: for chart in charts:
images_charts = {} images_charts = {}
images_overrides = {} images_overrides = {}
overrides = chart.namespace + '-' + chart.name + '.yaml' images_manifest = {}
overrides_file = os.path.join(common.HELM_OVERRIDES_PATH,
overrides)
# Get the image tags by chart from the images file overrides_image_tags_updated = False
if os.path.exists(app_images_file): chart_image_tags_updated = False
with open(app_images_file, 'r') as f:
if "armada/Chart/" in chart['schema']:
chart_data = chart['data']
chart_name = chart_data['chart_name']
chart_namespace = chart_data['namespace']
# Get the image tags by chart from the images file
if chart_name in images_file:
images_charts = images_file[chart_name]
# Get the image tags from the overrides file
overrides = chart_namespace + '-' + chart_name + '.yaml'
app_overrides_file = os.path.join(common.HELM_OVERRIDES_PATH, overrides)
if os.path.exists(app_overrides_file):
try: try:
doc = yaml.load(f) with open(app_overrides_file, 'r') as f:
images_charts = doc[chart.name] overrides_file = yaml.safe_load(f)
images_overrides = overrides_file['data']['values']['images']['tags']
except (TypeError, KeyError): except (TypeError, KeyError):
pass pass
# Get the image tags from the overrides file # Get the image tags from the armada manifest file
if os.path.exists(overrides_file): try:
with open(overrides_file, 'r') as f: images_manifest = chart_data['values']['images']['tags']
try: except (TypeError, KeyError):
y = yaml.load(f) LOG.info("Armada manifest file has no img tags for "
images_overrides = y["data"]["values"]["images"]["tags"] "chart %s" % chart_name)
except (TypeError, KeyError): pass
LOG.info("Overrides file %s has no img tags" %
overrides_file)
pass
# Add the converted image tags to the overrides if the images from # For the image tags from the chart path which do not exist
# the chart path do not exist in the overrides # in the overrides and manifest file, add to manifest file.
tags_updated = False # Convert the image tags in the overrides and manifest file
for key, image_tag in images_charts.items(): # with local docker registry address.
if (key not in images_overrides and # Append the required images to the image_tags list.
not image_tag.startswith(local_registry_server)): for key in images_charts:
images_overrides.update( if key not in images_overrides:
{key: '{}/{}'.format(local_registry_server, image_tag)}) if key not in images_manifest:
tags_updated = True images_manifest.update({key: images_charts[key]})
if not re.match(r'^.+:.+/', images_manifest[key]):
images_manifest.update(
{key: '{}/{}'.format(local_registry_server, images_manifest[key])})
chart_image_tags_updated = True
image_tags.append(images_manifest[key])
else:
if not re.match(r'^.+:.+/', images_overrides[key]):
images_overrides.update(
{key: '{}/{}'.format(local_registry_server, images_overrides[key])})
overrides_image_tags_updated = True
image_tags.append(images_overrides[key])
if tags_updated: if overrides_image_tags_updated:
with open(overrides_file, 'w') as f: with open(app_overrides_file, 'w') as f:
try: try:
if "images" not in y["data"]["values"]: overrides_file["data"]["values"]["images"] = {"tags": images_overrides}
f.seek(0) yaml.safe_dump(overrides_file, f, default_flow_style=False)
f.truncate() LOG.info("Overrides file %s updated with new image tags" %
y["data"]["values"]["images"] = {"tags": images_overrides} app_overrides_file)
else: except (TypeError, KeyError):
y["data"]["values"]["images"]["tags"] = images_overrides LOG.error("Overrides file %s fails to update" %
app_overrides_file)
yaml.safe_dump(y, f, explicit_start=True, if chart_image_tags_updated:
default_flow_style=False) if 'values' in chart_data:
LOG.info("Overrides file %s updated with new image tags" % chart_data['values']['images'] = {'tags': images_manifest}
overrides_file) else:
except (TypeError, KeyError): chart_data["values"] = {"images": {"tags": images_manifest}}
LOG.error("Overrides file %s fails to update" % manifest_image_tags_updated = True
overrides_file)
if images_overrides: if manifest_image_tags_updated:
image_tags.extend(images_overrides.values()) with open(app_manifest_file, 'w') as f:
try:
yaml.dump_all(charts, f, Dumper=yaml.RoundTripDumper,
explicit_start=True, default_flow_style=False)
LOG.info("Manifest file %s updated with new image tags" %
app_manifest_file)
except Exception as e:
LOG.error("Manifest file %s fails to update with "
"new image tags: %s" % (app_manifest_file, e))
return list(set(image_tags)) return list(set(image_tags))
@ -418,7 +458,7 @@ class AppOperator(object):
self._save_images_list_by_charts(app) self._save_images_list_by_charts(app)
# Get the list of images from the updated images overrides # Get the list of images from the updated images overrides
images_to_download = self._get_image_tags_by_charts( images_to_download = self._get_image_tags_by_charts(
app.imgfile_abs, app.charts) app.imgfile_abs, app.armada_mfile_abs)
else: else:
# For custom apps, mine image tags from application path # For custom apps, mine image tags from application path
images_to_download = self._get_image_tags_by_path(app.path) images_to_download = self._get_image_tags_by_path(app.path)
@ -447,7 +487,7 @@ class AppOperator(object):
if os.path.exists(chart_path): if os.path.exists(chart_path):
with open(chart_path, 'r') as f: with open(chart_path, 'r') as f:
try: try:
y = yaml.load(f) y = yaml.safe_load(f)
images = y["images"]["tags"] images = y["images"]["tags"]
except (TypeError, KeyError): except (TypeError, KeyError):
LOG.warn("Chart %s has no image tags" % chart_name) LOG.warn("Chart %s has no image tags" % chart_name)
@ -460,7 +500,7 @@ class AppOperator(object):
def _retrieve_images_list(self, app_images_file): def _retrieve_images_list(self, app_images_file):
with open(app_images_file, 'rb') as f: with open(app_images_file, 'rb') as f:
images_list = yaml.load(f) images_list = yaml.safe_load(f)
return images_list return images_list
def _download_images(self, app): def _download_images(self, app):
@ -473,7 +513,8 @@ class AppOperator(object):
# saved images list. # saved images list.
saved_images_list = self._retrieve_images_list(app.imgfile_abs) saved_images_list = self._retrieve_images_list(app.imgfile_abs)
saved_download_images_list = list(saved_images_list.get("download_images")) saved_download_images_list = list(saved_images_list.get("download_images"))
images_to_download = self._get_image_tags_by_charts(app.imgfile_abs, app.charts) images_to_download = self._get_image_tags_by_charts(
app.imgfile_abs, app.armada_mfile_abs)
if set(saved_download_images_list) != set(images_to_download): if set(saved_download_images_list) != set(images_to_download):
saved_images_list.update({"download_images": images_to_download}) saved_images_list.update({"download_images": images_to_download})
with open(app.imgfile_abs, 'wb') as f: with open(app.imgfile_abs, 'wb') as f:
@ -621,7 +662,7 @@ class AppOperator(object):
if os.path.exists(lfile) and os.path.getsize(lfile) > 0: if os.path.exists(lfile) and os.path.getsize(lfile) > 0:
with open(lfile, 'r') as f: with open(lfile, 'r') as f:
try: try:
y = yaml.load(f) y = yaml.safe_load(f)
labels = y['labels'] labels = y['labels']
except KeyError: except KeyError:
raise exception.KubeAppUploadFailure( raise exception.KubeAppUploadFailure(
@ -795,7 +836,7 @@ class AppOperator(object):
def _get_list_of_charts(self, manifest_file): def _get_list_of_charts(self, manifest_file):
charts = [] charts = []
with open(manifest_file, 'r') as f: with open(manifest_file, 'r') as f:
docs = yaml.load_all(f) docs = yaml.safe_load_all(f)
for doc in docs: for doc in docs:
try: try:
if "armada/Chart/" in doc['schema']: if "armada/Chart/" in doc['schema']:
@ -1363,7 +1404,7 @@ class DockerHelper(object):
cutils.format_address_name(constants.CONTROLLER_HOSTNAME, cutils.format_address_name(constants.CONTROLLER_HOSTNAME,
constants.NETWORK_TYPE_MGMT) constants.NETWORK_TYPE_MGMT)
).address ).address
registry_server = '{}:{}'.format(registry_ip, common.REGISTRY_PORT) registry_server = '{}:{}'.format(registry_ip, DOCKER_REGISTRY_PORT)
return registry_server return registry_server
def _get_img_tag_with_registry(self, pub_img_tag): def _get_img_tag_with_registry(self, pub_img_tag):

View File

@ -25,7 +25,6 @@ class AodhHelm(openstack.OpenstackBaseHelm):
overrides = { overrides = {
common.HELM_NS_OPENSTACK: { common.HELM_NS_OPENSTACK: {
'pod': self._get_pod_overrides(), 'pod': self._get_pod_overrides(),
'images': self._get_images_overrides(),
'conf': self._get_conf_overrides(), 'conf': self._get_conf_overrides(),
'endpoints': self._get_endpoints_overrides() 'endpoints': self._get_endpoints_overrides()
} }
@ -50,26 +49,6 @@ class AodhHelm(openstack.OpenstackBaseHelm):
} }
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'bootstrap': heat_image,
'db_drop': heat_image,
'db_init': self.docker_image,
'aodh_api': self.docker_image,
'aodh_alarms_cleaner': self.docker_image,
'aodh_db_sync': self.docker_image,
'aodh_evaluator': self.docker_image,
'aodh_listener': self.docker_image,
'aodh_notifier': self.docker_image,
'ks_endpoints': heat_image,
'ks_service': heat_image,
'ks_user': heat_image,
}
}
def _get_conf_overrides(self): def _get_conf_overrides(self):
return { return {
'aodh': { 'aodh': {

View File

@ -26,7 +26,6 @@ class BarbicanHelm(openstack.OpenstackBaseHelm):
} }
}, },
'endpoints': self._get_endpoints_overrides(), 'endpoints': self._get_endpoints_overrides(),
'images': self._get_images_overrides()
} }
} }
@ -61,20 +60,3 @@ class BarbicanHelm(openstack.OpenstackBaseHelm):
self.SERVICE_NAME, self.AUTH_USERS) self.SERVICE_NAME, self.AUTH_USERS)
}, },
} }
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'barbican_api': self.docker_image,
'barbican_db_sync': self.docker_image,
'bootstrap': heat_image,
'db_drop': heat_image,
'db_init': heat_image,
'ks_endpoints': heat_image,
'ks_service': heat_image,
'ks_user': heat_image,
'scripted_test': heat_image,
}
}

View File

@ -40,27 +40,6 @@ class BaseHelm(object):
def context(self): def context(self):
return self._operator.context return self._operator.context
@property
def docker_repo_source(self):
return common.DOCKER_SRC_LOC
@property
def docker_repo_tag(self):
return common.DOCKER_SRCS[self.docker_repo_source][common.IMG_TAG_KEY]
@property
def docker_image(self):
if self.docker_repo_source == common.DOCKER_SRC_LOC:
return "{}:{}/{}/{}{}:{}".format(
self._get_management_address(), common.REGISTRY_PORT, common.REPO_LOC,
common.DOCKER_SRCS[self.docker_repo_source][common.IMG_PREFIX_KEY],
self.SERVICE_NAME, self.docker_repo_tag)
else:
return "{}/{}{}:{}".format(
common.DOCKER_SRCS[self.docker_repo_source][common.IMG_BASE_KEY],
common.DOCKER_SRCS[self.docker_repo_source][common.IMG_PREFIX_KEY],
self.SERVICE_NAME, self.docker_repo_tag)
@staticmethod @staticmethod
def quoted_str(value): def quoted_str(value):
return quoted_str(value) return quoted_str(value)

View File

@ -25,7 +25,6 @@ class CeilometerHelm(openstack.OpenstackBaseHelm):
def get_overrides(self, namespace=None): def get_overrides(self, namespace=None):
overrides = { overrides = {
common.HELM_NS_OPENSTACK: { common.HELM_NS_OPENSTACK: {
'images': self._get_images_overrides(),
'pod': self._get_pod_overrides(), 'pod': self._get_pod_overrides(),
'conf': self._get_conf_overrides(), 'conf': self._get_conf_overrides(),
'manifests': self._get_manifests_overrides(), 'manifests': self._get_manifests_overrides(),
@ -41,27 +40,6 @@ class CeilometerHelm(openstack.OpenstackBaseHelm):
else: else:
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'ks_service': heat_image,
'ks_user': heat_image,
'ks_endpoints': heat_image,
'db_init': self.docker_image,
'db_init_mongodb': self.docker_image,
'ceilometer_db_sync': self.docker_image,
'ceilometer_central': self.docker_image,
'ceilometer_compute': self.docker_image,
'ceilometer_ipmi': self.docker_image,
'ceilometer_notification': self.docker_image,
'ceilometer_collector': self.docker_image,
'ceilometer_api': self.docker_image,
'test': self.docker_image
}
}
def _get_pod_overrides(self): def _get_pod_overrides(self):
return { return {
'replicas': { 'replicas': {

View File

@ -24,14 +24,6 @@ class CephPoolsAuditHelm(base.BaseHelm):
SERVICE_NAME = 'ceph-pools' SERVICE_NAME = 'ceph-pools'
@property
def docker_repo_source(self):
return common.DOCKER_SRC_STX
@property
def docker_repo_tag(self):
return common.DOCKER_SRCS[self.docker_repo_source][common.IMG_TAG_KEY]
def get_namespaces(self): def get_namespaces(self):
return self.SUPPORTED_NAMESPACES return self.SUPPORTED_NAMESPACES

View File

@ -35,7 +35,6 @@ class CinderHelm(openstack.OpenstackBaseHelm):
'backup': self._num_controllers() 'backup': self._num_controllers()
} }
}, },
'images': self._get_images_overrides(),
'conf': { 'conf': {
'cinder': self._get_conf_cinder_overrides(), 'cinder': self._get_conf_cinder_overrides(),
'ceph': self._get_conf_ceph_overrides(), 'ceph': self._get_conf_ceph_overrides(),
@ -181,36 +180,6 @@ class CinderHelm(openstack.OpenstackBaseHelm):
} }
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
# TODO: Remove after ceph upgrade
# Format the name of the stx specific ceph config helper
ceph_config_helper_image = "{}:{}/{}/{}{}:{}".format(
self._get_management_address(), common.REGISTRY_PORT, common.REPO_LOC,
common.DOCKER_SRCS[self.docker_repo_source][common.IMG_PREFIX_KEY],
'ceph-config-helper', self.docker_repo_tag)
return {
'tags': {
'bootstrap': heat_image,
'cinder_api': self.docker_image,
'cinder_backup': self.docker_image,
'cinder_backup_storage_init': ceph_config_helper_image,
'cinder_db_sync': self.docker_image,
'cinder_scheduler': self.docker_image,
'cinder_storage_init': ceph_config_helper_image,
'cinder_volume': self.docker_image,
'cinder_volume_usage_audit': self.docker_image,
'db_drop': heat_image,
'db_init': heat_image,
'ks_endpoints': heat_image,
'ks_service': heat_image,
'ks_user': heat_image,
}
}
def _get_primary_ceph_backend(self): def _get_primary_ceph_backend(self):
try: try:
backend = self.dbapi.storage_backend_get_by_name( backend = self.dbapi.storage_backend_get_by_name(

View File

@ -47,51 +47,3 @@ LABEL_REMOTE_STORAGE = 'remote-storage'
# Label values # Label values
LABEL_VALUE_ENABLED = 'enabled' LABEL_VALUE_ENABLED = 'enabled'
LABEL_VALUE_DISABLED = 'disabled' LABEL_VALUE_DISABLED = 'disabled'
# Image Tagging
DOCKER_SRC_OSH = 'openstackhelm'
DOCKER_SRC_STX = 'starlingx'
DOCKER_SRC_LOC = 'controller'
# TODO (rchurch): These values and settings are currently provided for early
# integration scenarios. As we formalize delivery mechanisms, these will need to
# be adjusted accordingly.
REGISTRY_PORT = '9001'
REGISTRY_OSH = 'docker.io'
REGISTRY_STX = '128.224.186.231:%s' % REGISTRY_PORT
REGISTRY_LOC = '192.168.204.2:%s' % REGISTRY_PORT
REPO_OSH = 'openstackhelm'
REPO_STX = 'abailey'
REPO_LOC = 'starlingx'
IMG_PREFIX_KEY = 'prefix'
IMG_BASE_KEY = 'base'
IMG_TAG_KEY = 'tag'
IMG_PREFIX_OSH = ''
IMG_PREFIX_STX = 'stx-'
IMG_PREFIX_LOC = 'stx-'
TAGS_PIKE = 'pike'
TAGS_LATEST = 'latest'
TAGS_STX_LATEST = 'master-centos-dev-latest'
DOCKER_SRCS = {
DOCKER_SRC_OSH: {
IMG_BASE_KEY: '{}/{}'.format(REGISTRY_OSH, REPO_OSH),
IMG_PREFIX_KEY: IMG_PREFIX_OSH,
IMG_TAG_KEY: TAGS_PIKE
},
DOCKER_SRC_STX: {
IMG_BASE_KEY: '{}/{}'.format(REGISTRY_STX, REPO_STX),
IMG_PREFIX_KEY: IMG_PREFIX_STX,
IMG_TAG_KEY: TAGS_STX_LATEST
},
DOCKER_SRC_LOC: {
IMG_BASE_KEY: '{}/{}'.format(REGISTRY_LOC, REPO_LOC),
IMG_PREFIX_KEY: IMG_PREFIX_LOC,
IMG_TAG_KEY: TAGS_STX_LATEST
}
}

View File

@ -66,7 +66,6 @@ class GarbdHelm(base.BaseHelm):
def get_overrides(self, namespace=None): def get_overrides(self, namespace=None):
overrides = { overrides = {
common.HELM_NS_OPENSTACK: { common.HELM_NS_OPENSTACK: {
'images': self._get_images_overrides(),
} }
} }
@ -77,11 +76,3 @@ class GarbdHelm(base.BaseHelm):
namespace=namespace) namespace=namespace)
else: else:
return overrides return overrides
def _get_images_overrides(self):
return {
'tags': {
'garbd': self.docker_image
}
}

View File

@ -35,7 +35,6 @@ class GlanceHelm(openstack.OpenstackBaseHelm):
'endpoints': self._get_endpoints_overrides(), 'endpoints': self._get_endpoints_overrides(),
'storage': self._get_storage_overrides(), 'storage': self._get_storage_overrides(),
'conf': self._get_conf_overrides(), 'conf': self._get_conf_overrides(),
'images': self._get_images_overrides(),
'bootstrap': self._get_bootstrap_overrides() 'bootstrap': self._get_bootstrap_overrides()
} }
} }
@ -48,30 +47,6 @@ class GlanceHelm(openstack.OpenstackBaseHelm):
else: else:
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
ceph_config_helper_image = "{}:{}/{}/{}{}:{}".format(
self._get_management_address(), common.REGISTRY_PORT,
common.REPO_LOC,
common.DOCKER_SRCS[self.docker_repo_source][common.IMG_PREFIX_KEY],
'ceph-config-helper', self.docker_repo_tag)
return {
'tags': {
'bootstrap': heat_image,
'db_drop': heat_image,
'db_init': heat_image,
'glance_storage_init': ceph_config_helper_image,
'glance_api': self.docker_image,
'glance_db_sync': self.docker_image,
'glance_registry': self.docker_image,
'ks_endpoints': heat_image,
'ks_service': heat_image,
'ks_user': heat_image,
}
}
def _get_pod_overrides(self): def _get_pod_overrides(self):
replicas_count = 1 replicas_count = 1
ceph_backend = self._get_primary_ceph_backend() ceph_backend = self._get_primary_ceph_backend()

View File

@ -24,7 +24,6 @@ class GnocchiHelm(openstack.OpenstackBaseHelm):
def get_overrides(self, namespace=None): def get_overrides(self, namespace=None):
overrides = { overrides = {
common.HELM_NS_OPENSTACK: { common.HELM_NS_OPENSTACK: {
'images': self._get_images_overrides(),
'pod': self._get_pod_overrides(), 'pod': self._get_pod_overrides(),
'endpoints': self._get_endpoints_overrides(), 'endpoints': self._get_endpoints_overrides(),
} }
@ -38,24 +37,6 @@ class GnocchiHelm(openstack.OpenstackBaseHelm):
else: else:
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'db_init': self.docker_image,
'db_init_indexer': self.docker_image,
'db_sync': self.docker_image,
'gnocchi_api': self.docker_image,
'gnocchi_metricd': self.docker_image,
'gnocchi_resources_cleaner': self.docker_image,
'gnocchi_statsd': self.docker_image,
'ks_endpoints': heat_image,
'ks_service': heat_image,
'ks_user': heat_image,
}
}
def _get_pod_overrides(self): def _get_pod_overrides(self):
return { return {
'replicas': { 'replicas': {

View File

@ -26,7 +26,6 @@ class HeatHelm(openstack.OpenstackBaseHelm):
common.HELM_NS_OPENSTACK: { common.HELM_NS_OPENSTACK: {
'pod': self._get_pod_overrides(), 'pod': self._get_pod_overrides(),
'endpoints': self._get_endpoints_overrides(), 'endpoints': self._get_endpoints_overrides(),
'images': self._get_images_overrides(),
} }
} }
@ -38,25 +37,6 @@ class HeatHelm(openstack.OpenstackBaseHelm):
else: else:
return overrides return overrides
def _get_images_overrides(self):
return {
'tags': {
'bootstrap': self.docker_image,
'db_drop': self.docker_image,
'db_init': self.docker_image,
'heat_api': self.docker_image,
'heat_cfn': self.docker_image,
'heat_cloudwatch': self.docker_image,
'heat_db_sync': self.docker_image,
'heat_engine': self.docker_image,
'heat_engine_cleaner': self.docker_image,
'heat_purge_deleted': self.docker_image,
'ks_endpoints': self.docker_image,
'ks_service': self.docker_image,
'ks_user': self.docker_image,
}
}
def _get_pod_overrides(self): def _get_pod_overrides(self):
return { return {
'replicas': { 'replicas': {

View File

@ -44,26 +44,12 @@ def helm_context(func):
class HelmOperator(object): class HelmOperator(object):
"""Class to encapsulate helm override operations for System Inventory""" """Class to encapsulate helm override operations for System Inventory"""
def __init__(self, dbapi=None, path=None, docker_repository=None): def __init__(self, dbapi=None, path=None):
if path is None: if path is None:
path = common.HELM_OVERRIDES_PATH path = common.HELM_OVERRIDES_PATH
# Set the primary source of docker images
if docker_repository is None:
# During initial development, use upstream OSH images by default and
# switch to the STX repo when the images are validated and ready for
# use.
docker_repository = common.DOCKER_SRC_OSH
else:
valid_docker_repositories = common.DOCKER_SRCS.keys()
if docker_repository not in valid_docker_repositories:
raise exception.InvalidHelmDockerImageSource(
source=docker_repository,
valid_srcs=valid_docker_repositories)
self.dbapi = dbapi self.dbapi = dbapi
self.path = path self.path = path
self.docker_repo_source = docker_repository
# register chart operators for lookup # register chart operators for lookup
self.chart_operators = {} self.chart_operators = {}

View File

@ -23,7 +23,6 @@ class HorizonHelm(openstack.OpenstackBaseHelm):
def get_overrides(self, namespace=None): def get_overrides(self, namespace=None):
overrides = { overrides = {
common.HELM_NS_OPENSTACK: { common.HELM_NS_OPENSTACK: {
'images': self._get_images_overrides(),
'conf': { 'conf': {
'horizon': { 'horizon': {
'local_settings': { 'local_settings': {
@ -63,18 +62,6 @@ class HorizonHelm(openstack.OpenstackBaseHelm):
}, },
} }
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'db_drop': heat_image,
'db_init': heat_image,
'horizon': self.docker_image,
'horizon_db_sync': self.docker_image,
}
}
def _get_local_settings_config_overrides(self): def _get_local_settings_config_overrides(self):
local_settings_config = { local_settings_config = {
'horizon_secret_key': self._get_or_generate_password( 'horizon_secret_key': self._get_or_generate_password(

View File

@ -21,7 +21,6 @@ class IronicHelm(openstack.OpenstackBaseHelm):
def get_overrides(self, namespace=None): def get_overrides(self, namespace=None):
overrides = { overrides = {
common.HELM_NS_OPENSTACK: { common.HELM_NS_OPENSTACK: {
'images': self._get_images_overrides(),
} }
} }
@ -32,24 +31,3 @@ class IronicHelm(openstack.OpenstackBaseHelm):
namespace=namespace) namespace=namespace)
else: else:
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'bootstrap': heat_image,
'db_init': heat_image,
'ironic_api': self.docker_image,
'ironic_conductor': self.docker_image,
'ironic_db_sync': self.docker_image,
'ironic_manage_cleaning_network': heat_image,
'ironic_pxe': self.docker_image,
'ironic_pxe_init': self.docker_image,
'ironic_retrive_cleaning_network': heat_image,
'ironic_retrive_swift_config': heat_image,
'ks_endpoints': heat_image,
'ks_service': heat_image,
'ks_user': heat_image,
}
}

View File

@ -35,7 +35,6 @@ class KeystoneHelm(openstack.OpenstackBaseHelm):
'pod': self._get_pod_overrides(), 'pod': self._get_pod_overrides(),
'conf': self._get_conf_overrides(), 'conf': self._get_conf_overrides(),
'endpoints': self._get_endpoints_overrides(), 'endpoints': self._get_endpoints_overrides(),
'images': self._get_images_overrides(),
} }
} }
@ -60,29 +59,8 @@ class KeystoneHelm(openstack.OpenstackBaseHelm):
} }
} }
} }
if self.docker_repo_source != common.DOCKER_SRC_OSH:
overrides.update({'user': {'keystone': {'uid': 0}}})
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'bootstrap': heat_image,
'db_drop': heat_image,
'db_init': heat_image,
'keystone_api': self.docker_image,
'keystone_credential_rotate': self.docker_image,
'keystone_credential_setup': self.docker_image,
'keystone_db_sync': self.docker_image,
'keystone_domain_manage': self.docker_image,
'keystone_fernet_rotate': self.docker_image,
'keystone_fernet_setup': self.docker_image,
'ks_user': heat_image,
}
}
def _get_conf_keystone_default_overrides(self): def _get_conf_keystone_default_overrides(self):
return { return {
'max_token_size': 255, # static controller.yaml => chart default 'max_token_size': 255, # static controller.yaml => chart default

View File

@ -41,8 +41,6 @@ class LibvirtHelm(openstack.OpenstackBaseHelm):
} }
} }
self._get_images_overrides(overrides[common.HELM_NS_OPENSTACK])
if namespace in self.SUPPORTED_NAMESPACES: if namespace in self.SUPPORTED_NAMESPACES:
return overrides[namespace] return overrides[namespace]
elif namespace: elif namespace:
@ -50,13 +48,3 @@ class LibvirtHelm(openstack.OpenstackBaseHelm):
namespace=namespace) namespace=namespace)
else: else:
return overrides return overrides
def _get_images_overrides(self, overrides_dict):
if self.docker_repo_source != common.DOCKER_SRC_OSH:
overrides_dict.update({
'images': {
'tags': {
'libvirt': self.docker_image
}
}
})

View File

@ -21,7 +21,6 @@ class MagnumHelm(openstack.OpenstackBaseHelm):
def get_overrides(self, namespace=None): def get_overrides(self, namespace=None):
overrides = { overrides = {
common.HELM_NS_OPENSTACK: { common.HELM_NS_OPENSTACK: {
'images': self._get_images_overrides(),
'pod': { 'pod': {
'replicas': { 'replicas': {
'api': self._num_controllers(), 'api': self._num_controllers(),
@ -38,20 +37,3 @@ class MagnumHelm(openstack.OpenstackBaseHelm):
namespace=namespace) namespace=namespace)
else: else:
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'bootstrap': heat_image,
'db_drop': heat_image,
'db_init': heat_image,
'ks_endpoints': heat_image,
'ks_service': heat_image,
'ks_user': heat_image,
'magnum_api': self.docker_image,
'magnum_conductor': self.docker_image,
'magnum_db_sync': self.docker_image,
}
}

View File

@ -36,7 +36,6 @@ class MariadbHelm(openstack.OpenstackBaseHelm):
'ingress': self._num_controllers() 'ingress': self._num_controllers()
} }
}, },
'images': self._get_images_overrides(),
'endpoints': self._get_endpoints_overrides(), 'endpoints': self._get_endpoints_overrides(),
} }
} }
@ -49,16 +48,6 @@ class MariadbHelm(openstack.OpenstackBaseHelm):
else: else:
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'prometheus_mysql_exporter_helm_tests': heat_image
}
}
def _get_endpoints_overrides(self): def _get_endpoints_overrides(self):
return { return {
'oslo_db': { 'oslo_db': {

View File

@ -65,7 +65,6 @@ class NeutronHelm(openstack.OpenstackBaseHelm):
}, },
}, },
'endpoints': self._get_endpoints_overrides(), 'endpoints': self._get_endpoints_overrides(),
'images': self._get_images_overrides(),
} }
} }
@ -240,7 +239,7 @@ class NeutronHelm(openstack.OpenstackBaseHelm):
# obtain the assigned bridge for interface # obtain the assigned bridge for interface
brname = 'br-phy%d' % index brname = 'br-phy%d' % index
port_name = self._get_interface_port_name(iface) port_name = self._get_interface_port_name(iface)
bridges[brname] = port_name bridges[brname] = port_name.encode('utf8', 'strict')
index += 1 index += 1
return bridges return bridges
@ -384,32 +383,6 @@ class NeutronHelm(openstack.OpenstackBaseHelm):
return None return None
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'bootstrap': heat_image,
'db_init': heat_image,
'neutron_db_sync': self.docker_image,
'db_drop': heat_image,
'ks_user': heat_image,
'ks_service': heat_image,
'ks_endpoints': heat_image,
'neutron_server': self.docker_image,
'neutron_dhcp': self.docker_image,
'neutron_metadata': self.docker_image,
'neutron_l3': self.docker_image,
'neutron_openvswitch_agent': self.docker_image,
'neutron_linuxbridge_agent': self.docker_image,
# TODO (rchurch): Fix this... Suffix tied to a release???
# 'neutron_sriov_agent': '{}{}'.format(self.docker_image,'-sriov-1804'),
# 'neutron_sriov_agent_init': '{}{}'.format(self.docker_image,'-sriov-1804'),
'neutron_sriov_agent': self.docker_image,
'neutron_sriov_agent_init': self.docker_image,
}
}
def _get_endpoints_overrides(self): def _get_endpoints_overrides(self):
overrides = { overrides = {
'identity': { 'identity': {

View File

@ -97,7 +97,6 @@ class NovaHelm(openstack.OpenstackBaseHelm):
'ssh_public': ssh_publickey, 'ssh_public': ssh_publickey,
}, },
'endpoints': self._get_endpoints_overrides(), 'endpoints': self._get_endpoints_overrides(),
'images': self._get_images_overrides(),
'network': { 'network': {
'sshd': { 'sshd': {
'from_subnet': self._get_ssh_subnet(), 'from_subnet': self._get_ssh_subnet(),
@ -114,44 +113,6 @@ class NovaHelm(openstack.OpenstackBaseHelm):
else: else:
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
# TODO: Remove after ceph upgrade
# Format the name of the stx specific ceph config helper
ceph_config_helper_image = "{}:{}/{}/{}{}:{}".format(
self._get_management_address(), common.REGISTRY_PORT,
common.REPO_LOC,
common.DOCKER_SRCS[self.docker_repo_source][common.IMG_PREFIX_KEY],
'ceph-config-helper', self.docker_repo_tag)
return {
'tags': {
'bootstrap': heat_image,
'db_drop': heat_image,
'db_init': heat_image,
'ks_user': heat_image,
'ks_service': heat_image,
'ks_endpoints': heat_image,
'nova_api': self.docker_image,
'nova_cell_setup': self.docker_image,
'nova_cell_setup_init': heat_image,
'nova_compute': self.docker_image,
'nova_compute_ironic': self.docker_image,
'nova_compute_ssh': self.docker_image,
'nova_conductor': self.docker_image,
'nova_consoleauth': self.docker_image,
'nova_db_sync': self.docker_image,
'nova_novncproxy': self.docker_image,
'nova_placement': self.docker_image,
'nova_scheduler': self.docker_image,
'nova_spiceproxy': self.docker_image,
'nova_spiceproxy_assets': self.docker_image,
'nova_storage_init': ceph_config_helper_image,
}
}
def _get_endpoints_overrides(self): def _get_endpoints_overrides(self):
overrides = { overrides = {
'identity': { 'identity': {

View File

@ -39,7 +39,6 @@ class NovaApiProxyHelm(openstack.OpenstackBaseHelm):
}, },
} }
}, },
'images': self._get_images_overrides(),
'endpoints': self._get_endpoints_overrides(), 'endpoints': self._get_endpoints_overrides(),
} }
} }
@ -52,17 +51,6 @@ class NovaApiProxyHelm(openstack.OpenstackBaseHelm):
else: else:
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'nova_api_proxy': self.docker_image,
'ks_endpoints': heat_image
}
}
def _get_endpoints_overrides(self): def _get_endpoints_overrides(self):
nova_service_name = self._operator.chart_operators[ nova_service_name = self._operator.chart_operators[
constants.HELM_CHART_NOVA].SERVICE_NAME constants.HELM_CHART_NOVA].SERVICE_NAME

View File

@ -25,7 +25,6 @@ class PankoHelm(openstack.OpenstackBaseHelm):
overrides = { overrides = {
common.HELM_NS_OPENSTACK: { common.HELM_NS_OPENSTACK: {
'pod': self._get_pod_overrides(), 'pod': self._get_pod_overrides(),
'images': self._get_images_overrides(),
'endpoints': self._get_endpoints_overrides() 'endpoints': self._get_endpoints_overrides()
} }
} }
@ -46,23 +45,6 @@ class PankoHelm(openstack.OpenstackBaseHelm):
} }
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'bootstrap': heat_image,
'db_drop': heat_image,
'db_init': self.docker_image,
'panko_db_sync': self.docker_image,
'panko_api': self.docker_image,
'panko_events_cleaner': self.docker_image,
'ks_endpoints': heat_image,
'ks_service': heat_image,
'ks_user': heat_image,
}
}
def _get_endpoints_overrides(self): def _get_endpoints_overrides(self):
return { return {
'identity': { 'identity': {

View File

@ -26,7 +26,6 @@ class RabbitmqHelm(openstack.OpenstackBaseHelm):
'server': self._num_controllers() 'server': self._num_controllers()
} }
}, },
'images': self._get_images_overrides(),
'endpoints': self._get_endpoints_overrides(), 'endpoints': self._get_endpoints_overrides(),
} }
} }
@ -39,16 +38,6 @@ class RabbitmqHelm(openstack.OpenstackBaseHelm):
else: else:
return overrides return overrides
def _get_images_overrides(self):
heat_image = self._operator.chart_operators[
constants.HELM_CHART_HEAT].docker_image
return {
'tags': {
'prometheus_rabbitmq_exporter_helm_tests': heat_image
}
}
def _get_endpoints_overrides(self): def _get_endpoints_overrides(self):
credentials = self._get_endpoints_oslo_messaging_overrides( credentials = self._get_endpoints_oslo_messaging_overrides(
self.CHART, []) self.CHART, [])

View File

@ -73,7 +73,6 @@ class RbdProvisionerHelm(base.BaseHelm):
common.HELM_NS_OPENSTACK: { common.HELM_NS_OPENSTACK: {
"classdefaults": classdefaults, "classdefaults": classdefaults,
"classes": classes, "classes": classes,
"images": self._get_images_overrides(),
"global": global_settings "global": global_settings
} }
} }
@ -85,18 +84,3 @@ class RbdProvisionerHelm(base.BaseHelm):
namespace=namespace) namespace=namespace)
else: else:
return overrides return overrides
def _get_images_overrides(self):
# TODO: Remove after ceph upgrade
# Format the name of the stx specific ceph config helper
local_docker_registry_ip = self._get_management_address()
ceph_config_helper_image = "{}:{}/{}/{}{}:{}".format(
local_docker_registry_ip, common.REGISTRY_PORT, common.REPO_LOC,
common.DOCKER_SRCS[self.docker_repo_source][common.IMG_PREFIX_KEY],
'ceph-config-helper', self.docker_repo_tag)
return {
'tags': {
'rbd_provisioner_storage_init': ceph_config_helper_image,
}
}