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()
         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.
             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
                     # 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()}
             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
             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')
                 
         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:
                                    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 {
                 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:
                                    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 {
                 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
 
         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:
             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
                 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': ""}
 
                         'code': {'geni_code': -1},
                         'value': False, 'output': ""}
 
-        (hrn, urn_type) = urn_to_hrn(xrn)
         # get the callers hrn
         # 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
         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
 
 
         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 ""
 
         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
 
         (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.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.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
 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={}):
         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()
         # 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']
                       })
                        '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      
                             '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
  
 from sfa.rspecs.elements.element import Element
  
-class Node(Element):
+class NodeElement(Element):
     
     fields = [
         'component_id',
     
     fields = [
         'component_id',
index e90b645..e159d70 100644 (file)
@@ -1,6 +1,6 @@
 from sfa.rspecs.elements.element import Element
 
 from sfa.rspecs.elements.element import Element
 
-class Services(Element):
+class ServicesElement(Element):
 
     fields = [
         'install',
 
     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.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
 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:
     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()
             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.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:
 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'):
     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]
             # 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['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:
             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
 
             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.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
 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:
     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()
             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.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:
 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'):
     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]
             # 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.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
 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:
     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
             if 'site_id' in node_elem.attrib:
                 node['authority_id'] = node_elem.attrib['site_id']
             # get location