From dcc44289d958d6e2898ead4fefea755d54ecdcf9 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Thu, 31 Jan 2013 20:46:15 -0500 Subject: [PATCH] bug fixes --- sfa/managers/slice_manager.py | 50 ++++++++++---------- sfa/planetlab/plaggregate.py | 8 ++-- sfa/rspecs/elements/node.py | 2 +- sfa/rspecs/elements/services.py | 2 +- sfa/rspecs/elements/v3/node.py | 4 +- sfa/rspecs/elements/v3/services.py | 10 ++-- sfa/rspecs/elements/versions/pgv2Node.py | 4 +- sfa/rspecs/elements/versions/pgv2Services.py | 4 +- sfa/rspecs/elements/versions/sfav1Node.py | 4 +- 9 files changed, 44 insertions(+), 44 deletions(-) diff --git a/sfa/managers/slice_manager.py b/sfa/managers/slice_manager.py index 7d95bfb7..d914d1af 100644 --- a/sfa/managers/slice_manager.py +++ b/sfa/managers/slice_manager.py @@ -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 diff --git a/sfa/planetlab/plaggregate.py b/sfa/planetlab/plaggregate.py index dc8a8ac7..17ca1d6f 100644 --- a/sfa/planetlab/plaggregate.py +++ b/sfa/planetlab/plaggregate.py @@ -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 diff --git a/sfa/rspecs/elements/node.py b/sfa/rspecs/elements/node.py index 7358ee03..26fcfdd5 100644 --- a/sfa/rspecs/elements/node.py +++ b/sfa/rspecs/elements/node.py @@ -1,6 +1,6 @@ from sfa.rspecs.elements.element import Element -class Node(Element): +class NodeElement(Element): fields = [ 'component_id', diff --git a/sfa/rspecs/elements/services.py b/sfa/rspecs/elements/services.py index e90b6455..e159d70c 100644 --- a/sfa/rspecs/elements/services.py +++ b/sfa/rspecs/elements/services.py @@ -1,6 +1,6 @@ from sfa.rspecs.elements.element import Element -class Services(Element): +class ServicesElement(Element): fields = [ 'install', diff --git a/sfa/rspecs/elements/v3/node.py b/sfa/rspecs/elements/v3/node.py index f8c0d012..1ddaa737 100644 --- a/sfa/rspecs/elements/v3/node.py +++ b/sfa/rspecs/elements/v3/node.py @@ -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() diff --git a/sfa/rspecs/elements/v3/services.py b/sfa/rspecs/elements/v3/services.py index b4ac1cac..72111085 100644 --- a/sfa/rspecs/elements/v3/services.py +++ b/sfa/rspecs/elements/v3/services.py @@ -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 diff --git a/sfa/rspecs/elements/versions/pgv2Node.py b/sfa/rspecs/elements/versions/pgv2Node.py index fc5de15f..a5c4364a 100644 --- a/sfa/rspecs/elements/versions/pgv2Node.py +++ b/sfa/rspecs/elements/versions/pgv2Node.py @@ -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() diff --git a/sfa/rspecs/elements/versions/pgv2Services.py b/sfa/rspecs/elements/versions/pgv2Services.py index be1d618e..ff9e9d13 100644 --- a/sfa/rspecs/elements/versions/pgv2Services.py +++ b/sfa/rspecs/elements/versions/pgv2Services.py @@ -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] diff --git a/sfa/rspecs/elements/versions/sfav1Node.py b/sfa/rspecs/elements/versions/sfav1Node.py index 024a52e6..7eddec71 100644 --- a/sfa/rspecs/elements/versions/sfav1Node.py +++ b/sfa/rspecs/elements/versions/sfav1Node.py @@ -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 -- 2.43.0