Using ORCA with GCF OMNI

Overview

ORCA does not have a clearinghouse and implements GENI AM API that make it possible to use it with ProtoGENI ClearingHouse?. You must have valid PG/Emulab credentials. While ORCA internally uses NDL-OWL as its resource representation mechanism, it accepts ProtoGENI RSpec v2-formatted XML requests and automatically converts them into a subset of NDL-OWL.

Prerequisites

  • Download and install omni
    • NOTE: these examples are written against omni v1.2
  • Acquire ProtoGENI/Emulab credentials
  • Modify omni configuration file to point to your new credentials
    [pg]
    type=pg
    verbose=false
    sa=https://www.emulab.net:443/protogeni/xmlrpc/sa
    ch=https://www.emulab.net:443/protogeni/xmlrpc/ch
    cert=/path/to/user-encrypted.pem
    key=/path/to/user-encrypted.pem
    
  • Identify the URL ORCA controller running GENI AM API against which you will be placing requests (usually https://some.host.name:11443/orca/xmlrpc)

Operations

  • Run a test command
    $ ./src/omni.py -c omni_pg_config -f pg -a https://some.host.name:11443/orca/xmlrpc getversion
    INFO:omni:Loading config file omni_pg_config
    INFO:omni:Using control framework pg
    Enter PEM pass phrase:
    unspecified_AM_URN (https://geni-test.renci.org:11443/orca/xmlrpc) {'implementation': 'ORCA', 'geni_api': 1}
    
  • Create a ProtoGENI slice using OMNI
    $ ./src/omni.py -c omni_pg_config -f pg createslice my-slice-07-22
    INFO:omni:Loading config file omni_pg_config
    INFO:omni:Using control framework pg
    Enter PEM pass phrase:
    Enter PEM pass phrase:
    Enter PEM pass phrase:
    Created slice with Name ilia-slice-07-22, URN urn:publicid:IDN+emulab.net+slice+my-slice-07-22
    
  • Create an RSpec for your slice (see PG RSpec v2 documentation):
    <?xml version="1.0" encoding="UTF-8"?>
    <rspec xmlns="http://www.protogeni.net/resources/rspec/2"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2 http://www.protogeni.net/resources/rspec/2/request.xsd"
           type="request" >
      <node client_id="my-node"
            exclusive="true">
        <sliver_type name="raw-pc" />
      </node>
    </rspec>
    
  • Create a sliver in ORCA for this slice (note that when run on a real substrate you will get back IP addresses and port numbers to ssh into; these examples are run against an emulated aggregate)
    ./src/omni.py -c omni_pg_config -f pg -a https://some.host.name:11443/orca/xmlrpc -n createsliver my-slice-07-22 node-request.rspec2 
    INFO:omni:Loading config file omni_pg_config
    INFO:omni:Using control framework pg
    Enter PEM pass phrase:
    Enter PEM pass phrase:
    Enter PEM pass phrase:
    Enter PEM pass phrase:
    Asked https://some.host.name:11443/orca/xmlrpc to reserve resources. Result: Request id: 6adb19b9-0d9d-49c3-a1cd-a6d259b2fb47
    [   Slice UID: 5206d28e-ba3f-4865-b7ef-1c77bfe53b0e | Reservation UID: af1987d0-a66a-4345-ac71-e288e31e2774 | Resource Type: unc.vm | Resource Units: 1 ] 
    
  • Request sliver status and manifest
    ./src/omni.py -c omni_pg_config -f pg -a https://geni.renci.org:11443/orca/xmlrpc -n sliverstatus my-slice-10-28-1
    
  • Delete a sliver
    ./src/omni.py -c omni_pg_config -f pg -a https://some.host.name:11443/orca/xmlrpc -n deletesliver ilia-slice-07-22 
    INFO:omni:Loading config file omni_pg_config
    INFO:omni:Using control framework pg
    Enter PEM pass phrase:
    Enter PEM pass phrase:
    Enter PEM pass phrase:
    Enter PEM pass phrase:
    Deleted sliver urn:publicid:IDN+emulab.net+slice+ilia-slice-07-22 on unspecified_AM_URN at https://some.host.name:11443/orca/xmlrpc
    

Few notes on RSpec

Visit this page to see how ORCA interprets RSpec v2.