diff options
Diffstat (limited to 'resources')
3 files changed, 433 insertions, 0 deletions
diff --git a/resources/tools/download_install_vpp_rpms.sh b/resources/tools/download_install_vpp_rpms.sh new file mode 100644 index 0000000000..29e09216db --- /dev/null +++ b/resources/tools/download_install_vpp_rpms.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +VER="RELEASE" + +VPP_REPO_URL_PATH="./VPP_REPO_URL" +if [ -e "$VPP_REPO_URL_PATH" ]; then + VPP_REPO_URL=$(cat $VPP_REPO_URL_PATH) + REPO=$(echo ${VPP_REPO_URL#https://nexus.fd.io/content/repositories/}) + REPO=$(echo ${REPO%/fd.io.centos7}) +else + REPO='https://nexus.fd.io/content/repositories/fd.io.centos7' +fi + +ARTIFACTS="vpp vpp-lib vpp-debuginfo vpp-devel vpp-python-api vpp-plugins" + + +yum-config-manager --add-repo $REPO + +if [ "$1" != "--skip-install" ]; then + echo Installing VPP + sudo yum install -y $ARTIFACTS +else + echo VPP Installation skipped +fi diff --git a/resources/tools/virl/topologies/double-ring-nested.centos7.virl b/resources/tools/virl/topologies/double-ring-nested.centos7.virl new file mode 100644 index 0000000000..4a88e8377b --- /dev/null +++ b/resources/tools/virl/topologies/double-ring-nested.centos7.virl @@ -0,0 +1,299 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<topology xmlns="http://www.cisco.com/VIRL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="0.9" xsi:schemaLocation="http://www.cisco.com/VIRL https://raw.github.com/CiscoVIRL/schema/v0.9/virl.xsd"> + <extensions> + <entry key="management_network" type="String">flat</entry> + </extensions> + <node name="tg1" type="SIMPLE" subtype="server" location="570,238" vmImage="$$VM_IMAGE$$"> + <extensions> + <entry key="config" type="String">#cloud-config +bootcmd: +- ln -s -t /etc/rc.d /etc/rc.local +hostname: tg1 +manage_etc_hosts: true +nfs_server_scratch: $$NFS_SERVER_SCRATCH$$ +nfs_server_common: $$NFS_SERVER_COMMON$$ +runcmd: +- systemctl enable serial-getty-digi@ttyS0.service +- systemctl start serial-getty-digi@ttyS0.service +- systemctl start rc-local +- touch /tmp/before-sed +- sed -i 's/^\s*PasswordAuthentication\s\+no/PasswordAuthentication yes/' /etc/ssh/sshd_config +- echo "UseDNS no" >> /etc/ssh/sshd_config +- service ssh restart +- service sshd restart +users: +- default +- gecos: User configured by VIRL Configuration Engine 0.21.4 + lock-passwd: false + name: cisco + plain-text-passwd: cisco + shell: /bin/bash + ssh-authorized-keys: + - VIRL-USER-SSH-PUBLIC-KEY + - VIRL-USER-SSH-PUBLIC-KEY + sudo: ALL=(ALL) NOPASSWD:ALL +write_files: +- path: /usr/local/sbin/cloud-instance-name + content: | + #!/usr/bin/python3.5 + import pickle + print(pickle.loads(open('/var/lib/cloud/instance/obj.pkl', 'rb').read(), encoding="ACSII").metadata['name']) + owner: root:root + permissions: '0755' +- path: /etc/rc.local + owner: root:root + permissions: '0755' + content: |- + #!/bin/sh + grep -q nfs_server_scratch /var/lib/cloud/instance/user-data.txt || exit 1 + grep -q nfs_server_common /var/lib/cloud/instance/user-data.txt || exit 1 + nfs_server_scratch=$(grep -E '^nfs_server_scratch:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }') + nfs_server_common=$(grep -E '^nfs_server_common:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }') + instance_name=$(/usr/local/sbin/cloud-instance-name | cut -f 3 -d '<' | cut -f 1 -d '>') + echo My instance name is $instance_name + + MAXCOUNT=12 + RETRY=5 + + mkdir -p /scratch + mkdir -p /mnt/common + + echo "Mounting NFS directories" + count=0 + while [ $count -lt $MAXCOUNT ] && ! mount -t nfs "${nfs_server_scratch}/${instance_name}" /scratch + do + sleep 5 + count=$[$count+1] + done + + mount -t nfs "${nfs_server_common}" /mnt/common + + mkdir /scratch/$(hostname) + cp /VERSION /scratch/$(hostname)/ + + exit 0 +</entry> + <entry key="Auto-generate config" type="Boolean">false</entry> + </extensions> + <interface id="0" name="eth1"/> + <interface id="1" name="eth2"/> + <interface id="2" name="eth3"/> + <interface id="3" name="eth4"/> + <interface id="4" name="eth5"/> + <interface id="5" name="eth6"/> + </node> + <node name="sut1" type="SIMPLE" subtype="vPP" location="425,26" vmImage="$$VM_IMAGE$$"> + <extensions> + <entry key="config" type="string">#cloud-config +bootcmd: +- ln -s -t /etc/rc.d /etc/rc.local +hostname: sut1 +manage_etc_hosts: true +nfs_server_scratch: $$NFS_SERVER_SCRATCH$$ +nfs_server_common: $$NFS_SERVER_COMMON$$ +runcmd: +- systemctl enable serial-getty-digi@ttyS0.service +- systemctl start serial-getty-digi@ttyS0.service +- systemctl start rc-local +- sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config +- echo "UseDNS no" >> /etc/ssh/sshd_config +- service ssh restart +- service sshd restart +- sed -i 's/no-pci//' /opt/cisco/vpe/etc/qn.conf +- sed -i 's/1024/1024 decimal-interface-names/g' /opt/cisco/vpe/etc/qn.conf +- ln -s /dev/null /etc/sysctl.d/80-vpp.conf +users: +- default +- gecos: User configured by VIRL Configuration Engine 0.21.4 + lock-passwd: false + name: cisco + plain-text-passwd: cisco + shell: /bin/bash + ssh-authorized-keys: + - VIRL-USER-SSH-PUBLIC-KEY + - VIRL-USER-SSH-PUBLIC-KEY + sudo: ALL=(ALL) NOPASSWD:ALL +write_files: +- path: /usr/local/sbin/cloud-instance-name + content: | + #!/usr/bin/python3.5 + import pickle + print(pickle.loads(open('/var/lib/cloud/instance/obj.pkl', 'rb').read(), encoding="ACSII").metadata['name']) + owner: root:root + permissions: '0755' +- path: /etc/rc.local + owner: root:root + permissions: '0755' + content: |- + #!/bin/sh + grep -q nfs_server_scratch /var/lib/cloud/instance/user-data.txt || exit 1 + grep -q nfs_server_common /var/lib/cloud/instance/user-data.txt || exit 1 + nfs_server_scratch=$(grep -E '^nfs_server_scratch:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }') + nfs_server_common=$(grep -E '^nfs_server_common:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }') + instance_name=$(/usr/local/sbin/cloud-instance-name | cut -f 3 -d '<' | cut -f 1 -d '>') + echo My instance name is $instance_name + + MAXCOUNT=12 + RETRY=5 + + mkdir -p /scratch + mkdir -p /mnt/common + + echo "Mounting NFS directories" + count=0 + while [ $count -lt $MAXCOUNT ] && ! mount -t nfs "${nfs_server_scratch}/${instance_name}" /scratch + do + sleep 5 + count=$[$count+1] + done + + mount -t nfs "${nfs_server_common}" /mnt/common + + # Overwrite nested VM image with latest as per NFS + if [ -f /mnt/common/nested-vm-current.img ] + then + rm -f /var/lib/vm/vhost-nested.img + cp /mnt/common/nested-vm-current.img /var/lib/vm/vhost-nested.img + fi + + mkdir /scratch/$(hostname) + cp /VERSION /scratch/$(hostname)/ + cat /var/lib/vm/vhost-nested.img | strings | grep NESTED_VERSION= > /scratch/$(hostname)/NESTED_VERSION + + exit 0 +- path: /etc/sysctl.d/90-csit.conf + owner: root:root + content: | + # Number of 2MB hugepages desired + vm.nr_hugepages=1024 + + # Must be greater than or equal to (2 * vm.nr_hugepages). + vm.max_map_count=20000 + + # All groups allowed to access hugepages + vm.hugetlb_shm_group=0 + + # Shared Memory Max must be greator or equal to the total size of hugepages. + # For 2MB pages, TotalHugepageSize = vm.nr_hugepages * 2 * 1024 * 1024 + # If the existing kernel.shmmax setting (cat /sys/proc/kernel/shmmax) + # is greater than the calculated TotalHugepageSize then set this parameter + # to current shmmax value. + kernel.shmmax=2147483648 +</entry> + </extensions> + <interface id="0" name="GigabitEthernet0/4/0"/> + <interface id="1" name="GigabitEthernet0/5/0"/> + <interface id="2" name="GigabitEthernet0/6/0"/> + <interface id="3" name="GigabitEthernet0/7/0"/> + </node> + <node name="sut2" type="SIMPLE" subtype="vPP" location="748,26" vmImage="$$VM_IMAGE$$"> + <extensions> + <entry key="config" type="string">#cloud-config +bootcmd: +- ln -s -t /etc/rc.d /etc/rc.local +hostname: sut2 +manage_etc_hosts: true +nfs_server_scratch: $$NFS_SERVER_SCRATCH$$ +nfs_server_common: $$NFS_SERVER_COMMON$$ +runcmd: +- systemctl enable serial-getty-digi@ttyS0.service +- systemctl start serial-getty-digi@ttyS0.service +- systemctl start rc-local +- sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config +- echo "UseDNS no" >> /etc/ssh/sshd_config +- service ssh restart +- service sshd restart +- sed -i 's/no-pci//' /opt/cisco/vpe/etc/qn.conf +- sed -i 's/1024/1024 decimal-interface-names/g' /opt/cisco/vpe/etc/qn.conf +- ln -s /dev/null /etc/sysctl.d/80-vpp.conf +users: +- default +- gecos: User configured by VIRL Configuration Engine 0.21.4 + lock-passwd: false + name: cisco + plain-text-passwd: cisco + shell: /bin/bash + ssh-authorized-keys: + - VIRL-USER-SSH-PUBLIC-KEY + - VIRL-USER-SSH-PUBLIC-KEY + sudo: ALL=(ALL) NOPASSWD:ALL +write_files: +- path: /usr/local/sbin/cloud-instance-name + content: | + #!/usr/bin/python3.5 + import pickle + print(pickle.loads(open('/var/lib/cloud/instance/obj.pkl', 'rb').read(), encoding="ACSII").metadata['name']) + owner: root:root + permissions: '0755' +- path: /etc/rc.local + owner: root:root + permissions: '0755' + content: |- + #!/bin/sh + grep -q nfs_server_scratch /var/lib/cloud/instance/user-data.txt || exit 1 + grep -q nfs_server_common /var/lib/cloud/instance/user-data.txt || exit 1 + nfs_server_scratch=$(grep -E '^nfs_server_scratch:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }') + nfs_server_common=$(grep -E '^nfs_server_common:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }') + instance_name=$(/usr/local/sbin/cloud-instance-name | cut -f 3 -d '<' | cut -f 1 -d '>') + echo My instance name is $instance_name + + MAXCOUNT=12 + RETRY=5 + + mkdir -p /scratch + mkdir -p /mnt/common + + echo "Mounting NFS directories" + count=0 + while [ $count -lt $MAXCOUNT ] && ! mount -t nfs "${nfs_server_scratch}/${instance_name}" /scratch + do + sleep 5 + count=$[$count+1] + done + + mount -t nfs "${nfs_server_common}" /mnt/common + + # Overwrite nested VM image with latest as per NFS + if [ -f /mnt/common/nested-vm-current.img ] + then + rm -f /var/lib/vm/vhost-nested.img + cp /mnt/common/nested-vm-current.img /var/lib/vm/vhost-nested.img + fi + + mkdir /scratch/$(hostname) + cp /VERSION /scratch/$(hostname)/ + cat /var/lib/vm/vhost-nested.img | strings | grep NESTED_VERSION= > /scratch/$(hostname)/NESTED_VERSION + + exit 0 +- path: /etc/sysctl.d/90-csit.conf + owner: root:root + content: | + # Number of 2MB hugepages desired + vm.nr_hugepages=1024 + + # Must be greater than or equal to (2 * vm.nr_hugepages). + vm.max_map_count=20000 + + # All groups allowed to access hugepages + vm.hugetlb_shm_group=0 + + # Shared Memory Max must be greator or equal to the total size of hugepages. + # For 2MB pages, TotalHugepageSize = vm.nr_hugepages * 2 * 1024 * 1024 + # If the existing kernel.shmmax setting (cat /sys/proc/kernel/shmmax) + # is greater than the calculated TotalHugepageSize then set this parameter + # to current shmmax value. + kernel.shmmax=2147483648 +</entry> + </extensions> + <interface id="0" name="GigabitEthernet0/4/0"/> + <interface id="1" name="GigabitEthernet0/5/0"/> + <interface id="2" name="GigabitEthernet0/6/0"/> + <interface id="3" name="GigabitEthernet0/7/0"/> + </node> + <connection dst="/virl:topology/virl:node[1]/virl:interface[3]" src="/virl:topology/virl:node[2]/virl:interface[1]"/> + <connection dst="/virl:topology/virl:node[1]/virl:interface[4]" src="/virl:topology/virl:node[2]/virl:interface[2]"/> + <connection dst="/virl:topology/virl:node[2]/virl:interface[3]" src="/virl:topology/virl:node[3]/virl:interface[3]"/> + <connection dst="/virl:topology/virl:node[2]/virl:interface[4]" src="/virl:topology/virl:node[3]/virl:interface[4]"/> + <connection dst="/virl:topology/virl:node[1]/virl:interface[5]" src="/virl:topology/virl:node[3]/virl:interface[1]"/> + <connection dst="/virl:topology/virl:node[1]/virl:interface[6]" src="/virl:topology/virl:node[3]/virl:interface[2]"/> +</topology> diff --git a/resources/tools/virl/topologies/double-ring-nested.centos7.yaml b/resources/tools/virl/topologies/double-ring-nested.centos7.yaml new file mode 100644 index 0000000000..00b297c7f1 --- /dev/null +++ b/resources/tools/virl/topologies/double-ring-nested.centos7.yaml @@ -0,0 +1,95 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/3_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 3-node] + +nodes: + TG: + type: TG + host: "{topology[tg1][nic-management][ip-addr]}" + port: 22 + username: cisco + priv_key: | +{priv_key} + interfaces: + port3: + mac_address: "{topology[tg1][nic-2][hw-addr]}" + pci_address: "0000:00:06.0" + link: link1 + driver: virtio-pci + port4: + mac_address: "{topology[tg1][nic-3][hw-addr]}" + pci_address: "0000:00:07.0" + link: link4 + driver: virtio-pci + port5: + mac_address: "{topology[tg1][nic-4][hw-addr]}" + pci_address: "0000:00:08.0" + link: link2 + driver: virtio-pci + port6: + mac_address: "{topology[tg1][nic-5][hw-addr]}" + pci_address: "0000:00:09.0" + link: link5 + driver: virtio-pci + DUT1: + type: DUT + host: "{topology[sut1][nic-management][ip-addr]}" + port: 22 + username: cisco + honeycomb: + user: admin + passwd: admin + port: 8183 + netconf_port: 2831 + priv_key: | +{priv_key} + interfaces: + port1: + mac_address: "{topology[sut1][nic-0][hw-addr]}" + pci_address: "0000:00:04.0" + link: link1 + port2: + mac_address: "{topology[sut1][nic-1][hw-addr]}" + pci_address: "0000:00:05.0" + link: link4 + port3: + mac_address: "{topology[sut1][nic-2][hw-addr]}" + pci_address: "0000:00:06.0" + link: link3 + port4: + mac_address: "{topology[sut1][nic-3][hw-addr]}" + pci_address: "0000:00:07.0" + link: link6 + DUT2: + type: DUT + host: "{topology[sut2][nic-management][ip-addr]}" + port: 22 + username: cisco + honeycomb: + user: admin + passwd: admin + port: 8183 + netconf_port: 2831 + priv_key: | +{priv_key} + interfaces: + port1: + mac_address: "{topology[sut2][nic-0][hw-addr]}" + pci_address: "0000:00:04.0" + link: link2 + port2: + mac_address: "{topology[sut2][nic-1][hw-addr]}" + pci_address: "0000:00:05.0" + link: link5 + port3: + mac_address: "{topology[sut2][nic-2][hw-addr]}" + pci_address: "0000:00:06.0" + link: link3 + port4: + mac_address: "{topology[sut2][nic-3][hw-addr]}" + pci_address: "0000:00:07.0" + link: link6 |