Skip to content
Snippets Groups Projects
Commit b3570f71 authored by Robert Latta's avatar Robert Latta
Browse files

added base transormation of SID info with tests

parent b6bfb280
No related branches found
No related tags found
No related merge requests found
......@@ -203,6 +203,7 @@ def get_port_id_services(ds: IMS):
'circuit_type': circuit['circuit_type'],
'service_type': products[circuit['productid']],
'project': customers[circuit['customerid']],
'customer': customers[circuit['customerid']],
'customerid': circuit['customerid']
}
ports = []
......@@ -248,6 +249,7 @@ def get_port_id_services(ds: IMS):
'circuit_type': _get_circuit_type(circuit),
'service_type': products[circuit['productid']],
'project': customers[circuit['customerid']],
'customer': customers[circuit['customerid']],
'customerid': circuit['customerid'],
'port_a_id': portrelate.get(
'portid',
......
......@@ -827,6 +827,9 @@ def transform_ims_data(data):
hierarchy = data['hierarchy']
port_id_details = data['port_id_details']
port_id_services = data['port_id_services']
circuit_ids_and_sids = data['circuit_ids_sids']
sid_circuits = defaultdict(list)
def _get_circuit_contacts(c):
customer_ids = {c['customerid']}
......@@ -982,20 +985,40 @@ def transform_ims_data(data):
_format_service(circ)
type_services = services_by_type.setdefault(
ims_sorted_service_type_key(circ['service_type']), dict())
ims_sorted_service_type_key(circ['service_type']), dict()) # comment
type_services[circ['id']] = circ
if circ['other_end_equipment']:
node_pair_services[
f"{circ['equipment']}/{circ['other_end_equipment']}"
][circ['id']] = circ
if circ['id'] in circuit_ids_and_sids:
sid = circuit_ids_and_sids[circ['id']]
if circ['circuit_type'] == 'circuit':
logger.info(f'SID ({sid}) Circuit ({circ["id"]})'
f' not a service. IMS')
else:
sid_circuits[sid].append(
{
'circuit_id': circ['id'],
'sid': sid,
'name': circ['name'],
'speed': circ['calculated-speed'],
'service_type': circ['service_type'],
'project': circ['project'],
'customer': circ['customer'],
'equipment': circ['equipment'],
'port': circ['port']
})
interface_services[k].extend(circuits)
return {
'hierarchy': hierarchy,
'interface_services': interface_services,
'services_by_type': services_by_type,
'node_pair_services': node_pair_services
'node_pair_services': node_pair_services,
'sid_circuits': sid_circuits
}
......
......@@ -162,6 +162,7 @@ def test_get_port_id_services(mocker):
'circuit_type': 'service',
'service_type': 'GEANT IP',
'project': 'ORG A',
'customer': 'ORG A',
'port_a_id': 224507,
'customerid': 57658
},
......@@ -172,6 +173,7 @@ def test_get_port_id_services(mocker):
'circuit_type': 'service',
'service_type': 'GEANT PEERING',
'project': 'ORG B',
'customer': 'ORG B',
'port_a_id': 224464,
'customerid': 57664
},
......@@ -182,6 +184,7 @@ def test_get_port_id_services(mocker):
'circuit_type': 'circuit',
'service_type': 'ETHERNET',
'project': 'ETH',
'customer': 'ETH',
'port_a_id': 6423107,
'port_b_id': 6419340,
'customerid': 57744
......@@ -193,6 +196,7 @@ def test_get_port_id_services(mocker):
'circuit_type': 'circuit',
'service_type': 'ETHERNET',
'project': 'ETH',
'customer': 'ETH',
'port_a_id': 6419340,
'port_b_id': 6423107,
'customerid': 57744
......@@ -204,6 +208,7 @@ def test_get_port_id_services(mocker):
'circuit_type': 'circuit',
'service_type': 'ETHERNET',
'project': 'ETH',
'customer': 'ETH',
'port_a_id': 6423111,
'customerid': 57744
},
......@@ -214,6 +219,7 @@ def test_get_port_id_services(mocker):
'circuit_type': 'service',
'service_type': 'PRODUCT A',
'project': 'ORG C',
'customer': 'ORG C',
'port_a_id': 6419453,
'customerid': 57640
}
......
......@@ -137,6 +137,16 @@ def test_transform_ims_data():
"equipment_name": "eq_b",
"interface_name": "if_b",
"port_id": "port_id_2"
}],
"port_id_3": [{
"equipment_name": "eq_a",
"interface_name": "if_c",
"port_id": "port_id_3"
}],
"port_id_4": [{
"equipment_name": "eq_b",
"interface_name": "if_c",
"port_id": "port_id_4"
}]
}
......@@ -144,7 +154,10 @@ def test_transform_ims_data():
"port_id_1": [
{
"id": "circ_id_1",
"name": "circ_name_1",
"customerid": "cu_1",
"customer": "customer_1",
"project": "customer_1",
"circuit_type": "circuit",
"service_type": "ETHERNET",
"status": "operational",
......@@ -156,7 +169,10 @@ def test_transform_ims_data():
"port_id_2": [
{
"id": "circ_id_1",
"name": "circ_name_1",
"customerid": "cu_1",
"customer": "customer_1",
"project": "customer_1",
"circuit_type": "circuit",
"service_type": "ETHERNET",
"status": "operational",
......@@ -164,6 +180,34 @@ def test_transform_ims_data():
"port_b_id": "port_id_1",
}
],
"port_id_3": [
{
"id": "sub_circuit_2",
"name": "sub_circuit_2",
"customerid": "cu_1",
"customer": "customer_1",
"project": "customer_1",
"circuit_type": "service",
"service_type": "PEERING R & E",
"status": "operational",
"port_a_id": "port_id_3",
"port_b_id": "port_id_4",
}
],
"port_id_4": [
{
"id": "sub_circuit_2",
"name": "sub_circuit_2",
"customerid": "cu_1",
"customer": "customer_1",
"project": "customer_1",
"circuit_type": "service",
"service_type": "PEERING R & E",
"status": "operational",
"port_a_id": "port_id_4",
"port_b_id": "port_id_3",
},
]
}
......@@ -173,8 +217,10 @@ def test_transform_ims_data():
"name": "circ_name_1",
"status": "operational",
"circuit-type": "circuit",
"service_type": "ETHERNET",
"product": "ethernet",
"speed": "not fibre_route",
"project": "customer_1",
"carrier-circuits": ["carrier_id_1"],
"sub-circuits": ["sub_circuit_1"],
"customerid": "cu_1",
......@@ -186,6 +232,7 @@ def test_transform_ims_data():
"circuit-type": "circuit",
"product": "ethernet",
"speed": "10G",
"project": "customer_1",
"carrier-circuits": ["carrier_id_2"],
"sub-circuits": ["circ_id_1"],
"customerid": "cu_1",
......@@ -197,6 +244,7 @@ def test_transform_ims_data():
"circuit-type": "circuit",
"product": "ethernet",
"speed": "not fibre_route",
"project": "customer_1",
"carrier-circuits": ["carrier_id_3"],
"sub-circuits": ["carrier_id_1"],
"customerid": "cu_1",
......@@ -208,6 +256,7 @@ def test_transform_ims_data():
"circuit-type": "circuit",
"product": "OCG4",
"speed": "fibre_route",
"project": "customer_1",
"carrier-circuits": [],
"sub-circuits": ["carrier_id_2"],
"customerid": "cu_1",
......@@ -219,6 +268,7 @@ def test_transform_ims_data():
"circuit-type": "circuit",
"product": "ethernet",
"speed": "not fibre_route",
"project": "customer_1",
"carrier-circuits": ["circ_id_1"],
"sub-circuits": ["sub_circuit_2"],
"customerid": "cu_1",
......@@ -230,12 +280,18 @@ def test_transform_ims_data():
"circuit-type": "service",
"product": "PEERING R & E",
"speed": "not fiber route",
"project": "Project A",
"project": "customer_1",
"carrier-circuits": ["sub_circuit_1"],
"sub-circuits": [],
"customerid": "cu_1",
}
}
circuit_ids_and_sids = {
"sub_circuit_2": 'SID-01',
"circ_id_2": 'SID-02',
"circ_id_3": 'SID-03'
}
data = {
"locations": locations,
"customer_contacts": customer_contacts,
......@@ -243,11 +299,13 @@ def test_transform_ims_data():
"additional_circuit_customer_ids": additional_circuit_customer_ids,
"hierarchy": hierarchy,
"port_id_details": port_id_details,
"port_id_services": port_id_services
"port_id_services": port_id_services,
"circuit_ids_sids": circuit_ids_and_sids
}
res = transform_ims_data(data)
ifs = res["interface_services"]
assert list(ifs.keys()) == ["eq_a:if_a", "eq_b:if_b"]
assert list(ifs.keys()) == [
"eq_a:if_a", "eq_b:if_b", "eq_a:if_c", "eq_b:if_c"]
for v in ifs.values():
assert len(v) == 1
assert len(v[0]["related-services"]) == 1
......@@ -267,6 +325,36 @@ def test_transform_ims_data():
assert len(v[0]["fibre-routes"]) == 1
assert v[0]["fibre-routes"][0]["id"] == "carrier_id_3"
assert len(res["sid_circuits"]['SID-01']) == 2
for x in [
{
'circuit_id': "sub_circuit_2",
'sid': "SID-01",
'name': "sub_circuit_2",
'speed': 10 << 30,
'service_type': "PEERING R & E",
'project': "customer_1",
'customer': "customer_1",
'equipment': "eq_a",
'port': "if_c"
},
{
'circuit_id': "sub_circuit_2",
'sid': "SID-01",
'name': "sub_circuit_2",
'speed': 10 << 30,
'service_type': "PEERING R & E",
'project': "customer_1",
'customer': "customer_1",
'equipment': "eq_b",
'port': "if_c"
}
]:
assert json.dumps(x, sort_keys=True) in [
json.dumps(
y, sort_keys=True) for y in res["sid_circuits"]['SID-01']]
def test_persist_ims_data(mocker, data_config, mocked_redis):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment