Giter VIP home page Giter VIP logo

orca5's Introduction

This code is no longer being maintained. The repo is kept only for historical reasons.

ORCA is a IaaS software for managing meta-clouds. It is deployed in production on ExoGENI world-wide testbed (http://www.exogeni.net).

Building ORCA

Building Orca is a straightforward Maven command.

Running ORCA in emulation

You can run Orca in emulation using docker containers by running some scripts:

  • ./docker/docker_build.sh
  • ./docker/docker_run.sh

Testing ORCA

The default compile doesn't run any of the tests, because many of them depend on having a MySQL server to talk to (not a great idea, but working for now).

One of the docker containers started (in emulation) will be a MySQL container, that can be used when running the "unit tests", which are enabled via a Maven 'profile'. (Most of the unit tests are not, strictly speaking, "unit tests". But they're still useful :)

  • mvn clean install -Ptest

Tests are run automatically on our Jenkins server, following every commit pushed to GitHub. https://ci.exogeni.net:8443/

Tests that are run

Many, but not all, of the current ORCA tests are run as if requests were submitted to the Controller:

Interacting with ORCA

You can download Flukes from here: http://geni-images.renci.org/webstart/flukes.jnlp And use that to connect to ExoGENI or your emulated ORCA.

You'll need to get GENI credentials to use ExoGENI: http://www.exogeni.net/2015/09/exogeni-getting-started-tutorial/

You can also use Ahab to programmatically manipulate slices in ORCA.

Contributing to ORCA

  • Issue for the code change
  • Branch, named after the issue
    • Test for the code change (TDD. Test should fail at this point)
    • Code for the code change (Test should pass at this point)
    • Code can be automatically formatted following Orca guidelines using the maven command mvn formatter:format
  • Pull Request
  • Code Review
  • Merge code into master

Your code will not be formatted to follow the Orca style guidelines using the normal maven build commands (e.g. mvn clean install), but it can be formatted using the maven command mvn formatter:format. The style guidelines can also be imported into Eclipse from the file orca_formatter_style.xml

Orca deployment structure in ExoGENI

orca5's People

Contributors

anriban avatar bun avatar clarisca avatar dependabot[bot] avatar hinchliff avatar ibaldin avatar kthare10 avatar mcevik0 avatar mjstealey avatar paul-ruth avatar vjorlikowski avatar yufengxin avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

mjstealey

orca5's Issues

controller error message should be looked at

2016-04-20 17:35:12,572 [PeriodicPoolThread] ERROR controller.ReservationStatusUpdateThread - ModifyStatusChecker: java.lang.Exception: Unable to obtain reservation information for 4985c18f-7d87-40b4-9e1d-52abec52e195
2016-04-20 17:35:12,572 [PeriodicPoolThread] DEBUG controller.ReservationStatusUpdateThread - Reservation watch not ready for reservations [D464AB75[ 1 ]]
2016-04-20 17:35:13,067 [SliceDeferThread] DEBUG controller.SliceDeferThread - SliceDeferThread tick.
2016-04-20 17:35:16,172 [PeriodicPoolThread] ERROR controller.ReservationStatusUpdateThread - ModifyStatusChecker: java.lang.Exception: Unable to obtain reservation information for 7b95784f-cfa5-4f29-a122-e9ec93cb999b
2016-04-20 17:35:16,172 [PeriodicPoolThread] DEBUG controller.ReservationStatusUpdateThread - Reservation watch not ready for reservations [A8F0CAB1[ 1 ]]
2016-04-20 17:35:19,666 [PeriodicPoolThread] ERROR controller.ReservationStatusUpdateThread - ModifyStatusChecker: java.lang.Exception: Unable to obtain reservation information for f6c7d257-1d47-4926-9911-a1255ade868f
2016-04-20 17:35:19,666 [PeriodicPoolThread] DEBUG controller.ReservationStatusUpdateThread - Reservation watch not ready for reservations [5ACD816C[ 1 ]]

Not sure what to make of that. (sez @vjorlikowski )

multipoint slice (unbound case and modify)

The request is here: http://geni-images.renci.org/images/anirban/mp-test-2.rdf , which was a 5 way multipoint slice (16 each on 4 node groups and 1 vm) that was unbound. When the slice is submitted, it seems that the set of reservations obtained are correct. For example, submission of this request gave reservations for VMs in two sites (32 in one and 33 in another) and an ion vlan. When I query for the manifest, it shows only the three active vlan reservations and only one failed VM reservation with the following error. There is no sign of the rest of the 64 VMs when I "View as a List".

/9b0d421b-80c8-46cf-8956-0eb54e31b890/MasterGroup
Failed
Reservation 75a979d2-7f75-4fcc-bccb-bcab15ce771d (Slice ani-mp-unbound-1) is in state [Failed,None] Last ticket update: java.lang.IllegalArgumentException: Count can only be 1
No management access

Interface add/remove (sliverModify) and link add/remove (sliceModify)

Starting this discussion thread as a place for discussions between Paul, Yufeng and myself specific to sliverModify implementing interface add/remove and the higher-level sliceModify functionality that adds/removes links and takes advantage of this sliverModify functionality.

NEuca leaks quantum interfaces

During the most recent maintenance, I discovered a number of leaked quantum ports, on each of the AMs implementing storage.
These leaked ports were all associated with the storage network on these AMs.
It appears that the code that is supposed to clean up ports isn't doing so for the (statically defined) storage network.

ORCA stitching to UVA

According to Chris, creating a dumbbell from BBN to UVA results in UVANet and ION failures. This is perhaps due to the changes introduced for vlan 3300 to support UVA-CIENA connectivity.

cienaNet failing

This was a 5 way multipoint slice with one node group at CIENA. The cienaNet reservation failed with following error message. Something with respect to communication with the switch ?

cienaNet/Domain/vlan/f21b491d-dc5d-4f9c-81ed-3ae13bcbf462/vlan
Failed
Reservation 3f9fb91c-6f6c-4dd7-8f30-31e3f675d98b (Slice ani-mp-2) is in state [Failed,None] Last lease update: all units failed priming: Exception during join for unit: 9C148121 The following error occurred while executing this line: /etc/orca/am+broker-12080/handlers/providers/ben.no-na.tasks.xml:73: /etc/orca/am+broker-12080/handlers/providers/ben.no-na.tasks.xml:171: An error occurred: java.io.IOException: Expected response not received.
No management access

semi-wedged slice on new compute node failure

If you have an existing slice and modify it by adding a new compute node that does not have an image specified the vm will fail as expected. The problem is that after you delete the failed vm and try to re-add the vm with an appropriate image the modify request fails silently. In other words, the never appears in the slice (failed or otherwise).

To re-create:

  1. Create a slice with a single node
  2. Create a modify request that adds a single node where the node does not specify an image.
  3. Query for the manifest and see the failed node.
  4. Delete the failed node with a modify request.
  5. Create a modify request that adds a single node where the node does specify an image.
  6. Query for the manifest and the new vm is not included.

Topology embedding extensions

See the attached picture for diagrams. We would like the topology embedding algorithm to extend to the following cases:

  1. connecting a broadcast link in one rack to a broadcast link in another. Right now this can be emulated by using node groups, but a more general solution would allow for heterogeneous nodes to be attached to a bcast link, then linked to another one in another rack.
    2.Dealing with two stitchoports in a request that come from the same stitchport URL, but different vlan tags. This likely requires introducing a virtual port in the request (so it propagates into the manifest).
  2. Being able to attach stitchport(s) to a bcast link. Probably similar to 1 and 2 above.
  3. Being able to not specify the VLAN tag on a stichport, instead having Net AM return the selected tag out of the available range. This supports GENI stitching (tag 'any' in RSpec).
  4. Be able to attach storage to broadcast links.
  5. For shared storage, do not create extra interfaces (and assigned extra IP addresses) to a node that attaches to multiple ISCSI volumes from the same site.

Add support for querying for multiple states on the SM in mysql

Currently we can query only for one state and return matching reservations. The label sync thread has to acquire reservations in a number of states, which results in multiple expensive queries instead of a single joint query. Requires modifying management interface and local proxy to use a list of states as a parameter.

RDF Fixes (put them on master branch)

CIENA RDF needs to be checked to conform to this setup:

Port 3/17 (10G):
3300 - stitchport towards UvA (direct manually provisioned link)

Port 4/1 (100G):
1870-1879 - ExoGENI stitching via AL2S
940-949 - GENI Stitching via AL2S
1779-1799 - Stitchport towards NSI 8700 at SL

ION RDF: UMass VLAN 533 should use URN

urn:ogf:network:domain=al2s.net.internet2.edu:node=sdn-sw.newy32aoa.net.internet2.edu:port=eth5/2:link=NOX

NPE in SM on closing some reservations

Saw this in SM log

2015-12-18 16:16:25,572 [rci-sm] DEBUG orca.rci-sm - Processing 1 events
2015-12-18 16:16:25,572 [rci-sm] DEBUG orca.rci-sm - Reservation #17CA551D close transition: Nascent->Closed, None->None
2015-12-18 16:16:25,579 [rci-sm] ERROR orca.rci-sm - close with policy
java.lang.NullPointerException
        at orca.shirako.kernel.ReservationClient.doRelinquish(ReservationClient.java:736)
        at orca.shirako.kernel.ReservationClient.close(ReservationClient.java:769)
        at orca.shirako.kernel.Kernel.close(Kernel.java:151)
        at orca.shirako.kernel.KernelWrapper.close(KernelWrapper.java:169)
        at orca.shirako.core.Actor.close(Actor.java:285)
        at orca.manage.internal.ActorManagementObject$5.run(ActorManagementObject.java:599)
        at orca.shirako.core.Actor$3.process(Actor.java:977)
        at orca.shirako.core.Actor.actorMain(Actor.java:377)
        at orca.shirako.core.Actor$4.run(Actor.java:1018)
        at java.lang.Thread.run(Unknown Source)
2015-12-18 16:16:25,580 [rci-sm] INFO  orca.rci-sm - Reservation #17CA551D  has not requested any resource yet. Nothing to relinquish.
2015-12-18 16:16:25,581 [rci-sm] INFO  orca.rci-sm - Updating reservation 17CA551D in slice test-xmpp-12-18(40687AD6)
2015-12-18 16:16:25,604 [rci-sm] DEBUG orca.rci-sm - No need to update reservation 17CA551D in slice test-xmpp-12-18(40687AD6)

The code is this:

    protected void doRelinquish() {
        if (!relinquished) {
            relinquished = true;
            // tell the policy this reservation is now closed
            try {
                policy.closed(this);
            } catch (Exception e) {
                logger.error("close with policy", e);
            }

Looks like 'policy' is not set for a reservation? I wonder if this is a 'fake' reservation? Judging by what the log ('Reservation has not requested any resources yet.').

Build process allows to build once before throwing an error

If you build without removing the contents of ~/orca-build/rpmbuild and all the RPMs that are in ~/orca-build, this error occurs:

[geni-orca@geni-dev orca5]$ ./redhat/buildrpm.sh -i
User requested automatic installation after build complete.
Preparing to build RPMs; this may take some time...
error: Package already exists: %package common
RPM build failed.
[geni-orca@geni-dev orca5]$

Add support for EROs

Example use: the 40GB link between uva and starlight exists only from ESNet scheduler:

  1. Choose the link when the request bw exceeds 10GB.
  2. Otherwise choose the regular 10GB link.

RDF Stitchport updates (put on master)

  1. Define a RENCI Datacenter stitchport on ion. Use Renci's AL2S URN for it and a 20-size vlan range negotiated with Chris
  2. Define an SDSC Stithport on ion. Use 'fake' URN urn:ogf:network:domain=renci.org:node=SDSC:port=COMET and vlan range 3700-3704
  3. Remove osgnet and it's references from ben-6509.rdf

Node (re)naming when generalized node groups are used

From Sarah:

In the attached RSpecs the client_id of the nodes changes after the reservation.

That is:
(1) If the request has client_id "foo" the CreateSliver call returns two nodes one with client_id "foo" and another with client_id "foo/0". (See request_rspec.xml and initial_manifest_rspec.xml)
(2) Subsequent ListResources calls include a single node with a client_id of "foo/0". (See later_manifest_rspec.xml)

Any idea what is up here? Our experimenters are working around it, but it's causing them problems.

Request:

<rspec xmlns="http://www.geni.net/resources/rspec/3" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1" xmlns:tour="http://www.protogeni.net/resources/rspec/ext/apt-tour/1" xmlns:jacks="http://www.protogeni.net/resources/rspec/ext/jacks/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.geni.net/resources/rspec/3    http://www.geni.net/resources/rspec/3/request.xsd" type="request">
<node xmlns="http://www.geni.net/resources/rspec/3" client_id="hadoop-master" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am">
<icon xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg"/>
<sliver_type xmlns="http://www.geni.net/resources/rspec/3" name="XOMedium">
<disk_image xmlns="http://www.geni.net/resources/rspec/3" name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
</sliver_type>
<hardware_type xmlns="http://www.geni.net/resources/rspec/3" name="orca-vm-cloud"/>
<services xmlns="http://www.geni.net/resources/rspec/3">


<execute xmlns="http://www.geni.net/resources/rspec/3" command="chmod +x /tmp/master.sh; /tmp/master.sh" shell="/bin/sh"/>
<install xmlns="http://www.geni.net/resources/rspec/3" url="http://geni-images.renci.org/images/GENIWinterCamp/master.sh" install_path="/tmp"/>
</services>
<interface xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-0">
<ip xmlns="http://www.geni.net/resources/rspec/3" address="172.16.1.1" type="ipv4" netmask="255.255.255.0"/>
</interface>
</node>
<node xmlns="http://www.geni.net/resources/rspec/3" client_id="hadoop-worker-0" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am">
<icon xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg"/>
<sliver_type xmlns="http://www.geni.net/resources/rspec/3" name="XOMedium">
<disk_image xmlns="http://www.geni.net/resources/rspec/3" name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
</sliver_type>
<hardware_type xmlns="http://www.geni.net/resources/rspec/3" name="orca-vm-cloud"/>
<services xmlns="http://www.geni.net/resources/rspec/3">


<execute xmlns="http://www.geni.net/resources/rspec/3" command="chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&quot;link-0&quot;) $hadoop-worker-0.Name() $hadoop-worker-0.IP(&quot;link-0&quot;)" shell="/bin/sh"/>
<install xmlns="http://www.geni.net/resources/rspec/3" url="http://geni-images.renci.org/images/GENIWinterCamp/worker.sh" install_path="/tmp"/>
</services>
<interface xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-1">
<ip xmlns="http://www.geni.net/resources/rspec/3" address="172.16.1.10" type="ipv4" netmask="255.255.255.0"/>
</interface>
</node>
<node xmlns="http://www.geni.net/resources/rspec/3" client_id="hadoop-worker-1" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am">
<icon xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg"/>
<sliver_type xmlns="http://www.geni.net/resources/rspec/3" name="XOMedium">
<disk_image xmlns="http://www.geni.net/resources/rspec/3" name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
</sliver_type>
<hardware_type xmlns="http://www.geni.net/resources/rspec/3" name="orca-vm-cloud"/>
<services xmlns="http://www.geni.net/resources/rspec/3">


<execute xmlns="http://www.geni.net/resources/rspec/3" command="chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&quot;link-0&quot;) $hadoop-worker-1.Name() $hadoop-worker-1.IP(&quot;link-0&quot;)" shell="/bin/sh"/>
<install xmlns="http://www.geni.net/resources/rspec/3" url="http://geni-images.renci.org/images/GENIWinterCamp/worker.sh " install_path="/tmp"/>
</services>
<interface xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-3">
<ip xmlns="http://www.geni.net/resources/rspec/3" address="172.16.1.11" type="ipv4" netmask="255.255.255.0"/>
</interface>
</node>
<node xmlns="http://www.geni.net/resources/rspec/3" client_id="hadoop-worker-2" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am">
<icon xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg"/>
<sliver_type xmlns="http://www.geni.net/resources/rspec/3" name="XOMedium">
<disk_image xmlns="http://www.geni.net/resources/rspec/3" name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
</sliver_type>
<hardware_type xmlns="http://www.geni.net/resources/rspec/3" name="orca-vm-cloud"/>
<services xmlns="http://www.geni.net/resources/rspec/3">


<execute xmlns="http://www.geni.net/resources/rspec/3" command="chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&quot;link-0&quot;) $hadoop-worker-2.Name() $hadoop-worker-2.IP(&quot;link-0&quot;)" shell="/bin/sh"/>
<install xmlns="http://www.geni.net/resources/rspec/3" url=" http://geni-images.renci.org/images/GENIWinterCamp/worker.sh " install_path="/tmp"/>
</services>
<interface xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-4">
<ip xmlns="http://www.geni.net/resources/rspec/3" address="172.16.1.12" type="ipv4" netmask="255.255.255.0"/>
</interface>
</node>
<node xmlns="http://www.geni.net/resources/rspec/3" client_id="hadoop-worker-3" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am">
<icon xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg"/>
<sliver_type xmlns="http://www.geni.net/resources/rspec/3" name="XOMedium">
<disk_image xmlns="http://www.geni.net/resources/rspec/3" name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
</sliver_type>
<hardware_type xmlns="http://www.geni.net/resources/rspec/3" name="orca-vm-cloud"/>
<services xmlns="http://www.geni.net/resources/rspec/3">


<execute xmlns="http://www.geni.net/resources/rspec/3" command="chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&quot;link-0&quot;) $hadoop-worker-3.Name() $hadoop-worker-3.IP(&quot;link-0&quot;)" shell="/bin/sh"/>
<install xmlns="http://www.geni.net/resources/rspec/3" url="http://geni-images.renci.org/images/GENIWinterCamp/worker.sh " install_path="/tmp"/>
</services>
<interface xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-2">
<ip xmlns="http://www.geni.net/resources/rspec/3" address="172.16.1.13" type="ipv4" netmask="255.255.255.0"/>
</interface>
</node>
<node xmlns="http://www.geni.net/resources/rspec/3" client_id="hadoop-worker-4" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am">
<icon xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg"/>
<sliver_type xmlns="http://www.geni.net/resources/rspec/3" name="XOMedium">
<disk_image xmlns="http://www.geni.net/resources/rspec/3" name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
</sliver_type>
<hardware_type xmlns="http://www.geni.net/resources/rspec/3" name="orca-vm-cloud"/>
<services xmlns="http://www.geni.net/resources/rspec/3">


<execute xmlns="http://www.geni.net/resources/rspec/3" command="chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&quot;link-0&quot;) $hadoop-worker-4.Name() $hadoop-worker-4.IP(&quot;link-0&quot;)" shell="/bin/sh"/>
<install xmlns="http://www.geni.net/resources/rspec/3" url="http://geni-images.renci.org/images/GENIWinterCamp/worker.sh " install_path="/tmp"/>
</services>
<interface xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-5">
<ip xmlns="http://www.geni.net/resources/rspec/3" address="172.16.1.14" type="ipv4" netmask="255.255.255.0"/>
</interface>
</node>
<link xmlns="http://www.geni.net/resources/rspec/3" client_id="link-0">
<interface_ref xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-0"/>
<interface_ref xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-1"/>
<interface_ref xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-2"/>
<interface_ref xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-3"/>
<interface_ref xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-4"/>
<interface_ref xmlns="http://www.geni.net/resources/rspec/3" client_id="interface-5"/>


<component_manager xmlns="http://www.geni.net/resources/rspec/3" name="urn:publicid:IDN+exogeni.net:slvmsite+authority+am"/>
<component_manager xmlns="http://www.geni.net/resources/rspec/3" name="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am"/>
</link>
</rspec>

Initial manifest:

<?xml version="1.0" encoding="utf-8"?>
<!--
Aggregate Details
{
  "user_requested": true, 
  "url": "https://geni.renci.org:11443/orca/xmlrpc", 
  "urn": "urn:publicid:IDN+exogeni.net+authority+am", 
  "AM Depends on": "<none>", 
  "hops_info": [], 
  "Have Reservation?": true, 
  "api_version": 2
}
-->
<rspec type="manifest" xmlns="http://www.geni.net/resources/rspec/3" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1" xmlns:jacks="http://www.protogeni.net/resources/rspec/ext/jacks/1" xmlns:ns2="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/" xmlns:ns3="http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/slice-info/1" xmlns:ns4="http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/sliver-info/1" xmlns:ns5="http://www.geni.net/resources/rspec/ext/postBootScript/1" xmlns:ns6="http://www.geni.net/resources/rspec/ext/color/2" xmlns:ns7="http://www.geni.net/resources/rspec/ext/storage/1" xmlns:tour="http://www.protogeni.net/resources/rspec/ext/apt-tour/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/manifest.xsd http://hpn.east.isi.edu/rspec/ext/stitch/0.1/ http://hpn.east.isi.edu/rspec/ext/stitch/0.1/stitch-schema.xsd http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/slice-info/1 http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/slice-info/1/slice_info.xsd?format=raw http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/sliver-info/1 http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/sliver-info/1/sliver_info.xsd?format=raw http://www.geni.net/resources/rspec/ext/postBootScript/1 http://www.geni.net/resources/rspec/ext/postBootScript/1/request.xsd http://www.geni.net/resources/rspec/ext/color/2 http://www.geni.net/resources/rspec/ext/color/2/color.xsdhttp://www.geni.net/resources/rspec/ext/storage/1 http://www.geni.net/resources/rspec/ext/storage/1/storage.xsd">
    <node client_id="hadoop-master" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am" xmlns="http://www.geni.net/resources/rspec/3">
        <icon url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/>
        <sliver_type name="XOMedium" xmlns="http://www.geni.net/resources/rspec/3">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3" xmlns="http://www.geni.net/resources/rspec/3"/>
        </sliver_type>
        <hardware_type name="orca-vm-cloud" xmlns="http://www.geni.net/resources/rspec/3"/>
        <services xmlns="http://www.geni.net/resources/rspec/3">
            <execute command="chmod +x /tmp/master.sh; /tmp/master.sh" shell="/bin/sh" xmlns="http://www.geni.net/resources/rspec/3"/>
            <install install_path="/tmp" url="http://geni-images.renci.org/images/GENIWinterCamp/master.sh" xmlns="http://www.geni.net/resources/rspec/3"/>
        </services>
        <interface client_id="interface-0" xmlns="http://www.geni.net/resources/rspec/3">
            <ip address="172.16.1.1" netmask="255.255.255.0" type="ipv4" xmlns="http://www.geni.net/resources/rspec/3"/>
        </interface>
    </node>
    <node client_id="hadoop-worker-0" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am" xmlns="http://www.geni.net/resources/rspec/3">
        <icon url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/>
        <sliver_type name="XOMedium" xmlns="http://www.geni.net/resources/rspec/3">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3" xmlns="http://www.geni.net/resources/rspec/3"/>
        </sliver_type>
        <hardware_type name="orca-vm-cloud" xmlns="http://www.geni.net/resources/rspec/3"/>
        <services xmlns="http://www.geni.net/resources/rspec/3">
            <execute command="chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&quot;link-0&quot;) $hadoop-worker-0.Name() $hadoop-worker-0.IP(&quot;link-0&quot;)" shell="/bin/sh" xmlns="http://www.geni.net/resources/rspec/3"/>
            <install install_path="/tmp" url="http://geni-images.renci.org/images/GENIWinterCamp/worker.sh" xmlns="http://www.geni.net/resources/rspec/3"/>
        </services>
        <interface client_id="interface-1" xmlns="http://www.geni.net/resources/rspec/3">
            <ip address="172.16.1.10" netmask="255.255.255.0" type="ipv4" xmlns="http://www.geni.net/resources/rspec/3"/>
        </interface>
    </node>
    <node client_id="hadoop-worker-1" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am" xmlns="http://www.geni.net/resources/rspec/3">
        <icon url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/>
        <sliver_type name="XOMedium" xmlns="http://www.geni.net/resources/rspec/3">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3" xmlns="http://www.geni.net/resources/rspec/3"/>
        </sliver_type>
        <hardware_type name="orca-vm-cloud" xmlns="http://www.geni.net/resources/rspec/3"/>
        <services xmlns="http://www.geni.net/resources/rspec/3">
            <execute command="chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&quot;link-0&quot;) $hadoop-worker-1.Name() $hadoop-worker-1.IP(&quot;link-0&quot;)" shell="/bin/sh" xmlns="http://www.geni.net/resources/rspec/3"/>
            <install install_path="/tmp" url="http://geni-images.renci.org/images/GENIWinterCamp/worker.sh " xmlns="http://www.geni.net/resources/rspec/3"/>
        </services>
        <interface client_id="interface-3" xmlns="http://www.geni.net/resources/rspec/3">
            <ip address="172.16.1.11" netmask="255.255.255.0" type="ipv4" xmlns="http://www.geni.net/resources/rspec/3"/>
        </interface>
    </node>
    <node client_id="hadoop-worker-2" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am" xmlns="http://www.geni.net/resources/rspec/3">
        <icon url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/>
        <sliver_type name="XOMedium" xmlns="http://www.geni.net/resources/rspec/3">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3" xmlns="http://www.geni.net/resources/rspec/3"/>
        </sliver_type>
        <hardware_type name="orca-vm-cloud" xmlns="http://www.geni.net/resources/rspec/3"/>
        <services xmlns="http://www.geni.net/resources/rspec/3">
            <execute command="chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&quot;link-0&quot;) $hadoop-worker-2.Name() $hadoop-worker-2.IP(&quot;link-0&quot;)" shell="/bin/sh" xmlns="http://www.geni.net/resources/rspec/3"/>
            <install install_path="/tmp" url=" http://geni-images.renci.org/images/GENIWinterCamp/worker.sh " xmlns="http://www.geni.net/resources/rspec/3"/>
        </services>
        <interface client_id="interface-4" xmlns="http://www.geni.net/resources/rspec/3">
            <ip address="172.16.1.12" netmask="255.255.255.0" type="ipv4" xmlns="http://www.geni.net/resources/rspec/3"/>
        </interface>
    </node>
    <node client_id="hadoop-worker-3" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am" xmlns="http://www.geni.net/resources/rspec/3">
        <icon url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/>
        <sliver_type name="XOMedium" xmlns="http://www.geni.net/resources/rspec/3">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3" xmlns="http://www.geni.net/resources/rspec/3"/>
        </sliver_type>
        <hardware_type name="orca-vm-cloud" xmlns="http://www.geni.net/resources/rspec/3"/>
        <services xmlns="http://www.geni.net/resources/rspec/3">
            <execute command="chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&quot;link-0&quot;) $hadoop-worker-3.Name() $hadoop-worker-3.IP(&quot;link-0&quot;)" shell="/bin/sh" xmlns="http://www.geni.net/resources/rspec/3"/>
            <install install_path="/tmp" url="http://geni-images.renci.org/images/GENIWinterCamp/worker.sh " xmlns="http://www.geni.net/resources/rspec/3"/>
        </services>
        <interface client_id="interface-2" xmlns="http://www.geni.net/resources/rspec/3">
            <ip address="172.16.1.13" netmask="255.255.255.0" type="ipv4" xmlns="http://www.geni.net/resources/rspec/3"/>
        </interface>
    </node>
    <node client_id="hadoop-worker-4" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am" xmlns="http://www.geni.net/resources/rspec/3">
        <icon url="https://portal.geni.net/images/EG-VM-noTxt-centered.svg" xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1"/>
        <sliver_type name="XOMedium" xmlns="http://www.geni.net/resources/rspec/3">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3" xmlns="http://www.geni.net/resources/rspec/3"/>
        </sliver_type>
        <hardware_type name="orca-vm-cloud" xmlns="http://www.geni.net/resources/rspec/3"/>
        <services xmlns="http://www.geni.net/resources/rspec/3">
            <execute command="chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&quot;link-0&quot;) $hadoop-worker-4.Name() $hadoop-worker-4.IP(&quot;link-0&quot;)" shell="/bin/sh" xmlns="http://www.geni.net/resources/rspec/3"/>
            <install install_path="/tmp" url="http://geni-images.renci.org/images/GENIWinterCamp/worker.sh " xmlns="http://www.geni.net/resources/rspec/3"/>
        </services>
        <interface client_id="interface-5" xmlns="http://www.geni.net/resources/rspec/3">
            <ip address="172.16.1.14" netmask="255.255.255.0" type="ipv4" xmlns="http://www.geni.net/resources/rspec/3"/>
        </interface>
    </node>
    <link client_id="link-0" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:link-0" vlantag="unknown">
        <interface_ref client_id="interface-3"/>
        <property capacity="20480000" dest_id="interface-4" source_id="interface-3"/>
        <property capacity="20480000" dest_id="interface-5" source_id="interface-3"/>
        <property capacity="20480000" dest_id="interface-1" source_id="interface-3"/>
        <property capacity="20480000" dest_id="interface-0" source_id="interface-3"/>
        <property capacity="20480000" dest_id="interface-2" source_id="interface-3"/>
        <interface_ref client_id="interface-4"/>
        <property capacity="20480000" dest_id="interface-3" source_id="interface-4"/>
        <property capacity="20480000" dest_id="interface-5" source_id="interface-4"/>
        <property capacity="20480000" dest_id="interface-1" source_id="interface-4"/>
        <property capacity="20480000" dest_id="interface-0" source_id="interface-4"/>
        <property capacity="20480000" dest_id="interface-2" source_id="interface-4"/>
        <interface_ref client_id="interface-5"/>
        <property capacity="20480000" dest_id="interface-3" source_id="interface-5"/>
        <property capacity="20480000" dest_id="interface-4" source_id="interface-5"/>
        <property capacity="20480000" dest_id="interface-1" source_id="interface-5"/>
        <property capacity="20480000" dest_id="interface-0" source_id="interface-5"/>
        <property capacity="20480000" dest_id="interface-2" source_id="interface-5"/>
        <interface_ref client_id="interface-1"/>
        <property capacity="20480000" dest_id="interface-3" source_id="interface-1"/>
        <property capacity="20480000" dest_id="interface-4" source_id="interface-1"/>
        <property capacity="20480000" dest_id="interface-5" source_id="interface-1"/>
        <property capacity="20480000" dest_id="interface-0" source_id="interface-1"/>
        <property capacity="20480000" dest_id="interface-2" source_id="interface-1"/>
        <interface_ref client_id="interface-0"/>
        <property capacity="20480000" dest_id="interface-3" source_id="interface-0"/>
        <property capacity="20480000" dest_id="interface-4" source_id="interface-0"/>
        <property capacity="20480000" dest_id="interface-5" source_id="interface-0"/>
        <property capacity="20480000" dest_id="interface-1" source_id="interface-0"/>
        <property capacity="20480000" dest_id="interface-2" source_id="interface-0"/>
        <interface_ref client_id="interface-2"/>
        <property capacity="20480000" dest_id="interface-3" source_id="interface-2"/>
        <property capacity="20480000" dest_id="interface-4" source_id="interface-2"/>
        <property capacity="20480000" dest_id="interface-5" source_id="interface-2"/>
        <property capacity="20480000" dest_id="interface-1" source_id="interface-2"/>
        <property capacity="20480000" dest_id="interface-0" source_id="interface-2"/>
        <component_manager name="urn:publicid:IDN+exogeni.net:slNet+authority+am"/>
        <component_manager name="urn:publicid:IDN+exogeni.net:ion+authority+am"/>
        <component_manager name="urn:publicid:IDN+exogeni.net:uflNet+authority+am"/>
        <component_manager name="urn:publicid:IDN+exogeni.net:slvmsite+authority+am"/>
        <component_manager name="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am"/>
    </link>
    <node client_id="hadoop-worker-4/0" component_id="urn:publicid:IDN+exogeni.net:slvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-worker-4:0">
        <location country="unknown" latitude="42.05286" longitude="-87.681564"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh ` http://geni-images.renci.org/images/GENIWinterCamp/worker.sh 
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl http://geni-images.renci.org/images/GENIWinterCamp/worker.sh  &amp;gt; `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh `
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&amp;quot;link-0&amp;quot;) $hadoop-worker-4.Name() $hadoop-worker-4.IP(&amp;quot;link-0&amp;quot;)\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-5">
            <ip address="172.16.1.14/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creation_time="2015-05-29T12:21:39.000-04:00" creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" expiration_time="2015-06-04T12:11:38.000-04:00" start_time="2015-05-29T12:21:39.000-04:00" state="configuring"/>
    </node>
    <node client_id="hadoop-worker-1/0" component_id="urn:publicid:IDN+exogeni.net:slvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-worker-1:0">
        <location country="unknown" latitude="42.05286" longitude="-87.681564"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh ` http://geni-images.renci.org/images/GENIWinterCamp/worker.sh 
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl http://geni-images.renci.org/images/GENIWinterCamp/worker.sh  &amp;gt; `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh `
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&amp;quot;link-0&amp;quot;) $hadoop-worker-1.Name() $hadoop-worker-1.IP(&amp;quot;link-0&amp;quot;)\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-3">
            <ip address="172.16.1.11/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creation_time="2015-05-29T12:21:39.000-04:00" creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" expiration_time="2015-06-04T12:11:38.000-04:00" start_time="2015-05-29T12:21:39.000-04:00" state="configuring"/>
    </node>
    <node client_id="hadoop-worker-3/0" component_id="urn:publicid:IDN+exogeni.net:uflvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-worker-3:0">
        <location country="unknown" latitude="29.64171" longitude="-82.346214"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh ` http://geni-images.renci.org/images/GENIWinterCamp/worker.sh 
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl http://geni-images.renci.org/images/GENIWinterCamp/worker.sh  &amp;gt; `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh `
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&amp;quot;link-0&amp;quot;) $hadoop-worker-3.Name() $hadoop-worker-3.IP(&amp;quot;link-0&amp;quot;)\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-2">
            <ip address="172.16.1.13/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creation_time="2015-05-29T12:21:39.000-04:00" creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" expiration_time="2015-06-04T12:11:38.000-04:00" start_time="2015-05-29T12:21:39.000-04:00" state="configuring"/>
    </node>
    <node client_id="hadoop-master/0" component_id="urn:publicid:IDN+exogeni.net:uflvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-master:0">
        <location country="unknown" latitude="29.64171" longitude="-82.346214"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename http://geni-images.renci.org/images/GENIWinterCamp/master.sh` http://geni-images.renci.org/images/GENIWinterCamp/master.sh
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl http://geni-images.renci.org/images/GENIWinterCamp/master.sh &amp;gt; `basename http://geni-images.renci.org/images/GENIWinterCamp/master.sh`
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/master.sh; /tmp/master.sh\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-0">
            <ip address="172.16.1.1/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creation_time="2015-05-29T12:21:39.000-04:00" creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" expiration_time="2015-06-04T12:11:38.000-04:00" start_time="2015-05-29T12:21:39.000-04:00" state="configuring"/>
    </node>
    <node client_id="hadoop-worker-2/0" component_id="urn:publicid:IDN+exogeni.net:slvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-worker-2:0">
        <location country="unknown" latitude="42.05286" longitude="-87.681564"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename  http://geni-images.renci.org/images/GENIWinterCamp/worker.sh `  http://geni-images.renci.org/images/GENIWinterCamp/worker.sh 
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl  http://geni-images.renci.org/images/GENIWinterCamp/worker.sh  &amp;gt; `basename  http://geni-images.renci.org/images/GENIWinterCamp/worker.sh `
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&amp;quot;link-0&amp;quot;) $hadoop-worker-2.Name() $hadoop-worker-2.IP(&amp;quot;link-0&amp;quot;)\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-4">
            <ip address="172.16.1.12/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creation_time="2015-05-29T12:21:39.000-04:00" creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" expiration_time="2015-06-04T12:11:38.000-04:00" start_time="2015-05-29T12:21:39.000-04:00" state="configuring"/>
    </node>
    <node client_id="hadoop-worker-0/0" component_id="urn:publicid:IDN+exogeni.net:uflvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-worker-0:0">
        <location country="unknown" latitude="29.64171" longitude="-82.346214"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh` http://geni-images.renci.org/images/GENIWinterCamp/worker.sh
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl http://geni-images.renci.org/images/GENIWinterCamp/worker.sh &amp;gt; `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh`
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&amp;quot;link-0&amp;quot;) $hadoop-worker-0.Name() $hadoop-worker-0.IP(&amp;quot;link-0&amp;quot;)\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-1">
            <ip address="172.16.1.10/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creation_time="2015-05-29T12:21:39.000-04:00" creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" expiration_time="2015-06-04T12:11:38.000-04:00" start_time="2015-05-29T12:21:39.000-04:00" state="configuring"/>
    </node>
    <ns3:geni_slice_info state="configuring" urn="urn:publicid:IDN+ch.geni.net:GREESC15+slice+Project-may29Final" uuid="0864bd0a-5b5a-48fb-853d-8b6dd43503ef">
        <!--Copied from <Aggregate eg-sm>-->
    </ns3:geni_slice_info>
</rspec>

Follow-on manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <!-- Reserved resources for:
    Slice: urn:publicid:IDN+ch.geni.net:GREESC15+slice+Project-may29Final
    at AM:
    URN: urn:publicid:IDN+exogeni.net+authority+am
    URL: https://geni.renci.org:11443/orca/xmlrpc
 -->

<rspec type="manifest" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/manifest.xsd http://hpn.east.isi.edu/rspec/ext/stitch/0.1/ http://hpn.east.isi.edu/rspec/ext/stitch/0.1/stitch-schema.xsd http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/slice-info/1 http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/slice-info/1/slice_info.xsd?format=raw http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/sliver-info/1 http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/sliver-info/1/sliver_info.xsd?format=raw http://www.geni.net/resources/rspec/ext/postBootScript/1 http://www.geni.net/resources/rspec/ext/postBootScript/1/request.xsd http://www.geni.net/resources/rspec/ext/color/2 http://www.geni.net/resources/rspec/ext/color/2/color.xsdhttp://www.geni.net/resources/rspec/ext/storage/1 http://www.geni.net/resources/rspec/ext/storage/1/storage.xsd" xmlns:ns2="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/" xmlns="http://www.geni.net/resources/rspec/3" xmlns:ns4="http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/sliver-info/1" xmlns:ns3="http://groups.geni.net/exogeni/attachment/wiki/RspecExtensions/slice-info/1" xmlns:ns5="http://www.geni.net/resources/rspec/ext/postBootScript/1" xmlns:ns6="http://www.geni.net/resources/rspec/ext/color/2" xmlns:ns7="http://www.geni.net/resources/rspec/ext/storage/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <node client_id="hadoop-worker-4/0" component_id="urn:publicid:IDN+exogeni.net:slvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-worker-4:0">
        <location country="unknown" longitude="-87.681564" latitude="42.05286"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <login authentication="ssh-keys" hostname="165.124.159.82" port="22" username="dbhat"/>
            <login authentication="ssh-keys" hostname="165.124.159.82" port="22" username="mzink"/>
            <login authentication="ssh-keys" hostname="165.124.159.82" port="22" username="vkgg3"/>
            <login authentication="ssh-keys" hostname="165.124.159.82" port="22" username="agosain"/>
            <login authentication="ssh-keys" hostname="165.124.159.82" port="22" username="nriga"/>
            <login authentication="ssh-keys" hostname="165.124.159.82" port="22" username="vthomas"/>
            <login authentication="ssh-keys" hostname="165.124.159.82" port="22" username="sedwards"/>
            <login authentication="ssh-keys" hostname="165.124.159.82" port="22" username="root"/>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh ` http://geni-images.renci.org/images/GENIWinterCamp/worker.sh 
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl http://geni-images.renci.org/images/GENIWinterCamp/worker.sh  &amp;gt; `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh `
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&amp;quot;link-0&amp;quot;) $hadoop-worker-4.Name() $hadoop-worker-4.IP(&amp;quot;link-0&amp;quot;)\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-5">
            <ip address="172.16.1.14/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" creation_time="2015-05-29T16:21:39.000Z" expiration_time="2015-06-04T16:11:38.000Z" start_time="2015-05-29T16:21:39.000Z" state="ready" resource_id="sl-w3:686e0f39-2195-4a52-8485-483d4e38bb3c"/>
    </node>
    <node client_id="hadoop-worker-1/0" component_id="urn:publicid:IDN+exogeni.net:slvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-worker-1:0">
        <location country="unknown" longitude="-87.681564" latitude="42.05286"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <login authentication="ssh-keys" hostname="165.124.159.81" port="22" username="dbhat"/>
            <login authentication="ssh-keys" hostname="165.124.159.81" port="22" username="mzink"/>
            <login authentication="ssh-keys" hostname="165.124.159.81" port="22" username="vkgg3"/>
            <login authentication="ssh-keys" hostname="165.124.159.81" port="22" username="agosain"/>
            <login authentication="ssh-keys" hostname="165.124.159.81" port="22" username="nriga"/>
            <login authentication="ssh-keys" hostname="165.124.159.81" port="22" username="vthomas"/>
            <login authentication="ssh-keys" hostname="165.124.159.81" port="22" username="sedwards"/>
            <login authentication="ssh-keys" hostname="165.124.159.81" port="22" username="root"/>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh ` http://geni-images.renci.org/images/GENIWinterCamp/worker.sh 
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl http://geni-images.renci.org/images/GENIWinterCamp/worker.sh  &amp;gt; `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh `
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&amp;quot;link-0&amp;quot;) $hadoop-worker-1.Name() $hadoop-worker-1.IP(&amp;quot;link-0&amp;quot;)\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-3">
            <ip address="172.16.1.11/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" creation_time="2015-05-29T16:21:39.000Z" expiration_time="2015-06-04T16:11:38.000Z" start_time="2015-05-29T16:21:39.000Z" state="ready" resource_id="sl-w2:23d758fa-7d84-4306-8ff4-3ae659381bd9"/>
    </node>
    <node client_id="hadoop-worker-3/0" component_id="urn:publicid:IDN+exogeni.net:uflvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-worker-3:0">
        <location country="unknown" longitude="-82.346214" latitude="29.64171"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <login authentication="ssh-keys" hostname="128.227.10.42" port="22" username="dbhat"/>
            <login authentication="ssh-keys" hostname="128.227.10.42" port="22" username="mzink"/>
            <login authentication="ssh-keys" hostname="128.227.10.42" port="22" username="vkgg3"/>
            <login authentication="ssh-keys" hostname="128.227.10.42" port="22" username="agosain"/>
            <login authentication="ssh-keys" hostname="128.227.10.42" port="22" username="nriga"/>
            <login authentication="ssh-keys" hostname="128.227.10.42" port="22" username="vthomas"/>
            <login authentication="ssh-keys" hostname="128.227.10.42" port="22" username="sedwards"/>
            <login authentication="ssh-keys" hostname="128.227.10.42" port="22" username="root"/>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh ` http://geni-images.renci.org/images/GENIWinterCamp/worker.sh 
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl http://geni-images.renci.org/images/GENIWinterCamp/worker.sh  &amp;gt; `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh `
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&amp;quot;link-0&amp;quot;) $hadoop-worker-3.Name() $hadoop-worker-3.IP(&amp;quot;link-0&amp;quot;)\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-2">
            <ip address="172.16.1.13/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" creation_time="2015-05-29T16:21:39.000Z" expiration_time="2015-06-04T16:11:38.000Z" start_time="2015-05-29T16:21:39.000Z" state="ready" resource_id="ufl-w1:b2e1197d-ee8a-421d-a65e-e8ab7ce151f8"/>
    </node>
    <node client_id="hadoop-master/0" component_id="urn:publicid:IDN+exogeni.net:uflvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-master:0">
        <location country="unknown" longitude="-82.346214" latitude="29.64171"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <login authentication="ssh-keys" hostname="128.227.10.41" port="22" username="dbhat"/>
            <login authentication="ssh-keys" hostname="128.227.10.41" port="22" username="mzink"/>
            <login authentication="ssh-keys" hostname="128.227.10.41" port="22" username="vkgg3"/>
            <login authentication="ssh-keys" hostname="128.227.10.41" port="22" username="agosain"/>
            <login authentication="ssh-keys" hostname="128.227.10.41" port="22" username="nriga"/>
            <login authentication="ssh-keys" hostname="128.227.10.41" port="22" username="vthomas"/>
            <login authentication="ssh-keys" hostname="128.227.10.41" port="22" username="sedwards"/>
            <login authentication="ssh-keys" hostname="128.227.10.41" port="22" username="root"/>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename http://geni-images.renci.org/images/GENIWinterCamp/master.sh` http://geni-images.renci.org/images/GENIWinterCamp/master.sh
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl http://geni-images.renci.org/images/GENIWinterCamp/master.sh &amp;gt; `basename http://geni-images.renci.org/images/GENIWinterCamp/master.sh`
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/master.sh; /tmp/master.sh\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-0">
            <ip address="172.16.1.1/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" creation_time="2015-05-29T16:21:39.000Z" expiration_time="2015-06-04T16:11:38.000Z" start_time="2015-05-29T16:21:39.000Z" state="ready" resource_id="ufl-w6:120cc87e-37a5-4998-bd8e-a3abeaecf5ed"/>
    </node>
    <node client_id="hadoop-worker-2/0" component_id="urn:publicid:IDN+exogeni.net:slvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:slvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-worker-2:0">
        <location country="unknown" longitude="-87.681564" latitude="42.05286"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <login authentication="ssh-keys" hostname="165.124.159.83" port="22" username="dbhat"/>
            <login authentication="ssh-keys" hostname="165.124.159.83" port="22" username="mzink"/>
            <login authentication="ssh-keys" hostname="165.124.159.83" port="22" username="vkgg3"/>
            <login authentication="ssh-keys" hostname="165.124.159.83" port="22" username="agosain"/>
            <login authentication="ssh-keys" hostname="165.124.159.83" port="22" username="nriga"/>
            <login authentication="ssh-keys" hostname="165.124.159.83" port="22" username="vthomas"/>
            <login authentication="ssh-keys" hostname="165.124.159.83" port="22" username="sedwards"/>
            <login authentication="ssh-keys" hostname="165.124.159.83" port="22" username="root"/>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename  http://geni-images.renci.org/images/GENIWinterCamp/worker.sh `  http://geni-images.renci.org/images/GENIWinterCamp/worker.sh 
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl  http://geni-images.renci.org/images/GENIWinterCamp/worker.sh  &amp;gt; `basename  http://geni-images.renci.org/images/GENIWinterCamp/worker.sh `
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&amp;quot;link-0&amp;quot;) $hadoop-worker-2.Name() $hadoop-worker-2.IP(&amp;quot;link-0&amp;quot;)\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-4">
            <ip address="172.16.1.12/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" creation_time="2015-05-29T16:21:39.000Z" expiration_time="2015-06-04T16:11:38.000Z" start_time="2015-05-29T16:21:39.000Z" state="ready" resource_id="sl-w8:8ed99490-a201-487c-bf59-a15bcc50e5af"/>
    </node>
    <node client_id="hadoop-worker-0/0" component_id="urn:publicid:IDN+exogeni.net:uflvmsite+node+orca-vm-cloud" component_manager_id="urn:publicid:IDN+exogeni.net:uflvmsite+authority+am" component_name="orca-vm-cloud" exclusive="false" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:hadoop-worker-0:0">
        <location country="unknown" longitude="-82.346214" latitude="29.64171"/>
        <sliver_type name="xo.medium">
            <disk_image name="http://geni-images.renci.org/images/GENIWinterCamp/images/gwc-hadoop.v0.4a.xml" version="16ff128df4cf10f2472a8d20796146bcd5a5ddc3"/>
        </sliver_type>
        <services>
            <login authentication="ssh-keys" hostname="128.227.10.64" port="22" username="dbhat"/>
            <login authentication="ssh-keys" hostname="128.227.10.64" port="22" username="mzink"/>
            <login authentication="ssh-keys" hostname="128.227.10.64" port="22" username="vkgg3"/>
            <login authentication="ssh-keys" hostname="128.227.10.64" port="22" username="agosain"/>
            <login authentication="ssh-keys" hostname="128.227.10.64" port="22" username="nriga"/>
            <login authentication="ssh-keys" hostname="128.227.10.64" port="22" username="vthomas"/>
            <login authentication="ssh-keys" hostname="128.227.10.64" port="22" username="sedwards"/>
            <login authentication="ssh-keys" hostname="128.227.10.64" port="22" username="root"/>
            <ns5:services_post_boot_script type="velocity">#!/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&amp;gt;/dev/null` ]; then
  wget -q -O `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh` http://geni-images.renci.org/images/GENIWinterCamp/worker.sh
else if [ -x `which curl 2&amp;gt;/dev/null` ]; then
  curl http://geni-images.renci.org/images/GENIWinterCamp/worker.sh &amp;gt; `basename http://geni-images.renci.org/images/GENIWinterCamp/worker.sh`
fi
fi
eval &amp;quot;/bin/sh -c \&amp;quot;chmod +x /tmp/worker.sh; /tmp/worker.sh $hadoop-master.Name() $hadoop-master.IP(&amp;quot;link-0&amp;quot;) $hadoop-worker-0.Name() $hadoop-worker-0.IP(&amp;quot;link-0&amp;quot;)\&amp;quot;&amp;quot;
</ns5:services_post_boot_script>
        </services>
        <interface client_id="interface-1">
            <ip address="172.16.1.10/24" netmask="255.255.255.0" type="ipv4"/>
        </interface>
        <ns4:geni_sliver_info creator_urn="[email protected], urn:publicid:IDN+ch.geni.net+user+vkgg3" creation_time="2015-05-29T16:21:39.000Z" expiration_time="2015-06-04T16:11:38.000Z" start_time="2015-05-29T16:21:39.000Z" state="ready" resource_id="ufl-w8:8ca4b36b-5c9a-4212-8fdd-14d31b9fd4e6"/>
    </node>
    <link client_id="link-0" sliver_id="urn:publicid:IDN+exogeni.net+sliver+c811cc45-7ad8-4360-aafb-e7c888195c16:link-0" vlantag="unknown">
        <interface_ref client_id="interface-3"/>
        <property source_id="interface-3" dest_id="interface-4" capacity="20480000"/>
        <property source_id="interface-3" dest_id="interface-5" capacity="20480000"/>
        <property source_id="interface-3" dest_id="interface-1" capacity="20480000"/>
        <property source_id="interface-3" dest_id="interface-0" capacity="20480000"/>
        <property source_id="interface-3" dest_id="interface-2" capacity="20480000"/>
        <interface_ref client_id="interface-4"/>
        <property source_id="interface-4" dest_id="interface-3" capacity="20480000"/>
        <property source_id="interface-4" dest_id="interface-5" capacity="20480000"/>
        <property source_id="interface-4" dest_id="interface-1" capacity="20480000"/>
        <property source_id="interface-4" dest_id="interface-0" capacity="20480000"/>
        <property source_id="interface-4" dest_id="interface-2" capacity="20480000"/>
        <interface_ref client_id="interface-5"/>
        <property source_id="interface-5" dest_id="interface-3" capacity="20480000"/>
        <property source_id="interface-5" dest_id="interface-4" capacity="20480000"/>
        <property source_id="interface-5" dest_id="interface-1" capacity="20480000"/>
        <property source_id="interface-5" dest_id="interface-0" capacity="20480000"/>
        <property source_id="interface-5" dest_id="interface-2" capacity="20480000"/>
        <interface_ref client_id="interface-1"/>
        <property source_id="interface-1" dest_id="interface-3" capacity="20480000"/>
        <property source_id="interface-1" dest_id="interface-4" capacity="20480000"/>
        <property source_id="interface-1" dest_id="interface-5" capacity="20480000"/>
        <property source_id="interface-1" dest_id="interface-0" capacity="20480000"/>
        <property source_id="interface-1" dest_id="interface-2" capacity="20480000"/>
        <interface_ref client_id="interface-0"/>
        <property source_id="interface-0" dest_id="interface-3" capacity="20480000"/>
        <property source_id="interface-0" dest_id="interface-4" capacity="20480000"/>
        <property source_id="interface-0" dest_id="interface-5" capacity="20480000"/>
        <property source_id="interface-0" dest_id="interface-1" capacity="20480000"/>
        <property source_id="interface-0" dest_id="interface-2" capacity="20480000"/>
        <interface_ref client_id="interface-2"/>
        <property source_id="interface-2" dest_id="interface-3" capacity="20480000"/>
        <property source_id="interface-2" dest_id="interface-4" capacity="20480000"/>
        <property source_id="interface-2" dest_id="interface-5" capacity="20480000"/>
        <property source_id="interface-2" dest_id="interface-1" capacity="20480000"/>
        <property source_id="interface-2" dest_id="interface-0" capacity="20480000"/>
        <component_manager name="urn:publicid:IDN+exogeni.net:slNet+authority+am"/>
        <component_manager name="urn:publicid:IDN+exogeni.net:ion+authority+am"/>
        <component_manager name="urn:publicid:IDN+exogeni.net:uflNet+authority+am"/>
    </link>
    <ns2:stitching lastUpdateTime="Fri May 29 16:42:01 UTC 2015">
        <ns2:path id="link-0">
            <ns2:hop id="hop1">
                <ns2:link id="urn:publicid:IDN+exogeni.net:slNet+interface+slNet:Domain:vlan:05c15292-7f6f-4a87-aecd-17b740762499:vlan">
                    <ns2:trafficEngineeringMetric>10</ns2:trafficEngineeringMetric>
                    <ns2:capacity>20480000</ns2:capacity>
                    <ns2:switchingCapabilityDescriptor>
                        <ns2:switchingcapType>l2sc</ns2:switchingcapType>
                        <ns2:encodingType>ethernet</ns2:encodingType>
                        <ns2:switchingCapabilitySpecificInfo>
                            <ns2:switchingCapabilitySpecificInfo_L2sc>
                                <ns2:vlanRangeAvailability>1-4096</ns2:vlanRangeAvailability>
                                <ns2:suggestedVLANRange>1701</ns2:suggestedVLANRange>
                                <ns2:vlanTranslation>false</ns2:vlanTranslation>
                            </ns2:switchingCapabilitySpecificInfo_L2sc>
                        </ns2:switchingCapabilitySpecificInfo>
                    </ns2:switchingCapabilityDescriptor>
                </ns2:link>
                <ns2:nextHop>hop2</ns2:nextHop>
            </ns2:hop>
            <ns2:hop id="hop2">
                <ns2:link id="urn:publicid:IDN+exogeni.net:ion+interface+ion:Domain:vlan:0ce3e30a-e2e6-47ab-9c3b-b297ef59d0fa:vlan">
                    <ns2:trafficEngineeringMetric>10</ns2:trafficEngineeringMetric>
                    <ns2:capacity>20480000</ns2:capacity>
                    <ns2:switchingCapabilityDescriptor>
                        <ns2:switchingcapType>l2sc</ns2:switchingcapType>
                        <ns2:encodingType>ethernet</ns2:encodingType>
                        <ns2:switchingCapabilitySpecificInfo>
                            <ns2:switchingCapabilitySpecificInfo_L2sc>
                                <ns2:vlanRangeAvailability>1-4096</ns2:vlanRangeAvailability>
                                <ns2:suggestedVLANRange>275</ns2:suggestedVLANRange>
                                <ns2:vlanTranslation>false</ns2:vlanTranslation>
                            </ns2:switchingCapabilitySpecificInfo_L2sc>
                        </ns2:switchingCapabilitySpecificInfo>
                    </ns2:switchingCapabilityDescriptor>
                </ns2:link>
                <ns2:nextHop>hop3</ns2:nextHop>
            </ns2:hop>
            <ns2:hop id="hop3">
                <ns2:link id="urn:publicid:IDN+exogeni.net:uflNet+interface+uflNet:Domain:vlan:9f1c7ed2-bad7-4362-a001-c9f6cf3bf6c8:vlan">
                    <ns2:trafficEngineeringMetric>10</ns2:trafficEngineeringMetric>
                    <ns2:capacity>20480000</ns2:capacity>
                    <ns2:switchingCapabilityDescriptor>
                        <ns2:switchingcapType>l2sc</ns2:switchingcapType>
                        <ns2:encodingType>ethernet</ns2:encodingType>
                        <ns2:switchingCapabilitySpecificInfo>
                            <ns2:switchingCapabilitySpecificInfo_L2sc>
                                <ns2:vlanRangeAvailability>1-4096</ns2:vlanRangeAvailability>
                                <ns2:suggestedVLANRange>1410</ns2:suggestedVLANRange>
                                <ns2:vlanTranslation>false</ns2:vlanTranslation>
                            </ns2:switchingCapabilitySpecificInfo_L2sc>
                        </ns2:switchingCapabilitySpecificInfo>
                    </ns2:switchingCapabilityDescriptor>
                </ns2:link>
                <ns2:nextHop>null</ns2:nextHop>
            </ns2:hop>
        </ns2:path>
    </ns2:stitching>
    <ns3:geni_slice_info urn="urn:publicid:IDN+ch.geni.net:GREESC15+slice+Project-may29Final" uuid="0864bd0a-5b5a-48fb-853d-8b6dd43503ef" state="ready"/>
</rspec>

Nodegroup increase stopped working for radii slice

SM, broker would report

f264d9a5-0685-482e-b948-e9d5574566b0 exo-sm
Slice: f4ed8f1c-c0e7-4798-98fa-c6a9ca05a7fa
1 umassvmsite.vm [ closed, nascent]
Notices: Reservation f264d9a5-0685-482e-b948-e9d5574566b0 (Slice radii) is in state [Closed,None]

Last ticket update: Closed while allocating ticket

Logs on SM

/etc/orca/sm-14080/logs/orca.log:2015-11-18 12:52:58,045 [exo-sm] DEBUG orca.exo-sm - Removing failed reservation from the pending list: res: #f264d9a5-0685-482e-b948-e9d5574566b0 slice: radii Failed None rset: units 1 term=[29367128:29367128:29453528]

Logs on Broker

/etc/orca/am+broker-12080/logs/orca.log:2015-11-18 12:52:57,965 [ndl-broker] DEBUG orca.ndl-broker - cycle: 29536878 new ticket request: res: #f264d9a5-0685-482e-b948-e9d5574566b0 slice: radii Nascent Ticketing
/etc/orca/am+broker-12080/logs/orca.log:2015-11-18 12:52:57,969 [ndl-broker] DEBUG orca.ndl-broker - AgentAllocated: units=1 res:res: #f264d9a5-0685-482e-b948-e9d5574566b0 slice: radii Nascent Ticketing term=term=[29367128:29367128:29453528]
/etc/orca/am+broker-12080/logs/orca.log:2015-11-18 12:52:57,969 [ndl-broker] INFO orca.ndl-broker - Broker expiring for cycle 29536878 = res: #f264d9a5-0685-482e-b948-e9d5574566b0 slice: radii Nascent Ticketing ;

It never hits the AM.

Intra-domain bandwidth exhaustion behavior

This may or may not be a bug. I was testing modify by asking for more resources than available.

With nodes, the controller properly rejects if the number of nodes exceeds available. With link bandwidth, I asked for a 100G intra-domain link. The controller accepted it, but then the AM properly rejected it. I think it would be better if the controller rejected it at the start?

This behavior is the same for both modify and create new slice (I tried a new slice with a 100G link with same result). Just wondering why that is.

UAF GENI advertisement uses wrong I2 URN

According to Ali we're advertising sdn-sw.houh.net.internet2.edu:e7/1 instead of

urn:ogf:network:domain=al2s.net.internet2.edu:node=sdn-sw.seat.net.internet2.edu:port=et-1/3/0.0:link=*

Need to correct, but also need information about the GENI VLAN range from UAF (I don't have it). We should time this update to GLIBC rack updates so as not to create an additional down period.

@YufengXin and @mcevik0 and @vjorlikowski

Premature model close in cloudhandler

Still getting premature model close in cloud handler. Looking at the code, line 1115 has not changed in the new fix.

INFO   | jvm 1    | 2015/12/02 14:21:08 | com.hp.hpl.jena.shared.ClosedException: already closed
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at com.hp.hpl.jena.graph.impl.GraphBase.checkOpen(GraphBase.java:66)
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at com.hp.hpl.jena.graph.impl.GraphBase.contains(GraphBase.java:317)
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at com.hp.hpl.jena.graph.GraphUtil.containsNode(GraphUtil.java:110)
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at com.hp.hpl.jena.rdf.model.impl.ModelCom.containsResource(ModelCom.java:1230)
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at com.hp.hpl.jena.ontology.impl.OntModelImpl.getOntResource(OntModelImpl.java:3030)
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at orca.ndl.elements.NetworkElement.getResource(NetworkElement.java:277)
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at orca.embed.cloudembed.controller.CloudHandler.createManifest(CloudHandler.java:1115)
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at orca.embed.cloudembed.controller.ModifyHandler.createManifest(ModifyHandler.java:823)
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at orca.embed.cloudembed.controller.ModifyHandler.modifySlice(ModifyHandler.java:155)
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at orca.embed.workflow.RequestWorkflow.modify(RequestWorkflow.java:237)
INFO   | jvm 1    | 2015/12/02 14:21:08 |       at orca.controllers.xmlrpc.OrcaXmlrpcHandler.modifySlice(OrcaXmlrpcHandler.java:580)

AM Recovery exception with Failed,None (7,1)

2015-11-11 15:46:14,266 [WrapperSimpleAppMain] ERROR orca.ufl-vm-am - Unexpected error while recoverying reservation
orca.util.OrcaException: Unexpected reservation state: state=7 pending=1
        at orca.shirako.kernel.AuthorityReservation.recover(AuthorityReservation.java:742)
        at orca.util.persistence.PersistenceState.recover(PersistenceState.java:368)
        at orca.util.persistence.PersistenceUtils.recover(PersistenceUtils.java:212)
        at orca.util.persistence.PersistenceUtils.recover(PersistenceUtils.java:205)
        at orca.shirako.core.Actor.recoverReservation(Actor.java:782)
        at orca.shirako.core.Actor.recoverReservations(Actor.java:752)
        at orca.shirako.core.Actor.recoverSlice(Actor.java:730)
        at orca.shirako.core.Actor.recoverSlices(Actor.java:699)
        at orca.shirako.core.Actor.recover(Actor.java:677)
        at orca.shirako.container.OrcaContainer.recoverActor(OrcaContainer.java:707)
        at orca.shirako.container.OrcaContainer.recoverActors(OrcaContainer.java:670)
        at orca.shirako.container.OrcaContainer.boot(OrcaContainer.java:351)
        at orca.shirako.container.OrcaContainer.initialize(OrcaContainer.java:246)
        at orca.shirako.container.Globals.start(Globals.java:119)
        at orca.server.OrcaServer.startOrca(OrcaServer.java:112)
        at orca.server.OrcaServer.start(OrcaServer.java:202)
        at orca.server.OrcaServer.main(OrcaServer.java:253)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)

When embedding with unknown compute sliver type no error message returned

In the logs we can see

ERROR controller.orca.controllers.xmlrpc.OrcaXmlrpcHandler - createSlice():
No reservations created for this request; Error:com.hp.hpl.jena.ontology.ConversionException: Cannot convert node http://geni-orca.renci.org/owl/exogeni.owl#emulab-xen to OntClass: it does not have rdf:type owl:Class or equivalent

emulab-xen is an invalid sliver type

Somehow this doesn't make it back to the user though. Instead they see

15:03:26 ERROR:{'output':'Invalid slice urn
urn:publicid:IDN+ch.geni.net:ln-test+slice+eg-ucd-2links',
'code': {'geni_code': 12}}

This is possibly because it is a two-step process that somehow gets compressed into one-step using GENI API?

SM recovery loop

I’ve encountered now a couple of times an issue with recovering the SM that throws an NPE in this function in ReservationClient?. Note the added check whether p.getReservation() returns a null that I added for now - I don’t believe this is the solution, only an NPE fix.
The scenario for recovery is as follows - submit a slice via controller, retrieve a manifest to see that things are ticketed and immediately shut down the SM and then restart (before they go active). After that the SM enters some sort of a loop - throws out a large amount of logging along with NPEs as I described.
After adding this check the code starts throwing NPE elsewhere where it tried to get unit properties of the predecessor (and they are also null).
Here is a link to the log files I collected SM-side (no errors detected elsewhere): https://www.dropbox.com/s/5261ojxn6szcpb5/sm-recovery-logs.tgz?dl=0
Here is the function that first reported the problem:

/**
Redeem predicate: invoked internally to determine if the reservation
should be redeemed. This gives subclasses an opportunity sequence install
configuration actions at the authority side.

If false, the reservation enters a "BlockedRedeem?" sub-state until a
subsequent approveRedeem returns true. When true, the reservation can
manipulate the current reservation's properly lists and attributes to
facilitate configuration. Note that approveRedeem may be polled multiple
times, and should be idempotent.

@return DOCUMENT ME! */
protected boolean approveRedeem() throws Exception {
boolean approved = true;
for (PredecessorState? p : redeemPredecessors.values()) {
// somehow in certain types of recovery (ticketed reservations on SM) 
// we're ending up with getReservation() returning null /ib 08/27/14
if (p.getReservation() == null) {
logger.error("redeem predecessor reservation does not have a reservation object. ignoring it");
continue;
}
if (p.getReservation().isFailed() p.getReservation().isClosed()) {
logger.error("redeem predecessor reservation is in a terminal state. ignoring it: "
+ p.getReservation());
continue;
}
// FIXME: the incoming resources are not applied to the reservation
// until the
// reservation transitions into the Joining state. We must use
// isActiveJoined to make sure
// that prepareRedeem is going to see the units inside the
// predecessor reservation.
if (!p.getReservation().isActiveJoined()) {
approved = false;
break;
}
}
if (approved) {
prepareRedeem();
}
return approved;
}

Sliver modify issues

Two issues observed now

  1. The modify properties from controller/sm don't appear to make it to the AntConfig call
  2. After the first modify fails (because it can't find the right target in the handler, because of the issue 1 above), further modifies are not possible due to

2015-06-16 14:33:44,608-[test-test-topology-embedding-SM]-{ERROR}-orca.test-test-topology-embedding-SM-(Reservation.java:385)-error for reservation
: res: #9fcd70f1-e624-4345-83dc-8b17dd7231ed slice: test-modify1 Failed None rset: units 1 concrete 1 Ticket [units = 1 oldUnits = 1 Slice=test-mo
dify1] term=[1053:1053:87454]: Wrong state to initiate modify lease: Failed
2015-06-16 14:33:44,608-[test-test-topology-embedding-SM]-{ERROR}-orca.test-test-topology-embedding-SM-(Kernel.java:278)-An error occurred during m
odifying lease for reservation #CA48CC6C
orca.util.OrcaException: Wrong state to initiate modify lease: Failed
at orca.shirako.kernel.Reservation.error(Reservation.java:386)
at orca.shirako.kernel.ReservationClient.modifyLease(ReservationClient.java:951)
at orca.shirako.kernel.Kernel.modifyLease(Kernel.java:322)
at orca.shirako.kernel.KernelWrapper.modifyLease(KernelWrapper.java:609)
at orca.shirako.core.ServiceManager.modify(ServiceManager.java:499)
at orca.manage.internal.ClientActorManagementObjectHelper$8.run(ClientActorManagementObjectHelper.java:608)
at orca.shirako.core.Actor$3.process(Actor.java:977)
at orca.shirako.core.Actor.actorMain(Actor.java:377)
at orca.shirako.core.Actor$4.run(Actor.java:1018)
at java.lang.Thread.run(Thread.java:745)
2015-06-16 14:33:44,609-[qtp640231734-23]-{ERROR}-orca.manage.internal.ClientActorManagementObjectHelper-(ClientActorManagementObjectHelper.java:61
4)-modifyReservation
java.lang.RuntimeException: An error occurred during modifying lease for reservation #CA48CC6C
at orca.shirako.kernel.Kernel.error(Kernel.java:279)
at orca.shirako.kernel.Kernel.modifyLease(Kernel.java:330)
at orca.shirako.kernel.KernelWrapper.modifyLease(KernelWrapper.java:609)
at orca.shirako.core.ServiceManager.modify(ServiceManager.java:499)
at orca.manage.internal.ClientActorManagementObjectHelper$8.run(ClientActorManagementObjectHelper.java:608)
at orca.shirako.core.Actor$3.process(Actor.java:977)
at orca.shirako.core.Actor.actorMain(Actor.java:377)
at orca.shirako.core.Actor$4.run(Actor.java:1018)
at java.lang.Thread.run(Thread.java:745)
Caused by: orca.util.OrcaException: Wrong state to initiate modify lease: Failed
at orca.shirako.kernel.Reservation.error(Reservation.java:386)
at orca.shirako.kernel.ReservationClient.modifyLease(ReservationClient.java:951)
at orca.shirako.kernel.Kernel.modifyLease(Kernel.java:322)
... 7 more

That's probably not the right behavior.

Occasional Core Error with large slices

The following error has happened a couple of times when I submitted very large (200+ vms) slices. It seems that it is in the core.

NodeGroup2/47
Failed
Reservation 5c2081ef-6633-4cdc-9ed8-1889d69e5115 (Slice pruth5x50.1) is in state [Failed,None], err=unexpected ticket failure, message=An error occurred during amend reserve for reservation #2A5FC6E5, stack=Exception stack trace: orca.shirako.kernel.Kernel.error(Kernel.java:279) orca.shirako.kernel.Kernel.amendReserve(Kernel.java:95) orca.shirako.kernel.KernelWrapper.handleReserve(KernelWrapper.java:693) orca.shirako.kernel.KernelWrapper.ticket(KernelWrapper.java:1009) orca.shirako.core.ServiceManager.bid(ServiceManager.java:142) orca.shirako.core.ServiceManager.tickHandler(ServiceManager.java:415) orca.shirako.core.Actor.actorTick(Actor.java:428) orca.shirako.core.Actor.access$000(Actor.java:60) orca.shirako.core.Actor$1.process(Actor.java:333) orca.shirako.core.Actor.actorMain(Actor.java:377) orca.shirako.core.Actor$4.run(Actor.java:1018) java.lang.Thread.run(Thread.java:744)

Additional rule file

Add ability to merge admin-specified rules to already existing ones in controller create and modify.

Label loss/recovery issue with stitchports

Relates to modify branch.

This describes two issues that likely have to do with concurrency because it comes up when exercised by GENI stitching which hammers on stitchports more than usual.

  1. PSC has 15 labels available for GENI stitching, but somehow after hammering on it for a while the best they can do is get 9 or 10. The ndl.log then shows the labels are in fact taken in the controller, but according to pequod that's not true on the sm.

One simple way to fix it is to zero out the controller labels prior to resyncing them from SM query in XmlrpcOrcaState.syncTags function (which now is done on a thread, rather than being part of every createSlice call). However it would be nice to understand why the tags are lost in the first place.

  1. After a restart of the controller I started getting these errors no matter which label was used (in a simple slice on PSC local controller with a node linked to stichport):
2015-12-03 22:22:27,773 [qtp868004400-28 - /orca/xmlrpc] DEBUG ndl.logger - Interdomain connection:http://geni-orca.renci.org/owl/1c52f51a-17c3-4fe4-b5e5-723ab3019477#Link1;http://gen
i-orca.renci.org/owl/1c52f51a-17c3-4fe4-b5e5-723ab3019477#StitchPort0:http://geni-orca.renci.org/owl/orca.rdf#Stitching/Domain:http://geni-orca.renci.org/owl/1c52f51a-17c3-4fe4-b5e5-7
23ab3019477#Node1:http://geni-orca.renci.org/owl/pscvmsite.rdf#pscvmsite/Domain
2015-12-03 22:22:27,805 [qtp868004400-28 - /orca/xmlrpc] INFO  ndl.logger - stitching node:[http://geni-orca.renci.org/owl/1c52f51a-17c3-4fe4-b5e5-723ab3019477#StitchPort0, http://gen
i-orca.renci.org/owl/request.owl#inDomain, http://geni-orca.renci.org/owl/orca.rdf#43726a79-e5c7-4626-a93a-3ce74c17b7ff/Stitching/Domain]
2015-12-03 22:22:27,945 [qtp868004400-28 - /orca/xmlrpc] ERROR ndl.logger - Stitching interface doesn't specify the neighboring domain name, may fail the tag mapping!http://geni-orca.
renci.org/owl/pscNet.rdf#PSCNet/IBM/G8264/TenGigabitEthernet/1/1/ethernet/3984
2015-12-03 22:22:27,945 [qtp868004400-28 - /orca/xmlrpc] ERROR ndl.logger - Stitching interface doesn't specify the label!http://geni-orca.renci.org/owl/pscNet.rdf#PSCNet/IBM/G8264/Te
nGigabitEthernet/1/1/ethernet/3984

Request is attached.
request.txt

Manifest end date isn't filled in correctly

After an extend by two weeks that should show slice ending on Nov 24, 2015 in at least one slice I see end date reported through the RDF Manifest as April of 2016. Looking at manifest document I see this

  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/c36b8949-da5d-4dbf-be54-fe262d1af5bb#TermDuration">
    <rdf:type rdf:resource="http://www.w3.org/2006/time#DurationDescription"/>
    <j.7:days rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">30</j.7:days>
    <j.7:hours rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">1214</j.7:hours>
    <j.7:minutes rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">71628</j.7:minutes>
    <j.7:seconds rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">4294990</j.7:seconds>
  </rdf:Description>

which doesn't make sense. In pequod everything looks right. This is only the end date issue in RDF, but it is misleading, because that's what the users see. Perhaps manifest should fill end date based on the latest end date of all reservations in the slice.

Add/Delete whole multipoint link

Note: this might be a Flukes issues.

I understand that modifying interdomain multipoint is not ready. I would be useful if we could modify the slice by adding and removing an entire multipoint network. Right now if you delete an entire interdomain multipoint link it gives an error that seem to be flukes checking the validity of the modify request.

Return netmask with the IP address in manifest

At some point in the future...

Current manifest doesn't contain the assigned netmask. Only the IP address. I would like to have both. Makes the job of auto-iping the modified slice much easier.

Controller recovery bug/TDB corruption

This happens with 'normal' looking slices after recovery:

INFO   | jvm 1    | 2015/11/15 05:17:36 | 2015-11-15 05:17:36,408 [WrapperSimpleAppMain] INFO  controller.orca.controllers.xmlrpc.XmlrpcOrcaState - Recovering slice be4da9cd-d234-4891-8096-7dfe64c1ed03/2 from [[email protected], urn:publicid:IDN+ch.geni.net+user+dnair, urn:uuid:fa763171-59a3-4c74-ac23-681e3ec743ab]
INFO   | jvm 1    | 2015/11/15 05:17:36 | java.lang.NullPointerException
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.tdb.store.DatasetPrefixesTDB.readPrefixMap(DatasetPrefixesTDB.java:174)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.sparql.graph.GraphPrefixesProjection.getNsPrefixMap(GraphPrefixesProjection.java:62)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.tdb.store.DatasetPrefixesTDB.getPrefixMapping(DatasetPrefixesTDB.java:223)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.tdb.store.DatasetPrefixesTDB.getPrefixMapping(DatasetPrefixesTDB.java:214)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.tdb.store.GraphTDB.createPrefixMapping(GraphTDB.java:78)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.graph.impl.GraphBase.getPrefixMapping(GraphBase.java:186)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.rdf.model.impl.ModelCom.getPrefixMapping(ModelCom.java:980)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.rdf.model.impl.ModelCom.withDefaultMappings(ModelCom.java:1024)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.rdf.model.impl.ModelCom.<init>(ModelCom.java:74)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.rdf.model.impl.ModelCom.<init>(ModelCom.java:70)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.rdf.model.ModelFactory.createModelForGraph(ModelFactory.java:176)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.sparql.core.DatasetImpl.graph2model(DatasetImpl.java:271)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at com.hp.hpl.jena.sparql.core.DatasetImpl.getDefaultModel(DatasetImpl.java:103)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.ndl.NdlModel.getModelFromTDB(NdlModel.java:455)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.embed.cloudembed.MappingHandler.<init>(MappingHandler.java:112)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.embed.cloudembed.controller.CloudHandler.<init>(CloudHandler.java:143)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.embed.cloudembed.controller.InterDomainHandler.<init>(InterDomainHandler.java:90)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.embed.cloudembed.controller.MultiPointHandler.<init>(MultiPointHandler.java:72)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.embed.cloudembed.controller.UnboundRequestHandler.<init>(UnboundRequestHandler.java:67)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.embed.cloudembed.controller.ModifyHandler.<init>(ModifyHandler.java:112)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.embed.cloudembed.controller.InterCloudHandler.<init>(InterCloudHandler.java:74)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlrpcControllerSlice.<init>(XmlrpcControllerSlice.java:97)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlrpcOrcaState.recoverSlice(XmlrpcOrcaState.java:551)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlrpcOrcaState.recover(XmlrpcOrcaState.java:514)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlRpcController._recover(XmlRpcController.java:187)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.OrcaController.recover(OrcaController.java:62)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlRpcController.access$100(XmlRpcController.java:23)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlRpcController$ControllerContextListener.start(XmlRpcController.java:163)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlRpcController.start(XmlRpcController.java:145)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlRpcController.main(XmlRpcController.java:192)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at java.lang.reflect.Method.invoke(Unknown Source)
INFO   | jvm 1    | 2015/11/15 05:17:36 | java.lang.RuntimeException: Unable to create TDB IDM database due to NDL error: orca.ndl.NdlException
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlrpcControllerSlice.<init>(XmlrpcControllerSlice.java:109)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlrpcOrcaState.recoverSlice(XmlrpcOrcaState.java:551)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlrpcOrcaState.recover(XmlrpcOrcaState.java:514)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlRpcController._recover(XmlRpcController.java:187)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.OrcaController.recover(OrcaController.java:62)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlRpcController.access$100(XmlRpcController.java:23)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlRpcController$ControllerContextListener.start(XmlRpcController.java:163)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlRpcController.start(XmlRpcController.java:145)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at orca.controllers.xmlrpc.XmlRpcController.main(XmlRpcController.java:192)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at java.lang.reflect.Method.invoke(Unknown Source)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
INFO   | jvm 1    | 2015/11/15 05:17:36 |       at java.lang.Thread.run(Unknown Source)
INFO   | jvm 1    | 2015/11/15 05:17:36 | 2015-11-15 05:17:36,591 [WrapperSimpleAppMain] ERROR controller.orca.controllers.xmlrpc.XmlrpcOrcaState - Unable to recover slice be4da9cd-d234-4891-8096-7dfe64c1ed03/2 due to: java.lang.RuntimeException: Unable to create TDB IDM database due to NDL error: orca.ndl.NdlException

In modify provisioning inter-domain takes longer and longer

Somehow some reservations aren't detected to go active in the slice defer thread and other deferred reservations wait until the timeout expires and proceed anyway, even though the underlying previous reservations have been redeemed and gone active.

Running ORCA in disconnected mode

ORCA does not run properly in a VM completely disconnected from the Internet.

Part of the issue was traced to AM trying to retrieve ben.rdf and ben-dtn.rdf, however wireshark shows some other connections to geni-orca.renci.org (where OWL files are stored), protected by TLS(?). It's not clear what those are doing.

More testing is needed.

Convert manifest model into a request model

Need to be able to take manifest of a slice and turn it into a request (assuming some number of modifications that lead to the latest manifest).

There are at least two ways of achieving that

  1. Writing a ManifestParser class that generates a new Jena model that is the request based on parsing the manifest. Mostly straightforward, except, perhaps, for dealing with inter-domain links
  2. Copying the manifest model and directly manipulating it using inference and queries to transform it into a request. More interesting from semantic perspective.

Need to decide how to proceed.

@YufengXin

Modify topology issue with multiple connections from same site

Scenario is like this:

  1. Create a single node0 at BBN
  2. Add another node1 with link to node0 also at BBN
  3. Add nodegroup0 of 1 node at FIU and connect it to node0 and node1 with two separate paths

Sometimes it can show proper manifest (a triangle). Sometimes one or both branches from nodegroup0 are looped back on itself instead of going to nodes as below. This is not dependent on recovery.

screen shot 2015-11-30 at 2 42 33 pm

Manifest attached (using txt extension to keep github happy, doesn't like rdf)

tangled-manifest.txt

Intermittent delegation failure

2014-09-29 20:02:41,554 [RPC] ERROR orca - An error occurred while performing RPC. Error type=LocalError?
orca.shirako.util.RPCException: orca.shirako.proxies.soapaxis2.SoapAxis?2StubException: An error occurred while obtaining service stub
at orca.shirako.proxies.soapaxis2.SoapAxis?2Return.execute(SoapAxis?2Return.java:73)
at orca.shirako.kernel.RPCManager$RPCExecutor.run(RPCManager.java:808)
at java.util.concurrent.ThreadPoolExecutor?.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor?$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: orca.shirako.proxies.soapaxis2.SoapAxis?2StubException: An error occurred while obtaining service stub
at orca.shirako.proxies.soapaxis2.SoapAxis?2Proxy.getServiceStub(SoapAxis?2Proxy.java:271)
at orca.shirako.proxies.soapaxis2.SoapAxis?2Return.execute(SoapAxis?2Return.java:64)
... 4 more
Caused by: org.apache.axis2.AxisFault?: Two services can not have same name, a service with ActorService?247100307 already exists in the system
at org.apache.axis2.engine.AxisConfiguration?.addServiceGroup(AxisConfiguration?.java:254)
at org.apache.axis2.engine.AxisConfiguration?.addService(AxisConfiguration?.java:206)
at org.apache.axis2.client.ServiceClient?.configureServiceClient(ServiceClient?.java:128)
at org.apache.axis2.client.ServiceClient?.(ServiceClient?.java:114)
at orca.shirako.proxies.soapaxis2.services.ActorServiceStub?.(ActorServiceStub?.java:95)
at orca.shirako.proxies.soapaxis2.StubManager?.createStub(StubManager?.java:110)
at orca.shirako.proxies.soapaxis2.StubManager?.getStub(StubManager?.java:83)
at orca.shirako.proxies.soapaxis2.SoapAxis?2Proxy.getServiceStub(SoapAxis?2Proxy.java:269)
... 5 more

NLR reservations not closed

Under certain circumstances, the close function in the control policy was not called for a NLR reservation, which caused tags not released on the control side, which ultimately caused the "passed in tag not found" exception in the controller.

From the log, I suspect when the reservation failed due to a handler configuration failure in the switchs, the close() was not invoked? This needs further investigation.

PSC GENI stitching doesn't work

Any idea why this request (already converted to NDL) doesn't work?

<rdf:RDF
    xmlns:kansei="http://geni-orca.renci.org/owl/kansei.owl#"
    xmlns:compute="http://geni-orca.renci.org/owl/compute.owl#"
    xmlns:app-color="http://geni-orca.renci.org/owl/app-color.owl#"
    xmlns:ethernet="http://geni-orca.renci.org/owl/ethernet.owl#"
    xmlns:dtn="http://geni-orca.renci.org/owl/dtn.owl#"
    xmlns:time="http://www.w3.org/2006/time#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:openflow="http://geni-orca.renci.org/owl/openflow.owl#"
    xmlns:modify-schema="http://geni-orca.renci.org/owl/modify.owl#"
    xmlns:request="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#"
    xmlns:layer="http://geni-orca.renci.org/owl/layer.owl#"
    xmlns:planetlab="http://geni-orca.renci.org/owl/planetlab.owl#"
    xmlns:geni="http://geni-orca.renci.org/owl/geni.owl#"
    xmlns:request-schema="http://geni-orca.renci.org/owl/request.owl#"
    xmlns:ip4="http://geni-orca.renci.org/owl/ip4.owl#"
    xmlns:orca="http://geni-orca.renci.org/owl/orca.owl#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:eucalyptus="http://geni-orca.renci.org/owl/eucalyptus.owl#"
    xmlns:domain="http://geni-orca.renci.org/owl/domain.owl#"
    xmlns:collections="http://geni-orca.renci.org/owl/collections.owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:ec2="http://geni-orca.renci.org/owl/ec2.owl#"
    xmlns:topology="http://geni-orca.renci.org/owl/topology.owl#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" > 
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/pscNet.rdf#PSCNet/IBM/G8264/TenGigabitEthernet/1/1/ethernet">
    <ethernet:Tagged-Ethernet rdf:resource="http://geni-orca.renci.org/owl/pscNet.rdf#PSCNet/IBM/G8264/TenGigabitEthernet/1/1/ethernet/3987"/>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#Interface"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#ip-192-168-1-1">
    <ip4:netmask>255.255.255.0</ip4:netmask>
    <layer:label_ID>192.168.1.1</layer:label_ID>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/ip4.owl#IPAddress"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/pscvmsite.rdf#pscvmsite/Domain">
    <topology:hasURN rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">urn:publicid:IDN+exogeni.net:pscvmsite+authority+am</topology:hasURN>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#NetworkDomain"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#">
    <collections:element rdf:resource="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#link"/>
    <collections:element rdf:resource="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#eg-psc"/>
    <request-schema:hasTerm rdf:resource="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#Term"/>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/request.owl#Reservation"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#link">
    <layer:bandwidth rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">20480000</layer:bandwidth>
    <topology:hasInterface rdf:resource="http://geni-orca.renci.org/owl/pscNet.rdf#PSCNet/IBM/G8264/TenGigabitEthernet/1/1/ethernet/3987"/>
    <topology:hasInterface rdf:resource="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#eg-psc%3Aif0"/>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#NetworkConnection"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#TermEnd">
    <time:inXSDDateTime rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2015-07-12T14:42:26-04:00</time:inXSDDateTime>
    <rdf:type rdf:resource="http://www.w3.org/2006/time#Instant"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/pscNet.rdf#PSCNet/IBM/G8264/TenGigabitEthernet/1/1/ethernet/3987">
    <layer:label rdf:resource="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#Label-3987"/>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#Interface"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#Term">
    <time:hasEnd rdf:resource="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#TermEnd"/>
    <time:hasBeginning rdf:resource="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#TermBeginning"/>
    <rdf:type rdf:resource="http://www.w3.org/2006/time#Interval"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#2d553fdbca830020d7cf13011399d7210dcefe96">
    <topology:hasURL>http://geni-images.renci.org/images/standard/ubuntu/ub1404-v1.0.3.xml</topology:hasURL>
    <topology:hasGUID>2d553fdbca830020d7cf13011399d7210dcefe96</topology:hasGUID>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/compute.owl#DiskImage"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#eg-psc%3Aif0">
    <ip4:localIPAddress rdf:resource="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#ip-192-168-1-1"/>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#Interface"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#StitchNode0">
    <topology:hasInterface rdf:resource="http://geni-orca.renci.org/owl/pscNet.rdf#PSCNet/IBM/G8264/TenGigabitEthernet/1/1/ethernet/3987"/>
    <request-schema:inDomain rdf:resource="http://geni-orca.renci.org/owl/orca.rdf#Stitching/Domain"/>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#Device"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#TermBeginning">
    <time:inXSDDateTime rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2015-07-06T14:56:48.632-04:00</time:inXSDDateTime>
    <rdf:type rdf:resource="http://www.w3.org/2006/time#Instant"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#Label-3987">
    <layer:label_ID>3987</layer:label_ID>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/layer.owl#Label"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#ig-chich%3Aif0">
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#Interface"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#eg-psc">
    <compute:specificCE rdf:resource="http://geni-orca.renci.org/owl/exogeni.owl#XOSmall"/>
    <domain:hasResourceType rdf:resource="http://geni-orca.renci.org/owl/compute.owl#VM"/>
    <compute:diskImage rdf:resource="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#2d553fdbca830020d7cf13011399d7210dcefe96"/>
    <topology:hasInterface rdf:resource="http://geni-orca.renci.org/owl/798af70a-bb53-4a21-b411-8926177491a5#eg-psc%3Aif0"/>
    <request-schema:inDomain rdf:resource="http://geni-orca.renci.org/owl/pscvmsite.rdf#pscvmsite/Domain"/>
    <rdf:type rdf:resource="http://geni-orca.renci.org/owl/compute.owl#ComputeElement"/>
  </rdf:Description>
</rdf:RDF>

NPE in modify (group resize) after recovery

Also @anriban just to include in the loop

INFO   | jvm 1    | 2016/01/19 13:12:28 | java.lang.NullPointerException
INFO   | jvm 1    | 2016/01/19 13:12:28 |       at orca.ndl.NdlCommons.hasResourceType(NdlCommons.java:1350)
INFO   | jvm 1    | 2016/01/19 13:12:28 |       at orca.ndl.NdlCommons.isStitchingNodeInManifest(NdlCommons.java:2485)
INFO   | jvm 1    | 2016/01/19 13:12:28 |       at orca.embed.cloudembed.controller.ModifyHandler.modifySlice(ModifyHandler.java:163)
INFO   | jvm 1    | 2016/01/19 13:12:28 |       at orca.embed.workflow.RequestWorkflow.modify(RequestWorkflow.java:249)
INFO   | jvm 1    | 2016/01/19 13:12:28 |       at orca.controllers.xmlrpc.OrcaXmlrpcHandler.modifySlice(OrcaXmlrpcHandler.java:598)

Seems maybe the easiest way to fix it is to make sure NdlCommons.isSttichingNodeInManifest returns false if the resource is null, however wanted to check. Here is the code:

    public static boolean isStitchingNodeInManifest(Resource r) {

        if (hasResourceType(r, deviceOntClass)) {
            Resource dom = getDomain(r);
            if(dom==null)
                return false;   

            if(dom.getURI().contains(stitching_domain_str))
                return true;
        }
        return false;
    }   

Wondering if this is sufficient.

Premature model close in getManifestModel

Reported by Paul after many add's delete's

INFO   | jvm 1    | 2015/12/08 18:49:11 | com.hp.hpl.jena.shared.ClosedException: already closed
INFO   | jvm 1    | 2015/12/08 18:49:11 |       at com.hp.hpl.jena.graph.impl.GraphBase.checkOpen(GraphBase.java:66)
INFO   | jvm 1    | 2015/12/08 18:49:11 |       at com.hp.hpl.jena.graph.impl.GraphBase.contains(GraphBase.java:317)
INFO   | jvm 1    | 2015/12/08 18:49:11 |       at com.hp.hpl.jena.rdf.model.impl.ModelCom.contains(ModelCom.java:1238)
INFO   | jvm 1    | 2015/12/08 18:49:11 |       at com.hp.hpl.jena.rdf.model.impl.ModelCom.contains(ModelCom.java:1234)
INFO   | jvm 1    | 2015/12/08 18:49:11 |       at com.hp.hpl.jena.rdf.model.impl.ResourceImpl.hasProperty(ResourceImpl.java:283)
INFO   | jvm 1    | 2015/12/08 18:49:11 |       at orca.controllers.xmlrpc.ReservationConverter.addDependencyProperty(ReservationConverter.java:1548)
INFO   | jvm 1    | 2015/12/08 18:49:11 |       at orca.controllers.xmlrpc.ReservationConverter.getManifestModel(ReservationConverter.java:1508)
INFO   | jvm 1    | 2015/12/08 18:49:11 |       at orca.controllers.xmlrpc.ReservationConverter.getManifest(ReservationConverter.java:1165)
INFO   | jvm 1    | 2015/12/08 18:49:11 |       at orca.controllers.xmlrpc.XmlrpcHandlerHelper.getSliceManifest(XmlrpcHandlerHelper.java:792)
INFO   | jvm 1    | 2015/12/08 18:49:11 |       at orca.controllers.xmlrpc.OrcaXmlrpcHandler.sliceStatus(OrcaXmlrpcHandler.java:503)

NDLCommons features

  1. A way to create a request generator from a successful request parser. Likely this will involve a new constructor that takes a model as a parameter.
  2. (Possibly) A way to create a request generator from a successful manifest parser. This would likely only create a blank modify model with the minimum slice-level information (if any).
  3. A method on NDLGenerator to “removeNodeTypeToCE(node);”
  4. A method on NDLGenerator to check the existence of a NodeType on a CE. This might just be confirmation that the get NodeType method returns null when it doesn’t exist.

@paul-ruth

Fan's embedding issue (two nodegroups in one site, connected to second site)

Fan discovered a problem with embedding a slice that has two node groups in one site connected by an internal bcast link and also connected to a second (and possibly third site).

Yufeng made modifications to recognize this case properly, however the manifest doesn't render properly - Flukes can't distinguish identically named interfaces on two paths towards the nodegroups.

Modify embedding problem

  1. Start with a single node Node0 at FIU
  2. Add 3 nodes (Node1, Node2) - two at FIU and one (Node3) at SL and link all nodes together using a 4-way broadcast link
  3. The result manifest shows Nodes 1, 2 and 3 properly connected, Node0 shows disconnected
  4. Try to link Node0 to the FiuNet VLAN to fix the problems and you get an even bigger mess (most nodes disconnected from links, see figure below)

If this is something we don't handle, I need to know about it, so I can create a rule.

screen shot 2015-12-21 at 4 10 06 pm

Closed Model Error

I hit the closed model error again. I think the sequenece is as follows:

  1. Started my SDN slice. This inlcludes 4 "openvswitch vms" that are connected in line.
    2 Removed links between some openvswitch nodes.
  2. Add new links between openvswitch nodes.
  3. Repeat a few times until the error happened when adding a new link

INFO | jvm 1 | 2016/01/15 13:31:49 | Send a packet PING : ok
DEBUG | wrapperp | 2016/01/15 13:31:49 | read a packet PING : ok
DEBUG | wrapper | 2016/01/15 13:31:49 | Got ping response from JVM
INFO | jvm 1 | 2016/01/15 13:31:51 | com.hp.hpl.jena.shared.ClosedException: already closed
INFO | jvm 1 | 2016/01/15 13:31:51 | at com.hp.hpl.jena.graph.impl.GraphBase.checkOpen(GraphBase.java:66)
INFO | jvm 1 | 2016/01/15 13:31:51 | at com.hp.hpl.jena.graph.impl.GraphBase.contains(GraphBase.java:317)
INFO | jvm 1 | 2016/01/15 13:31:51 | at com.hp.hpl.jena.rdf.model.impl.ModelCom.contains(ModelCom.java:1238)
INFO | jvm 1 | 2016/01/15 13:31:51 | at com.hp.hpl.jena.rdf.model.impl.ModelCom.contains(ModelCom.java:1234)
INFO | jvm 1 | 2016/01/15 13:31:51 | at com.hp.hpl.jena.rdf.model.impl.ResourceImpl.hasProperty(ResourceImpl.java:283)
INFO | jvm 1 | 2016/01/15 13:31:51 | at orca.controllers.xmlrpc.ReservationConverter.addDependencyProperty(ReservationConverter.java:1549)
INFO | jvm 1 | 2016/01/15 13:31:51 | at orca.controllers.xmlrpc.ReservationConverter.getManifestModel(ReservationConverter.java:1509)
INFO | jvm 1 | 2016/01/15 13:31:51 | at orca.controllers.xmlrpc.ReservationConverter.getManifest(ReservationConverter.java:1166)
INFO | jvm 1 | 2016/01/15 13:31:51 | at orca.controllers.xmlrpc.XmlrpcHandlerHelper.getSliceManifest(XmlrpcHandlerHelper.java:792)
INFO | jvm 1 | 2016/01/15 13:31:51 | at orca.controllers.xmlrpc.OrcaXmlrpcHandler.sliceStatus(OrcaXmlrpcHandler.java:512)
INFO | jvm 1 | 2016/01/15 13:31:51 | at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
INFO | jvm 1 | 2016/01/15 13:31:51 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
INFO | jvm 1 | 2016/01/15 13:31:51 | at java.lang.reflect.Method.invoke(Method.java:606)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.webserver.XmlRpcServletServer.execute(XmlRpcServletServer.java:112)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.webserver.XmlRpcServlet.doPost(XmlRpcServlet.java:196)
INFO | jvm 1 | 2016/01/15 13:31:51 | at orca.controllers.OrcaXmlrpcServlet.doPost(OrcaXmlrpcServlet.java:153)
INFO | jvm 1 | 2016/01/15 13:31:51 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
INFO | jvm 1 | 2016/01/15 13:31:51 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:527)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:423)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:493)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:926)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:358)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:860)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.Server.handle(Server.java:331)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:588)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1046)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:764)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:418)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:476)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
INFO | jvm 1 | 2016/01/15 13:31:51 | at java.lang.Thread.run(Thread.java:745)
INFO | jvm 1 | 2016/01/15 13:31:51 | orca.controllers.OrcaControllerException: OrcaControllerException: ERROR: Failed due to exception: com.hp.hpl.jena.shared.ClosedException: already closed
INFO | jvm 1 | 2016/01/15 13:31:51 | at orca.controllers.xmlrpc.XmlrpcHandlerHelper.getSliceManifest(XmlrpcHandlerHelper.java:799)
INFO | jvm 1 | 2016/01/15 13:31:51 | at orca.controllers.xmlrpc.OrcaXmlrpcHandler.sliceStatus(OrcaXmlrpcHandler.java:512)
INFO | jvm 1 | 2016/01/15 13:31:51 | at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
INFO | jvm 1 | 2016/01/15 13:31:51 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
INFO | jvm 1 | 2016/01/15 13:31:51 | at java.lang.reflect.Method.invoke(Method.java:606)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.invoke(ReflectiveXmlRpcHandler.java:115)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.server.ReflectiveXmlRpcHandler.execute(ReflectiveXmlRpcHandler.java:106)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.server.XmlRpcServerWorker.execute(XmlRpcServerWorker.java:46)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.server.XmlRpcServer.execute(XmlRpcServer.java:86)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:200)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.webserver.XmlRpcServletServer.execute(XmlRpcServletServer.java:112)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.apache.xmlrpc.webserver.XmlRpcServlet.doPost(XmlRpcServlet.java:196)
INFO | jvm 1 | 2016/01/15 13:31:51 | at orca.controllers.OrcaXmlrpcServlet.doPost(OrcaXmlrpcServlet.java:153)
INFO | jvm 1 | 2016/01/15 13:31:51 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
INFO | jvm 1 | 2016/01/15 13:31:51 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:527)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:423)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:493)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:926)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:358)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:860)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.Server.handle(Server.java:331)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:588)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1046)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:764)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:418)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:476)
INFO | jvm 1 | 2016/01/15 13:31:51 | at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
INFO | jvm 1 | 2016/01/15 13:31:51 | at java.lang.Thread.run(Thread.java:745)
DEBUG | wrapperp | 2016/01/15 13:31:53 | send a packet PING : ping
INFO | jvm 1 | 2016/01/15 13:31:53 | Received a packet PING : ping
INFO | jvm 1 | 2016/01/15 13:31:53 | Send a packet PING : ok
DEBUG | wrapperp | 2016/01/15 13:31:53 | read a packet PING : ok

Storage didn't mount on modify in RCI

Looks like the interface got added:

INFO   | jvm 1    | 2015/12/18 16:18:45 | modify.addiface:
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] ec2.site.properties path is /etc/orca/am+broker-12080/config/ec2.site.properties
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] Setting ec2.site.properites from /etc/orca/am+broker-12080/config/ec2.site.properties
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] EC2 HANDLER: MODIFY.ADDIFACE on 12/18/2015 04:18
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] modify.addiface: ec2 instance=3e79c05e-28bd-4879-a1e0-5a7bacebc1f9, modify sequence number 2
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] adding interfaces to instance
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] vlan.tag = 1009
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] ip = 10.104.0.6/24
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] mode = ${modify.2.mode}
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] hosteth = vlan-storage
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] mac = fe:16:3e:00:71:08
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] state = ${modify.2.state}
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] ipversion = ${modify.2.ipversion}
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] ip after setting to modify.x.ip = 10.104.0.6/24
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] modify.${seqnum}.state is not net.  Using default value: up.
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] modify.${seqnum}.ipversion is not net.  Using default value: ipv4.
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] UNIT_MANAGE_IP: 152.54.14.10
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] LoginProperty : ${loginProperty}
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] KeysProperty : ${keysProperty}
INFO   | jvm 1    | 2015/12/18 16:18:45 |      [echo] SudoProperty : ${sudoProperty}
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] Exit code for get-userdata is 0
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] Old userdata : [global]
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] actor_id=ca378090-dc21-4667-96ea-94529e1072d8
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] slice_id=d1d35b37-7339-43dc-a6cb-f9effd78aae8
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] reservation_id=5796da66-6d7c-42d7-9982-7606586edadd
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] unit_id=32fa9068-05fd-469a-b3bf-3968c6cb2e97
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] ;router= Not Specified
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] ;iscsi_initiator_iqn= Not Specified
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] slice_name=test-xmpp-12-18
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] unit_url=http://geni-orca.renci.org/owl/fc141824-d3da-4ee2-80ed-a6a5c8a946b7#Node1
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] host_name=Node1
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] management_ip=152.54.14.10
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] physical_host=rci-w3
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] nova_id=3e79c05e-28bd-4879-a1e0-5a7bacebc1f9
INFO   | jvm 1    | 2015/12/18 16:18:48 |      [echo] [users]

and neuca-user-data got properly modified:
screen shot 2015-12-18 at 11 24 47 am

But the interface didn't show up in VM, consequently, storage wasn't mounted. I think this is an OpenStack glitch. maybe.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.