Example #1
0
def main():
    deploy_options = handle_arguments()
    # TODO: delete once rename everything to assisted-installer
    if deploy_options.target == "oc-ingress":
        service_host = "assisted-installer.{}".format(
            utils.get_domain(deploy_options.domain))
        service_port = "80"
    else:
        service_host = utils.get_service_host(
            SERVICE, deploy_options.target, namespace=deploy_options.namespace)
        service_port = utils.get_service_port(
            SERVICE, deploy_options.target, namespace=deploy_options.namespace)

    with open(SRC_FILE, "r") as src:
        with open(DST_FILE, "w+") as dst:
            data = src.read()
            data = data.replace("REPLACE_URL", '"{}"'.format(service_host))
            data = data.replace("REPLACE_PORT", '"{}"'.format(service_port))
            data = data.replace("REPLACE_DOMAINS",
                                '"{}"'.format(deploy_options.base_dns_domains))
            data = data.replace('REPLACE_NAMESPACE', deploy_options.namespace)
            print("Deploying {}".format(DST_FILE))

            versions = {
                "IMAGE_BUILDER": "installer-image-build",
                "AGENT_DOCKER_IMAGE": "agent",
                "KUBECONFIG_GENERATE_IMAGE":
                "ignition-manifests-and-kubeconfig-generate",
                "INSTALLER_IMAGE": "assisted-installer",
                "CONTROLLER_IMAGE": "assisted-installer-controller",
                "CONNECTIVITY_CHECK_IMAGE": "connectivity_check",
                "INVENTORY_IMAGE": "inventory"
            }
            for env_var_name, image_short_name in versions.items():
                image_fqdn = deployment_options.get_image_override(
                    deploy_options, image_short_name, env_var_name)
                versions[env_var_name] = image_fqdn

            # Edge case for controller image override
            if os.environ.get("INSTALLER_IMAGE"
                              ) and not os.environ.get("CONTROLLER_IMAGE"):
                versions[
                    "CONTROLLER_IMAGE"] = deployment_options.IMAGE_FQDN_TEMPLATE.format(
                        "assisted-installer-controller",
                        deployment_options.get_tag(
                            versions["INSTALLER_IMAGE"]))

            versions["SELF_VERSION"] = deployment_options.get_image_override(
                deploy_options, "assisted-service", "SERVICE")
            deploy_tag = get_deployment_tag(deploy_options)
            if deploy_tag:
                versions["RELEASE_TAG"] = deploy_tag

            y = yaml.load(data)
            y['data'].update(versions)
            data = yaml.dump(y)
            dst.write(data)

    utils.apply(DST_FILE)
def main():
    deploy_options = handle_arguments()
    utils.set_profile(deploy_options.target, deploy_options.profile)

    with open(SRC_FILE, "r") as src:
        with open(DST_FILE, "w+") as dst:
            data = src.read()
            data = data.replace("REPLACE_DOMAINS", '"{}"'.format(deploy_options.base_dns_domains))
            data = data.replace("REPLACE_BASE_URL", utils.get_service_url(service=SERVICE,
                                                                          target=deploy_options.target,
                                                                          domain=deploy_options.domain,
                                                                          namespace=deploy_options.namespace,
                                                                          profile=deploy_options.profile,
                                                                          disable_tls=deploy_options.disable_tls))

            data = data.replace('REPLACE_NAMESPACE', deploy_options.namespace)
            data = data.replace('REPLACE_AUTH_ENABLED_FLAG', '"{}"'.format(deploy_options.enable_auth))
            data = data.replace('REPLACE_JWKS_URL', '"{}"'.format(deploy_options.jwks_url))
            data = data.replace('REPLACE_OCM_BASE_URL', '"{}"'.format(deploy_options.ocm_url))
            print("Deploying {}".format(DST_FILE))

            subsystem_versions = {"IMAGE_BUILDER": "ISO_CREATION",
                                  "IGNITION_GENERATE_IMAGE": "DUMMY_IGNITION"}

            versions = {"IMAGE_BUILDER": "assisted-iso-create",
                        "IGNITION_GENERATE_IMAGE": "assisted-ignition-generator",
                        "INSTALLER_IMAGE": "assisted-installer",
                        "CONTROLLER_IMAGE": "assisted-installer-controller",
                        "AGENT_DOCKER_IMAGE": "assisted-installer-agent",
                        "CONNECTIVITY_CHECK_IMAGE": "assisted-installer-agent",
                        "INVENTORY_IMAGE": "assisted-installer-agent"}
            for env_var_name, image_short_name in versions.items():
                if deploy_options.subsystem_test and env_var_name in subsystem_versions.keys():
                    image_fqdn = deployment_options.get_image_override(deploy_options, image_short_name, subsystem_versions[env_var_name])
                else:
                    image_fqdn = deployment_options.get_image_override(deploy_options, image_short_name, env_var_name)
                versions[env_var_name] = image_fqdn

            # Edge case for controller image override
            if os.environ.get("INSTALLER_IMAGE") and not os.environ.get("CONTROLLER_IMAGE"):
                versions["CONTROLLER_IMAGE"] = deployment_options.IMAGE_FQDN_TEMPLATE.format("assisted-installer-controller",
                    deployment_options.get_tag(versions["INSTALLER_IMAGE"]))

            versions["SELF_VERSION"] = deployment_options.get_image_override(deploy_options, "assisted-service", "SERVICE")
            deploy_tag = get_deployment_tag(deploy_options)
            if deploy_tag:
                versions["RELEASE_TAG"] = deploy_tag

            y = yaml.load(data)
            y['data'].update(versions)
            data = yaml.dump(y)
            dst.write(data)

    utils.apply(DST_FILE)
