X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager_eucalyptus.py;h=2356f333d7fc6f368b2cdcdf04734e990d690e60;hb=a0ef6e7c91c3c8fa376943d28fec8c5c204a78cd;hp=4d73ab1729a94e1863eeb9cf9e5456ac11b9e8e4;hpb=53826738357e5adf0a199373e34bfb7800f90e1f;p=sfa.git diff --git a/sfa/managers/aggregate_manager_eucalyptus.py b/sfa/managers/aggregate_manager_eucalyptus.py index 4d73ab17..2356f333 100644 --- a/sfa/managers/aggregate_manager_eucalyptus.py +++ b/sfa/managers/aggregate_manager_eucalyptus.py @@ -15,9 +15,8 @@ from xmlbuilder import XMLBuilder from lxml import etree as ET from sqlobject import * -from sfa.util.faults import InvalidRSpec, +from sfa.util.faults import InvalidRSpec from sfa.util.xrn import urn_to_hrn, Xrn -from sfa.util.plxrn import hrn_to_pl_slicename, slicename_to_hrn from sfa.util.callids import Callids #comes with its own logging #from sfa.util.sfalogging import logger @@ -25,12 +24,12 @@ from sfa.util.version import version_core from sfa.trust.credential import Credential -from sfa.server.sfaapi import SfaApi +from sfa.rspecs.version_manager import VersionManager +from sfa.rspecs.rspec import RSpec -from sfa.plc.aggregate import Aggregate -from sfa.plc.slices import Slice, Slices -# not sure what this used to be nor where it is now defined -#from sfa.rspecs.sfa_rspec import sfa_rspec_version +from sfa.planetlab.plaggregate import PlAggregate +from sfa.planetlab.plslices import PlSlices +from sfa.planetlab.plxrn import slicename_to_hrn ## # Meta data of an instance. @@ -80,7 +79,7 @@ class EucaInstance(SQLObject): self.instance_id = instance.id # If there is an error, destroy itself. - except EC2ResponseError, ec2RespErr: + except EC2ResponseError as ec2RespErr: errTree = ET.fromstring(ec2RespErr.body) msg = errTree.find('.//Message') logger.error(msg.text) @@ -284,7 +283,7 @@ class AggregateManagerEucalyptus: _inited=False # the init_server mechanism has vanished - def __init__ (self): + def __init__ (self, config): if AggregateManagerEucalyptus._inited: return AggregateManagerEucalyptus.init_server() @@ -445,7 +444,8 @@ class AggregateManagerEucalyptus: port=eucaPort, path=srvPath) - def ListResources(api, creds, options, call_id): + def ListResources(api, creds, options): + call_id = options.get('call_id') if Callids().already_handled(call_id): return "" # get slice's hrn from options xrn = options.get('geni_slice_urn', '') @@ -524,7 +524,7 @@ class AggregateManagerEucalyptus: instList.append(instInfoDict) AggregateManagerEucalyptus.cloud['instances'] = instancesDict - except EC2ResponseError, ec2RespErr: + except EC2ResponseError as ec2RespErr: errTree = ET.fromstring(ec2RespErr.body) errMsgE = errTree.find('.//Message') logger.error(errMsgE.text) @@ -541,14 +541,15 @@ class AggregateManagerEucalyptus: """ Hook called via 'sfi.py create' """ - def CreateSliver(api, slice_xrn, creds, xml, users, call_id): + def CreateSliver(api, slice_xrn, creds, xml, users, options): + call_id = options.get('call_id') if Callids().already_handled(call_id): return "" logger = logging.getLogger('EucaAggregate') logger.debug("In CreateSliver") - aggregate = Aggregate(api) - slices = Slices(api) + aggregate = PlAggregate(self.driver) + slices = PlSlices(self.driver) (hrn, type) = urn_to_hrn(slice_xrn) peer = slices.get_peer(hrn) sfa_peer = slices.get_sfa_peer(hrn) @@ -643,7 +644,7 @@ class AggregateManagerEucalyptus: ramdisk_id = instRamDisk, key_pair = instKey, inst_type = instType, - meta = Meta(start_time=datetime.datetime.now())) + meta = Meta(start_time=datetime.datetime.utcnow())) eucaInst.reserveInstance(conn, pubKeys) # xxx - should return altered rspec @@ -660,7 +661,7 @@ class AggregateManagerEucalyptus: try: os.makedirs(outdir) - except OSError, e: + except OSError as e: if e.errno != errno.EEXIST: raise @@ -678,16 +679,23 @@ class AggregateManagerEucalyptus: f.write("%s %s %s\n" % (instId, ipaddr, hrn)) f.close() - def GetVersion(api): + def GetVersion(api, options): + + version_manager = VersionManager() + ad_rspec_versions = [] + request_rspec_versions = [] + for rspec_version in version_manager.versions: + if rspec_version.content_type in ['*', 'ad']: + ad_rspec_versions.append(rspec_version.to_dict()) + if rspec_version.content_type in ['*', 'request']: + request_rspec_versions.append(rspec_version.to_dict()) xrn=Xrn(api.hrn) - request_rspec_versions = [dict(sfa_rspec_version)] - ad_rspec_versions = [dict(sfa_rspec_version)] version_more = {'interface':'aggregate', + 'sfa': 1, + 'geni_api': '2', 'testbed':'myplc', 'hrn':xrn.get_hrn(), - 'request_rspec_versions': request_rspec_versions, - 'ad_rspec_versions': ad_rspec_versions, - 'default_ad_rspec': dict(sfa_rspec_version) + 'geni_request_rspec_versions': request_rspec_versions, + 'geni_ad_rspec_versions': ad_rspec_versions, } return version_core(version_more) -