add content_type argument
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Thu, 6 Oct 2011 01:21:28 +0000 (21:21 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Thu, 6 Oct 2011 01:21:28 +0000 (21:21 -0400)
sfa/rspecs/pg_rspec_converter.py
sfa/rspecs/rspec_converter.py
sfa/rspecs/sfa_rspec_converter.py

index 3e3729c..42e7ccd 100755 (executable)
@@ -34,7 +34,7 @@ transform=etree.XSLT(xslt_doc)
 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:
index e29afea..7dff2f0 100755 (executable)
@@ -8,7 +8,7 @@ from sfa.rspecs.version_manager import VersionManager
 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')
@@ -16,12 +16,12 @@ class RSpecConverter:
         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')
@@ -30,7 +30,7 @@ class RSpecConverter:
         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 
 
index 29d14e4..77bdc3c 100755 (executable)
@@ -9,12 +9,17 @@ from sfa.rspecs.version_manager import VersionManager
 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)
@@ -55,6 +60,11 @@ class SfaRSpecConverter:
 
                 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()