Skip to content

Commit

Permalink
Merge remote-tracking branch 'msft_github/master'
Browse files Browse the repository at this point in the history
* msft_github/master: (111 commits)
  add disconnect/connect vm to testbed-cli.sh (sonic-net#566)
  [dhcp_relay] Increase sleep duration to allow LAG and BGP to come up (sonic-net#565)
  [pfcwd]: support t0-116 and clean up the code (sonic-net#563)
  [fanout]: remove vrf management in arista fanout deploy templates (sonic-net#562)
  [fanout-switch-deploy] Support multiple speeds and port breakout (sonic-net#561)
  [extract_log] Improve extract_log script (sonic-net#559)
  Disable upgrade_sonic retry (sonic-net#560)
  Support for Sonic fanout (sonic-net#555)
  [Fanout deploy template] enable root user on fanout switches (sonic-net#557)
  [link state] match exact dut name in the link list (sonic-net#556)
  [pfcwd]: cache the ansible facts (sonic-net#554)
  Fix kernel version check (sonic-net#553)
  [pfcwd]: increase the pause waiting time and ingore snmp errors (sonic-net#551)
  fix typo (sonic-net#552)
  [dir_bcast] enable dir_bcast test on t0-116 topology (sonic-net#550)
  use command to gather host distribution, kernel version facts (sonic-net#549)
  [minigraph templte] use consistent VLAN subnet (sonic-net#546)
  [VM config] skip podset 0 tor 0 routing entry (sonic-net#545)
  Remove job minigraph_facts from boot_onie (sonic-net#548)
  [fast-reboot] pass VM IP in as ASCII strings (sonic-net#547)
  [fast-reboot test] fix syslog reading issue (sonic-net#543)
  add dataacl to minigraph template (sonic-net#544)
  [service_acl] Make test reliable when testing Arista service ACL solution (sonic-net#542)
  [pfcwd]: Iterate functional test over all ports (sonic-net#490)
  [service_acl] Detect expected output message even if it is followed by other text (sonic-net#541)
  [testbed]: Remove connection local for port_alias module (sonic-net#540)
  Revert "[minigraph-gen] fix AclInterface entries in minigraph (sonic-net#538)" (sonic-net#539)
  [minigraph-gen] fix AclInterface entries in minigraph (sonic-net#538)
  add retries in onie installation (sonic-net#537)
  Use connection plugin to install sonic image in ONIE. (sonic-net#536)
  [dhcp_relay]: Add --relax flag to ptf command (sonic-net#535)
  [minigraph_facts] use minigraph on DUT (sonic-net#534)
  Fix minigraph_facts: mkdir recursively (sonic-net#533)
  [minigraph_facts] use mingraph on DUT to test (sonic-net#532)
  generate minigraph based on topology file (sonic-net#531)
  Need to double-escape when using 'args' syntax (sonic-net#529)
  Fix improper 'local_action' syntax (sonic-net#528)
  Unify style of 'wait_for' actions across playbooks (sonic-net#527)
  [minigraph_facts] retrieving dhcp server list from vlan configuration instead of DhcpResources (sonic-net#526)
  [snmp_facts] increase get command timeout to fix cpu test failure (sonic-net#525)
  [everflow_test]: Add copy ptftests folder to use the remote.py file (sonic-net#522)
  Fix snmp_facts on PSU oid (sonic-net#520)
  Fix snmp queue test (sonic-net#519)
  [lag_test]: Remove the unnecessary testbed_type check (sonic-net#518)
  [ip_decap_test]: Support t0-64 topology (sonic-net#517)
  [acl_test]: Copy ptftests folder for the remote.py file (sonic-net#516)
  Add test case for PSU (sonic-net#514)
  [mtu]: Add t1-64-lag topology support for MTU test (sonic-net#513)
  [ip_decap]: Add t1-64-lag support in the script for the list of source port (sonic-net#512)
  [everflow]: Add missing spaces in ptf command (sonic-net#511)
  [acl_test]: Add ptf_platform_dir: ptftests to use customized platform code to support 64 ports (sonic-net#510)
  [crm]: Implement test for CRM (sonic-net#473)
  [everflow]: Add support for t1-64-lag topology (sonic-net#502)
  Fix sonic_image_version: get from sonic_version.yml, no dependency on grub (sonic-net#508)
  [topology]: Update t1-64-lag topology template to add AclInterfaces piece (sonic-net#505)
  Pull syncd-rpc with sonic version tag (sonic-net#507)
  Remove leading and trailing whitespaces when reading veos file (sonic-net#506)
  [lag_2] remove hard coded interval_count so it can be set by test (sonic-net#503)
  ptf_runner: Add one line comment for ptf_platform_dir (sonic-net#501)
  [testbed]: add port speed and fec configuration in sonic fanout (sonic-net#498)
  [typo]: Replace string t1-lag-64 with t1-64-lag (sonic-net#499)
  Adding sensor data for S6100 (sonic-net#496)
  [fib_test]: Add t1-64-lag src_ports in FIB test (sonic-net#497)
  Fix typo in acl test case name (sonic-net#494)
  Add one more Mellanox SKU string in everflow_tb_test script (sonic-net#495)
  Adding sensor data for Z9100 (sonic-net#492)
  [service_acl] Make test more robust and efficient (sonic-net#489)
  [dhcp relay test] adding more test scenarios (sonic-net#440)
  fix sanity check failed to recover (sonic-net#488)
  Fix PFC_WD test (sonic-net#479)
  add sonic fanout support (sonic-net#485)
  Update README.test.md
  Update README.test.md
  Fix table caption in testbed.csv and documentation (sonic-net#482)
  [test case] Add test: restart swss service (sonic-net#483)
  Add test case port toggle (sonic-net#484)
  [test infrastructure] allow overriding recover system actioin (sonic-net#480)
  [SNMP]add new SNMP counters tests to snmp.yml (sonic-net#477)
  add t0-52 topology (sonic-net#476)
  add command line option for creategraph.py (sonic-net#475)
  Add support for additional timestamp format (sonic-net#474)
  Ignore ansible output in extract_log (sonic-net#472)
  Add extract_logs action to concatenate logs after log rotate (sonic-net#471)
  Add ACL ICMP test (sonic-net#2) (sonic-net#465)
  [pfcwd]:add docker exec to avoid tty error (sonic-net#470)
  [test_tag]remove pfc_wd test tag from test by tag main yaml (sonic-net#469)
  [ansible]gather fact by default (sonic-net#468)
  [sensors]fix Dell S6000 sensors test fail (sonic-net#462)
  [vlan]improve test to wait a bit longer for config reload (sonic-net#463)
  one more place for hwsku of new Mellanox 2700 (sonic-net#464)
  [sensors]sensors test add new hwsku for Mellanox 2700 (sonic-net#461)
  [PFCWD]: test enhancement (sonic-net#456)
  [sensors] remove redundant sensor data definitin for sku MSN2100 (sonic-net#460)
  when call testcase by name, fetch all vms management info from testbed_facts (sonic-net#457)
  [acl test] error in ACL rule json file for destination ip (sonic-net#434)
  [sensor data] add sensor data for Mellanox MSN2410 and MSN2100 (sonic-net#449)
  Fix sku-sensors-data for 7050-QX32 (sonic-net#454)
  [deploy minigraph]add default enable BGP to deploy minigraph step (sonic-net#455)
  [upgrade]save bgp UP state after they are brough up (sonic-net#453)
  [reboot test] call sudo reboot to reboot dut (sonic-net#452)
  ...
  • Loading branch information
zhenggen-xu committed Apr 10, 2018
2 parents 1bb8adf + 2b8c3fa commit e73547b
Show file tree
Hide file tree
Showing 186 changed files with 17,158 additions and 2,070 deletions.
14 changes: 12 additions & 2 deletions ansible/README.test.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# **Ansible Playbooks for Testing SONiC**
# **Ansible Playbooks for Testing SONiC**

## **Requirements**
- A testbed needed to be set up before hand. See [Testbed](README.testbed.md) for more information.
Expand All @@ -10,7 +10,7 @@

### **Run test by test case name**

This is going to be the supported method to call individual test case going forward. All test cases name and calling variables and applied topologies are specified in ansible/roles/test/vars/testcases.yml
This is going to be the supported method to call individual test case going forward. All test cases name and calling variables and applied topologies are specified in [ansible/roles/test/vars/testcases.yml](roles/test/vars/testcases.yml)

When calling test, testbed_name is the main entry to pickup/understand the testbed information associated with the test (ie. ptf_host and tyestbed_type, VMs info...). testbed_name is inherited from your own `ansible/testbed.csv` file. The first column of each line(one testbed topology definition) is the unique name of the testbed and will be used in testbed_name option when calling test.

Expand Down Expand Up @@ -63,6 +63,12 @@ ansible-playbook test_sonic.yml -i inventory --limit {DUT_NAME} --become --tags
```
- Requires switch connected to a PTF testbed

##### ECN WRED test
```
ansible-playbook test_sonic.yml -i inventory --limit {DUT_NAME} --become --tags ecn_wred
```
- Requires switch connected to a VM testbed

##### Everflow_testbed test
```
ansible-playbook test_sonic.yml -i inventory --limit {DUT_NAME} --tags everflow_testbed --extra-vars "testbed_type={TESTBED_TYPE} ptf_host={PTF_HOST}"
Expand Down Expand Up @@ -159,3 +165,7 @@ ansible-playbook test_sonic.yml -i inventory --limit {DUT_NAME} -e "testbed_name
```
- Requires switch connected to a t0 testbed
- Requires switch connected to fanout switch and fanout switch need support [QinQ](https://en.wikipedia.org/wiki/IEEE_802.1ad).

### CRM test
```
ansible-playbook test_sonic.yml -i inventory --limit {DUT_NAME} --become --tags crm
1 change: 1 addition & 0 deletions ansible/README.testbed.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
- [Setup](doc/README.testbed.Setup.md)
- [Topology](doc/README.testbed.Topology.md)
- [Configuration](doc/README.testbed.Config.md)
- [Minigraph](doc/README.testbed.Minigraph.md)
- [Command Line](doc/README.testbed.Cli.md)
- [Example](doc/README.testbed.Example.md)
- [FAQ](doc/README.testbed.FAQ.md)
Expand Down
2 changes: 1 addition & 1 deletion ansible/ansible.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ module_lang = C
# smart - gather by default, but don't regather if already gathered
# implicit - gather by default, turn off with gather_facts: False
# explicit - do not gather by default, must say gather_facts: True
gathering = smart
gathering = implicit

# additional paths to search for roles in, colon separated
#roles_path = /etc/ansible/roles
Expand Down
2 changes: 0 additions & 2 deletions ansible/basic_check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@

- name: Gathering minigraph facts about the device
minigraph_facts: host={{ inventory_hostname }}
connection: local
become: no
tags: always

- include: roles/test/tasks/interface.yml
Expand Down
50 changes: 24 additions & 26 deletions ansible/boot_onie.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,6 @@
gather_facts: no
tasks:

- name: Gathering minigraph facts about the device
minigraph_facts: host={{ inventory_hostname }}
connection: local
tags: always
become: no

- name: Set next boot device to ONIE
become: true
shell: grub-editenv /host/grub/grubenv set next_entry=ONIE
Expand All @@ -27,38 +21,42 @@
real_ansible_host: "{{ ansible_ssh_host }}"

- name: Wait for switch to come back (to ONIE)
local_action:
wait_for host={{ real_ansible_host }}
port=22
state=started
delay=60
timeout=300
become: false
local_action: wait_for
args:
host: "{{ real_ansible_host }}"
port: 22
state: started
delay: 60
timeout: 300
changed_when: false

- name: Wait for switch to reboot again
local_action:
wait_for host={{ real_ansible_host }}
port=22
state=stopped
delay=5
timeout=600
become: false
local_action: wait_for
args:
host: "{{ real_ansible_host }}"
port: 22
state: stopped
delay: 5
timeout: 600
changed_when: false

- name: Wait for switch to come back (to SONiC)
local_action:
wait_for host={{ real_ansible_host }}
port=22
state=started
delay=30
timeout=600
search_regex=OpenSSH
become: false
local_action: wait_for
args:
host: "{{ real_ansible_host }}"
port: 22
state: started
search_regex: "OpenSSH"
delay: 30
timeout: 600
changed_when: false

- name: Wait for the SONiC initialization process
pause: seconds=60
pause:
seconds: 60

- name: Set all bgp interfaces admin-up
become: true
Expand Down
75 changes: 47 additions & 28 deletions ansible/config_sonic_basedon_testbed.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This Playbook run time generate matching configuration file for SONiC switch(Minigraph) based on a specific testbed topology specified in testbed.csv
# When user call testbed-cli to deploy a testbed topology, use this playbook to generate matching SONiC minigraph file and deploy it into SONiC switch under test.
# This Playbook run time generate matching configuration file for SONiC switch(Minigraph) based on a specific testbed topology specified in testbed.csv
# When user call testbed-cli to deploy a testbed topology, use this playbook to generate matching SONiC minigraph file and deploy it into SONiC switch under test.
# Or when you know your topology name, you may use this playbook alone to generate a minigraph matching your topology name without deploy it.
#
# VM Topologies are defined inside of vars/ directory in files vars/topo_{{ topology_name}}.yml
Expand All @@ -13,12 +13,12 @@
# To generate and deploy minigraph for SONiC switch matching the VM topology please use following command
# ansible-playbook -i lab config_sonic_basedon_testbed.yml -l sonic_dut_name -e vm_base=VM0300 -e topo=t0 [-e deploy=true -e save=true]
# ansible-playbook -i lab config_sonic_basedon_testbed.yml -l sonic_dut_name -e testbed_name=vms1-1 [-e deploy=true -e save=true]
#

# Parameters
# -l str-msn2700-01 - the sonic_dut_name you are going to generate minigraph for
# -e vm_base=VM0300 - the VM name which is used to as base to calculate VM name for this set
# -e topo=t0 - the name of topology to generate minigraph file
# -e testbed_name=vms1-1 - the testbed name specified in testbed.csv file
# -e testbed_name=vms1-1 - the testbed name specified in testbed.csv file
# (if you give 'testbed_name' option, will use info from testbed and ignore topo and vm_base options)
# -e deploy=True - if deploy the newly generated minigraph to the targent DUT, default is false if not defined
# -e save=True - if save the newly generated minigraph to the targent DUT as starup-config, default is false if not defined
Expand All @@ -31,12 +31,9 @@
####################################################################################################################################################################################

- hosts: sonic
gather_facts: yes
gather_facts: no
tasks:

- fail: msg="need hwsku, interface speed, netmask and interface prefix/postfix defined to generate configuration file"
when: (hwsku is not defined) or (iface_speed is not defined) or (mgmt_subnet_mask_length is not defined)

- block:
- name: Gathering testbed information
test_facts: testbed_name="{{ testbed_name }}"
Expand All @@ -55,39 +52,59 @@
when: "testbed_facts['vm_base'] != ''"
when: testbed_name is defined

- topo_facts: topo={{ topo }}
connection: local

- set_fact:
VM_topo: "{% if 'ptf' in topo %}False{% else %}True{% endif %}"
remote_dut: "{{ ansible_ssh_host }}"
template_name: "{{ 't1' if 'ptf' in topo else topo }}"

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

- name: find interface name mapping
- name: find interface name mapping and individual interface speed if defined
port_alias: hwsku="{{ hwsku }}"

- debug: var=port_alias

- name: save original minigraph file (if original file does not exist, then ignore errors)
shell: mv minigraph/{{ inventory_hostname }}.xml minigraph/{{ inventory_hostname }}.xml.orig
connection: local
ignore_errors: true

- name: create minigraph file in minigraph folder
become: true
template: src=templates/topo/{{ template_name }}.j2
dest=minigraph/{{ inventory_hostname}}.xml
- name: find all enabled host_interfaces
set_fact:
host_if_indexes: "{{ vm_topo_config['host_interfaces'] | difference(vm_topo_config['disabled_host_interfaces']) }}"

- name: find all vlan interface names for T0 topology
set_fact:
vlan_intfs: "{{ vlan_intfs|default([])}} + ['{{ port_alias[item] }}' ]"
with_items: "{{ host_if_indexes }}"
when: ("'host_interfaces' in vm_topo_config") and ("'tor' in vm_topo_config['dut_type'] | lower")

- name: find all interface indexes mapping connecting to VM
set_fact:
interface_to_vms: "{{ interface_to_vms|default({}) | combine({ item.key: item.value['interface_indexes'] }) }}"
with_dict: vm_topo_config['vm']

- name: find all interface indexes connecting to VM
set_fact:
ifindex_to_vms: "{{ ifindex_to_vms|default([]) }} + {{ item.value['interface_indexes']}}"
with_dict: vm_topo_config['vm']

- name: find all interface names
set_fact:
intf_names: "{{ intf_names | default({}) | combine({item.key: port_alias[item.value[0]|int:item.value[-1]|int+1] }) }}"
with_dict: interface_to_vms

- name: create minigraph file in ansible minigraph folder
template: src=templates/minigraph_template.j2
dest=minigraph/{{ inventory_hostname}}.{{ topo }}.xml
connection: local

- block:
- name: saved original minigraph file (if original file may don't exist, then ignore errors)
- name: saved original minigraph file in SONiC DUT(ignore errors when file doesnot exist)
shell: mv /etc/sonic/minigraph.xml /etc/sonic/minigraph.xml.orig
become: true
ignore_errors: true

- name: create minigraph file for SONiC device
template: src=templates/topo/{{ template_name }}.j2
- name: create new minigraph file for SONiC device
template: src=templates/minigraph_template.j2
dest=/etc/sonic/minigraph.xml
become: true

Expand All @@ -100,12 +117,14 @@

- name: execute cli "config load_minigraph -y" to apply new minigraph
become: true
ignore_errors: true
shell: config load_minigraph -y

- name: execute cli "config bgp startup all" to bring up all bgp sessions for test
become: true
shell: config bgp startup all

- name: execute cli "config save -y" to save current minigraph as startup-config
become: true
ignore_errors: true
shell: config save -y
when: save is defined and save|bool == true
when: deploy is defined and deploy|bool == true
46 changes: 3 additions & 43 deletions ansible/doc/README.testbed.Config.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

- [```ansible/files/lab_connection_graph.xml```](../files/lab_connection_graph.xml): This is the lab graph file for library/conn_graph_facts.py to parse and get all lab fanout switch connections information. If you have only one fanout switch, you may go head manually modify the sample lab_connection_graph.xml file to set bot your fanout leaf and fanout root switch management IP point to the same fanout switch management IP and make sure all DUT and Fanout name and IP are matching your testbed.

- ```ansible/files/creategraph.py```: Helper file helps you generate a lab_connection_graph.xml based on the device file and link file specified above.
- [```ansible/files/creategraph.py```](../files/creategraph.py): Helper file helps you generate a lab_connection_graph.xml based on the device file and link file specified above.

Based on ansible_facts, you may write ansible playbooks to deploy fanout switches or run test which requires to know the DUT physical connections to fanout switch

Expand All @@ -25,7 +25,7 @@

### ```testbed.csv``` format
```
# conf-name,group-name,topo,ptf_image_name,ptf_mgmt_ip,server,vm_base,dut,comment
# conf-name,group-name,topo,ptf_image_name,ptf_ip,server,vm_base,dut,comment
ptf1-m,ptf1,ptf32,docker-ptf-sai-mlnx,10.255.0.188/24,server_1,,str-msn2700-01,Tests ptf
vms-t1,vms1-1,t1,docker-ptf-sai-mlnx,10.255.0.178/24,server_1,VM0100,str-msn2700-01,Tests vms
vms-t1-lag,vms1-1,t1-lag,docker-ptf-sai-mlnx,10.255.0.178/24,server_1,VM0100,str-msn2700-01,Tests vms
Expand All @@ -36,7 +36,7 @@ vms-t1-lag,vms1-1,t1-lag,docker-ptf-sai-mlnx,10.255.0.178/24,server_1,VM0100,str
- group-name – used in interface names, up to 8 characters
- topo – name of topology
- ptf_imagename – defines PTF image
- ptf_mgmt_ip – ip address for mgmt interface of PTF container
- ptf_ip – ip address for mgmt interface of PTF container
- server – server where the testbed resides
- vm_base – first VM for the testbed. If empty, no VMs are used
- dut – target dut name
Expand All @@ -63,44 +63,4 @@ Must be strictly checked in code reviews

TODO: check this constraints in testbed-cli.sh

## Generate and load SONiC configuration file

There is an ansible playbook `config_sonic_basedon_testbed.yml` which can help you generate a minigraph for your SONiC testbed based on the topology you specified and load the configuration minigraph.xml to SONiC DUT.
When user call testbed-cli to deploy a testbed topology, use this playbook to generate matching SONiC minigraph file and deploy it into SONiC switch under test.
Or when you know your topology name, you may use this playbook alone to generate a minigraph matching your topology name without deploy it.
VM Topologies are defined inside of vars/ directory in files vars/topo_{{ topology_name}}.yml
Every topology should have a name to distinct one topology from another on the server
Every topology contains a ptf container which will be used as placeholder for the injected interfaces from VMs, or direct connections to PTF host
VMs inventory file is also required to have all VMs ready for generating the minigraph file
VMs inventory is in file 'veos'
Template files for generating minigraph.xml are defined in template/topo directory
`TODO: Create xml graph template files for all available topologies; and create config_db style json configuration files to match all available topologies. No all checked in topologies have the correct xml graph template. T0, T1, T1-lag for 32 ports and t1-lag for 64 ports are supported for now.`
To generate and deploy minigraph for SONiC switch matching the VM topology please use following command:
`ansible-playbook -i lab config_sonic_basedon_testbed.yml -l sonic_dut_name -e vm_base=VM0300 -e topo=t0 [-e deploy=true]`
```Parameters
-l str-msn2700-01 - the sonic_dut_name you are going to generate minigraph for
-e vm_base=VM0300 - the VM name which is used to as base to calculate VM name for this set
-e topo=t0 - the name of topology to generate minigraph file
-e deploy=True - if deploy the newly generated minigraph to the targent DUT, default is false if not defined
-e save=True - if save the newly generated minigraph to the targent DUT as starup-config, default is false if not defined
```

After minigraph.xml is generated, the playbook will replace the original minigraph file under ansible/minigraph/ with the newly generated minigraph file for the SONiC device.

The playbook will based on deploy=True or False to deside if load the SONiC device with new minigraph or not.
```
If deploy=true, the playbook will apply the newly generated minigraph to the SONiC switch
If save=true, the playbook will save the newly generated minigraph to SONiC switch as startup-config
```
38 changes: 38 additions & 0 deletions ansible/doc/README.testbed.Minigraph.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Device Minigraph Generation and Deployment

Different topologies requires different configuration/minigraph on the DUT.
```testbed-cli.sh gen-mg|deploy-mg``` allows to generate and deploy minigraph to
the DUT based on the topology type.

Before you run the command, first prepare [inventory](../lab) file and
[testbed.csv](../testbed.csv) file. In the command line, `vms-sn2700-t0`
is the testbed name defined in `testbed.csv`, `lab` is the inventory file.
`password.txt` is the vault password file.

```
./testbed-cli.sh deploy-mg vms-sn2700-t0 lab password.txt
```

**Note**

- To configure your SONiC switch with different port speeds, you need to specify port speed in `port_config.ini`. Example [port_config.ini](https://github.com/Azure/sonic-buildimage/blob/master/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/port_config.ini).

## How it works

The tool works as follows:

- Read the testbed info from `testbed.csv` using the testbed name.

- Read the topology information defined in topology file `vars/topo_{{ topology_name}}.yml`

- Read the VMs information from the `veos` inventory file.

- Generate minigraph based on minigraph templates in `templates` folder.

- Deploy minigraph to the DUT.

- Load the minigraph on DUT.

- Save the configuration in config db.

For more details, please refer the comments in [`config_sonic_basedon_testbed.yml`](../config_sonic_basedon_testbed.yml).
Loading

0 comments on commit e73547b

Please sign in to comment.