def _fill_tfvars(self, running=True): tfvars_json_file = os.path.join(self.tf_folder, consts.TFVARS_JSON_NAME) logging.info("Filling tfvars") with open(tfvars_json_file) as _file: tfvars = json.load(_file) logging.info(self.params.machine_cidr) master_starting_ip = str( ipaddress.ip_address( ipaddress.IPv4Network( self.params.machine_cidr).network_address) + 10) worker_starting_ip = str( ipaddress.ip_address( ipaddress.IPv4Network( self.params.machine_cidr).network_address) + 10 + int(tfvars["master_count"])) tfvars['image_path'] = self.image_path tfvars['master_count'] = self.params.master_count tfvars['libvirt_master_ips'] = utils.create_ip_address_list( self.params.master_count, starting_ip_addr=master_starting_ip) tfvars['libvirt_worker_ips'] = utils.create_ip_address_list( self.params.worker_count, starting_ip_addr=worker_starting_ip) tfvars['api_vip'] = self.get_ingress_and_api_vips()["api_vip"] tfvars['running'] = self.params.running tfvars.update(self.params) tfvars.update(self._secondary_tfvars()) with open(tfvars_json_file, "w") as _file: json.dump(tfvars, _file)
def _generate_static_ips_data(machine_cidr, provisioning_cidr, masters_macs, masters_secondary_macs, workers_macs, workers_secondary_macs): num_masters = len(masters_macs) num_workers = len(workers_macs) # set starting static ips masters_static_starting_ip = str( ipaddress.ip_address( ipaddress.IPv4Network(machine_cidr).network_address) + 30) masters_static_secondary_starting_ip = str( ipaddress.ip_address( ipaddress.IPv4Network(provisioning_cidr).network_address) + 30) workers_static_starting_ip = str( ipaddress.ip_address( ipaddress.IPv4Network(machine_cidr).network_address) + 30 + num_masters) workers_static_secondary_starting_ip = str( ipaddress.ip_address( ipaddress.IPv4Network(provisioning_cidr).network_address) + 30 + num_masters) # set static ips lists masters_static_ips = utils.create_ip_address_list( num_masters, masters_static_starting_ip) masters_static_secondary_ips = utils.create_ip_address_list( num_masters, masters_static_secondary_starting_ip) workers_static_ips = utils.create_ip_address_list( num_workers, workers_static_starting_ip) workers_static_secondary_ips = utils.create_ip_address_list( num_workers, workers_static_secondary_starting_ip) mask = str(ipaddress.IPv4Network(machine_cidr).prefixlen) mask_secondary = str(ipaddress.IPv4Network(provisioning_cidr).prefixlen) gw_dns = str( ipaddress.ip_address( ipaddress.IPv4Network(machine_cidr).network_address) + 1) gw_dns_secondary = str( ipaddress.ip_address( ipaddress.IPv4Network(provisioning_cidr).network_address) + 1) static_ips = [] for netdata in [ (masters_macs, masters_static_ips, mask, gw_dns, num_masters), (masters_secondary_macs, masters_static_secondary_ips, mask_secondary, gw_dns_secondary, num_masters), (workers_macs, workers_static_ips, mask, gw_dns, num_workers), (workers_secondary_macs, workers_static_secondary_ips, mask_secondary, gw_dns_secondary, num_workers) ]: data = [{ 'mac': netdata[0][i], 'ip': netdata[1][i], 'mask': netdata[2], 'gateway': netdata[3], 'dns': netdata[3] } for i in range(netdata[4])] static_ips = static_ips + data return static_ips
def get_ingress_and_api_vips(self): network_subnet_starting_ip = str( ipaddress.ip_address( ipaddress.ip_network(self.get_primary_machine_cidr()).network_address ) + 100 ) ips = utils.create_ip_address_list(2, starting_ip_addr=str(ipaddress.ip_address(network_subnet_starting_ip))) return {"api_vip": ips[0], "ingress_vip": ips[1]}
def _static_conf_gen(num_nodes, network, address_offset=0): starting_ip = str(ip_address(network.network_address) + 30 + address_offset) ips = utils.create_ip_address_list(num_nodes, starting_ip) mask = str(network.prefixlen) gw_dns = str(ip_address(network.network_address) + 1) for i in range(num_nodes): yield {'ip': ips[i], 'gateway': gw_dns, 'dns': gw_dns, 'mask':mask}
def _static_conf_gen(num_nodes, network, address_offset=0): starting_ip = str( ip_address(network.network_address) + 30 + address_offset) ips = utils.create_ip_address_list(num_nodes, starting_ip) mask = str(network.prefixlen) gw_dns = str(ip_address(network.network_address) + 1) for i in range(num_nodes): yield StaticIPEntry(ip=ips[i], mask=mask, gateway=gw_dns, dns=gw_dns)
def _secondary_tfvars(self): secondary_master_starting_ip = str( ipaddress.ip_address( ipaddress.IPv4Network( self.params.provisioning_cidr).network_address) + 10) secondary_worker_starting_ip = str( ipaddress.ip_address( ipaddress.IPv4Network( self.params.provisioning_cidr).network_address) + 10 + int(self.params.master_count)) return { 'libvirt_secondary_worker_ips': utils.create_ip_address_list( self.params.worker_count, starting_ip_addr=secondary_worker_starting_ip), 'libvirt_secondary_master_ips': utils.create_ip_address_list( self.params.master_count, starting_ip_addr=secondary_master_starting_ip) }
def _get_vips_ips(machine_net): if machine_net.has_ip_v4: network_subnet_starting_ip = str( ipaddress.ip_address( ipaddress.IPv4Network(machine_net.cidr_v4).network_address) + 100) else: network_subnet_starting_ip = str( ipaddress.ip_address( ipaddress.IPv6Network(machine_net.cidr_v6).network_address) + 100) ips = utils.create_ip_address_list( 2, starting_ip_addr=str(ipaddress.ip_address(network_subnet_starting_ip))) return ips[0], ips[1]