Opened 12 years ago

Closed 12 years ago

#49 closed (fixed)

many-to-many mapping of slivers to resources is not supported

Reported by: chaos@bbn.com Owned by: somebody
Priority: major Milestone: 2012-09-04 client release
Component: Clients Version:
Keywords: v0.6.0 Cc:
Dependencies:

Description

On tau-verde, my test host, the following sliver to datapath mappings exist:

Sliver Datapath
urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82 04:4d:00:26:f1:3f:3b:00
urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82 04:4d:00:12:e2:b8:a5:d0
urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-poblano1101-datapath:9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a 04:4d:00:12:e2:b8:a5:d0

In other words, there are two slivers, two datapaths, and three mappings between them. So, in the correct state:

  • sliver urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82 maps to both resources
  • resource 04:4d:00:12:e2:b8:a5:d0 maps to both slivers

However, when i actually install sliver/resource mappings by setting sliver.resources using this code:

for sliver in sorted(info['slivers'].keys()):
...
  if sinfo['datapath_resources']:
    resource_mapping = {}
    for datapath in sinfo['datapath_resources']:
      resource_mapping[datapath] = resource[datapath]

    slivers[sliver].resources = resource_mapping

#   <debugging print statements, elided for clarity>

I see:

Resource mapping data to be installed:
  Sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  Data: {'04:4d:00:26:f1:3f:3b:00': <gmoc.Resource object at 0xb722ef4c>, '04:4d:00:12:e2:b8:a5:d0': <gmoc.Resource object at 0xb722eecc>}
Before installation:
  sliver.resources={}
  resource[04:4d:00:12:e2:b8:a5:d0].slivers={}
  resource[04:4d:00:26:f1:3f:3b:00].slivers={}
After installation:
  sliver.resources={'04:4d:00:26:f1:3f:3b:00': <gmoc.Resource object at 0xb722ef4c>, '04:4d:00:12:e2:b8:a5:d0': <gmoc.Resource object at 0xb722eecc>}
  resource[04:4d:00:12:e2:b8:a5:d0].slivers={'04:4d:00:12:e2:b8:a5:d0': <gmoc.Sliver object at 0xb722efac>}
  resource[04:4d:00:26:f1:3f:3b:00].slivers={'04:4d:00:26:f1:3f:3b:00': <gmoc.Sliver object at 0xb722efac>}

------------------------------------------------------------------------
Resource mapping data to be installed:
  Sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-poblano1101-datapath:9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a
  Data: {'04:4d:00:12:e2:b8:a5:d0': <gmoc.Resource object at 0xb722eecc>}
Before installation:
  sliver.resources={}
  resource[04:4d:00:12:e2:b8:a5:d0].slivers={'04:4d:00:12:e2:b8:a5:d0': <gmoc.Sliver object at 0xb722efac>}
  resource[04:4d:00:26:f1:3f:3b:00].slivers={'04:4d:00:26:f1:3f:3b:00': <gmoc.Sliver object at 0xb722efac>}
After installation:
  sliver.resources={'04:4d:00:12:e2:b8:a5:d0': <gmoc.Resource object at 0xb722eecc>}
  resource[04:4d:00:12:e2:b8:a5:d0].slivers={'04:4d:00:12:e2:b8:a5:d0': <gmoc.Sliver object at 0xb723308c>}
  resource[04:4d:00:26:f1:3f:3b:00].slivers={'04:4d:00:26:f1:3f:3b:00': <gmoc.Sliver object at 0xb722efac>}

------------------------------------------------------------------------

In other words, the mapping from resource 04:4d:00:12:e2:b8:a5:d0 to the first sliver, got clobbered by setting the mapping for the second sliver.

Change History (8)

comment:1 Changed 12 years ago by chaos@bbn.com

If you fix the narrow bug, i'll close this ticket. However, i think the upshot of this is that setting mappings by installing an array at a time is brittle, and doesn't support options we need.

My preferred solution would be that any time a unidirectional mapping to another known object is installed, the code install the other-directional mapping by appending to that other object's list.

For instance, right now, pop.aggregates, pop.authorities, and pop.resources are all empty, because no one is going to bother to remember to track a list of their authorities, resources, and aggregates, and add them to the pop. If Aggregate, SliceAuthority, and Resource appending that mapping into pop in their pop setter functions, we wouldn't have to worry about that.

But, like i said, if you fix the sliver/resource bug, that's good enough for this ticket, and i'll open a new ticket for the broader problem.

comment:2 Changed 12 years ago by chaos@bbn.com

Dependencies: #59

This depends on 59, so i'll wait for that to be handled before trying to verify this again.

comment:3 in reply to:  2 Changed 12 years ago by Kevin Bohan

Replying to chaos@bbn.com:

This depends on 59, so i'll wait for that to be handled before trying to verify this again.

59 should be fixed.

comment:4 Changed 12 years ago by chaos@bbn.com

So, this code:

    for datapath in sinfo['datapath_resources']:
      mapping = gmoc.ResourceMapping(
        sinfo['uuid'],
        type = 'flowspace',
        resource = resource[datapath],
      )
      resource_mappings.append(mapping)
    print "Resource mapping data to be installed:\n  %s\n" % resource_mappings

    print "Before installation:"
    print "  sliver.resources=%s" % slivers[sliver].resources
    for datapath in sorted(resource.keys()):
      print "  resource[%s].slivers=%s" % (datapath, resource[datapath].slivers)
    slivers[sliver].resources = resource_mappings

    print "After installation:"
    print "  sliver.resources=%s" % slivers[sliver].resources
    for datapath in sorted(resource.keys()):
      print "  resource[%s].slivers=%s" % (datapath, resource[datapath].slivers)
    print
    print '-' * 72

now yields:

Resource mapping data to be installed:
  [<gmoc.ResourceMapping object at 0xb717872c>, <gmoc.ResourceMapping object at 0xb717876c>]

Before installation:
  sliver.resources=[]
  resource[04:4d:00:12:e2:b8:a5:d0].slivers=[]
  resource[04:4d:00:26:f1:3f:3b:00].slivers=[]
After installation:
  sliver.resources=[<gmoc.ResourceMapping object at 0xb717872c>, <gmoc.ResourceMapping object at 0xb717876c>]
  resource[04:4d:00:12:e2:b8:a5:d0].slivers=[]
  resource[04:4d:00:26:f1:3f:3b:00].slivers=[]

------------------------------------------------------------------------
Resource mapping data to be installed:
  [<gmoc.ResourceMapping object at 0xb717880c>]

Before installation:
  sliver.resources=[]
  resource[04:4d:00:12:e2:b8:a5:d0].slivers=[]
  resource[04:4d:00:26:f1:3f:3b:00].slivers=[]
After installation:
  sliver.resources=[<gmoc.ResourceMapping object at 0xb717880c>]
  resource[04:4d:00:12:e2:b8:a5:d0].slivers=[]
  resource[04:4d:00:26:f1:3f:3b:00].slivers=[]

------------------------------------------------------------------------

I'm not 100% sure what i should expect here, but i believe either i am invoking this code wrong, or there is still a bug.

Hmm, so, i realised that, when i print out the contents of the mappings, they look like:

  Mapping: <gmoc.ResourceMapping object at 0xb715574c>
    ID:       b72b0a06-beb9-4be2-94ba-cfbd8654ad82
    Type:     flowspace
    Sliver:   None
    Resource: <gmoc.Resource object at 0xb71555ac>

So, sliver is none. The thing is, if i explicitly set mapping.sliver to an extant sliver, this doesn't change: this code:

      print "Extant sliver: %s" % slivers[sliver]
      print "mapping.sliver before change: %s" % mapping.sliver
      mapping.sliver = slivers[sliver]
      print "mapping.sliver after change: %s" % mapping.sliver

yields:

Extant sliver: <gmoc.Sliver object at 0xb71f97cc>
mapping.sliver before change: None
mapping.sliver after change: None

So i think that's at least one bug: mapping.sliver shouldn't be a noop. But i'm not sure, because i'm not sure how i should actually be invoking this code. I've written Kevin to ask for an example invocation, and will wait on this until i can rewrite my code to do something that we all think should work.

comment:5 Changed 12 years ago by chaos@bbn.com

Hmm... something is Not Right in the new code or my usage of said. This code:

  if sinfo['datapath_resources']:
    resource_mappings = []
    for datapath in sinfo['datapath_resources']:
      print "Before:"      print "  resource: %s" % resource[datapath].id
      print "  resource.slivers: %s" % resource[datapath].slivers
      print "  sliver: %s" % slivers[sliver].id
      print "  sliver.resources: %s" % slivers[sliver].resources
      resource_mappings.append(gmoc.ResourceMapping(
        sinfo['uuid'],
        type = 'flowspace',
        resource = resource[datapath],
        sliver = slivers[sliver]
      ))
      print "After:"
      print "  resource: %s" % resource[datapath].id
      print "  resource.slivers: %s" % resource[datapath].slivers
      print "  sliver: %s" % slivers[sliver].id
      print "  sliver.resources: %s" % slivers[sliver].resources
      print

yields:

Before:
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0
  resource.slivers: []
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  sliver.resources: []
After:
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0
  resource.slivers: [<gmoc.Sliver object at 0x8dcc84c>]
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  sliver.resources: [<gmoc.Resource object at 0x8dcc72c>]

Before:
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:26:f1:3f:3b:00
  resource.slivers: []
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  sliver.resources: [<gmoc.Resource object at 0x8dcc72c>]
After:
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:26:f1:3f:3b:00
  resource.slivers: [<gmoc.Sliver object at 0x8dcc84c>]
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
Traceback (most recent call last):
  File "./report_foam_relations", line 345, in <module>
    print "  sliver.resources: %s" % slivers[sliver].resources
  File "/home/chaos/gmoc.py", line 1061, in resources
    resList.append(resMap.resource)
AttributeError: 'Resource' object has no attribute 'resource'

My possibly-incoherent take: i am still trying to shoehorn in a ResourceMapping.local_name parameter, which is not unique on a given sliver. Here is an example of the old XML, which basically looks like what i want:

    <sliver creator="None" local_name="urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82" uuid="b72b0a06-beb9-4be2-94ba-cfbd8654ad82" state="Up" created="1342549645" approved="True" slice_urn="urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr" expires="1348992000" slice_uuid="">
      <resource_mapping resource="04:4d:00:12:e2:b8:a5:d0" type="flowspace" local_name="b72b0a06-beb9-4be2-94ba-cfbd8654ad82" />
      <resource_mapping resource="04:4d:00:26:f1:3f:3b:00" type="flowspace" local_name="b72b0a06-beb9-4be2-94ba-cfbd8654ad82" />
    </sliver>

You'll note that those resource_mapping items each have a different resource (the resource being mapped to this sliver), but the local_name is the name, because the local_name is a name for the sliver on the resource.

So, i tried simply using the local_name as ResourceMapping.id, which led to multiple different resource mappings with the same ID, which led (i speculate) to some kind of serious confusion on the part of internal state. That shouldn't happen: an invalid state like this should be rejected rather than leading to trouble.

Next i'm going to try using unique IDs and ignoring local_name for the time being, and see what happens in that case.

comment:6 Changed 12 years ago by chaos@bbn.com

Dependencies: #59
Keywords: v0.6.0 added; v0.2.1 removed

comment:7 Changed 12 years ago by chaos@bbn.com

Nope, that wasn't the problem. I tried again, forcing unique IDs by making both the resource and the sliver UUID part of the ResourceMapping?.id:

  if sinfo['datapath_resources']:
    resource_mappings = []
    for datapath in sinfo['datapath_resources']:
      print "Before:"
      print "  resource: %s" % resource[datapath].id
      print "  resource.slivers: %s" % resource[datapath].slivers
      print "  sliver: %s" % slivers[sliver].id
      print "  sliver.resources: %s" % slivers[sliver].resources
      resource_mappings.append(gmoc.ResourceMapping(
        "%s-%s" % (datapath, sinfo['uuid']),
        type = 'flowspace',
        resource = resource[datapath],
        sliver = slivers[sliver]
      ))
      print "After:"
      print "  mapping: %s" % resource_mappings[-1].id
      print "  resource: %s" % resource[datapath].id
      print "  resource.slivers: %s" % resource[datapath].slivers
      print "  sliver: %s" % slivers[sliver].id
      print "  sliver.resources: %s" % slivers[sliver].resources
      print

This still yields:

Before:
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0
  resource.slivers: []
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  sliver.resources: []
After:
  mapping: 04:4d:00:12:e2:b8:a5:d0-b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0
  resource.slivers: [<gmoc.Sliver object at 0x980986c>]
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  sliver.resources: [<gmoc.Resource object at 0x980974c>]

Before:
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:26:f1:3f:3b:00
  resource.slivers: []
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  sliver.resources: [<gmoc.Resource object at 0x980974c>]
After:
  mapping: 04:4d:00:26:f1:3f:3b:00-b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:26:f1:3f:3b:00
  resource.slivers: [<gmoc.Sliver object at 0x980986c>]
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
Traceback (most recent call last):
  File "./report_foam_relations", line 346, in <module>
    print "  sliver.resources: %s" % slivers[sliver].resources
  File "/home/chaos/gmoc.py", line 1061, in resources
    resList.append(resMap.resource)
AttributeError: 'Resource' object has no attribute 'resource'

So, one ResourceMapping? install is fine, the second install (which, as it turns out, has the same sliver --- this is probably a factor, but i haven't source-dived) blows up with this strange error.

comment:8 Changed 12 years ago by chaos@bbn.com

Resolution: fixed
Status: newclosed

This looks much better in 0.6.1. The code:

  if sinfo['datapath_resources']:
    resource_mappings = []
    for datapath in sinfo['datapath_resources']:
      print "Before:"
      print "  resource: %s" % resource[datapath].id
      print "  resource.slivers: %s" % [s.id for s in resource[datapath].slivers]
      print "  sliver: %s" % slivers[sliver].id
      print "  sliver.resources: %s" % [r.id for r in slivers[sliver].resources]
      resource_mappings.append(gmoc.ResourceMapping(
        "%s-%s" % (datapath, sinfo['uuid']),
        type = 'flowspace',
        resource = resource[datapath],
        sliver = slivers[sliver]
      ))
      print "After:"
      print "  mapping: %s" % resource_mappings[-1].id
      print "  resource: %s" % resource[datapath].id
      print "  resource.slivers: %s" % [s.id for s in resource[datapath].slivers]
      print "  sliver: %s" % slivers[sliver].id
      print "  sliver.resources: %s" % [r.id for r in slivers[sliver].resources]
      print

now yields:

Before:
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0
  resource.slivers: []
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  sliver.resources: []
After:
  mapping: 04:4d:00:12:e2:b8:a5:d0-b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0
  resource.slivers: ['urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82']
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  sliver.resources: ['urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0']

Before:
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:26:f1:3f:3b:00
  resource.slivers: []
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  sliver.resources: ['urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0']
After:
  mapping: 04:4d:00:26:f1:3f:3b:00-b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:26:f1:3f:3b:00
  resource.slivers: ['urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82']
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
  sliver.resources: ['urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0', 'urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:26:f1:3f:3b:00']

Before:
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0
  resource.slivers: ['urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82']
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-poblano1101-datapath:9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a
  sliver.resources: []
After:
  mapping: 04:4d:00:12:e2:b8:a5:d0-9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a
  resource: urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0
  resource.slivers: ['urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82', 'urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-poblano1101-datapath:9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a']
  sliver: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-poblano1101-datapath:9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a
  sliver.resources: ['urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0']

That looks just right.

If i roll back the uniqueness of the ResourceMapping IDs, i still get the results i expect. After installing all the mappings, this code:

for s in slivers.values():
  print "sliver=%s" % s.id
  print "sliver.resources=%s" % [r.id for r in s.resources]
  print

for r in resource.values():
  print "resource=%s" % r.id
  print "resource.slivers=%s" % [s.id for s in r.slivers]
  print

yields:

sliver=urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82
sliver.resources=['urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0', 'urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:26:f1:3f:3b:00']

sliver=urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-poblano1101-datapath:9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a
sliver.resources=['urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0']

resource=urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:26:f1:3f:3b:00
resource.slivers=['urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82']

resource=urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0
resource.slivers=['urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82', 'urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-poblano1101-datapath:9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a']

Cool. Okay, last thing to verify is the XML output. The relevant output looks like this:

                <sliver approved="1" created="1342549645" creator="urn:publicid:IDN+gmoc.geni.net+contact+foam-foam5.gpolab.bbn.com-oldslice" expires="1348992000" local_name="urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr:b72b0a06-beb9-4be2-94ba-cfbd8654ad82" slice_urn="urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-montreve-macaddr" slice_uuid="ff6d2b12-f10e-11e0-bf86-000c29f89f7b" state="Up" uuid="b72b0a06-beb9-4be2-94ba-cfbd8654ad82">
                        <resource_mapping local_name="b72b0a06-beb9-4be2-94ba-cfbd8654ad82" resource="urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0" type="flowspace"/>
                        <resource_mapping local_name="b72b0a06-beb9-4be2-94ba-cfbd8654ad82" resource="urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:26:f1:3f:3b:00" type="flowspace"/>
                </sliver>
                <sliver approved="1" created="1342549645" creator="urn:publicid:IDN+gmoc.geni.net+contact+foam-foam5.gpolab.bbn.com-oldslice" expires="1348992000" local_name="urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-poblano1101-datapath:9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a" slice_urn="urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+chaos-poblano1101-datapath" slice_uuid="10b14362-f10c-11e0-bf86-000c29f89f7b" state="Up" uuid="9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a">
                        <resource_mapping local_name="9c3476a5-dfe9-4d8c-9d2d-3b20d846f36a" resource="urn:publicid:IDN+openflow:foam:foam5.gpolab.bbn.com+datapath+04:4d:00:12:e2:b8:a5:d0" type="flowspace"/>
                </sliver>

Perfect! Closing this.

Note: See TracTickets for help on using tickets.