-
Notifications
You must be signed in to change notification settings - Fork 15
Omni Configuration Manual
This page will guide you through manually configuring your Omni installation, in four simple steps :
- Decide where to place your configuration file.
- Specify the Control Frameworks you want to use.
- Specify the Aggregate Managers you want to use.
- Test your configuration.
If you are interested, look here for a detailed explanation of the configuration file structure.
There are several locations where you can place your configuration file, depending on your specific needs. Omni has a list of default locations where it will look for the file, and you can also specify a custom location with a command line argument. More specifically, based on the exact needs of your experiment you can place the configuration file at:
-
~/.gcf/omni_config. Place your configuration in a file named
omni_config
under a directory named.gcf/
in your home directory. This is the most common use case. This enables you to run Omni from any path in your system. This assumes that you have a common configuration file for all your experiments. Omni will look in this location by default. -
./omni_config. Place your configuration in the directory from where you are invoking Omni. This is mostly useful when you want to run different experiments that need different configuration files, or when you want all the configuration files of your experiment to be placed in the same directory. Omni will look in this location by default.
-
Place it anywhere in the host and use the
-c
option. If for some reason you need to place your configuration file in a custom place, you can specify the location of the file using the-c
command line option of Omni. The location can be given either as a relative, or as an absolute path. If a relative path is given (e.g.omni.py -c my_omni_config
)- The current directory is checked first (
./my_omni_config)
, - If there is no matching file, the
~/.gcf
directory is checked (~/.gcf/my_omni_config
) .
- The current directory is checked first (
Omni will look for the configuration file in the various locations in specific order. To ensure that Omni is using the file you want for its configuration, check Omni's output; Omni prints the location of the configuration file it uses. The order that Omni checks the different locations for the configuration file is:
- If the
-c
command line option is present, Omni will only look in this location and exit if it fails to find the file. If a relative path is given through the-c
option, Omni will look- at the current directory first
- if the file does not exist in the current directory, it will look at the
~/.gcf
directory
- If the location of the file is not specified through the
-c
command line argument, Omni will look :- at the current directory for a file named
omni_config
- at the
~./gcf
directory for a file namedomni_config
- at the current directory for a file named
In order to get access to resources in GENI you will need an account with at least one of the CFs. Depending on which CF you have an account with, you need to modify your configuration file appropriately.
Step by step instructions about how to modify your omni_config
file:
- using ProtoGENI CF
- using PlanetLab CF
- If you have accounts with multiple CFs and you want to be able to use any of them, you can see the example for a user with multiple accounts.
If you have an account with a ProtoGENI authority (e.g. at www.emulab.net, or www.pgeni.gpolab.bbn.com), then before modifying your Omni configuration file you get your ProtoGENI user certificate and decide which public SSH key you want to use for accessing the resources. In the following example user alice
has an account at www.pgeni.gpolab.bbn.com.
-
Download your certificate
a. Login to the Web UI where you got the account (
alice
should login at https://www.pgeni.gpolab.bbn.com). b. On the left pane select the link that saysGenerate SSL Cert
. c. Follow the instructions and make sure that you remember the passphrase you used to generate the certificate. You will be prompted multiple times from Omni about the passphrase. You can follow these instructions about how to remove the passphrase from your certificate. d. On the left pane select the link that saysDownload your SSL Cert
. e. Save the file on the host where you have also installed Omni. -
Configure SSH Access to Compute Resources. In order to login to compute resources that you
allocate you will need a pair of SSH keys.
-
If you already have a key pair that you want to use, make sure you have a copy of the SSH public key on the host where you installed Omni.
-
If you want to use a new SSH key pair, run this command on the host where you installed Omni:
ssh-keygen -f <LOCATION TO SAVE THE PAIR>
-
Alice downloaded her cert at /home/alice/.ssl/pgeni/alice-encrypted-cleartext.pem
and generated
a new pair of SSH keys placed under /home/alice/.ssh/
. Alice's omni_config file looks like :
[omni]
default_cf = pgeni
users = alice
[pgeni]
type = pg
ch = https://www.emulab.net:12369/protogeni/xmlrpc/ch
sa = https://www.pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/sa
cert = /home/alice/.ssl/pgeni/alice-encrypted-cleartext.pem
key = /home/alice/.ssl/pgeni/alice-encrypted-cleartext.pem
[alice]
urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+alice
keys = /home/alice/.ssh/id_rsa.pub
If you have an account with a different ProtoGENI authority then the only line you need to modify in the above example is the sa
attribute under the [pgeni]
section. For accounts at www.emulab.net use :
sa=https://www.emulab.net:12369/protogeni/xmlrpc/sa
After modifying your omni_config
file, continue with the
how to specify which AMs I want resources with section.
If you have an account with the PlanetLab CF, then you need to modify your Omni configuration file to be able to get your PlanetLab certificate. You also need to decide which public SSH key you want to use for accessing the resources. In the following example user alice
has an account at www.planet-lab.org.
-
Gather Information about your PlanetLab account
- Figure out the authority that issued your credential. You can ask for this information from the administrator that created your account. PlanetLab calls this a 'site', and it may correspond to your home university.
- Have a copy of the private SSH key that corresponds to the public SSH key that you provided when creating your PlanetLab account on the same host where you have installed Omni.
-
Configure SSH Access to Compute Resources. In order to login to compute resources that you allocate you will need a pair of SSH keys.
-
If you already have a key pair that you want to use, make sure you have a copy of the public key on the host where you installed Omni.
-
If you want to use a new SSH key pair, run this command on the host where you installed Omni:
ssh-keygen -f <LOCATION TO SAVE THE PAIR>
-
-
Write your Omni Config file. After you gather the above information you are ready to write your
omni_config
file. In the following example useralice
:-
Got her account from an administrator at bbn and thus the authority she should use is
plc.bbn
; -
Has saved a copy of her private SSH key that corresponds to the public SSH key that she provided when creating her PlanetLab account at
/home/alice/.ssh/alice_id_rsa
; -
Created a new pair of SSH keys for using to login to compute hosts that are saved in
/home/alice/.ssh/
; -
Decided to save her PlanetLab certificate at
/home/alice/.ssl/plc.bbn.alice.gid
.Alice's
omni_config
file looks like:[omni] default_cf = plc users = alice # PlanetLab Framework [plc] type=sfa authority=plc.bbn user=plc.bbn.alice cert=/home/alice/.ssl/plc.bbn.alice.gid key=/home/alice/.ssh/alice_id_rsa registry=http://www.planet-lab.org:12345 slicemgr=http://www.planet-lab.org:12347 [alice] urn = urn:publicid:IDN+plc:bbn+user+alice keys = /home/alice/.ssh/id_rsa.pub
-
-
Run
getversion
. The first time you invoke Omni, it will download your user certificate from PlanetLab and save it at the location that you specified in your configuration file in the attributecert
.Using the above configuration file under
/home/alice/.gcf/
, Alice ran:``` omni.py getversion ```
After modifying your omni_config
file per these instructions, continue with the
how to specify which AMs I want resources with section.
If you have accounts with different CFs, then you could specify all of them in the same
configuration file and use the -f
option to switch between your accounts. Look at the
above sections about how to construct the ProtoGENI, or the PlanetLab specific CF section.
In the example below, Alice decided to use pg-gpo
as her default CF.
In order to use Utah's ProtoGENI CF, she has to invoke Omni as:
omni.py -f pg-utah
and to use PlanetLab CF
omni.py -f plc
Here is Alice's omni_config
file:
[omni]
default_cf = gpo-pg
#Multiple users only work for ProtoGENI Aggregates
users = alice
# ---------- Users ----------
[alice]
urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+alice
# You can define multiple keys
keys = /home/alice/.ssh/id_rsa.pub,
/home/alice/.ssh/bua-1354-id_rsa.pub,
/home/alice/.ssh/arendia_id_rsa.pub
# ---------- Frameworks ----------
# GPO ProtoGENI Framework
[pg-gpo]
type = pg
ch = https://www.emulab.net:12369/protogeni/xmlrpc/ch
sa = https://www.pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/sa
cert = /home/alice/.ssl/pgeni/encrypted-cleartext.pem
key = /home/alice/.ssl/pgeni/encrypted-cleartext.pem
verbose=false
# Utah ProtoGENI Framework
[pg-utah]
type = pg
ch = https://www.emulab.net:12369/protogeni/xmlrpc/ch
sa = https://www.emulab.net:12369/protogeni/xmlrpc/sa
cert = /home/alice/.ssl/protogeni/encrypted-cleartext.pem
key = /home/alice/.ssl/protogeni/encrypted-cleartext.pem
# PlanetLab Framework
[plc]
type=sfa
authority=plc.bbn
user=plc.bbn.alice
cert=/home/alice/.ssl/plc.bbn.alice.gid
key=/home/alice/.ssh/alice.pkey
registry=http://www.planet-lab.org:12345
slicemgr=http://www.planet-lab.org:12347
Depending on which CF you decided you want to use, there are a set of AMs that you can access and get resources from using the GENI AM API. Omni needs to know the URL of the AM that you would like to interact with. Omni uses various methods to get the AM URL:
-
You can use the '''
-a
''' option of Omni to specify the URL of the AM you would like to interact with. For example if you would like tolistresources
at Utah's ProtoGENI AM you can do:``` omni.py listresources -a https://www.emulab.net:12369/protogeni/xmlrpc/am ```
Although this is the most common way to specify AMs, it is hard to memorize all the URLs. For your convenience, you can specify nicknames for the AMs in your
omni_config
. This is a snippet of a configuration file that contains a list of nicknames for the most commonly used AMs in GENI, that you can simply add to the end of your configuration file.``` [aggregate_nicknames] #ProtoGENI AMs pg-gpo1=,https://pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/am pg-gpo=,https://pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/am/2.0 pg-utah1=,https://www.emulab.net:12369/protogeni/xmlrpc/am pg-utah=,https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0 pg-ky1=,https://www.uky.emulab.net:12369/protogeni/xmlrpc/am pg-ky=,https://www.uky.emulab.net:12369/protogeni/xmlrpc/am/2.0 #Plublic PlanetLab AM plc=,https://www.planet-lab.org:12346 # Private myplc installations pl-gpo=,http://myplc.gpolab.bbn.com:12346/ pl-clemson=,http://myplc.clemson.edu:12346/ pl-stanford=,https://myplc.stanford.edu:12346/ pl-wisconsin=,https://wings-openflow-1.wail.wisc.edu:12346/ pl-washington=,https://of.cs.washington.edu:12346/ pl-rutgers=,https://plc.orbit-lab.org:12346/ pl-indiana=,https://myplc.grnoc.iu.edu:12346/ pl-gatech=,https://myplc.cip.gatech.edu:12346/ # OpenFlow AMs of-gpo=,https://foam.gpolab.bbn.com:3626/foam/gapi/1 of-stanford=,https://openflow4.stanford.edu:3626/foam/gapi/1 of-clemson=,https://foam.clemson.edu:3626/foam/gapi/1 of-wisconsin=,https://foam.wail.wisc.edu:3626/foam/gapi/1 of-rutgers=,https://nox.orbit-lab.org:3626/foam/gapi/1 of-indiana=,https://foam.noc.iu.edu:3626/foam/gapi/1 of-gatech=,https://foam.oflow.cip.gatech.edu:3626/foam/gapi/1 of-nlr=,https://foam.nlr.net:3626/foam/gapi/1 of-i2=,https://foam.net.internet2.edu:3626/foam/gapi/1 #Exogeni AMs include OpenFlow ExoGENI AMs eg-gpo=,https://bbn-hn.exogeni.net:11443/orca/xmlrpc eg-renci=,https://rci-hn.exogeni.net:11443/orca/xmlrpc eg-sm=,https://geni.renci.org:11443/orca/xmlrpc eg-of-gpo=,https://bbn-hn.exogeni.net:3626/foam/gapi/1 eg-of-renci=,https://rci-hn.exogeni.net:3626/foam/gapi/1 #InstaGENI AMs, include OpenFlow InstaGENI AMs ig-utah1=,http://utah.geniracks.net:12369/protogeni/xmlrpc/am ig-utah=,http://utah.geniracks.net:12369/protogeni/xmlrpc/am/2.0 ig-of-utah=,https://foam.utah.geniracks.net:3626/foam/gapi/1 ```
If you are using the nicknames specified in this example then you can issue the above command as:
``` omni.py listresources -a pg-utah ```
-
If there is no
-a
command when Omni is invoked then Omni will try to get a list of AMs and will run the command in '''all''' of them. Omni looks for a list of AMs in the following places:- If an aggregates attribute
is defined in the
[omni]
section, Omni will use the list defined there. - Otherwise, Omni will contact the CF that the user is using and ask for a list of AMs.
- If an aggregates attribute
is defined in the
Invoking an Omni command without specifying an AM url, can be useful if you want to perform a batch operation at many aggregates in the same slice (e.g. renewsliver, listresources). However keep in mind that this will take some time since Omni needs to contact each AM individually.
On the terminal window run:
omni.py getversion -a pg-gpo
Your output should look like similar to this:
nriga@pella:~$ omni-configure.py
{'framework': 'pg', 'configfile': '~/.gcf/omni_config', 'plkey':
'~/.ssh/geni_pl_key', 'cert': '~/.ssl/geni_cert', 'verbose': False}
INFO:omniconfig:Using configfile: /home/nriga/.gcf/omni_config
INFO:omniconfig:Using certfile /home/nriga/.ssl/geni_cert.pem
INFO:omniconfig:
CREATING SSH KEYPAIR
INFO:omniconfig:Private key stored at: /home/nriga/.ssh/geni_key
Enter passphrase:
INFO:omniconfig:Public key stored at: /home/nriga/.ssh/geni_key.pub
INFO:omniconfig:Wrote omni configuration file at: /home/nriga/.gcf/omni_config
nriga@pella:~$ omni.py getversion -a pg-gpo
INFO:omni:Loading config file /home/nriga/.gcf/omni_config
INFO:omni:Using control framework pg
INFO:omni:Substituting AM nickname pg-gpo with URL
https://pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/am, URN unspecified_AM_URN
Enter PEM pass phrase:
INFO:omni:AM URN: unspecified_AM_URN (url:
https://pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/am) has version:
INFO:omni:{ 'ad_rspec_versions': [ { 'extensions': [],
'namespace':
'http://www.protogeni.net/resources/rspec/0.1',
'schema':
'http://www.protogeni.net/resources/rspec/0.1/ad.xsd',
'type': 'ProtoGENI',
'version': '0.1'},
{ 'extensions': [],
'namespace':
'http://www.protogeni.net/resources/rspec/0.2',
'schema':
'http://www.protogeni.net/resources/rspec/0.2/ad.xsd',
'type': 'ProtoGENI',
'version': '0.2'},
{ 'extensions': [
'http://www.protogeni.net/resources/rspec/ext/emulab/1'],
'namespace':
'http://www.protogeni.net/resources/rspec/2',
'schema':
'http://www.protogeni.net/resources/rspec/2/ad.xsd',
'type': 'ProtoGENI',
'version': '2'},
{ 'extensions': [
'http://www.protogeni.net/resources/rspec/ext/emulab/1'],
'namespace':
'http://www.geni.net/resources/rspec/3',
'schema':
'http://www.geni.net/resources/rspec/3/ad.xsd',
'type': 'GENI',
'version': '3'}],
'code_tag': '16c3451f2d049fa0f679f77d218f23e282d9026a',
'default_ad_rspec': { 'type': 'ProtoGENI', 'version': '2'},
'geni_api': 1,
'geni_api_versions': { '1':
'https://www.pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/am/1.0',
'2':
'https://www.pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/am/2.0'},
'hostname': 'pergamon.gpolab.bbn.com',
'hrn': 'bbn-pgeni.cm',
'interface': 'aggregate',
'request_rspec_versions': [ { 'extensions': [],
'namespace':
'http://www.protogeni.net/resources/rspec/0.1',
'schema':
'http://www.protogeni.net/resources/rspec/0.1/request.xsd',
'type': 'ProtoGENI',
'version': '0.1'},
{ 'extensions': [],
'namespace':
'http://www.protogeni.net/resources/rspec/0.2',
'schema':
'http://www.protogeni.net/resources/rspec/0.2/request.xsd',
'type': 'ProtoGENI',
'version': '0.2'},
{ 'extensions': [
'http://www.protogeni.net/resources/rspec/ext/emulab/1'],
'namespace':
'http://www.protogeni.net/resources/rspec/2',
'schema':
'http://www.protogeni.net/resources/rspec/2/request.xsd',
'type': 'ProtoGENI',
'version': '2'},
{ 'extensions': [
'http://www.protogeni.net/resources/rspec/ext/emulab/1'],
'namespace':
'http://www.geni.net/resources/rspec/3',
'schema':
'http://www.geni.net/resources/rspec/3/request.xsd',
'type': 'GENI',
'version': '3'}],
'url': 'https://www.pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/am',
'urn': 'urn:publicid:IDN+pgeni.gpolab.bbn.com+authority+cm'}
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed getversion:
Options as run:
aggregate: pg-gpo
framework: pg
native: True
Args: getversion
Result Summary:
Got version for 1 out of 1 aggregates
INFO:omni: ============================================================
nriga@pella:~$
If you have multiple SSH keys that you would like to use to access your compute resources, you can do so by providing a comma-separated list of keys for the specific user. In the example below, Alice wants two public SSH keys to be loaded on her compute resources:
[omni]
default_cf = pg-gpo
users = alice
# ---------- Users ----------
[alice]
urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+alice
# You can define multiple keys
keys = /home/alice/.ssh/id_rsa.pub, /home/alice/.ssh/another_id_rsa.pub
[pg-gpo]
type = pg
ch = https://www.emulab.net:12369/protogeni/xmlrpc/ch
sa = https://www.pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/sa
cert = /home/alice/.ssl/pgeni/encrypted-cleartext.pem
key = /home/alice/.ssl/pgeni/encrypted-cleartext.pem
As we mentioned earlier, Omni will use the information in the configuration file to determine
which users should have access to compute resources, via the users
attribute in the [omni]
section. If you want multiple users to have access to the reserved compute resources, then based
on the AM you use, you can modify your configuration file to achieve that.
If you are reserving resources in a ProtoGENI AM, then you can specify a comma separated list of
users in the users
attribute of the [omni]
section, and specify the information for each
user in a corresponding section. In the example below, Alice is reserving compute resources and
wants Bob to also have access to the reserved ProtoGENI resources. Bob needs to send Alice a copy of his SSH public key, which Alice needs to save on the host where she invokes Omni from.
It does not matter which CF Alice uses to get ProtoGENI resources, she can use a ProtoGENI or a
PlanetLab authority.
[omni]
default_cf = pg-gpo
users = alice, bob
# ---------- Users ----------
[alice]
urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+alice
# You can define multiple keys
keys = /home/alice/.ssh/id_rsa.pub
[bob]
urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+bob
keys = /home/alice/.ssh/bob_id_rsa.pub
[pg-gpo]
type = pg
ch = https://www.emulab.net:12369/protogeni/xmlrpc/ch
sa = https://www.pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/sa
cert = /home/alice/.ssl/pgeni/encrypted-cleartext.pem
key = /home/alice/.ssl/pgeni/encrypted-cleartext.pem
Currently PlanetLab AMs do not support access to the same slice for multiple accounts. However multiple users can share the same account to access PlanetLab compute resources, by installing multiple SSH keys for the account. In the example below, Alice is reserving compute resources and wants Bob to also have access to the reserved PlanetLab resources. Bob needs to send Alice a copy of his public SSH key, which Alice needs to save on the host where she invokes Omni from. It does not matter which CF Alice uses to get ProtoGENI resources, she can use a ProtoGENI or a PlanetLab authority.
[omni]
default_cf = pg-gpo
users = alice
# ---------- Users ----------
[alice]
urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+alice
# You can define multiple keys
keys = /home/alice/.ssh/id_rsa.pub, /home/alice/.ssh/bob_id_rsa.pub
[pg-gpo]
type = pg
ch = https://www.emulab.net:12369/protogeni/xmlrpc/ch
sa = https://www.pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/sa
cert = /home/alice/.ssl/pgeni/encrypted-cleartext.pem
key = /home/alice/.ssl/pgeni/encrypted-cleartext.pem
This is a full configuration file example, that uses multiple CFs, multiple users and multiple keys per user.
[omni]
default_cf = gpo-pg
#Multiple users only work for ProtoGENI Aggregates
users = alice, bob
# ---------- Users ----------
[alice]
urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+alice
# You can define multiple keys
keys = /home/alice/.ssh/id_rsa.pub,
/home/alice/.ssh/bua-1354-id_rsa.pub,
/home/alice/.ssh/arendia_id_rsa.pub
[bob]
urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+bob
keys = /home/alice/.ssh/bob_id_rsa.pub
# ---------- Frameworks ----------
# GPO ProtoGENI Framework
[pg-gpo]
type = pg
ch = https://www.emulab.net:12369/protogeni/xmlrpc/ch
sa = https://www.pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/sa
cert = /home/alice/.ssl/pgeni/encrypted-cleartext.pem
key = /home/alice/.ssl/pgeni/encrypted-cleartext.pem
verbose=false
# Utah ProtoGENI Framework
[pg-utah]
type = pg
ch = https://www.emulab.net:12369/protogeni/xmlrpc/ch
sa = https://www.emulab.net:12369/protogeni/xmlrpc/sa
cert = /home/alice/.ssl/protogeni/encrypted-cleartext.pem
key = /home/alice/.ssl/protogeni/encrypted-cleartext.pem
# PlanetLab Framework
[plc]
type=sfa
authority=plc.bbn
user=plc.bbn.alice
cert=/home/alice/.ssl/plc.bbn.alice.gid
key=/home/alice/.ssh/alice.pkey
registry=http://www.planet-lab.org:12345
slicemgr=http://www.planet-lab.org:12347
[aggregate_nicknames]
#ProtoGENI AMs
pg-gpo1=,https://pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/am
pg-gpo=,https://pgeni.gpolab.bbn.com:12369/protogeni/xmlrpc/am/2.0
pg-utah1=,https://www.emulab.net:12369/protogeni/xmlrpc/am
pg-utah=,https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0
pg-ky1=,https://www.uky.emulab.net:12369/protogeni/xmlrpc/am
pg-ky=,https://www.uky.emulab.net:12369/protogeni/xmlrpc/am/2.0
#Plublic PlanetLab AM
plc=,https://www.planet-lab.org:12346
# Private myplc installations
pl-gpo=,http://myplc.gpolab.bbn.com:12346/
pl-clemson=,http://myplc.clemson.edu:12346/
pl-stanford=,https://myplc.stanford.edu:12346/
pl-wisconsin=,https://wings-openflow-1.wail.wisc.edu:12346/
pl-washington=,https://of.cs.washington.edu:12346/
pl-rutgers=,https://plc.orbit-lab.org:12346/
pl-indiana=,https://myplc.grnoc.iu.edu:12346/
pl-gatech=,https://myplc.cip.gatech.edu:12346/
# OpenFlow AMs
of-gpo=,https://foam.gpolab.bbn.com:3626/foam/gapi/1
of-stanford=,https://openflow4.stanford.edu:3626/foam/gapi/1
of-clemson=,https://foam.clemson.edu:3626/foam/gapi/1
of-wisconsin=,https://foam.wail.wisc.edu:3626/foam/gapi/1
of-rutgers=,https://nox.orbit-lab.org:3626/foam/gapi/1
of-indiana=,https://foam.noc.iu.edu:3626/foam/gapi/1
of-gatech=,https://foam.oflow.cip.gatech.edu:3626/foam/gapi/1
of-nlr=,https://foam.nlr.net:3626/foam/gapi/1
of-i2=,https://foam.net.internet2.edu:3626/foam/gapi/1
#Exogeni AMs include OpenFlow ExoGENI AMs
eg-gpo=,https://bbn-hn.exogeni.net:11443/orca/xmlrpc
eg-renci=,https://rci-hn.exogeni.net:11443/orca/xmlrpc
eg-sm=,https://geni.renci.org:11443/orca/xmlrpc
eg-of-gpo=,https://bbn-hn.exogeni.net:3626/foam/gapi/1
eg-of-renci=,https://rci-hn.exogeni.net:3626/foam/gapi/1
#InstaGENI AMs, include OpenFlow InstaGENI AMs
ig-utah1=,http://utah.geniracks.net:12369/protogeni/xmlrpc/am
ig-utah=,http://utah.geniracks.net:12369/protogeni/xmlrpc/am/2.0
ig-of-utah=,https://foam.utah.geniracks.net:3626/foam/gapi/1
GENI is sponsored by the National Science Foundation.