Commit 6ef97daa authored by Pablo Armingol's avatar Pablo Armingol
Browse files

Refactor IPoWDM service configuration and update request handling in tools.py;...

Refactor IPoWDM service configuration and update request handling in tools.py; streamline home.html header
parent 168b56ca
Loading
Loading
Loading
Loading
+16 −73
Original line number Diff line number Diff line
@@ -2,85 +2,28 @@
    "services": [
        {
            "service_id": {
                "context_id": {
                    "context_uuid": {
                        "uuid": "admin"
                    }
                },
                "service_uuid": {
                    "uuid": "8078f62d-91f4-55fa-81dd-de369e414be8"
                }
                "context_id": {"context_uuid": {"uuid": "admin"}},
                "service_uuid": {"uuid": "IPoWDM"}
            },
            "service_type": 12,
            "service_status": {
                "service_status": 1
            },
            "service_status": {"service_status": 1},
            "service_endpoint_ids": [
                {
                    "device_id": {
                        "device_uuid": {
                            "uuid": "IP1"
                        }
                    },
                    "endpoint_uuid": {
                        "uuid": "PORT-xe4"
                    }
                },
                {
                    "device_id": {
                        "device_uuid": {
                            "uuid": "IP2"
                        }
                    },
                    "endpoint_uuid": {
                        "uuid": "PORT-xe4"
                    }
                }
                {"device_id": {"device_uuid": {"uuid": "IP1"}},"endpoint_uuid": {"uuid": "PORT-xe4"}},
                {"device_id": {"device_uuid": {"uuid": "IP2"}},"endpoint_uuid": {"uuid": "PORT-xe4"}}
            ],
            "service_constraints": [],
            "service_config": {
                "config_rules": [
                    {
                        "action": 1,
                        "ipowdm": {
            "service_config": {"config_rules": [
                {"action": 1, "ipowdm": {
                    "endpoint_id": {
                                "device_id": {
                                    "device_uuid": {
                                        "uuid": "IP1"
                                    }
                                },
                                "endpoint_uuid": {
                                    "uuid": "PORT-xe4"
                                }
                        "device_id": {"device_uuid": {"uuid": "IP1"}},
                        "endpoint_uuid": {"uuid": "PORT-xe4"}
                    },
                    "rule_set": {
                                "src": [
                                    {
                                        "uuid": "Phoenix-1",
                                        "ip_address": "10.10.1.1",
                                        "ip_mask": "/24",
                                        "vlan_id": 100,
                                        "power": 0,
                                        "frequency": 194700
                                    }
                                ],
                                "dst": [
                                    {
                                        "uuid": "Phoenix-2",
                                        "ip_address": "10.10.2.1",
                                        "ip_mask": "/24",
                                        "vlan_id": 100,
                                        "power": 0,
                                        "frequency": 194700
                                    }
                                ],
                                "bw": 100,
                                "uuid": "95876830-8396-5241-9bbd-7bfa248232e7"
                            }
                        }
                    }
                ]
                        "src"  : [],
                        "dst"  : []
                    }
                }}
            ]}
        }
    ]
}
 No newline at end of file
