From 08dbd2797796b751ef17a393b8ea88e5385726f6 Mon Sep 17 00:00:00 2001 From: Ilya Baldin Date: Tue, 8 Mar 2022 16:56:40 -0500 Subject: [PATCH] Fixes to allow cleaner access to capacities and allocated capacities in advertisements plus beefed up test cases; For 1.1 branch --- fim/__init__.py | 2 +- fim/slivers/capacities_labels.py | 16 +- fim/user/__init__.py | 1 + fim/user/model_element.py | 4 + fim/user/topology.py | 21 +- test/ad_topology_test.py | 84 +- test/models/advertised_topo.graphml | 1359 ++++++++++++++++++++++----- 7 files changed, 1219 insertions(+), 268 deletions(-) diff --git a/fim/__init__.py b/fim/__init__.py index ecd9be5..42c258d 100644 --- a/fim/__init__.py +++ b/fim/__init__.py @@ -1,2 +1,2 @@ # -__VERSION__ = "1.1.4" +__VERSION__ = "1.1.5" diff --git a/fim/slivers/capacities_labels.py b/fim/slivers/capacities_labels.py index 806f7a0..c5e8a19 100644 --- a/fim/slivers/capacities_labels.py +++ b/fim/slivers/capacities_labels.py @@ -238,20 +238,21 @@ def __str__(self): return ret[:-2] + "}" -class CapacityTuple: +class FreeCapacity: """ This class takes two capacities objects (what is the total - available and what is free) and helps print them. + available and what is allocated) and allows accessing what is + free (the difference between the two). """ def __init__(self, *, total: Capacities, allocated: Capacities): assert total is not None if allocated is None: allocated = Capacities() - self.available = total + self.total = total self.free = total - allocated def __str__(self): - d2 = self.available.__dict__.copy() + d2 = self.total.__dict__.copy() d1 = self.free.__dict__.copy() for k in self.free.__dict__: @@ -265,6 +266,13 @@ def __str__(self): ret = ret + k + ": " + f'{d1[k]:,}' + "/" + f'{d2[k]:,} ' + Capacities.UNITS[k] + ", " return ret[:-2] + '}' + def __getattr__(self, item): + """ + Provide access to same fields as capacities, computed as a difference between total and allocated + i.e. available or free + """ + return self.free.__getattribute__(item) + class CapacityHints(JSONField): """ diff --git a/fim/user/__init__.py b/fim/user/__init__.py index 45e8876..55f7814 100644 --- a/fim/user/__init__.py +++ b/fim/user/__init__.py @@ -53,3 +53,4 @@ ERO = pinfo.ERO Tags = tgs.Tags MeasurementData = mdata.MeasurementData +FreeCapacity = caplab.FreeCapacity diff --git a/fim/user/model_element.py b/fim/user/model_element.py index 6037eae..6f48168 100644 --- a/fim/user/model_element.py +++ b/fim/user/model_element.py @@ -146,6 +146,10 @@ def capacities(self, value: Capacities): if self.__dict__.get('topo', None) is not None: self.set_property('capacities', value) + @property + def capacity_allocations(self): + return self.get_property('capacity_allocations') if self.__dict__.get('topo', None) is not None else None + @property def labels(self): return self.get_property('labels') if self.__dict__.get('topo', None) is not None else None diff --git a/fim/user/topology.py b/fim/user/topology.py index 70c9c47..2a350f1 100644 --- a/fim/user/topology.py +++ b/fim/user/topology.py @@ -45,7 +45,7 @@ from ..graph.resources.networkx_arm import NetworkXARMGraph, NetworkXGraphImporter from ..slivers.delegations import Delegation, Delegations, Pools, DelegationType, DelegationFormat from fim.graph.resources.networkx_abqm import NetworkXAggregateBQM, NetworkXABQMFactory -from fim.slivers.capacities_labels import Capacities, CapacityTuple +from fim.slivers.capacities_labels import Capacities, FreeCapacity from fim.slivers.interface_info import InterfaceType from .model_element import ElementType @@ -913,26 +913,23 @@ def __str__(self): if self.sites: for n in self.sites.values(): tot_cap = n.capacities - alloc_cap = n.get_property('capacity_allocations') - if alloc_cap is None: - # if nothing is allocated, just zero out - alloc_cap = Capacities() + alloc_cap = n.capacity_allocations if tot_cap is not None: - ncp = CapacityTuple(total=tot_cap, allocated=alloc_cap) + ncp = FreeCapacity(total=tot_cap, allocated=alloc_cap) lines.append(n.name + " [Site] : " + str(ncp)) else: lines.append(n.name + " [Site]") lines.append("\tComponents:") for c in n.components.values(): - ccp = CapacityTuple(total=c.capacities, - allocated=c.get_property("capacity_allocations")) + ccp = FreeCapacity(total=c.capacities, + allocated=c.capacity_allocations) lines.append("\t\t" + c.name + ": " + " " + str(c.get_property("type")) + " " + c.model + " " + str(ccp)) lines.append("\tSite Interfaces:") for i in n.interface_list: if i.capacities is not None: - icp = CapacityTuple(total=i.capacities, - allocated=i.get_property("capacity_allocations")) + icp = FreeCapacity(total=i.capacities, + allocated=i.capacity_allocations) lines.append("\t\t" + i.name + ": " + str(i.get_property("type")) + " " + str(icp)) if self.facilities: @@ -941,8 +938,8 @@ def __str__(self): lines.append("\tFacility Interfaces:") for i in fp.interface_list: if i.capacities is not None: - icp = CapacityTuple(total=i.capacities, - allocated=i.get_property("capacity_allocations")) + icp = FreeCapacity(total=i.capacities, + allocated=i.capacity_allocations) lines.append("\t\t" + i.name + ": " + str(i.get_property("type")) + " " + str(icp) + " " + self.__print_caplabs__(i.labels)) diff --git a/test/ad_topology_test.py b/test/ad_topology_test.py index b6f82fe..ff5a405 100644 --- a/test/ad_topology_test.py +++ b/test/ad_topology_test.py @@ -3,7 +3,7 @@ import fim.user as f -class SliceTest(unittest.TestCase): +class AdTest(unittest.TestCase): def setUp(self): pass @@ -13,5 +13,85 @@ def tearDown(self) -> None: def testAd(self) -> None: self.topo = f.AdvertisedTopology(graph_file='test/models/advertised_topo.graphml') - self.assertEqual(self.topo.get_owner_node(self.topo.links['port+lbnl-data-sw:HundredGigE0/0/0/0.2401-link'].interface_list[0]).name, 'UKY') + + # + # site capacity (what is total) + # + self.assertEqual(self.topo.nodes['TACC'].capacities.core, 320) + # site allocated capacity (what is taken, in this case 18 cores) + self.assertEqual(self.topo.nodes['TACC'].capacity_allocations.core, 18) + # computing the difference + # option 1 (suggested) + ft = f.FreeCapacity(total=self.topo.nodes['TACC'].capacities, + allocated=self.topo.nodes['TACC'].capacity_allocations) + self.assertIsInstance(ft, f.FreeCapacity) + # ft (FreeCapacity) has the same fields as a regular capacity object + # computed as a difference between total and allocated (i.e. what is free) + """ + Possible Capacities or FreeCapacity fields + self.cpu = 0 + self.core = 0 + self.ram = 0 + self.disk = 0 + self.bw = 0 + self.burst_size = 0 + self.unit = 0 + self.mtu = 0 + """ + self.assertEqual(ft.core, 302) + # you can also access total like this: + self.assertEqual(ft.total.core, 320) + # and free like this (same as ft.core) + self.assertEqual(ft.free.core, 302) + print(f'{ft.core} of {ft.total.core} cores are available at TACC') + + # option 2 - Capacities object understands subtraction and addition, so + ft1 = self.topo.nodes['TACC'].capacities - self.topo.nodes['TACC'].capacity_allocations + # this time the result is a Capacities object, not FreeCapacity and it doesn't know the total + self.assertIsInstance(ft1, f.Capacities) + self.assertEqual(ft1.core, 302) + + # + # Components + # + # you can get the list of keys in components dictionary: + print(list(self.topo.nodes['TACC'].components.keys())) + # typical capacities on components are just unit counts, some have disk space etc + ft = f.FreeCapacity(total=self.topo.nodes['TACC'].components['GPU-Tesla T4'].capacities, + allocated=self.topo.nodes['TACC'].components['GPU-Tesla T4'].capacity_allocations) + self.assertEqual(ft.unit, 4) + print(f'{ft.unit} of {ft.total.unit} units of Tesla T4 is available at TACC') + # you can get component type and model (types print as strings, but are enums; model is always a string + self.assertIsInstance(self.topo.nodes['TACC'].components['GPU-Tesla T4'].type, f.ComponentType) + self.assertEqual(self.topo.nodes['TACC'].components['GPU-Tesla T4'].type, f.ComponentType.GPU) + print(f"Model string is {self.topo.nodes['TACC'].components['GPU-Tesla T4'].model}") + + + # + # Interfaces + # + # interfaces are attached to nodes in Advertisements (in slices can be attached to nodes or components) + print(self.topo.nodes['TACC'].interface_list) + ft = f.FreeCapacity(total=self.topo.nodes['TACC'].interfaces['TACC_DALL'].capacities, + allocated=self.topo.nodes['TACC'].interfaces['TACC_DALL'].capacity_allocations) + # full 100Gbps bandwidth is available in this case + self.assertEqual(ft.bw, 100) + # interface type + self.assertEqual(self.topo.nodes['TACC'].interfaces['TACC_DALL'].type, f.InterfaceType.TrunkPort) + + # + # Links + # + print(list(self.topo.links.keys())) + print(f"{self.topo.links['port+ncsa-data-sw:HundredGigE0/0/0/22.3000 to port+star-data-sw:HundredGigE0/0/0/31.3000']}") + # link attributes + self.assertEqual(self.topo.links['port+ncsa-data-sw:HundredGigE0/0/0/22.3000 to port+star-data-sw:HundredGigE0/0/0/31.3000'].layer, + f.Layer.L2) + self.assertEqual(self.topo.links['port+ncsa-data-sw:HundredGigE0/0/0/22.3000 to port+star-data-sw:HundredGigE0/0/0/31.3000'].type, + f.LinkType.L2Path) + # links have interfaces of nodes and you can reference interfaces from topology level, not just node or component level + # but only as a list, not a dictionary, because name collisions are possible on keys which are interface names + self.assertIn('STAR_NCSA', [x.name for x in self.topo.interface_list]) + print(f"{self.topo.nodes['STAR'].interfaces['STAR_NCSA']}") + self.assertEqual(self.topo.nodes['STAR'].interfaces['STAR_NCSA'].capacities.bw, 100) diff --git a/test/models/advertised_topo.graphml b/test/models/advertised_topo.graphml index baa7b5a..eea5e20 100644 --- a/test/models/advertised_topo.graphml +++ b/test/models/advertised_topo.graphml @@ -1,11 +1,12 @@ - - - - - - - + + + + + + + + @@ -13,412 +14,1272 @@ - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 CompositeNode - 47d1647e-d2cf-479d-b529-3f28d6c03eea - UKY + 163ee7a2-23bd-4d68-8fe4-e39639daa1fa + TACC Server - {"core": 192, "cpu": 6, "disk": 9600, "ram": 1536, "unit": 3} - false - UKY - {"postal": "301 Hilltop Ave Lexington, KY 40506"} + {"core": 320, "cpu": 10, "disk": 116400, "ram": 2560, "unit": 5} + {"core": 18, "disk": 70, "ram": 60} + false + TACC + {"postal": "10100 Burnet Rd,Austin, TX 78758"} - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 NetworkService - d7dd4be8-8967-4609-b144-502f73362725 - UKY_ns + 8a95031d-0564-48f1-87b9-31fa727f8125 + TACC_ns MPLS - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - d114cb1a-a27f-427f-a919-43c973edf1a6 + 777b70cd-aaeb-4d45-9ddb-d775bf335ab7 + NVME-P4510 + NVME + P4510 + {"disk": 15360, "unit": 16} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 2e9b7385-3b0d-4493-b756-7e3a7eeee70d + GPU-RTX6000 + GPU + RTX6000 + {"unit": 6} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 5caf7250-6e37-46cb-ac40-10b459b8551b + GPU-Tesla T4 + GPU + Tesla T4 + {"unit": 4} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 59d580ed-7718-498e-8903-bcdebe95d8a8 + SharedNIC-ConnectX-6 + SharedNIC + ConnectX-6 + {"unit": 635} + {"unit": 4} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 289665b9-e34d-4254-bccf-828d2b646347 SmartNIC-ConnectX-6 SmartNIC - ConnectX-6 + ConnectX-6 {"unit": 2} - false + {"unit": 2} + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 97f54576-fb89-42de-b9f1-cf21964354ab + d44d9e89-f17e-4da6-a200-336e337ec8f1 SmartNIC-ConnectX-5 SmartNIC - ConnectX-5 - {"unit": 2} - false + ConnectX-5 + {"unit": 4} + {"unit": 3} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + CompositeNode + a301add6-c6e8-4b69-9d94-b645361355c6 + UTAH + Server + {"core": 320, "cpu": 10, "disk": 116400, "ram": 2560, "unit": 5} + {"core": 14, "disk": 50, "ram": 44} + false + UTAH + {"postal": "875 South West Temple,Salt Lake City, UT 84101"} - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + NetworkService + 6206622e-ec5b-4560-990e-ad6245aa53e8 + UTAH_ns + MPLS + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 5071670f-6de4-4b8d-968e-4ca2b0fce996 + 466c1d2d-ef68-4bc2-8641-dead90d9ce65 NVME-P4510 NVME - P4510 - {"disk": 10000, "unit": 10} - false + P4510 + {"disk": 15360, "unit": 16} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 0394d828-8757-491d-abb9-38b5a9eab1ad + SharedNIC-ConnectX-6 + SharedNIC + ConnectX-6 + {"unit": 635} + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + d76381c9-280c-47b2-a802-f2e6925c31f5 + GPU-RTX6000 + GPU + RTX6000 + {"unit": 5} + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 49e79526-aff3-4854-8dfe-17e91b64c894 + aca988b2-c1c2-4b8d-b1e4-5d0af6696efe GPU-Tesla T4 GPU - Tesla T4 + Tesla T4 {"unit": 4} - false + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - ac4a947c-df9f-4d0f-9885-6ed91c29968c + 062150ae-69d6-44e0-991f-0ab7928d2a61 + SmartNIC-ConnectX-6 + SmartNIC + ConnectX-6 + {"unit": 2} + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + ec5ee119-c4f9-43b9-84c3-c50c801432b5 + SmartNIC-ConnectX-5 + SmartNIC + ConnectX-5 + {"unit": 4} + {"unit": 3} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + CompositeNode + 39c30170-d72f-4eaf-bf2a-10001f144142 + WASH + Server + {"core": 192, "cpu": 6, "disk": 60600, "ram": 1536, "unit": 3} + false + WASH + {"postal": "The Bexley, 1761 Old Meadow Road, McLean, VA 22102, United States of America"} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + NetworkService + c17b4a1d-fdda-4ff0-b0f1-73e781d3d032 + WASH_ns + MPLS + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 0eebcc95-33cd-4407-89d1-fae49034912f + NVME-P4510 + NVME + P4510 + {"disk": 9600, "unit": 10} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 65206fc3-af6e-403a-a1d3-3b0bd37621da GPU-RTX6000 GPU - RTX6000 + RTX6000 + {"unit": 3} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 1289a315-03b9-45c3-9f1c-116b1bcd9812 + GPU-Tesla T4 + GPU + Tesla T4 {"unit": 2} - false + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 0b1cf83d-f9ef-4a65-804b-991748b9e3e0 + 4f7c9b3e-fb2f-4db7-b5cd-4da824dfd5ed SharedNIC-ConnectX-6 SharedNIC - ConnectX-6 + ConnectX-6 {"unit": 381} - false + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 8550d004-4d21-4021-be02-ad3bff457eb7 + SmartNIC-ConnectX-6 + SmartNIC + ConnectX-6 + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 695eea4c-202a-4952-8c42-c678821dd4f3 + SmartNIC-ConnectX-5 + SmartNIC + ConnectX-5 + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 CompositeNode - 63490b14-132b-47c1-98c9-07dc19921d9e - LBNL + 1f081bc0-8d0c-4afa-b7ab-f78235bc1247 + MICH Server - {"core": 192, "cpu": 6, "disk": 9600, "ram": 1536, "unit": 3} - {"core": 2, "disk": 10, "ram": 6} - false - LBNL - {"postal": "1 Cyclotron Rd, Berkeley, CA 94720"} - - - 785bdecd-2bac-49e2-8469-e652f5207e32 + {"core": 192, "cpu": 6, "disk": 60600, "ram": 1536, "unit": 3} + {"core": 18, "disk": 90, "ram": 72} + false + MICH + {"postal": "2530 Draper Dr,Ann Arbor, MI 48109"} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 NetworkService - 19029356-785b-4a02-b322-411295c5e15a - LBNL_ns + aab7033f-e993-4872-a15a-768b62f7a0c5 + MICH_ns MPLS - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - a9910828-3df3-4ea7-93b6-a85db8703747 + 8eb8e8dc-0346-4c2c-983e-08d1700c6600 NVME-P4510 NVME - P4510 - {"disk": 10000, "unit": 10} - {"disk": 1000, "unit": 1} - false + P4510 + {"disk": 9600, "unit": 10} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 603c786a-c4df-4346-894b-59fe2222915f + GPU-Tesla T4 + GPU + Tesla T4 + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 09086a3e-07f0-49d3-884a-0ab8bafb8572 + GPU-RTX6000 + GPU + RTX6000 + {"unit": 3} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 3f8c66a9-2f7c-49ac-b776-b52e8a0c345d + SmartNIC-ConnectX-5 + SmartNIC + ConnectX-5 + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + f7826054-d18d-4fe0-89ce-9853614c931a + SmartNIC-ConnectX-6 + SmartNIC + ConnectX-6 + {"unit": 2} + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - b7b098a4-e018-4bfb-a333-bad39937ab99 + 648c85a9-c357-4da9-8598-03e29afe00c9 SharedNIC-ConnectX-6 SharedNIC - ConnectX-6 + ConnectX-6 {"unit": 381} - false + {"unit": 8} + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + CompositeNode + d917bd6a-3112-4795-b164-c7229a5bcda8 + SALT + Server + {"core": 192, "cpu": 6, "disk": 60600, "ram": 1536, "unit": 3} + false + SALT + {"postal": "572 Delong St,Salt Lake City, UT 84104"} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + NetworkService + cf816092-41ec-4767-b181-4e20ad8285d5 + SALT_ns + MPLS + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 1dc2681e-aa7d-4209-a7a6-a6c2ea05aaca - GPU-RTX6000 + da0b52a1-8ab6-48c6-a9df-526479fcea99 + NVME-P4510 + NVME + P4510 + {"disk": 9600, "unit": 10} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + d976a576-16ca-4384-9f54-6da6913ad4ed + GPU-Tesla T4 GPU - RTX6000 + Tesla T4 {"unit": 2} - false + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 2eeaf48d-9cc0-4f49-abc6-8753a3172150 - GPU-Tesla T4 + e0452501-7dae-4a23-88b4-12a4d2754200 + GPU-RTX6000 GPU - Tesla T4 - {"unit": 4} - false + RTX6000 + {"unit": 3} + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 615c01f1-be8d-4100-858a-e2c190d4a6ae + e646c379-8eaf-40e3-876a-bcb92ab434dd + SharedNIC-ConnectX-6 + SharedNIC + ConnectX-6 + {"unit": 381} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 0ed3c253-add3-49fd-9330-654bb4b21679 + SmartNIC-ConnectX-5 + SmartNIC + ConnectX-5 + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + d9e3dd68-735a-4b41-8e5e-9ece6d1863f6 SmartNIC-ConnectX-6 SmartNIC - ConnectX-6 + ConnectX-6 {"unit": 2} - false + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + CompositeNode + 6d7044f0-0549-429d-8830-fb858e4aea55 + STAR + Server + {"core": 384, "cpu": 12, "disk": 121200, "ram": 3072, "unit": 6} + {"core": 2, "disk": 10, "ram": 8} + false + STAR + {"postal": "710 North Lake Shore Dr,Chicago, IL 60611"} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + NetworkService + 34dd9939-7780-48bd-a2c9-a714390bed1a + STAR_ns + MPLS + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 4c04c0df-ff2c-4f94-a894-eb16bad847d2 + NVME-P4510 + NVME + P4510 + {"disk": 20000, "unit": 20} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + d9aa3c2b-510b-4434-a58b-4808555551e9 + GPU-Tesla T4 + GPU + Tesla T4 + {"unit": 6} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 8b64e222-9ce7-477d-a491-766d9e9ccf07 + GPU-RTX6000 + GPU + RTX6000 + {"unit": 6} + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - c5f3c2d0-d1f2-40bc-8da5-f9d865a0b983 + 5fa6c2c8-f6fe-496d-a644-739b1067534f SmartNIC-ConnectX-5 SmartNIC - ConnectX-5 + ConnectX-5 + {"unit": 6} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 913ae2e0-25be-4e3c-bf96-4f6cb3b10a0d + SmartNIC-ConnectX-6 + SmartNIC + ConnectX-6 {"unit": 2} - false + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + a2b191a6-95fb-45d9-98a7-3db269a69209 + SharedNIC-ConnectX-6 + SharedNIC + ConnectX-6 + {"unit": 762} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 CompositeNode - 5fc69003-bfa0-4c3d-ae14-d1a4bc604583 - RENC + 18fdc629-8ef7-472b-be34-7e2403869371 + NCSA Server - {"core": 192, "cpu": 6, "disk": 14400, "ram": 1536, "unit": 3} - false - RENC - {"postal": "100 Europa Dr., Chapel Hill, NC 27517"} + {"core": 192, "cpu": 6, "disk": 60600, "ram": 1536, "unit": 3} + false + NCSA + {"postal": "1725 S Oak St.,Champaign, IL 61820"} - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 NetworkService - 4ff6c7b7-956f-4868-8d20-954af5dbb432 - RENC_ns + 9f732006-f3f4-4d6c-af9b-ad9b89a7ca49 + NCSA_ns MPLS - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 8f91a318-977d-4c66-a9b7-37fcf368f95e + NVME-P4510 + NVME + P4510 + {"disk": 9600, "unit": 10} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 97b64483-6dcc-4e59-ace8-3c9e97e1005d + GPU-Tesla T4 + GPU + Tesla T4 + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 6704ed7d-7454-41e8-9e37-c920d99da703 + e9536025-abf1-4d16-b014-bd5cdb8df99c + GPU-RTX6000 + GPU + RTX6000 + {"unit": 3} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 5135db98-e150-4d6f-adc7-23ce65d831e9 SmartNIC-ConnectX-5 SmartNIC - ConnectX-5 + ConnectX-5 {"unit": 2} - false + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 8862aaaa-a89e-4fdb-82b4-a63e5be455a3 + 6b322214-e283-4558-8da4-e599c8cb44cc SmartNIC-ConnectX-6 SmartNIC - ConnectX-6 + ConnectX-6 {"unit": 2} - false + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 85443ae4-7fd6-4513-9f07-1e7cd12def6f + 40e91a91-7e3f-43f3-bbc6-14d4ecb70596 + SharedNIC-ConnectX-6 + SharedNIC + ConnectX-6 + {"unit": 381} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + CompositeNode + 580182e9-424e-45c5-be0b-251f1fb5247f + MAX + Server + {"core": 320, "cpu": 10, "disk": 116400, "ram": 2560, "unit": 5} + {"core": 30, "disk": 720, "ram": 152} + false + MAX + {"postal": "4161 Fieldhouse Dr,College Park, MD 20742"} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + NetworkService + 9279c5cd-c638-472e-80ed-8c8beec3bae7 + MAX_ns + MPLS + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 1ab74d5b-6db8-407a-b451-309d21988a1e NVME-P4510 NVME - P4510 - {"disk": 10000, "unit": 10} - false + P4510 + {"disk": 15360, "unit": 16} + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - d39c513b-726d-4c07-b70e-ffbd6e020232 + 6f640e30-87ab-494e-b78a-97e4fa3af90a GPU-Tesla T4 GPU - Tesla T4 + Tesla T4 {"unit": 4} - false + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - bbb11abc-04fc-413c-8671-1c4a597e6d84 + 62044200-023b-43e5-bb25-b6cee1477ae5 GPU-RTX6000 GPU - RTX6000 + RTX6000 + {"unit": 6} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 02de1e80-1e1e-4efb-aa5d-f70f5b8203c4 + SharedNIC-ConnectX-6 + SharedNIC + ConnectX-6 + {"unit": 635} + {"unit": 7} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 2de6594e-b845-41bc-b2e1-2d03be4a7f03 + SmartNIC-ConnectX-5 + SmartNIC + ConnectX-5 + {"unit": 4} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + e68e2dd1-76ef-4ba0-932d-42e7739e411b + SmartNIC-ConnectX-6 + SmartNIC + ConnectX-6 + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + CompositeNode + 05a25bc9-42f9-4f90-a6a4-426a770a0878 + DALL + Server + {"core": 192, "cpu": 6, "disk": 60600, "ram": 1536, "unit": 3} + {"core": 8, "disk": 100, "ram": 32} + false + DALL + {"postal": "1950 N Stemmons Fwy,Dallas, TX 75207"} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + NetworkService + d03b2ff7-8094-4a17-af8e-508d4c38c996 + DALL_ns + MPLS + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 62b0afbc-bea0-4deb-9f3e-6a5a6b5a785d + GPU-RTX6000 + GPU + RTX6000 + {"unit": 3} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 4d1f48e8-cae3-4a7d-9c19-bca1f5b08f35 + GPU-Tesla T4 + GPU + Tesla T4 {"unit": 2} - false + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Component - 843083ff-2d6b-4f4c-a60e-1741010b93b2 + bcdd173f-ab3e-49de-964f-47341ec6b9d5 + NVME-P4510 + NVME + P4510 + {"disk": 9600, "unit": 10} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 6263a1f3-e9a8-4fb6-be26-6bd9f5d50bae SharedNIC-ConnectX-6 SharedNIC - ConnectX-6 + ConnectX-6 {"unit": 381} - false + {"unit": 1} + false - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + d11694a8-3501-4696-8cea-33ecc07a51ef + SmartNIC-ConnectX-6 + SmartNIC + ConnectX-6 + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Component + 81c24d21-ca9a-4f7d-95b1-221bac0843cb + SmartNIC-ConnectX-5 + SmartNIC + ConnectX-5 + {"unit": 2} + false + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + CompositeNode + 88f8ce31-4739-4115-b675-9fa0017533c8 + MASS + Server + false + MASS + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + NetworkService + e7222420-25e0-4fbc-af85-2f5e22a26c93 + MASS_ns + MPLS + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 ConnectionPoint - c4b4fa05-2547-4889-a8d5-8eeef38cc659 - UKY_LBNL + 0a16aa0d-87c5-4714-8a58-fb0a2c517bcd + STAR_NCSA TrunkPort + {"ipv4": "10.129.128.133", "ipv6": "2602:fcfb:3:1024::5", "local_name": "HundredGigE0/0/0/31.3000", "mac": "b0:a6:51:e2:44:7c"} {"bw": 100} - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 ConnectionPoint - 768fb884-1373-4f20-a31c-b7bb106b90b0 - LBNL_UKY + 61891250-9b94-4df4-8f48-29d7dda7966f + NCSA_STAR TrunkPort + {"ipv4": "10.129.128.134", "ipv6": "2602:fcfb:3:1024::6", "local_name": "HundredGigE0/0/0/22.3000", "mac": "7c:f8:80:4e:85:5c"} {"bw": 100} - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Link - link:local-port+lbnl-data-sw:HundredGigE0/0/0/0.2401:remote-port+uky-data-sw:HundredGigE0/0/0/0.851 - port+lbnl-data-sw:HundredGigE0/0/0/0.2401-link + link:local-port+ncsa-data-sw:HundredGigE0/0/0/22.3000:remote-port+star-data-sw:HundredGigE0/0/0/31.3000 + port+ncsa-data-sw:HundredGigE0/0/0/22.3000 to port+star-data-sw:HundredGigE0/0/0/31.3000 L2Path - L2 + L2 - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 ConnectionPoint - 693ccd57-990e-47e6-91ae-70dd0478ffed - RENC_LBNL + b0eaa57c-58ae-41f9-896b-a27841e97c66 + STAR_NCSA TrunkPort - {"bw": 10} + {"ipv4": "10.129.128.145", "ipv6": "2602:fcfb:3:1024::11", "local_name": "HundredGigE0/0/0/30.3710", "mac": "b0:a6:51:e2:44:78"} + {"bw": 100} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + 3bde4f2f-00c6-497a-a527-d7e24208347b + NCSA_STAR + TrunkPort + {"ipv4": "10.129.128.146", "local_name": "HundredGigE0/0/0/23.3710", "mac": "7c:f8:80:4e:85:60"} + {"bw": 100} - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Link + link:local-port+ncsa-data-sw:HundredGigE0/0/0/23.3710:remote-port+star-data-sw:HundredGigE0/0/0/30.3710 + port+ncsa-data-sw:HundredGigE0/0/0/23.3710 to port+star-data-sw:HundredGigE0/0/0/30.3710 + L2Path + L2 + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + d943c7c8-3305-4007-8ded-7f7c8ed885f2 + STAR_MICH + TrunkPort + {"ipv4": "10.129.128.129", "ipv6": "2602:fcfb:3:1024::1", "local_name": "HundredGigE0/0/0/32.3000", "mac": "b0:a6:51:e2:44:80"} + {"bw": 100} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + 77f58f99-9c82-4022-9767-0eecb5824987 + MICH_STAR + TrunkPort + {"ipv4": "10.129.128.130", "ipv6": "2602:fcfb:3:1024::2", "local_name": "HundredGigE0/0/0/23.3000", "mac": "7c:f8:80:4e:8a:60"} + {"bw": 100} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Link + link:local-port+mich-data-sw:HundredGigE0/0/0/23.3000:remote-port+star-data-sw:HundredGigE0/0/0/32.3000 + port+mich-data-sw:HundredGigE0/0/0/23.3000 to port+star-data-sw:HundredGigE0/0/0/32.3000 + L2Path + L2 + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 ConnectionPoint - d4740c0e-fa46-4aa1-be8c-88a99d781cbf - LBNL_RENC + 06d1e726-b216-4d3a-a29e-70de1b83a44e + STAR_DALL TrunkPort + {"ipv4": "10.129.128.153", "ipv6": "2602:fcfb:3:1024::19", "local_name": "HundredGigE0/0/0/34.3000", "mac": "b0:a6:51:e2:44:88"} {"bw": 100} - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + 96f200d6-086f-450e-b1ce-d29a7d6c09f8 + DALL_STAR + TrunkPort + {"ipv4": "10.129.128.154", "ipv6": "2602:fcfb:3:1024::1a", "local_name": "HundredGigE0/0/0/23.3000", "mac": "7c:f8:80:4e:8e:60"} + {"bw": 100} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Link + link:local-port+dall-data-sw:HundredGigE0/0/0/23.3000:remote-port+star-data-sw:HundredGigE0/0/0/34.3000 + port+dall-data-sw:HundredGigE0/0/0/23.3000 to port+star-data-sw:HundredGigE0/0/0/34.3000 + L2Path + L2 + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + e7da06be-fb03-4381-90d5-f60514bf04c6 + UTAH_STAR + TrunkPort + {"ipv4": "10.129.128.142", "ipv6": "2602:fcfb:3:1024::e", "local_name": "HundredGigE0/0/0/22.2090", "mac": "b0:a6:51:13:98:58"} + {"bw": 100} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + 0182f4ba-9e95-4746-b903-83d9ecd96076 + STAR_UTAH + TrunkPort + {"ipv4": "10.129.128.141", "ipv6": "2602:fcfb:3:1024::d", "local_name": "HundredGigE0/0/0/30.3722", "mac": "b0:a6:51:e2:44:78"} + {"bw": 100} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Link + link:local-port+star-data-sw:HundredGigE0/0/0/30.3722:remote-port+utah-data-sw:HundredGigE0/0/0/22.2090 + port+star-data-sw:HundredGigE0/0/0/30.3722 to port+utah-data-sw:HundredGigE0/0/0/22.2090 + L2Path + L2 + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + 8d84fb7a-cf24-4f4d-923f-bce6745e736e + TACC_DALL + TrunkPort + {"ipv4": "10.130.128.133", "ipv6": "2602:fcfb:5:1024::5", "local_name": "HundredGigE0/0/0/23.3162", "mac": "7c:f8:80:4e:49:60"} + {"bw": 100} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + d359eaf4-ec5f-4387-8757-933b476cf68b + DALL_TACC + TrunkPort + {"ipv4": "10.130.128.134", "ipv6": "2602:fcfb:5:1024::6", "local_name": "TenGigE0/0/0/12/0.2004", "mac": "7c:f8:80:4e:8e:34"} + {"bw": 10} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Link + link:local-port+dall-data-sw:TenGigE0/0/0/12/0.2004:remote-port+tacc-data-sw:HundredGigE0/0/0/23.3162 + port+dall-data-sw:TenGigE0/0/0/12/0.2004 to port+tacc-data-sw:HundredGigE0/0/0/23.3162 + L2Path + L2 + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + 2a67b4cd-6e3c-4c3e-a570-a5723808fbec + WASH_DALL + TrunkPort + {"ipv4": "10.133.0.137", "ipv6": "2602:fcfb:a:1024::9", "local_name": "TenGigE0/0/0/12/0.2003", "mac": "7c:f8:80:4e:8c:34"} + {"bw": 10} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + dc547e8e-8b88-4246-856c-a879fd3617a2 + DALL_WASH + TrunkPort + {"ipv4": "10.133.0.138", "ipv6": "2602:fcfb:a:1024::a", "local_name": "TenGigE0/0/0/12/0.2003", "mac": "7c:f8:80:4e:8e:34"} + {"bw": 10} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Link - link:local-port+lbnl-data-sw:HundredGigE0/0/0/0.2400:remote-port+renc-data-sw:TenGigE0/0/0/2/0.3981 - port+lbnl-data-sw:HundredGigE0/0/0/0.2400-link + link:local-port+dall-data-sw:TenGigE0/0/0/12/0.2003:remote-port+wash-data-sw:TenGigE0/0/0/12/0.2003 + port+dall-data-sw:TenGigE0/0/0/12/0.2003 to port+wash-data-sw:TenGigE0/0/0/12/0.2003 L2Path - L2 + L2 + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + d1c558ea-b290-49c5-b34b-50d151611773 + WASH_STAR + TrunkPort + {"ipv4": "10.129.128.150", "ipv6": "2602:fcfb:3:1024::16", "local_name": "HundredGigE0/0/0/23.3000", "mac": "7c:f8:80:4e:8c:60"} + {"bw": 100} - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 ConnectionPoint - 353ee0e1-c160-48dd-baed-4d09da13507b - UKY_RENC + ac28bb39-dc4e-4194-ba6f-b4daf373506b + STAR_WASH TrunkPort + {"ipv4": "10.129.128.149", "ipv6": "2602:fcfb:3:1024::15", "local_name": "HundredGigE0/0/0/35.3000", "mac": "b0:a6:51:e2:44:8c"} {"bw": 100} - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + Link + link:local-port+star-data-sw:HundredGigE0/0/0/35.3000:remote-port+wash-data-sw:HundredGigE0/0/0/23.3000 + port+star-data-sw:HundredGigE0/0/0/35.3000 to port+wash-data-sw:HundredGigE0/0/0/23.3000 + L2Path + L2 + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 ConnectionPoint - 0f7e8805-653d-46cc-846e-41de6679f594 - RENC_UKY + 1d23e03f-e9c0-436c-8769-30681746774f + WASH_MAX TrunkPort + {"ipv4": "10.130.0.142", "ipv6": "2602:fcfb:4:1024::e", "local_name": "TenGigE0/0/0/12/0.2040", "mac": "7c:f8:80:4e:8c:34"} {"bw": 10} - - 785bdecd-2bac-49e2-8469-e652f5207e32 + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 + ConnectionPoint + 6eb74663-42dc-4c49-8919-452c818e01e8 + MAX_WASH + TrunkPort + {"ipv4": "10.130.0.141", "ipv6": "2602:fcfb:4:1024::d", "local_name": "HundredGigE0/0/0/22.2040", "mac": "b0:a6:51:13:a0:58"} + {"bw": 100} + + + 49c2b1a8-fa52-4bdf-ab10-ff313298ce83 Link - link:local-port+renc-data-sw:TenGigE0/0/0/2/0.3999:remote-port+uky-data-sw:HundredGigE0/0/0/0.859 - port+renc-data-sw:TenGigE0/0/0/2/0.3999-link + link:local-port+max-data-sw:HundredGigE0/0/0/22.2040:remote-port+wash-data-sw:TenGigE0/0/0/12/0.2040 + port+max-data-sw:HundredGigE0/0/0/22.2040 to port+wash-data-sw:TenGigE0/0/0/12/0.2040 L2Path - L2 + L2 - - has + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + connects + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + connects + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + connects + + + connects + + + connects + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + connects + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + connects + + + connects + + + connects + + + connects + + + connects + + + connects + + + has + + + has + + + has + + + has + + + has + + + has + + + has + + + connects + + + connects + + + has + + + has + + + has + + + has + + + has - - has + + has - - has + + has - - has + + connects - - has + + has - - has + + has - - has + + has - - connects + + has - - connects + + has - - has + + has - - has + + has - - has + + connects - - has + + connects - - has + + connects - - has + + has - - has + + connects - - connects + + connects - - connects + + connects - - has + + connects - - has + + connects - - has + + connects - - has + + connects - - has + + connects - - has + + connects - - has + + connects - - connects + + connects - - connects + + connects - - connects + + connects - - connects + + connects - - connects + + connects - - connects + + connects - - connects + + connects - - connects + + connects \ No newline at end of file