Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Empty file modified ansible/README.deploy.md
100644 → 100755
Empty file.
Empty file modified ansible/README.md
100644 → 100755
Empty file.
Empty file modified ansible/README.test.md
100644 → 100755
Empty file.
Empty file modified ansible/README.testbed.md
100644 → 100755
Empty file.
5 changes: 3 additions & 2 deletions ansible/ansible.cfg
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@

# some basic default values...

inventory = /etc/ansible/hosts
#inventory = /etc/ansible/hosts
inventory = /var/clsnet/git-sw-csa/sonic-mgmt/ansible
library = library:library/ixia
remote_tmp = $HOME/.ansible/tmp
pattern = *
Expand Down Expand Up @@ -212,7 +213,7 @@ pipelining = True

# if True, make ansible use scp if the connection type is ssh
# (default is sftp)
#scp_if_ssh = True
scp_if_ssh = True

[accelerate]
accelerate_port = 5099
Expand Down
Empty file modified ansible/basic_check.yml
100644 → 100755
Empty file.
Empty file modified ansible/boot_onie.yml
100644 → 100755
Empty file.
5 changes: 3 additions & 2 deletions ansible/config_sonic_basedon_testbed.yml
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@
remote_dut: "{{ ansible_ssh_host }}"

- name: gather testbed VM informations
testbed_vm_info: base_vm={{ testbed_facts['vm_base'] }} topo={{ testbed_facts['topo'] }}
#testbed_vm_info: base_vm="{{ testbed_facts['vm_base'] }}" topo="{{ testbed_facts['topo'] }}"
testbed_vm_info: base_vm="{{vm_base}}" topo="{{topo}}"
connection: local
when: "VM_topo | bool"

Expand Down Expand Up @@ -126,5 +127,5 @@
- name: execute cli "config save -y" to save current minigraph as startup-config
become: true
shell: config save -y
when: save is defined and save|bool == true
# when: save is defined and save|bool == true
when: deploy is defined and deploy|bool == true
Empty file modified ansible/deploy_sonic.yml
100644 → 100755
Empty file.
Empty file modified ansible/doc/README.testbed.Cli.md
100644 → 100755
Empty file.
Empty file modified ansible/doc/README.testbed.Config.md
100644 → 100755
Empty file.
Empty file modified ansible/doc/README.testbed.Example.md
100644 → 100755
Empty file.
Empty file modified ansible/doc/README.testbed.FAQ.md
100644 → 100755
Empty file.
Empty file modified ansible/doc/README.testbed.Internal.md
100644 → 100755
Empty file.
Empty file modified ansible/doc/README.testbed.Minigraph.md
100644 → 100755
Empty file.
Empty file modified ansible/doc/README.testbed.Overview.md
100644 → 100755
Empty file.
Empty file modified ansible/doc/README.testbed.Setup.md
100644 → 100755
Empty file.
Empty file modified ansible/doc/README.testbed.Topology.md
100644 → 100755
Empty file.
Empty file modified ansible/doc/img/testbed-direct.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ansible/doc/img/testbed-injected.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ansible/doc/img/testbed-ptf32.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ansible/doc/img/testbed-ptf64.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ansible/doc/img/testbed-server.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ansible/doc/img/testbed-t0.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ansible/doc/img/testbed-t1-lag.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ansible/doc/img/testbed-t1.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ansible/doc/img/testbed.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ansible/eos.yml
100644 → 100755
Empty file.
Empty file modified ansible/fanout.yml
100644 → 100755
Empty file.
Empty file modified ansible/fanout_connect.yml
100644 → 100755
Empty file.
Binary file added ansible/files/.lab_connection_graph.xml.swp
Binary file not shown.
149 changes: 74 additions & 75 deletions ansible/files/lab_connection_graph.xml
100644 → 100755

Large diffs are not rendered by default.

