Commit 3a2cbc91 authored by Pablo Armingol's avatar Pablo Armingol
Browse files

L3NM OpenConfig changes

parent cea1c8ab
Loading
Loading
Loading
Loading
+93 −30
Original line number Diff line number Diff line
@@ -35,10 +35,8 @@ def setup_config_rules(
    mtu                 = 3000   # 1512
    #address_families    = json_settings.get('address_families',    []   )    # ['IPV4']
    bgp_as              = json_settings.get('bgp_as',              65000    )    # 65000
    bgp_route_target    = json_settings.get('bgp_route_target',    '65000:123')    # 65000:333

    route_distinguisher = json_settings.get('route_distinguisher', '0:0'    )  # '60001:801'
    router_id           = json_endpoint_settings.get('router_id',           '0.0.0.0')  # '10.95.0.10'
    route_distinguisher = json_endpoint_settings.get('route_distinguisher', '0:0'    )  # '60001:801'
    vlan_id             = json_endpoint_settings.get('vlan_id',             1        )  # 400
    address_ip          = json_endpoint_settings.get('address_ip',          '0.0.0.0')  # '2.2.2.1'
    address_prefix      = json_endpoint_settings.get('address_prefix',      24       )  # 30
@@ -48,6 +46,7 @@ def setup_config_rules(
    if_subif_name       = '{:s}.{:d}'.format(endpoint_uuid, vlan_id)

    json_config_rules = [
        #Create network instance
        json_config_rule_set(
            '/network_instance[{:s}]'.format(network_instance_name), {
                'name': network_instance_name, 
@@ -55,6 +54,7 @@ def setup_config_rules(
                'type': 'L3VRF',
                'route_distinguisher': route_distinguisher,
        }),
        #Add BGP protocol to network instance
        json_config_rule_set(
            '/network_instance[{:s}]/protocols[BGP]'.format(network_instance_name), {
                'name': network_instance_name, 
@@ -63,12 +63,14 @@ def setup_config_rules(
                'as': bgp_as,
                'router_id': router_id, 
        }),
        #Add DIRECTLY CONNECTED protocol to network instance
        json_config_rule_set(
            '/network_instance[{:s}]/protocols[DIRECTLY_CONNECTED]'.format(network_instance_name), {
                'name': network_instance_name, 
                'identifier': 'DIRECTLY_CONNECTED', 
                'protocol_name': 'DIRECTLY_CONNECTED',
        }),
        #Create interface with subinterface
        json_config_rule_set(
            '/interface[{:s}]/subinterface[0]'.format(if_subif_name), {
                'name': if_subif_name, 
@@ -80,6 +82,7 @@ def setup_config_rules(
                'address_ip': address_ip, 
                'address_prefix': address_prefix,
        }),
        #Associate interface to network instance
        json_config_rule_set(
            '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, if_subif_name), {
                'name': network_instance_name, 
@@ -87,6 +90,49 @@ def setup_config_rules(
                'interface': if_subif_name,
                'subinterface': 0,
        }), 
        #Create routing policy
        json_config_rule_set('/routing_policy/bgp_defined_set[{:s}_rt_import][{:s}]'.format(
            policy_import,route_distinguisher),{
            'ext_community_set_name': 'set_{:s}'.format(policy_import),
            'ext_community_member'  : route_distinguisher,
        }),
        json_config_rule_set(
            '/routing_policy/policy_definition[{:s}_import]/statement[{:s}]'.format(
                policy_import, policy_import),{
            'policy_name'           : policy_import,
            'statement_name'        : 'stm_{:s}'.format(policy_import),
            'ext_community_set_name': 'set_{:s}'.format(policy_import),
            'policy_result'         : 'ACCEPT_ROUTE',
        }),
        #Associate routing policy to network instance
        json_config_rule_set(
            '/network_instance[{:s}]/inter_instance_policies[{:s}]'.format(
                network_instance_name, policy_import),{
            'name'         : network_instance_name,
            'import_policy': policy_import,
        }), 
        #Create routing policy
        json_config_rule_set('/routing_policy/bgp_defined_set[{:s}_rt_export][{:s}]'.format(
            policy_export,route_distinguisher),{
            'ext_community_set_name': 'set_{:s}'.format(policy_export),
            'ext_community_member'  : route_distinguisher,
        }),
        json_config_rule_set(
            '/routing_policy/policy_definition[{:s}_export]/statement[{:s}]'.format(
                policy_export, policy_export),{
            'policy_name'           : policy_export,
            'statement_name'        : 'stm_{:s}'.format(policy_export),
            'ext_community_set_name': 'set_{:s}'.format(policy_export),
            'policy_result'         : 'ACCEPT_ROUTE',
        }),
        #Associate routing policy to network instance
        json_config_rule_set(
            '/network_instance[{:s}]/inter_instance_policies[{:s}]'.format(
                network_instance_name, policy_export),{
            'name'         : network_instance_name,
            'export_policy': policy_export,
        }),
        #Create table connections
        json_config_rule_set(
            '/network_instance[{:s}]/table_connections[DIRECTLY_CONNECTED][BGP][IPV4]'.format(
                network_instance_name), {
@@ -110,41 +156,58 @@ def teardown_config_rules(

    service_short_uuid        = service_uuid.split('-')[-1]
    network_instance_name     = '{:s}-NetInst'.format(service_short_uuid)
    route_distinguisher = json_settings.get('route_distinguisher', '0:0'    )  # '60001:801'
    vlan_id             = json_endpoint_settings.get('vlan_id',             1        )  # 400
    policy_import       = json_endpoint_settings.get('policy_1',      '2'              )  # 2
    policy_export       = json_endpoint_settings.get('policy_2',      '7'              )  # 30
    if_subif_name       = '{:s}.{:d}'.format(endpoint_uuid, vlan_id)
    #network_interface_desc    = '{:s}-NetIf'.format(service_uuid)
    #network_subinterface_desc = '{:s}-NetSubIf'.format(service_uuid)

    #mtu                 = json_settings.get('mtu',                 3000 )    # 1512
    #mtu                 = 3000   # 1512
    #address_families    = json_settings.get('address_families',    []   )    # ['IPV4']
    #bgp_as              = json_settings.get('bgp_as',              65000    )    # 65000
    bgp_route_target    = json_settings.get('bgp_route_target',    '65000:123')    # 65000:333

    #router_id           = json_endpoint_settings.get('router_id',           '0.0.0.0')  # '10.95.0.10'
    #route_distinguisher = json_endpoint_settings.get('route_distinguisher', '0:0'    )  # '60001:801'
    vlan_id             = json_endpoint_settings.get('vlan_id',             1        )  # 400
    #address_ip          = json_endpoint_settings.get('address_ip',          '0.0.0.0')  # '2.2.2.1'
    #address_prefix      = json_endpoint_settings.get('address_prefix',      24       )  # 30
    policy_import       = json_endpoint_settings.get('policy_1',      '2'              )  # 2
    policy_export       = json_endpoint_settings.get('policy_2',      '7'              )  # 30

    if_subif_name       = '{:s}.{:d}'.format(endpoint_uuid, vlan_id)


    json_config_rules = [
        # json_config_rule_delete(
        #     '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, if_subif_name), {
        #         'name': network_instance_name, 
        #         'id': if_subif_name, 
        #         'interface': if_subif_name,
        #         'subinterface': 0,
        # }), 
    #Delete table connections
    json_config_rule_delete(
            '/interface[{:s}]'.format(if_subif_name), {
        '/network_instance[{:s}]/table_connections[DIRECTLY_CONNECTED][BGP][IPV4]'.format(network_instance_name),{
        'name'          : network_instance_name, 
        'src_protocol'  : 'DIRECTLY_CONNECTED',
        'dst_protocol'  : 'BGP',
        'address_family': 'IPV4', 
    }),
    #Delete routing policy 
    json_config_rule_delete(
            '/routing_policy/policy_definition[{:s}_export]/statement[{:s}]'.format(
                policy_export, policy_export),{
            'policy_name'           : policy_export,
        }),
    json_config_rule_delete('/routing_policy/bgp_defined_set[{:s}_rt_export][{:s}]'.format(
        policy_export,route_distinguisher),{
            'ext_community_set_name': 'set_{:s}'.format(policy_export),
        }),
    #Delete routing policy 
    json_config_rule_delete(
            '/routing_policy/policy_definition[{:s}_import]/statement[{:s}]'.format(
                policy_import, policy_import),{
            'policy_name'           : policy_import,
        }),
    json_config_rule_delete('/routing_policy/bgp_defined_set[{:s}_rt_import][{:s}]'.format(
        policy_import,route_distinguisher),{
            'ext_community_set_name': 'set_{:s}'.format(policy_import),
        }),
    #Delete interface
    json_config_rule_delete('/interface[{:s}]'.format(if_subif_name),
    {
        'name': if_subif_name,
    }), 
        # json_config_rule_delete(
        #     '/network_instance[{:s}]'.format(network_instance_name), {
        #         'name': network_instance_name
        # }),
        
    #Delete network instance 
    json_config_rule_delete('/network_instance[{:s}]'.format(network_instance_name),
    {
        'name': network_instance_name
    }),
    ]
    return json_config_rules
+4 −6
Original line number Diff line number Diff line
@@ -268,7 +268,6 @@ class RequestGenerator:
            vlan_id = num_request % 100 +100
            x= num_request % 255
            y= num_request % 25 *  num_request % 10
            bgp_route_target = '{:5d}:{:03d}'.format(bgp_as, vlan_id)
            route_distinguisher = '{:5d}:{:03d}'.format(bgp_as, vlan_id)
            src_router_id = ROUTER_ID.get(src_device_uuid)
            src_router_num = int(src_device_uuid.replace('R', ''))
@@ -278,17 +277,17 @@ class RequestGenerator:
            if dst_router_id is None: dst_router_id = '10.0.0.{:d}'.format(dst_router_num)
            src_address_ip = '10.{:d}.{:d}.{:d}'.format(x,y,int(src_device_uuid.replace('R', '')))
            dst_address_ip = '10.{:d}.{:d}.{:d}'.format(y,x,int(dst_device_uuid.replace('R', '')))
            policy_R1 = vlan_id = num_request % 100
            policy_R2 = vlan_id = num_request % 100 +1
            policy_R1 = 'srv_{:d}_a'.format(vlan_id)
            policy_R2 = 'srv_{:d}_b'.format(vlan_id)

            config_rules = [
                json_config_rule_set('/settings', {
                    'bgp_as'          : bgp_as,
                    'bgp_route_target': bgp_route_target,
                    'route_distinguisher': route_distinguisher,

                }),
                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(src_device_uuid, src_endpoint_uuid), {
                    'router_id'          : src_router_id,
                    'route_distinguisher': route_distinguisher,
                    'vlan_id'            : vlan_id,
                    'address_ip'         : src_address_ip,
                    'address_prefix'     : 16,
@@ -298,7 +297,6 @@ class RequestGenerator:
                }),
                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(dst_device_uuid, dst_endpoint_uuid), {
                    'router_id'          : dst_router_id,
                    'route_distinguisher': route_distinguisher,
                    'vlan_id'            : vlan_id,
                    'address_ip'         : dst_address_ip,
                    'address_prefix'     : 16,