From: Tony Mack Date: Sat, 9 Mar 2013 17:40:07 +0000 (-0500) Subject: fix Slice bugs X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=077f8b5a980198f091954297d689f7717c95c4db;p=plcapi.git fix Slice bugs --- diff --git a/PLC/Methods/AddSlice.py b/PLC/Methods/AddSlice.py index 0274e019..2ca7ae7d 100644 --- a/PLC/Methods/AddSlice.py +++ b/PLC/Methods/AddSlice.py @@ -100,7 +100,4 @@ class AddSlice(Method): else: UpdateSliceTag(self.api).__call__(auth,slice_tags[0]['slice_tag_id'],value) - self.event_objects = {'Slice': [slice['slice_id']]} - self.message = "Slice %d created" % slice['slice_id'] - return slice['slice_id'] diff --git a/PLC/Methods/GetSites.py b/PLC/Methods/GetSites.py index 2ca1b440..c0c6e329 100644 --- a/PLC/Methods/GetSites.py +++ b/PLC/Methods/GetSites.py @@ -28,5 +28,5 @@ class GetSites(Method): returns = [Site.fields] def call(self, auth, site_filter = None, return_fields = None): - sites = Sites(self.api, site_filter) + sites = Sites(self.api, site_filter, return_fields) return sites diff --git a/PLC/Slices.py b/PLC/Slices.py index 570256a1..bbc594ab 100644 --- a/PLC/Slices.py +++ b/PLC/Slices.py @@ -1,7 +1,7 @@ from types import StringTypes import time import re -import datetime +from datetime import datetime, timedelta from PLC.Faults import * from PLC.Parameter import Parameter, Mixed @@ -32,7 +32,7 @@ class Slice(AlchemyObj): 'instantiation': Parameter(str, "Slice instantiation state", nullok=True), 'url': Parameter(str, "URL further describing this slice", max = 254, nullok = True), 'description': Parameter(str, "Slice description", max = 2048, nullok = True), - 'max_nodes': Parameter(int, "Maximum number of nodes that can be assigned to this slice"), + 'max_nodes': Parameter(int, "Maximum number of nodes that can be assigned to this slice", default=100), 'creator_person_id': Parameter(str, "Identifier of the account that created this slice"), 'created': Parameter(datetime, "Date and time when slice was created, in seconds since UNIX epoch", ro = True), 'expires': Parameter(datetime, "Date and time when slice expires, in seconds since UNIX epoch"), @@ -134,17 +134,23 @@ class Slice(AlchemyObj): # sync the nova record and the plc record AlchemyObj.sync(self, commit=commit, validate=validate) # create the nova record - nova_fields = ['enabled', 'name', 'description'] + nova_fields = ['enabled', 'description'] nova_can_update = lambda (field, value): field in nova_fields nova_slice = dict(filter(nova_can_update, self.items())) + nova_slice['tenant_name'] = self['name'] if 'slice_id' not in self: + now = datetime.now() # Before a new slice is added, delete expired slices #expired = Slices(self.api, expires = -int(time.time())) #for slice in expired: # slice.delete(commit) self.object = self.api.client_shell.keystone.tenants.create(**nova_slice) self['tenant_id'] = self.object.id + self['created'] = now + self['expires'] = now + timedelta(days=14) AlchemyObj.insert(self, dict(self)) + slice = AlchemyObj.select(self, filter={'tenant_id': self['tenant_id']})[0] + self['slice_id'] = slice.slice_id else: self.object = self.api.client_shell.keystone.tenants.update(self['tenant_id'], **nova_slice) AlchemyObj.update(self, {'slice_id': self['slice_id']}, dict(self)) @@ -169,8 +175,7 @@ class Slice(AlchemyObj): slice_tag.delete() # delete slice - AlchemyObj.delete(self, dict(self)) - + AlchemyObj.delete(self, filter={'slice_id': self['slice_id']}) class Slices(list): """ @@ -189,22 +194,22 @@ class Slices(list): slices = Slice().select(filter=slice_filter) elif isinstance(slice_filter, (list, tuple, set)): slices = Slice().select() - slices = [slice for slice in slices if slice.id in slice_filter] + slices = [slice for slice in slices if slice.slice_id in slice_filter or slice.name in slice_filter] else: raise PLCInvalidArgument, "Wrong slice filter %r"%slice_filter for slice in slices: slice = Slice(api, object=slice) if not columns or 'person_ids' in columns: - slice_persons = SlicePerson().select(filter={'slice_id': slice.id}) + slice_persons = SlicePerson().select(filter={'slice_id': slice['slice_id']}) slice['person_ids'] = [rec.person_id for rec in slice_persons] if not columns or 'node_ids' in columns: - slice_nodes = SliceNode().select(filter={'slice_id': slice.id}) + slice_nodes = SliceNode().select(filter={'slice_id': slice['slice_id']}) slice['node_ids'] = [rec.node_id for rec in slice_nodes] if not columns or 'slice_tag_ids' in columns: - slice_tags = SliceTag().select(filter={'slice_id': slice.id}) + slice_tags = SliceTag().select(filter={'slice_id': slice['slice_id']}) slice['slice_tag_ids'] = [rec.slice_tag_id for rec in slice_tags] self.append(slice)