class PGRSpecConverter:
@staticmethod
- def to_sfa_rspec(rspec):
+ def to_sfa_rspec(rspec, content_type = None):
if not isinstance(rspec, RSpec):
pg_rspec = RSpec(rspec)
else:
class RSpecConverter:
@staticmethod
- def to_sfa_rspec(in_rspec):
+ def to_sfa_rspec(in_rspec, content_type=None):
rspec = RSpec(in_rspec)
version_manager = VersionManager()
sfa_version = version_manager._get_version('sfa', '1')
if rspec.version.type.lower() == sfa_version.type.lower():
return in_rspec
elif rspec.version.type.lower() == pg_version.type.lower():
- return PGRSpecConverter.to_sfa_rspec(in_rspec)
+ return PGRSpecConverter.to_sfa_rspec(in_rspec, content_type)
else:
return in_rspec
@staticmethod
- def to_pg_rspec(in_rspec):
+ def to_pg_rspec(in_rspec, content_type=None):
rspec = RSpec(in_rspec)
version_manager = VersionManager()
sfa_version = version_manager._get_version('sfa', '1')
if rspec.version.type.lower() == pg_version.type.lower():
return in_rspec
elif rspec.version.type.lower() == sfa_version.type.lower():
- return SfaRSpecConverter.to_pg_rspec(in_rspec)
+ return SfaRSpecConverter.to_pg_rspec(in_rspec, content_type)
else:
return in_rspec
class SfaRSpecConverter:
@staticmethod
- def to_pg_rspec(rspec):
+ def to_pg_rspec(rspec, content_type = None):
if not isinstance(rspec, RSpec):
sfa_rspec = RSpec(rspec)
else:
sfa_rspec = rspec
-
+
+ if not content_type or content_type not in \
+ ['ad', 'request', 'manifest']:
+ content_type = sfa_rspec.version.content_type
+
+
version_manager = VersionManager()
pg_version = version_manager._get_version('protogeni', '2', 'request')
pg_rspec = RSpec(version=pg_version)
sliver_element = sfa_node_element.find('sliver')
if sliver_element != None:
+ if content_type == 'request':
+ # remove all child elements
+ for child in sfa_node_element.iterchildren():
+ sfa_node_element.remove(child)
+ # add the sliver
pg_rspec.xml.add_element('sliver_type', {'name': 'planetlab-vnode'}, parent=node_element)
return pg_rspec.toxml()