Add VIRL topology files and template for nested virtualisation 65/665/2
authorCarsten Koester <ckoester@cisco.com>
Fri, 1 Apr 2016 23:14:37 +0000 (19:14 -0400)
committerGerrit Code Review <gerrit@fd.io>
Tue, 5 Apr 2016 13:11:07 +0000 (13:11 +0000)
Change-Id: I57dbe4f179b3cfd3f51c9dec503ca45a5c0521fd
Signed-off-by: Carsten Koester <ckoester@cisco.com>
resources/tools/virl/topologies/simple-ring-nested.virl [new file with mode: 0644]
resources/tools/virl/topologies/simple-ring-nested.yaml [new file with mode: 0644]

diff --git a/resources/tools/virl/topologies/simple-ring-nested.virl b/resources/tools/virl/topologies/simple-ring-nested.virl
new file mode 100644 (file)
index 0000000..e1da570
--- /dev/null
@@ -0,0 +1,300 @@
+<?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="server-java-nested">
+        <extensions>
+            <entry key="config" type="String">#cloud-config&#xD;
+bootcmd:&#xD;
+- ln -s -t /etc/rc.d /etc/rc.local&#xD;
+hostname: tg1&#xD;
+manage_etc_hosts: true&#xD;
+nfs_server_scratch: $$NFS_SERVER_SCRATCH$$
+nfs_server_common: $$NFS_SERVER_COMMON$$
+runcmd:&#xD;
+- start ttyS0&#xD;
+- systemctl start getty@ttyS0.service&#xD;
+- systemctl start rc-local&#xD;
+- touch /tmp/before-sed&#xD;
+- sed -i 's/^\s*PasswordAuthentication\s\+no/PasswordAuthentication yes/' /etc/ssh/sshd_config&#xD;
+- echo "UseDNS no" &gt;&gt; /etc/ssh/sshd_config&#xD;
+- service ssh restart&#xD;
+- service sshd restart&#xD;
+users:&#xD;
+- default&#xD;
+- gecos: User configured by VIRL Configuration Engine 0.21.4&#xD;
+  lock-passwd: false&#xD;
+  name: cisco&#xD;
+  plain-text-passwd: cisco&#xD;
+  shell: /bin/bash&#xD;
+  ssh-authorized-keys:&#xD;
+  - VIRL-USER-SSH-PUBLIC-KEY&#xD;
+  - VIRL-USER-SSH-PUBLIC-KEY&#xD;
+  sudo: ALL=(ALL) NOPASSWD:ALL&#xD;
+write_files:&#xD;
+- path: /etc/init/ttyS0.conf&#xD;
+  owner: root:root&#xD;
+  content: |&#xD;
+    # ttyS0 - getty&#xD;
+    # This service maintains a getty on ttyS0 from the point the system is&#xD;
+    # started until it is shut down again.&#xD;
+    start on stopped rc or RUNLEVEL=[12345]&#xD;
+    stop on runlevel [!12345]&#xD;
+    respawn&#xD;
+    exec /sbin/getty -L 115200 ttyS0 vt102&#xD;
+  permissions: '0644'&#xD;
+- path: /etc/systemd/system/dhclient@.service&#xD;
+  content: |&#xD;
+    [Unit]&#xD;
+    Description=Run dhclient on %i interface&#xD;
+    After=network.target&#xD;
+    [Service]&#xD;
+    Type=oneshot&#xD;
+    ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease&#xD;
+    RemainAfterExit=yes&#xD;
+  owner: root:root&#xD;
+  permissions: '0644'&#xD;
+- path: /usr/local/sbin/cloud-instance-name
+  content: |
+    #!/usr/bin/python
+    import pickle
+    print pickle.loads(open('/var/lib/cloud/instance/obj.pkl').read()).metadata['name']
+  owner: root:root
+  permissions: '0755'
+- path: /etc/rc.local&#xD;
+  owner: root:root&#xD;
+  permissions: '0755'&#xD;
+  content: |-&#xD;
+    #!/bin/sh&#xD;
+    ifconfig eth1 up 10.0.0.6 netmask 255.255.255.252&#xD;
+    ifconfig eth2 up 10.0.0.14 netmask 255.255.255.252&#xD;
+
+    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 '&lt;' | cut -f 1 -d '&gt;')
+    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 ] &amp;&amp; ! 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)
+
+    exit 0&#xD;
+</entry>
+            <entry key="Auto-generate config" type="Boolean">false</entry>
+        </extensions>
+        <interface id="0" name="eth1" ipv4="10.0.0.6" netPrefixLenV4="30"/>
+        <interface id="1" name="eth2" ipv4="10.0.0.14" netPrefixLenV4="30"/>
+    </node>
+    <node name="sut1" type="SIMPLE" subtype="vPP" location="425,26"  vmImage="server-java-nested">
+        <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:
+- start ttyS0
+- systemctl start getty@ttyS0.service
+- systemctl start rc-local
+- sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config
+- echo "UseDNS no" &gt;&gt; /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
+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: /etc/init/ttyS0.conf
+  owner: root:root
+  content: |
+    # ttyS0 - getty
+    # This service maintains a getty on ttyS0 from the point the system is
+    # started until it is shut down again.
+    start on stopped rc or RUNLEVEL=[12345]
+    stop on runlevel [!12345]
+    respawn
+    exec /sbin/getty -L 115200 ttyS0 vt102
+  permissions: '0644'
+- path: /etc/systemd/system/dhclient@.service
+  content: |
+    [Unit]
+    Description=Run dhclient on %i interface
+    After=network.target
+    [Service]
+    Type=oneshot
+    ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease
+    RemainAfterExit=yes
+  owner: root:root
+  permissions: '0644'
+- path: /usr/local/sbin/cloud-instance-name
+  content: |
+    #!/usr/bin/python
+    import pickle
+    print pickle.loads(open('/var/lib/cloud/instance/obj.pkl').read()).metadata['name']
+  owner: root:root
+  permissions: '0755'
+- path: /etc/rc.local&#xD;
+  owner: root:root&#xD;
+  permissions: '0755'&#xD;
+  content: |-&#xD;
+    #!/bin/sh&#xD;
+    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 '&lt;' | cut -f 1 -d '&gt;')
+    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 ] &amp;&amp; ! 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)
+
+    exit 0&#xD;
+</entry>
+        </extensions>
+        <interface id="0" name="GigabitEthernet0/4/0" ipv4="10.0.0.9" netPrefixLenV4="30"/>
+        <interface id="1" name="GigabitEthernet0/5/0" ipv4="10.0.0.5" netPrefixLenV4="30"/>
+    </node>
+    <node name="sut2" type="SIMPLE" subtype="vPP" location="748,26" vmImage="server-java-nested">
+        <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:
+- start ttyS0
+- systemctl start getty@ttyS0.service
+- systemctl start rc-local
+- sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config
+- echo "UseDNS no" &gt;&gt; /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
+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: /etc/init/ttyS0.conf
+  owner: root:root
+  content: |
+    # ttyS0 - getty
+    # This service maintains a getty on ttyS0 from the point the system is
+    # started until it is shut down again.
+    start on stopped rc or RUNLEVEL=[12345]
+    stop on runlevel [!12345]
+    respawn
+    exec /sbin/getty -L 115200 ttyS0 vt102
+  permissions: '0644'
+- path: /etc/systemd/system/dhclient@.service
+  content: |
+    [Unit]
+    Description=Run dhclient on %i interface
+    After=network.target
+    [Service]
+    Type=oneshot
+    ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease
+    RemainAfterExit=yes
+  owner: root:root
+  permissions: '0644'
+- path: /usr/local/sbin/cloud-instance-name
+  content: |
+    #!/usr/bin/python
+    import pickle
+    print pickle.loads(open('/var/lib/cloud/instance/obj.pkl').read()).metadata['name']
+  owner: root:root
+  permissions: '0755'
+- path: /etc/rc.local&#xD;
+  owner: root:root&#xD;
+  permissions: '0755'&#xD;
+  content: |-&#xD;
+    #!/bin/sh&#xD;
+    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 '&lt;' | cut -f 1 -d '&gt;')
+    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 ] &amp;&amp; ! 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)
+
+    exit 0&#xD;
+</entry>
+        </extensions>
+        <interface id="0" name="GigabitEthernet0/4/0" ipv4="10.0.0.13" netPrefixLenV4="30"/>
+        <interface id="1" name="GigabitEthernet0/5/0" ipv4="10.0.0.10" netPrefixLenV4="30"/>
+    </node>
+    <connection dst="/virl:topology/virl:node[1]/virl:interface[2]" src="/virl:topology/virl:node[3]/virl:interface[1]"/>
+    <connection dst="/virl:topology/virl:node[2]/virl:interface[2]" src="/virl:topology/virl:node[1]/virl:interface[1]"/>
+    <connection dst="/virl:topology/virl:node[3]/virl:interface[2]" src="/virl:topology/virl:node[2]/virl:interface[1]"/>
+</topology>
diff --git a/resources/tools/virl/topologies/simple-ring-nested.yaml b/resources/tools/virl/topologies/simple-ring-nested.yaml
new file mode 100644 (file)
index 0000000..094adf3
--- /dev/null
@@ -0,0 +1,59 @@
+---
+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-0][hw-addr]}"
+        pci_address: "0000:00:04.0"
+        link: link1
+        driver: virtio-pci
+      port5:
+        mac_address: "{topology[tg1][nic-1][hw-addr]}"
+        pci_address: "0000:00:05.0"
+        link: link2
+        driver: virtio-pci
+  DUT1:
+    type: DUT
+    host: "{topology[sut1][nic-management][ip-addr]}"
+    port: 22
+    username: cisco
+    priv_key: |
+{priv_key}
+    interfaces:
+      port3:
+        mac_address: "{topology[sut1][nic-0][hw-addr]}"
+        pci_address: "0000:00:04.0"
+        link: link3
+      port1:
+        mac_address: "{topology[sut1][nic-1][hw-addr]}"
+        pci_address: "0000:00:05.0"
+        link: link1
+  DUT2:
+    type: DUT
+    host: "{topology[sut2][nic-management][ip-addr]}"
+    port: 22
+    username: cisco
+    priv_key: |
+{priv_key}
+    interfaces:
+      port1:
+        mac_address: "{topology[sut2][nic-0][hw-addr]}"
+        pci_address: "0000:00:04.0"
+        link: link2
+      port3:
+        mac_address: "{topology[sut2][nic-1][hw-addr]}"
+        pci_address: "0000:00:05.0"
+        link: link3