Example #3
0
def main():

    parser = argparse.ArgumentParser()
    parser.add_argument("--target")
    parser.add_argument("--domain")
    parser.add_argument("--subsystem-test", help='deploy in subsystem mode', action='store_true')
    deploy_options = deployment_options.load_deployment_options(parser)

    dst_file = os.path.join(os.getcwd(), "build/deploy_ui.yaml")
    image_fqdn = deployment_options.get_image_override(deploy_options, "ocp-metal-ui", "UI_IMAGE")
    runtime_cmd = utils.get_runtime_command()
    utils.check_output(f'{runtime_cmd} pull {image_fqdn}')
    cmd = f'{runtime_cmd} run {image_fqdn} /deploy/deploy_config.sh -i {image_fqdn} -n {deploy_options.namespace}'
    cmd += ' > {}'.format(dst_file)
    utils.check_output(cmd)
    print("Deploying {}".format(dst_file))
    utils.apply(dst_file)

    # in case of openshift deploy ingress as well
    if deploy_options.target == "oc-ingress":
        src_file = os.path.join(os.getcwd(), "deploy/ui/ui_ingress.yaml")
        dst_file = os.path.join(os.getcwd(), "build/ui_ingress.yaml")
        with open(src_file, "r") as src:
            with open(dst_file, "w+") as dst:
                data = src.read()
                data = data.replace('REPLACE_NAMESPACE', deploy_options.namespace)
                data = data.replace("REPLACE_HOSTNAME",
                                    utils.get_service_host("assisted-installer-ui", deploy_options.target, deploy_options.domain, deploy_options.namespace))
                print("Deploying {}".format(dst_file))
                dst.write(data)
        utils.apply(dst_file)
