X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FSliceInstantiations.py;h=c0658d4c8d36891b4236f1021544a91d6726f25a;hb=da06561d0f5240a5409474e16824e4e015f31fac;hp=e8c5f0f304cd4c85ee2feeb1a19585d8640aacf7;hpb=79b72b20a74ab20f66f69bcfd9947ccb191736fd;p=plcapi.git diff --git a/PLC/SliceInstantiations.py b/PLC/SliceInstantiations.py index e8c5f0f..c0658d4 100644 --- a/PLC/SliceInstantiations.py +++ b/PLC/SliceInstantiations.py @@ -4,16 +4,48 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: SliceInstantiations.py,v 1.1 2006/10/02 15:36:48 mlhuang Exp $ -# -class SliceInstantiations(list): +from PLC.Faults import * +from PLC.Parameter import Parameter +from PLC.Table import Row, Table + +class SliceInstantiation(Row): + """ + Representation of a row in the slice_instantiations table. To use, + instantiate with a dict of values. + """ + + table_name = 'slice_instantiations' + primary_key = 'instantiation' + join_tables = ['slices'] + fields = { + 'instantiation': Parameter(str, "Slice instantiation state", max = 100), + } + + def validate_instantiation(self, instantiation): + # Make sure name is not blank + if not len(instantiation): + raise PLCInvalidArgument, "Slice instantiation state name must be specified" + + # Make sure slice instantiation does not alredy exist + conflicts = SliceInstantiations(self.api, [instantiation]) + if conflicts: + raise PLCInvalidArgument, "Slice instantiation state name already in use" + + return instantiation + +class SliceInstantiations(Table): """ Representation of the slice_instantiations table in the database. """ - def __init__(self, api): - sql = "SELECT instantiation FROM slice_instantiations" + def __init__(self, api, instantiations = None): + Table.__init__(self, api, SliceInstantiation) + + sql = "SELECT %s FROM slice_instantiations" % \ + ", ".join(SliceInstantiation.fields) + + if instantiations: + sql += " WHERE instantiation IN (%s)" % ", ".join( [ api.db.quote (i) for i in instantiations ] ) - for row in api.db.selectall(sql): - self.append(row['instantiation']) + self.selectall(sql)