1 from types import StringTypes
4 from PLC.Faults import *
5 from PLC.Parameter import Parameter, Mixed
6 from PLC.NovaObject import NovaObject, NovaObjects
7 from PLC.Slices import Slice, Slices
8 #from PLC.Persons import Person, Persons
12 Representation of a row in the sites table. To use, optionally
13 instantiate with a dict of values. Update as you would a
14 dict. Commit to the database with sync().
18 'enabled': Parameter(bool, "Has been enabled"),
19 'id': Parameter(str, "Site identifier"),
20 'tenant_name': Parameter(str, "Full site name", max = 254),
21 'description': Parameter(str, "Description", max = 254),
22 #'max_slices': Parameter(int, "Maximum number of slices that the site is able to create"),
23 #'max_slivers': Parameter(int, "Maximum number of slivers that the site is able to create"),
24 'person_ids': Parameter([int], "List of account identifiers"),
25 'slice_ids': Parameter([int], "List of slice identifiers"),
26 'pcu_ids': Parameter([int], "List of PCU identifiers"),
27 'node_ids': Parameter([int], "List of site node identifiers"),
30 class Sites(NovaObjects):
32 Representation of row(s) from the sites table in the
36 def __init__(self, api, site_filter = None, columns = None):
38 self.fields = Site.fields
40 sites = self.api.client_shell.keystone.tenants.findall()
41 elif isinstance(site_filter, StringTypes):
42 sites = [self.api.client_shell.keystone.tenants.find(id=site_filter)]
43 elif isinstance(site_filter, StringTypes):
44 sites = [self.api.client_shell.keystone.tenants.find(**site_filter)]
45 elif isinstance(site_filter, (list, tuple, set)):
46 sites = self.api.client_shell.keystone.tenants.findall()
47 sites = [site for site in sites if site.id in site_filter]
49 raise PLCInvalidArgument, "Wrong site filter %s" % site_filter