def main():
    utils.verify_build_directory(deploy_options.namespace)

    with open(SRC_FILE, "r") as src:
        raw_data = src.read()
        raw_data = raw_data.replace('REPLACE_NAMESPACE', f'"{deploy_options.namespace}"')
        raw_data = raw_data.replace('REPLACE_IMAGE_PULL_POLICY', f'"{deploy_options.image_pull_policy}"')
        data = yaml.safe_load(raw_data)

        image_fqdn = deployment_options.get_image_override(deploy_options, "assisted-service", "SERVICE")
        data["spec"]["replicas"] = deploy_options.replicas_count
        data["spec"]["template"]["spec"]["containers"][0]["image"] = image_fqdn
        if deploy_options.subsystem_test:
            if data["spec"]["template"]["spec"]["containers"][0].get("env", None) is None:
                data["spec"]["template"]["spec"]["containers"][0]["env"] = []
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'CLUSTER_MONITOR_INTERVAL', 'value': TEST_CLUSTER_MONITOR_INTERVAL})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'HOST_MONITOR_INTERVAL', 'value': TEST_HOST_MONITOR_INTERVAL})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name': 'JWKS_CERT', 'value': load_key()})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'SUBSYSTEM_RUN', 'value': 'True'})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'DUMMY_IGNITION', 'value': 'True'})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'OCM_BASE_URL', 'value': WIREMOCK_SERVICE})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'OCM_TOKEN_URL', 'value': WIREMOCK_SERVICE + '/token'})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'OCM_SERVICE_CLIENT_ID', 'value': 'mock-ocm-client-id'})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'OCM_SERVICE_CLIENT_SECRET', 'value': 'mock-ocm-client-secret'})

            if deploy_options.target == deployment_options.OPENSHIFT_TARGET:
                # Images built on infra cluster but needed on ephemeral cluster
                data["spec"]["template"]["spec"]["containers"][0]["imagePullPolicy"] = "IfNotPresent"
            else:
                data["spec"]["template"]["spec"]["containers"][0]["imagePullPolicy"] = "Never"

        if deploy_options.target == deployment_options.OCP_TARGET:
            data["spec"]["replicas"] = 1 # force single replica
            spec = data["spec"]["template"]["spec"]
            service_container = spec["containers"][0]
            service_container["env"].append({'name': 'DEPLOY_TARGET', 'value': "ocp"})
            service_container["env"].append({'name': 'STORAGE', 'value': "filesystem"})
            service_container["env"].append({'name': 'ISO_WORKSPACE_BASE_DIR', 'value': '/data'})
            service_container["env"].append({'name': 'ISO_CACHE_DIR', 'value': '/data/cache'})

        if deploy_options.port:
            for port_option in deploy_options.port:
                port = {"containerPort": int(port_option[0])}
                data["spec"]["template"]["spec"]["containers"][0]["ports"].append(port)

    with open(DST_FILE, "w+") as dst:
        yaml.dump(data, dst, default_flow_style=False)

    if not deploy_options.apply_manifest:
        return

    log.info(f"Deploying {DST_FILE}")
    utils.apply(
        target=deploy_options.target,
        namespace=deploy_options.namespace,
        file=DST_FILE
    )
Example #5
0
def main():

    parser = argparse.ArgumentParser()
    parser.add_argument("--subsystem-test", help="deploy in subsystem mode", action="store_true")
    deploy_options = deployment_options.load_deployment_options(parser)

    utils.set_profile(deploy_options.target, deploy_options.profile)

    dst_file = os.path.join(os.getcwd(), "build/deploy_ui.yaml")
    image_fqdn = deployment_options.get_image_override(deploy_options, "ocp-metal-ui", "UI_IMAGE")

    tag = deployment_options.get_tag(image_fqdn)
    clone_directory = os.path.join(os.getcwd(), "build/assisted-installer-ui")

    if not os.path.exists(clone_directory):
        utils.check_output(f"git clone --branch master {UI_REPOSITORY} {clone_directory}")

    cmd = f"cd {clone_directory} && git pull"

    if tag == "latest":
        log.warning("No hash specified. Will run the deployment generation script from the top of master branch")
    else:
        cmd += f" && git reset --hard {tag}"

    cmd += f" && deploy/deploy_config.sh -t {clone_directory}/deploy/ocp-metal-ui-template.yaml " \
           f"-i {image_fqdn} -n {deploy_options.namespace} > {dst_file}"

    utils.check_output(cmd)
    log.info("Deploying %s", dst_file)
    utils.apply(dst_file)

    # in case of openshift deploy ingress as well
    if deploy_options.target == "oc-ingress":
        src_file = os.path.join(os.getcwd(), "deploy/ui/ui_ingress.yaml")
        dst_file = os.path.join(os.getcwd(), "build/ui_ingress.yaml")
        with open(src_file, "r") as src:
            with open(dst_file, "w+") as dst:
                data = src.read()
                data = data.replace('REPLACE_NAMESPACE', deploy_options.namespace)
                data = data.replace('REPLACE_HOSTNAME', utils.get_service_host(
                    'assisted-installer-ui',
                    deploy_options.target,
                    deploy_options.domain,
                    deploy_options.namespace,
                    deploy_options.profile
                ))
                log.info("Deploying ingress from %s", dst_file)
                dst.write(data)
        utils.apply(dst_file)
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--subsystem-test",
                        help='deploy in subsystem mode',
                        action='store_true')
    deploy_options = deployment_options.load_deployment_options(parser)

    with open(SRC_FILE, "r") as src:
        raw_data = src.read()
        raw_data = raw_data.replace('REPLACE_NAMESPACE',
                                    deploy_options.namespace)

        data = yaml.safe_load(raw_data)

        image_fqdn = deployment_options.get_image_override(
            deploy_options, "assisted-service", "SERVICE")
        data["spec"]["template"]["spec"]["containers"][0]["image"] = image_fqdn
        if deploy_options.subsystem_test:
            if data["spec"]["template"]["spec"]["containers"][0].get(
                    "env", None) is None:
                data["spec"]["template"]["spec"]["containers"][0]["env"] = []
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'CLUSTER_MONITOR_INTERVAL',
                'value':
                TEST_CLUSTER_MONITOR_INTERVAL
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'HOST_MONITOR_INTERVAL',
                'value':
                TEST_HOST_MONITOR_INTERVAL
            })
            data["spec"]["template"]["spec"]["containers"][0][
                "imagePullPolicy"] = "Never"
        else:
            data["spec"]["template"]["spec"]["containers"][0][
                "imagePullPolicy"] = "Always"

    with open(DST_FILE, "w+") as dst:
        yaml.dump(data, dst, default_flow_style=False)
    print("Deploying {}".format(DST_FILE))

    utils.apply(DST_FILE)
