self_as = str(client_spine_data["self_as"]) self_as_arg = "self_as=" + self_as client_l1_transit_data = raas_utils.get_client_node_data( "l1_transit", l1_transit_name, vpc_name) ras = str(client_l1_transit_data["self_as"]) ras_arg = "ras=" + ras ve_spine_l1t = "c" + hyp_utils.get_client_id() + "_" + spine_name_hyp.split('_')[-2] + \ "ve" + \ l1_transit_name_hyp.split('_')[-1] + \ spine_name_hyp.split('_')[-1] print(ve_spine_l1t) l1_transit_ip_arg = "rip=" + raas_utils.get_ns_ip( hypervisor, l1_transit_name_hyp, ve_spine_l1t) try: extra_vars = constants.ansible_become_pass + " " + \ spine_name_hyp_arg + " " + self_as_arg +\ " " + hypervisor_arg + " " + advertise_arg + \ " " + l1_transit_ip_arg + " " + ras_arg rc = raas_utils.run_playbook( "ansible-playbook logic/bgp/conf_spine_bgp.yml -i logic/inventory/hosts.yml -vvvv --extra-vars '" + extra_vars + "'") if (rc != 0): raas_utils.log_service("bgp advertisement failed") raise raas_utils.write_client_spine_data(spine_type, spine_name, vpc_name,
weight = weight_data["weight"] weight_arg = "bgp_weight=" + weight client_node_data = raas_utils.get_client_node_data(path_choice_type, path_choice_name, vpc_name) raas_utils.log_service(client_node_data) self_as = str(client_node_data["self_as"]) self_as_arg = "self_as=" + self_as ve_ns1_ns2 = "c" + hyp_utils.get_client_id() + \ "ve" + \ path_choice_name_hyp.split('_')[-1] + \ node_name_hyp.split('_')[-1] path_choice_ip_arg = "neighbor_ip=" + raas_utils.get_ns_ip( hypervisor, path_choice_name_hyp, ve_ns1_ns2) try: extra_vars = constants.ansible_become_pass + " " + \ node_name_hyp_arg + " " + self_as_arg +\ " " + hypervisor_arg + " " + weight_arg + \ " " + path_choice_ip_arg raas_utils.log_service( "ansible-playbook logic/bgp/bgp_set_weight.yml -i logic/inventory/hosts.yml -v --extra-vars '" + extra_vars + "'") rc = raas_utils.run_playbook( "ansible-playbook logic/bgp/bgp_set_weight.yml -i logic/inventory/hosts.yml -v --extra-vars '" + extra_vars + "'") if (rc != 0): raas_utils.log_service("bgp set weight failed")
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" extra_vars = constants.ansible_become_pass + l1_hypervisor_arg + leaf1_id_arg + l_local_ip_arg + l_remote_ip_arg + vxlan_tunnel_name_arg + br_name_arg raas_utils.run_playbook( "ansible-playbook logic/subnet/add_vxlan_to_leaf.yml -i logic/inventory/hosts.yml -v --extra-vars '"
l_name_arg=" ns1="+leaf_name_hyp s_name_arg=" ns2="+spine_id extra_vars = constants.ansible_become_pass + l_ip_arg + s_ip_arg + \ ve_l_s_arg + ve_s_l_arg + s_name_arg + l_name_arg + \ " " + hypervisor_arg raas_utils.run_shell_script("ansible-playbook logic/misc/connect_ns_ns.yml -i logic/inventory/hosts.yml -v --extra-vars '"+extra_vars+"'") #update reserved_ip new_subnet=str(ipaddress.ip_address(subnet[0])+8) + '/' + subnet[1] raas_utils.update_veth_subnet('lns_spine',new_subnet) spine_ip=raas_utils.get_ns_ip(hypervisor,spine_id, ve_s_l) spine_ips.append(spine_ip) leaf_ip=raas_utils.get_ns_ip(hypervisor,leaf_name_hyp,ve_l_s) ns_name_arg=" ns_name="+spine_id #Add route for leaf on spine only if dhcp_flag is true if (dhcp_flag): route_cmd_arg=" route_cmd=\"add "+network_id+ " via "+leaf_ip+"\"" extra_vars=constants.ansible_become_pass+ns_name_arg+route_cmd_arg+ " " + hypervisor_arg raas_utils.run_shell_script("ansible-playbook logic/misc/add_route_ns.yml -i logic/inventory/hosts.yml -v --extra-vars '"+extra_vars+"'") route_cmd_arg = " route_cmd= \"add "+t_loopback_ip+" via " + leaf_ip+"\"" extra_vars=constants.ansible_become_pass+ns_name_arg+route_cmd_arg+ " " + hypervisor_arg raas_utils.run_playbook("ansible-playbook logic/misc/add_route_ns.yml -i logic/inventory/hosts.yml -v --extra-vars '"+extra_vars+"'")
new_subnet=str(ipaddress.ip_address(subnet[0])+8) + '/' + subnet[1] raas_utils.update_veth_subnet('l1t_l2t',new_subnet) except Exception as e: raas_utils.log_service("l1 transit to l2 transit local failed"+str(e)) else: #connect l1 transit to l2 transit remote try: #c1_ve_h_l2t2 gre_tunnel_name_arg=" gre_tunnel_name=gretun26" loopback_net=raas_utils.get_new_veth_subnet('loopbacks').split('/') grep_lo_net=".".join(loopback_net[0].split('.')[0:-1]) veth_l1="c"+cid+"_ve_h_"+l1_transit_id.split('_')[1] l1_transit_ip=raas_utils.get_hv_ip(l1_transit_hypervisor_name,veth_l1).split('/')[0] l1_transit_lo_ip=raas_utils.get_ns_ip(l1_transit_hypervisor_name,l1_transit_id,grep_lo_net)+'/'+loopback_net[1] veth_l2="c"+cid+"_ve_h_"+l2_transit_id.split('_')[1] l2_transit_ip=raas_utils.get_hv_ip(l2_transit_hypervisor_name,veth_l2).split('/')[0] l2_transit_lo_ip=raas_utils.get_ns_ip(l2_transit_hypervisor_name,l2_transit_id,grep_lo_net)+'/'+loopback_net[1] try: # Configure GRE on Level 1 Transit l1_transit_id_arg=" t_name=" + l1_transit_id l1_t_local_ip_arg=" local_transit_ip=" + l1_transit_ip l2_t_remote_ip_arg=" remote_transit_ip=" + l2_transit_ip l2_transit_lo_ip_arg=" remote_subnet=" + l2_transit_lo_ip extra_vars = constants.ansible_become_pass + l1_hypervisor_arg + l1_transit_id_arg + l1_t_local_ip_arg + l2_t_remote_ip_arg + l2_transit_lo_ip_arg + gre_tunnel_name_arg raas_utils.run_playbook("ansible-playbook logic/transit/connect_transit_transit_remote.yml -i logic/inventory/hosts.yml -v --extra-vars '" + extra_vars + "'")
extra_vars = constants.ansible_become_pass + l_s_net_arg + l_s_br_arg + ve_l_s_arg + ve_s_l_arg + s_name_arg + l_name_arg + subnet_ip_arg + subnet_range_arg + " " + hypervisor_arg raas_utils.run_shell_script( "ansible-playbook logic/subnet/connect_leaf_spine.yml -i logic/inventory/hosts.yml -v --extra-vars '" + extra_vars + "'") #update reserved_ip new_subnet = str(ipaddress.ip_address(subnet[0]) + 8) + '/' + subnet[1] raas_utils.update_veth_subnet('lns_spine', new_subnet) #Add route for leaf on spine spine_ip = raas_utils.get_vm_ip(hypervisor, spine_id, net_name) spine_ips.append(spine_ip) leaf_ip = raas_utils.get_ns_ip(hypervisor, leaf_name_hyp, ve_l_s) mgmt_spine_ip = raas_utils.get_vm_ip(hypervisor, spine_id, "c" + str(cid) + "_m_net") mgmt_spine_ip_arg = " vm_ip=" + mgmt_spine_ip route_cmd_arg = " route_cmd=\"add " + network_id + " via " + leaf_ip + "\"" extra_vars = constants.ansible_become_pass + mgmt_spine_ip_arg + route_cmd_arg raas_utils.run_shell_script( "ansible-playbook logic/misc/add_route.yml -i \"" + mgmt_spine_ip + ",\" -v --extra-vars '" + extra_vars + "'" + ssh_common_args) route_weight = "add default scope global" for curr_ip in spine_ips: route_weight += " nexthop via " + curr_ip + " weight 1" route_weight = '"' + route_weight + '"'