elif isinstance(address_type_filter, dict):
address_type_filter = Filter(AddressType.fields, address_type_filter)
sql += " AND (%s) %s" % address_type_filter.sql(api, "AND")
+ elif isinstance(address_type_filter, (int, long)):
+ address_type_filter = Filter(AddressType.fields, {'address_type_id': address_type_filter})
+ sql += " AND (%s) %s" % address_type_filter.sql(api, "AND")
+ elif isinstance(address_type_filter, StringTypes):
+ address_type_filter = Filter(AddressType.fields, {'name': address_type_filter})
+ sql += " AND (%s) %s" % address_type_filter.sql(api, "AND")
+ else:
+ raise PLCInvalidArgument, "Wrong address type filter %r"%address_type_filter
self.selectall(sql)
", ".join(self.columns)
if address_filter is not None:
- if isinstance(address_filter, (list, tuple, set)):
+ if isinstance(address_filter, (list, tuple, set, int, long)):
address_filter = Filter(Address.fields, {'address_id': address_filter})
elif isinstance(address_filter, dict):
address_filter = Filter(Address.fields, address_filter)
", ".join(self.columns)
if conf_file_filter is not None:
- if isinstance(conf_file_filter, (list, tuple, set)):
+ if isinstance(conf_file_filter, (list, tuple, set, int, long)):
conf_file_filter = Filter(ConfFile.fields, {'conf_file_id': conf_file_filter})
elif isinstance(conf_file_filter, dict):
conf_file_filter = Filter(ConfFile.fields, conf_file_filter)
", ".join(self.columns)
if event_filter is not None:
- if isinstance(event_filter, (list, tuple, set)):
+ if isinstance(event_filter, (list, tuple, set, int, long)):
event_filter = Filter(EventObject.fields, {'event_id': event_filter})
sql += " AND (%s) %s" % event_filter.sql(api, "OR")
elif isinstance(event_filter, dict):
event_filter = Filter(EventObject.fields, event_filter)
sql += " AND (%s) %s" % event_filter.sql(api, "AND")
- elif isinstance (event_filter, int):
- event_filter = Filter(EventObject.fields, {'event_id':[event_filter]})
- sql += " AND (%s) %s" % event_filter.sql(api, "AND")
else:
raise PLCInvalidArgument, "Wrong event object filter %r"%event_filter
", ".join(self.columns)
if event_filter is not None:
- if isinstance(event_filter, (list, tuple, set)):
+ if isinstance(event_filter, (list, tuple, set, int, long)):
event_filter = Filter(Event.fields, {'event_id': event_filter})
elif isinstance(event_filter, dict):
event_filter = Filter(Event.fields, event_filter)
+ else:
+ raise PLCInvalidArgument, "Wrong event object filter %r"%event_filter
sql += " AND (%s) %s" % event_filter.sql(api)
self.selectall(sql)
", ".join(self.columns)
if ilink_filter is not None:
- if isinstance(ilink_filter, (list, tuple, set)):
+ if isinstance(ilink_filter, (list, tuple, set, int, long)):
ilink_filter = Filter(Ilink.fields, {'ilink_id': ilink_filter})
elif isinstance(ilink_filter, dict):
ilink_filter = Filter(Ilink.fields, ilink_filter)
- elif isinstance(ilink_filter, int):
- ilink_filter = Filter(Ilink.fields, {'ilink_id': [ilink_filter]})
else:
raise PLCInvalidArgument, "Wrong ilink filter %r"%ilink_filter
sql += " AND (%s) %s" % ilink_filter.sql(api)
elif isinstance(initscript_filter, dict):
initscript_filter = Filter(InitScript.fields, initscript_filter)
sql += " AND (%s) %s" % initscript_filter.sql(api, "AND")
+ elif isinstance(initscript_filter, (int, long)):
+ initscript_filter = Filter(InitScript.fields, {'initscript_id': initscript_filter})
+ sql += " AND (%s) %s" % initscript_filter.sql(api, "AND")
+ elif isinstance(initscript_filter, StringTypes):
+ initscript_filter = Filter(InitScript.fields, {'name': initscript_filter})
+ sql += " AND (%s) %s" % initscript_filter.sql(api, "AND")
+ else:
+ raise PLCInvalidArgument, "Wrong initscript filter %r"%initscript_filter
self.selectall(sql)
", ".join(self.columns)
if interface_tag_filter is not None:
- if isinstance(interface_tag_filter, (list, tuple, set)):
+ if isinstance(interface_tag_filter, (list, tuple, set, int, long)):
interface_tag_filter = Filter(InterfaceTag.fields, {'interface_tag_id': interface_tag_filter})
elif isinstance(interface_tag_filter, dict):
interface_tag_filter = Filter(InterfaceTag.fields, interface_tag_filter)
- elif isinstance(interface_tag_filter, int):
- interface_tag_filter = Filter(InterfaceTag.fields, {'interface_tag_id': [interface_tag_filter]})
else:
raise PLCInvalidArgument, "Wrong interface setting filter %r"%interface_tag_filter
sql += " AND (%s) %s" % interface_tag_filter.sql(api)
", ".join(self.columns)
if key_filter is not None:
- if isinstance(key_filter, (list, tuple, set)):
+ if isinstance(key_filter, (list, tuple, set, int, long)):
key_filter = Filter(Key.fields, {'key_id': key_filter})
elif isinstance(key_filter, dict):
key_filter = Filter(Key.fields, key_filter)
+ else:
+ raise PLCInvalidArgument, "Wrong key filter %r"%key_filter
sql += " AND (%s) %s" % key_filter.sql(api)
self.selectall(sql)
if lease_filter is not None:
-
- if isinstance (lease_filter, int):
- lease_filter = Filter (Lease.fields, {'lease_id': lease_filter})
- elif isinstance(lease_filter, (list, tuple, set)):
+ if isinstance(lease_filter, (list, tuple, set, int, long)):
lease_filter = Filter(Lease.fields, {'lease_id': lease_filter})
elif isinstance(lease_filter, dict):
lease_filter = LeaseFilter(Lease.fields, lease_filter)
sql += " AND enabled IS %s" % enabled
if message_filter is not None:
- if isinstance(message_filter, (list, tuple, set)):
+ if isinstance(message_filter, (list, tuple, set, int, long)):
message_filter = Filter(Message.fields, {'message_id': message_filter})
sql += " AND (%s) %s" % message_filter.sql(api, "OR")
elif isinstance(message_filter, dict):
message_filter = Filter(Message.fields, message_filter)
sql += " AND (%s) %s" % message_filter.sql(api, "AND")
+ else:
+ raise PLCInvalidArgument, "Wrong message filter %r"%message_filter
self.selectall(sql)
def call(self, auth, address_id):
# Get associated address details
- addresses = Addresses(self.api, [address_id])
+ addresses = Addresses(self.api, address_id)
if not addresses:
raise PLCInvalidArgument, "No such address"
address = addresses[0]
elif isinstance(nodegroup_filter, dict):
nodegroup_filter = Filter(NodeGroup.fields, nodegroup_filter)
sql += " AND (%s) %s" % nodegroup_filter.sql(api, "AND")
+ elif isinstance(nodegroup_filter, (int, long)):
+ nodegroup_filter = Filter(NodeGroup.fields, {'nodegroup_id': nodegroup_filter})
+ sql += " AND (%s) %s" % nodegroup_filter.sql(api, "AND")
+ elif isinstance(nodegroup_filter, StringTypes):
+ nodegroup_filter = Filter(NodeGroup.fields, {'groupname': nodegroup_filter})
+ sql += " AND (%s) %s" % nodegroup_filter.sql(api, "AND")
+ else:
+ raise PLCInvalidArgument, "Wrong node group filter %r"%nodegroup_filter
self.selectall(sql)
", ".join(self.columns)
if node_tag_filter is not None:
- if isinstance(node_tag_filter, (list, tuple, set)):
+ if isinstance(node_tag_filter, (list, tuple, set, int, long)):
node_tag_filter = Filter(NodeTag.fields, {'node_tag_id': node_tag_filter})
elif isinstance(node_tag_filter, dict):
node_tag_filter = Filter(NodeTag.fields, node_tag_filter)
- elif isinstance(node_tag_filter, int):
- node_tag_filter = Filter(NodeTag.fields, {'node_tag_id': [node_tag_filter]})
else:
raise PLCInvalidArgument, "Wrong node tag filter %r"%node_tag_filter
sql += " AND (%s) %s" % node_tag_filter.sql(api)
node_filter = Filter(allowed_fields, node_filter)
sql += " AND (%s) %s" % node_filter.sql(api, "AND")
elif isinstance (node_filter, StringTypes):
- node_filter = Filter(Node.fields, {'hostname':[node_filter]})
+ node_filter = Filter(Node.fields, {'hostname':node_filter})
sql += " AND (%s) %s" % node_filter.sql(api, "AND")
- elif isinstance (node_filter, int):
- node_filter = Filter(Node.fields, {'node_id':[node_filter]})
+ elif isinstance (node_filter, (int, long)):
+ node_filter = Filter(Node.fields, {'node_id':node_filter})
sql += " AND (%s) %s" % node_filter.sql(api, "AND")
else:
raise PLCInvalidArgument, "Wrong node filter %r"%node_filter
", ".join(self.columns)
if protocol_type_filter is not None:
- if isinstance(protocol_type_filter, (list, tuple, set)):
- # Separate the list into integers and strings
- ints = filter(lambda x: isinstance(x, (int, long)), protocol_type_filter)
- protocol_type_filter = Filter(PCUProtocolType.fields, {'pcu_protocol_type_id': ints})
+ if isinstance(protocol_type_filter, (list, tuple, set, int, long)):
+ protocol_type_filter = Filter(PCUProtocolType.fields, {'pcu_protocol_type_id': protocol_type_filter})
sql += " AND (%s) %s" % protocol_type_filter.sql(api, "OR")
elif isinstance(protocol_type_filter, dict):
protocol_type_filter = Filter(PCUProtocolType.fields, protocol_type_filter)
- sql += " AND (%s) %s" % protocol_type_filter.sql(api, "AND")
- elif isinstance (protocol_type_filter, int):
- protocol_type_filter = Filter(PCUProtocolType.fields, {'pcu_protocol_type_id':[protocol_type_filter]})
-
sql += " AND (%s) %s" % protocol_type_filter.sql(api, "AND")
else:
raise PLCInvalidArgument, "Wrong pcu_protocol_type filter %r"%protocol_type_filter
pcu_type_filter = Filter(PCUType.fields, pcu_type_filter)
sql += " AND (%s) %s" % pcu_type_filter.sql(api, "AND")
elif isinstance (pcu_type_filter, StringTypes):
- pcu_type_filter = Filter(PCUType.fields, {'model':[pcu_type_filter]})
+ pcu_type_filter = Filter(PCUType.fields, {'model':pcu_type_filter})
sql += " AND (%s) %s" % pcu_type_filter.sql(api, "AND")
elif isinstance (pcu_type_filter, int):
- pcu_type_filter = Filter(PCUType.fields, {'pcu_type_id':[pcu_type_filter]})
+ pcu_type_filter = Filter(PCUType.fields, {'pcu_type_id':pcu_type_filter})
sql += " AND (%s) %s" % pcu_type_filter.sql(api, "AND")
else:
raise PLCInvalidArgument, "Wrong pcu_type filter %r"%pcu_type_filter
", ".join(self.columns)
if pcu_filter is not None:
- if isinstance(pcu_filter, (list, tuple, set)):
+ if isinstance(pcu_filter, (list, tuple, set, int, long)):
pcu_filter = Filter(PCU.fields, {'pcu_id': pcu_filter})
elif isinstance(pcu_filter, dict):
pcu_filter = Filter(PCU.fields, pcu_filter)
+ else:
+ raise PLCInvalidArgument, "Wrong pcu filter %r"%pcu_filter
sql += " AND (%s) %s" % pcu_filter.sql(api)
self.selectall(sql)
elif isinstance(peer_filter, dict):
peer_filter = Filter(Peer.fields, peer_filter)
sql += " AND (%s) %s" % peer_filter.sql(api, "AND")
+ elif isinstance(peer_filter, (int, long)):
+ peer_filter = Filter(Peer.fields, {'peer_id': peer_filter})
+ sql += " AND (%s) %s" % peer_filter.sql(api, "AND")
+ elif isinstance(peer_filter, StringTypes):
+ peer_filter = Filter(Peer.fields, {'peername': peer_filter})
+ sql += " AND (%s) %s" % peer_filter.sql(api, "AND")
+ else:
+ raise PLCInvalidArgument, "Wrong peer filter %r"%peer_filter
self.selectall(sql)
", ".join(self.columns)
if person_tag_filter is not None:
- if isinstance(person_tag_filter, (list, tuple, set)):
+ if isinstance(person_tag_filter, (list, tuple, set, int, long)):
person_tag_filter = Filter(PersonTag.fields, {'person_tag_id': person_tag_filter})
elif isinstance(person_tag_filter, dict):
person_tag_filter = Filter(PersonTag.fields, person_tag_filter)
- elif isinstance(person_tag_filter, int):
- person_tag_filter = Filter(PersonTag.fields, {'person_tag_id': [person_tag_filter]})
else:
raise PLCInvalidArgument, "Wrong person setting filter %r"%person_tag_filter
sql += " AND (%s) %s" % person_tag_filter.sql(api)
person_filter = Filter(Person.fields, person_filter)
sql += " AND (%s) %s" % person_filter.sql(api, "AND")
elif isinstance (person_filter, StringTypes):
- person_filter = Filter(Person.fields, {'email':[person_filter]})
+ person_filter = Filter(Person.fields, {'email':person_filter})
sql += " AND (%s) %s" % person_filter.sql(api, "AND")
- elif isinstance (person_filter, int):
- person_filter = Filter(Person.fields, {'person_id':[person_filter]})
+ elif isinstance (person_filter, (int, long)):
+ person_filter = Filter(Person.fields, {'person_id':person_filter})
sql += " AND (%s) %s" % person_filter.sql(api, "AND")
else:
raise PLCInvalidArgument, "Wrong person filter %r"%person_filter
elif isinstance(role_filter, dict):
role_filter = Filter(Role.fields, role_filter)
sql += " AND (%s) %s" % role_filter.sql(api, "AND")
+ elif isinstance(role_filter, (int, long)):
+ role_filter = Filter(Role.fields, {'role_id': role_filter})
+ sql += " AND (%s) %s" % role_filter.sql(api, "AND")
+ elif isinstance(role_filter, StringTypes):
+ role_filter = Filter(Role.fields, {'name': role_filter})
+ sql += " AND (%s) %s" % role_filter.sql(api, "AND")
+ else:
+ raise PLCInvalidArgument, "Wrong role filter %r"%role_filter
self.selectall(sql)
elif isinstance(session_filter, dict):
session_filter = Filter(Session.fields, session_filter)
sql += " AND (%s) %s" % session_filter.sql(api, "AND")
+ elif isinstance(session_filter, (int, long)):
+ session_filter = Filter(Session.fields, {'person_id': session_filter})
+ sql += " AND (%s) %s" % session_filter.sql(api, "AND")
+ elif isinstance(session_filter, StringTypes):
+ session_filter = Filter(Session.fields, {'session_id': session_filter})
+ sql += " AND (%s) %s" % session_filter.sql(api, "AND")
+ else:
+ raise PLCInvalidArgument, "Wrong session filter"%session_filter
if expires is not None:
if expires >= 0:
", ".join(self.columns)
if site_tag_filter is not None:
- if isinstance(site_tag_filter, (list, tuple, set)):
+ if isinstance(site_tag_filter, (list, tuple, set, int, long)):
site_tag_filter = Filter(SiteTag.fields, {'site_tag_id': site_tag_filter})
elif isinstance(site_tag_filter, dict):
site_tag_filter = Filter(SiteTag.fields, site_tag_filter)
- elif isinstance(site_tag_filter, int):
- site_tag_filter = Filter(SiteTag.fields, {'site_tag_id': [site_tag_filter]})
else:
raise PLCInvalidArgument, "Wrong site setting filter %r"%site_tag_filter
sql += " AND (%s) %s" % site_tag_filter.sql(api)
site_filter = Filter(Site.fields, site_filter)
sql += " AND (%s) %s" % site_filter.sql(api, "AND")
elif isinstance (site_filter, StringTypes):
- site_filter = Filter(Site.fields, {'login_base':[site_filter]})
+ site_filter = Filter(Site.fields, {'login_base':site_filter})
sql += " AND (%s) %s" % site_filter.sql(api, "AND")
- elif isinstance (site_filter, int):
- site_filter = Filter(Site.fields, {'site_id':[site_filter]})
+ elif isinstance (site_filter, (int, long)):
+ site_filter = Filter(Site.fields, {'site_id':site_filter})
sql += " AND (%s) %s" % site_filter.sql(api, "AND")
else:
raise PLCInvalidArgument, "Wrong site filter %r"%site_filter
", ".join(self.columns)
if slice_tag_filter is not None:
- if isinstance(slice_tag_filter, (list, tuple, set)):
+ if isinstance(slice_tag_filter, (list, tuple, set, int, long)):
slice_tag_filter = Filter(SliceTag.fields, {'slice_tag_id': slice_tag_filter})
elif isinstance(slice_tag_filter, dict):
slice_tag_filter = Filter(SliceTag.fields, slice_tag_filter)
+ else:
+ raise PLCInvalidArgument, "Wrong slice tag filter %r"%slice_tag_filter
sql += " AND (%s) %s" % slice_tag_filter.sql(api)
self.selectall(sql)
slice_filter = Filter(Slice.fields, slice_filter)
sql += " AND (%s) %s" % slice_filter.sql(api, "AND")
elif isinstance (slice_filter, StringTypes):
- slice_filter = Filter(Slice.fields, {'name':[slice_filter]})
+ slice_filter = Filter(Slice.fields, {'name':slice_filter})
sql += " AND (%s) %s" % slice_filter.sql(api, "AND")
- elif isinstance (slice_filter, int):
- slice_filter = Filter(Slice.fields, {'slice_id':[slice_filter]})
+ elif isinstance (slice_filter, (int, long)):
+ slice_filter = Filter(Slice.fields, {'slice_id':slice_filter})
sql += " AND (%s) %s" % slice_filter.sql(api, "AND")
else:
raise PLCInvalidArgument, "Wrong slice filter %r"%slice_filter
def validate_name(self, name):
if not len(name):
- raise PLCInvalidArgument, "node tag type name must be set"
+ raise PLCInvalidArgument, "tag type name must be set"
conflicts = TagTypes(self.api, [name])
for tag_type in conflicts:
if 'tag_type_id' not in self or \
self['tag_type_id'] != tag_type['tag_type_id']:
- raise PLCInvalidArgument, "node tag type name already in use"
+ raise PLCInvalidArgument, "tag type name already in use"
return name
elif isinstance(tag_type_filter, dict):
tag_type_filter = Filter(TagType.fields, tag_type_filter)
sql += " AND (%s) %s" % tag_type_filter.sql(api, "AND")
- elif isinstance (tag_type_filter, StringTypes):
- tag_type_filter = Filter(TagType.fields, {'tagname':[tag_type_filter]})
+ elif isinstance(tag_type_filter, (int, long)):
+ tag_type_filter = Filter(TagType.fields, {'tag_type_id':tag_type_filter})
sql += " AND (%s) %s" % tag_type_filter.sql(api, "AND")
- else:
- raise PLCInvalidArgument, "Wrong node tag type filter %r"%tag_type_filter
-
- self.selectall(sql)
-# $URL$
-#
-# Thierry Parmentelat - INRIA
-#
-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.Roles import Role, Roles
-
-# xxx todo : deleting a tag type should delete the related nodegroup(s)
-
-class TagType (Row):
-
- """
- Representation of a row in the tag_types table.
- """
-
- table_name = 'tag_types'
- primary_key = 'tag_type_id'
- join_tables = ['node_tag', 'interface_tag', 'slice_tag', 'site_tag', 'person_tag' ]
- fields = {
- 'tag_type_id': Parameter(int, "Node tag type identifier"),
- 'tagname': Parameter(str, "Node tag type name", max = 100),
- 'description': Parameter(str, "Node tag type description", max = 254),
- 'category' : Parameter (str, "Node tag category", max=64, optional=True),
- 'min_role_id': Parameter(int, "Minimum (least powerful) role that can set or change this attribute"),
- }
-
- def validate_name(self, name):
- if not len(name):
- raise PLCInvalidArgument, "node tag type name must be set"
-
- conflicts = TagTypes(self.api, [name])
- for tag_type in conflicts:
- if 'tag_type_id' not in self or \
- self['tag_type_id'] != tag_type['tag_type_id']:
- raise PLCInvalidArgument, "node tag type name already in use"
-
- return name
-
- def validate_min_role_id(self, role_id):
- roles = [row['role_id'] for row in Roles(self.api)]
- if role_id not in roles:
- raise PLCInvalidArgument, "Invalid role"
-
- return role_id
-
-class TagTypes(Table):
- """
- Representation of row(s) from the tag_types table
- in the database.
- """
-
- def __init__(self, api, tag_type_filter = None, columns = None):
- Table.__init__(self, api, TagType, columns)
-
- sql = "SELECT %s FROM tag_types WHERE True" % \
- ", ".join(self.columns)
-
- if tag_type_filter is not None:
- if isinstance(tag_type_filter, (list, tuple, set)):
- # Separate the list into integers and strings
- ints = filter(lambda x: isinstance(x, (int, long)), tag_type_filter)
- strs = filter(lambda x: isinstance(x, StringTypes), tag_type_filter)
- tag_type_filter = Filter(TagType.fields, {'tag_type_id': ints, 'tagname': strs})
- sql += " AND (%s) %s" % tag_type_filter.sql(api, "OR")
- elif isinstance(tag_type_filter, dict):
- tag_type_filter = Filter(TagType.fields, tag_type_filter)
- sql += " AND (%s) %s" % tag_type_filter.sql(api, "AND")
- elif isinstance (tag_type_filter, StringTypes):
- tag_type_filter = Filter(TagType.fields, {'tagname':[tag_type_filter]})
+ elif isinstance(tag_type_filter, StringTypes):
+ tag_type_filter = Filter(TagType.fields, {'tagname':tag_type_filter})
sql += " AND (%s) %s" % tag_type_filter.sql(api, "AND")
else:
- raise PLCInvalidArgument, "Wrong node tag type filter %r"%tag_type_filter
+ raise PLCInvalidArgument, "Wrong tag type filter %r"%tag_type_filter
self.selectall(sql)