Example #7
0
def main():
    utils.verify_build_directory(deploy_options.namespace)

    with open(SRC_FILE, "r") as src:
        raw_data = src.read()
        raw_data = raw_data.replace('REPLACE_NAMESPACE', deploy_options.namespace)
        data = yaml.safe_load(raw_data)

        image_fqdn = deployment_options.get_image_override(deploy_options, "assisted-service", "SERVICE")
        data["spec"]["replicas"] = deploy_options.replicas_count
        data["spec"]["template"]["spec"]["containers"][0]["image"] = image_fqdn
        if deploy_options.subsystem_test:
            if data["spec"]["template"]["spec"]["containers"][0].get("env", None) is None:
                data["spec"]["template"]["spec"]["containers"][0]["env"] = []
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'CLUSTER_MONITOR_INTERVAL', 'value': TEST_CLUSTER_MONITOR_INTERVAL})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'HOST_MONITOR_INTERVAL', 'value': TEST_HOST_MONITOR_INTERVAL})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name': 'JWKS_CERT', 'value': load_key()})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'SUBSYSTEM_RUN', 'value': 'True'})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'OCM_BASE_URL', 'value': 'http://wiremock.assisted-installer.svc.cluster.local:8080'})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'OCM_TOKEN_URL', 'value': 'http://wiremock.assisted-installer.svc.cluster.local:8080/token'})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'OCM_SERVICE_CLIENT_ID', 'value': 'mock-ocm-client-id'})
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({'name':'OCM_SERVICE_CLIENT_SECRET', 'value': 'mock-ocm-client-secret'})
            data["spec"]["template"]["spec"]["containers"][0]["imagePullPolicy"] = "Never"
        else:
            data["spec"]["template"]["spec"]["containers"][0]["imagePullPolicy"] = "Always"

    with open(DST_FILE, "w+") as dst:
        yaml.dump(data, dst, default_flow_style=False)
    print("Deploying {}".format(DST_FILE))

    utils.apply(
        target=deploy_options.target,
        namespace=deploy_options.namespace,
        profile=deploy_options.profile,
        file=DST_FILE
    )
