= OG-EXP-2: OpenGENI Single Site Acceptance Test =
This page captures status for the test case OG-EXP-2. For additional information see the [wiki:GENIRacksHome/OpenGENIRacks/AcceptanceTestStatusMay2013 Acceptance Test Status - May 2013] page overall status, or the [wiki:GENIRacksHome/AcceptanceTests/OpenGENIAcceptanceTestsPlan OpenGENI Acceptance Test Plan] for details about the planned evaluation.
''Last Update: 2013/05/15"
|| '''Step''' || '''State''' ||''' Notes ''' || '''Tickets''' ||
|| Step 1 ||[[span(Pass, style=background-color: green )]] || || ||
|| Step 2 ||[[span(Pass, style=background-color: green )]] || || ||
|| Step 3 ||[[span(In Progress, style=background-color: #63B8FF)]]|| No experimenter customization available (only admin)|| ||
|| Step 4 ||[[span(In Progress, style=background-color: #63B8FF)]]||Cannot request publically routable IP addresses|| #55 ||
|| Step 5 ||[[span(Pass, style=background-color: green )]] || || ||
|| Step 6 ||[[span(Pass, style=background-color: green )]] || || #54 ||
|| Step 7 ||[[span(Pass, style=background-color: green )]] || Unable to request IP Address || #56 ||
|| Step 8 ||[[span(Fail, style=background-color: red)]] || No sudo access || #57 ||
|| Step 9 ||[[span(Pass: most criteria, style=background-color: #98FB98)]]|| || #57 ||
|| Step 10 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 11 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 11 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 12 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 13 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 14 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 15 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 16 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 17 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 18 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 19 ||[[span(Pass, style=background-color: green )]]|| || ||
|| Step 20 ||[[span(Pass: most criteria, style=background-color: #98FB98)]]|| Sliver with traffic are not deleted and resources remain available|| #58 ||
[[BR]]
|| '''State Legend''' || '''Description''' ||
||[[span(Pass, style=background-color: green )]] || Test completed and met all criteria ||
||[[span(Pass: most criteria, style=background-color: #98FB98)]]|| Test completed and met most criteria. Exceptions documented ||
||[[span(Fail, style=background-color: red)]] || Test completed and failed to meet criteria. ||
||[[span(Complete, style=background-color: yellow)]] || Test completed but will require re-execution due to expected changes ||
||[[span(Blocked, style=background-color: orange)]] || Blocked by ticketed issue(s). ||
||[[span(In Progress, style=background-color: #63B8FF)]]|| Currently under test. ||
= Test Plan Steps =
This test case uses the following aggregate nick_names:
{{{
gram=,https://128.89.91.170:5001
}}}
''Evaluation Note:'' Experimenters cannot save customized images. Administrator can create a variety of images with customization that can be made available to experimenters. (#50)
''Evaluation Note:'' There is only one OS image available to users Ubuntu 12.04.
''Evaluation Note:'' Routable IP Addresses not supported (#55)
'' Evaluation Note:'' Experimenter is not able to request IP addresses (#56)
'' Evaluation Note'' There is no sudo access, cannot install iperf or load kernel module required in step in this test case.
== Step 1. As Experimenter1, request !ListResources from BBN OpenGENI. ==
As experimenter "lnevers", issued a listresources command to determine available compute resources:
{{{
$ omni.py listresources -a gram -V3
INFO:omni:Loading config file /home/lnevers/.gcf/omni_config
INFO:omni:Using control framework gram
INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN
INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN
INFO:omni:Listed advertised resources at 1 out of 1 possible aggregates.
INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN
INFO:omni:
INFO:omni:
INFO:omni:
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed listresources:
Options as run:
aggregate: ['gram']
api_version: 3
framework: gram
Args: listresources
Result Summary: Queried resources from 1 of 1 aggregate(s).
INFO:omni: ============================================================
}}}
== Step 2. Review advertisement RSpec for a list of OS images which can be loaded, and identify available resources. ==
The OS available is ''''. Available resources are
available on ''node client_id="VM"''.
== Step 3. Verify that the GPO Ubuntu customized image is available in the advertisement RSpec. ==
There is no customization available for experimenters. Administrators can create customized images and make them available to experimenters.
== Step 4. Define a request RSpec for two VMs, each with a GPO Ubuntu image. Request a publically routable IP address and public TCP/UDP port mapping for the control interface on each node. ==
Routable IP Addresses is not available, modified experiment to not include Routable IP Address
Created the following RSpec:
{{{
}}}
== Step 5. Create the first slice. ==
Created the slice:
{{{
$ omni.py createslice OG-EXP-2-exp1
INFO:omni:Loading config file /home/lnevers/.gcf/omni_config
INFO:omni:Using control framework gram
INFO:omni:Created slice with Name OG-EXP-2-exp1, URN urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1, Expiration 2013-05-15 16:37:21
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed createslice:
Options as run:
framework: gram
Args: createslice OG-EXP-2-exp1
Result Summary: Created slice with Name OG-EXP-2-exp1, URN urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1, Expiration 2013-05-15 16:37:21
INFO:omni: ============================================================
}}}
== Step 6. Create a sliver in the first slice, using the RSpec defined in step 4. ==
Allocate the sliver:
{{{
$ omni.py allocate OG-EXP-2-exp1 -a gram ./OG-EXP-2-exp1.rspec -V3
INFO:omni:Loading config file /home/lnevers/.gcf/omni_config
INFO:omni:Using control framework gram
INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN
WARNING:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 expires in <= 3 hours
INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 expires on 2013-05-15 16:37:21 UTC
INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN
INFO:omni:Allocate slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 at https://128.89.91.170:5001:
INFO:omni:{
"geni_rspec": "
INFO:omni:
INFO:omni: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
"geni_slivers": [
{
"geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vm6a2af27d-23cc-4a6c-9b55-6e940cf88fe0",
"geni_expires": "2013-05-15T14:58:48.137629+00:00",
"geni_allocation_status": "geni_allocated",
"geni_operational_status": "geni_notready",
"geni_error": ""
},
{
"geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vma9675a33-1910-4fb1-879e-cc5a00b80ed2",
"geni_expires": "2013-05-15T14:58:48.137629+00:00",
"geni_allocation_status": "geni_allocated",
"geni_operational_status": "geni_notready",
"geni_error": ""
},
{
"geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+link0275c641-28e8-44b8-8ac5-65845f814c60",
"geni_expires": "2013-05-15T14:58:48.137629+00:00",
"geni_allocation_status": "geni_allocated",
"geni_operational_status": "geni_notready",
"geni_error": ""
}
]
}
INFO:omni:All slivers expire on '2013-05-15T14:58:48.137629'
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed allocate:
Options as run:
aggregate: ['gram']
api_version: 3
framework: gram
Args: allocate OG-EXP-2-exp1 ./OG-EXP-2-exp1.rspec
Result Summary: Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 expires in <= 3 hours on 2013-05-15 16:37:21 UTC
Allocated slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 at https://128.89.91.170:5001.
Next sliver expiration: 2013-05-15T14:58:48.137629
INFO:omni: ============================================================
}}}
Provision the sliver:
{{{
$ omni.py provision OG-EXP-2-exp1 -a gram -V3
INFO:omni:Loading config file /home/lnevers/.gcf/omni_config
INFO:omni:Using control framework gram
INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN
WARNING:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 expires in <= 3 hours
INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 expires on 2013-05-15 16:37:21 UTC
INFO:omni:Substituting AM nickname gram with URL https://128.89.91.170:5001, URN unspecified_AM_URN
INFO:omni:Provision slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 at https://128.89.91.170:5001
INFO:omni:{
"geni_rspec": "
INFO:omni:
INFO:omni: \n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n
\n
\n \n \n
\n
\n \n \n
\n \n \n \n
\n \n
\n \n
\n \n",
"geni_slivers": [
{
"geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vm6a2af27d-23cc-4a6c-9b55-6e940cf88fe0",
"geni_expires": "2013-05-15T16:37:21+00:00",
"geni_allocation_status": "geni_provisioned",
"geni_operational_status": "geni_notready",
"geni_error": ""
},
{
"geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+vma9675a33-1910-4fb1-879e-cc5a00b80ed2",
"geni_expires": "2013-05-15T16:37:21+00:00",
"geni_allocation_status": "geni_provisioned",
"geni_operational_status": "geni_notready",
"geni_error": ""
},
{
"geni_sliver_urn": "urn:publicid:IDN+boscontroller.gpolab.bbn.com+sliver+link0275c641-28e8-44b8-8ac5-65845f814c60",
"geni_expires": "2013-05-15T16:37:21+00:00",
"geni_allocation_status": "geni_provisioned",
"geni_operational_status": "geni_ready",
"geni_error": ""
}
]
}
INFO:omni:All slivers expire on '2013-05-15T16:37:21'
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed provision:
Options as run:
aggregate: ['gram']
api_version: 3
framework: gram
Args: provision OG-EXP-2-exp1
Result Summary: Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 expires in <= 3 hours on 2013-05-15 16:37:21 UTC
Provisioned slivers in slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-2-exp1 at https://128.89.91.170:5001.
Next sliver expiration: 2013-05-15T16:37:21
INFO:omni: ============================================================
}}}
From the above manifest it is possible to see that exp1-host1 is allocated on boscompute1 and is accessible via the boscontroller on port 30001:
{{{
component_id=\"urn:publicid:IDN+boscontroller.gpolab.bbn.com+node+boscompute1\"
}}}
From the above manifest it is possible to see that exp1-host2 is allocated on boscompute2 and is accessible via the boscontroller on port 30002:
{{{
component_id=\"urn:publicid:IDN+boscontroller.gpolab.bbn.com+node+boscompute2\"
}}}
== Step 7. Log in to each of the systems, and send traffic to the other system sharing a VLAN. ==
Logged into to exp1-host1 and pinged exp1-host2:
{{{
$ ssh 128.89.91.170 -p 3001
Warning: Permanently added '[128.89.91.170]:3001' (RSA) to the list of known hosts.
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-41-virtual x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Wed May 15 14:50:16 UTC 2013
System load: 0.15 Processes: 68
Usage of /: 3.9% of 19.67GB Users logged in: 0
Memory usage: 2% IP address for eth0: 192.168.10.5
Swap usage: 0% IP address for eth1: 10.0.37.100
Graph this data and manage this system at https://landscape.canonical.com/
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
Use Juju to deploy your cloud instances and workloads:
https://juju.ubuntu.com/#cloud-precise
0 packages can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
lnevers@exp1-host1:~$ ping exp1-host2
PING exp1-host2-link-0 (10.0.37.101) 56(84) bytes of data.
64 bytes from exp1-host2-link-0 (10.0.37.101): icmp_req=1 ttl=64 time=2.72 ms
64 bytes from exp1-host2-link-0 (10.0.37.101): icmp_req=2 ttl=64 time=0.822 ms
64 bytes from exp1-host2-link-0 (10.0.37.101): icmp_req=3 ttl=64 time=0.812 ms
64 bytes from exp1-host2-link-0 (10.0.37.101): icmp_req=4 ttl=64 time=1.00 ms
64 bytes from exp1-host2-link-0 (10.0.37.101): icmp_req=5 ttl=64 time=0.832 ms
^C
--- exp1-host2-link-0 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 0.812/1.238/2.723/0.746 ms
}}}
Logged into to exp1-host2 and pinged exp1-host1:
{{{
$ ssh 128.89.91.170 -p 3002
Warning: Permanently added '[128.89.91.170]:3002' (RSA) to the list of known hosts.
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-41-virtual x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Wed May 15 14:50:31 UTC 2013
System load: 0.3 Processes: 68
Usage of /: 3.9% of 19.67GB Users logged in: 0
Memory usage: 2% IP address for eth0: 192.168.10.6
Swap usage: 0% IP address for eth1: 10.0.37.101
Graph this data and manage this system at https://landscape.canonical.com/
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
Use Juju to deploy your cloud instances and workloads:
https://juju.ubuntu.com/#cloud-precise
0 packages can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
lnevers@exp1-host2:~$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr fa:16:3e:01:4b:ea
inet addr:192.168.10.6 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fe01:4bea/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:300 errors:0 dropped:0 overruns:0 frame:0
TX packets:224 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:40779 (40.7 KB) TX bytes:24975 (24.9 KB)
eth1 Link encap:Ethernet HWaddr fa:16:3e:42:73:c2
inet addr:10.0.37.101 Bcast:10.0.37.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fe42:73c2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:65 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10989 (10.9 KB) TX bytes:942 (942.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lnevers@exp1-host2:~$
}}}
''Note:'' Allocated nodes did not use requested IP address.
== Step 8. Using root privileges on one of the VMs load a Kernel module. If not supported on !OpenStack nodes, testing will proceed past this step. ==
The following commands are executed:
{{{
# lsmod
# modprobe dummy
# lsmod |grep dummy
# modprobe -r dummy
# lsmod |grep dummy
}}}
The above commands cannot be executed, because there is no sudo access on the allocated nodes.
== Step 9. Run a netcat listener and bind to port XYZ on each of the VMs in the BBN OpenGENI rack. ==
In cases where there are no routable IP addresses available this test is modified to exchange iperf traffic between two hosts.
But iperf is not installed and there is no sudo access for installing packages (ticket #57.) Therefore going back to
netcat scenario.
On exp1-host1 start the listener:
{{{
lnevers@exp1-host2:~$ nc -l 5000
}}}
== Step 10. Send traffic to port XYZ on each of the VMs in the OpenGENI rack over the control network from any commodity Internet host. ==
On the host exp1-host2 send traffic:
{{{
lnevers@exp1-host1:~$ nc exp1-host2 5000
hello this is exp1-host1
goodbye!
lnevers@exp1-host1:~$
}}}
Verified that the text appeared on the exp1-host1 listener:
{{{{
lnevers@exp1-host2:~$ nc -l 5000
hello this is exp1-host1
goodbye!
lnevers@exp1-host2:~$
}}}
== Step 11. As Experimenter2, request !ListResources from Site2 OpenGENI. ==
As experimenter lnevers2, issued a listresources for OpenGENI:
{{{
lnevers2@arendia:~$ omni.py listresources -a gram2 -V2
INFO:omni:Loading config file /home/lnevers2/.gcf/omni_config
INFO:omni:Using control framework gram
INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN
INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN
INFO:omni:Listed advertised resources at 1 out of 1 possible aggregates.
INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN
INFO:omni:
INFO:omni:
INFO:omni:
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed listresources:
Options as run:
aggregate: ['gram2']
framework: gram
Args: listresources
Result Summary: Queried resources from 1 of 1 aggregate(s).
INFO:omni: ============================================================
lnevers2@arendia:~$
}}}
== Step 12. Define a request RSpec for two physical nodes, both using the uploaded GPO Ubuntu images. If not available, VMs and other images will be used. ==
The following RSpec was defined:
{{{
}}}
== Step 13. Create the second slice. ==
Created slice:
{{{
$ omni.py createslice OG-EXP-1-exp2
INFO:omni:Loading config file /home/lnevers2/.gcf/omni_config
INFO:omni:Using control framework gram
INFO:omni:Created slice with Name OG-EXP-1-exp2, URN urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-1-exp2, Expiration 2013-05-15 18:00:45
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed createslice:
Options as run:
framework: gram
Args: createslice OG-EXP-1-exp2
Result Summary: Created slice with Name OG-EXP-1-exp2, URN urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-1-exp2, Expiration 2013-05-15 18:00:45
INFO:omni: ============================================================
}}}
== Step 14. Create a sliver in the second slice, using the RSpec defined in step 12. ==
Created sliver:
{{{
$ omni.py createsliver -a gram2 -V2 OG-EXP-1-exp2 ./OG-EXP-2-exp2.rspec
INFO:omni:Loading config file /home/lnevers2/.gcf/omni_config
INFO:omni:Using control framework gram
INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN
WARNING:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-1-exp2 expires in <= 3 hours
INFO:omni:Slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-1-exp2 expires on 2013-05-15 18:00:45 UTC
INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN
INFO:omni:Substituting AM nickname gram2 with URL https://128.89.91.170:5002, URN unspecified_AM_URN
INFO:omni:Creating sliver(s) from rspec file ./OG-EXP-2-exp2.rspec for slice urn:publicid:IDN+geni:bos:gcf+slice+OG-EXP-1-exp2
INFO:omni:Got return from CreateSliver for slice OG-EXP-1-exp2 at https://128.89.91.170:5002:
INFO:omni:
INFO:omni:
INFO:omni:
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed createsliver:
Options as run:
aggregate: ['gram2']
framework: gram
Args: createsliver OG-EXP-1-exp2 ./OG-EXP-2-exp2.rspec
Result Summary: Got Reserved resources RSpec from 128-89-91-170-5002
INFO:omni: ============================================================
}}}
== Step 15. Log in to each of the systems, and send traffic to the other system. ==
Once sliver was ready used login information from the manifest:
{{{
== Step 16. Verify that experimenters 1 and 2 cannot use the control plane to access each other's resources. ==
== Step 17. Review system statistics and VM isolation and network isolation on data plane. ==
Reviewed system statistics on allocated nodes:
{{{
lnevers2@exp2-host2:~$ vmstat -s
2051764 K total memory
275148 K used memory
40336 K active memory
182508 K inactive memory
1776616 K free memory
11356 K buffer memory
197008 K swap cache
0 K total swap
0 K used swap
0 K free swap
657 non-nice user cpu ticks
527 nice user cpu ticks
376 system cpu ticks
65975 idle cpu ticks
351 IO-wait cpu ticks
0 IRQ cpu ticks
0 softirq cpu ticks
0 stolen cpu ticks
214454 pages paged in
387044 pages paged out
0 pages swapped in
0 pages swapped out
14350 interrupts
31139 CPU context switches
1368633739 boot time
1610 forks
lnevers2@exp2-host2:~$ top
top - 16:14:41 up 12 min, 1 user, load average: 0.08, 0.03, 0.03
Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2051764k total, 275172k used, 1776592k free, 11380k buffers
Swap: 0k total, 0k used, 0k free, 197116k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1621 lnevers2 20 0 17312 1224 944 R 0.3 0.1 0:00.01 top
1 root 20 0 24276 2280 1360 S 0.0 0.1 0:00.61 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/0
5 root 20 0 0 0 0 S 0.0 0.0 0:00.09 kworker/u:0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 sync_supers
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 bdi-default
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khubd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
19 root 20 0 0 0 0 S 0.0 0.0 0:00.13 kworker/0:1
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
24 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
25 root 39 19 0 0 0 S 0.0 0.0 0:00.00 khugepaged
26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 fsnotify_mark
27 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ecryptfs-kthrea
28 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto
36 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld
37 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
38 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1
}}}
== Step 18. Verify that each VM has a distinct MAC address for that interface. ==
Verified that MAC addresses are unique and match the value in the manifest.
The manifest shows for exp2-host1:
{{{