X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FSliceAttributes.py;h=cfc0298d09c688950849cd78aa7abc5613aef4af;hb=742e151057086a6771997d70ac7ed9f01ae1ba47;hp=2494acf60aa69392af15c50673008bb96f247805;hpb=5dc283f954f5a2b82429aa0c5d5d8c5fc64eefac;p=plcapi.git diff --git a/PLC/SliceAttributes.py b/PLC/SliceAttributes.py index 2494acf..cfc0298 100644 --- a/PLC/SliceAttributes.py +++ b/PLC/SliceAttributes.py @@ -1,7 +1,6 @@ -from types import StringTypes - from PLC.Faults import * from PLC.Parameter import Parameter +from PLC.Filter import Filter from PLC.Table import Row, Table from PLC.SliceAttributeTypes import SliceAttributeType, SliceAttributeTypes @@ -17,30 +16,31 @@ class SliceAttribute(Row): 'slice_attribute_id': Parameter(int, "Slice attribute identifier"), 'slice_id': Parameter(int, "Slice identifier"), 'node_id': Parameter(int, "Node identifier, if a sliver attribute"), + 'nodegroup_id': Parameter(int, "Nodegroup identifier, if a sliver attribute"), 'attribute_type_id': SliceAttributeType.fields['attribute_type_id'], 'name': SliceAttributeType.fields['name'], 'description': SliceAttributeType.fields['description'], 'min_role_id': SliceAttributeType.fields['min_role_id'], - # XXX Arbitrary max, make configurable - 'value': Parameter(str, "Slice attribute value", max = 254), + 'value': Parameter(str, "Slice attribute value"), } -class SliceAttributes(dict): +class SliceAttributes(Table): """ Representation of row(s) from the slice_attribute table in the database. """ - def __init__(self, api, slice_attribute_id_list): - self.api = api + def __init__(self, api, slice_attribute_filter = None, columns = None): + Table.__init__(self, api, SliceAttribute, columns) - sql = "SELECT %s FROM view_slice_attributes" % \ - ", ".join(SliceAttribute.fields) + sql = "SELECT %s FROM view_slice_attributes WHERE True" % \ + ", ".join(self.columns) - if slice_attribute_id_list: - sql += " WHERE slice_attribute_id IN (%s)" % ", ".join(map(str, slice_attribute_id_list)) + if slice_attribute_filter is not None: + if isinstance(slice_attribute_filter, (list, tuple, set)): + slice_attribute_filter = Filter(SliceAttribute.fields, {'slice_attribute_id': slice_attribute_filter}) + elif isinstance(slice_attribute_filter, dict): + slice_attribute_filter = Filter(SliceAttribute.fields, slice_attribute_filter) + sql += " AND (%s)" % slice_attribute_filter.sql(api) - rows = self.api.db.selectall(sql) - - for row in rows: - self[row['slice_attribute_id']] = SliceAttribute(api, row) + self.selectall(sql)