def main():
    utils.verify_build_directory(deploy_options.namespace)
    verify_ocp_versions(
        json.loads(json.loads('"{}"'.format(deploy_options.ocp_versions))))

    with open(SRC_FILE, "r") as src:
        with open(DST_FILE, "w+") as dst:
            data = src.read()
            data = data.replace("REPLACE_DOMAINS",
                                '"{}"'.format(deploy_options.base_dns_domains))

            if deploy_options.apply_manifest:
                data = data.replace(
                    "REPLACE_BASE_URL",
                    utils.get_service_url(
                        service=SERVICE,
                        target=deploy_options.target,
                        domain=deploy_options.domain,
                        namespace=deploy_options.namespace,
                        disable_tls=deploy_options.disable_tls))

            data = data.replace('REPLACE_NAMESPACE',
                                f'"{deploy_options.namespace}"')
            data = data.replace('REPLACE_AUTH_TYPE_FLAG',
                                '"{}"'.format(deploy_options.auth_type))
            data = data.replace(
                'REPLACE_WITH_AMS_SUBSCRIPTIONS',
                '"{}"'.format(deploy_options.with_ams_subscriptions))
            data = data.replace('REPLACE_CHECK_CLUSTER_VERSION_FLAG',
                                '"{}"'.format(deploy_options.check_cvo))
            data = data.replace('REPLACE_JWKS_URL',
                                '"{}"'.format(deploy_options.jwks_url))
            data = data.replace('REPLACE_OCM_BASE_URL',
                                '"{}"'.format(deploy_options.ocm_url))
            data = data.replace('REPLACE_OPENSHIFT_VERSIONS',
                                '"{}"'.format(deploy_options.ocp_versions))
            data = data.replace(
                'REPLACE_PUBLIC_CONTAINER_REGISTRIES',
                '"{}"'.format(deploy_options.public_registries))
            data = data.replace('REPLACE_IPV6_SUPPORT',
                                '"{}"'.format(deploy_options.ipv6_support))
            data = data.replace('REPLACE_HW_VALIDATOR_REQUIREMENTS',
                                '"{}"'.format(deploy_options.hw_requirements))
            data = data.replace(
                'REPLACE_DISABLED_HOST_VALIDATIONS',
                '"{}"'.format(deploy_options.disabled_host_validations))

            versions = {
                "INSTALLER_IMAGE": "assisted-installer",
                "CONTROLLER_IMAGE": "assisted-installer-controller",
                "AGENT_DOCKER_IMAGE": "assisted-installer-agent"
            }
            for env_var_name, image_short_name in versions.items():
                versions[env_var_name] = deployment_options.get_image_override(
                    deploy_options, image_short_name, env_var_name)
                log.info(f"Logging {image_short_name} information")
                log_image_revision(versions[env_var_name])

            # Edge case for controller image override
            if os.environ.get("INSTALLER_IMAGE"
                              ) and not os.environ.get("CONTROLLER_IMAGE"):
                versions[
                    "CONTROLLER_IMAGE"] = deployment_options.IMAGE_FQDN_TEMPLATE.format(
                        "assisted-installer-controller",
                        deployment_options.get_tag(
                            versions["INSTALLER_IMAGE"]))

            versions["SELF_VERSION"] = deployment_options.get_image_override(
                deploy_options, "assisted-service", "SERVICE")
            log.info(f"Logging assisted-service information")
            log_image_revision(versions["SELF_VERSION"])
            deploy_tag = get_deployment_tag(deploy_options)
            if deploy_tag:
                versions["RELEASE_TAG"] = deploy_tag

            y = yaml.safe_load(data)
            y['data'].update(versions)

            y['data'][
                'ENABLE_SINGLE_NODE_DNSMASQ'] = deploy_options.enable_sno_dnsmasq
            y['data']['STORAGE'] = deploy_options.storage

            if deploy_options.installation_timeout:
                y['data']['INSTALLATION_TIMEOUT'] = str(
                    deploy_options.installation_timeout)

            admins = get_admin_users()
            if admins:
                y['data']['ADMIN_USERS'] = admins

            if deploy_options.img_expr_time:
                y['data'][
                    'IMAGE_EXPIRATION_TIME'] = deploy_options.img_expr_time

            if deploy_options.img_expr_time:
                y['data'][
                    'IMAGE_EXPIRATION_INTERVAL'] = deploy_options.img_expr_interval

            if deploy_options.enable_kube_api:
                y['data']['ENABLE_KUBE_API'] = 'true'

            if deploy_options.kubeapi_day2:
                y['data']['ENABLE_KUBE_API_DAY2'] = deploy_options.kubeapi_day2

            data = yaml.dump(y)
            dst.write(data)

    if deploy_options.apply_manifest:
        log.info("Deploying {}".format(DST_FILE))
        utils.apply(target=deploy_options.target,
                    namespace=deploy_options.namespace,
                    file=DST_FILE)
