Opened 11 years ago

Last modified 11 years ago

#163 new

gmoc.py requires interface names to be URNs, but xchange2db3 does not

Reported by: chaos@bbn.com Owned by: somebody
Priority: major Milestone:
Component: Clients Version:
Keywords: Cc:
Dependencies:

Description

A client is allowed to submit an interface name which is not a URN (e.g. "eth1.1750:42138") to xchange2db3. When gmoc.py reads the mapping from the resource to the interface, it translates it to a URN and fails because that URN doesn't exist.

Change History (1)

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

Here's an example python trace of part of a download, which demonstrates this:

Querying: https://gmoc-db.grnoc.iu.edu/xchange/dd.cgi?method=get_resource&urn=urn%3Apublicid%3AIDN%2Bmyplc.gpolab.bbn.com%2Bnode%2Bbain.gpolab.bbn.com&oldest=1361473824
{"last_updated":"1361474421","description":"","urn":"urn:publicid:IDN+myplc.gpolab.bbn.com+node+bain.gpolab.bbn.com","interfaces":["eth1.1750:42138","eth1.1750:42010","eth1.1750:42115","eth1.1750:42100","eth1.1750:42145","eth1.1750:42126","eth1.1750:42146","eth1.1750:42113","eth1.1750:42110","eth1.1750:42012","eth1.1750:42112","eth1.1750:42111","eth1.1750:42143","eth1.1750:42114","eth1.1750:42135","eth1.1750:42129","eth1.1750:42147","eth1.1750:42122","eth1.1750:42128","eth1.1750:42134","eth1.1750:42011","eth1.1750:42101","eth1.1750:42015","eth1.1750:42142","eth1.1750:42136","eth1.1750:42014","eth1.1750:42102","eth1.1750:42013","eth1.1750:42144","eth1.1750:42137","eth1.1750:42016","eth1.1750:42121","eth1.1750:42105","eth1.1750:42106","eth0","eth1.1750:42103","eth1.1750:42124","eth1.1750:42108","eth1.1750:42131","eth1.1734","eth1.1750:42123","eth1.1750:42018","eth1.1750:42117","eth1.1750:42120","eth1.1750:42104","eth1.1750:42109","eth1.1750:42140","eth1.1750:42017","eth1.1750:42130","eth1.1750:42132","eth1.1750:42116","eth1.1750:42118","eth1.1750:42127","eth1.1750:42119","eth1.1750:42019","eth1.1750:42133","eth1.1750","eth1.1750:42107","eth1.1750:42141","eth1","eth1.1750:42148","eth1.1750:43100","eth1.1750:42125","eth1.1750:42139","eth1.1750:42149"],"error":null,"aggregate":"myplc.gpolab.bbn.com","type":"vmserver","pop":"gpolab","organization":"BBN"}
Querying: https://gmoc-db.grnoc.iu.edu/xchange/dd.cgi?method=get_interface&urn=urn%3Apublicid%3AIDN%2Bgmoc.geni.net%2Binterface%2Beth1.1750%3A42138&oldest=1361473824
{"error":"Interface urn:publicid:IDN+gmoc.geni.net+interface+eth1.1750:42138 does not exist"}

------------------------------------------------------------------------
Successes:


------------------------------------------------------------------------
Exception traceback:
Traceback (most recent call last):
  File "./test_gmoc-db_downloads", line 151, in test_sa
    obj = client.load(gmoc.SliceAuthority(urn), oldest=testtime_str)
  File "/usr/local/lib/gmoc.py", line 2911, in load
    self._load_sa(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2747, in _load_sa
    slice = self.load(Slice(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2913, in load
    self._load_slice(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2775, in _load_slice
    sliver = self.load(Sliver(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2799, in _load_sliver
    obj.aggregate      = self.load(Aggregate(data["aggregate"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2899, in load
    self._load_aggregate(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2545, in _load_aggregate
    sliver = self.load(Sliver(sliver_info["urn"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2801, in _load_sliver
    obj.slice          = self.load(Slice(data["slice"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2913, in load
    self._load_slice(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2775, in _load_slice
    sliver = self.load(Sliver(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2799, in _load_sliver
    obj.aggregate      = self.load(Aggregate(data["aggregate"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2899, in load
    self._load_aggregate(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2545, in _load_aggregate
    sliver = self.load(Sliver(sliver_info["urn"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2801, in _load_sliver
    obj.slice          = self.load(Slice(data["slice"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2913, in load
    self._load_slice(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2775, in _load_slice
    sliver = self.load(Sliver(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2799, in _load_sliver
    obj.aggregate      = self.load(Aggregate(data["aggregate"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2899, in load
    self._load_aggregate(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2545, in _load_aggregate
    sliver = self.load(Sliver(sliver_info["urn"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2801, in _load_sliver
    obj.slice          = self.load(Slice(data["slice"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2913, in load
    self._load_slice(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2775, in _load_slice
    sliver = self.load(Sliver(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2799, in _load_sliver
    obj.aggregate      = self.load(Aggregate(data["aggregate"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2899, in load
    self._load_aggregate(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2545, in _load_aggregate
    sliver = self.load(Sliver(sliver_info["urn"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2801, in _load_sliver
    obj.slice          = self.load(Slice(data["slice"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2913, in load
    self._load_slice(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2775, in _load_slice
    sliver = self.load(Sliver(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2799, in _load_sliver
    obj.aggregate      = self.load(Aggregate(data["aggregate"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2899, in load
    self._load_aggregate(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2545, in _load_aggregate
    sliver = self.load(Sliver(sliver_info["urn"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2801, in _load_sliver
    obj.slice          = self.load(Slice(data["slice"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2913, in load
    self._load_slice(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2775, in _load_slice
    sliver = self.load(Sliver(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2799, in _load_sliver
    obj.aggregate      = self.load(Aggregate(data["aggregate"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2899, in load
    self._load_aggregate(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2545, in _load_aggregate
    sliver = self.load(Sliver(sliver_info["urn"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2801, in _load_sliver
    obj.slice          = self.load(Slice(data["slice"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2913, in load
    self._load_slice(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2775, in _load_slice
    sliver = self.load(Sliver(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2799, in _load_sliver
    obj.aggregate      = self.load(Aggregate(data["aggregate"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2899, in load
    self._load_aggregate(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2545, in _load_aggregate
    sliver = self.load(Sliver(sliver_info["urn"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2801, in _load_sliver
    obj.slice          = self.load(Slice(data["slice"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2913, in load
    self._load_slice(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2775, in _load_slice
    sliver = self.load(Sliver(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2799, in _load_sliver
    obj.aggregate      = self.load(Aggregate(data["aggregate"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2899, in load
    self._load_aggregate(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2545, in _load_aggregate
    sliver = self.load(Sliver(sliver_info["urn"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2801, in _load_sliver
    obj.slice          = self.load(Slice(data["slice"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2913, in load
    self._load_slice(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2775, in _load_slice
    sliver = self.load(Sliver(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2799, in _load_sliver
    obj.aggregate      = self.load(Aggregate(data["aggregate"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2899, in load
    self._load_aggregate(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2545, in _load_aggregate
    sliver = self.load(Sliver(sliver_info["urn"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2801, in _load_sliver
    obj.slice          = self.load(Slice(data["slice"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2913, in load
    self._load_slice(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2775, in _load_slice
    sliver = self.load(Sliver(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2799, in _load_sliver
    obj.aggregate      = self.load(Aggregate(data["aggregate"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2899, in load
    self._load_aggregate(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2545, in _load_aggregate
    sliver = self.load(Sliver(sliver_info["urn"]), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2915, in load
    self._load_sliver(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2808, in _load_sliver
    resource_obj    = self.load(Resource(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2909, in load
    self._load_resource(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2723, in _load_resource
    intf = self.load(Interface(urn), oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2901, in load
    self._load_interface(obj, h, oldest, loaded)
  File "/usr/local/lib/gmoc.py", line 2567, in _load_interface
    data = self._getJSON(self.serviceURL + "xchange/dd.cgi?method=get_interface&urn=" + quote(obj.id) + "&oldest=" + oldest, h)
  File "/usr/local/lib/gmoc.py", line 2865, in _getJSON
    raise ValueError("Error: %s" % jsonData["error"])
ValueError: Error: Interface urn:publicid:IDN+gmoc.geni.net+interface+eth1.1750:42138 does not exist

Affected lookups:
  SliceAuthority('urn:publicid:IDN+pgeni.gpolab.bbn.com+authority+sa')

I'm not sure what the resolution should be (probably reject non-URN interfaces, but definitely gmoc.py should do something smarter here too), just making a ticket for it.

Note: See TracTickets for help on using tickets.