diff --git a/kubernetes/applications/stx-openstack/stx-openstack-helm/stx-openstack-helm/nova-api-proxy/values.yaml b/kubernetes/applications/stx-openstack/stx-openstack-helm/stx-openstack-helm/nova-api-proxy/values.yaml index efed60eee2..73486bd3e1 100644 --- a/kubernetes/applications/stx-openstack/stx-openstack-helm/stx-openstack-helm/nova-api-proxy/values.yaml +++ b/kubernetes/applications/stx-openstack/stx-openstack-helm/stx-openstack-helm/nova-api-proxy/values.yaml @@ -20,7 +20,7 @@ labels: images: tags: - nova_api_proxy: 128.224.186.231:9001/abailey/stx-nova-api-proxy:latest + nova_api_proxy: docker.io/starlingx/stx-nova-api-proxy:dev-centos-pike-latest ks_endpoints: docker.io/openstackhelm/heat:pike dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1 pullPolicy: IfNotPresent diff --git a/sysinv/sysinv/sysinv/sysinv/common/constants.py b/sysinv/sysinv/sysinv/sysinv/common/constants.py index 3b7454988e..7c160d23bf 100644 --- a/sysinv/sysinv/sysinv/sysinv/common/constants.py +++ b/sysinv/sysinv/sysinv/sysinv/common/constants.py @@ -283,18 +283,19 @@ DEFAULT_SMALL_DISK_SIZE = 240 # DEFAULT_EXTENSION_STOR_SIZE 1 # DEFAULT_GNOCCHI_STOR_SIZE 5 # KUBERNETES_DOCKER_STOR_SIZE (--kubernetes) 16 -# DEFAULT_DOCKER_DISTRIBUTION_STOR_SIZE (--kubernetes) 1 +# DOCKER_DISTRIBUTION_STOR_SIZE (--kubernetes) 16 # ETCD_STOR_SIZE (--kubernetes) 5 # buffer inside VG for LV creation 1 # root partition (created in kickstarts) 20 # boot partition (created in kickstarts) 1 # buffer for partition creation 1 # ------------------------------------------------------- -# 152 -MINIMUM_DISK_SIZE = 152 +# 167 +MINIMUM_DISK_SIZE = 167 # Docker lv size when Kubernetes is configured KUBERNETES_DOCKER_STOR_SIZE = 16 +DOCKER_DISTRIBUTION_STOR_SIZE = 16 ETCD_STOR_SIZE = 5 # Openstack Interface names diff --git a/sysinv/sysinv/sysinv/sysinv/conductor/kube_app.py b/sysinv/sysinv/sysinv/sysinv/conductor/kube_app.py index 2a4aacb558..0c0c240118 100644 --- a/sysinv/sysinv/sysinv/sysinv/conductor/kube_app.py +++ b/sysinv/sysinv/sysinv/sysinv/conductor/kube_app.py @@ -289,7 +289,10 @@ class AppOperator(object): def _get_image_tags_by_path(self, path): """ Mine the image tags from values.yaml files in the chart directory, - intended for custom apps. """ + intended for custom apps. + + TODO(awang): Support custom apps to pull images from local registry + """ image_tags = [] ids = [] @@ -304,35 +307,80 @@ class AppOperator(object): return list(set(image_tags)) def _get_image_tags_by_charts(self, app_path, charts): - """ Mine the image tags from both the chart path and the overrides, - intended for system app. """ + """ Mine the image tags from the chart paths. Add the converted + image tags to the overrides if the image tags from the chart + paths do not exist. Intended for system app. + + The image tagging conversion(local docker registry address prepended): + ${LOCAL_DOCKER_REGISTRY_IP}:${REGISTRY_PORT}/ + (ie..192.168.204.2:9001/docker.io/mariadb:10.2.13) + """ + + local_docker_registry_ip = self._dbapi.address_get_by_name( + cutils.format_address_name(constants.CONTROLLER_HOSTNAME, + constants.NETWORK_TYPE_MGMT) + ).address image_tags = [] for chart in charts: - tags = [] + images_charts = {} + images_overrides = {} overrides = chart.namespace + '-' + chart.name + '.yaml' overrides_file = os.path.join(common.HELM_OVERRIDES_PATH, overrides) - chart_path = os.path.join(app_path, chart.name) + chart_name = os.path.join(app_path, chart.name) + chart_path = os.path.join(chart_name, 'values.yaml') + + # Get the image tags from the chart path + if os.path.exists(chart_path): + with open(chart_path, 'r') as file: + try: + doc = yaml.load(file) + images_charts = doc["images"]["tags"] + except (TypeError, KeyError): + pass + + # Get the image tags from the overrides file if os.path.exists(overrides_file): with open(overrides_file, 'r') as file: try: y = yaml.load(file) - tags = y["data"]["values"]["images"]["tags"].values() + images_overrides = y["data"]["values"]["images"]["tags"] except (TypeError, KeyError): LOG.info("Overrides file %s has no img tags" % overrides_file) - if tags: - image_tags.extend(tags) - continue + pass - # Either this chart does not have overrides file or image tags are - # not in its overrides file, walk the chart path to find image tags - chart_path = os.path.join(app_path, chart.name) - if os.path.exists(chart_path): - tags = self._get_image_tags_by_path(chart_path) - if tags: - image_tags.extend(tags) + # Add the converted image tags to the overrides if the images from + # the chart path do not exist in the overrides + tags_updated = False + for key, image_tag in images_charts.items(): + if (key not in images_overrides and + not image_tag.startswith(local_docker_registry_ip)): + images_overrides.update( + {key: '{}:{}/{}'.format(local_docker_registry_ip, common.REGISTRY_PORT, image_tag)}) + tags_updated = True + + if tags_updated: + with open(overrides_file, 'w') as file: + try: + if "images" not in y["data"]["values"]: + file.seek(0) + file.truncate() + y["data"]["values"]["images"] = {"tags": images_overrides} + else: + y["data"]["values"]["images"]["tags"] = images_overrides + + yaml.safe_dump(y, file, explicit_start=True, + default_flow_style=False) + LOG.info("Overrides file %s updated with new image tags" % + overrides_file) + except (TypeError, KeyError): + LOG.error("Overrides file %s fails to update" % + overrides_file) + + if images_overrides: + image_tags.extend(images_overrides.values()) return list(set(image_tags)) @@ -361,10 +409,9 @@ class AppOperator(object): self._helm.generate_helm_application_overrides( app.name, cnamespace=None, armada_format=True, combined=True) app.charts = self._get_list_of_charts(app.armada_mfile_abs) - # Grab the image tags from the overrides. If they don't exist - # then mine them from the chart paths. - images_to_download = self._get_image_tags_by_charts(app.charts_dir, - app.charts) + # Get the list of images from the updated images overrides + images_to_download = self._get_image_tags_by_charts( + app.charts_dir, app.charts) else: # For custom apps, mine image tags from application path images_to_download = self._get_image_tags_by_path(app.path) @@ -1150,18 +1197,34 @@ class DockerHelper(object): (request, manifest_file, e)) return rc - def download_an_image(self, img_tag): + def download_an_image(self, loc_img_tag): + rc = True start = time.time() try: - LOG.info("Image %s download started" % img_tag) - client = docker.from_env(timeout=INSTALLATION_TIMEOUT) - client.images.pull(img_tag) + # Pull image from local docker registry + LOG.info("Image %s download started from local registry" % loc_img_tag) + client = docker.APIClient(timeout=INSTALLATION_TIMEOUT) + client.pull(loc_img_tag) + except docker.errors.NotFound: + try: + # Image is not available in local docker registry, get the image + # from the public registry and push to the local registry + LOG.info("Image %s is not available in local registry, " + "download started from public registry" % loc_img_tag) + pub_img_tag = loc_img_tag[1 + loc_img_tag.find('/'):] + client.pull(pub_img_tag) + client.tag(pub_img_tag, loc_img_tag) + client.push(loc_img_tag) + except Exception as e: + rc = False + LOG.error("Image %s download failed from public registry: %s" % (pub_img_tag, e)) except Exception as e: rc = False - LOG.error("Image %s download failed: %s" % (img_tag, e)) + LOG.error("Image %s download failed from local registry: %s" % (loc_img_tag, e)) elapsed_time = time.time() - start - LOG.info("Image %s download succeeded in %d seconds" % - (img_tag, elapsed_time)) - return img_tag, rc + if rc: + LOG.info("Image %s download succeeded in %d seconds" % + (loc_img_tag, elapsed_time)) + return loc_img_tag, rc diff --git a/sysinv/sysinv/sysinv/sysinv/conductor/manager.py b/sysinv/sysinv/sysinv/sysinv/conductor/manager.py index 6cc89fc8aa..7b6c3b1d0b 100644 --- a/sysinv/sysinv/sysinv/sysinv/conductor/manager.py +++ b/sysinv/sysinv/sysinv/sysinv/conductor/manager.py @@ -6542,9 +6542,9 @@ class ConductorManager(service.PeriodicService): # Defaults: 500G root disk # # Min size of the cgts-vg PV is: - # 169.0 G - PV for cgts-vg (specified in the kickstart) + # 184.0 G - PV for cgts-vg (specified in the kickstart) # or - # 177.0 G - (for DCSC non-AIO) + # 192.0 G - (for DCSC non-AIO) # 8 G - /var/log (reserved in kickstart) # 8 G - /scratch (reserved in kickstart) # 2 G - cgcs_lv (DRBD bootstrap manifest) @@ -6569,22 +6569,22 @@ class ConductorManager(service.PeriodicService): # 5 G - /opt/gnocchi # 1 G - anchor_lv # 16 G - /var/lib/docker (--kubernetes) - # 1 G - /var/lib/docker-distribution (--kubernetes) + # 16 G - /var/lib/docker-distribution (--kubernetes) # 5 G - /opt/etcd (--kubernetes) # 8 G - /opt/patch-vault (DRBD ctlr manifest for # Distributed Cloud System Controller non-AIO only) # ----- - # 177 G (for DCSC non-AIO) or 169 G + # 192 G (for DCSC non-AIO) or 184 G # # The absolute minimum disk size for these default settings: # 0.5 G - /boot # 20.0 G - / - # 169.0 G - cgts-vg PV - # or 177.0 G - (DCSC non-AIO) + # 184.0 G - cgts-vg PV + # or 192.0 G - (DCSC non-AIO) # ------- - # 189.5 G => ~190G min size disk + # 204.5 G => ~205G min size disk # or - # 197.5 G => ~198G min size disk + # 212.5 G => ~213G min size disk # # If required disk is size 500G: # 1) Standard controller - will use all free space for the PV @@ -6595,8 +6595,8 @@ class ConductorManager(service.PeriodicService): # 2) AIO - will leave unused space for further partitioning # 0.5 G - /boot # 20.0 G - / - # 169.0 G - cgts-vg PV - # 310.5 G - unpartitioned free space + # 184.0 G - cgts-vg PV + # 295.5 G - unpartitioned free space # database_storage = constants.DEFAULT_DATABASE_STOR_SIZE if glance_local: @@ -6619,9 +6619,9 @@ class ConductorManager(service.PeriodicService): # Small disk: under 240G root disk # # Min size of the cgts-vg PV is: - # 129.0 G - PV for cgts-vg (specified in the kickstart) + # 144.0 G - PV for cgts-vg (specified in the kickstart) # or - # 137.0 G - (for DCSC non-AIO) + # 152.0 G - (for DCSC non-AIO) # 8 G - /var/log (reserved in kickstart) # 8 G - /scratch (reserved in kickstart) # 2 G - cgcs_lv (DRBD bootstrap manifest) @@ -6646,22 +6646,22 @@ class ConductorManager(service.PeriodicService): # 5 G - /opt/gnocchi # 1 G - anchor_lv # 16 G - /var/lib/docker (--kubernetes) - # 1 G - /var/lib/docker-distribution (--kubernetes) + # 16 G - /var/lib/docker-distribution (--kubernetes) # 5 G - /opt/etcd (--kubernetes) # 8 G - /opt/patch-vault (DRBD ctlr manifest for DCSC non-AIO only) # ----- - # 137 G (for DCSC non-AIO) or 129 G + # 152 G (for DCSC non-AIO) or 144 G # # The absolute minimum disk size for these default settings: # 0.5 G - /boot # 20.0 G - / - # 129.0 G - cgts-vg PV + # 144.0 G - cgts-vg PV # or - # 137.0 G - (for DCSC non-AIO) + # 152.0 G - (for DCSC non-AIO) # ------- - # 149.5 G => ~150G min size disk + # 164.5 G => ~165G min size disk # or - # 157.5 G => ~158G min size disk + # 172.5 G => ~173G min size disk # # If required disk is size 240G: # 1) Standard controller - will use all free space for the PV @@ -6671,8 +6671,8 @@ class ConductorManager(service.PeriodicService): # 2) AIO - will leave unused space for further partitioning # 0.5 G - /boot # 20.0 G - / - # 129.0 G - cgts-vg PV - # 90.5 G - unpartitioned free space + # 144.0 G - cgts-vg PV + # 75.5 G - unpartitioned free space # database_storage = \ constants.DEFAULT_SMALL_DATABASE_STOR_SIZE @@ -6797,7 +6797,7 @@ class ConductorManager(service.PeriodicService): data = { 'name': constants.FILESYSTEM_NAME_DOCKER_DISTRIBUTION, - 'size': constants.DEFAULT_DOCKER_DISTRIBUTION_STOR_SIZE, + 'size': constants.DOCKER_DISTRIBUTION_STOR_SIZE, 'logical_volume': constants.FILESYSTEM_LV_DICT[ constants.FILESYSTEM_NAME_DOCKER_DISTRIBUTION], 'replicated': True, diff --git a/sysinv/sysinv/sysinv/sysinv/helm/aodh.py b/sysinv/sysinv/sysinv/sysinv/helm/aodh.py index 2b87c96656..55b48e2b58 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/aodh.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/aodh.py @@ -26,7 +26,7 @@ class AodhHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC def get_namespaces(self): return self.SUPPORTED_NAMESPACES diff --git a/sysinv/sysinv/sysinv/sysinv/helm/base.py b/sysinv/sysinv/sysinv/sysinv/helm/base.py index 1069c48d2a..c756c42af7 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/base.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/base.py @@ -49,10 +49,16 @@ class BaseHelm(object): @property def docker_image(self): - 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) + 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 def quoted_str(value): diff --git a/sysinv/sysinv/sysinv/sysinv/helm/ceilometer.py b/sysinv/sysinv/sysinv/sysinv/helm/ceilometer.py index 1ebe106ae6..8fbb5760b6 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/ceilometer.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/ceilometer.py @@ -27,7 +27,7 @@ class CeilometerHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC def get_namespaces(self): return self.SUPPORTED_NAMESPACES @@ -58,11 +58,15 @@ class CeilometerHelm(openstack.OpenstackBaseHelm): 'tags': { 'ks_service': heat_image, 'ks_user': heat_image, + 'ks_endpoints': heat_image, + 'db_init': 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_notification': self.docker_image, + 'ceilometer_collector': self.docker_image, + 'ceilometer_api': self.docker_image } } diff --git a/sysinv/sysinv/sysinv/sysinv/helm/cinder.py b/sysinv/sysinv/sysinv/sysinv/helm/cinder.py index 0cac4d9458..913548ad7e 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/cinder.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/cinder.py @@ -29,7 +29,7 @@ class CinderHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC @property def docker_repo_tag(self): @@ -202,8 +202,8 @@ class CinderHelm(openstack.OpenstackBaseHelm): # TODO: Remove after ceph upgrade # Format the name of the stx specific ceph config helper - ceph_config_helper_image = "{}/{}{}:{}".format( - common.DOCKER_SRCS[self.docker_repo_source][common.IMG_BASE_KEY], + 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) diff --git a/sysinv/sysinv/sysinv/sysinv/helm/common.py b/sysinv/sysinv/sysinv/sysinv/helm/common.py index 7b3b3b9615..7011a80769 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/common.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/common.py @@ -54,13 +54,14 @@ 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:9001' -REGISTRY_LOC = '192.168.204.2:9001' +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 = 'stx' +REPO_LOC = 'starlingx' IMG_PREFIX_KEY = 'prefix' IMG_BASE_KEY = 'base' @@ -89,6 +90,6 @@ DOCKER_SRCS = { DOCKER_SRC_LOC: { IMG_BASE_KEY: '{}/{}'.format(REGISTRY_LOC, REPO_LOC), IMG_PREFIX_KEY: IMG_PREFIX_LOC, - IMG_TAG_KEY: TAGS_LATEST + IMG_TAG_KEY: TAGS_STX_LATEST } } diff --git a/sysinv/sysinv/sysinv/sysinv/helm/glance.py b/sysinv/sysinv/sysinv/sysinv/helm/glance.py index 9cee1abb7f..54b2121aad 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/glance.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/glance.py @@ -31,7 +31,7 @@ class GlanceHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC @property def docker_repo_tag(self): diff --git a/sysinv/sysinv/sysinv/sysinv/helm/gnocchi.py b/sysinv/sysinv/sysinv/sysinv/helm/gnocchi.py index 7711527640..07e8cc5226 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/gnocchi.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/gnocchi.py @@ -26,7 +26,7 @@ class GnocchiHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC @property def docker_repo_tag(self): @@ -67,6 +67,7 @@ class GnocchiHelm(openstack.OpenstackBaseHelm): '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, diff --git a/sysinv/sysinv/sysinv/sysinv/helm/heat.py b/sysinv/sysinv/sysinv/sysinv/helm/heat.py index 2cecacd9cc..a7b4413ea6 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/heat.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/heat.py @@ -26,7 +26,7 @@ class HeatHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC @property def docker_repo_tag(self): diff --git a/sysinv/sysinv/sysinv/sysinv/helm/horizon.py b/sysinv/sysinv/sysinv/sysinv/helm/horizon.py index 84bf0ab12d..88efc23fda 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/horizon.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/horizon.py @@ -25,7 +25,7 @@ class HorizonHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC def get_namespaces(self): return self.SUPPORTED_NAMESPACES diff --git a/sysinv/sysinv/sysinv/sysinv/helm/keystone.py b/sysinv/sysinv/sysinv/sysinv/helm/keystone.py index 8969ae653f..9a66a2662d 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/keystone.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/keystone.py @@ -34,7 +34,7 @@ class KeystoneHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC @property def docker_repo_tag(self): diff --git a/sysinv/sysinv/sysinv/sysinv/helm/libvirt.py b/sysinv/sysinv/sysinv/sysinv/helm/libvirt.py index a37d706d9b..e0e8f08821 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/libvirt.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/libvirt.py @@ -25,7 +25,7 @@ class LibvirtHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC @property def docker_repo_tag(self): diff --git a/sysinv/sysinv/sysinv/sysinv/helm/neutron.py b/sysinv/sysinv/sysinv/sysinv/helm/neutron.py index e9c277dc0c..1e3d113c9e 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/neutron.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/neutron.py @@ -32,7 +32,7 @@ class NeutronHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC @property def docker_repo_tag(self): diff --git a/sysinv/sysinv/sysinv/sysinv/helm/nova.py b/sysinv/sysinv/sysinv/sysinv/helm/nova.py index 138488374e..0c23c13ad5 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/nova.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/nova.py @@ -48,7 +48,7 @@ class NovaHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC @property def docker_repo_tag(self): diff --git a/sysinv/sysinv/sysinv/sysinv/helm/nova_api_proxy.py b/sysinv/sysinv/sysinv/sysinv/helm/nova_api_proxy.py index 704aa91c3f..9b3ce24dde 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/nova_api_proxy.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/nova_api_proxy.py @@ -24,6 +24,10 @@ class NovaApiProxyHelm(openstack.OpenstackBaseHelm): SERVICE_NAME = 'nova' AUTH_USERS = ['nova'] + @property + def docker_repo_source(self): + return common.DOCKER_SRC_LOC + def get_namespaces(self): return self.SUPPORTED_NAMESPACES @@ -45,6 +49,7 @@ class NovaApiProxyHelm(openstack.OpenstackBaseHelm): }, } }, + 'images': self._get_images_overrides(), 'endpoints': self._get_endpoints_overrides(), } } @@ -57,6 +62,22 @@ class NovaApiProxyHelm(openstack.OpenstackBaseHelm): else: return overrides + def _get_images_overrides(self): + nova_api_proxy_image = "{}:{}/{}/{}{}:{}".format( + self._get_management_address(), common.REGISTRY_PORT, common.REPO_LOC, + common.DOCKER_SRCS[self.docker_repo_source][common.IMG_PREFIX_KEY], + 'nova-api-proxy', self.docker_repo_tag) + + heat_image = self._operator.chart_operators[ + constants.HELM_CHART_HEAT].docker_image + + return { + 'tags': { + 'nova_api_proxy': nova_api_proxy_image, + 'ks_endpoints': heat_image + } + } + def _get_endpoints_overrides(self): return { 'identity': { diff --git a/sysinv/sysinv/sysinv/sysinv/helm/panko.py b/sysinv/sysinv/sysinv/sysinv/helm/panko.py index 8f6270f4d4..2a304fb107 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/panko.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/panko.py @@ -26,7 +26,7 @@ class PankoHelm(openstack.OpenstackBaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC def get_namespaces(self): return self.SUPPORTED_NAMESPACES diff --git a/sysinv/sysinv/sysinv/sysinv/helm/rbd_provisioner.py b/sysinv/sysinv/sysinv/sysinv/helm/rbd_provisioner.py index 5903359830..a8830cf33d 100644 --- a/sysinv/sysinv/sysinv/sysinv/helm/rbd_provisioner.py +++ b/sysinv/sysinv/sysinv/sysinv/helm/rbd_provisioner.py @@ -28,7 +28,7 @@ class RbdProvisionerHelm(base.BaseHelm): @property def docker_repo_source(self): - return common.DOCKER_SRC_STX + return common.DOCKER_SRC_LOC @property def docker_repo_tag(self): @@ -130,17 +130,14 @@ class RbdProvisionerHelm(base.BaseHelm): def _get_images_overrides(self): # TODO: Remove after ceph upgrade # Format the name of the stx specific ceph config helper - ceph_config_helper_image = "{}/{}{}:{}".format( - common.DOCKER_SRCS[self.docker_repo_source][common.IMG_BASE_KEY], + 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) - rbd_provisioner_image = \ - 'quay.io/external_storage/rbd-provisioner:latest' - return { 'tags': { - 'rbd_provisioner': rbd_provisioner_image, 'rbd_provisioner_storage_init': ceph_config_helper_image, } }