def main():
    log = utils.get_logger('deploy-service-configmap')
    utils.verify_build_directory(deploy_options.namespace)
    verify_ocp_versions(json.loads(json.loads('"{}"'.format(deploy_options.ocp_versions))))

    with open(SRC_FILE, "r") as src:
        with open(DST_FILE, "w+") as dst:
            data = src.read()
            data = data.replace("REPLACE_DOMAINS", '"{}"'.format(deploy_options.base_dns_domains))
            data = data.replace("REPLACE_BASE_URL", utils.get_service_url(service=SERVICE,
                                                                          target=deploy_options.target,
                                                                          domain=deploy_options.domain,
                                                                          namespace=deploy_options.namespace,
                                                                          profile=deploy_options.profile,
                                                                          disable_tls=deploy_options.disable_tls))

            data = data.replace('REPLACE_NAMESPACE', f'"{deploy_options.namespace}"')
            data = data.replace('REPLACE_AUTH_ENABLED_FLAG', '"{}"'.format(deploy_options.enable_auth))
            data = data.replace('REPLACE_CHECK_CLUSTER_VERSION_FLAG', '"{}"'.format(deploy_options.check_cvo))
            data = data.replace('REPLACE_JWKS_URL', '"{}"'.format(deploy_options.jwks_url))
            data = data.replace('REPLACE_OCM_BASE_URL', '"{}"'.format(deploy_options.ocm_url))
            data = data.replace('REPLACE_OPENSHIFT_VERSIONS', '"{}"'.format(deploy_options.ocp_versions))
            data = data.replace('REPLACE_OPENSHIFT_INSTALL_RELEASE_IMAGE', '"{}"'.format(deploy_options.ocp_override))
            data = data.replace('REPLACE_PUBLIC_CONTAINER_REGISTRIES', '"{}"'.format(deploy_options.public_registries))

            versions = {"INSTALLER_IMAGE": "assisted-installer",
                        "CONTROLLER_IMAGE": "assisted-installer-controller",
                        "AGENT_DOCKER_IMAGE": "assisted-installer-agent",
                        "CONNECTIVITY_CHECK_IMAGE": "assisted-installer-agent",
                        "INVENTORY_IMAGE": "assisted-installer-agent",
                        "FREE_ADDRESSES_IMAGE": "assisted-installer-agent",
                        "DHCP_LEASE_ALLOCATOR_IMAGE": "assisted-installer-agent",
                        "API_VIP_CONNECTIVITY_CHECK_IMAGE": "assisted-installer-agent",
                        "FIO_PERF_CHECK_IMAGE": "assisted-installer-agent",
                        "NTP_SYNCHRONIZER_IMAGE": "assisted-installer-agent"}
            for env_var_name, image_short_name in versions.items():
                versions[env_var_name] = deployment_options.get_image_override(deploy_options, image_short_name, env_var_name)

            # Edge case for controller image override
            if os.environ.get("INSTALLER_IMAGE") and not os.environ.get("CONTROLLER_IMAGE"):
                versions["CONTROLLER_IMAGE"] = deployment_options.IMAGE_FQDN_TEMPLATE.format("assisted-installer-controller",
                    deployment_options.get_tag(versions["INSTALLER_IMAGE"]))

            versions["SELF_VERSION"] = deployment_options.get_image_override(deploy_options, "assisted-service", "SERVICE")
            deploy_tag = get_deployment_tag(deploy_options)
            if deploy_tag:
                versions["RELEASE_TAG"] = deploy_tag

            y = yaml.load(data)
            y['data'].update(versions)

            if deploy_options.installation_timeout:
                y['data']['INSTALLATION_TIMEOUT'] = str(deploy_options.installation_timeout)

            admins = get_admin_users()
            if admins:
                y['data']['ADMIN_USERS'] = admins

            if deploy_options.img_expr_time:
                y['data']['IMAGE_EXPIRATION_TIME'] = deploy_options.img_expr_time

            if deploy_options.img_expr_time:
                y['data']['IMAGE_EXPIRATION_INTERVAL'] = deploy_options.img_expr_interval

            data = yaml.dump(y)
            dst.write(data)

    log.info("Deploying {}".format(DST_FILE))
    utils.apply(
        target=deploy_options.target,
        namespace=deploy_options.namespace,
        profile=deploy_options.profile,
        file=DST_FILE
    )
