= Design/Setup = {{{ #!html
Image Map
}}} In this part of the tutorial we give a brief overview on the experiment workflow. GIMI is providing experimenters with a set of tools that will aid them in allocating GENI resources (currently this is limited to ExoGENI resources), executing experiments, and performing measurements while these experiments are running. In addition, the GIMI tools will allow experimenters to analyze and visualize measurement data. Finally, a federated set of iRODS servers provides an archival service.[[BR]] The figure below illustrate what we describe as the experiment workflow. During the tutorial we will walk through the single steps of this workflow with the goal to have experimenters apply this workflow to their own experiments. == Topology == The image below illustrates the ExoGENI topology that we will create within the scope of this tutorial. The experiment described above will be executed on the basis of this topology. In Section 1.Reserving Resources, we will go through the process of setting up and obtaining a slice that represents this topology. [[Image(GIMI_Experiment_Topo.2.png)]] The routing in this topology is set up as follows: || Origin Node || Destination Net || Via IP || Node || || A || 192.168.1.0/24 || 192.168.4.10 || B || || || 192.168.2.0/24 || 192.168.4.10 || B || || || 192.168.3.0/24 || 192.168.5.12 || C || || || 192.168.4.0/24 || 192.168.4.11 || A || || || 192.168.5.0/24 || 192.168.5.11 || A || || || 192.168.6.0/24 || 192.168.5.12 || C || || B || 192.168.1.0/24 || 192.168.1.10 || B || || || 192.168.2.0/24 || 192.168.2.10 || B || || || 192.168.3.0/24 || 192.168.1.13 || D || || || 192.168.4.0/24 || 192.168.4.10 || B || || || 192.168.5.0/24 || 192.168.4.11 || A || || || 192.168.6.0/24 || 192.168.2.12 || C || || C || 192.168.1.0/24 || 192.168.3.13 || D || || || 192.168.2.0/24 || 192.168.2.12 || C || || || 192.168.3.0/24 || 192.168.3.12 || C || || || 192.168.4.0/24 || 192.168.5.11 || A || || || 192.168.5.0/24 || 192.168.5.12 || C || || || 192.168.6.0/24 || 192.168.6.12 || C || || D || 192.168.1.0/24 || 192.168.1.13 || D || || || 192.168.2.0/24 || 192.168.3.12 || C || || || 192.168.3.0/24 || 192.168.3.13 || D || || || 192.168.4.0/24 || 192.168.1.10 || B || || || 192.168.5.0/24 || 192.168.3.12 || C || || || 192.168.6.0/24 || 192.168.3.12 || C || || E || 192.168.1.0/24 || 192.168.6.12 || C || || || 192.168.2.0/24 || 192.168.6.12 || C || || || 192.168.3.0/24 || 192.168.6.12 || C || || || 192.168.4.0/24 || 192.168.6.12 || C || || || 192.168.5.0/24 || 192.168.6.12 || C || || || 192.168.6.0/24 || 192.168.6.14 || E || ---- == 1. Reserve Resources == To create a slice we will use Omni here.[[BR]] To us Omni you will need to download, install and configure Omni on your VM. [[BR]] You also need to have the certificate, private and public keys stored on your machine. Please vrify this as follows:[[BR]] Run: {{{ ls ~/.ssh ~/.ssl }}} The output looks like : {{{ geni@geni-vm:~$ ls ~/.ssh ~/.ssl /home/geni/.ssh: config geni_key geni_key.pub /home/geni/.ssl: geni_cert_enc.pem geni_cert.pem }}} === 1.1 Create a slice === {{{ omni.py createslice }}} e.g omni.py createslice dbhatlabwiki[[BR]] Sample output {{{ INFO:omni:Loading config file /home/dbhat/.gcf/omni_config INFO:omni:Using control framework portal INFO:omni:Created slice with Name dbhatlabwiki, URN urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki, Expiration 2013-07-22 00:00:00 INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createslice: Options as run: framework: portal project: GIMITesting Args: createslice dbhatlabwiki Result Summary: Created slice with Name dbhatlabwiki, URN urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki, Expiration 2013-07-22 00:00:00 INFO:omni: ============================================================ }}} Verify that your slice has been created: {{{ /usr/local/bin/gcf/examples$ omni.py listmyslices }}} Sample output: {{{ dbhat@bua-1159:/usr/local/bin/gcf/examples$ omni.py listmyslices dbhat INFO:omni:Loading config file /home/dbhat/.gcf/omni_config INFO:omni:Using control framework portal INFO:omni:User 'dbhat' has slice(s): urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatGIMItest urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhattestLab urn:publicid:IDN+ch.geni.net:GEMINIScalability+slice+testLabwiki urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatexoGPO urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatexoSM urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhattestExoSm urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhattestExoSM urn:publicid:IDN+ch.geni.net:GIMITesting+slice+testExoSM urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatinstatest urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatPortal urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatvlcRENCI urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatvlcTEST INFO:omni: ------------------------------------------------------------ INFO:omni: Completed listmyslices: Options as run: framework: portal project: GIMITesting Args: listmyslices dbhat Result Summary: Found 13 slice(s) for user 'dbhat'. INFO:omni: ============================================================ }}} === 1.2 Create a Sliver === {{{ omni.py createsliver -a eg- http://emmy9.casa.umass.edu/GEC-17/exomanualselect.rspec }}} {{{ omni.py createsliver -a eg-gpo dbhatlabwiki http://emmy9.casa.umass.edu/GEC-17/exomanualselect.rspec }}} Racknames can be: eg-gpo or eg-sm[[BR]] The manifest is returned as shown here:[[BR]] {{{ INFO:omni:Loading config file /home/dbhat/.gcf/omni_config INFO:omni:Using control framework portal INFO:omni:Substituting AM nickname eg-gpo with URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc, URN unspecified_AM_URN INFO:omni:Slice urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki expires on 2013-07-22 00:00:00 UTC INFO:omni:Substituting AM nickname eg-gpo with URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc, URN unspecified_AM_URN INFO:omni:Substituting AM nickname eg-gpo with URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc, URN unspecified_AM_URN INFO:omni:Creating sliver(s) from rspec file http://emmy9.casa.umass.edu/GEC-17/exomanualselect.rspec for slice urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki INFO:omni:Got return from CreateSliver for slice dbhatlabwiki at https://bbn-hn.exogeni.net:11443/orca/xmlrpc: INFO:omni: INFO:omni: INFO:omni: #!/bin/bash # Automatically generated boot script # wget or curl must be installed on the image mkdir -p /tmp cd /tmp if [ -x `which wget 2>/dev/null` ]; then wget -q http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz else if [ -x `which curl 2>/dev/null` ]; then curl http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz > `basename http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz` fi fi # untar tar -zxf `basename http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz` execString="/bin/bash -c \"/tmp/postboot_script_exo.sh urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki nodeE\"" eval $execString #!/bin/bash # Automatically generated boot script # wget or curl must be installed on the image mkdir -p /tmp cd /tmp if [ -x `which wget 2>/dev/null` ]; then wget -q http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz else if [ -x `which curl 2>/dev/null` ]; then curl http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz > `basename http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz` fi fi # untar tar -zxf `basename http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz` execString="/bin/bash -c \"/tmp/postboot_script_exo.sh urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki nodeC\"" eval $execString #!/bin/bash # Automatically generated boot script # wget or curl must be installed on the image mkdir -p /tmp cd /tmp if [ -x `which wget 2>/dev/null` ]; then wget -q http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz else if [ -x `which curl 2>/dev/null` ]; then curl http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz > `basename http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz` fi fi # untar tar -zxf `basename http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz` execString="/bin/bash -c \"/tmp/postboot_script_exo.sh urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki nodeA\"" eval $execString #!/bin/bash # Automatically generated boot script # wget or curl must be installed on the image mkdir -p /tmp cd /tmp if [ -x `which wget 2>/dev/null` ]; then wget -q http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz else if [ -x `which curl 2>/dev/null` ]; then curl http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz > `basename http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz` fi fi # untar tar -zxf `basename http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz` execString="/bin/bash -c \"/tmp/postboot_script_exo.sh urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki nodeD\"" eval $execString #!/bin/bash # Automatically generated boot script # wget or curl must be installed on the image mkdir -p /tmp cd /tmp if [ -x `which wget 2>/dev/null` ]; then wget -q http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz else if [ -x `which curl 2>/dev/null` ]; then curl http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz > `basename http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz` fi fi # untar tar -zxf `basename http://emmy9.casa.umass.edu/InstaGENI_Images/install-script-exo.tar.gz` execString="/bin/bash -c \"/tmp/postboot_script_exo.sh urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki nodeB\"" eval $execString INFO:omni: ------------------------------------------------------------ INFO:omni: Completed createsliver: Options as run: aggregate: ['eg-gpo'] framework: portal project: GIMITesting Args: createsliver dbhatlabwiki http://emmy9.casa.umass.edu/GEC-17/exomanualselect.rspec Result Summary: Got Reserved resources RSpec from bbn-hn-exogeni-net-11443-orca INFO:omni: ============================================================ }}} === 2.3 Check the status of your resources === {{{ omni.py sliverstatus -a eg-gpo }}} {{{ omni.py sliverstatus -a eg-gpo dbhatlabwiki }}} You can see the status on your terminal as follows: {{{ INFO:omni:Loading config file /home/dbhat/.gcf/omni_config INFO:omni:Using control framework portal INFO:omni:Substituting AM nickname eg-gpo with URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc, URN unspecified_AM_URN INFO:omni:Slice urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki expires on 2013-07-22 00:00:00 UTC INFO:omni:Substituting AM nickname eg-gpo with URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc, URN unspecified_AM_URN INFO:omni:Status of Slice urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki: INFO:omni:Slice urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki at AM https://bbn-hn.exogeni.net:11443/orca/xmlrpc has overall SliverStatus: ready INFO:omni:Sliver status for Slice urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki at AM URL https://bbn-hn.exogeni.net:11443/orca/xmlrpc INFO:omni:{ "geni_status": "ready", "geni_urn": "urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki", "geni_resources": [ { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:nodeE", "geni_error": "", "geni_status": "ready" }, { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:nodeD", "geni_error": "", "geni_status": "ready" }, { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:nodeC", "geni_error": "", "geni_status": "ready" }, { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:link1", "geni_error": "", "geni_status": "ready" }, { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:link3", "geni_error": "", "geni_status": "ready" }, { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:nodeA", "geni_error": "", "geni_status": "ready" }, { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:link4", "geni_error": "", "geni_status": "ready" }, { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:link2", "geni_error": "", "geni_status": "ready" }, { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:nodeB", "geni_error": "", "geni_status": "ready" }, { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:link0", "geni_error": "", "geni_status": "ready" }, { "orca_expires": "Mon Jul 22 00:00:00 UTC 2013", "geni_urn": "urn:publicid:IDN+exogeni.net+sliver+3d88b5b9-3fa2-4b2d-9ebe-d55ca7b035cb:link5", "geni_error": "", "geni_status": "ready" } ] } INFO:omni: ------------------------------------------------------------ INFO:omni: Completed sliverstatus: Options as run: aggregate: ['eg-gpo'] framework: portal project: GIMITesting Args: sliverstatus dbhatlabwiki Result Summary: Slice urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki expires on 2013-07-22 00:00:00 UTC Slice urn:publicid:IDN+ch.geni.net:GIMITesting+slice+dbhatlabwiki at AM https://bbn-hn.exogeni.net:11443/orca/xmlrpc has overall SliverStatus: ready. Returned status of slivers on 1 of 1 possible aggregates. INFO:omni: ============================================================ }}} When you see '''overall SliverStatus''' with status "Ready" you can [http://groups.geni.net/geni/wiki/GEC17Agenda/GettingStartedWithGENI_III_GIMI/Procedure/Execute Next Step: Execute Experiment]. If the status is "configuring", redo this step until you get "Ready".[[BR]] == 2. Configure iRODs == The iRODs or Integrated Rule-Oriented Datasystem is a directory structure used to archive all experiment related data such as scripts, manifest RSpecs, experiment results and so on.[[BR]] Please click on this link to learn more [https://www.irods.org/index.php/IRODS:Data_Grids,_Digital_Libraries,_Persistent_Archives,_and_Real-time_Data_Systems iRODs]. iRODs has been downloaded and installed on your VMs. [[BR]] Please configure your iRODsEnv as explained here: === 2.1 Create iRODs account === Login to your GENI Portal account and Click on the Profile tab on the top right corner of the page.[[BR]] At the bottom of the Profile page, click on the Create iRODs button[[BR]]. === 2.2 Configuring iRODs Environment === You will be redirected to another page with your iRODs Environment and also your temporary iRODs account password.[[BR]] Copy and paste the contents of the iRODsEnv into ~/.irods/.irodsEnv[[BR]] Do {{{ $iinit }}} Enter your temporary password. You can now do {{{ $ils }}} Sample output: {{{ dbhat@bua-1159:/usr/local/bin$ ils /geniRenci/home/geni-dbhat: C- /geniRenci/home/geni-dbhat/dbhat-Explabwiki-2013-07-16T22:11:42 C- /geniRenci/home/geni-dbhat/dbhat-explast-2013-07-17T00:30:50 C- /geniRenci/home/geni-dbhat/experimentTemplates }}} You will now see a list of things that are in your iRODs directory. iRODs is now configured. If you are ready to run the Experiment go to [http://groups.geni.net/geni/wiki/GEC17Agenda/GettingStartedWithGENI_III_GIMI/Procedure/Execute Next Step: Execute Experiment] [http://groups.geni.net/geni/wiki/GEC17Agenda/GettingStartedWithGENI_III_GIMI/Procedure/Execute Next Step: Execute Experiment] [http://groups.geni.net/geni/wiki/GEC17Agenda/GettingStartedWithGENI_III_GIMI/Procedure/ Back to Procedure]