git://git.onelab.eu
/
sfa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rspec.version.add_nodes take an extra arg to handle Request RSpec
[sfa.git]
/
sfa
/
rspecs
/
versions
/
pgv2.py
diff --git
a/sfa/rspecs/versions/pgv2.py
b/sfa/rspecs/versions/pgv2.py
index
88aa35d
..
cfe1eae
100644
(file)
--- a/
sfa/rspecs/versions/pgv2.py
+++ b/
sfa/rspecs/versions/pgv2.py
@@
-1,13
+1,13
@@
from copy import deepcopy
from StringIO import StringIO
from copy import deepcopy
from StringIO import StringIO
-from sfa.util.xrn import Xrn, urn_to_sliver_id
-from sfa.util.plxrn import hostname_to_urn, xrn_to_hostname
-from sfa.rspecs.baseversion import BaseVersion
+from sfa.util.xrn import Xrn
+from sfa.rspecs.version import RSpecVersion
from sfa.rspecs.elements.versions.pgv2Link import PGv2Link
from sfa.rspecs.elements.versions.pgv2Node import PGv2Node
from sfa.rspecs.elements.versions.pgv2SliverType import PGv2SliverType
from sfa.rspecs.elements.versions.pgv2Link import PGv2Link
from sfa.rspecs.elements.versions.pgv2Node import PGv2Node
from sfa.rspecs.elements.versions.pgv2SliverType import PGv2SliverType
+from sfa.rspecs.elements.versions.pgv2Lease import PGv2Lease
-class PGv2(
Base
Version):
+class PGv2(
RSpec
Version):
type = 'ProtoGENI'
content_type = 'ad'
version = '2'
type = 'ProtoGENI'
content_type = 'ad'
version = '2'
@@
-16,6
+16,7
@@
class PGv2(BaseVersion):
extensions = {
'flack': "http://www.protogeni.net/resources/rspec/ext/flack/1",
'planetlab': "http://www.planet-lab.org/resources/sfa/ext/planetlab/1",
extensions = {
'flack': "http://www.protogeni.net/resources/rspec/ext/flack/1",
'planetlab': "http://www.planet-lab.org/resources/sfa/ext/planetlab/1",
+ 'plos': "http://www.planet-lab.org/resources/sfa/ext/plos/1",
}
namespaces = dict(extensions.items() + [('default', namespace)])
}
namespaces = dict(extensions.items() + [('default', namespace)])
@@
-27,7
+28,7
@@
class PGv2(BaseVersion):
if 'component_manager_id' in node.attrib:
network_urn = node.get('component_manager_id')
if network_urn.startswith("urn:"):
if 'component_manager_id' in node.attrib:
network_urn = node.get('component_manager_id')
if network_urn.startswith("urn:"):
- network_hrn = Xrn(network_urn).get_hrn()
[0]
+ network_hrn = Xrn(network_urn).get_hrn()
else:
# some component_manager_ids are hrns instead of urns??
network_hrn = network_urn
else:
# some component_manager_ids are hrns instead of urns??
network_hrn = network_urn
@@
-44,8
+45,8
@@
class PGv2(BaseVersion):
def get_nodes_with_slivers(self):
return PGv2Node.get_nodes_with_slivers(self.xml)
def get_nodes_with_slivers(self):
return PGv2Node.get_nodes_with_slivers(self.xml)
- def add_nodes(self, nodes, check_for_dupes=False):
- return PGv2Node.add_nodes(self.xml, nodes)
+ def add_nodes(self, nodes, check_for_dupes=False
, rspec_content_type=None
):
+ return PGv2Node.add_nodes(self.xml, nodes
, rspec_content_type
)
def merge_node(self, source_node_tag):
# this is untested
def merge_node(self, source_node_tag):
# this is untested
@@
-124,9
+125,13
@@
class PGv2(BaseVersion):
'pl_tags': attributes}
# remove available element
'pl_tags': attributes}
# remove available element
- for available_elem in node_elem.xpath('./default:available'):
+ for available_elem in node_elem.xpath('./default:available
| ./available
'):
node_elem.remove(available_elem)
node_elem.remove(available_elem)
-
+
+ # remove interface elements
+ for interface_elem in node_elem.xpath('./default:interface | ./interface'):
+ node_elem.remove(interface_elem)
+
# remove existing sliver_type elements
for sliver_type in node_elem.get('slivers', []):
node_elem.element.remove(sliver_type.element)
# remove existing sliver_type elements
for sliver_type in node_elem.get('slivers', []):
node_elem.element.remove(sliver_type.element)
@@
-139,7
+144,7
@@
class PGv2(BaseVersion):
# set the sliver id
#slice_id = sliver_info.get('slice_id', -1)
#node_id = sliver_info.get('node_id', -1)
# set the sliver id
#slice_id = sliver_info.get('slice_id', -1)
#node_id = sliver_info.get('node_id', -1)
- #sliver_id =
urn_to_sliver_id(sliver_urn, slice_id, node_id
)
+ #sliver_id =
Xrn(xrn=sliver_urn, type='slice', id=str(node_id)).get_urn(
)
#node_elem.set('sliver_id', sliver_id)
# add the sliver type elemnt
#node_elem.set('sliver_id', sliver_id)
# add the sliver type elemnt
@@
-169,6
+174,14
@@
class PGv2(BaseVersion):
def add_link_requests(self, link_tuples, append=False):
PGv2Link.add_link_requests(self.xml.root, link_tuples, append)
def add_link_requests(self, link_tuples, append=False):
PGv2Link.add_link_requests(self.xml.root, link_tuples, append)
+ # Leases
+
+ def get_leases(self, filter=None):
+ return PGv2Lease.get_leases(self.xml, filter)
+
+ def add_leases(self, leases, network = None, no_dupes=False):
+ PGv2Lease.add_leases(self.xml, leases)
+
# Utility
def merge(self, in_rspec):
# Utility
def merge(self, in_rspec):
@@
-182,13
+195,20
@@
class PGv2(BaseVersion):
nodes = in_rspec.version.get_nodes()
# protogeni rspecs need to advertise the availabel sliver types
nodes = in_rspec.version.get_nodes()
# protogeni rspecs need to advertise the availabel sliver types
+ main_nodes = []
for node in nodes:
for node in nodes:
+ if not node['component_name']:
+ # this node element is part of a lease
+ continue
if not node.has_key('sliver') or not node['sliver']:
node['sliver'] = {'name': 'plab-vserver'}
if not node.has_key('sliver') or not node['sliver']:
node['sliver'] = {'name': 'plab-vserver'}
-
- self.add_nodes(nodes)
+ main_nodes.append(node)
+ self.add_nodes(
main_
nodes)
self.add_links(in_rspec.version.get_links())
self.add_links(in_rspec.version.get_links())
+ # Leases
+ leases = in_rspec.version.get_leases()
+ self.add_leases(leases)
#
#rspec = RSpec(in_rspec)
#for child in rspec.xml.iterchildren():
#
#rspec = RSpec(in_rspec)
#for child in rspec.xml.iterchildren():
@@
-206,19
+226,19
@@
class PGv2Ad(PGv2):
enabled = True
content_type = 'ad'
schema = 'http://www.protogeni.net/resources/rspec/2/ad.xsd'
enabled = True
content_type = 'ad'
schema = 'http://www.protogeni.net/resources/rspec/2/ad.xsd'
- template = '<rspec type="advertisement" xmlns="http://www.protogeni.net/resources/rspec/2" xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1" xmlns:pl
anetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2 http://www.protogeni.net/resources/rspec/2/ad.xsd http://www.planet-lab.org/resources/sfa/ext/planetlab/1 http://www.planet-lab.org/resources/sfa/ext/planetlab/1/planetlab
.xsd"/>'
+ template = '<rspec type="advertisement" xmlns="http://www.protogeni.net/resources/rspec/2" xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1" xmlns:pl
os="http://www.planet-lab.org/resources/sfa/ext/plos/1" xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2 http://www.protogeni.net/resources/rspec/2/ad.xsd http://www.planet-lab.org/resources/sfa/ext/planetlab/1 http://www.planet-lab.org/resources/sfa/ext/planetlab/1/planetlab.xsd http://www.planet-lab.org/resources/sfa/ext/plos/1 http://www.planet-lab.org/resources/sfa/ext/plos/1/plos
.xsd"/>'
class PGv2Request(PGv2):
enabled = True
content_type = 'request'
schema = 'http://www.protogeni.net/resources/rspec/2/request.xsd'
class PGv2Request(PGv2):
enabled = True
content_type = 'request'
schema = 'http://www.protogeni.net/resources/rspec/2/request.xsd'
- template = '<rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/2" xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1" xmlns:pl
anetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2 http://www.protogeni.net/resources/rspec/2/request.xsd http://www.planet-lab.org/resources/sfa/ext/planetlab/1 http://www.planet-lab.org/resources/sfa/ext/planetlab/1/planetlab
.xsd"/>'
+ template = '<rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/2" xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1" xmlns:pl
os="http://www.planet-lab.org/resources/sfa/ext/plos/1" xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2 http://www.protogeni.net/resources/rspec/2/request.xsd http://www.planet-lab.org/resources/sfa/ext/planetlab/1 http://www.planet-lab.org/resources/sfa/ext/planetlab/1/planetlab.xsd http://www.planet-lab.org/resources/sfa/ext/plos/1 http://www.planet-lab.org/resources/sfa/ext/plos/1/plos
.xsd"/>'
class PGv2Manifest(PGv2):
enabled = True
content_type = 'manifest'
schema = 'http://www.protogeni.net/resources/rspec/2/manifest.xsd'
class PGv2Manifest(PGv2):
enabled = True
content_type = 'manifest'
schema = 'http://www.protogeni.net/resources/rspec/2/manifest.xsd'
- template = '<rspec type="manifest" xmlns="http://www.protogeni.net/resources/rspec/2" xmlns:
flack="http://www.protogeni.net/resources/rspec/ext/flack/1" xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2 http://www.protogeni.net/resources/rspec/2/manifest.xsd http://www.planet-lab.org/resources/sfa/ext/planetlab/1 http://www.planet-lab.org/resources/sfa/ext/planetlab/1/planetlab
.xsd"/>'
+ template = '<rspec type="manifest" xmlns="http://www.protogeni.net/resources/rspec/2" xmlns:
plos="http://www.planet-lab.org/resources/sfa/ext/plos/1" xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1" xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2 http://www.protogeni.net/resources/rspec/2/manifest.xsd http://www.planet-lab.org/resources/sfa/ext/planetlab/1 http://www.planet-lab.org/resources/sfa/ext/planetlab/1/planetlab.xsd http://www.planet-lab.org/resources/sfa/ext/plos/1 http://www.planet-lab.org/resources/sfa/ext/plos/1/plos
.xsd"/>'