Building a Resource Request¶
You can request resources on the Virtual Wall via the Aggregate Manager API as used in the Fed4FIRE or GENI federations.
This can be done either via the imec jFed GUI, or by manually creating a request RSpec and submitting this via a CLI tool like the imec jFed CLI or omni
We recommend using the imec jFed GUI when using the Virtual Wall, as this GUI provides a drag-and-drop interface to create the RSpecs discussed below. They can be viewed by switching to the Raw RSpec tab. Only a few advanced features are not supported by the GUI, and must be added manually to the Request RSpec.
This document will discuss some general cases on how to manually create an Request Specification (RSpec), which can then subsequently be used to request the specified resources via the CLI or GUI tools. More specific functionality, like requesting a specific disk image, or requesting public IPv4-address, is covered in the respective sections of this documentation.
Requesting a Bare Metal Server¶
Simple unbound RSpec¶
Unbound means that the testbed chooses a node for you. node0
is the name of the node:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rspec type="request" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd" xmlns="http://www.geni.net/resources/rspec/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<node client_id="node0" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm" exclusive="true">
<sliver_type name="raw-pc"/>
</node>
</rspec>
Bound RSpec¶
This means that you choose a specific node, which you specify in the component_id
-attribute of the <node>
-tag.
The node names should be mentioned in the listresources
call, e.g. n095-01a
in the example below:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rspec type="request" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd" xmlns="http://www.geni.net/resources/rspec/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<node client_id="node0" component_id="urn:publicid:IDN+wall2.ilabt.iminds.be+node+n095-01a" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm" exclusive="true">
<sliver_type name="raw-pc"/>
</node>
</rspec>
Two nodes with a link¶
This is a node0
and a node1
with a link in between:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rspec type="request" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd" xmlns="http://www.geni.net/resources/rspec/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<node client_id="node0" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm" exclusive="true">
<sliver_type name="raw-pc"/>
<interface client_id="node0:if0"/>
</node>
<node client_id="node1" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm" exclusive="true">
<sliver_type name="raw-pc"/>
<interface client_id="node1:if0"/>
</node>
<link client_id="link2">
<component_manager name="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm"/>
<link_type name="lan"/>
<interface_ref client_id="node0:if0"/>
<interface_ref client_id="node1:if0"/>
</link>
</rspec>
Install software when provisioning and run a script after provisioning¶
With the following services parts, you can install tar balls and run scripts after swap in:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rspec generated="2014-02-01T16:47:22.736+01:00" generated_by="Experimental jFed Rspec Editor" type="request" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd http://www.protogeni.net/resources/rspec/ext/delay/1 http://www.protogeni.net/resources/rspec/ext/delay/1/request.xsd" xmlns="http://www.geni.net/resources/rspec/3" xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<node client_id="node0" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm" exclusive="true">
<sliver_type name="raw-pc"/>
<services>
<execute shell="sh" command="sudo apt-get install dstat"/>
<install url="http://download.videolan.org/pub/videolan/vlc/0.5.1/vlc-0.5.1.tar.gz" install_path="/local"/>
</services>
</node>
</rspec>
You can repeat execute shell
and install url
multiple times.
Tip: Debugging your startup scripts
To debug these scripts, you can check the following on a node after it has started:
- The startup script is referenced in
/var/emulab/boot/startupcmd
. - The output of the commands can be found in
more /var/tmp/startup*
For more examples and info, see alo http://www.protogeni.net/wiki/ServicesFaq.
Requesting a Virtual Machine¶
Requesting a XEN VM¶
The Virtual Wall also supports XEN VMs, which can be requested by using another sliver_type:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rspec type="request" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd" xmlns="http://www.geni.net/resources/rspec/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<node client_id="node0" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm" exclusive="false">
<sliver_type name="emulab-xen"/>
</node>
</rspec>
The XEN hosts also have a unique IPv6 address, so you need IPv6 access to login on them, or you can enable SSH proxy access in jFed to login on them.
Also note that attribute exclusive
of <node>
has been set to false
.
By using exclusive="false"
, the VMs are put on shared physical hosts (together with other experiments). However, if
you use exclusive="true"
then a new physical host will be set up with virtualization for your experiment only, and
you will have full root access to the XEN DOM0 host.
For this: ssh with your same public/private key to the hostname after dropping vm-x
.
E.g. n096-10bvm-3.wall2.ilabt.iminds.be
has n096-10b.wall2.ilabt.iminds.be
as DOM0 hostname.
You can use XEN xl commands (xl list
, xl info
, …) to manipulate the VMs.
Binding a XEN VM to a specific host¶
In the same way as you can bind a physical host to a specific machine by, you can bind also a VM to a specific host (this
can be a shared host or a dedicated host) by setting the component_id
-attribute of the <node>
-tag.
This means that you choose a specific node. The node names should be mentioned in the listresources
call, e.g.
n095-01a
in the example below:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rspec type="request" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd" xmlns="http://www.geni.net/resources/rspec/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<node client_id="node0" component_id="urn:publicid:IDN+wall2.ilabt.iminds.be+node+n095-01a" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm" exclusive="true">
<sliver_type name="emulab-xen"/>
</node>
</rspec>
(in Jfed, just choose your specific node through the dialog box when right clicking on the node)
Changing the CPU/RAM/Disk of a Xen VM¶
You can tweak the parameters of your VM in the following way (be aware of the xmlns:emulab
namespace)):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rspec type="request" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd" xmlns="http://www.geni.net/resources/rspec/3" xmlns:jFed="http://jfed.iminds.be/rspec/ext/jfed/1" xmlns:jFedBonfire="http://jfed.iminds.be/rspec/ext/jfed-bonfire/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1">
<node client_id="node0" component_manager_id="urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm" exclusive="true">
<sliver_type name="emulab-xen">
<emulab:xen cores="10" ram="8192" disk="50"/>
</sliver_type>
</node>
</rspec>
As can be seen, the number of cores, RAM and extra disk size (extra partition /dev/xvda
is created which you can enable) can be
configured.
Take into account the following boundaries:
- For a VM on a shared host: * RAM bigger then 128 (default 1024MB) * extra disk max 100GB * max 4 cores
- For a VM on an exclusive host: * RAM, cores, and disk is only limited to the physical host. (e.g. 10 cores, 8GB RAM and 50GB disk for 1 VM is possible).
If you define extra disk space, it will be available as an extra partition on /dev/xvda
.
XEN network topologies¶
It is also possible to draw topologies between XEN VMs (layer 2 links), in the same way as for physical machines, but
you have to specify IP addresses for the links in the 192.168.x.x IP range, otherwise routing will get bad.
You define a specific IP addresses on links by using the <ip>
-tag in <interface>
:
<interface client_id="node2:if0">
<ip address="192.168.101.3" netmask="255.255.255.0" type="ipv4"/>
</interface>
Request URL’s and URN’s¶
Virtual Wall 1¶
The AM of the Virtual Wall is accessible through:
- GENI AM v2:
https://www.wall1.ilabt.iminds.be:12369/protogeni/xmlrpc/am/2.0
- GENI AM v3:
https://www.wall1.ilabt.iminds.be:12369/protogeni/xmlrpc/am/3.0
The URN of the componentmanager is: urn:publicid:IDN+wall1.ilabt.iminds.be+authority+cm
Virtual Wall 2¶
The AM of the Virtual Wall is accessible through:
- GENI AM v2:
https://www.wall2.ilabt.iminds.be:12369/protogeni/xmlrpc/am/2.0
- GENI AM v3:
https://www.wall2.ilabt.iminds.be:12369/protogeni/xmlrpc/am/3.0
The URN of the componentmanager is: urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm