Version 8 (modified by ibaldin, 8 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

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="raw-pc">
   <disk_image
name="http://geni-images.renci.org/images/gush/gush-deb5-i386.xml"
version="25f53b64cfe44dd1604447f04b7b533bb67dea1e" />
 </sliver_type>
 <services>
   <execute shell="sh" command="sudo hostname `cat
/var/emulab/boot/realname`.`cat /var/emulab/boot/mydomain`"/>
 </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="raw-pc">
   <disk_image
name="http://geni-images.renci.org/images/gush/gush-deb5-i386.xml"
version="25f53b64cfe44dd1604447f04b7b533bb67dea1e" />
 </sliver_type>
 <services>
   <execute shell="sh" command="sudo hostname `cat
/var/emulab/boot/realname`.`cat /var/emulab/boot/mydomain`"/>
 </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>

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
    • 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)
  • 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. 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)
  • Domain binding - you can use standard ORCA site names (uncvmsite, rencivmsite, acisvmsite, dukevmsite). 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+pc175"
            component_manager_id="urn:publicid:IDN+uncvmsite+authority+cm"
            client_id="pc175"
            exclusive="true">
        <sliver_type name="raw-pc" />
      </node>