+44 −48
Original line number Diff line number Diff line
@@ -46,57 +46,53 @@ def create_request(resource_value):
        with open(json_path, 'r', encoding='utf-8') as f:
            template = json.load(f)

        # rule_set = resource_value[1]['rule_set']
        rule_set = resource_value[1]['rule_set']

        service_uuid = rule_set["uuid"]
        bandwidth    = rule_set["bw"]

        src_router_id  = rule_set["src"][0]["uuid"]
        src_ip_address = rule_set["src"][0]["ip_address"]
        src_ip_mask    = rule_set["src"][0]["ip_mask"]
        src_vlan_id    = rule_set["src"][0]["vlan_id"]
        src_frequency  = rule_set["src"][0]["frequency"]
        src_power      = rule_set["src"][0]["power"]

        dst_router_id  = rule_set["dst"][0]["uuid"]
        dst_ip_address = rule_set["dst"][0]["ip_address"]
        dst_ip_mask    = rule_set["dst"][0]["ip_mask"]
        dst_vlan_id    = rule_set["dst"][0]["vlan_id"]
        dst_frequency  = rule_set["dst"][0]["frequency"]
        dst_power      = rule_set["dst"][0]["power"]


        template["services"][0]["service_id"]["service_uuid"]["uuid"] = service_uuid
        config_rules = template["services"][0]["service_config"]["config_rules"][0]
        src = config_rules["ipowdm"]["rule_set"]["src"]
        src.append({
            'uuid': src_router_id,
            'ip_address': src_ip_address,
            'ip_mask': src_ip_mask,
            'vlan_id': src_vlan_id,
            'power': src_power,
            'frequency': src_frequency
        })

        dst = config_rules["ipowdm"]["rule_set"]["dst"]
        dst.append({
            'uuid': dst_router_id,
            'ip_address': dst_ip_address,
            'ip_mask': dst_ip_mask,
            'vlan_id': dst_vlan_id,
            'power': dst_power,
            'frequency': dst_frequency
        })

        config_rules["ipowdm"]["rule_set"]["bw"]        = bandwidth
        config_rules["ipowdm"]["rule_set"]["uuid"]      = service_uuid

        # service = template["services"][0]

        # # service_id
        # service["service_id"]["service_uuid"]["uuid"] = rule_set["uuid"]

        # # endpoints
        # service_endpoints = service["service_endpoint_ids"]

        # src = rule_set["src"][0]
        # service_endpoints[0]["device_id"]["device_uuid"]["uuid"] = src["uuid"]
        # service_endpoints[0]["endpoint_uuid"]["uuid"] = "mgmt"

        # dst = rule_set["dst"][0]
        # service_endpoints[1]["device_id"]["device_uuid"]["uuid"] = dst["uuid"]
        # service_endpoints[1]["endpoint_uuid"]["uuid"] = "mgmt"

        # config_rules = service["service_config"]["config_rules"]

        # # rule 1 - source
        # config_rules[0]["action"] = 1
        # config_rules[0]["activate_transceiver"]["endpoint_id"]["device_id"]["device_uuid"]["uuid"] = src["uuid"]
        # config_rules[0]["activate_transceiver"]["endpoint_id"]["endpoint_uuid"]["uuid"] = "mgmt"

        # config_rules[0]["activate_transceiver"]["rule_set"]["ip"]    = src["ip_address"]
        # config_rules[0]["activate_transceiver"]["rule_set"]["mask"]  = src["ip_mask"]
        # config_rules[0]["activate_transceiver"]["rule_set"]["vlan"]  = src["vlan_id"]
        # config_rules[0]["activate_transceiver"]["rule_set"]["bw"]    = rule_set["bw"]
        # config_rules[0]["activate_transceiver"]["rule_set"]["power"] = src.get("power", 0)
        # config_rules[0]["activate_transceiver"]["rule_set"]["uuid"]  = rule_set["uuid"]
        # config_rules[0]["activate_transceiver"]["rule_set"]["frequency"] = src.get("frequency", 0)

        # LOGGER.info("Sending POST SOURCE request with payload: %s", json.dumps(template, indent=2))

        # # rule 2 - destination
        # config_rules[0]["action"] = 1
        # config_rules[0]["activate_transceiver"]["endpoint_id"]["device_id"]["device_uuid"]["uuid"] = dst["uuid"]
        # config_rules[0]["activate_transceiver"]["endpoint_id"]["endpoint_uuid"]["uuid"] = "mgmt"

        # config_rules[0]["activate_transceiver"]["rule_set"]["ip"]    = dst["ip_address"]
        # config_rules[0]["activate_transceiver"]["rule_set"]["mask"]  = dst["ip_mask"]
        # config_rules[0]["activate_transceiver"]["rule_set"]["vlan"]  = dst["vlan_id"]
        # config_rules[0]["activate_transceiver"]["rule_set"]["bw"]    = rule_set["bw"]
        # config_rules[0]["activate_transceiver"]["rule_set"]["power"] = dst.get("power", 0)
        # config_rules[0]["activate_transceiver"]["rule_set"]["uuid"]  = rule_set["uuid"]
        # config_rules[0]["activate_transceiver"]["rule_set"]["frequency"] = dst.get("frequency", 0)

        LOGGER.info("Sending POST DSTINATION request with payload: %s", json.dumps(template, indent=2))
        response = tfs_post(template)
        # response = FakeResponse()

        return response