92 changes: 92 additions & 0 deletions ansible/files/lab_connection_graph_slx_t1.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
<LabConnectionGraph>
<PhysicalNetworkGraphDeclaration>
<Devices>
<Device Hostname="cel_seastone_01" HwSku="Celestica-DX010-C32" Type="DevSonic"/>
<Device Hostname="str-7260-10" HwSku="Arista-7260QX-64" Type="FanoutLeaf"/>
<Device Hostname="str-7260-11" HwSku="Arista-7260QX-64" Type="FanoutRoot"/>
<Device Hostname="seastone-01" HwSku="Celestica-DX010-C32" Type="FanoutLeaf"/>
<Device Hostname="STR-ACS-SERV-01" HwSku="TestServ" Type="Server"/>
</Devices>
<DeviceInterfaceLinks>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet0" StartDevice="cel_seastone_01" StartPort=" Ethernet0"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet4" StartDevice="cel_seastone_01" StartPort=" Ethernet4"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet8" StartDevice="cel_seastone_01" StartPort=" Ethernet8"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet12" StartDevice="cel_seastone_01" StartPort=" Ethernet12"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet16" StartDevice="cel_seastone_01" StartPort=" Ethernet16"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet20" StartDevice="cel_seastone_01" StartPort=" Ethernet20"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet24" StartDevice="cel_seastone_01" StartPort=" Ethernet24"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet28" StartDevice="cel_seastone_01" StartPort=" Ethernet28"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet32" StartDevice="cel_seastone_01" StartPort=" Ethernet32"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet36" StartDevice="cel_seastone_01" StartPort=" Ethernet36"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet40" StartDevice="cel_seastone_01" StartPort=" Ethernet40"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet44" StartDevice="cel_seastone_01" StartPort=" Ethernet44"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet48" StartDevice="cel_seastone_01" StartPort=" Ethernet48"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet52" StartDevice="cel_seastone_01" StartPort=" Ethernet52"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet56" StartDevice="cel_seastone_01" StartPort=" Ethernet56"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet60" StartDevice="cel_seastone_01" StartPort=" Ethernet60"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet64" StartDevice="cel_seastone_01" StartPort=" Ethernet64"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet68" StartDevice="cel_seastone_01" StartPort=" Ethernet68"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet72" StartDevice="cel_seastone_01" StartPort=" Ethernet72"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet76" StartDevice="cel_seastone_01" StartPort=" Ethernet76"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet80" StartDevice="cel_seastone_01" StartPort=" Ethernet80"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet84" StartDevice="cel_seastone_01" StartPort=" Ethernet84"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet88" StartDevice="cel_seastone_01" StartPort=" Ethernet88"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet92" StartDevice="cel_seastone_01" StartPort=" Ethernet92"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort=" Ethernet96" StartDevice="cel_seastone_01" StartPort=" Ethernet96"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort="Ethernet100" StartDevice="cel_seastone_01" StartPort="Ethernet100"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort="Ethernet104" StartDevice="cel_seastone_01" StartPort="Ethernet104"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort="Ethernet108" StartDevice="cel_seastone_01" StartPort="Ethernet108"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort="Ethernet112" StartDevice="cel_seastone_01" StartPort="Ethernet112"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort="Ethernet116" StartDevice="cel_seastone_01" StartPort="Ethernet116"/>
<DeviceInterfaceLink BandWidth="100000" EndDevice="seastone-01" EndPort="Ethernet120" StartDevice="cel_seastone_01" StartPort="Ethernet120"/>
<DeviceInterfaceLink BandWidth="40000" EndDevice="STR-ACS-SERV-01" EndPort="enp175s0f0" StartDevice="seastone-01" StartPort="Ethernet124"/>
</DeviceInterfaceLinks>
</PhysicalNetworkGraphDeclaration>
<DataPlaneGraph>
<DevicesL3Info Hostname="str-7260-10">
<ManagementIPInterface Name="ManagementIp" Prefix="10.250.0.110/23"/>
</DevicesL3Info>
<DevicesL2Info Hostname="str-7260-10"/>
<DevicesL3Info Hostname="str-7260-11">
<ManagementIPInterface Name="ManagementIp" Prefix="10.251.0.234/23"/>
</DevicesL3Info>
<DevicesL2Info Hostname="str-7260-11"/>
<DevicesL3Info Hostname="seastone-01">
<ManagementIPInterface Name="ManagementIp" Prefix="10.250.0.54/23"/>
</DevicesL3Info>
<DevicesL2Info Hostname="seastone-01">
<InterfaceVlan mode="Access" portname=" Ethernet0" vlanids="100"/>
<InterfaceVlan mode="Access" portname=" Ethernet4" vlanids="101"/>
<InterfaceVlan mode="Access" portname=" Ethernet8" vlanids="102"/>
<InterfaceVlan mode="Access" portname=" Ethernet12" vlanids="103"/>
<InterfaceVlan mode="Access" portname=" Ethernet16" vlanids="104"/>
<InterfaceVlan mode="Access" portname=" Ethernet20" vlanids="105"/>
<InterfaceVlan mode="Access" portname=" Ethernet24" vlanids="106"/>
<InterfaceVlan mode="Access" portname=" Ethernet28" vlanids="107"/>
<InterfaceVlan mode="Access" portname=" Ethernet32" vlanids="108"/>
<InterfaceVlan mode="Access" portname=" Ethernet36" vlanids="109"/>
<InterfaceVlan mode="Access" portname=" Ethernet40" vlanids="110"/>
<InterfaceVlan mode="Access" portname=" Ethernet44" vlanids="111"/>
<InterfaceVlan mode="Access" portname=" Ethernet48" vlanids="112"/>
<InterfaceVlan mode="Access" portname=" Ethernet52" vlanids="113"/>
<InterfaceVlan mode="Access" portname=" Ethernet56" vlanids="114"/>
<InterfaceVlan mode="Access" portname=" Ethernet60" vlanids="115"/>
<InterfaceVlan mode="Access" portname=" Ethernet64" vlanids="116"/>
<InterfaceVlan mode="Access" portname=" Ethernet68" vlanids="117"/>
<InterfaceVlan mode="Access" portname=" Ethernet72" vlanids="118"/>
<InterfaceVlan mode="Access" portname=" Ethernet76" vlanids="119"/>
<InterfaceVlan mode="Access" portname=" Ethernet80" vlanids="120"/>
<InterfaceVlan mode="Access" portname=" Ethernet84" vlanids="121"/>
<InterfaceVlan mode="Access" portname=" Ethernet88" vlanids="122"/>
<InterfaceVlan mode="Access" portname=" Ethernet92" vlanids="123"/>
<InterfaceVlan mode="Access" portname=" Ethernet96" vlanids="124"/>
<InterfaceVlan mode="Access" portname="Ethernet100" vlanids="125"/>
<InterfaceVlan mode="Access" portname="Ethernet104" vlanids="126"/>
<InterfaceVlan mode="Access" portname="Ethernet108" vlanids="127"/>
<InterfaceVlan mode="Access" portname="Ethernet112" vlanids="128"/>
<InterfaceVlan mode="Access" portname="Ethernet116" vlanids="129"/>
<InterfaceVlan mode="Access" portname="Ethernet120" vlanids="130"/>
<InterfaceVlan mode="Trunk" portname="Ethernet124" vlanids=""/>
</DevicesL2Info>
</DataPlaneGraph>
</LabConnectionGraph>
121 changes: 121 additions & 0 deletions ansible/files/slx_t0/creategraph.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
#!/usr/bin/env python

