Skip to content
Snippets Groups Projects
Commit 8121e286 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Merge branch...

Merge branch 'feat/216-cttc-implement-integration-test-between-e2e-ip-optical-sdn-controllers' of ssh://gifrerenom_labs.etsi.org/tfs/controller into feat/266-cttc-e2e-orchestrator-subscription-on-device-added-using-socketio
parents 7eea7be3 36adfc01
No related branches found
No related tags found
3 merge requests!359Release TeraFlowSDN 5.0,!328Resolve "(CTTC) Update recommendations to use SocketIO on NBI and E2E Orch components",!286Resolve "(CTTC) Implement integration test between E2E-IP-Optical SDN Controllers"
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
"action": 1, "action": 1,
"custom": { "custom": {
"resource_key": "_connect/address", "resource_key": "_connect/address",
"resource_value": "10.10.10.10" "resource_value": "10.0.58.29"
} }
}, },
{ {
...@@ -56,7 +56,13 @@ ...@@ -56,7 +56,13 @@
"custom": { "custom": {
"resource_key": "_connect/settings", "resource_key": "_connect/settings",
"resource_value": { "resource_value": {
"endpoints": [], "endpoints": [
{
"uuid": "mgmt",
"name": "mgmt",
"type": "mgmt"
}
],
"scheme": "http", "scheme": "http",
"username": "admin", "username": "admin",
"password": "admin", "password": "admin",
...@@ -85,7 +91,7 @@ ...@@ -85,7 +91,7 @@
}, },
"device_operational_status": 1, "device_operational_status": 1,
"device_drivers": [ "device_drivers": [
0 13
], ],
"device_config": { "device_config": {
"config_rules": [ "config_rules": [
...@@ -118,21 +124,9 @@ ...@@ -118,21 +124,9 @@
"uuid": "200", "uuid": "200",
"name": "200", "name": "200",
"type": "optical", "type": "optical",
"ce-ip": "128.32.33.2",
"address_ip": "128.32.33.254", "address_ip": "128.32.33.254",
"address_prefix": "24", "address_prefix": "24",
"site_location": "access", "site_location": "access"
"mtu": "1500",
"ipv4_lan_prefixes": [
{
"lan": "128.32.10.0/24",
"lan_tag": "10"
},
{
"lan": "128.32.20.0/24",
"lan_tag": "20"
}
]
}, },
{ {
"uuid": "500", "uuid": "500",
...@@ -166,7 +160,7 @@ ...@@ -166,7 +160,7 @@
}, },
"device_operational_status": 1, "device_operational_status": 1,
"device_drivers": [ "device_drivers": [
0 13
], ],
"device_config": { "device_config": {
"config_rules": [ "config_rules": [
...@@ -227,7 +221,7 @@ ...@@ -227,7 +221,7 @@
}, },
"device_operational_status": 1, "device_operational_status": 1,
"device_drivers": [ "device_drivers": [
0 13
], ],
"device_config": { "device_config": {
"config_rules": [ "config_rules": [
...@@ -288,7 +282,7 @@ ...@@ -288,7 +282,7 @@
}, },
"device_operational_status": 1, "device_operational_status": 1,
"device_drivers": [ "device_drivers": [
0 13
], ],
"device_config": { "device_config": {
"config_rules": [ "config_rules": [
...@@ -321,17 +315,9 @@ ...@@ -321,17 +315,9 @@
"uuid": "200", "uuid": "200",
"name": "200", "name": "200",
"type": "optical", "type": "optical",
"ce-ip": "172.10.33.2",
"address_ip": "172.10.33.254", "address_ip": "172.10.33.254",
"address_prefix": "24", "address_prefix": "24",
"site_location": "cloud", "site_location": "cloud"
"mtu": "1500",
"ipv4_lan_prefixes": [
{
"lan": "172.1.101.0/24",
"lan_tag": "101"
}
]
}, },
{ {
"uuid": "500", "uuid": "500",
...@@ -349,9 +335,185 @@ ...@@ -349,9 +335,185 @@
} }
] ]
} }
},
{
"device_id": {
"device_uuid": {
"uuid": "172.16.204.220"
}
},
"device_type": "emu-datacenter",
"device_drivers": [
0
],
"device_endpoints": [],
"device_operational_status": 1,
"device_config": {
"config_rules": [
{
"action": 1,
"custom": {
"resource_key": "_connect/address",
"resource_value": "127.0.0.1"
}
},
{
"action": 1,
"custom": {
"resource_key": "_connect/port",
"resource_value": "0"
}
},
{
"action": 1,
"custom": {
"resource_key": "_connect/settings",
"resource_value": {
"endpoints": [
{
"sample_types": [],
"type": "optical",
"uuid": "500"
},
{
"sample_types": [],
"type": "optical",
"uuid": "200"
},
{
"sample_types": [],
"type": "optical",
"uuid": "201"
}
]
}
}
}
]
}
} }
], ],
"links": [ "links": [
{
"link_id": {
"link_uuid": {
"uuid": "ip-net-controller/mgmt==172.16.182.25/mgmt"
}
},
"name": "ip-net-controller/mgmt==172.16.182.25/mgmt",
"link_endpoint_ids": [
{
"device_id": {
"device_uuid": {
"uuid": "ip-net-controller"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
},
{
"device_id": {
"device_uuid": {
"uuid": "172.16.182.25"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
}
]
},
{
"link_id": {
"link_uuid": {
"uuid": "ip-net-controller/mgmt==172.16.185.31/mgmt"
}
},
"name": "ip-net-controller/mgmt==172.16.185.31/mgmt",
"link_endpoint_ids": [
{
"device_id": {
"device_uuid": {
"uuid": "ip-net-controller"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
},
{
"device_id": {
"device_uuid": {
"uuid": "172.16.185.31"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
}
]
},
{
"link_id": {
"link_uuid": {
"uuid": "ip-net-controller/mgmt==172.16.185.33/mgmt"
}
},
"name": "ip-net-controller/mgmt==172.16.185.33/mgmt",
"link_endpoint_ids": [
{
"device_id": {
"device_uuid": {
"uuid": "ip-net-controller"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
},
{
"device_id": {
"device_uuid": {
"uuid": "172.16.185.33"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
}
]
},
{
"link_id": {
"link_uuid": {
"uuid": "ip-net-controller/mgmt==172.16.185.32/mgmt"
}
},
"name": "ip-net-controller/mgmt==172.16.185.32/mgmt",
"link_endpoint_ids": [
{
"device_id": {
"device_uuid": {
"uuid": "ip-net-controller"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
},
{
"device_id": {
"device_uuid": {
"uuid": "172.16.185.32"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
}
]
},
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
...@@ -623,6 +785,74 @@ ...@@ -623,6 +785,74 @@
} }
} }
] ]
},
{
"link_id": {
"link_uuid": {
"uuid": "172.16.185.32-200"
}
},
"name": "172.16.185.32-200",
"attributes": {
"total_capacity_gbps": 10,
"used_capacity_gbps": 0
},
"link_endpoint_ids": [
{
"device_id": {
"device_uuid": {
"uuid": "172.16.185.32"
}
},
"endpoint_uuid": {
"uuid": "200"
}
},
{
"device_id": {
"device_uuid": {
"uuid": "172.16.204.220"
}
},
"endpoint_uuid": {
"uuid": "500"
}
}
]
},
{
"link_id": {
"link_uuid": {
"uuid": "172.16.204.220-500"
}
},
"name": "172.16.204.220-500",
"attributes": {
"total_capacity_gbps": 10,
"used_capacity_gbps": 0
},
"link_endpoint_ids": [
{
"device_id": {
"device_uuid": {
"uuid": "172.16.204.220"
}
},
"endpoint_uuid": {
"uuid": "500"
}
},
{
"device_id": {
"device_uuid": {
"uuid": "172.16.185.32"
}
},
"endpoint_uuid": {
"uuid": "200"
}
}
]
} }
] ]
} }
\ No newline at end of file
...@@ -23,6 +23,59 @@ ...@@ -23,6 +23,59 @@
} }
], ],
"devices": [ "devices": [
{
"device_id": {
"device_uuid": {
"uuid": "ip-transport-controller"
}
},
"name": "ip-transport-controller",
"device_type": "ietf-slice",
"device_operational_status": 1,
"device_drivers": [
14
],
"device_config": {
"config_rules": [
{
"action": 1,
"custom": {
"resource_key": "_connect/address",
"resource_value": "10.0.58.9"
}
},
{
"action": 1,
"custom": {
"resource_key": "_connect/port",
"resource_value": "80"
}
},
{
"action": 1,
"custom": {
"resource_key": "_connect/settings",
"resource_value": {
"endpoints": [
{
"uuid": "mgmt",
"name": "mgmt",
"type": "mgmt"
}
],
"scheme": "http",
"username": "admin",
"password": "admin",
"base_url": "/restconf/v2/data",
"timeout": 120,
"verify": false
}
}
}
]
},
"device_endpoints": []
},
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
...@@ -94,7 +147,7 @@ ...@@ -94,7 +147,7 @@
"action": 1, "action": 1,
"custom": { "custom": {
"resource_key": "_connect/address", "resource_key": "_connect/address",
"resource_value": "10.10.10.10" "resource_value": "1.1.1.1"
} }
}, },
{ {
...@@ -139,7 +192,7 @@ ...@@ -139,7 +192,7 @@
"device_type": "emu-packet-router", "device_type": "emu-packet-router",
"controller_id": { "controller_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"device_operational_status": 1, "device_operational_status": 1,
...@@ -210,7 +263,7 @@ ...@@ -210,7 +263,7 @@
"device_type": "emu-packet-router", "device_type": "emu-packet-router",
"controller_id": { "controller_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"device_operational_status": 1, "device_operational_status": 1,
...@@ -272,7 +325,7 @@ ...@@ -272,7 +325,7 @@
"device_type": "emu-packet-router", "device_type": "emu-packet-router",
"controller_id": { "controller_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"device_operational_status": 1, "device_operational_status": 1,
...@@ -334,7 +387,7 @@ ...@@ -334,7 +387,7 @@
"device_type": "emu-packet-router", "device_type": "emu-packet-router",
"controller_id": { "controller_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"device_operational_status": 1, "device_operational_status": 1,
...@@ -748,6 +801,36 @@ ...@@ -748,6 +801,36 @@
} }
], ],
"links": [ "links": [
{
"link_id": {
"link_uuid": {
"uuid": "agg-net-controller/mgmt==ip-transport-controller/mgmt"
}
},
"name": "agg-net-controller/mgmt==ip-transport-controller/mgmt",
"link_endpoint_ids": [
{
"device_id": {
"device_uuid": {
"uuid": "agg-net-controller"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
},
{
"device_id": {
"device_uuid": {
"uuid": "ip-transport-controller"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
}
]
},
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
...@@ -841,15 +924,15 @@ ...@@ -841,15 +924,15 @@
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
"uuid": "agg-net-controller/mgmt==172.16.185.33/mgmt" "uuid": "ip-transport-controller/mgmt==172.16.185.33/mgmt"
} }
}, },
"name": "agg-net-controller/mgmt==172.16.185.33/mgmt", "name": "ip-transport-controller/mgmt==172.16.185.33/mgmt",
"link_endpoint_ids": [ "link_endpoint_ids": [
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"endpoint_uuid": { "endpoint_uuid": {
...@@ -871,15 +954,15 @@ ...@@ -871,15 +954,15 @@
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
"uuid": "agg-net-controller/mgmt==172.16.185.31/mgmt" "uuid": "ip-transport-controller/mgmt==172.16.185.31/mgmt"
} }
}, },
"name": "agg-net-controller/mgmt==172.16.185.31/mgmt", "name": "ip-transport-controller/mgmt==172.16.185.31/mgmt",
"link_endpoint_ids": [ "link_endpoint_ids": [
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"endpoint_uuid": { "endpoint_uuid": {
...@@ -901,15 +984,15 @@ ...@@ -901,15 +984,15 @@
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
"uuid": "agg-net-controller/mgmt==172.16.182.25/mgmt" "uuid": "ip-transport-controller/mgmt==172.16.185.32/mgmt"
} }
}, },
"name": "agg-net-controller/mgmt==172.16.182.25/mgmt", "name": "ip-transport-controller/mgmt==172.16.185.32/mgmt",
"link_endpoint_ids": [ "link_endpoint_ids": [
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"endpoint_uuid": { "endpoint_uuid": {
...@@ -919,7 +1002,7 @@ ...@@ -919,7 +1002,7 @@
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
"uuid": "172.16.182.25" "uuid": "172.16.185.32"
} }
}, },
"endpoint_uuid": { "endpoint_uuid": {
...@@ -931,15 +1014,15 @@ ...@@ -931,15 +1014,15 @@
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
"uuid": "agg-net-controller/mgmt==172.16.182.25/mgmt" "uuid": "ip-transport-controller/mgmt==172.16.182.25/mgmt"
} }
}, },
"name": "agg-net-controller/mgmt==172.16.182.25/mgmt", "name": "ip-transport-controller/mgmt==172.16.182.25/mgmt",
"link_endpoint_ids": [ "link_endpoint_ids": [
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"endpoint_uuid": { "endpoint_uuid": {
......
...@@ -23,6 +23,59 @@ ...@@ -23,6 +23,59 @@
} }
], ],
"devices": [ "devices": [
{
"device_id": {
"device_uuid": {
"uuid": "ip-transport-controller"
}
},
"name": "ip-transport-controller",
"device_type": "ietf-slice",
"device_operational_status": 1,
"device_drivers": [
14
],
"device_config": {
"config_rules": [
{
"action": 1,
"custom": {
"resource_key": "_connect/address",
"resource_value": "AGG_NET_IP"
}
},
{
"action": 1,
"custom": {
"resource_key": "_connect/port",
"resource_value": "AGG_NET_PORT"
}
},
{
"action": 1,
"custom": {
"resource_key": "_connect/settings",
"resource_value": {
"endpoints": [
{
"uuid": "mgmt",
"name": "mgmt",
"type": "mgmt"
}
],
"scheme": "http",
"username": "admin",
"password": "admin",
"base_url": "/restconf/v2/data",
"timeout": 120,
"verify": false
}
}
}
]
},
"device_endpoints": []
},
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
...@@ -139,7 +192,7 @@ ...@@ -139,7 +192,7 @@
"device_type": "emu-packet-router", "device_type": "emu-packet-router",
"controller_id": { "controller_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"device_operational_status": 1, "device_operational_status": 1,
...@@ -210,7 +263,7 @@ ...@@ -210,7 +263,7 @@
"device_type": "emu-packet-router", "device_type": "emu-packet-router",
"controller_id": { "controller_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"device_operational_status": 1, "device_operational_status": 1,
...@@ -272,7 +325,7 @@ ...@@ -272,7 +325,7 @@
"device_type": "emu-packet-router", "device_type": "emu-packet-router",
"controller_id": { "controller_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"device_operational_status": 1, "device_operational_status": 1,
...@@ -334,7 +387,7 @@ ...@@ -334,7 +387,7 @@
"device_type": "emu-packet-router", "device_type": "emu-packet-router",
"controller_id": { "controller_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"device_operational_status": 1, "device_operational_status": 1,
...@@ -748,6 +801,36 @@ ...@@ -748,6 +801,36 @@
} }
], ],
"links": [ "links": [
{
"link_id": {
"link_uuid": {
"uuid": "agg-net-controller/mgmt==ip-transport-controller/mgmt"
}
},
"name": "agg-net-controller/mgmt==ip-transport-controller/mgmt",
"link_endpoint_ids": [
{
"device_id": {
"device_uuid": {
"uuid": "agg-net-controller"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
},
{
"device_id": {
"device_uuid": {
"uuid": "ip-transport-controller"
}
},
"endpoint_uuid": {
"uuid": "mgmt"
}
}
]
},
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
...@@ -841,15 +924,15 @@ ...@@ -841,15 +924,15 @@
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
"uuid": "agg-net-controller/mgmt==172.16.185.33/mgmt" "uuid": "ip-transport-controller/mgmt==172.16.185.33/mgmt"
} }
}, },
"name": "agg-net-controller/mgmt==172.16.185.33/mgmt", "name": "ip-transport-controller/mgmt==172.16.185.33/mgmt",
"link_endpoint_ids": [ "link_endpoint_ids": [
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"endpoint_uuid": { "endpoint_uuid": {
...@@ -871,15 +954,15 @@ ...@@ -871,15 +954,15 @@
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
"uuid": "agg-net-controller/mgmt==172.16.185.31/mgmt" "uuid": "ip-transport-controller/mgmt==172.16.185.31/mgmt"
} }
}, },
"name": "agg-net-controller/mgmt==172.16.185.31/mgmt", "name": "ip-transport-controller/mgmt==172.16.185.31/mgmt",
"link_endpoint_ids": [ "link_endpoint_ids": [
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"endpoint_uuid": { "endpoint_uuid": {
...@@ -901,15 +984,15 @@ ...@@ -901,15 +984,15 @@
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
"uuid": "agg-net-controller/mgmt==172.16.182.25/mgmt" "uuid": "ip-transport-controller/mgmt==172.16.185.32/mgmt"
} }
}, },
"name": "agg-net-controller/mgmt==172.16.182.25/mgmt", "name": "ip-transport-controller/mgmt==172.16.185.32/mgmt",
"link_endpoint_ids": [ "link_endpoint_ids": [
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"endpoint_uuid": { "endpoint_uuid": {
...@@ -919,7 +1002,7 @@ ...@@ -919,7 +1002,7 @@
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
"uuid": "172.16.182.25" "uuid": "172.16.185.32"
} }
}, },
"endpoint_uuid": { "endpoint_uuid": {
...@@ -931,15 +1014,15 @@ ...@@ -931,15 +1014,15 @@
{ {
"link_id": { "link_id": {
"link_uuid": { "link_uuid": {
"uuid": "agg-net-controller/mgmt==172.16.182.25/mgmt" "uuid": "ip-transport-controller/mgmt==172.16.182.25/mgmt"
} }
}, },
"name": "agg-net-controller/mgmt==172.16.182.25/mgmt", "name": "ip-transport-controller/mgmt==172.16.182.25/mgmt",
"link_endpoint_ids": [ "link_endpoint_ids": [
{ {
"device_id": { "device_id": {
"device_uuid": { "device_uuid": {
"uuid": "agg-net-controller" "uuid": "ip-transport-controller"
} }
}, },
"endpoint_uuid": { "endpoint_uuid": {
......
...@@ -12,12 +12,16 @@ ...@@ -12,12 +12,16 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import json
from typing import Dict, Optional, Tuple
import grpc import grpc
from flask import current_app, redirect, render_template, Blueprint, flash, session, url_for from flask import current_app, redirect, render_template, Blueprint, flash, session, url_for
from common.proto.context_pb2 import IsolationLevelEnum, Slice, SliceId, SliceStatusEnum from common.method_wrappers.ServiceExceptions import InvalidArgumentsException
from common.proto.context_pb2 import IsolationLevelEnum, Slice, SliceId, SliceStatusEnum, EndPointId, SliceConfig, ConfigRule
from common.tools.context_queries.Context import get_context from common.tools.context_queries.Context import get_context
from common.tools.context_queries.EndPoint import get_endpoint_names from common.tools.context_queries.EndPoint import get_endpoint_names
from common.tools.context_queries.Slice import get_slice_by_uuid from common.tools.context_queries.Slice import get_slice_by_uuid, get_uuid_from_string
from common.Constants import DEFAULT_CONTEXT_NAME
from context.client.ContextClient import ContextClient from context.client.ContextClient import ContextClient
from slice.client.SliceClient import SliceClient from slice.client.SliceClient import SliceClient
...@@ -26,6 +30,94 @@ slice = Blueprint('slice', __name__, url_prefix='/slice') ...@@ -26,6 +30,94 @@ slice = Blueprint('slice', __name__, url_prefix='/slice')
context_client = ContextClient() context_client = ContextClient()
slice_client = SliceClient() slice_client = SliceClient()
RUNNING_RESOURCE_KEY = "running_ietf_slice"
CANDIDATE_RESOURCE_KEY = "candidate_ietf_slice"
class ConfigRuleNotFoundError(Exception):
...
def get_custom_config_rule(
slice_config: SliceConfig, resource_key: str
) -> Optional[ConfigRule]:
"""
Retrieve the custom config rule with the given resource_key from a ServiceConfig.
"""
for cr in slice_config.config_rules:
if (
cr.WhichOneof("config_rule") == "custom"
and cr.custom.resource_key == resource_key
):
return cr
return None
def get_ietf_data_from_config(slice_request: Slice, resource_key: str) -> Dict:
"""
Retrieve the IETF data (as a Python dict) from a slice's config rule for the specified resource_key.
Raises an exception if not found.
"""
config_rule = get_custom_config_rule(slice_request.slice_config, resource_key)
if not config_rule:
raise ConfigRuleNotFoundError(f"IETF data not found for resource_key: {resource_key}")
return json.loads(config_rule.custom.resource_value)
def endpoint_get_uuid(
endpoint_id : EndPointId, endpoint_name : str = '', allow_random : bool = False
) -> Tuple[str, str, str]:
device_uuid = endpoint_id.device_id.device_uuid.uuid
topology_uuid = endpoint_id.topology_id.topology_uuid.uuid
raw_endpoint_uuid = endpoint_id.endpoint_uuid.uuid
if len(raw_endpoint_uuid) > 0:
prefix_for_name = '{:s}/{:s}'.format(topology_uuid, device_uuid)
return topology_uuid, device_uuid, get_uuid_from_string(raw_endpoint_uuid, prefix_for_name=prefix_for_name)
if len(endpoint_name) > 0:
prefix_for_name = '{:s}/{:s}'.format(topology_uuid, device_uuid)
return topology_uuid, device_uuid, get_uuid_from_string(endpoint_name, prefix_for_name=prefix_for_name)
raise InvalidArgumentsException([
('endpoint_id.endpoint_uuid.uuid', raw_endpoint_uuid),
('name', endpoint_name),
], extra_details=['At least one is required to produce a EndPoint UUID'])
def get_slice_endpoints(slice_obj: Slice) -> list[EndPointId]:
'''
Get the list of endpoint ids for a slice.
If the slice has a `running_ietf_slice` config rule, return the list of endpoint ids from the config rule,
otherwise return the slice's list of endpoint ids.
'''
try:
first_slice_endpoint_id = slice_obj.slice_endpoint_ids[0]
topology_uuid = first_slice_endpoint_id.topology_id.topology_uuid.uuid
context_uuid = slice_obj.slice_id.context_id.context_uuid.uuid
running_ietf_data = get_ietf_data_from_config(slice_obj, RUNNING_RESOURCE_KEY)
slice_service = running_ietf_data["network-slice-services"]["slice-service"][0]
slice_sdps = slice_service["sdps"]["sdp"]
list_endpoint_ids = []
for sdp in slice_sdps:
endpoint = EndPointId()
endpoint.topology_id.context_id.context_uuid.uuid = context_uuid
endpoint.topology_id.topology_uuid.uuid = topology_uuid
device_uuid = get_uuid_from_string(sdp["node-id"])
endpoint.device_id.device_uuid.uuid = device_uuid
attachment_circuits = sdp["attachment-circuits"]["attachment-circuit"]
endpoint_name = attachment_circuits[0]["ac-tp-id"]
endpoint.endpoint_uuid.uuid = endpoint_name
_, _, endpoint_uuid = endpoint_get_uuid(endpoint)
endpoint.endpoint_uuid.uuid = endpoint_uuid
list_endpoint_ids.append(endpoint)
del slice_obj.slice_endpoint_ids[:]
slice_obj.slice_endpoint_ids.extend(list_endpoint_ids)
except ConfigRuleNotFoundError:
# The slice does not have `running_ietf_slice` config rule, return slice's list of endpoint ids
list_endpoint_ids = slice_obj.slice_endpoint_ids
return list_endpoint_ids
@slice.get('/') @slice.get('/')
def home(): def home():
if 'context_uuid' not in session or 'topology_uuid' not in session: if 'context_uuid' not in session or 'topology_uuid' not in session:
...@@ -50,7 +142,8 @@ def home(): ...@@ -50,7 +142,8 @@ def home():
else: else:
endpoint_ids = list() endpoint_ids = list()
for slice_ in slices: for slice_ in slices:
endpoint_ids.extend(slice_.slice_endpoint_ids) slice_endpoint_ids = get_slice_endpoints(slice_)
endpoint_ids.extend(slice_endpoint_ids)
device_names, endpoints_data = get_endpoint_names(context_client, endpoint_ids) device_names, endpoints_data = get_endpoint_names(context_client, endpoint_ids)
context_client.close() context_client.close()
...@@ -81,7 +174,8 @@ def detail(slice_uuid: str): ...@@ -81,7 +174,8 @@ def detail(slice_uuid: str):
flash('Context({:s})/Slice({:s}) not found'.format(str(context_uuid), str(slice_uuid)), 'danger') flash('Context({:s})/Slice({:s}) not found'.format(str(context_uuid), str(slice_uuid)), 'danger')
slice_obj = Slice() slice_obj = Slice()
else: else:
device_names, endpoints_data = get_endpoint_names(context_client, slice_obj.slice_endpoint_ids) slice_endpoint_ids = get_slice_endpoints(slice_obj)
device_names, endpoints_data = get_endpoint_names(context_client, slice_endpoint_ids)
context_client.close() context_client.close()
...@@ -111,5 +205,5 @@ def delete(slice_uuid: str): ...@@ -111,5 +205,5 @@ def delete(slice_uuid: str):
flash('Slice "{:s}" deleted successfully!'.format(slice_uuid), 'success') flash('Slice "{:s}" deleted successfully!'.format(slice_uuid), 'success')
except Exception as e: except Exception as e:
flash('Problem deleting slice "{:s}": {:s}'.format(slice_uuid, str(e.details())), 'danger') flash('Problem deleting slice "{:s}": {:s}'.format(slice_uuid, str(e.details())), 'danger')
current_app.logger.exception(e) current_app.logger.exception(e)
return redirect(url_for('slice.home')) return redirect(url_for('slice.home'))
src/webui/service/static/topology_icons/ietf-slice.png

8.55 KiB

src/webui/service/static/topology_icons/nce.png

19 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment