diff --git a/cable_map/frontend/dev/fixtures/ai-fabric-196-topology.json b/cable_map/frontend/dev/fixtures/ai-fabric-196-topology.json index 9826c29..2e7597c 100644 --- a/cable_map/frontend/dev/fixtures/ai-fabric-196-topology.json +++ b/cable_map/frontend/dev/fixtures/ai-fabric-196-topology.json @@ -5,6 +5,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -579,6 +580,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -1153,6 +1155,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -1727,6 +1730,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -2301,6 +2305,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -2875,6 +2880,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -3448,6 +3454,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -4022,6 +4029,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -4596,6 +4604,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -5169,6 +5178,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -5743,6 +5753,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -6316,6 +6327,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -6890,6 +6902,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -7464,6 +7477,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -8037,6 +8051,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -8611,6 +8626,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -9185,6 +9201,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -9759,6 +9776,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -10332,6 +10350,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -10906,6 +10925,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -11479,6 +11499,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -12053,6 +12074,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -12626,6 +12648,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -13199,6 +13222,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -13773,6 +13797,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -14347,6 +14372,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -14921,6 +14947,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -15494,6 +15521,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -16068,6 +16096,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -16641,6 +16670,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -17215,6 +17245,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -17788,6 +17819,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -18362,6 +18394,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -18935,6 +18968,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -19509,6 +19543,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -20083,6 +20118,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -20657,6 +20693,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -21231,6 +21268,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -21804,6 +21842,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -22378,6 +22417,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -22951,6 +22991,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -23525,6 +23566,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -24098,6 +24140,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -24672,6 +24715,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -25245,6 +25289,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -25819,6 +25864,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -26393,6 +26439,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -26967,6 +27014,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -27541,6 +27589,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -28115,6 +28164,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -28689,6 +28739,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -29262,6 +29313,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -29836,6 +29888,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -30409,6 +30462,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -30983,6 +31037,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -31556,6 +31611,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -32130,6 +32186,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -32704,6 +32761,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -33278,6 +33336,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -33852,6 +33911,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -34426,6 +34486,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -35000,6 +35061,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -35573,6 +35635,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -36147,6 +36210,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -36720,6 +36784,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -37303,6 +37368,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -37886,6 +37952,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -38469,6 +38536,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -39052,6 +39120,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -39635,6 +39704,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -40218,6 +40288,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -40800,6 +40871,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -41383,6 +41455,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -41966,6 +42039,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -42549,6 +42623,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -43131,6 +43206,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -43714,6 +43790,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -44297,6 +44374,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -44880,6 +44958,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -45463,6 +45542,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -46045,6 +46125,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -46628,6 +46709,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -47210,6 +47292,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -47793,6 +47876,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -48375,6 +48459,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -48958,6 +49043,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -49540,6 +49626,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -50123,6 +50210,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -50706,6 +50794,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -51289,6 +51378,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -51872,6 +51962,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -52454,6 +52545,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -53037,6 +53129,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -53619,6 +53712,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -54202,6 +54296,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -54784,6 +54879,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -55367,6 +55463,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -55949,6 +56046,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -56532,6 +56630,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -57115,6 +57214,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -57698,6 +57798,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -58281,6 +58382,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -58863,6 +58965,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -59446,6 +59549,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -60028,6 +60132,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -60611,6 +60716,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -61193,6 +61299,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -61776,6 +61883,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -62358,6 +62466,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -62941,6 +63050,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -63524,6 +63634,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -64107,6 +64218,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -64690,6 +64802,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -65273,6 +65386,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -65856,6 +65970,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -66438,6 +66553,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -67021,6 +67137,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -67603,6 +67720,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -68186,6 +68304,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -68768,6 +68887,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -69351,6 +69471,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -69934,6 +70055,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -70517,6 +70639,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -71100,6 +71223,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -71683,6 +71807,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -72266,6 +72391,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -72848,6 +72974,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -73431,6 +73558,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -74013,6 +74141,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -75172,6 +75301,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -76330,6 +76460,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -77489,6 +77620,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -78647,6 +78779,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -79805,6 +79938,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -80964,6 +81098,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -82122,6 +82257,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -83280,6 +83416,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -84439,6 +84576,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -85597,6 +85735,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -86755,6 +86894,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -87914,6 +88054,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -89072,6 +89213,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -90230,6 +90372,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -91389,6 +91532,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -92547,6 +92691,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -93705,6 +93850,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -94864,6 +95010,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -96022,6 +96169,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -97181,6 +97329,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -98339,6 +98488,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -99497,6 +99647,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -100656,6 +100807,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -101814,6 +101966,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -102972,6 +103125,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -104131,6 +104285,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -105289,6 +105444,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -106447,6 +106603,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -107606,6 +107763,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -108764,6 +108922,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -109922,6 +110081,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -111081,6 +111241,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -112239,6 +112400,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -113397,6 +113559,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -114556,6 +114719,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -115714,6 +115878,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -116873,6 +117038,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -118031,6 +118197,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -119189,6 +119356,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -120348,6 +120516,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -121506,6 +121675,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -122664,6 +122834,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -123823,6 +123994,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -124981,6 +125153,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -126139,6 +126312,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -127298,6 +127472,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -128456,6 +128631,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -129614,6 +129790,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -130773,6 +130950,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -131931,6 +132109,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -133089,6 +133268,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -134248,6 +134428,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -135406,6 +135587,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -136565,6 +136747,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -137723,6 +137906,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -138881,6 +139065,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -140040,6 +140225,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -141198,6 +141384,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -142356,6 +142543,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -143515,6 +143703,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -144673,6 +144862,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -145831,6 +146021,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -146990,6 +147181,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -148148,6 +148340,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -148758,6 +148951,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -149367,6 +149561,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { @@ -149977,6 +150172,7 @@ "platform": "7220 IXR-H2", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-ai-fabric-196", "version": "dev-ai-fabric-196", "labels": { diff --git a/cable_map/frontend/dev/fixtures/large-1000-topology.json b/cable_map/frontend/dev/fixtures/large-1000-topology.json index c0f059d..73a57f8 100644 --- a/cable_map/frontend/dev/fixtures/large-1000-topology.json +++ b/cable_map/frontend/dev/fixtures/large-1000-topology.json @@ -5,6 +5,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -93,6 +94,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -181,6 +183,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -269,6 +272,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -357,6 +361,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -445,6 +450,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -533,6 +539,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -621,6 +628,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -709,6 +717,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -797,6 +806,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -885,6 +895,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -973,6 +984,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -1061,6 +1073,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -1149,6 +1162,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -1237,6 +1251,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -1325,6 +1340,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -1413,6 +1429,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -1501,6 +1518,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -1589,6 +1607,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -1677,6 +1696,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -1765,6 +1785,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -2007,6 +2028,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -2248,6 +2270,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -2490,6 +2513,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -2732,6 +2756,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -2974,6 +2999,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -3216,6 +3242,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -3458,6 +3485,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -3700,6 +3728,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -3942,6 +3971,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -4184,6 +4214,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -4425,6 +4456,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -4667,6 +4699,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -4909,6 +4942,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -5151,6 +5185,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -5393,6 +5428,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -5635,6 +5671,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -5877,6 +5914,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -6119,6 +6157,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -6361,6 +6400,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -6603,6 +6643,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -6845,6 +6886,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -7086,6 +7128,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -7328,6 +7371,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -7570,6 +7614,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -7812,6 +7857,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -8054,6 +8100,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -8296,6 +8343,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -8538,6 +8586,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -8780,6 +8829,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -9022,6 +9072,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -9263,6 +9314,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -9505,6 +9557,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -9746,6 +9799,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -9988,6 +10042,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -10230,6 +10285,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -10472,6 +10528,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -10714,6 +10771,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -10956,6 +11014,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -11198,6 +11257,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -11439,6 +11499,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -11672,6 +11733,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -11905,6 +11967,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -12138,6 +12201,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -12371,6 +12435,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -12604,6 +12669,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -12837,6 +12903,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -13070,6 +13137,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -13303,6 +13371,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -13535,6 +13604,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -13768,6 +13838,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -14001,6 +14072,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -14234,6 +14306,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -14467,6 +14540,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -14700,6 +14774,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -14933,6 +15008,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -15166,6 +15242,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -15399,6 +15476,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -15632,6 +15710,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -15865,6 +15944,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -16097,6 +16177,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -16330,6 +16411,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -16563,6 +16645,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -16796,6 +16879,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -17029,6 +17113,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -17262,6 +17347,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -17495,6 +17581,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -17728,6 +17815,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -17961,6 +18049,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -18193,6 +18282,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -18426,6 +18516,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -18659,6 +18750,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -18892,6 +18984,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -19125,6 +19218,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -19358,6 +19452,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -19591,6 +19686,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -19824,6 +19920,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -20057,6 +20154,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -20290,6 +20388,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -20523,6 +20622,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -20755,6 +20855,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -20790,6 +20891,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -20825,6 +20927,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -20860,6 +20963,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -20895,6 +20999,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -20930,6 +21035,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -20965,6 +21071,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21000,6 +21107,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21035,6 +21143,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21070,6 +21179,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21105,6 +21215,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21140,6 +21251,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21175,6 +21287,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21210,6 +21323,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21245,6 +21359,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21280,6 +21395,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21315,6 +21431,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21349,6 +21466,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21384,6 +21502,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21419,6 +21538,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21454,6 +21574,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21489,6 +21610,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21524,6 +21646,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21559,6 +21682,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21594,6 +21718,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21629,6 +21754,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21664,6 +21790,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21699,6 +21826,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21734,6 +21862,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21769,6 +21898,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21804,6 +21934,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21839,6 +21970,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21874,6 +22006,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21909,6 +22042,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21944,6 +22078,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -21979,6 +22114,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22014,6 +22150,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22049,6 +22186,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22084,6 +22222,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22119,6 +22258,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22154,6 +22294,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22189,6 +22330,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22224,6 +22366,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22259,6 +22402,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22294,6 +22438,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22329,6 +22474,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22364,6 +22510,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22399,6 +22546,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22434,6 +22582,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22469,6 +22618,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22504,6 +22654,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22539,6 +22690,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22574,6 +22726,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22609,6 +22762,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22644,6 +22798,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22679,6 +22834,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22714,6 +22870,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22749,6 +22906,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22784,6 +22942,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22819,6 +22978,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22854,6 +23014,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22889,6 +23050,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22924,6 +23086,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22959,6 +23122,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -22994,6 +23158,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23029,6 +23194,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23064,6 +23230,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23099,6 +23266,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23134,6 +23302,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23169,6 +23338,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23204,6 +23374,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23239,6 +23410,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23274,6 +23446,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23309,6 +23482,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23344,6 +23518,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23379,6 +23554,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23414,6 +23590,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23449,6 +23626,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23484,6 +23662,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23519,6 +23698,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23554,6 +23734,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23589,6 +23770,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23624,6 +23806,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23659,6 +23842,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23694,6 +23878,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23729,6 +23914,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23764,6 +23950,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23799,6 +23986,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23834,6 +24022,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23869,6 +24058,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23904,6 +24094,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23939,6 +24130,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -23974,6 +24166,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24009,6 +24202,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24044,6 +24238,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24079,6 +24274,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24114,6 +24310,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24149,6 +24346,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24184,6 +24382,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24219,6 +24418,7 @@ "platform": "7750 SR-1-48D", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24254,6 +24454,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24298,6 +24499,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24342,6 +24544,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24386,6 +24589,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24430,6 +24634,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24474,6 +24679,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24518,6 +24724,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24562,6 +24769,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24606,6 +24814,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24650,6 +24859,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24694,6 +24904,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24738,6 +24949,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24782,6 +24994,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24825,6 +25038,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24869,6 +25083,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24913,6 +25128,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -24957,6 +25173,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25001,6 +25218,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25045,6 +25263,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25089,6 +25308,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25133,6 +25353,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25177,6 +25398,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25221,6 +25443,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25265,6 +25488,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25309,6 +25533,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25353,6 +25578,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25397,6 +25623,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25441,6 +25668,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25485,6 +25713,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25529,6 +25758,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25573,6 +25803,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25617,6 +25848,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25661,6 +25893,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25705,6 +25938,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25749,6 +25983,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25793,6 +26028,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25837,6 +26073,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25881,6 +26118,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25925,6 +26163,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -25969,6 +26208,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26013,6 +26253,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26057,6 +26298,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26101,6 +26343,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26145,6 +26388,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26189,6 +26433,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26233,6 +26478,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26277,6 +26523,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26321,6 +26568,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26365,6 +26613,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26409,6 +26658,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26453,6 +26703,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26497,6 +26748,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26541,6 +26793,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26585,6 +26838,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26629,6 +26883,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26673,6 +26928,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26717,6 +26973,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26761,6 +27018,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26805,6 +27063,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26849,6 +27108,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26893,6 +27153,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26937,6 +27198,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -26981,6 +27243,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27025,6 +27288,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27069,6 +27333,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27113,6 +27378,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27157,6 +27423,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27201,6 +27468,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27245,6 +27513,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27289,6 +27558,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27333,6 +27603,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27377,6 +27648,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27421,6 +27693,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27465,6 +27738,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27509,6 +27783,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27553,6 +27828,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27597,6 +27873,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27641,6 +27918,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27685,6 +27963,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27729,6 +28008,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27773,6 +28053,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27817,6 +28098,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27861,6 +28143,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27905,6 +28188,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27949,6 +28233,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -27993,6 +28278,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28037,6 +28323,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28081,6 +28368,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28125,6 +28413,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28169,6 +28458,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28213,6 +28503,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28257,6 +28548,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28301,6 +28593,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28345,6 +28638,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28389,6 +28683,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28433,6 +28728,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28477,6 +28773,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28521,6 +28818,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28565,6 +28863,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28609,6 +28908,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28653,6 +28953,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28697,6 +28998,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28741,6 +29043,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28785,6 +29088,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28829,6 +29133,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28873,6 +29178,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28917,6 +29223,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -28961,6 +29268,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29005,6 +29313,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29049,6 +29358,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29092,6 +29402,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29136,6 +29447,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29180,6 +29492,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29224,6 +29537,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29268,6 +29582,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29312,6 +29627,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29356,6 +29672,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29400,6 +29717,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29444,6 +29762,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29488,6 +29807,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29532,6 +29852,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29576,6 +29897,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29620,6 +29942,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29664,6 +29987,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29708,6 +30032,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29752,6 +30077,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29796,6 +30122,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29840,6 +30167,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29884,6 +30212,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29928,6 +30257,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -29972,6 +30302,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30016,6 +30347,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30060,6 +30392,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30104,6 +30437,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30148,6 +30482,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30192,6 +30527,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30236,6 +30572,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30280,6 +30617,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30324,6 +30662,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30368,6 +30707,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30412,6 +30752,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30456,6 +30797,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30500,6 +30842,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30544,6 +30887,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30588,6 +30932,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30632,6 +30977,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30676,6 +31022,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30720,6 +31067,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30764,6 +31112,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30808,6 +31157,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30852,6 +31202,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30896,6 +31247,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30940,6 +31292,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -30984,6 +31337,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31028,6 +31382,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31072,6 +31427,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31116,6 +31472,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31160,6 +31517,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31204,6 +31562,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31248,6 +31607,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31292,6 +31652,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31336,6 +31697,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31380,6 +31742,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31424,6 +31787,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31468,6 +31832,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31512,6 +31877,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31556,6 +31922,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31600,6 +31967,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31644,6 +32012,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31688,6 +32057,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31732,6 +32102,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31776,6 +32147,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31820,6 +32192,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31864,6 +32237,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31908,6 +32282,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31952,6 +32327,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -31996,6 +32372,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32040,6 +32417,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32084,6 +32462,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32128,6 +32507,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32172,6 +32552,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32216,6 +32597,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32260,6 +32642,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32304,6 +32687,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32348,6 +32732,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32392,6 +32777,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32436,6 +32822,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32480,6 +32867,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32524,6 +32912,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32568,6 +32957,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32612,6 +33002,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32656,6 +33047,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32700,6 +33092,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32744,6 +33137,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32788,6 +33182,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32832,6 +33227,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32876,6 +33272,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32920,6 +33317,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -32964,6 +33362,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33008,6 +33407,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33052,6 +33452,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33096,6 +33497,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33140,6 +33542,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33184,6 +33587,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33228,6 +33632,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33272,6 +33677,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33315,6 +33721,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33359,6 +33766,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33403,6 +33811,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33447,6 +33856,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33491,6 +33901,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33535,6 +33946,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33579,6 +33991,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33623,6 +34036,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33667,6 +34081,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33711,6 +34126,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33755,6 +34171,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33799,6 +34216,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33843,6 +34261,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33887,6 +34306,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33931,6 +34351,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -33975,6 +34396,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34019,6 +34441,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34063,6 +34486,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34107,6 +34531,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34151,6 +34576,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34195,6 +34621,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34239,6 +34666,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34283,6 +34711,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34327,6 +34756,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34371,6 +34801,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34415,6 +34846,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34459,6 +34891,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34503,6 +34936,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34547,6 +34981,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34591,6 +35026,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34635,6 +35071,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34679,6 +35116,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34723,6 +35161,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34767,6 +35206,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34811,6 +35251,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34855,6 +35296,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34899,6 +35341,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34943,6 +35386,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -34987,6 +35431,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35031,6 +35476,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35075,6 +35521,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35119,6 +35566,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35163,6 +35611,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35207,6 +35656,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35251,6 +35701,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35295,6 +35746,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35339,6 +35791,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35383,6 +35836,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35427,6 +35881,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35471,6 +35926,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35515,6 +35971,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35559,6 +36016,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35603,6 +36061,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35647,6 +36106,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35691,6 +36151,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35735,6 +36196,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35779,6 +36241,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35823,6 +36286,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35867,6 +36331,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35911,6 +36376,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35955,6 +36421,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -35999,6 +36466,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36043,6 +36511,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36087,6 +36556,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36131,6 +36601,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36175,6 +36646,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36219,6 +36691,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36263,6 +36736,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36307,6 +36781,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36351,6 +36826,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36395,6 +36871,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36439,6 +36916,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36483,6 +36961,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36527,6 +37006,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36571,6 +37051,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36615,6 +37096,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36659,6 +37141,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36703,6 +37186,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36747,6 +37231,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36791,6 +37276,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36835,6 +37321,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36879,6 +37366,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36923,6 +37411,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -36967,6 +37456,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37011,6 +37501,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37055,6 +37546,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37099,6 +37591,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37143,6 +37636,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37187,6 +37681,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37231,6 +37726,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37275,6 +37771,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37319,6 +37816,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37363,6 +37861,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37407,6 +37906,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37451,6 +37951,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37495,6 +37996,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37539,6 +38041,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37582,6 +38085,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37626,6 +38130,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37670,6 +38175,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37714,6 +38220,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37758,6 +38265,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37802,6 +38310,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37846,6 +38355,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37890,6 +38400,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37934,6 +38445,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -37978,6 +38490,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38022,6 +38535,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38066,6 +38580,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38110,6 +38625,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38154,6 +38670,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38198,6 +38715,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38242,6 +38760,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38286,6 +38805,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38330,6 +38850,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38374,6 +38895,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38418,6 +38940,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38462,6 +38985,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38506,6 +39030,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38550,6 +39075,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38594,6 +39120,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38638,6 +39165,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38682,6 +39210,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38726,6 +39255,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38770,6 +39300,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38814,6 +39345,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38858,6 +39390,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38902,6 +39435,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38946,6 +39480,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -38990,6 +39525,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39034,6 +39570,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39078,6 +39615,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39122,6 +39660,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39166,6 +39705,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39210,6 +39750,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39254,6 +39795,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39298,6 +39840,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39342,6 +39885,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39386,6 +39930,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39430,6 +39975,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39474,6 +40020,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39518,6 +40065,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39562,6 +40110,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39606,6 +40155,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39650,6 +40200,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39694,6 +40245,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39738,6 +40290,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39782,6 +40335,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39826,6 +40380,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39870,6 +40425,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39914,6 +40470,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -39958,6 +40515,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40002,6 +40560,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40046,6 +40605,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40090,6 +40650,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40134,6 +40695,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40178,6 +40740,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40222,6 +40785,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40266,6 +40830,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40310,6 +40875,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40354,6 +40920,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40398,6 +40965,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40442,6 +41010,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40486,6 +41055,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40530,6 +41100,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40574,6 +41145,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40618,6 +41190,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40662,6 +41235,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40706,6 +41280,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40750,6 +41325,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40794,6 +41370,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40838,6 +41415,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40882,6 +41460,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40926,6 +41505,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -40970,6 +41550,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41014,6 +41595,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41058,6 +41640,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41102,6 +41685,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41146,6 +41730,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41190,6 +41775,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41234,6 +41820,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41278,6 +41865,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41322,6 +41910,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41366,6 +41955,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41410,6 +42000,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41454,6 +42045,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41498,6 +42090,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41542,6 +42135,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41586,6 +42180,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41630,6 +42225,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41674,6 +42270,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41718,6 +42315,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41762,6 +42360,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41805,6 +42404,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41849,6 +42449,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41893,6 +42494,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41937,6 +42539,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -41981,6 +42584,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42025,6 +42629,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42069,6 +42674,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42113,6 +42719,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42157,6 +42764,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42201,6 +42809,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42245,6 +42854,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42289,6 +42899,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42333,6 +42944,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42377,6 +42989,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42421,6 +43034,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42465,6 +43079,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42509,6 +43124,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42553,6 +43169,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42597,6 +43214,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42641,6 +43259,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42685,6 +43304,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42729,6 +43349,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42773,6 +43394,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42817,6 +43439,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42861,6 +43484,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42905,6 +43529,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42949,6 +43574,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -42993,6 +43619,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43037,6 +43664,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43081,6 +43709,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43125,6 +43754,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43169,6 +43799,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43213,6 +43844,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43257,6 +43889,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43301,6 +43934,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43345,6 +43979,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43389,6 +44024,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43433,6 +44069,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43477,6 +44114,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43521,6 +44159,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43565,6 +44204,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43609,6 +44249,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43653,6 +44294,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43697,6 +44339,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43741,6 +44384,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43785,6 +44429,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43829,6 +44474,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43873,6 +44519,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43917,6 +44564,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -43961,6 +44609,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44005,6 +44654,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44049,6 +44699,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44093,6 +44744,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44137,6 +44789,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44181,6 +44834,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44225,6 +44879,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44269,6 +44924,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44313,6 +44969,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44357,6 +45014,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44401,6 +45059,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44445,6 +45104,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44489,6 +45149,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44533,6 +45194,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44577,6 +45239,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44621,6 +45284,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44665,6 +45329,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44709,6 +45374,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44753,6 +45419,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44797,6 +45464,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44841,6 +45509,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44885,6 +45554,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44929,6 +45599,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -44973,6 +45644,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45017,6 +45689,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45061,6 +45734,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45105,6 +45779,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45149,6 +45824,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45193,6 +45869,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45237,6 +45914,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45281,6 +45959,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45325,6 +46004,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45369,6 +46049,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45413,6 +46094,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45457,6 +46139,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45501,6 +46184,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45545,6 +46229,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45589,6 +46274,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45633,6 +46319,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45677,6 +46364,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45721,6 +46409,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45765,6 +46454,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45809,6 +46499,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45853,6 +46544,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45897,6 +46589,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45941,6 +46634,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -45985,6 +46679,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46029,6 +46724,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46072,6 +46768,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46116,6 +46813,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46160,6 +46858,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46204,6 +46903,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46248,6 +46948,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46292,6 +46993,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46336,6 +47038,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46380,6 +47083,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46424,6 +47128,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46468,6 +47173,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46512,6 +47218,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46556,6 +47263,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46600,6 +47308,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46644,6 +47353,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46688,6 +47398,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46732,6 +47443,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46776,6 +47488,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46820,6 +47533,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46864,6 +47578,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46908,6 +47623,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46952,6 +47668,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -46996,6 +47713,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47040,6 +47758,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47084,6 +47803,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47128,6 +47848,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47172,6 +47893,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47216,6 +47938,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47260,6 +47983,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47304,6 +48028,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47348,6 +48073,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47392,6 +48118,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47436,6 +48163,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47480,6 +48208,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47524,6 +48253,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47568,6 +48298,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47612,6 +48343,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47656,6 +48388,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47700,6 +48433,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47744,6 +48478,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47788,6 +48523,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47832,6 +48568,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47876,6 +48613,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47920,6 +48658,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -47964,6 +48703,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48008,6 +48748,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48052,6 +48793,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48096,6 +48838,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48140,6 +48883,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48184,6 +48928,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48228,6 +48973,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48272,6 +49018,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48316,6 +49063,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48360,6 +49108,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48404,6 +49153,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48448,6 +49198,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48492,6 +49243,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48536,6 +49288,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48580,6 +49333,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48624,6 +49378,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48668,6 +49423,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48712,6 +49468,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48756,6 +49513,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48800,6 +49558,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48844,6 +49603,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48888,6 +49648,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48932,6 +49693,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -48976,6 +49738,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49020,6 +49783,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49064,6 +49828,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49108,6 +49873,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49152,6 +49918,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49196,6 +49963,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49240,6 +50008,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49284,6 +50053,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49328,6 +50098,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49372,6 +50143,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49416,6 +50188,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49460,6 +50233,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49504,6 +50278,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49548,6 +50323,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49592,6 +50368,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49636,6 +50413,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49680,6 +50458,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49724,6 +50503,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49768,6 +50548,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49812,6 +50593,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49856,6 +50638,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49900,6 +50683,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49944,6 +50728,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -49988,6 +50773,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50032,6 +50818,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50076,6 +50863,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50120,6 +50908,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50164,6 +50953,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50208,6 +50998,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50252,6 +51043,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50295,6 +51087,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50339,6 +51132,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50383,6 +51177,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50427,6 +51222,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50471,6 +51267,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50515,6 +51312,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50559,6 +51357,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50603,6 +51402,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50647,6 +51447,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50691,6 +51492,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50735,6 +51537,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50779,6 +51582,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50823,6 +51627,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50867,6 +51672,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50911,6 +51717,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50955,6 +51762,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -50999,6 +51807,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51043,6 +51852,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51087,6 +51897,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51131,6 +51942,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51175,6 +51987,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51219,6 +52032,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51263,6 +52077,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51307,6 +52122,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51351,6 +52167,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51395,6 +52212,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51439,6 +52257,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51483,6 +52302,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51527,6 +52347,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51571,6 +52392,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51615,6 +52437,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51659,6 +52482,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51703,6 +52527,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51747,6 +52572,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51791,6 +52617,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51835,6 +52662,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51879,6 +52707,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51923,6 +52752,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -51967,6 +52797,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52011,6 +52842,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52055,6 +52887,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52099,6 +52932,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52143,6 +52977,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52187,6 +53022,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52231,6 +53067,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52275,6 +53112,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52319,6 +53157,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52363,6 +53202,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52407,6 +53247,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52451,6 +53292,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52495,6 +53337,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52539,6 +53382,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52583,6 +53427,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52627,6 +53472,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52671,6 +53517,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52715,6 +53562,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52759,6 +53607,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52803,6 +53652,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52847,6 +53697,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52891,6 +53742,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52935,6 +53787,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -52979,6 +53832,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53023,6 +53877,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53067,6 +53922,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53111,6 +53967,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53155,6 +54012,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53199,6 +54057,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53243,6 +54102,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53287,6 +54147,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53331,6 +54192,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53375,6 +54237,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53419,6 +54282,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53463,6 +54327,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53507,6 +54372,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53551,6 +54417,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53595,6 +54462,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53639,6 +54507,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53683,6 +54552,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53727,6 +54597,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53771,6 +54642,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53815,6 +54687,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53859,6 +54732,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53903,6 +54777,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53947,6 +54822,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -53991,6 +54867,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54035,6 +54912,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54079,6 +54957,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54123,6 +55002,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54167,6 +55047,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54211,6 +55092,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54255,6 +55137,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54299,6 +55182,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54343,6 +55227,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54387,6 +55272,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54431,6 +55317,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54475,6 +55362,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54519,6 +55407,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54562,6 +55451,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54606,6 +55496,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54650,6 +55541,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54694,6 +55586,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54738,6 +55631,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54782,6 +55676,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54826,6 +55721,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54870,6 +55766,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54914,6 +55811,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -54958,6 +55856,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55002,6 +55901,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55046,6 +55946,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55090,6 +55991,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55134,6 +56036,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55178,6 +56081,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55222,6 +56126,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55266,6 +56171,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55310,6 +56216,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55354,6 +56261,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55398,6 +56306,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55442,6 +56351,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55486,6 +56396,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55530,6 +56441,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55574,6 +56486,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55618,6 +56531,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55662,6 +56576,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55706,6 +56621,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55750,6 +56666,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55794,6 +56711,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55838,6 +56756,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55882,6 +56801,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55926,6 +56846,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -55970,6 +56891,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56014,6 +56936,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56058,6 +56981,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56102,6 +57026,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56146,6 +57071,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56190,6 +57116,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56234,6 +57161,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56278,6 +57206,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56322,6 +57251,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56366,6 +57296,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56410,6 +57341,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56454,6 +57386,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56498,6 +57431,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56542,6 +57476,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56586,6 +57521,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56630,6 +57566,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56674,6 +57611,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56718,6 +57656,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56762,6 +57701,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56806,6 +57746,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56850,6 +57791,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56894,6 +57836,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56938,6 +57881,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -56982,6 +57926,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57026,6 +57971,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57070,6 +58016,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57114,6 +58061,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57158,6 +58106,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57202,6 +58151,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57246,6 +58196,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57290,6 +58241,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57334,6 +58286,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57378,6 +58331,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57422,6 +58376,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57466,6 +58421,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57510,6 +58466,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57554,6 +58511,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57598,6 +58556,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57642,6 +58601,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57686,6 +58646,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57730,6 +58691,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57774,6 +58736,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57818,6 +58781,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57862,6 +58826,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57906,6 +58871,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57950,6 +58916,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -57994,6 +58961,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58038,6 +59006,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58082,6 +59051,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58126,6 +59096,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58170,6 +59141,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58214,6 +59186,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58258,6 +59231,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58302,6 +59276,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58346,6 +59321,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58390,6 +59366,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58434,6 +59411,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58478,6 +59456,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58522,6 +59501,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58566,6 +59546,7 @@ "platform": "7750 SR-1-24D", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58610,6 +59591,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58654,6 +59636,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58698,6 +59681,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58742,6 +59726,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58785,6 +59770,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58829,6 +59815,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58873,6 +59860,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58917,6 +59905,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -58961,6 +59950,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -59005,6 +59995,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -59049,6 +60040,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -59093,6 +60085,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -59137,6 +60130,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -59181,6 +60175,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -59225,6 +60220,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -59269,6 +60265,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -59313,6 +60310,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -59357,6 +60355,7 @@ "platform": "7220 IXR-D4", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { @@ -59401,6 +60400,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-scale-1000", "version": "dev-scale-1000", "labels": { diff --git a/cable_map/frontend/dev/fixtures/mixed-sros-topology.json b/cable_map/frontend/dev/fixtures/mixed-sros-topology.json index 2d3aee4..d633e50 100644 --- a/cable_map/frontend/dev/fixtures/mixed-sros-topology.json +++ b/cable_map/frontend/dev/fixtures/mixed-sros-topology.json @@ -5,6 +5,7 @@ "platform": "7750 SR-1", "os": "sros", "role": "superspine", + "tier": 2, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -80,6 +81,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -311,6 +313,7 @@ "platform": "7750 SR-1s", "os": "sros", "role": "spine", + "tier": 3, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -565,6 +568,7 @@ "platform": "7750 SR-2s", "os": "sros", "role": "borderleaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -668,6 +672,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -737,6 +742,7 @@ "platform": "7220 IXR-D2", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -807,6 +813,7 @@ "platform": "7220 IXR-H3", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -867,6 +874,7 @@ "platform": "7750 SR-1", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -950,6 +958,7 @@ "platform": "7750 SR-1s", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1017,6 +1026,7 @@ "platform": "7730 SXR-1D-32D", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1077,6 +1087,7 @@ "platform": "7750 SR-1", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1144,6 +1155,7 @@ "platform": "7750 SR-1", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1211,6 +1223,7 @@ "platform": "7750 SR-1", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1278,6 +1291,7 @@ "platform": "7750 SR-1", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1345,6 +1359,7 @@ "platform": "7750 SR-1", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1412,6 +1427,7 @@ "platform": "7750 SR-1", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1484,6 +1500,7 @@ "platform": "7750 SR-1", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1576,6 +1593,7 @@ "platform": "7750 SR-1se", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1636,6 +1654,7 @@ "platform": "7750 SR-1s", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1703,6 +1722,7 @@ "platform": "7750 SR-1s", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1770,6 +1790,7 @@ "platform": "7750 SR-2s", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1842,6 +1863,7 @@ "platform": "7750 SR-2se", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { @@ -1914,6 +1936,7 @@ "platform": "7750 SR-2se", "os": "sros", "role": "leaf", + "tier": 4, "namespace": "dev-mixed-sros", "version": "dev-mixed-sros", "labels": { diff --git a/cable_map/frontend/scripts/gen-golden-topology.mjs b/cable_map/frontend/scripts/gen-golden-topology.mjs index abe284b..1ba4b4f 100644 --- a/cable_map/frontend/scripts/gen-golden-topology.mjs +++ b/cable_map/frontend/scripts/gen-golden-topology.mjs @@ -77,19 +77,18 @@ function addEndpointLag(lags, name, members, multihomed) { }; } -function portNumber(label) { - const matches = label.match(/\d+/g); - if (!matches) return 0; - if (matches.length >= 2) return Number(matches[1]) * 100 + Number(matches[2] ?? 0); - return Number(matches[0]) * 100; -} - +// natural port order, mirroring the backend's naturalLess (topology.go) function sortTables(nodes) { for (const node of nodes) { - node.table = node.table.toSorted((left, right) => portNumber(left.label) - portNumber(right.label) || left.remoteNode.localeCompare(right.remoteNode)); + node.table = node.table.toSorted((left, right) => + left.label.localeCompare(right.label, undefined, { numeric: true }) + || left.remoteNode.localeCompare(right.remoteNode)); } } +// mirrors the backend's role-derived tier fallback (roleTier in topology.go) +const ROLE_TIER = { backbone: 1, superspine: 2, spine: 3, borderleaf: 4, leaf: 4 }; + function collectLabels(nodes) { const out = {}; for (const node of nodes) { @@ -106,7 +105,10 @@ function collectLabels(nodes) { function topology(nodes, links, lags) { sortTables(nodes); - return { nodes, links, lags, labels: collectLabels(nodes) }; + const tiered = nodes.map(({ name, platform, os, role, ...rest }) => ( + { name, platform, os, role, tier: ROLE_TIER[role] ?? 4, ...rest } + )); + return { nodes: tiered, links, lags, labels: collectLabels(nodes) }; } function buildGoldenTopology() { diff --git a/cable_map/frontend/src/NodeView.tsx b/cable_map/frontend/src/NodeView.tsx index f89ab2d..4c1b010 100644 --- a/cable_map/frontend/src/NodeView.tsx +++ b/cable_map/frontend/src/NodeView.tsx @@ -10,7 +10,7 @@ import TableCell from '@mui/material/TableCell'; import Link from '@mui/material/Link'; import FrontPanel from './FrontPanel'; import RemoteCell from './RemoteCell'; -import { cageKey, portIdx } from './domain/ports/interfaceNames'; +import { cageKey } from './domain/ports/interfaceNames'; import { slottedOf } from './domain/ports/frontPanelMeta'; import type { Node, Row } from './domain/topology/contract'; import { stencilFor, componentsOf } from './stencil'; @@ -43,7 +43,8 @@ export default function NodeView({ node, rows, showHeader = true, interactive = const stencil = stencilFor(node.platform, componentsOf(node.raw)); const slotted = slottedOf(stencil); const occupied = rows.map((r) => cageKey(r.label, slotted)).filter((c): c is string => c != null); - const sorted = rows.toSorted((a, b) => (portIdx(a.label) ?? 0) - (portIdx(b.label) ?? 0)); + // natural order: digit runs compare numerically (ethernet-1-2 before ethernet-1-10), slot-aware + const sorted = rows.toSorted((a, b) => a.label.localeCompare(b.label, undefined, { numeric: true })); // print leaves empty cells blank (room to write); the drawer shows a dash const blank = interactive ? : null; diff --git a/cable_map/frontend/src/generated/topology.gen.ts b/cable_map/frontend/src/generated/topology.gen.ts index 8d92313..51238a2 100644 --- a/cable_map/frontend/src/generated/topology.gen.ts +++ b/cable_map/frontend/src/generated/topology.gen.ts @@ -15,6 +15,7 @@ export interface Node { platform: string; os: string; role: string; + tier?: number /* int */; // canvas row from the cluster's TopologyGrouping (1 = top); role-derived fallback namespace?: string; version?: string; labels?: { [key: string]: string}; diff --git a/cable_map/frontend/src/graph/build.ts b/cable_map/frontend/src/graph/build.ts index 6122df1..e107ab0 100644 --- a/cable_map/frontend/src/graph/build.ts +++ b/cable_map/frontend/src/graph/build.ts @@ -30,13 +30,15 @@ export function buildGraph(topo: Topology, options: BuildGraphOptions = {}): Bui const tiered = options.tiered ?? compact; const byName = new Map(topo.nodes.map((n) => [n.name, n])); const role = (name: string) => byName.get(name)?.role ?? 'leaf'; + const tierByName = new Map(topo.nodes.map((n) => [n.name, tierOf(n)])); + const tier = (name: string) => tierByName.get(name) ?? 4; // the stencil each node renders (its platform, or card-derived for modular SROS chassis); drives all // sizing + FP_META lookups, while node.platform stays the displayed model name. const stencilByName = new Map(topo.nodes.map((n) => [n.name, stencilFor(n.platform, componentsOf(n.raw))])); const stencilOf = (name: string) => stencilByName.get(name) ?? ''; const lagOf = (name?: string): LagInfo | undefined => (name ? topo.lags[name] : undefined); const sideBetween = (node: string, remote: string): 'top' | 'bottom' => - tierOf(role(remote)) <= tierOf(role(node)) ? 'top' : 'bottom'; + tier(remote) <= tier(node) ? 'top' : 'bottom'; const switchHandle = (node: string, remote: string, target = false) => compact ? compactSwitchHandle(sideBetween(node, remote), target) : null; @@ -71,10 +73,10 @@ export function buildGraph(topo: Topology, options: BuildGraphOptions = {}): Bui if (r.type === 'interSwitch' && r.remoteNode) { hay(sw.name).push(r.label); - const remoteTier = tierOf(role(r.remoteNode)); + const remoteTier = tier(r.remoteNode); // uplinks leave the top; a same-tier peer link (leaf↔leaf MLAG ISL) also routes over // the top, into the open space above — routing it below would dive through the host band. - const side: 'top' | 'bottom' = remoteTier <= tierOf(sw.role) ? 'top' : 'bottom'; + const side: 'top' | 'bottom' = remoteTier <= tier(sw.name) ? 'top' : 'bottom'; const rp = cageKey(r.remotePort, slottedOf(stencilOf(r.remoteNode))) ?? p; // canonical per-cable id, stable across the mirrored far-side row const cableId = canonicalIslCableId(sw.name, r); @@ -86,7 +88,7 @@ export function buildGraph(topo: Topology, options: BuildGraphOptions = {}): Bui portsOf(sw.name).push({ port: p, kind: 'isl', side, remote: r.remoteNode, remotePort: r.remotePort, desc: r.desc, cableId, lldp: r.lldpStatus }); if (!islSeen.has(cableId)) { islSeen.add(cableId); - const child = tierOf(sw.role) >= tierOf(role(r.remoteNode)) ? sw.name : r.remoteNode; + const child = tier(sw.name) >= tier(r.remoteNode) ? sw.name : r.remoteNode; const parent = child === sw.name ? r.remoteNode : sw.name; const childPort = child === sw.name ? p : rp; const parentPort = child === sw.name ? rp : p; diff --git a/cable_map/frontend/src/graph/constants.ts b/cable_map/frontend/src/graph/constants.ts index e184384..a190e28 100644 --- a/cable_map/frontend/src/graph/constants.ts +++ b/cable_map/frontend/src/graph/constants.ts @@ -1,9 +1,11 @@ import type { LldpStatus } from '../domain/topology/contract'; import type { CableKind } from './types'; -// role tier: smaller = closer to the fabric core (drawn higher up). -const TIER: Record = { superspine: 0, spine: 1, borderleaf: 2, leaf: 3 }; -export const tierOf = (role: string): number => TIER[role] ?? 3; +// Tier: smaller = closer to the fabric core (drawn higher up). The backend computes +// node.tier from the cluster's TopologyGrouping; the role map mirrors EDA's bootstrap +// "role" grouping as a fallback for data that predates the tier field (dev fixtures). +const ROLE_TIER: Record = { backbone: 1, superspine: 2, spine: 3, borderleaf: 4, leaf: 4 }; +export const tierOf = (n: { tier?: number; role?: string }): number => n.tier ?? ROLE_TIER[n.role ?? ''] ?? 4; export const LARGE_TOPOLOGY_NODE_THRESHOLD = 300; export const LARGE_TOPOLOGY_ROW_THRESHOLD = 5000; diff --git a/cable_map/frontend/src/graph/layout.ts b/cable_map/frontend/src/graph/layout.ts index 38d4d99..d5e6fa1 100644 --- a/cable_map/frontend/src/graph/layout.ts +++ b/cable_map/frontend/src/graph/layout.ts @@ -48,8 +48,14 @@ function breakoutsWithInferredChannels(explicit: Record | unde } export function layoutGraph({ topo, compact, tiered, endpoints, switchPorts, stencilOf }: LayoutGraphArgs): RFNode[] { - const leaves = topo.nodes.filter((n) => tierOf(n.role) >= 2); - const cores = topo.nodes.filter((n) => tierOf(n.role) < 2); + // tiers present, top (smallest) first. The bottom tier is the leaf row (endpoint fans); + // every tier above it gets its own row, so superspine and spine never share one. + const tiers = [...new Set(topo.nodes.map((n) => tierOf(n)))].toSorted((a, b) => a - b); + const bottomTier = tiers.at(-1) ?? 4; + const coreTiers = tiers.slice(0, -1); + const leaves = topo.nodes.filter((n) => tierOf(n) === bottomTier); + const cores = topo.nodes.filter((n) => tierOf(n) !== bottomTier); + const coresAt = (t: number) => cores.filter((n) => tierOf(n) === t); // sized by the node's resolved stencil (callers pass the node name, not its display platform) const swW = (name: string) => { @@ -66,7 +72,7 @@ export function layoutGraph({ topo, compact, tiered, endpoints, switchPorts, ste const GAP_X = 28, GAP_Y = 30; const leafCols = Math.min(64, Math.max(1, Math.ceil(Math.sqrt(leaves.length * 4)))); const leafWidth = leafCols * COMPACT_SWITCH_W + (leafCols - 1) * GAP_X; - const placeGrid = (items: typeof topo.nodes, y: number, cols: number) => { + const placeGrid = (items: typeof topo.nodes, y: number, cols: number): number => { const safeCols = Math.max(1, Math.min(cols, Math.max(1, items.length))); const totalW = safeCols * COMPACT_SWITCH_W + (safeCols - 1) * GAP_X; const startX = Math.max(0, (leafWidth - totalW) / 2); @@ -76,23 +82,33 @@ export function layoutGraph({ topo, compact, tiered, endpoints, switchPorts, ste const x = startX + col * (COMPACT_SWITCH_W + GAP_X); const yy = y + row * (COMPACT_SWITCH_H + GAP_Y); pos.set(item.name, { x, y: yy }); - if (tierOf(item.role) >= 2) leafCenter.set(item.name, x + COMPACT_SWITCH_W / 2); + if (tierOf(item) === bottomTier) leafCenter.set(item.name, x + COMPACT_SWITCH_W / 2); } + return Math.ceil(items.length / safeCols); }; - placeGrid(topo.nodes.filter((n) => tierOf(n.role) === 0), SPINE_Y, 16); - placeGrid(topo.nodes.filter((n) => tierOf(n.role) === 1), SPINE_Y + 120, 32); - placeGrid(leaves, SPINE_Y + 360, leafCols); + // one grid row block per core tier, stacked top-down, then the leaf grid below + let coreBottom = SPINE_Y; + for (const [i, t] of coreTiers.entries()) { + const rows = placeGrid(coresAt(t), coreBottom, i === 0 ? 16 : 32); + coreBottom += rows * (COMPACT_SWITCH_H + GAP_Y) + 44; + } + placeGrid(leaves, coreTiers.length ? coreBottom + 120 : SPINE_Y, leafCols); } else if (tiered) { - // Large detailed fabrics need locality: every pod keeps its leaves under its own spines, - // while superspines stay as the shared top tier. This preserves full front-panel detail - // without making leaf->spine links disappear into the far centre of a 1000-node canvas. + // Large detailed fabrics need locality: every pod keeps its leaves under its own spines + // (the tier directly above the leaves), while the tiers above that stay shared top rows. + // This preserves full front-panel detail without making leaf->spine links disappear into + // the far centre of a 1000-node canvas. const GAP_X = 64, POD_GAP = 180, SPINE_GAP = 96, LEAF_COLS = 8; - const SPINE_TIER_Y = 210, LEAF_TIER_Y = 440; + const TIER_ROW_GAP = 210; + const podTier = coreTiers.at(-1); + const upperTiers = coreTiers.slice(0, -1); + const SPINE_TIER_Y = SPINE_Y + upperTiers.length * TIER_ROW_GAP; + const LEAF_TIER_Y = SPINE_TIER_Y + 230; const pods = new Map(); for (const leaf of leaves) (pods.get(podKey(leaf)) ?? pods.set(podKey(leaf), { leaves: [], spines: [] }).get(podKey(leaf))!).leaves.push(leaf); - for (const spine of cores.filter((n) => tierOf(n.role) === 1)) (pods.get(podKey(spine)) ?? pods.set(podKey(spine), { leaves: [], spines: [] }).get(podKey(spine))!).spines.push(spine); + for (const spine of (podTier == null ? [] : coresAt(podTier))) (pods.get(podKey(spine)) ?? pods.set(podKey(spine), { leaves: [], spines: [] }).get(podKey(spine))!).spines.push(spine); let cursor = 0; const podNames = [...pods.keys()].toSorted(naturalName); @@ -127,31 +143,47 @@ export function layoutGraph({ topo, compact, tiered, endpoints, switchPorts, ste cursor += podW + POD_GAP; } - const supers = cores.filter((n) => tierOf(n.role) === 0).toSorted((a, b) => naturalName(a.name, b.name)); + // the tiers above the pod spines spread across the full width, one row per tier const totalW = Math.max(cursor - POD_GAP, switchW(32, 2)); - for (const [i, node] of supers.entries()) { - const w = swW(node.name); - const x = supers.length <= 1 ? (totalW - w) / 2 : (totalW - w) * (i / (supers.length - 1)); - pos.set(node.name, { x, y: SPINE_Y }); + for (const [row, t] of upperTiers.entries()) { + const uppers = coresAt(t).toSorted((a, b) => naturalName(a.name, b.name)); + const y = SPINE_Y + row * TIER_ROW_GAP; + for (const [i, node] of uppers.entries()) { + const w = swW(node.name); + const x = uppers.length <= 1 ? (totalW - w) / 2 : (totalW - w) * (i / (uppers.length - 1)); + pos.set(node.name, { x, y }); + } } } else { + // each core tier is its own row (superspine above spine); the leaf row starts below + // the deepest core row so the tiers never collapse onto one line. + const CORE_TIER_GAP = 160; + const coreRowY: number[] = []; + let coreBottom = SPINE_Y; + for (const t of coreTiers) { + coreRowY.push(coreBottom); + coreBottom += Math.max(...coresAt(t).map((c) => swH(c.name))) + CORE_TIER_GAP; + } + const leafY = Math.max(LEAF_Y, coreBottom); + // leaves laid out left->right, each given a slot wide enough for its endpoint fan const SLOT_GAP = 64; let cursor = 0; for (const lf of leaves) { const w = Math.max(swW(lf.name), EP_COLS * EP_W + (EP_COLS - 1) * EP_HGAP); const x = cursor; - pos.set(lf.name, { x: x + (w - swW(lf.name)) / 2, y: LEAF_Y }); + pos.set(lf.name, { x: x + (w - swW(lf.name)) / 2, y: leafY }); leafCenter.set(lf.name, x + w / 2); cursor += w + SLOT_GAP; } const spanL = 0, spanR = Math.max(cursor - SLOT_GAP, switchW(32, 2)); - // cores centred above the leaf span - if (cores.length) { - const totalW = cores.reduce((s, c) => s + swW(c.name), 0) + (cores.length - 1) * 120; + // core tier rows centred above the leaf span + for (const [i, t] of coreTiers.entries()) { + const row = coresAt(t); + const totalW = row.reduce((s, c) => s + swW(c.name), 0) + (row.length - 1) * 120; let cx = (spanL + spanR) / 2 - totalW / 2; - for (const c of cores) { - pos.set(c.name, { x: cx, y: SPINE_Y }); + for (const c of row) { + pos.set(c.name, { x: cx, y: coreRowY[i] }); cx += swW(c.name) + 120; } } diff --git a/cable_map/frontend/src/xlsx.ts b/cable_map/frontend/src/xlsx.ts index dfe5caa..9da8297 100644 --- a/cable_map/frontend/src/xlsx.ts +++ b/cable_map/frontend/src/xlsx.ts @@ -1,6 +1,5 @@ import type { Cell } from 'write-excel-file/browser'; import type { LagInfo, Topology } from './domain/topology/contract'; -import { portIdx } from './domain/ports/interfaceNames'; import { edgeRemote } from './edge-remote'; // readable LAG classification for the spreadsheet's LAG column @@ -43,7 +42,7 @@ export async function exportXlsx(topo: Topology, nodeIds: string[]): Promise (portIdx(a.label) ?? 0) - (portIdx(b.label) ?? 0)) + .toSorted((a, b) => a.label.localeCompare(b.label, undefined, { numeric: true })) .map((r): Cell[] => [ r.label, r.type === 'interSwitch' ? 'ISL' : r.type, diff --git a/cable_map/manifest.yaml b/cable_map/manifest.yaml index d5b1f0f..8feaa1f 100644 --- a/cable_map/manifest.yaml +++ b/cable_map/manifest.yaml @@ -15,11 +15,11 @@ spec: # The Go operator runtime image (serves the SPA + topology API, reads EDA state via EDK). # edabuilder bakes this container into the single OCI app image at publish/deploy time. - container: - image: ghcr.io/eda-labs/cable-map/operators/cable-map:v0.2.2 + image: ghcr.io/eda-labs/cable-map/operators/cable-map:v0.2.3 name: cable-map description: Cable-map topology and front-panel view for EDA fabrics. group: cable-map.eda.labs - image: ghcr.io/eda-labs/cable-map:v0.2.2 + image: ghcr.io/eda-labs/cable-map:v0.2.3 supportedCoreVersions: - v5.0.0-0 title: Cable Map diff --git a/cable_map/operators/cable-map/internal/eda/store.go b/cable_map/operators/cable-map/internal/eda/store.go index 5f46e98..8b34535 100644 --- a/cable_map/operators/cable-map/internal/eda/store.go +++ b/cable_map/operators/cable-map/internal/eda/store.go @@ -27,8 +27,9 @@ import ( "cable-map.eda.labs/cable-map/operators/cable-map/internal/topology" ) -// The three resources the cable-map view is derived from. TopoNode/TopoLink reuse the EDK -// core GVKs; interfaces.eda.nokia.com has no EDK Go type, so it is read untyped. +// The resources the cable-map view is derived from. TopoNode/TopoLink reuse the EDK +// core GVKs; interfaces.eda.nokia.com and topologies.eda.nokia.com have no EDK Go +// types, so they are read untyped. type crKind struct{ group, version, kind string } var kinds = []crKind{ @@ -36,8 +37,13 @@ var kinds = []crKind{ {edav1.KTopoLinkGVK.Group, edav1.KTopoLinkGVK.Version, edav1.KTopoLinkGVK.Kind}, {"interfaces.eda.nokia.com", "v1", "Interface"}, {"interfaces.eda.nokia.com", "v1alpha1", "Breakout"}, + {"topologies.eda.nokia.com", "v1", "TopologyGrouping"}, } +// TopologyGrouping is cluster-wide UI config living in eda-system, not per-topology data: +// it bypasses the namespace filter and must not surface in the namespace picker. +const groupingKind = "TopologyGrouping" + const ( debounce = 300 * time.Millisecond dashboardStatusJsPath = ".cluster.apps.cable-map.status" @@ -327,17 +333,25 @@ func (s *Store) snapshotLocked(filter []string) topology.Topology { breakouts = append(breakouts, projBreakout(u)) } } + var groupings []topology.RawGrouping + for _, u := range s.caches[groupingKind] { + groupings = append(groupings, projGrouping(u)) + } // Stable input order -> stable output JSON, so dedup and the UI don't churn. sort.Slice(nodes, func(i, j int) bool { return nodes[i].Name < nodes[j].Name }) sort.Slice(links, func(i, j int) bool { return links[i].Name < links[j].Name }) sort.Slice(ifaces, func(i, j int) bool { return ifaces[i].Name < ifaces[j].Name }) sort.Slice(breakouts, func(i, j int) bool { return breakouts[i].Name < breakouts[j].Name }) - return topology.BuildTopology(nodes, links, ifaces, breakouts) + sort.Slice(groupings, func(i, j int) bool { return groupings[i].Name < groupings[j].Name }) + return topology.BuildTopology(nodes, links, ifaces, breakouts, groupings) } func (s *Store) namespacesLocked() []string { set := map[string]struct{}{} - for _, cache := range s.caches { + for kind, cache := range s.caches { + if kind == groupingKind { + continue // lives in eda-system; not a topology namespace + } for key := range cache { if ns := nsOf(key); ns != "" { set[ns] = struct{}{} @@ -604,6 +618,33 @@ func projBreakout(u *unstructured.Unstructured) topology.RawBreakout { } } +func projGrouping(u *unstructured.Unstructured) topology.RawGrouping { + out := topology.RawGrouping{Name: u.GetName()} + selectors, _, _ := unstructured.NestedSlice(u.Object, "spec", "tierSelectors") + for _, si := range selectors { + m, ok := si.(map[string]interface{}) + if !ok { + continue + } + ts := topology.RawTierSelector{} + switch v := m["tier"].(type) { + case int64: + ts.Tier = int(v) + case float64: + ts.Tier = int(v) + } + if sels, ok := m["nodeSelector"].([]interface{}); ok { + for _, s := range sels { + if str, ok := s.(string); ok && str != "" { + ts.NodeSelectors = append(ts.NodeSelectors, str) + } + } + } + out.Selectors = append(out.Selectors, ts) + } + return out +} + func us(obj map[string]interface{}, fields ...string) string { v, _, _ := unstructured.NestedString(obj, fields...) return v diff --git a/cable_map/operators/cable-map/internal/eda/store_test.go b/cable_map/operators/cable-map/internal/eda/store_test.go index 79f3d8c..08b4d75 100644 --- a/cable_map/operators/cable-map/internal/eda/store_test.go +++ b/cable_map/operators/cable-map/internal/eda/store_test.go @@ -71,6 +71,30 @@ func TestProjLink(t *testing.T) { } } +func TestProjGrouping(t *testing.T) { + u := &unstructured.Unstructured{Object: map[string]any{ + "metadata": map[string]any{"name": "role", "namespace": "eda-system"}, + "spec": map[string]any{"tierSelectors": []any{ + map[string]any{"tier": int64(2), "nodeSelector": []any{"eda.nokia.com/role=superspine"}}, + map[string]any{"tier": float64(4), "nodeSelector": []any{"eda.nokia.com/role=leaf", "eda.nokia.com/role=borderleaf"}}, + map[string]any{"tier": int64(4)}, // catch-all + }}, + }} + got := projGrouping(u) + if got.Name != "role" || len(got.Selectors) != 3 { + t.Fatalf("grouping: %+v", got) + } + if got.Selectors[0].Tier != 2 || len(got.Selectors[0].NodeSelectors) != 1 { + t.Errorf("selector 0: %+v", got.Selectors[0]) + } + if got.Selectors[1].Tier != 4 || len(got.Selectors[1].NodeSelectors) != 2 { + t.Errorf("selector 1 (float tier, OR selectors): %+v", got.Selectors[1]) + } + if got.Selectors[2].Tier != 4 || len(got.Selectors[2].NodeSelectors) != 0 { + t.Errorf("selector 2 (catch-all): %+v", got.Selectors[2]) + } +} + func TestTopoNodeLookup(t *testing.T) { s := &Store{caches: map[string]map[string]*unstructured.Unstructured{ edav1.KTopoNodeGVK.Kind: { diff --git a/cable_map/operators/cable-map/internal/topology/contract.go b/cable_map/operators/cable-map/internal/topology/contract.go index 5520440..67bed24 100644 --- a/cable_map/operators/cable-map/internal/topology/contract.go +++ b/cable_map/operators/cable-map/internal/topology/contract.go @@ -13,12 +13,13 @@ type Node struct { Platform string `json:"platform"` OS string `json:"os"` Role string `json:"role"` + Tier int `json:"tier,omitempty"` // canvas row from the cluster's TopologyGrouping (1 = top); role-derived fallback Namespace string `json:"namespace,omitempty"` Version string `json:"version,omitempty"` Labels map[string]string `json:"labels,omitempty"` - Table []Row `json:"table"` // this node's cable matrix - Breakouts map[string]Breakout `json:"breakouts,omitempty"` // cage id -> breakout split - Raw map[string]interface{} `json:"raw,omitempty"` // the full TopoNode CR (details pane) + Table []Row `json:"table"` // this node's cable matrix + Breakouts map[string]Breakout `json:"breakouts,omitempty"` // cage id -> breakout split + Raw map[string]interface{} `json:"raw,omitempty"` // the full TopoNode CR (details pane) } type Edge struct { @@ -66,7 +67,7 @@ type Breakout struct { } type Topology struct { - Nodes []Node `json:"nodes"` // each node carries its own table/breakouts/raw CR + Nodes []Node `json:"nodes"` // each node carries its own table/breakouts/raw CR Links []Edge `json:"links"` Lags map[string]LagInfo `json:"lags"` Labels map[string][]string `json:"labels"` // collected TopoNode label key -> sorted distinct values diff --git a/cable_map/operators/cable-map/internal/topology/testdata/golden-topology.json b/cable_map/operators/cable-map/internal/topology/testdata/golden-topology.json index 47de181..1c3f9a0 100644 --- a/cable_map/operators/cable-map/internal/topology/testdata/golden-topology.json +++ b/cable_map/operators/cable-map/internal/topology/testdata/golden-topology.json @@ -5,6 +5,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "demo", "version": "dev-golden", "labels": { @@ -109,6 +110,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "demo", "version": "dev-golden", "labels": { @@ -213,6 +215,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "demo", "version": "dev-golden", "labels": { @@ -317,6 +320,7 @@ "platform": "7220 IXR-H5-64D", "os": "srl", "role": "superspine", + "tier": 2, "namespace": "demo", "version": "dev-golden", "labels": { @@ -421,6 +425,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -873,6 +878,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -1325,6 +1331,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -1777,6 +1784,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -2229,6 +2237,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -2680,6 +2689,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -3132,6 +3142,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -3584,6 +3595,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -4036,6 +4048,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -4487,6 +4500,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -4939,6 +4953,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -5391,6 +5406,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -5843,6 +5859,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -6294,6 +6311,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -6746,6 +6764,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -7198,6 +7217,7 @@ "platform": "7220 IXR-H4", "os": "srl", "role": "spine", + "tier": 3, "namespace": "demo", "version": "dev-golden", "labels": { @@ -7650,6 +7670,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -7838,6 +7859,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -8026,6 +8048,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -8214,6 +8237,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -8402,6 +8426,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -8590,6 +8615,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -8778,6 +8804,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -8966,6 +8993,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -9154,6 +9182,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -9342,6 +9371,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -9530,6 +9560,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -9718,6 +9749,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -9906,6 +9938,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -10094,6 +10127,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -10282,6 +10316,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -10444,6 +10479,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -10606,6 +10642,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -10768,6 +10805,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -10930,6 +10968,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -11092,6 +11131,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -11254,6 +11294,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -11416,6 +11457,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -11578,6 +11620,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -11740,6 +11783,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -11902,6 +11946,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -12063,6 +12108,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -12225,6 +12271,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -12387,6 +12434,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -12549,6 +12597,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -12711,6 +12760,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -12873,6 +12923,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -13035,6 +13086,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -13197,6 +13249,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -13359,6 +13412,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -13521,6 +13575,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -13683,6 +13738,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -13845,6 +13901,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -14007,6 +14064,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -14169,6 +14227,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -14331,6 +14390,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -14493,6 +14553,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -14655,6 +14716,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -14817,6 +14879,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -14979,6 +15042,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -15141,6 +15205,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -15303,6 +15368,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -15465,6 +15531,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -15627,6 +15694,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -15789,6 +15857,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -15950,6 +16019,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -16112,6 +16182,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -16274,6 +16345,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -16436,6 +16508,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -16598,6 +16671,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -16760,6 +16834,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -16922,6 +16997,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -17084,6 +17160,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -17246,6 +17323,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -17408,6 +17486,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -17570,6 +17649,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -17732,6 +17812,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -17894,6 +17975,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -18056,6 +18138,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -18218,6 +18301,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -18380,6 +18464,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -18542,6 +18627,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -18704,6 +18790,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -18866,6 +18953,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -19028,6 +19116,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -19190,6 +19279,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -19352,6 +19442,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -19514,6 +19605,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -19676,6 +19768,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -19837,6 +19930,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -19999,6 +20093,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -20161,6 +20256,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -20323,6 +20419,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -20485,6 +20582,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -20647,6 +20745,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { @@ -20809,6 +20908,7 @@ "platform": "7220 IXR-D3L", "os": "srl", "role": "leaf", + "tier": 4, "namespace": "demo", "version": "dev-golden", "labels": { diff --git a/cable_map/operators/cable-map/internal/topology/topology.go b/cable_map/operators/cable-map/internal/topology/topology.go index 8b66644..8330c6d 100644 --- a/cable_map/operators/cable-map/internal/topology/topology.go +++ b/cable_map/operators/cable-map/internal/topology/topology.go @@ -93,6 +93,18 @@ type RawBreakout struct { Speed string // spec.speed } +// RawTierSelector is one spec.tierSelectors entry of a topologies.eda.nokia.com/TopologyGrouping. +type RawTierSelector struct { + Tier int + NodeSelectors []string // spec.tierSelectors[].nodeSelector; empty = catch-all +} + +// RawGrouping is a TopologyGrouping projection: how the cluster assigns nodes to canvas tiers. +type RawGrouping struct { + Name string + Selectors []RawTierSelector +} + // ---- helpers (ports, labels, normalisation) -------------------------------------- // front-panel cage index = the in ethernet--[-]: the 2nd number, i.e. @@ -147,11 +159,87 @@ func peerLabel(linkName string, nodes map[string]struct{}) string { return linkName } +// ---- tiers (TopologyGrouping) ----------------------------------------------------- + +// roleTier mirrors the tiers of EDA's bootstrap "role" TopologyGrouping, used when no +// grouping is streamed (or none of its selectors match a node). Lower = drawn higher. +var roleTier = map[string]int{"backbone": 1, "superspine": 2, "spine": 3, "leaf": 4, "borderleaf": 4} + +const defaultTier = 4 + +// pickGrouping selects the grouping whose tierSelectors drive the canvas rows: the +// bootstrap "role" grouping when present, else the first by name (input is name-sorted). +func pickGrouping(groupings []RawGrouping) *RawGrouping { + for i := range groupings { + if groupings[i].Name == "role" { + return &groupings[i] + } + } + if len(groupings) > 0 { + return &groupings[0] + } + return nil +} + +// tierFor evaluates tierSelectors in spec order, first match wins. An entry's selector +// strings OR together (each string itself an AND of comma-separated key=value terms); +// an entry with no nodeSelector is a catch-all. +func tierFor(labels map[string]string, selectors []RawTierSelector) (int, bool) { + for _, ts := range selectors { + if len(ts.NodeSelectors) == 0 { + return ts.Tier, true + } + for _, sel := range ts.NodeSelectors { + if matchSelector(sel, labels) { + return ts.Tier, true + } + } + } + return 0, false +} + +// ---- natural interface order ------------------------------------------------------ + +// naturalLess orders strings with embedded numbers numerically, so ethernet-1-2 sorts +// before ethernet-1-10 and 1/1/c2/1 before 1/1/c12/1. +func naturalLess(a, b string) bool { + i, j := 0, 0 + for i < len(a) && j < len(b) { + ca, cb := a[i], b[j] + if isDigit(ca) && isDigit(cb) { + si, sj := i, j + for i < len(a) && isDigit(a[i]) { + i++ + } + for j < len(b) && isDigit(b[j]) { + j++ + } + na, nb := strings.TrimLeft(a[si:i], "0"), strings.TrimLeft(b[sj:j], "0") + if len(na) != len(nb) { + return len(na) < len(nb) + } + if na != nb { + return na < nb + } + continue + } + if ca != cb { + return ca < cb + } + i++ + j++ + } + return len(a)-i < len(b)-j +} + +func isDigit(c byte) bool { return c >= '0' && c <= '9' } + // ---- the build ------------------------------------------------------------------ -// BuildTopology folds raw toponode/topolink/interface projections into the view model. -func BuildTopology(nodes []RawNode, links []RawLink, ifaces []RawIface, breakouts []RawBreakout) Topology { - descOf := map[string]string{} +// BuildTopology folds raw toponode/topolink/interface/grouping projections into the view model. +func BuildTopology(nodes []RawNode, links []RawLink, ifaces []RawIface, breakouts []RawBreakout, groupings []RawGrouping) Topology { + descOf := map[string]string{} // Interface CR name -> spec.description (topolink interfaceResource points here) + descByPort := map[string]string{} // node|interface -> description, from non-LAG members lags := map[string]LagInfo{} // node|interface -> neighbours LLDP saw on that physical port lldpByPort := map[string][]LagMember{} // reuse {Node,Port} pair shape @@ -163,6 +251,16 @@ func BuildTopology(nodes []RawNode, links []RawLink, ifaces []RawIface, breakout for _, f := range ifaces { if f.Description != "" { descOf[f.Name] = f.Description + // a physical Interface CR names its port via spec.members; key the description by + // node|port so rows resolve it (CR names like leaf1-ethernet-1-1 never match the + // port label). LAG members keep their own CR's description, not the bundle's. + if f.Type != "LAG" { + for _, m := range f.Members { + if m.Node != "" && m.Interface != "" { + descByPort[m.Node+"|"+m.Interface] = f.Description + } + } + } } for _, m := range f.StatusMembers { if m.Node != "" && m.Interface != "" && m.NodeInterface != "" { @@ -203,6 +301,7 @@ func BuildTopology(nodes []RawNode, links []RawLink, ifaces []RawIface, breakout } } + grouping := pickGrouping(groupings) outNodes := make([]Node, 0, len(nodes)) known := map[string]struct{}{} labelSets := map[string]map[string]struct{}{} // key -> set of values, collected across all nodes @@ -215,11 +314,22 @@ func BuildTopology(nodes []RawNode, links []RawLink, ifaces []RawIface, breakout if n.StatusVersion != "" { version = n.StatusVersion } + role := n.Labels["eda.nokia.com/role"] + tier := 0 + if grouping != nil { + tier, _ = tierFor(n.Labels, grouping.Selectors) + } + if tier == 0 { + if tier = roleTier[role]; tier == 0 { + tier = defaultTier + } + } outNodes = append(outNodes, Node{ Name: n.Name, Platform: platform, OS: n.OperatingSystem, - Role: n.Labels["eda.nokia.com/role"], + Role: role, + Tier: tier, Namespace: n.Namespace, Version: version, Labels: n.Labels, @@ -250,9 +360,13 @@ func BuildTopology(nodes []RawNode, links []RawLink, ifaces []RawIface, breakout if node == "" { return } + desc := descByPort[node+"|"+portLabel(port)] + if desc == "" { + desc = descOf[iface] // the endpoint's Interface CR (possibly a LAG) + } row := Row{ Label: portLabel(port), - Desc: descOf[portLabel(port)], + Desc: desc, RemoteNode: remote.Node, Type: typ, } @@ -355,12 +469,13 @@ func BuildTopology(nodes []RawNode, links []RawLink, ifaces []RawIface, breakout } } - // attach each node's cable table + breakouts to its node + // attach each node's cable table (in natural port order) + breakouts to its node for i := range outNodes { t := tables[outNodes[i].Name] if t == nil { t = []Row{} } + sort.SliceStable(t, func(a, b int) bool { return naturalLess(t[a].Label, t[b].Label) }) outNodes[i].Table = t outNodes[i].Breakouts = bo[outNodes[i].Name] } diff --git a/cable_map/operators/cable-map/internal/topology/topology_test.go b/cable_map/operators/cable-map/internal/topology/topology_test.go index 06f31e8..fcb1625 100644 --- a/cable_map/operators/cable-map/internal/topology/topology_test.go +++ b/cable_map/operators/cable-map/internal/topology/topology_test.go @@ -35,7 +35,10 @@ func TestBuildTopology(t *testing.T) { {Name: "spine1", Labels: map[string]string{"eda.nokia.com/role": "spine"}, StatusPlatform: "7220 IXR-D5"}, } ifaces := []RawIface{ - {Name: "ethernet-1-49", Description: "to spine1"}, // desc keyed by interface name + // desc resolves via spec.members (node|interface); the CR name never matches the port label + {Name: "leaf1-ethernet-1-49", Description: "to spine1", Members: []IfMember{{Node: "leaf1", Interface: "ethernet-1-49"}}}, + // desc fallback via the endpoint's interfaceResource when no member-keyed desc exists + {Name: "isl-lag-x", Description: "cross-link"}, { Name: "lag-1", Type: "LAG", LagType: "LACP", LagMode: "AllActive", Labels: map[string]string{"eda.nokia.com/role": "InterSwitch"}, @@ -82,13 +85,21 @@ func TestBuildTopology(t *testing.T) { {Name: "bo-1", Nodes: []string{"leaf1"}, Interfaces: []string{"ethernet-1-49"}, Channels: 4, Speed: "100G"}, {Name: "bo-sel", NodeSelectors: []string{"eda.nokia.com/role=spine"}, Interfaces: []string{"ethernet-1/2"}, Channels: 2, Speed: "200G"}, } - topo := BuildTopology(nodes, links, ifaces, breakouts) + topo := BuildTopology(nodes, links, ifaces, breakouts, nil) // node projection + platform fallback if topo.Nodes[2].Platform != "7220 IXR-D5" { t.Errorf("spine1 platform fallback: got %q", topo.Nodes[2].Platform) } + // no grouping streamed -> role-derived tier fallback + if got := nodeByName(topo, "spine1").Tier; got != 3 { + t.Errorf("spine1 fallback tier: got %d want 3", got) + } + if got := nodeByName(topo, "leaf1").Tier; got != 4 { + t.Errorf("leaf1 fallback tier: got %d want 4", got) + } + // breakout: direct node ref -> cage 49 (parent ethernet-1-49) split into 4x100G, folded onto the node if b, ok := nodeByName(topo, "leaf1").Breakouts["49"]; !ok || b.Channels != 4 || b.Speed != "100G" { t.Errorf("leaf1 breakout cage 49: got %+v ok=%v", b, ok) @@ -120,6 +131,8 @@ func TestBuildTopology(t *testing.T) { t.Errorf("e1-50 lldpStatus: got %q want mismatch", r.LldpStatus) } else if r.Lag != "" { t.Errorf("e1-50 lag should be empty when interface resource is not a typed LAG, got %q", r.Lag) + } else if r.Desc != "cross-link" { + t.Errorf("e1-50 desc via interfaceResource: got %q want cross-link", r.Desc) } if r, _ := findRow(leaf1, "ethernet-1-10"); r.Type != "edge" || r.Peer != "server-a" || r.LldpStatus != "none" { t.Errorf("edge row: type=%q peer=%q lldp=%q", r.Type, r.Peer, r.LldpStatus) @@ -150,6 +163,67 @@ func TestBuildTopology(t *testing.T) { } } +// Tiers come from the cluster's TopologyGrouping: selectors are evaluated in order +// (first match wins), selector strings OR together, no nodeSelector = catch-all, and +// the bootstrap "role" grouping is preferred when several groupings exist. +func TestTopologyGroupingTiers(t *testing.T) { + nodes := []RawNode{ + {Name: "bb1", Labels: map[string]string{"eda.nokia.com/role": "backbone"}}, + {Name: "ss1", Labels: map[string]string{"eda.nokia.com/role": "superspine"}}, + {Name: "spine1", Labels: map[string]string{"eda.nokia.com/role": "spine"}}, + {Name: "leaf1", Labels: map[string]string{"eda.nokia.com/role": "leaf"}}, + {Name: "bl1", Labels: map[string]string{"eda.nokia.com/role": "borderleaf"}}, + {Name: "srv1", Labels: map[string]string{"eda.nokia.com/role": "server"}}, + } + role := RawGrouping{Name: "role", Selectors: []RawTierSelector{ + {Tier: 1, NodeSelectors: []string{"eda.nokia.com/role=backbone"}}, + {Tier: 2, NodeSelectors: []string{"eda.nokia.com/role=superspine"}}, + {Tier: 3, NodeSelectors: []string{"eda.nokia.com/role=spine"}}, + {Tier: 4, NodeSelectors: []string{"eda.nokia.com/role=leaf", "eda.nokia.com/role=borderleaf"}}, + {Tier: 5}, // catch-all + }} + other := RawGrouping{Name: "alt", Selectors: []RawTierSelector{{Tier: 9}}} + + topo := BuildTopology(nodes, nil, nil, nil, []RawGrouping{other, role}) + want := map[string]int{"bb1": 1, "ss1": 2, "spine1": 3, "leaf1": 4, "bl1": 4, "srv1": 5} + for name, tier := range want { + if got := nodeByName(topo, name).Tier; got != tier { + t.Errorf("%s tier: got %d want %d", name, got, tier) + } + } + + // without the "role" grouping the first (name-sorted) grouping applies + topo = BuildTopology(nodes, nil, nil, nil, []RawGrouping{other}) + if got := nodeByName(topo, "leaf1").Tier; got != 9 { + t.Errorf("alt grouping catch-all tier: got %d want 9", got) + } +} + +// Cable tables come out in natural port order (digit runs compared numerically), for the +// drawer, xlsx, and PDF exports alike. +func TestTableNaturalOrder(t *testing.T) { + nodes := []RawNode{{Name: "leaf1", Labels: map[string]string{"eda.nokia.com/role": "leaf"}}} + mkLink := func(iface string) RawLink { + return RawLink{Name: "leaf1-edge-" + iface, Links: []LinkEntry{{ + Type: "edge", Local: LinkEnd{Node: "leaf1", Interface: iface}, + }}} + } + links := []RawLink{ + mkLink("ethernet-1-10"), mkLink("ethernet-1-2"), mkLink("ethernet-1-1-4"), + mkLink("ethernet-1-1-2"), mkLink("ethernet-1-1"), mkLink("ethernet-2-1"), + mkLink("1/1/c12/1"), mkLink("1/1/c2/1"), + } + topo := BuildTopology(nodes, links, nil, nil, nil) + got := make([]string, 0, len(topo.Nodes[0].Table)) + for _, r := range topo.Nodes[0].Table { + got = append(got, r.Label) + } + want := []string{"1/1/c2/1", "1/1/c12/1", "ethernet-1-1", "ethernet-1-1-2", "ethernet-1-1-4", "ethernet-1-2", "ethernet-1-10", "ethernet-2-1"} + if !reflect.DeepEqual(got, want) { + t.Errorf("natural order:\n got %v\nwant %v", got, want) + } +} + // Ensures the Go structs can losslessly represent the frontend contract: unmarshal the // golden Topology, re-marshal, and confirm the JSON is structurally identical. func TestContractRoundTrip(t *testing.T) {