From: Tony Mack Date: Mon, 11 Mar 2013 12:36:54 +0000 (-0400) Subject: Fix slice tags X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=a8ae484b8e09d6447940e3a86fede39839c6d725;p=plcapi.git Fix slice tags --- diff --git a/PLC/Methods/AddSliceTag.py b/PLC/Methods/AddSliceTag.py index ef78fa68..6d6b1e0b 100644 --- a/PLC/Methods/AddSliceTag.py +++ b/PLC/Methods/AddSliceTag.py @@ -76,6 +76,10 @@ class AddSliceTag(Method): slice_tag = SliceTag(self.api) slice_tag['slice_id'] = slice['slice_id'] slice_tag['tag_type_id'] = tag_type['tag_type_id'] + slice_tag['name'] = slice['name'] + slice_tag['tagname'] = tag_type['tagname'] + slice_tag['category'] = tag_type['category'] + slice_tag['description'] = tag_type['description'] slice_tag['value'] = unicode(value) # Sliver attribute if node is specified diff --git a/PLC/SliceTags.py b/PLC/SliceTags.py index b629772b..793fe338 100644 --- a/PLC/SliceTags.py +++ b/PLC/SliceTags.py @@ -41,6 +41,8 @@ class SliceTag(AlchemyObj): """ AlchemyObj.sync(self, commit, validate) AlchemyObj.insert(self, dict(self)) + slice_tag = AlchemyObj.select(self, dict(self))[0] + self['slice_tag_id'] = slice_tag['slice_tag_id'] def delete(self, commit = True): """ @@ -58,12 +60,19 @@ class SliceTags(list): def __init__(self, api, filter = None, columns = None): # the view that we're selecting upon: start with view_slices - if not filter: - slice_tags = SliceTags().select() - elif isinstance(filter, dict): - slices_tags = SliceTags().select(filter=filter) + if not tag_filter: + slice_tags = SliceTag().select() + elif isinstance(tag_filter, dict): + slice_tags = SliceTag().select(filter=tag_filter) + elif isinstance(tag_filter, int): + slice_tags = SliceTag().select(filter={'slice_tag_id': tag_filter}) + elif isinstance(tag_filter, (list, tuple, set)): + ints = filter(lambda x: isinstance(x, (int, long)), tag_filter) + strs = filter(lambda x: isinstance(x, StringTypes), tag_filter) + tag_filter = {'slice_tag_id': ints} + slice_tags = SliceTag().select(filter=tag_filter) else: - raise PLCInvalidArgument, "Wrong slice_tag filter %r"%filter + raise PLCInvalidArgument, "Wrong slice_tag filter %r"%tag_filter for slice_tag in slice_tags: - self.append(slice_tag) + self.append(SliceTag(api, object=slice_tag, columns=columns)) diff --git a/PLC/TagTypes.py b/PLC/TagTypes.py index 78cc56fc..30553e7e 100644 --- a/PLC/TagTypes.py +++ b/PLC/TagTypes.py @@ -48,7 +48,7 @@ class TagType (AlchemyObj): if insert == True or 'tag_type_id' not in self: AlchemyObj.insert(self, dict(self)) tag_type = AlchemyObj.select(self, filter={'tagname': self['tagname']}) - self['tag_type_id'] = tag_type['tag_type_id'] + self['tag_type_id'] = tag_type.tag_type_id else: AlchemyObj.update(self, dict(self))