diff --git a/tripleoclient/constants.py b/tripleoclient/constants.py index 35afcfe64..9ecc1dd2f 100644 --- a/tripleoclient/constants.py +++ b/tripleoclient/constants.py @@ -18,6 +18,7 @@ import sys from osc_lib.i18n import _ from six.moves import configparser +from tripleo_common.image import kolla_builder TRIPLEO_ARCHIVE_DIR = "/var/lib/tripleo/archive" TRIPLEO_HEAT_TEMPLATES = "/usr/share/openstack-tripleo-heat-templates/" @@ -42,18 +43,34 @@ DEFAULT_CONTAINER_REGISTRY = "quay.io" DEFAULT_CONTAINER_NAMESPACE = "tripleomaster" DEFAULT_CONTAINER_TAG = "current-tripleo" DEFAULT_RESOURCE_REGISTRY = 'overcloud-resource-registry-puppet.yaml' -DEFAULT_HEAT_CONTAINER = ('{}/{}/openstack-heat-all:{}'.format( - DEFAULT_CONTAINER_REGISTRY, - DEFAULT_CONTAINER_NAMESPACE, - DEFAULT_CONTAINER_TAG)) -DEFAULT_HEAT_API_CONTAINER = ('{}/{}/openstack-heat-api:{}'.format( - DEFAULT_CONTAINER_REGISTRY, - DEFAULT_CONTAINER_NAMESPACE, - DEFAULT_CONTAINER_TAG)) -DEFAULT_HEAT_ENGINE_CONTAINER = ('{}/{}/openstack-heat-engine:{}'.format( - DEFAULT_CONTAINER_REGISTRY, - DEFAULT_CONTAINER_NAMESPACE, - DEFAULT_CONTAINER_TAG)) + +if os.path.isfile(kolla_builder.DEFAULT_PREPARE_FILE): + kolla_builder.init_prepare_defaults(kolla_builder.DEFAULT_PREPARE_FILE) + DEFAULT_CONTAINER_IMAGE_PARAMS = kolla_builder.CONTAINER_IMAGES_DEFAULTS +else: + DEFAULT_CONTAINER_IMAGE_PARAMS = { + 'namespace': 'quay.io/tripleomaster', + 'name_prefix': 'openstack-', + 'tag': 'current-tripleo' + } +DEFAULT_HEAT_CONTAINER = ('{}/{}heat-all:{}'.format( + DEFAULT_CONTAINER_IMAGE_PARAMS['namespace'], + DEFAULT_CONTAINER_IMAGE_PARAMS['name_prefix'], + DEFAULT_CONTAINER_IMAGE_PARAMS['tag'])) +DEFAULT_HEAT_API_CONTAINER = ('{}/{}heat-api:{}'.format( + DEFAULT_CONTAINER_IMAGE_PARAMS['namespace'], + DEFAULT_CONTAINER_IMAGE_PARAMS['name_prefix'], + DEFAULT_CONTAINER_IMAGE_PARAMS['tag'])) +DEFAULT_HEAT_ENGINE_CONTAINER = ('{}/{}heat-engine:{}'.format( + DEFAULT_CONTAINER_IMAGE_PARAMS['namespace'], + DEFAULT_CONTAINER_IMAGE_PARAMS['name_prefix'], + DEFAULT_CONTAINER_IMAGE_PARAMS['tag'])) +DEFAULT_EPHEMERAL_HEAT_CONTAINER = \ + 'localhost/tripleo/openstack-heat-all:ephemeral' +DEFAULT_EPHEMERAL_HEAT_API_CONTAINER = \ + 'localhost/tripleo/openstack-heat-api:ephemeral' +DEFAULT_EPHEMERAL_HEAT_ENGINE_CONTAINER = \ + 'localhost/tripleo/openstack-heat-engine:ephemeral' USER_PARAMETERS = 'user-environments/tripleoclient-parameters.yaml' diff --git a/tripleoclient/v1/overcloud_deploy.py b/tripleoclient/v1/overcloud_deploy.py index 60d8c05c7..77a5ff70e 100644 --- a/tripleoclient/v1/overcloud_deploy.py +++ b/tripleoclient/v1/overcloud_deploy.py @@ -560,6 +560,19 @@ class DeployOvercloud(command.Command): self.log.info("Using ephemeral heat for stack operation") restore_db = (parsed_args.setup_only or parsed_args.config_download_only) + + # Skip trying to pull the images if they are set to the default + # as they can't be pulled since they are tagged as localhost. + # If the images are missing for some reason, podman will still pull + # them by default, and error appropriately if needed. + if (parsed_args.heat_container_api_image == + constants.DEFAULT_EPHEMERAL_HEAT_API_CONTAINER or + parsed_args.heat_container_engine_image == + constants.DEFAULT_EPHEMERAL_HEAT_ENGINE_CONTAINER): + skip_heat_pull = True + else: + skip_heat_pull = parsed_args.skip_heat_pull + self.heat_launcher = utils.get_heat_launcher( parsed_args.heat_type, api_container_image=parsed_args.heat_container_api_image, @@ -568,7 +581,7 @@ class DeployOvercloud(command.Command): 'heat-launcher'), use_tmp_dir=False, rm_heat=parsed_args.rm_heat, - skip_heat_pull=parsed_args.skip_heat_pull) + skip_heat_pull=skip_heat_pull) self.orchestration_client = \ utils.launch_heat(self.heat_launcher, restore_db=restore_db) self.clients.orchestration = self.orchestration_client @@ -935,21 +948,21 @@ class DeployOvercloud(command.Command): '--heat-container-api-image', metavar='', dest='heat_container_api_image', - default=constants.DEFAULT_HEAT_API_CONTAINER, + default=constants.DEFAULT_EPHEMERAL_HEAT_API_CONTAINER, help=_('The container image to use when launching the heat-api ' 'process. Only used when --heat-type=pod. ' 'Defaults to: {}'.format( - constants.DEFAULT_HEAT_API_CONTAINER)) + constants.DEFAULT_EPHEMERAL_HEAT_API_CONTAINER)) ) parser.add_argument( '--heat-container-engine-image', metavar='', dest='heat_container_engine_image', - default=constants.DEFAULT_HEAT_ENGINE_CONTAINER, + default=constants.DEFAULT_EPHEMERAL_HEAT_ENGINE_CONTAINER, help=_('The container image to use when launching the heat-engine ' 'process. Only used when --heat-type=pod. ' 'Defaults to: {}'.format( - constants.DEFAULT_HEAT_ENGINE_CONTAINER)) + constants.DEFAULT_EPHEMERAL_HEAT_ENGINE_CONTAINER)) ) parser.add_argument( '--rm-heat',