Version 25 (modified by ibaldin, 7 years ago)

--

ORCA and RSpec

ORCA supports requests submitted in RSpec v2. Requests in NS2 and RSpec v1 are possible, but require a manual use of the NDL converter and Flukes.

RSpec v2 Requests

ORCA supports a limited set of RSpec expressions. The example below shows a representative sample of what can be said. This RSpec describes a slice with two nodes connected by a single link.

<?xml version="1.0" encoding="UTF-8"?>
<rspec type="request"
xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2
                                          http://www.protogeni.net/resources/rspec/2/request.xsd"
    xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.protogeni.net/resources/rspec/2">
<node client_id="geni1">
 <sliver_type name="c1.medium">
   <disk_image
name="http://geni-images.renci.org/images/gush/gush-deb5-i386.xml"
version="25f53b64cfe44dd1604447f04b7b533bb67dea1e" />
 </sliver_type>
 <services>
   <execute shell="sh" command="hostname node1"/>
 </services>
 <interface client_id="geni1:0">
    <ip address="172.16.1.1" netmask="255.255.0.0" />
 </interface>
</node>
<node client_id="geni2">
 <sliver_type name="m1.small">
   <disk_image
name="http://geni-images.renci.org/images/gush/gush-deb5-i386.xml"
version="25f53b64cfe44dd1604447f04b7b533bb67dea1e" />
 </sliver_type>
 <services>
   <execute shell="sh" command="hostname node2"/>
 </services>
 <interface client_id="geni2:0" >
   <ip address="172.16.1.2" netmask="255.255.0.0" />
 </interface>
</node>
<link client_id="center">
  <interface_ref client_id="geni1:0" />
  <interface_ref client_id="geni2:0" />
</link>
</rspec>

Request conversion conventions

  • Disk images - in ORCA users are allowed to specify their own images that can be placed on any webserver to be picked up by ORCA (downloaded and installed on user instances). This functionality is supported via ImageProxy. From the user's perspective what is required is to (see ImageProxy documentation for details):
    • Create an image
    • Create an xml file describing the image
    • Take SHA1 hash of the xml file
    • Place the url of the xml file and the SHA1 sum into the RSpec request. Since RSpec does not natively support this, the URL must be put into the 'name' attribute of the image and the SHA1 sum into the 'version' attribute of the image (see above)
    • We maintain a small library of stock images that can be used as a starting point for customizing an image.
  • Node services - ORCA allows specifying post-boot actions in post-boot scripts. In RSpec there is an 'execute' service that can be used to do similar tasks. The contents of 'execute' service is converted into a post-boot script typically executed at rc level 99 as root. To specify a post-boot action, create a service definition in the node and
    • Specify a shell ("sh" or "/bin/sh" or other, preferably with complete path within the image, e.g. "/usr/bin/python")
    • Specify the script in the command attribute.
  • Dataplane IP address - ORCA allows the user to specify the IP address of an interface in a slice dataplane (not to be confused with the management address through which the user logs in). This can be done by adding an 'ip' element within an interface definition (see example above)
  • Management IP address - the address from which the user can have ssh access the sliver. This cannot be specified and is reported as 'service' element within the manifest RSpec. Note that the port may not be 22, as some sites lack direct access to the Internet and use NAT. For these sites Gush may not work well as it requires a listening port open on the sliver which in this case will not be NATted.
  • Domain binding - you can use standard ORCA site names (uncvmsite, rencivmsite, acisvmsite, dukevmsite). Note that nodes in a request can be bound to different domains to create an inter-domain topology. The domain can be specified as either part of component_id or component_manager_id (see both below):
    <node component_id="urn:publicid:IDN+uncvmsite+node+vm"
            component_manager_id="urn:publicid:IDN+uncvmsite+authority+cm"
            client_id="pc175"
            exclusive="true">
        <sliver_type name="m1.small" />
    </node>
    
    • Domain names are:
      • BBN Rack: bbnvmsite
      • RENCI Rack: rcivmsite
      • Duke: dukevmsite
      • UNC: uncvmsite
  • NOTE: The example above is provided for informational purposes only and needs to be modified to use a valid disk image.

Manifests

ORCA GENI AM compatibility API produces manifests consistent with RSpec v2 manifest schema and the stitching schema.

What is not supported

The following ORCA features are not supported in RSpec requests.

  • Nodegroups and nodegroup ORCA-driven splitting, automated dataplane address assignment
  • Boot script templates
  • Functional dependencies between nodes