atlanticwave-sdx / pce

Path Computation Element for AtlanticWave SDX.
https://www.atlanticwave-sdx.net
0 stars 3 forks source link

Add a method to get a list of links in a connection #164

Closed sajith closed 1 year ago

sajith commented 1 year ago

Sometimes links could fail in an established connection, and SDX Controller will receive that event from SDX LC. In order for SDX controller to actually act upon that information, it will also need a list of all links used in the connection, not just the edge links. We will need to add a method that does this.

sajith commented 1 year ago

For reference, here's an example of a topology update that has a failed link:

{
    "id": "urn:ogf:network:sdx:topology:amlight.net",
    "name": "AmLight-OXP",
    "model_version": "1.0.0",
    "timestamp": "2000-01-23T04:56:07+00:00",
    "version": 1,
    "link_failure": [{
        "availability": 56.37376656633328,
        "residual_bandwidth": 100000,
        "id": "urn:ogf:network:sdx:link:amlight:B1-B2",
        "latency": 5,
        "name": "amlight:B1-B2",
        "packet_loss": 59.621339166831824,
        "ports": [{
                "id": "urn:sdx:port:amlight.net:B1:2",
                "name": "Novi01:2",
                "node": "urn:sdx:node:amlight.net:B1",
                "short_name": "B1:2",
                "label_range": [
                    "100-200",
                    "10001"
                ],
                "status": "up"
            },
            {
                "id": "urn:sdx:port:amlight.net:B2:2",
                "label_range": [
                    "100-200",
                    "10001"
                ],
                "name": "Novi02:2",
                "node": "urn:sdx:node:amlight.net:B2",
                "short_name": "B2:2",
                "status": "up"
            }
        ],
        "short_name": "Miami-BocaRaton",
        "bandwidth": 100000
    }],
    "links": [{
            "availability": 56.37376656633328,
            "residual_bandwidth": 100000,
            "id": "urn:ogf:network:sdx:link:amlight:B1-B2",
            "latency": 5,
            "name": "amlight:B1-B2",
            "packet_loss": 59.621339166831824,
            "ports": [{
                    "id": "urn:sdx:port:amlight.net:B1:2",
                    "name": "Novi01:2",
                    "node": "urn:sdx:node:amlight.net:B1",
                    "short_name": "B1:2",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "status": "down"
                },
                {
                    "id": "urn:sdx:port:amlight.net:B2:2",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "name": "Novi02:2",
                    "node": "urn:sdx:node:amlight.net:B2",
                    "short_name": "B2:2",
                    "status": "up"
                }
            ],
            "short_name": "Miami-BocaRaton",
            "bandwidth": 100000
        },
        {
            "availability": 56.37376656633328,
            "residual_bandwidth": 100000,
            "id": "urn:ogf:network:sdx:link:amlight:A1-B1",
            "latency": 5,
            "name": "amlight:A1-B1",
            "packet_loss": 59.621339166831824,
            "ports": [{
                    "id": "urn:sdx:port:amlight.net:A1:1",
                    "label_range": [
                        "100-200",
                        "1000"
                    ],
                    "name": "Novi100:1",
                    "node": "urn:sdx:node:amlight.net:A1",
                    "short_name": "A1:1",
                    "status": "up"
                },
                {
                    "id": "urn:sdx:port:amlight.net:B1:3",
                    "name": "Novi01:3",
                    "node": "urn:sdx:node:amlight.net:B1",
                    "short_name": "B1:3",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "status": "up"
                }
            ],
            "short_name": "redclara-miami",
            "bandwidth": 100000
        },
        {
            "availability": 56.37376656633328,
            "residual_bandwidth": 100000,
            "id": "urn:ogf:network:sdx:link:amlight:A1-B2",
            "latency": 5,
            "name": "amlight:A1-B2",
            "packet_loss": 59.621339166831824,
            "ports": [{
                    "id": "urn:sdx:port:amlight.net:A1:2",
                    "label_range": [
                        "100-200",
                        "1000"
                    ],
                    "name": "Novi100:2",
                    "node": "urn:sdx:node:amlight.net:A1",
                    "short_name": "A1:2",
                    "status": "up"
                },
                {
                    "id": "urn:sdx:port:amlight.net:B2:3",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "name": "Novi02:3",
                    "node": "urn:sdx:node:amlight.net:B2",
                    "short_name": "B2:3",
                    "status": "up"
                }
            ],
            "short_name": "redclara-BocaRaton",
            "bandwidth": 100000
        },
        {
            "availability": 56.37376656633328,
            "residual_bandwidth": 100000,
            "id": "urn:ogf:network:sdx:link:nni:Miami-Sanpaolo",
            "latency": 10,
            "name": "nni:Miami-Sanpaolo",
            "packet_loss": 59.621339166831824,
            "nni": "True",
            "ports": [{
                    "id": "urn:sdx:port:amlight:B1:1",
                    "name": "Novi01:1",
                    "node": "urn:sdx:node:amlight.net:B1",
                    "short_name": "B1:1",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "status": "up"
                },
                {
                    "id": "urn:ogf:network:sdx:port:sax:B1:1",
                    "name": "Novi01:1",
                    "node": "urn:ogf:network:sdx:port:sax:B1",
                    "short_name": "B1:1",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "status": "up"
                }
            ],
            "short_name": "Miami-Sanpaolo",
            "bandwidth": 100000
        },
        {
            "availability": 56.37376656633328,
            "residual_bandwidth": 100000,
            "id": "urn:ogf:network:sdx:link:nni:BocaRaton-Fortaleza",
            "latency": 10,
            "name": "nni:BocaRaton-Fortaleza",
            "packet_loss": 59.621339166831824,
            "nni": "True",
            "ports": [{
                    "id": "urn:sdx:port:amlight.net:B2:1",
                    "label_range": [
                        "100-200",
                        "1000"
                    ],
                    "name": "Novi02:1",
                    "node": "urn:sdx:node:amlight.net:B2",
                    "short_name": "B2:1",
                    "status": "up"
                },
                {
                    "id": "urn:ogf:network:sdx:port:sax:B2:1",
                    "label_range": [
                        "100-200",
                        "1000"
                    ],
                    "name": "Novi02:1",
                    "node": "urn:ogf:network:sdx:node:sax:B2",
                    "short_name": "B2:1",
                    "status": "up"
                }
            ],
            "short_name": "BocaRaton-Fortaleza",
            "bandwidth": 100000
        }
    ],
    "nodes": [{
            "id": "urn:sdx:node:amlight.net:B1",
            "location": {
                "address": "Miami",
                "latitude": 25.75633040531146,
                "longitude": -80.37676058477908,
                "ISO3166-2-lvl4": "US-MIA"
            },
            "name": "amlight:Novi01",
            "ports": [{
                    "id": "urn:sdx:port:amlight:B1:1",
                    "name": "Novi01:1",
                    "node": "urn:sdx:node:amlight.net:B1",
                    "short_name": "B1:1",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "status": "up",
                    "state": "enabled"
                },
                {
                    "id": "urn:sdx:port:amlight.net:B1:2",
                    "name": "Novi01:2",
                    "node": "urn:sdx:node:amlight.net:B1",
                    "short_name": "B1:2",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "status": "up",
                    "state": "enabled"
                },
                {
                    "id": "urn:sdx:port:amlight.net:B1:3",
                    "name": "Novi01:3",
                    "node": "urn:sdx:node:amlight.net:B1",
                    "short_name": "B1:3",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "status": "up",
                    "state": "enabled"
                }
            ],
            "short_name": "B1"
        },
        {
            "id": "urn:sdx:node:amlight.net:B2",
            "location": {
                "address": "BocaRaton",
                "latitude": 26.381437356374075,
                "longitude": -80.10225977485742,
                "ISO3166-2-lvl4": "US-BC"
            },
            "name": "amlight:Novi02",
            "ports": [{
                    "id": "urn:sdx:port:amlight.net:B2:1",
                    "label_range": [
                        "100-200",
                        "1000"
                    ],
                    "name": "Novi02:1",
                    "node": "urn:sdx:node:amlight.net:B2",
                    "short_name": "B2:1",
                    "status": "up",
                    "state": "enabled"
                },
                {
                    "id": "urn:sdx:port:amlight.net:B2:2",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "name": "Novi02:2",
                    "node": "urn:sdx:node:amlight.net:B2",
                    "short_name": "B2:2",
                    "status": "up",
                    "state": "enabled"
                },
                {
                    "id": "urn:sdx:port:amlight.net:B2:3",
                    "label_range": [
                        "100-200",
                        "10001"
                    ],
                    "name": "Novi02:3",
                    "node": "urn:sdx:node:amlight.net:B2",
                    "short_name": "B2:3",
                    "status": "up",
                    "state": "enabled"
                }
            ],
            "short_name": "B2"
        },
        {
            "id": "urn:sdx:node:amlight.net:A1",
            "location": {
                "address": "redclara",
                "latitude": 30.34943181039702,
                "longitude": -81.66666016473143,
                "ISO3166-2-lvl4": "US-RC"
            },
            "name": "amlight:Novi100",
            "ports": [{
                    "id": "urn:sdx:port:amlight.net:A1:1",
                    "label_range": [
                        "100-200",
                        "1000"
                    ],
                    "name": "Novi100:1",
                    "node": "urn:sdx:node:amlight.net:A1",
                    "short_name": "A1:1",
                    "status": "up",
                    "state": "enabled"
                },
                {
                    "id": "urn:sdx:port:amlight.net:A1:2",
                    "label_range": [
                        "100-200",
                        "1000"
                    ],
                    "name": "Novi100:2",
                    "node": "urn:sdx:node:amlight.net:A1",
                    "short_name": "A1:2",
                    "status": "up",
                    "state": "enabled"
                }
            ],
            "short_name": "A1"
        }
    ],
    "domain_service": {
        "owner": "FIU"
    }
}