import csv
import sys
import os
import argparse
from lxml import etree

DEFAULT_DEVICECSV = 'sonic_lab_devices.csv'
DEFAULT_LINKCSV = 'sonic_lab_links.csv'

LAB_CONNECTION_GRAPH_ROOT_NAME = 'LabConnectionGraph'
LAB_CONNECTION_GRAPH_DPGL2_NAME = 'DevicesL2Info'

class LabGraph(object):

"""
This is used to create "graph" file of lab for all connections and vlan info from csv file
We(both engineer and lab technician) maintian and modify the csv file to keep track of the lab
infrastucture for Sonic development and testing environment.
"""

def __init__(self, dev_csvfile=None, link_csvfile=None, graph_xmlfile=None):
#TODO:make generated xml file name as parameters in the future to make it more flexible
self.devices = []
self.links = []
self.devcsv = dev_csvfile
self.linkcsv = link_csvfile
self.png_xmlfile = 'str_sonic_png.xml'
self.dpg_xmlfile = 'str_sonic_dpg.xml'
self.one_xmlfile = graph_xmlfile
self.pngroot = etree.Element('PhysicalNetworkGraphDeclaration')
self.dpgroot = etree.Element('DataPlaneGraph')


def read_devices(self):
csv_dev = open(self.devcsv)
csv_devices = csv.DictReader(csv_dev)
devices_root = etree.SubElement(self.pngroot, 'Devices')
for row in csv_devices:
attrs = {}
self.devices.append(row)
for key in row:
if key.lower() != 'managementip':
attrs[key]=row[key].decode('utf-8')
prod = etree.SubElement(devices_root, 'Device', attrs)
csv_dev.close()

