wiki:GeniTmixTutorialOmni

Version 2 (modified by Ben Newton, 7 years ago) (diff)

--

RR

This page describes how to reserve the resources for the Tmix Tutorial using Omni.

1 Install Omni

This tutorial will use Omni, which is a command line interface tool for reserving GENI resources. If you do not already have Omni installed and set up, please follow Step 1 (Configuring Omni with your GENI Account) here. Please note, it may take 30-45 minutes to get Omni installed and configured. Also note when installing Omni, the ./omni-configure.py script may need to be run from your gcf/src directory, and you may need to create the .ssl subdirectory in your home directory.

2 Extra Omni Configuration

2.1 Add gcf/src to path (optional but recommended)

Although optional, it will be helpful to add the gcf/src directory to your path and python path. To do this, replace "/path/to/gcf" in the lines below with the path to your copy of gcf, and add the lines to the end of your .profile file or equivalent.

PATH="/path/to/gcf/src:$PATH"
export PYTHONPATH="/path/to/gcf/src:$PATH"

Once you have added the lines and saved the file, run

source .profile

to setup the path environment variables for this session. This will be done automatically from now on.

If you don't make this change, you may need to add python in front of all the omni commands, and call them from within the gcf/src directory.

2.2 Clear Passphrases (optional but recommended)

We recommend that you clear the passphrase from your SSL certificate and/or your SSH key that you will use to login to your nodes. This step is also optional, however, if you don't clear your passphrases some commands will require you to enter your it several times, which can become burdensome. To clear the passphrases from your certificate and key run this script:

clear-passphrases.py 

3 A Simple Tmix Experiment

3.1 Reserve Resources

The following is the request rspec for a simple two node network. It requests two raw nodes named left and right, each with a single interface named left:if0 and right:if0 respectively. A link named left-right-lan connects these interfaces.

<rspec type="request" 
    xmlns="http://www.geni.net/resources/rspec/3" 
    xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1" 
    xsi:schemaLocation="http://www.geni.net/resources/rspec/3 
    http://www.geni.net/resources/rspec/3/request.xsd">  
  <node client_id="left" component_manager_id="urn:publicid:IDN+emulab.net+authority+cm" exclusive="true">
    <sliver_type name="raw-pc">
      <disk_image name="urn:publicid:IDN+emulab.net+image+pgeni-gpolab-bbn-com//tmixUbuntu"/>  
    </sliver_type>
    <services>
	<execute command="/local/tmix-script.sh" shell="sh"/>      
        <install install_path="/local" url="http://www.cs.unc.edu/~bn/tmix-script.tar.gz"/> 
    </services>
    <interface client_id="left:if0">
      <ip address="10.1.1.1" netmask="255.255.255.0" type=""/>
    </interface>
  </node>
  <node client_id="right" component_manager_id="urn:publicid:IDN+emulab.net+authority+cm" exclusive="true">
    <sliver_type name="raw-pc">
      <disk_image name="urn:publicid:IDN+emulab.net+image+pgeni-gpolab-bbn-com//tmixUbuntu"/>
    </sliver_type>
    <services>
http://groups.geni.net/geni/attachment/wiki/GeniTmixTutorial/tmix-script.tar.gz?format=raw
	<execute command="/local/tmix-script.sh" shell="sh"/>      
        <install install_path="/local" url="http://www.cs.unc.edu/~bn/tmix-script.tar.gz"/> 
    </services>
    <interface client_id="right:if0">
      <ip address="10.1.1.2" netmask="255.255.255.0" type=""/>
    </interface>
  </node>
  <link client_id="left-right-lan">
    <component_manager name="urn:publicid:IDN+emulab.net+authority+cm"/>
    <interface_ref client_id="left:if0"/>
    <interface_ref client_id="right:if0"/>
    <property source_id="left:if0" dest_id="right:if0"/>
    <property source_id="right:if0" dest_id="left:if0"/>
    <link_type name="lan"/>
  </link>
</rspec>

Think of a unique name for your slice. We recommend the slice name begin with your GENI username. Create a new slice by issuing the following command with your unique slice name in place of <sliceName>.

omni.py createslice <sliceName>

Next, create a sliver with the resources requested in the rspec by issuing the following command where <sliceName> is again replaced with the unique slice name you have chosen.

omni.py -a pg-utah <sliceName> two-nodes-tmix.rspec

Note: this and future steps assume your ~/.gcf/omni_config includes a mapping from nickname pg-utah to https://www.emulab.net:12369/protogeni/xmlrpc/am. If pg-utah causes issues, you can use the full url in the -a option.

If the resources were successfully reserved the Result Summary from Omni should say: Got Reserved resources ... If there was an error you will see something like "Failed CreateSliver".

Look back further in the output and you should see two lines which include "hostname=pc???.emulab.net". These are the hostnames of the machines reserved for your experiment. Make note of these hostnames for later use.

In addition to listing desired resources, the rspec also specifies a script to be run at boot time on the host. This script configures the host for Tmix.