- Introduction
- Get Started
- play_arrow Apstra GUI
- play_arrow Blueprints and Dashboard
- play_arrow Analytics (Blueprints)
- Analytics Introduction
- play_arrow Dashboards
- play_arrow Anomalies
- play_arrow Widgets
- play_arrow Probes
- play_arrow Predefined Reports (Tech Preview)
- play_arrow Root Causes
- play_arrow Staged (Datacenter Blueprints)
- Blueprint-Wide Search
- play_arrow Physical
- play_arrow Build
- play_arrow Selection
- play_arrow Topology
- play_arrow Nodes
- Nodes (Datacenter)
- Unassign Device (Datacenter)
- Update Deploy Mode (Datacenter)
- Generic Systems vs. External Generic Systems
- Create Generic System
- Create External Generic System
- Create Access Switch
- Update Node Tag (Datacenter)
- Update Port Channel ID Range
- Update Hostname (Datacenter)
- Edit Generic System Name
- Edit Device Properties (Datacenter)
- View Node's Static Routes
- Delete Node
- play_arrow Links
- Links (Datacenter)
- Add Links to Leaf
- Add Links to Spine
- Add Links to Generic System
- Add Links to External Generic System
- Add Leaf Peer Links
- Add Link per Superspine (5-Stage)
- Form LAG
- Create Link in LAG
- Break LAG
- Update LAG Mode
- Update Link Tag (Datacenter)
- Update Link Speed
- Update Link Speed per Superspine (5-Stage)
- Mixed Link Speeds between Leaf and Spine
- Update Link Properties
- Delete Link (Datacenter)
- Export Cabling Map (Datacenter)
- Import Cabling Map (Datacenter)
- Edit Cabling Map (Datacenter)
- Fetch LLDP Data (Datacenter)
- play_arrow Interfaces
- play_arrow Racks
- play_arrow Pods
- play_arrow Planes
-
- play_arrow Virtual
- play_arrow Virtual Networks
- play_arrow Routing Zones
- Static Routes (Virtual)
- Protocol Sessions (Virtual)
- play_arrow Virtual Infrastructure
- play_arrow Statistics
-
- play_arrow Policies
- play_arrow Endpoints
- Security Policies
- Interface Policies
- Routing Policies
- Routing Zone (VRF) Constraints
- play_arrow Routing Zone Policy (4.2.0)
-
- play_arrow Data Center Interconnect (DCI)
- play_arrow Catalog
- play_arrow Logical Devices
- play_arrow Interface Maps
- play_arrow Property Sets
- play_arrow Configlets
- play_arrow AAA Servers
- play_arrow Tags
-
- play_arrow Tasks
- play_arrow Connectivity Templates
- Connectivity Templates Introduction
- play_arrow Primitives
- Primitive: Virtual Network (Single)
- Primitive: Virtual Network (Multiple)
- Primitive: IP Link
- Primitive: Static Route
- Primitive: Custom Static Route
- Primitive: BGP Peering (IP Endpoint)
- Primitive: BGP Peering (Generic System)
- Primitive: Dynamic BGP Peering
- Primitive: Routing Policy
- Primitive: Routing Zone Constraint
- User-defined
- Pre-defined
- Create Connectivity Template for Multiple VNs on Same Interface (Example)
- Create Connectivity Template for Layer 2 Connected External Router (Example)
- Update Connectivity Template Assignments
- Edit Connectivity Template
- Delete Connectivity Template
- play_arrow Fabric Settings (4.2.1)
- play_arrow Fabric Policy (4.2.1)
- play_arrow Severity Preferences (4.2.1)
-
- play_arrow Fabric Settings (4.2.0)
- play_arrow Fabric Policy (4.2.0)
- play_arrow Virtual Network Policy (4.2.0)
- play_arrow Anti-Affinity Policy (4.2.0)
- play_arrow Validation Policy (4.2.0)
-
- BGP Route Tagging
- play_arrow Staged (Freeform Blueprints)
- Freeform Introduction
- play_arrow Blueprints
- play_arrow Physical
- play_arrow Selection
- play_arrow Topology
- play_arrow Systems
- Systems Introduction (Freeform)
- Create Internal System (Freeform)
- Create External System (Freeform)
- Update Config Template Assignment (Freeform)
- Update System Name (Freeform)
- Update Hostname (Freeform)
- Update Device Profile Assignment (Freeform)
- Update System ID Assignment (Freeform)
- Update Deploy Mode (Freeform)
- Update System Tag Assignment (Freeform)
- Delete System (Freeform)
- Device Context (Freeform)
- play_arrow Links
-
- play_arrow Resource Management
- Resource Management Introduction (Freeform)
- play_arrow Blueprint Resources
- play_arrow Allocation Groups
- play_arrow Local Pools
- play_arrow Catalog
- play_arrow Config Templates
- play_arrow Device Profiles
- play_arrow Property Sets
- play_arrow Tags
-
- play_arrow Tasks
- play_arrow Uncommitted (Blueprints)
- play_arrow Active (Datacenter Blueprints)
- play_arrow Time Voyager (Blueprints)
- play_arrow Design
- play_arrow Logical Devices
- play_arrow Interface Maps
- play_arrow Rack Types
- play_arrow Templates
- play_arrow Config Templates
- play_arrow Configlets (Datacenter)
- play_arrow Property Sets (Datacenter)
- play_arrow TCP/UDP Ports
- play_arrow Tags
-
- play_arrow Resources
- play_arrow Analytics
- play_arrow Apstra Flow
- Apstra Flow Introduction
- System Requirements
- play_arrow Dashboards
- play_arrow Supported Flow Records
- play_arrow Flow Enrichment
- play_arrow Monitor Flow Data
- play_arrow Configuration Reference
- play_arrow API
- play_arrow Additional Documentation
- play_arrow Knowledge Base
-
- play_arrow External Systems (RBAC Providers)
- play_arrow Providers
- play_arrow Provider Role Mapping
-
- play_arrow Platform
- play_arrow User / Role Management
- play_arrow Security
- Syslog Configuration (Platform)
- Receivers (Platform)
- Global Statistics (Platform)
- Event Log (Audit Log)
- play_arrow Apstra VM Clusters
- play_arrow Developers
- play_arrow Technical Support
- Check Apstra Versions and Patent Numbers
-
- Favorites & User
- play_arrow Apstra Server Management
- Apstra Server Introduction
- Monitor Apstra Server via CLI
- Restart Apstra Server
- Reset Apstra Server VM Password
- Reinstall Apstra Server
- Apstra Database Overview
- Back up Apstra Database
- Restore Apstra Database
- Reset Apstra Database
- Migrate Apstra Database
- Replace SSL Certificate on Apstra Server with Signed One
- Replace SSL Certificate on Apstra Server with Self-Signed One
- Change Apstra Server Hostname
- Apstra CLI Utility
- play_arrow Guides
- play_arrow References
- play_arrow Feature Matrix
- play_arrow Devices
- play_arrow Analytics
- play_arrow Predefined Dashboards (Analytics)
- play_arrow Predefined Probes (Analytics)
- Probe: BGP Monitoring
- Probe: Bandwidth Utilization
- Probe: Critical Services: Utilization, Trending, Alerting
- Probe: Device Environmental Checks
- Probe: Device System Health
- Probe: Device Telemetry Health
- Probe: Device Traffic
- Probe: Drain Traffic Anomaly
- Probe: ECMP Imbalance (External Interfaces)
- Probe: ECMP Imbalance (Fabric Interfaces)
- Probe: ECMP Imbalance (Spine to Superspine Interfaces)
- Probe: ESI Imbalance
- Probe: EVPN Host Flapping
- Probe: EVPN VXLAN Type-3 Route Validation
- Probe: EVPN VXLAN Type-5 Route Validation
- Probe: External Routes
- Probe: Hot/Cold Interface Counters (Fabric Interfaces)
- Probe: Hot/Cold Interface Counters (Specific Interfaces)
- Probe: Hot/Cold Interface Counters (Spine to Superspine Interfaces)
- Probe: Hypervisor and Fabric LAG Config Mismatch Probe (Virtual Infra)
- Hypervisor and Fabric VLAN Config Mismatch Probe (Virtual Infra)
- Probe: Hypervisor MTU Mismatch Probe (Virtual Infra - NSX-T Only)
- Probe: Hypervisor MTU Threshold Check Probe (Virtual Infra)
- Probe: Hypervisor Missing LLDP Config Probe (Virtual Infra)
- Probe: Hypervisor Redundancy Checks Probe (Virtual Infra)
- Probe: Interface Flapping (Fabric Interfaces)
- Probe: Interface Flapping (Specific Interfaces)
- Probe: Interface Flapping (Specific Interfaces)
- Probe: Interface Policy 802.1x
- Probe: LAG Imbalance
- Probe: Leafs Hosting Critical Services: Utilization, Trending, Alerting
- Probe: Link Fault Tolerance in Leaf and Access LAGs
- Probe: MLAG Imbalance
- Probe: Multiagent Detector
- Probe: Optical Transceivers
- Probe: Packet Discard Percentage
- Probe: Spine Fault Tolerance
- Probe: Total East/West Traffic
- Probe: VMs without Fabric Configured VLANs Probe (Virtual Infra)
- Probe: VXLAN Flood List Validation
- play_arrow Probe Processors (Analytics)
- Processor: Accumulate
- Processor: Average
- Processor: Comparison
- Processor: EVPN Type 3
- Processor: EVPN Type 5
- Processor: Extensible Service Data Collector
- Processor: Generic Graph Collector
- Processor: Generic Service Data Collector
- Processor: Interface Counters
- Processor: Logical Operator
- Processor: Match Count
- Processor: Match Percentage
- Processor: Match String
- Processor: Max
- Processor: Min
- Processor: Periodic Average
- Processor: Range
- Processor: Ratio
- Processor: Service Data Collector
- Processor: Set Comparison
- Processor: Set Count
- Processor: Standard Deviation
- Processor: State
- Processor: Subtract
- Processor: Sum
- Processor: System Utilization
- Processor: Time in State
- Processor: Traffic Monitor
- Processor: Union
- Processor: VXLAN Floodlist
- Configlet Examples (Design)
- play_arrow Apstra CLI Commands
- Apstra EVPN Support Addendum
- Apstra Server Configuration File
- Graph
- Juniper Apstra Technology Preview
-
SONiC Device Profile
Background
Devices are recognized in the Apstra environment with device profiles. They capture device-specific semantics, which are required for the Apstra software to discover them and to run network configs that work well for the datapath once inside the blueprint.
Device profiles are REST entities, which enable you to create, edit, delete, and list during the design phase. Device profiles are used to create interface maps, which get directly used inside the Apstra config rendering engine when blueprints are deployed.
This document covers the knowledge required to create (and edit) a semantically correct Sonic DP, so that not only does it pass the validations in place in Apstra which ensure the right DP is created in the database, but also honors the vendor semantic requirement applicable to the device so that it does not result in deploy failure when the generated configuration is pushed to the network device.
Problem Statement
Device profiles are vendor semantics-aware data structures. To create a device profile, you need the device specification from the vendor. To create a valid and config-friendly JSON, you'll need to translate these specifications into the Apstra device profile data model.
Solution
The high level data model is the same for all DPs. The same keys are used for every device profile. The way we get the values might differ, or might be loaded with a vendor constraint. The document enlists the following:
- The schema of the DP and the nested elements inside the DP.
- The meaning of each key value pair in the schema.
- The vendor specific recipe the values are populated.
- List any constraints, corner cases to consider, especially for port configurations for certain (group of) models.
- Any lessons learnt along the way creating those DPs already in production useful in creating future ones.
User Interface
When you create device profiles from the Apstra GUI, some of your entries are semantically validated. It's not completely capable of ensuring deep vendor-specific constraints and requirements though. With the exact vendor specification, the GUI assists you with creating a semantically valid DP which becomes part of the Apstra database data model.
Alternatively, you can write your own Python code that contains the vendor specifications, normalize it as per Apstra DP data model and generate the json to then import with the GUI.
Selector information
Entering the correct information in all four of the selector fields is critical for the device to get matched to the device profile.
Selector Field | Value | Command to get the information on device |
---|---|---|
model | 0x21 | show platform syseeprom |
manufacturer | If 0x2D in syseeprom, 0x2D else 0x2B | show platform syseeprom |
OS family | SONiC | Show version |
version | .* | Show version |
Capabilities
If you have the device specification, you can obtain its hardware and software capabilities for entry into the device profile.
The table below contains commonly found values in SONiC devices (based on qualified devices).
Selector Field | Value | Command to get the information on device |
---|---|---|
userland | 64 (int) | Does not affect config |
form_factor | ‘1RU’ (string) | Does not affect config |
ecmp_limit | 64 (int) | Does not affect config |
asic | ‘T2’ (string) | Does not affect config |
cpu | ‘x86’ (string) | Does not affect config |
ram | 16 (int) (Note, the unit is in GB) | Does not affect config |
onie | True (bool) (default) | Does not affect config |
lxc | True (bool) (default) | Does not affect config |
Interface naming conventions
Sonic follows the naming conventions per the sonic port name file as found Azure SONIC on the github master. https://github.com/Azure/SONiC/blob/master/doc/sonic-port-name.md
To create a SONIC device profile, you must read through the device specific port_config.ini (for example, sonic-buildimage/device/mellanox/x86_64-mlnx_msn2100-r0/ACS-MSN2100/port_config.ini) file and follow the instructions in the above link to come up with the right interface names.
The port_congi.ini specifies interface names that SONiC uses. The device profile must match interface names which will generate the PORT configs in the configuration file (config_db.json) . For this document purposes, port_config.ini and config_db.json should have the same interface naming standard. Use those interface names in your DP along with the lane numbers provided in the port_cfg.ini file. Once a device profile has been generated based on the aforementioned steps, Apstra will use that along with the LD to generate the Interface Map (IM). Apstra as part of its validation will make sure that the IM (which describes the port and its speeds) are indeed available and supported under “/usr/share/sonic/device/ x86_64-mlnx_msn2100-r0/ACS-MSN2100/port_config.ini” . This validation is performed to make sure SONiC NOS stack does not fail due to unsupported port configuration (in config_db.json) getting wrongly generated in Apstra due to wrong DP. So it is important that the end user makes sure the DP that is generated for a SONiC platform has the correct interface names and lane maps as reflected in port_config.ini file for that particular platform. A platform may have a few different port_config.ini files part of different HWSKUs for that platform. Apstra will try to validate the generated port configs with any of the available options for that platform. Apstra currently does not use the Dynamic Port breakout feature which is on-going in the SONiC project.
Troubleshooting
Device mismatch usually occurs at the beginning of a device’s lifecycle. If the device is not selecting the device profile, check the four selector fields in the device profile.
If ports are configured with incorrect speeds or if the OS-specific port constraints were not handled in the device profile or interface map, then deploy errors could be raised.
A possible flow for root cause would be:
- Check the DP for obvious port capabilities errors. Is the port really capable of the speeds the DP has configured. The device specific port_config.ini Sonic open source project is a good resource to parse for ERROR messages.
- Check if the DP has configured autoneg or disabled interfaces correctly. Autoneg and disabled can both be expressed in the interface setting field.
- When debugging the interface names and lane mapping, please take a look at the corresponding port_config.ini. As an example for AS5712-54X edgecore/accton box we can get the port_config.ini file that has the details like lane/name/alias at https://github.com/Azure/sonic-buildimage/tree/master/device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X
- You can find the naming constraints in the official SONiC documentation. For example if you want to generate the interface names for Accton 5712 54X running SONIC, the port_config.ini is the authority. https://github.com/Azure/sonic-buildimage/blob/master/device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X/port_config.ini Sometimes the device might have inter-port constraints. For SONiC, it's generally laid out in the port_config.ini file. A specific platform could have multiple port_config.ini files, and a specific manufacturer with each port_config.ini file residing in their on HWSKU folders in the sonic image (like the one referenced above). The ability to try out different port speeds on (outside of what is listed in the port_config.ini) will need knowledge of the chipset and also the physical switch manufacturer to see what can be achieved. This information may not be available in any white papers unless requested of vendors.
Example: DP and port_config.ini
Port_config.ini from sonic-buildimage is below for Dell_Z9100 (x86_64-dell_z9100_c2538-r0/Force10-Z9100-C32
# name lanes alias index Ethernet0 49,50,51,52 hundredGigE1/1 1 Ethernet4 53,54,55,56 hundredGigE1/2 2 Ethernet8 57,58,59,60 hundredGigE1/3 3 Ethernet12 61,62,63,64 hundredGigE1/4 4 Ethernet16 65,66,67,68 hundredGigE1/5 5 Ethernet20 69,70,71,72 hundredGigE1/6 6 Ethernet24 73,74,75,76 hundredGigE1/7 7 Ethernet28 77,78,79,80 hundredGigE1/8 8 Ethernet32 37,38,39,40 hundredGigE1/9 9 Ethernet36 33,34,35,36 hundredGigE1/10 10 Ethernet40 45,46,47,48 hundredGigE1/11 11 Ethernet44 41,42,43,44 hundredGigE1/12 12 Ethernet48 81,82,83,84 hundredGigE1/13 13 Ethernet52 85,86,87,88 hundredGigE1/14 14 Ethernet56 89,90,91,92 hundredGigE1/15 15 Ethernet60 93,94,95,96 hundredGigE1/16 16 Ethernet64 97,98,99,100 hundredGigE1/17 17 Ethernet68 101,102,103,104 hundredGigE1/18 18 Ethernet72 105,106,107,108 hundredGigE1/19 19 Ethernet76 109,110,111,112 hundredGigE1/20 20 Ethernet80 21,22,23,24 hundredGigE1/21 21 Ethernet84 17,18,19,20 hundredGigE1/22 22 Ethernet88 29,30,31,32 hundredGigE1/23 23 Ethernet92 25,26,27,28 hundredGigE1/24 24 Ethernet96 117,118,119,120 hundredGigE1/25 25 Ethernet100 113,114,115,116 hundredGigE1/26 26 Ethernet104 125,126,127,128 hundredGigE1/27 27 Ethernet108 121,122,123,124 hundredGigE1/28 28 Ethernet112 5,6,7,8 hundredGigE1/29 29 Ethernet116 1,2,3,4 hundredGigE1/30 30 Ethernet120 13,14,15,16 hundredGigE1/31 31 Ethernet124 9,10,11,12 hundredGigE1/32 32
Translate port_config to a port-to-lane_map data structure using parse.py script:
Parse.py ========= #!/usr/bin/python # Copyright (c) 2017 Apstrktr, Inc. All rights reserved. # Apstrktr, Inc. Confidential and Proprietary. # # This source code is licensed under End User License Agreement found in the # LICENSE file at http://apstra.com/eula # pylint: disable=line-too-long import sys from pprint import pprint # Run the program as ./parse.py <path_to_sonic_platform_port_config.ini> # ex: ./parse.py sonic-buildimage/device/mellanox/x86_64-mlnx_msn2100-r0/ACS-MSN2100/port_config.ini def get_lanemap(buf): if not buf: return None d = {} interface_indices = [] for line in buf.split('\n'): if line.startswith('#'): continue words = line.split(' ') words = [word for word in words if len(word)] if not len(words): continue intf = words[0][8:] lane = words[1].split(',') interface_indices.append(intf) if len(lane) > 1: one = 'Ethernet' + str(intf) two = 'Ethernet' + str(int(intf)+1) three = 'Ethernet' + str(int(intf)+2) four = 'Ethernet' + str(int(intf)+3) d.update({one:lane[0]}) d.update({two:lane[1]}) d.update({three:lane[2]}) d.update({four:lane[3]}) else: d.update({words[0]:words[1]}) return {'interface_names' : interface_indices, 'lane_mapping' : d} def parse_portconfig(f): buf = '' with open(f, 'r') as stream: buf = stream.read() return {'<Platform>': get_lanemap(buf)} if __name__ == '__main__': assert len(sys.argv) > 1, "Missing port_config.ini in cmdline" print "Collecting lane information from ", sys.argv[1] pprint(parse_portconfig(sys.argv[1])) print "=========================================================================================" print " Substitute <Platform> with an identifier for the platform" print " Append the dump into sdk/device-profile/sonic.py's sonic_device_info dictionary" print "=========================================================================================" To run parse.py parse.py <Path to the port_config.ini file from sonic_buildimage> Example: parse.py sonic-buildimage/device/dell/x86_64-dell_z9100_c2538-r0/Force10-Z9100-C32/port_config.ini Collecting lane information from sonic-buildimage/device/dell/x86_64-dell_z9100_c2538-r0/Force10-Z9100-C32/port_config.ini {'<Platform>': {'interface_names': ['0', '4', '8', '12', '16', '20', '24', '28', '32', '36', '40', '44', '48', '52', '56', '60', '64', '68', '72', '76', '80', '84', '88', '92', '96', '100', '104', '108', '112', '116', '120', '124'], 'lane_mapping': {'Ethernet0': '49', 'Ethernet1': '50', 'Ethernet10': '59', 'Ethernet100': '113', 'Ethernet101': '114', 'Ethernet102': '115', 'Ethernet103': '116', 'Ethernet104': '125', 'Ethernet105': '126', 'Ethernet106': '127', 'Ethernet107': '128', 'Ethernet108': '121', 'Ethernet109': '122', 'Ethernet11': '60', 'Ethernet110': '123', 'Ethernet111': '124', 'Ethernet112': '5', 'Ethernet113': '6', 'Ethernet114': '7', 'Ethernet115': '8', 'Ethernet116': '1', 'Ethernet117': '2', 'Ethernet118': '3', 'Ethernet119': '4', 'Ethernet12': '61', 'Ethernet120': '13', 'Ethernet121': '14', 'Ethernet122': '15', 'Ethernet123': '16', 'Ethernet124': '9', 'Ethernet125': '10', 'Ethernet126': '11', 'Ethernet127': '12', 'Ethernet13': '62', 'Ethernet14': '63', 'Ethernet15': '64', 'Ethernet16': '65', 'Ethernet17': '66', 'Ethernet18': '67', 'Ethernet19': '68', 'Ethernet2': '51', 'Ethernet20': '69', 'Ethernet21': '70', 'Ethernet22': '71', 'Ethernet23': '72', 'Ethernet24': '73', 'Ethernet25': '74', 'Ethernet26': '75', 'Ethernet27': '76', 'Ethernet28': '77', 'Ethernet29': '78', 'Ethernet3': '52', 'Ethernet30': '79', 'Ethernet31': '80', 'Ethernet32': '37', 'Ethernet33': '38', 'Ethernet34': '39', 'Ethernet35': '40', 'Ethernet36': '33', 'Ethernet37': '34', 'Ethernet38': '35', 'Ethernet39': '36', 'Ethernet4': '53', 'Ethernet40': '45', 'Ethernet41': '46', 'Ethernet42': '47', 'Ethernet43': '48', 'Ethernet44': '41', 'Ethernet45': '42', 'Ethernet46': '43', 'Ethernet47': '44', 'Ethernet48': '81', 'Ethernet49': '82', 'Ethernet5': '54', 'Ethernet50': '83', 'Ethernet51': '84', 'Ethernet52': '85', 'Ethernet53': '86', 'Ethernet54': '87', 'Ethernet55': '88', 'Ethernet56': '89', 'Ethernet57': '90', 'Ethernet58': '91', 'Ethernet59': '92', 'Ethernet6': '55', 'Ethernet60': '93', 'Ethernet61': '94', 'Ethernet62': '95', 'Ethernet63': '96', 'Ethernet64': '97', 'Ethernet65': '98', 'Ethernet66': '99', 'Ethernet67': '100', 'Ethernet68': '101', 'Ethernet69': '102', 'Ethernet7': '56', 'Ethernet70': '103', 'Ethernet71': '104', 'Ethernet72': '105', 'Ethernet73': '106', 'Ethernet74': '107', 'Ethernet75': '108', 'Ethernet76': '109', 'Ethernet77': '110', 'Ethernet78': '111', 'Ethernet79': '112', 'Ethernet8': '57', 'Ethernet80': '21', 'Ethernet81': '22', 'Ethernet82': '23', 'Ethernet83': '24', 'Ethernet84': '17', 'Ethernet85': '18', 'Ethernet86': '19', 'Ethernet87': '20', 'Ethernet88': '29', 'Ethernet89': '30', 'Ethernet9': '58', 'Ethernet90': '31', 'Ethernet91': '32', 'Ethernet92': '25', 'Ethernet93': '26', 'Ethernet94': '27', 'Ethernet95': '28', 'Ethernet96': '117', 'Ethernet97': '118', 'Ethernet98': '119', 'Ethernet99': '120'}}} ========================================================================================= Substitute <Platform> with an identifier for the platform Append the dump into sdk/device-profile/sonic.py's sonic_device_info dictionary =========================================================================================
The output from above will become a dictionary entry in sonic_device_info in the sonic device_profile generator python file.
Corresponding Device Profile generated in Apstra:
{ "hardware_capabilities": { "asic": "TH", "cpu": "x86", "ecmp_limit": 64, "form_factor": "1RU", "ram": 16, "userland": 64 }, "id": "Force10-Z9100_SONiC", "label": "Dell Force10-Z9100_SONiC", "ports": [ { "column_id": 1, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 0, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet0", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"49,50,51,52\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet0", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"49,50,51,52\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 1, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 1, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet4", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"53,54,55,56\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet4", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"53,54,55,56\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 2, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 2, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet8", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"57,58,59,60\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet8", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"57,58,59,60\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 2, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 3, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet12", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"61,62,63,64\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet12", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"61,62,63,64\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 3, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 4, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet16", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"65,66,67,68\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet16", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"65,66,67,68\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 3, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 5, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet20", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"69,70,71,72\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet20", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"69,70,71,72\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 4, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 6, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet24", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"73,74,75,76\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet24", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"73,74,75,76\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 4, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 7, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet28", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"77,78,79,80\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet28", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"77,78,79,80\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 5, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 8, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet32", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"37,38,39,40\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet32", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"37,38,39,40\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 5, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 9, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet36", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"33,34,35,36\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet36", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"33,34,35,36\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 6, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 10, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet40", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"45,46,47,48\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet40", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"45,46,47,48\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 6, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 11, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet44", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"41,42,43,44\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet44", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"41,42,43,44\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 7, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 12, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet48", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"81,82,83,84\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet48", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"81,82,83,84\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 7, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 13, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet52", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"85,86,87,88\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet52", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"85,86,87,88\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 8, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 14, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet56", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"89,90,91,92\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet56", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"89,90,91,92\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 8, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 15, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet60", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"93,94,95,96\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet60", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"93,94,95,96\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 9, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 16, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet64", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"97,98,99,100\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet64", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"97,98,99,100\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 9, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 17, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet68", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"101,102,103,104\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet68", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"101,102,103,104\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 10, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 18, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet72", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"105,106,107,108\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet72", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"105,106,107,108\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 10, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 19, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet76", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"109,110,111,112\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet76", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"109,110,111,112\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 11, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 20, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet80", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"21,22,23,24\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet80", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"21,22,23,24\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 11, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 21, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet84", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"17,18,19,20\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet84", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"17,18,19,20\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 12, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 22, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet88", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"29,30,31,32\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet88", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"29,30,31,32\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 12, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 23, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet92", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"25,26,27,28\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet92", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"25,26,27,28\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 13, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 24, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet96", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"117,118,119,120\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet96", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"117,118,119,120\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 13, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 25, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet100", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"113,114,115,116\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet100", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"113,114,115,116\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 14, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 26, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet104", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"125,126,127,128\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet104", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"125,126,127,128\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 14, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 27, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet108", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"121,122,123,124\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet108", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"121,122,123,124\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 15, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 28, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet112", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"5,6,7,8\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet112", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"5,6,7,8\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 15, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 29, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet116", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"1,2,3,4\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet116", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"1,2,3,4\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 16, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 30, "row_id": 1, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet120", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"13,14,15,16\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet120", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"13,14,15,16\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] }, { "column_id": 16, "connector_type": "qsfp28", "failure_domain_id": 1, "panel_id": 1, "port_id": 31, "row_id": 2, "slot_id": 0, "transformations": [ { "interfaces": [ { "interface_id": 1, "name": "Ethernet124", "setting": "{\"interface\": {\"speed\": \"100000\", \"lane_map\": \"9,10,11,12\"}}", "speed": { "unit": "G", "value": 100 }, "state": "active" } ], "is_default": true, "transformation_id": 1 }, { "interfaces": [ { "interface_id": 1, "name": "Ethernet124", "setting": "{\"interface\": {\"speed\": \"40000\", \"lane_map\": \"9,10,11,12\"}}", "speed": { "unit": "G", "value": 40 }, "state": "active" } ], "is_default": false, "transformation_id": 2 } ] } ], "selector": { "manufacturer": "Dell|DELL", "model": "Z9100-ON", "os": "SONiC", "os_version": ".*" }, "slot_count": 0, "software_capabilities": { "lxc_support": false, "onie": true } }