Commit 447601fb authored by Mohamad Rahhal's avatar Mohamad Rahhal
Browse files

Logical_Resources component :

- Added more Configuration Fields
parent 1a402455
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -29,7 +29,20 @@ string ip_address = 3;
uint32 vlan_tag = 4;
string mac_address = 5;
uint32 asn = 6;
string router_id = 7; }
string router_id = 7;
uint32 vni = 8;
string local_address = 9;
uint32 port = 10;
string bridge = 11;
string interface = 12;
string remote_address = 13;
uint32 remote_as = 14;
string local_role = 15;
string routing_table = 16;
bool multihop = 17;
string afi = 18;
string name = 19;
}

message DeviceId {
    string device_uuid = 1;} 
+20 −5
Original line number Diff line number Diff line
@@ -4,16 +4,31 @@ class Database:
        "Creating the database to store things"
        self.database = {}

    def add_device(self, device_uuid, endpoint_uuid, ip_address, vlan_tag, mac_address, ASN, RouterID):
    def add_device(self, device_uuid, endpoint_uuid, ip_address, vlan_tag, mac_address, ASN, RouterID,
                   vni=None, local_address=None, port=None, bridge=None, interface=None, remote_address=None,
                   remote_as=None, local_role=None, routing_table=None, multihop=None, afi=None, name=None):
        if device_uuid not in self.database:
            self.database[device_uuid] = {}

        if endpoint_uuid not in self.database[device_uuid]:
            self.database[device_uuid][endpoint_uuid] = {"mac_address": mac_address,
            self.database[device_uuid][endpoint_uuid] = {
                "mac_address": mac_address,
                "ip_addresses": [],
                "vlan_tags": [],
                "asn": ASN,
                "router_id": RouterID 
                "router_id": RouterID,
                "vni": vni,
                "local_address": local_address,
                "port": port,
                "bridge": bridge,
                "interface": interface,
                "remote_address": remote_address,
                "remote_as": remote_as,
                "local_role": local_role,
                "routing_table": routing_table,
                "multihop": multihop,
                "afi": afi,
                "name": name
            }
        if ip_address:
            self.database[device_uuid][endpoint_uuid]["ip_addresses"].append(ip_address)
+35 −11
Original line number Diff line number Diff line
@@ -23,7 +23,19 @@ class LogicalResourceServicerImpl(LogicalResourcesServicer):
            request.vlan_tag,
            request.mac_address,
            request.asn,
            request.router_id
            request.router_id,
            request.vni,
            request.local_address,
            request.port,
            request.bridge,
            request.interface,
            request.remote_address,
            request.remote_as,
            request.local_role,
            request.routing_table,
            request.multihop,
            request.afi,
            request.name
        )
        return Response(success=True, message="Device added to Logical Database")

@@ -38,11 +50,23 @@ class LogicalResourceServicerImpl(LogicalResourcesServicer):
                dev_eps.endpoints[ep_uuid].CopyFrom(DeviceConfig(
                    device_uuid=dev_uuid,
                    endpoint_uuid=ep_uuid,
                    ip_address=config['ip_addresses'][0] if config['ip_addresses'] else "",
                    vlan_tag=config['vlan_tags'][0] if config['vlan_tags'] else 0,
                    mac_address=config['mac_address'] if config['mac_address'] else "",
                    asn=config['asn'] if config['asn'] else 0,
                    router_id=config['router_id'] if config['router_id'] else ""
                    ip_address=config['ip_addresses'][0] if config.get('ip_addresses') and config['ip_addresses'] else "",
                    vlan_tag=config['vlan_tags'][0] if config.get('vlan_tags') and config['vlan_tags'] else 0,
                    mac_address=config.get('mac_address', "") or "",
                    asn=config.get('asn', 0) or 0,
                    router_id=config.get('router_id', "") or "",
                    vni=config.get('vni', 0) or 0,
                    local_address=config.get('local_address', "") or "",
                    port=config.get('port', 0) or 0,
                    bridge=config.get('bridge', "") or "",
                    interface=config.get('interface', "") or "",
                    remote_address=config.get('remote_address', "") or "",
                    remote_as=config.get('remote_as', 0) or 0,
                    local_role=config.get('local_role', "") or "",
                    routing_table=config.get('routing_table', "") or "",
                    multihop=config.get('multihop', False) or False,
                    afi=config.get('afi', "") or "",
                    name=config.get('name', "") or ""
                ))
            reply.devices[dev_uuid].CopyFrom(dev_eps)

+36 −0
Original line number Diff line number Diff line
@@ -32,6 +32,18 @@ def test_add(logical_resource_client : LogicalResourceClient, logical_resource_s
    add_request.mac_address = "AA:BB:CC:DD:EE:FF"
    add_request.asn = 65001
    add_request.router_id = "1.1.1.1"
    add_request.vni = 10
    add_request.local_address = "192.168.1.1"
    add_request.port = 4789
    add_request.bridge = "br-dataplane"
    add_request.interface = "vxlan10"
    add_request.remote_address = "10.0.0.2"
    add_request.remote_as = 65002
    add_request.local_role = "ebgp"
    add_request.routing_table = "vrf-dataplane"
    add_request.multihop = True
    add_request.afi = "ip,l2vpn"
    add_request.name = "test-device"
    add_reply = logical_resource_client.AddDevice(add_request)
    assert add_reply.success == True
    
@@ -52,6 +64,18 @@ def test_get_database(logical_resource_client : LogicalResourceClient, logical_r
    add_request.mac_address = "AA:BB:CC:DD:EE:01"
    add_request.asn = 65002
    add_request.router_id = "2.2.2.2"
    add_request.vni = 20
    add_request.local_address = "192.168.2.1"
    add_request.port = 4790
    add_request.bridge = "br-dataplane2"
    add_request.interface = "vxlan20"
    add_request.remote_address = "10.0.0.3"
    add_request.remote_as = 65003
    add_request.local_role = "ibgp"
    add_request.routing_table = "vrf-dataplane2"
    add_request.multihop = False
    add_request.afi = "ip"
    add_request.name = "test-device2"
    add_reply = logical_resource_client.AddDevice(add_request)
    assert add_reply.success is True

@@ -68,6 +92,18 @@ def test_get_database(logical_resource_client : LogicalResourceClient, logical_r
    assert endpoint_cfg.mac_address == "AA:BB:CC:DD:EE:01"
    assert endpoint_cfg.asn == 65002
    assert endpoint_cfg.router_id == "2.2.2.2"
    assert endpoint_cfg.vni == 20
    assert endpoint_cfg.local_address == "192.168.2.1"
    assert endpoint_cfg.port == 4790
    assert endpoint_cfg.bridge == "br-dataplane2"
    assert endpoint_cfg.interface == "vxlan20"
    assert endpoint_cfg.remote_address == "10.0.0.3"
    assert endpoint_cfg.remote_as == 65003
    assert endpoint_cfg.local_role == "ibgp"
    assert endpoint_cfg.routing_table == "vrf-dataplane2"
    assert endpoint_cfg.multihop == False
    assert endpoint_cfg.afi == "ip"
    assert endpoint_cfg.name == "test-device2"
    # to print what is stored in the datbase after the get operation
    import json
    stored_data = logical_resource_service.servicer_impl.db.get_full_db()