leaf1_id = hyp_utils.get_hyp_leaf_name(leaf1_hypervisor_name, leaf1_vpc_name, leaf1_name) l1_hypervisor_arg = " hypervisor=" + leaf1_hypervisor_name leaf2_name = connection_data["leaf2_name"] leaf2_hypervisor_name = connection_data["leaf2_hypervisor_name"] leaf2_id = hyp_utils.get_hyp_leaf_name(leaf2_hypervisor_name, leaf2_vpc_name, leaf2_name) l2_hypervisor_arg = " hypervisor=" + leaf2_hypervisor_name #connect leaf1 to leaf2 vxlan remote try: #c1_ve_h_l2t2 vxlan_tunnel_name_arg = " vxlan_tunnel_name=vxlantun26" loopback_net = raas_utils.get_new_veth_subnet('loopbacks').split('/') grep_lo_net = ".".join(loopback_net[0].split('.')[0:-1]) leaf1_lo_ip = raas_utils.get_ns_ip(leaf1_hypervisor_name, leaf1_id, grep_lo_net) leaf2_lo_ip = raas_utils.get_ns_ip(leaf2_hypervisor_name, leaf2_id, grep_lo_net) try: # Configure VXLAN on Leaf 1 Transit leaf1_id_arg = " l_name=" + leaf1_id l_local_ip_arg = " l_ip=" + leaf1_lo_ip l_remote_ip_arg = " remote_l_ip=" + leaf2_lo_ip br_name_arg = " l_br_name=" + leaf1_id + "_br"
spine_name = leaf_data["spine_name"] if not raas_utils.client_exists_spine(vpc_name,spine_name): print(spine_name+ " spine does not exist") exit(1) spine_id=hyp_utils.get_hyp_spine_name(hypervisor,vpc_name,spine_name) transit_name = leaf_data["l1_transit_name"] if not raas_utils.client_exists_l1_transit(transit_name): print(transit_name+" transit does not exist") exit(1) transit_id=hyp_utils.get_hyp_l1_transit_name(hypervisor,transit_name) try: network=raas_utils.get_new_veth_subnet('spine_l1t') subnet = network.split('/') b_ip = "b_ip="+str(ipaddress.ip_address(subnet[0])+1) + '/' + subnet[1] dhcp_range = "dhcp_range="+str(ipaddress.ip_address(subnet[0])+2)+','+ \ str(ipaddress.ip_address(subnet[0])+6) net_name=" s_t_net"+vpc_id + "_net_" + spine_id.split('_')[2]+"_" + transit_id.split('_')[1] net_arg=" t_s_net=" +net_name br_arg=" s_t_br=" + vpc_id + "_br_" + spine_id.split('_')[2]+"_" + transit_id.split('_')[1] veth_1=" ve_l_s=" + vpc_id + "_ve_" + spine_id.split('_')[2]+"_" + transit_id.split('_')[1] veth_2=" ve_s_l=" + vpc_id + "_ve_" + transit_id.split('_')[1]+"_" + spine_id.split('_')[2] upper_vm_arg=" t_name="+transit_id lower_vm_arg=" s_name="+spine_id extra_vars = constants.ansible_become_pass + net_arg + br_arg + veth_1 + veth_2 + upper_vm_arg + lower_vm_arg + subnet_ip_arg + subnet_range_arg + " " + hypervisor_arg
l1_transit_name = connection_data["l1_transit_name"] l1_transit_hypervisor_name = connection_data["l1_transit_hypervisor_name"] l1_transit_id = hyp_utils.get_hyp_l1_transit_name(l1_transit_hypervisor_name,l1_transit_name) l2_transit_name = connection_data["l2_transit_name"] l2_transit_hypervisor_name = connection_data["l2_transit_hypervisor_name"] l2_transit_id = hyp_utils.get_hyp_l2_transit_name(l2_transit_hypervisor_name,l2_transit_name) if (l1_transit_hypervisor_name == l2_transit_hypervisor_name): #connect l1 transit to l2 transit local try: hypervisor_arg = "hypervisor="+l1_transit_hypervisor_name hypervisors_data = hyp_utils.get_hypervisors_data() hypervisor_ip = hyp_utils.get_hyp_ip(l1_transit_hypervisor_name) network=raas_utils.get_new_veth_subnet('l1t_l2t') subnet = network.split('/') l1t_ip = str(ipaddress.ip_address(subnet[0])+1) + '/' + subnet[1] l2t_ip = str(ipaddress.ip_address(subnet[0])+2) + '/' + subnet[1] l1t_ip_arg = " ns1_ip=" + l1t_ip l2t_ip_arg = " ns2_ip=" + l2t_ip veth_1=" ve_ns1_ns2=c" + cid + "ve" + l1_transit_id.split('_')[1] + l2_transit_id.split('_')[1] veth_2=" ve_ns2_ns1=c" + cid + "ve" + l2_transit_id.split('_')[1] + l1_transit_id.split('_')[1] l2_transit_id_arg=" ns2="+l2_transit_id l1_transit_id_arg=" ns1="+l1_transit_id extra_vars = constants.ansible_become_pass + l1t_ip_arg + l2t_ip_arg + \ veth_1 + veth_2 + l1_transit_id_arg + l2_transit_id_arg + " " + hypervisor_arg raas_utils.run_playbook("ansible-playbook logic/misc/connect_ns_ns.yml -i logic/inventory/hosts.yml -v --extra-vars '"+extra_vars+"'")
hyp_utils.write_l1_transit_id(l1id+1, hypervisor) hyp_utils.hyp_add_l1_transit(hypervisor, l1_transit_name, l1_transit_name_ansible) raas_utils.client_add_l1_transit(hypervisor, l1_transit_name, l1_transit_capacity, str(self_as)) except Exception as e: raas_utils.log_service("create l1_transit failed deleting transit"+ str(e)) raas_utils.log_client("create l1_transit failed....aborting") raas_utils.run_playbook("ansible-playbook logic/misc/delete_container.yml -i logic/inventory/hosts.yml -v --extra-vars '"+extra_vars+"'") raise #configure transit try: t_name_arg = "t_name="+l1_transit_name_ansible t_loopback_ip = raas_utils.get_new_veth_subnet('loopbacks') t_loopback_ip_arg = "t_loopback_ip="+str(t_loopback_ip) network=raas_utils.get_new_veth_subnet('l1t_h') subnet = network.split('/') t_h_ip = str(ipaddress.ip_address(subnet[0])+1) + '/' + subnet[1] t_h_ip_arg = "t_h_ip="+t_h_ip h_t_ip = str(ipaddress.ip_address(subnet[0])+2) + '/' + subnet[1] h_t_ip_arg = "h_t_ip="+h_t_ip c_hyp_id = l1_transit_name_ansible.split('_')[0] t_hyp_id = l1_transit_name_ansible.split('_')[1] ve_t_h_arg = "ve_t_h=" + c_hyp_id + '_ve_' + t_hyp_id + '_h'
c_ram_arg = " c_ram="+"1G" #create container try: extra_vars = constants.ansible_become_pass + " " + \ leaf_name_hyp_arg + " " + hypervisor_arg + " " + c_vcpu_arg + c_ram_arg raas_utils.run_playbook("ansible-playbook logic/misc/create_container.yml -i logic/inventory/hosts.yml -v --extra-vars '"+extra_vars+"'") except Exception as e: raas_utils.log_client("Container creation failed......aborting") raas_utils.log_service("create container failed "+ str(e)) raise l_name_arg = "l_name=" + leaf_name_hyp t_loopback_ip = raas_utils.get_new_veth_subnet('loopbacks') t_loopback_ip_arg = "t_loopback_ip="+str(t_loopback_ip) extra_vars = constants.ansible_become_pass + " " + \ l_name_arg + " " + " " + l_br_arg + " " + \ hypervisor_arg + " " + t_loopback_ip_arg if (dhcp_flag): extra_vars += l_ip_arg + " " + dhcp_range_arg #create bridge (with or without dhcp decided by extra_vars) try: raas_utils.run_playbook("ansible-playbook logic/subnet/create_bridge.yml -i logic/inventory/hosts.yml -v --extra-vars '"+extra_vars+"'") except Exception as e: raas_utils.log_client("create bridge failed.....aborting") raas_utils.log_service("create bridge failed "+ str(e))
l1_transit_name = connection_data["l1_transit_name"] l1_transit_hypervisor_name = connection_data["l1_transit_hypervisor_name"] l1_transit_id = hyp_utils.get_hyp_l1_transit_name(l1_transit_hypervisor_name,l1_transit_name) l1_hypervisor_arg = " hypervisor=" + l1_transit_hypervisor_name l2_transit_name = connection_data["l2_transit_name"] l2_transit_hypervisor_name = connection_data["l2_transit_hypervisor_name"] l2_transit_id = hyp_utils.get_hyp_l2_transit_name(l2_transit_hypervisor_name,l2_transit_name) l2_hypervisor_arg = " hypervisor=" + l2_transit_hypervisor_name if (l1_transit_hypervisor_name == l2_transit_hypervisor_name): #connect l1 transit to l2 transit local try: network=raas_utils.get_new_veth_subnet('l1t_l2t') subnet = network.split('/') l1t_ip = str(ipaddress.ip_address(subnet[0])+1) + '/' + subnet[1] l2t_ip = str(ipaddress.ip_address(subnet[0])+2) + '/' + subnet[1] l1t_ip_arg = " ns1_ip=" + l1t_ip l2t_ip_arg = " ns2_ip=" + l2t_ip veth_1=" ve_ns1_ns2=c" + cid + "ve" + l1_transit_id.split('_')[1] + l2_transit_id.split('_')[1] veth_2=" ve_ns2_ns1=c" + cid + "ve" + l2_transit_id.split('_')[1] + l1_transit_id.split('_')[1] l2_transit_id_arg=" ns2="+l2_transit_id l1_transit_id_arg=" ns1="+l1_transit_id extra_vars = constants.ansible_become_pass + l1t_ip_arg + l2t_ip_arg + \ veth_1 + veth_2 + l1_transit_id_arg + l2_transit_id_arg + " " + l1_hypervisor_arg raas_utils.run_playbook("ansible-playbook logic/misc/connect_ns_ns.yml -i logic/inventory/hosts.yml -v --extra-vars '"+extra_vars+"'")
#connect to available spines try: spines_data = raas_utils.get_all_spines(vpc_name) #l_s_net,l_s_br,ve_l_s,ve_s_l,s_name,l_name,subnet_ip,subnet_range #e.g. c1_br_l1_s1,c1_net_l1_s1,c1_ve_l1_s1,c1_ve_s1_l1, spine_ips = [] ssh_common_args = " --ssh-common-args='-o ProxyCommand=\"ssh -i " + constants.ssh_file + " ece792@" + hypervisor_ip + " " +\ "-W %h:%p\"'" for spine in spines_data: spine_id = hyp_utils.get_hyp_spine_name( hypervisor, vpc_name, spine) network = raas_utils.get_new_veth_subnet('lns_spine') subnet = network.split('/') b_ip = str(ipaddress.ip_address(subnet[0]) + 1) + '/' + subnet[1] dhcp_range = str(ipaddress.ip_address(subnet[0])+2)+','+ \ str(ipaddress.ip_address(subnet[0])+6) net_name = vpc_id + "_net_l" + str(lid) + "_" + spine_id.split( '_')[2] l_s_net_arg = " l_s_net=" + net_name br_name = vpc_id + "_br_l" + str(lid) + "_" + spine_id.split( '_')[2] l_s_br_arg = " l_s_br=" + br_name ve_l_s = vpc_id + "_ve_l" + str(lid) + "_" + spine_id.split( '_')[2]