bug fixes
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Fri, 1 Feb 2013 01:46:15 +0000 (20:46 -0500)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Fri, 1 Feb 2013 01:46:15 +0000 (20:46 -0500)
sfa/managers/slice_manager.py
sfa/planetlab/plaggregate.py
sfa/rspecs/elements/node.py
sfa/rspecs/elements/services.py
sfa/rspecs/elements/v3/node.py
sfa/rspecs/elements/v3/services.py
sfa/rspecs/elements/versions/pgv2Node.py
sfa/rspecs/elements/versions/pgv2Services.py
sfa/rspecs/elements/versions/sfav1Node.py

index 7d95bfb..d914d1a 100644 (file)
@@ -193,22 +193,21 @@ class SliceManager:
         if Callids().already_handled(call_id): return ""
     
         version_manager = VersionManager()
-        def _Allocate(aggregate, server, xrn, credential, rspec, expiration, options):
+        def _Allocate(aggregate, server, xrn, credential, rspec, options):
             tStart = time.time()
             try:
                 # Need to call GetVersion at an aggregate to determine the supported
                 # rspec type/format beofre calling CreateSliver at an Aggregate.
-                server_version = api.get_cached_server_version(server)
-                requested_users = users
-                if 'sfa' not in server_version and 'geni_api' in server_version:
+                #server_version = api.get_cached_server_version(server)
+                #if 'sfa' not in server_version and 'geni_api' in server_version:
                     # sfa aggregtes support both sfa and pg rspecs, no need to convert
                     # if aggregate supports sfa rspecs. otherwise convert to pg rspec
-                    rspec = RSpec(RSpecConverter.to_pg_rspec(rspec, 'request'))
-                    filter = {'component_manager_id': server_version['urn']}
-                    rspec.filter(filter)
-                    rspec = rspec.toxml()
-                rspec = server.Allocate(xrn, credential, rspec, expiration, options)
-                return {"aggregate": aggregate, "rspec": rspec, "elapsed": time.time()-tStart, "status": "success"}
+                    #rspec = RSpec(RSpecConverter.to_pg_rspec(rspec, 'request'))
+                    #filter = {'component_manager_id': server_version['urn']}
+                    #rspec.filter(filter)
+                    #rspec = rspec.toxml()
+                result = server.Allocate(xrn, credential, rspec, options)
+                return {"aggregate": aggregate, "result": result, "elapsed": time.time()-tStart, "status": "success"}
             except:
                 logger.log_exc('Something wrong in _Allocate with URL %s'%server.url)
                 return {"aggregate": aggregate, "elapsed": time.time()-tStart, "status": "exception", "exc_info": sys.exc_info()}
@@ -243,7 +242,7 @@ class SliceManager:
             interface = api.aggregates[aggregate]
             server = api.server_proxy(interface, cred)
             # Just send entire RSpec to each aggregate
-            threads.run(_Allocate, aggregate, server, xrn, [cred], rspec.toxml(), expiration, options)
+            threads.run(_Allocate, aggregate, server, xrn, [cred], rspec.toxml(), options)
                 
         results = threads.get_results()
         manifest_version = version_manager._get_version(rspec.version.type, rspec.version.version, 'manifest')
@@ -256,9 +255,10 @@ class SliceManager:
                                    result["status"], result.get("exc_info",None))
             if result["status"]=="success":
                 try:
-                    geni_urn = result['result']['geni_urn']
-                    result_rspec.version.merge(ReturnValue.get_value(result['result']['geni_rspec']))
-                    geni_slivers.extend(result['result']['geni_slivers'])
+                    res = result['result']['value']
+                    geni_urn = res['geni_urn']
+                    result_rspec.version.merge(ReturnValue.get_value(res['geni_rspec']))
+                    geni_slivers.extend(res['geni_slivers'])
                 except:
                     api.logger.log_exc("SM.Allocate: Failed to merge aggregate rspec")
         return {
@@ -314,9 +314,10 @@ class SliceManager:
                                    result["status"], result.get("exc_info",None))
             if result["status"]=="success":
                 try:
-                    geni_urn = result['result']['geni_urn']
-                    result_rspec.version.merge(ReturnValue.get_value(result['result']['geni_rspec']))
-                    geni_slivers.extend(result['result']['geni_slivers'])
+                    res = result['result']['value']
+                    geni_urn = res['geni_urn']
+                    result_rspec.version.merge(ReturnValue.get_value(res['geni_rspec']))
+                    geni_slivers.extend(res['geni_slivers'])
                 except:
                     api.logger.log_exc("SM.Provision: Failed to merge aggregate rspec")
         return {
@@ -327,13 +328,13 @@ class SliceManager:
 
 
     
-    def RenewSliver(self, api, xrn, creds, expiration_time, options):
+    def Renew(self, api, xrn, creds, expiration_time, options):
         call_id = options.get('call_id')
         if Callids().already_handled(call_id): return True
 
-        def _RenewSliver(aggregate, server, xrn, creds, expiration_time, options):
+        def _Renew(aggregate, server, xrn, creds, expiration_time, options):
             try:
-                result=server.RenewSliver(xrn, creds, expiration_time, options)
+                result=server.Renew(xrn, creds, expiration_time, options)
                 if type(result)!=dict:
                     result = {'code': {'geni_code': 0}, 'value': result}
                 result['aggregate'] = aggregate
@@ -344,9 +345,8 @@ class SliceManager:
                         'code': {'geni_code': -1},
                         'value': False, 'output': ""}
 
-        (hrn, urn_type) = urn_to_hrn(xrn)
         # get the callers hrn
-        valid_cred = api.auth.checkCredentials(creds, 'renewsliver', hrn)[0]
+        valid_cred = api.auth.checkCredentials(creds, 'renewsliver', xrn)[0]
         caller_hrn = Credential(cred=valid_cred).get_gid_caller().get_hrn()
 
         # attempt to use delegated credential first
@@ -377,12 +377,12 @@ class SliceManager:
 
         return results
 
-    def DeleteSliver(self, api, xrn, creds, options):
+    def Delete(self, api, xrn, creds, options):
         call_id = options.get('call_id')
         if Callids().already_handled(call_id): return ""
 
-        def _DeleteSliver(server, xrn, creds, options):
-            return server.DeleteSliver(xrn, creds, options)
+        def _Delete(server, xrn, creds, options):
+            return server.Delete(xrn, creds, options)
 
         (hrn, type) = urn_to_hrn(xrn)
         # get the callers hrn
index dc8a8ac..17ca1d6 100644 (file)
@@ -6,13 +6,13 @@ from sfa.util.sfalogging import logger
 from sfa.util.faults import SliverDoesNotExist
 from sfa.rspecs.rspec import RSpec
 from sfa.rspecs.elements.hardware_type import HardwareType
-from sfa.rspecs.elements.node import Node
+from sfa.rspecs.elements.node import NodeElement
 from sfa.rspecs.elements.link import Link
 from sfa.rspecs.elements.sliver import Sliver
 from sfa.rspecs.elements.login import Login
 from sfa.rspecs.elements.location import Location
 from sfa.rspecs.elements.interface import Interface
-from sfa.rspecs.elements.services import Services
+from sfa.rspecs.elements.services import ServicesElement
 from sfa.rspecs.elements.pltag import PLTag
 from sfa.rspecs.elements.lease import Lease
 from sfa.rspecs.elements.granularity import Granularity
@@ -190,7 +190,7 @@ class PlAggregate:
         return slivers
 
     def node_to_rspec_node(self, node, sites, interfaces, node_tags, pl_initscripts=[], grain=None, options={}):
-        rspec_node = Node()
+        rspec_node = NodeElement()
         # xxx how to retrieve site['login_base']
         site=sites[node['site_id']]
         rspec_node['component_id'] = PlXrn(self.driver.hrn, hostname=node['hostname']).get_urn()
@@ -260,7 +260,7 @@ class PlAggregate:
                        'username': sliver['name'],
                        'login': sliver['name']
                       })
-        service = Services({'login': login,
+        service = ServicesElement({'login': login,
                             'services_user': sliver['services_user']})
         rspec_node['services'] = [service]    
         return rspec_node      
index 7358ee0..26fcfdd 100644 (file)
@@ -1,6 +1,6 @@
 from sfa.rspecs.elements.element import Element
  
-class Node(Element):
+class NodeElement(Element):
     
     fields = [
         'component_id',
index e90b645..e159d70 100644 (file)
@@ -1,6 +1,6 @@
 from sfa.rspecs.elements.element import Element
 
-class Services(Element):
+class ServicesElement(Element):
 
     fields = [
         'install',
index f8c0d01..1ddaa73 100644 (file)
@@ -1,7 +1,7 @@
 from sfa.util.xrn import Xrn
 from sfa.util.xml import XpathFilter
 
-from sfa.rspecs.elements.node import Node
+from sfa.rspecs.elements.node import NodeElement
 from sfa.rspecs.elements.sliver import Sliver
 from sfa.rspecs.elements.location import Location
 from sfa.rspecs.elements.hardware_type import HardwareType
@@ -74,7 +74,7 @@ class Node:
     def get_node_objs(node_elems):
         nodes = []
         for node_elem in node_elems:
-            node = Node(node_elem.attrib, node_elem)
+            node = NodeElement(node_elem.attrib, node_elem)
             nodes.append(node) 
             if 'component_id' in node_elem.attrib:
                 node['authority_id'] = Xrn(node_elem.attrib['component_id']).get_authority_urn()
index b4ac1ca..7211108 100644 (file)
@@ -1,7 +1,7 @@
 from sfa.rspecs.elements.element import Element  
 from sfa.rspecs.elements.execute import Execute  
 from sfa.rspecs.elements.install import Install  
-from sfa.rspecs.elements.services import Services  
+from sfa.rspecs.elements.services import ServicesElement  
 from sfa.rspecs.elements.login import Login
 
 class Services:
@@ -39,7 +39,7 @@ class Services:
     def get_services(xml):
         services = []
         for services_elem in xml.xpath('./default:services | ./services'):
-            service = Services(services_elem.attrib, services_elem)
+            service = ServicesElement(services_elem.attrib, services_elem)
             # get install 
             install_elems = xml.xpath('./default:install | ./install')
             service['install'] = [install_elem.get_instance(Install) for install_elem in install_elems]
@@ -51,10 +51,10 @@ class Services:
             service['login'] = [login_elem.get_instance(Login) for login_elem in login_elems]
             
             ssh_user_elems = xml.xpath('./ssh-user:service_user | ./service_user')
-            service_users = []    
+            services_user = []    
             for ssh_user_elem in ssh_user_elems:
-                service_user = ssh_user_elem.get_instance(None, fields=['login', 'user_urn'])
-            service['services_user'] = service_user
+                services_user = ssh_user_elem.get_instance(None, fields=['login', 'user_urn'])
+            service['services_user'] = services_user
             services.append(service)  
         return services
 
index fc5de15..a5c4364 100644 (file)
@@ -1,7 +1,7 @@
 from sfa.util.xrn import Xrn
 from sfa.util.xml import XpathFilter
 
-from sfa.rspecs.elements.node import Node
+from sfa.rspecs.elements.node import NodeElement
 from sfa.rspecs.elements.sliver import Sliver
 from sfa.rspecs.elements.location import Location
 from sfa.rspecs.elements.hardware_type import HardwareType
@@ -74,7 +74,7 @@ class PGv2Node:
     def get_node_objs(node_elems):
         nodes = []
         for node_elem in node_elems:
-            node = Node(node_elem.attrib, node_elem)
+            node = NodeElement(node_elem.attrib, node_elem)
             nodes.append(node) 
             if 'component_id' in node_elem.attrib:
                 node['authority_id'] = Xrn(node_elem.attrib['component_id']).get_authority_urn()
index be1d618..ff9e9d1 100644 (file)
@@ -1,7 +1,7 @@
 from sfa.rspecs.elements.element import Element  
 from sfa.rspecs.elements.execute import Execute  
 from sfa.rspecs.elements.install import Install  
-from sfa.rspecs.elements.services import Services  
+from sfa.rspecs.elements.services import ServicesElement  
 from sfa.rspecs.elements.login import Login
 
 class PGv2Services:
@@ -28,7 +28,7 @@ class PGv2Services:
     def get_services(xml):
         services = []
         for services_elem in xml.xpath('./default:services | ./services'):
-            service = Services(services_elem.attrib, services_elem)
+            service = ServicesElement(services_elem.attrib, services_elem)
             # get install 
             install_elems = xml.xpath('./default:install | ./install')
             service['install'] = [install_elem.get_instance(Install) for install_elem in install_elems]
index 024a52e..7eddec7 100644 (file)
@@ -3,7 +3,7 @@ from sfa.util.xml import XpathFilter
 from sfa.util.xrn import Xrn
 
 from sfa.rspecs.elements.element import Element
-from sfa.rspecs.elements.node import Node
+from sfa.rspecs.elements.node import NodeElement
 from sfa.rspecs.elements.sliver import Sliver
 from sfa.rspecs.elements.location import Location
 from sfa.rspecs.elements.hardware_type import HardwareType
@@ -122,7 +122,7 @@ class SFAv1Node:
     def get_node_objs(node_elems):
         nodes = []    
         for node_elem in node_elems:
-            node = Node(node_elem.attrib, node_elem)
+            node = NodeElement(node_elem.attrib, node_elem)
             if 'site_id' in node_elem.attrib:
                 node['authority_id'] = node_elem.attrib['site_id']
             # get location