+3 −15
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ LOGGER = logging.getLogger(__name__)
""" Create and send HTTP request based on a JSON template and provided resource value.
    The JSON template is expected to be in the same directory as this script, named 'lsp.json'."""
def create_request(resource_value):
    LOGGER.info("Creating request lsp for resource_value: %s", resource_value)
    LOGGER.info("Creating request tapi- lsp for resource_value: %s", resource_value)
    try:
        BaseDir = os.path.dirname(os.path.abspath(__file__))
        json_path = os.path.join(BaseDir, 'lsp.json')
@@ -56,7 +56,6 @@ def create_request(resource_value):
        spectrum["frequency-constraint"]["grid-type"] = rule_set["grid_type"]

        tenant = rule_set["tenant_uuid"]
        LOGGER.debug("Entra en DST")

        # dst - end-point
        ep1 = svc["end-point"][1]
@@ -66,25 +65,14 @@ def create_request(resource_value):
        ep1["layer-protocol-qualifier"] = rule_set["layer_protocol_qualifier"]
        ep1["local-id"] = rule_set["dst"]

        url = f"http://11.1.1.101:4901/{tenant}/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context"
        url = f"http://11.1.1.101:4900/{tenant}/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context"
        headers = {
            "Content-Type": "application/json",
            "Accept": "application/json"
        }
        LOGGER.info("Sending POST request to %s with payload: %s", url, json.dumps(template))
        # response = requests.post(url, headers=headers, json=template, timeout=10)

        response = FakeResponse()
        response = requests.post(url, headers=headers, json=template, timeout=10)
        return response

    except (OSError, json.JSONDecodeError, requests.RequestException) as e:
        LOGGER.error("Error creating request: %s", str(e))
class FakeResponse:
    def __init__(self):
        self.ok = True
        self.status_code = 200
        self.text = '{"message": "OK"}'
    def json(self):
        return {"message": "OK"}
+5 −10
Original line number Diff line number Diff line
@@ -39,16 +39,13 @@ class E2EInfoDelete(Resource):
            delete_media_channel_id = allocationId.split(':')[-1]
            allocationId = allocationId.split('=')[1].split(':')[0]
            url = f'http://11.1.1.101:4900/{allocationId}/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={delete_media_channel_id}'
            LOGGER.info("DELETE URL: %s", url)
            response = requests.delete(url, timeout=10)
            LOGGER.info(f"RESPUESTA : {response}")
            allocationId = delete_media_channel_id
            requests.delete(url, timeout=10)
        elif service_type == 'IPoWDM':
            LOGGER.info("Deleting IPoWDM service with allocationId: %s", allocationId)
            data = allocationId.split(':')[-1]
            aux = allocationId
            allocationId = allocationId.split('=')[1].split(':')[0]
            url = f'http://10.95.86.62/restconf/E2E/v1/service/ipowdm={allocationId}'
            LOGGER.info("DELETE URL: %s", url)
            # response = requests.delete(url, timeout=10)
            url = f'http://10.95.86.62/restconf/E2E/v1/service/{aux}'
            requests.delete(url, timeout=10)
        else:
            LOGGER.error("Unknown service type for allocationId: %s", allocationId)
            return {
@@ -57,8 +54,6 @@ class E2EInfoDelete(Resource):
            }, 400


        LOGGER.info("Mock DELETE request sent to URL: %s", url)
        LOGGER.info("Allocation ID: %s", allocationId)
        service_id = grpc_service_id(DEFAULT_CONTEXT_NAME, allocationId)
        self.service_client.DeleteService(service_id)

+1 −1
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
{% extends 'base.html' %}

{% block content %}
    <h2>ETSI TeraFlowSDN Controller (End-to-End)</h2>
    <h2>ETSI TeraFlowSDN Controller</h2>

    {% for field, message in context_topology_form.errors.items() %}
        <div class="alert alert-dismissible fade show" role="alert">