def read_links(self):
csv_file = open(self.linkcsv)
csv_links = csv.DictReader(csv_file)
links_root = etree.SubElement(self.pngroot, 'DeviceInterfaceLinks')
for link in csv_links:
attrs = {}
for key in link:
if key.lower() != 'vlanid' and key.lower() != 'vlanmode':
attrs[key]=link[key].decode('utf-8')
prod = etree.SubElement(links_root, 'DeviceInterfaceLink', attrs)
self.links.append(link)
csv_file.close()

def generate_dpg(self):
for dev in self.devices:
hostname = dev.get('Hostname', '')
managementip = dev.get('ManagementIp', '')
if hostname and 'fanout' in dev['Type'].lower():
###### Build Management interface IP here, if we create each device indivial minigraph file, we may comment this out
l3inforoot = etree.SubElement(self.dpgroot, 'DevicesL3Info', {'Hostname': hostname})
etree.SubElement(l3inforoot, 'ManagementIPInterface', {'Name': 'ManagementIp', 'Prefix': managementip})
####### Build L2 information Here
l2inforoot = etree.SubElement(self.dpgroot, LAB_CONNECTION_GRAPH_DPGL2_NAME, {'Hostname': hostname})
vlanattr = {}
for link in self.links:
if link['StartDevice'] == hostname:
vlanattr['portname'] = link['StartPort']
if link['EndDevice'] == hostname:
vlanattr['portname'] = link['EndPort']
if link['StartDevice'] == hostname or link['EndDevice'] == hostname:
vlanattr['vlanids'] = link['VlanID']
vlanattr['mode'] = link['VlanMode']
etree.SubElement(l2inforoot, 'InterfaceVlan', vlanattr)

def create_xml(self):
'''

if two seperate file of png and dpg needed, uncomment these part

pngxml = open(self.png_xmlfile, 'w')
png = etree.tostring(self.pngroot, pretty_print=True)
pngxml.write(png)

pngxml = open(self.dpg_xmlfile, 'w')
dpg = etree.tostring(self.dpgroot, pretty_print=True)
pngxml.write(dpg)
'''

onexml = open(self.one_xmlfile, 'w')
root=etree.Element(LAB_CONNECTION_GRAPH_ROOT_NAME)
root.append(self.pngroot)
root.append(self.dpgroot)
result = etree.tostring(root, pretty_print=True)
onexml.write(result)

def main():

parser = argparse.ArgumentParser()
parser.add_argument("-d", "--device", help="device file", default=DEFAULT_DEVICECSV)
parser.add_argument("-l", "--links", help="link file", default=DEFAULT_LINKCSV)
parser.add_argument("-o", "--output", help="output xml file", required=True)
args = parser.parse_args()

mygraph = LabGraph(args.device, args.links, args.output)

mygraph.read_devices()
mygraph.read_links()
mygraph.generate_dpg()
mygraph.create_xml()