def main():
    utils.verify_build_directory(deploy_options.namespace)

    with open(SRC_FILE, "r") as src:
        raw_data = src.read()
        raw_data = raw_data.replace('REPLACE_NAMESPACE',
                                    f'"{deploy_options.namespace}"')
        data = yaml.safe_load(raw_data)

        image_fqdn = deployment_options.get_image_override(
            deploy_options, "assisted-service", "SERVICE")
        data["spec"]["replicas"] = deploy_options.replicas_count
        data["spec"]["template"]["spec"]["containers"][0]["image"] = image_fqdn
        if deploy_options.subsystem_test:
            if data["spec"]["template"]["spec"]["containers"][0].get(
                    "env", None) is None:
                data["spec"]["template"]["spec"]["containers"][0]["env"] = []
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'CLUSTER_MONITOR_INTERVAL',
                'value':
                TEST_CLUSTER_MONITOR_INTERVAL
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'HOST_MONITOR_INTERVAL',
                'value':
                TEST_HOST_MONITOR_INTERVAL
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'JWKS_CERT',
                'value':
                load_key()
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'SUBSYSTEM_RUN',
                'value':
                'True'
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'DUMMY_IGNITION',
                'value':
                'True'
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'OCM_BASE_URL',
                'value':
                'http://wiremock.assisted-installer.svc.cluster.local:8080'
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'OCM_TOKEN_URL',
                'value':
                'http://wiremock.assisted-installer.svc.cluster.local:8080/token'
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'OCM_SERVICE_CLIENT_ID',
                'value':
                'mock-ocm-client-id'
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'OCM_SERVICE_CLIENT_SECRET',
                'value':
                'mock-ocm-client-secret'
            })
            data["spec"]["template"]["spec"]["containers"][0][
                "imagePullPolicy"] = "Never"
        else:
            data["spec"]["template"]["spec"]["containers"][0][
                "imagePullPolicy"] = "Always"
        if deploy_options.target == utils.OCP_TARGET:
            spec = data["spec"]["template"]["spec"]
            service_container = spec["containers"][0]
            service_container["env"].append({
                'name': 'DEPLOY_TARGET',
                'value': "ocp"
            })

            # Copy livecd from 'assisted-iso-create' image
            service_container["volumeMounts"].append({
                'name': 'iso',
                'mountPath': "/data"
            })
            spec["volumes"].append({'name': 'iso', 'emptyDir': {}})
            spec["initContainers"] = [{
                "name":
                "assisted-iso-create",
                "image":
                "quay.io/ocpmetal/assisted-iso-create:latest",
                "command": ["bash", "-c"],
                "args": ["cp -r /data/* /iso-data"],
                "volumeMounts": [{
                    "mountPath": "/iso-data",
                    "name": "iso"
                }]
            }]

    with open(DST_FILE, "w+") as dst:
        yaml.dump(data, dst, default_flow_style=False)
    print("Deploying {}".format(DST_FILE))

    utils.apply(target=deploy_options.target,
                namespace=deploy_options.namespace,
                profile=deploy_options.profile,
                file=DST_FILE)
def main():
    utils.verify_build_directory(deploy_options.namespace)

    with open(SRC_FILE, "r") as src:
        raw_data = src.read()
        raw_data = raw_data.replace('REPLACE_NAMESPACE',
                                    f'"{deploy_options.namespace}"')
        data = yaml.safe_load(raw_data)

        image_fqdn = deployment_options.get_image_override(
            deploy_options, "assisted-service", "SERVICE")
        data["spec"]["replicas"] = deploy_options.replicas_count
        data["spec"]["template"]["spec"]["containers"][0]["image"] = image_fqdn
        if deploy_options.subsystem_test:
            if data["spec"]["template"]["spec"]["containers"][0].get(
                    "env", None) is None:
                data["spec"]["template"]["spec"]["containers"][0]["env"] = []
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'CLUSTER_MONITOR_INTERVAL',
                'value':
                TEST_CLUSTER_MONITOR_INTERVAL
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'HOST_MONITOR_INTERVAL',
                'value':
                TEST_HOST_MONITOR_INTERVAL
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'JWKS_CERT',
                'value':
                load_key()
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'SUBSYSTEM_RUN',
                'value':
                'True'
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'DUMMY_IGNITION',
                'value':
                'True'
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'OCM_BASE_URL',
                'value':
                WIREMOCK_SERVICE
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'OCM_TOKEN_URL',
                'value':
                WIREMOCK_SERVICE + '/token'
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'OCM_SERVICE_CLIENT_ID',
                'value':
                'mock-ocm-client-id'
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'OCM_SERVICE_CLIENT_SECRET',
                'value':
                'mock-ocm-client-secret'
            })
            data["spec"]["template"]["spec"]["containers"][0]["env"].append({
                'name':
                'ENABLE_KUBE_API',
                'value':
                str(deploy_options.enable_kube_api).lower()
            })

            if deploy_options.profile == utils.OPENSHIFT_CI:
                # Images built on infra cluster but needed on ephemeral cluster
                data["spec"]["template"]["spec"]["containers"][0][
                    "imagePullPolicy"] = "IfNotPresent"
            else:
                data["spec"]["template"]["spec"]["containers"][0][
                    "imagePullPolicy"] = "Never"
        else:
            data["spec"]["template"]["spec"]["containers"][0][
                "imagePullPolicy"] = "Always"
        if deploy_options.target == utils.OCP_TARGET:
            data["spec"]["replicas"] = 1  # force single replica
            spec = data["spec"]["template"]["spec"]
            service_container = spec["containers"][0]
            service_container["env"].append({
                'name': 'DEPLOY_TARGET',
                'value': "ocp"
            })
            service_container["env"].append({
                'name': 'STORAGE',
                'value': "filesystem"
            })

    with open(DST_FILE, "w+") as dst:
        yaml.dump(data, dst, default_flow_style=False)

    if not deploy_options.apply_manifest:
        return

    print("Deploying {}".format(DST_FILE))
    utils.apply(target=deploy_options.target,
                namespace=deploy_options.namespace,
                profile=deploy_options.profile,
                file=DST_FILE)
