from PLC.Debug import profile
from PLC.Table import Row, Table
from PLC.SliceInstantiations import SliceInstantiation, SliceInstantiations
-from PLC.Nodes import Node, Nodes
+from PLC.Nodes import Node
from PLC.Persons import Person, Persons
class Slice(Row):
table_name = 'slices'
primary_key = 'slice_id'
- join_tables = ['slice_node', 'slice_person', 'slice_attribute', 'peer_slice']
+ join_tables = ['slice_node', 'slice_person', 'slice_attribute', 'peer_slice', 'node_slice_whitelist']
fields = {
'slice_id': Parameter(int, "Slice identifier"),
'site_id': Parameter(int, "Identifier of the site to which this slice belongs"),
# 2. Begins with login_base (letters or numbers).
# 3. Then single underscore after login_base.
# 4. Then letters, numbers, or underscores.
- good_name = r'^[a-z0-9]+_[a-z0-9_]+$'
+ good_name = r'^[a-z0-9]+_[a-zA-Z0-9_]+$'
if not name or \
not re.match(good_name, name):
raise PLCInvalidArgument, "Invalid slice name"
add_node = Row.add_object(Node, 'slice_node')
remove_node = Row.remove_object(Node, 'slice_node')
+ add_to_node_whitelist = Row.add_object(Node, 'node_slice_whitelist')
+ delete_from_node_whitelist = Row.remove_object(Node, 'node_slice_whitelist')
+
def sync(self, commit = True):
"""
Add or update a slice.
if expires is not None:
if expires >= 0:
- sql += " AND expires > %(expires)d"
+ sql += " AND expires > %d" % expires
else:
expires = -expires
- sql += " AND expires < %(expires)d"
+ sql += " AND expires < %d" % expires
if slice_filter is not None:
if isinstance(slice_filter, (list, tuple, set)):
slice_filter = Filter(Slice.fields, slice_filter)
sql += " AND (%s)" % slice_filter.sql(api, "AND")
- self.selectall(sql, locals())
+ self.selectall(sql)