added create_network(), delete_network(), create_subnet(), delete_subnet(), process_t...
[plcapi.git] / PLC / NodeNodeGroup.py
1 from types import StringTypes
2 import time
3 import re
4 import datetime
5
6 from PLC.Faults import *
7 from PLC.Parameter import Parameter, Mixed
8 from PLC.Filter import Filter
9 from PLC.Debug import profile
10 from PLC.Timestamp import Timestamp
11 from PLC.Storage.AlchemyObject import AlchemyObj
12
13 class NodeNodeGroup(AlchemyObj):
14     """
15     Representation of a row in the node_nodegroup table. To use, optionally
16     instantiate with a dict of values. Update as you would a
17     dict. Commit to the database with sync().To use, instantiate
18     with a dict of values.
19     """
20
21     tablename = 'node_nodegroup'
22  
23     fields = {
24         'nodegroup_id': Parameter(int, "Nodegroup identifier", primary_key=True),
25         'node_id': Parameter(int, "Node identifier", indexed=True),
26         }
27
28     tags = {}
29
30     def sync(self, commit = True, validate=True):
31         """
32         Add the record
33         """
34         AlchemyObj.sync(self, commit, validate)
35         AlchemyObj.insert(self, dict(self))
36
37     def delete(self, commit = True):
38         """
39         Delete existing slice.
40         """
41         AlchemyObj.delete(self, dict(self))
42
43
44 class NodeNodeGroups(list):
45     """
46     Representation of row(s) from the node_nodegroup table in the
47     database.
48     """
49
50     def __init__(self, api, filter = None, columns = None):
51          
52         # the view that we're selecting upon: start with view_slices
53         if not filter:
54             node_nodegroups = NodeNodeGroup().select()
55         elif isinstance(filter, dict):
56             node_nodegroups = NodeNodeGroup().select(filter=filter)
57         else:
58             raise PLCInvalidArgument, "Wrong node_nodegroup filter %r"%filter
59
60         for node_nodegroup in node_nodegroups:
61             self.append(node_nodegroup)