コード例 #1
0
    def prepare_for_install(
            self,
            nodes,
            iso_download_path=env_variables['iso_download_path'],
            iso_image_type=env_variables['iso_image_type'],
            ssh_key=env_variables['ssh_public_key'],
            nodes_count=env_variables['num_nodes'],
            vip_dhcp_allocation=env_variables['vip_dhcp_allocation'],
            download_image=True):
        if download_image:
            if env_variables.get('static_ips_config'):
                static_ips_config = static_ips.generate_static_ips_data_from_tf(
                    nodes.controller.tf_folder)
            else:
                static_ips_config = None

            self.generate_and_download_image(
                iso_download_path=iso_download_path,
                iso_image_type=iso_image_type,
                ssh_key=ssh_key,
                static_ips=static_ips_config)
        nodes.start_all()
        self.wait_until_hosts_are_discovered(nodes_count=nodes_count,
                                             allow_insufficient=True)
        nodes.set_hostnames(self)
        if self._high_availability_mode != consts.HighAvailabilityMode.NONE:
            self.set_host_roles()
        else:
            nodes.set_single_node_ip(self)
        self.set_network_params(
            controller=nodes.controller,
            vip_dhcp_allocation=vip_dhcp_allocation,
        )
        self.wait_for_ready_to_install()
コード例 #2
0
    def prepare_for_install(
            self,
            nodes,
            iso_download_path=env_variables['iso_download_path'],
            ssh_key=env_variables['ssh_public_key'],
            nodes_count=env_variables['num_nodes'],
            vip_dhcp_allocation=env_variables['vip_dhcp_allocation'],
            download_image=True):
        if download_image:
            if env_variables.get('static_ips_config'):
                static_ips_config = static_ips.generate_static_ips_data_from_tf(
                    nodes.controller.tf_folder)
            else:
                static_ips_config = None

            self.generate_and_download_image(
                iso_download_path=iso_download_path,
                ssh_key=ssh_key,
                static_ips=static_ips_config)
        nodes.start_all()
        self.wait_until_hosts_are_discovered(nodes_count=nodes_count)
        nodes.set_hostnames(self)
        self.set_host_roles()
        self.set_network_params(
            controller=nodes.controller,
            vip_dhcp_allocation=vip_dhcp_allocation,
        )
        self.wait_for_ready_to_install()
コード例 #3
0
def execute_day1_flow(cluster_name):
    client = None
    cluster = {}
    if args.managed_dns_domains:
        args.base_dns_domain = args.managed_dns_domains.split(":")[0]

    if not args.vm_network_cidr:
        net_cidr = IPNetwork('192.168.126.0/24')
        net_cidr += args.ns_index
        args.vm_network_cidr = str(net_cidr)

    if not args.vm_network_cidr6:
        net_cidr = IPNetwork('1001:db8::/120')
        net_cidr += args.ns_index
        args.vm_network_cidr6 = str(net_cidr)

    if not args.network_bridge:
        args.network_bridge = f'tt{args.ns_index}'

    set_tf_config(cluster_name)
    image_path = None
    image_type = args.iso_image_type

    if not args.image:
        utils.recreate_folder(consts.IMAGE_FOLDER, force_recreate=False)
        client = assisted_service_api.create_client(
            url=utils.get_assisted_service_url_by_args(args=args))
        if args.cluster_id:
            cluster = client.cluster_get(cluster_id=args.cluster_id)
        else:

            cluster = client.create_cluster(cluster_name,
                                            ssh_public_key=args.ssh_key,
                                            **_cluster_create_params())

        image_path = os.path.join(consts.IMAGE_FOLDER,
                                  f'{args.namespace}-installer-image.iso')

        if args.with_static_ips:
            tf_folder = utils.get_tf_folder(cluster_name, args.namespace)
            static_ips_config = static_ips.generate_static_ips_data_from_tf(
                tf_folder)
        else:
            static_ips_config = None

        client.generate_and_download_image(
            cluster_id=cluster.id,
            image_path=image_path,
            image_type=image_type,
            ssh_key=args.ssh_key,
            static_ips=static_ips_config,
        )

    # Iso only, cluster will be up and iso downloaded but vm will not be created
    if not args.iso_only:
        try:
            nodes_flow(client, cluster_name, cluster)
        finally:
            if not image_path or args.keep_iso:
                return
            log.info('deleting iso: %s', image_path)
            os.unlink(image_path)

    return cluster.id