if __name__ == '__main__':
main()
6 changes: 6 additions & 0 deletions ansible/files/slx_t0/sonic_lab_devices.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Hostname,ManagementIp,HwSku,Type
cel_seastone_01,10.250.0.53/23,Celestica-DX010-C32,DevSonic
str-7260-10,10.250.0.110/23,Arista-7260QX-64,FanoutLeaf
str-7260-11,10.251.0.234/23,Arista-7260QX-64,FanoutRoot
seastone-01,10.250.0.54/23,Celestica-DX010-C32,FanoutLeaf
STR-ACS-SERV-01,10.250.0.1/23,TestServ,Server
33 changes: 33 additions & 0 deletions ansible/files/slx_t0/sonic_lab_links.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
StartDevice,StartPort,EndDevice,EndPort,BandWidth,VlanID,VlanMode
cel_seastone_01,etp1,seastone-01, Ethernet0,100000,200,Access
cel_seastone_01,etp2,seastone-01, Ethernet4,100000,201,Access
cel_seastone_01,etp3,seastone-01, Ethernet8,100000,202,Access
cel_seastone_01,etp4,seastone-01, Ethernet12,100000,203,Access
cel_seastone_01,etp5,seastone-01, Ethernet16,100000,204,Access
cel_seastone_01,etp6,seastone-01, Ethernet20,100000,205,Access
cel_seastone_01,etp7,seastone-01, Ethernet24,100000,206,Access
cel_seastone_01,etp8,seastone-01, Ethernet28,100000,207,Access
cel_seastone_01,etp9,seastone-01, Ethernet32,100000,208,Access
cel_seastone_01,etp10,seastone-01, Ethernet36,100000,209,Access
cel_seastone_01,etp11,seastone-01, Ethernet40,100000,210,Access
cel_seastone_01,etp12,seastone-01, Ethernet44,100000,211,Access
cel_seastone_01,etp13,seastone-01, Ethernet48,100000,212,Access
cel_seastone_01,etp14,seastone-01, Ethernet52,100000,213,Access
cel_seastone_01,etp15,seastone-01, Ethernet56,100000,214,Access
cel_seastone_01,etp16,seastone-01, Ethernet60,100000,215,Access
cel_seastone_01,etp17,seastone-01, Ethernet64,100000,216,Access
cel_seastone_01,etp18,seastone-01, Ethernet68,100000,217,Access
cel_seastone_01,etp19,seastone-01, Ethernet72,100000,218,Access
cel_seastone_01,etp20,seastone-01, Ethernet76,100000,219,Access
cel_seastone_01,etp21,seastone-01, Ethernet80,100000,220,Access
cel_seastone_01,etp22,seastone-01, Ethernet84,100000,221,Access
cel_seastone_01,etp23,seastone-01, Ethernet88,100000,222,Access
cel_seastone_01,etp24,seastone-01, Ethernet92,100000,223,Access
cel_seastone_01,etp25,seastone-01, Ethernet96,100000,224,Access
cel_seastone_01,etp26,seastone-01,Ethernet100,100000,225,Access
cel_seastone_01,etp27,seastone-01,Ethernet104,100000,226,Access
cel_seastone_01,etp28,seastone-01,Ethernet108,100000,227,Access
cel_seastone_01,etp29,seastone-01,Ethernet112,100000,228,Access
cel_seastone_01,etp30,seastone-01,Ethernet116,100000,229,Access
cel_seastone_01,etp31,seastone-01,Ethernet120,100000,230,Access
seastone-01,etp32,STR-ACS-SERV-01,enp175s0f0,40000,,Trunk
7 changes: 4 additions & 3 deletions ansible/files/sonic_lab_devices.csv
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Hostname,ManagementIp,HwSku,Type
str-msn2700-01,10.251.0.188/23,Mellanox-2700,DevSonic
str-7260-10,10.251.0.13/23,Arista-7260QX-64,FanoutLeaf
cel-seastone-01,10.250.0.53/23,Celestica-DX010-C32,DevSonic
str-7260-10,10.250.0.110/23,Arista-7260QX-64,FanoutLeaf
str-7260-11,10.251.0.234/23,Arista-7260QX-64,FanoutRoot
str-acs-serv-01,10.251.0.245/23,TestServ,Server
seastone-01,10.250.0.54/23,Celestica-DX010-C32,FanoutLeaf
STR-ACS-SERV-01,10.250.0.1/23,TestServ,Server
Loading