def deploy_image_set(cluster_name, kube_api_context): openshift_release_image = get_openshift_release_image() image_set_name = f"{cluster_name}-image-set" image_set = ClusterImageSet( kube_api_client=kube_api_context.api_client, name=image_set_name, ) image_set.create(openshift_release_image) return ClusterImageSetReference(image_set_name)
def deploy_image_set(cluster_name, kube_api_context): openshift_version = os.environ.get('OPENSHIFT_VERSION', '4.8') openshift_release_image = get_openshift_release_image(openshift_version) image_set_name = f'{cluster_name}-image-set' image_set = ClusterImageSet( kube_api_client=kube_api_context.api_client, name=image_set_name, ) image_set.create(openshift_release_image) return ClusterImageSetReference(image_set_name)
def delete_kube_api_resources_for_namespace( kube_api_client, name, namespace, *, secret_name=None, infraenv_name=None, nmstate_name=None, image_set_name=None, ): CoreV1Api.delete_namespaced_secret = suppress_not_found_error( fn=CoreV1Api.delete_namespaced_secret, ) CustomObjectsApi.delete_namespaced_custom_object = suppress_not_found_error( fn=CustomObjectsApi.delete_namespaced_custom_object ) cluster_deployment = ClusterDeployment( kube_api_client=kube_api_client, name=name, namespace=namespace, ) for agent in cluster_deployment.list_agents(): agent.delete() cluster_deployment.delete() Secret( kube_api_client=kube_api_client, name=secret_name or name, namespace=namespace, ).delete() InfraEnv( kube_api_client=kube_api_client, name=infraenv_name or f"{name}-infra-env", namespace=namespace, ).delete() NMStateConfig( kube_api_client=kube_api_client, name=nmstate_name or f"{name}-nmstate-config", namespace=namespace, ).delete() ClusterImageSet( kube_api_client=kube_api_client, name=image_set_name or f"{name}-image-set", namespace=namespace ).delete()
def execute_kube_api_flow(): log.info("Executing kube-api flow") cluster_name = f'{args.cluster_name or consts.CLUSTER_PREFIX}-{args.namespace}' utils.recreate_folder(consts.IMAGE_FOLDER, force_recreate=False) machine_net = MachineNetwork(args.ipv4, args.ipv6, args.vm_network_cidr, args.vm_network_cidr6, args.ns_index) kube_client = create_kube_api_client() cluster_deployment = ClusterDeployment( kube_api_client=kube_client, name=cluster_name, namespace=args.namespace ) set_tf_config(cluster_name) secret = Secret( kube_api_client=kube_client, name=cluster_name, namespace=args.namespace, ) secret.apply(pull_secret=args.pull_secret) imageSet=ClusterImageSet( kube_api_client=kube_client, name=f"{cluster_name}-image-set", namespace=args.namespace ) releaseImage=utils.get_env('OPENSHIFT_INSTALL_RELEASE_IMAGE', utils.get_openshift_release_image("4.8")) imageSet.apply(releaseImage=releaseImage) ipv4 = args.ipv4 and args.ipv4.lower() in MachineNetwork.YES_VALUES ipv6 = args.ipv6 and args.ipv6.lower() in MachineNetwork.YES_VALUES api_vip, ingress_vip = "", "" if args.master_count > 1: api_vip, ingress_vip = _get_vips_ips(machine_net) agent_cluster_install = AgentClusterInstall( kube_api_client=kube_client, name=f'{cluster_name}-agent-cluster-install', namespace=args.namespace ) image_set_ref = ClusterImageSetReference(name=f'{cluster_name}-image-set') cluster_deployment.apply( secret=secret, base_domain=args.base_dns_domain, agent_cluster_install_ref=agent_cluster_install.ref, ) agent_cluster_install.apply( cluster_deployment_ref=cluster_deployment.ref, api_vip=api_vip, ingress_vip=ingress_vip, image_set_ref=image_set_ref, cluster_cidr=args.cluster_network if ipv4 else args.cluster_network6, host_prefix=args.host_prefix if ipv4 else args.host_prefix6, service_network=args.service_network if ipv4 else args.service_network6, ssh_pub_key=args.ssh_key, control_plane_agents=args.master_count, worker_agents=args.number_of_workers, machine_cidr=get_machine_cidr_from_machine_net(machine_net), ) agent_cluster_install.wait_to_be_ready(False) apply_static_network_config( cluster_name=cluster_name, kube_client=kube_client, ) image_path = os.path.join( consts.IMAGE_FOLDER, f'{args.namespace}-installer-image.iso' ) log.info("Creating infraEnv") http_proxy, https_proxy, no_proxy = _get_http_proxy_params(ipv4=ipv4, ipv6=ipv6) infra_env = InfraEnv( kube_api_client=kube_client, name=f"{cluster_name}-infra-env", namespace=args.namespace ) infra_env.apply( cluster_deployment=cluster_deployment, secret=secret, proxy=Proxy( http_proxy=http_proxy, https_proxy=https_proxy, no_proxy=no_proxy ), ssh_pub_key=args.ssh_key, nmstate_label=cluster_name, ) infra_env.status() image_url = infra_env.get_iso_download_url() utils.download_iso(image_url, image_path) try: nodes_flow_kube_api(cluster_name, machine_net, cluster_deployment, agent_cluster_install) finally: if not image_path or args.keep_iso: return log.info('deleting iso: %s', image_path) os.unlink(image_path)