示例#1
0
    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,
示例#2
0
    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 '"
示例#4
0
              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 + "'") 
示例#6
0
                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 + '"'