Example #12
0
def main():
    log = utils.get_logger('deploy-service-configmap')
    utils.verify_build_directory(deploy_options.namespace)

    with open(SRC_FILE, "r") as src:
        with open(DST_FILE, "w+") as dst:
            data = src.read()
            data = data.replace("REPLACE_DOMAINS", '"{}"'.format(deploy_options.base_dns_domains))
            data = data.replace("REPLACE_BASE_URL", utils.get_service_url(service=SERVICE,
                                                                          target=deploy_options.target,
                                                                          domain=deploy_options.domain,
                                                                          namespace=deploy_options.namespace,
                                                                          profile=deploy_options.profile,
                                                                          disable_tls=deploy_options.disable_tls))

            data = data.replace('REPLACE_NAMESPACE', f'"{deploy_options.namespace}"')
            data = data.replace('REPLACE_AUTH_ENABLED_FLAG', '"{}"'.format(deploy_options.enable_auth))
            data = data.replace('REPLACE_JWKS_URL', '"{}"'.format(deploy_options.jwks_url))
            data = data.replace('REPLACE_OCM_BASE_URL', '"{}"'.format(deploy_options.ocm_url))
            data = data.replace('REPLACE_OPENSHIFT_INSTALL_RELEASE_IMAGE', '"{}"'.format(deploy_options.ocp_release))

            subsystem_versions = {"IMAGE_BUILDER": "ISO_CREATION"}

            versions = {"IMAGE_BUILDER": "assisted-iso-create",
                        "INSTALLER_IMAGE": "assisted-installer",
                        "CONTROLLER_IMAGE": "assisted-installer-controller",
                        "AGENT_DOCKER_IMAGE": "assisted-installer-agent",
                        "CONNECTIVITY_CHECK_IMAGE": "assisted-installer-agent",
                        "INVENTORY_IMAGE": "assisted-installer-agent",
                        "API_VIP_CONNECTIVITY_CHECK_IMAGE": "assisted-installer-agent"}
            for env_var_name, image_short_name in versions.items():
                if deploy_options.subsystem_test and env_var_name in subsystem_versions.keys():
                    image_fqdn = deployment_options.get_image_override(deploy_options, image_short_name, subsystem_versions[env_var_name])
                else:
                    image_fqdn = deployment_options.get_image_override(deploy_options, image_short_name, env_var_name)
                versions[env_var_name] = image_fqdn

            # Edge case for controller image override
            if os.environ.get("INSTALLER_IMAGE") and not os.environ.get("CONTROLLER_IMAGE"):
                versions["CONTROLLER_IMAGE"] = deployment_options.IMAGE_FQDN_TEMPLATE.format("assisted-installer-controller",
                    deployment_options.get_tag(versions["INSTALLER_IMAGE"]))

            versions["SELF_VERSION"] = deployment_options.get_image_override(deploy_options, "assisted-service", "SERVICE")
            deploy_tag = get_deployment_tag(deploy_options)
            if deploy_tag:
                versions["RELEASE_TAG"] = deploy_tag

            y = yaml.load(data)
            y['data'].update(versions)

            if deploy_options.installation_timeout:
                y['data']['INSTALLATION_TIMEOUT'] = str(deploy_options.installation_timeout)

            data = yaml.dump(y)
            dst.write(data)

    log.info("Deploying {}".format(DST_FILE))
    utils.apply(
        target=deploy_options.target,
        namespace=deploy_options.namespace,
        profile=deploy_options.profile,
        file=DST_FILE
    )