from PLC.Table import Row, Table
from PLC.SliceInstantiations import SliceInstantiations
from PLC.Nodes import Node, Nodes
-from PLC.ForeignNodes import ForeignNode, ForeignNodes
import PLC.Persons
class Slice(Row):
'node_ids': Parameter([int], "List of nodes in this slice", ro = True),
'person_ids': Parameter([int], "List of accounts that can use this slice", ro = True),
'slice_attribute_ids': Parameter([int], "List of slice attributes", ro = True),
+ 'peer_id': Parameter(int, "Peer at which this slice was created", nullok = True),
}
+ # for Cache
+ class_key = 'name'
+ foreign_fields = ['instantiation', 'url', 'description', 'max_nodes', 'created', 'expires']
+ foreign_xrefs = [
+ {'field': 'node_ids' , 'class': 'Node', 'table': 'slice_node' },
+ {'field': 'person_ids', 'class': 'Person', 'table': 'slice_person'},
+ {'field': 'creator_person_id', 'class': 'Person', 'table': 'unused-on-direct-refs'},
+ {'field': 'site_id', 'class': 'Site', 'table': 'unused-on-direct-refs'},
+ ]
def validate_name(self, name):
# N.B.: Responsibility of the caller to ensure that login_base
conflicts = Slices(self.api, [name])
for slice in conflicts:
if 'slice_id' not in self or self['slice_id'] != slice['slice_id']:
- raise PLCInvalidArgument, "Slice name already in use"
+ raise PLCInvalidArgument, "Slice name already in use, %s"%name
return name
"""
assert 'slice_id' in self
- assert isinstance(node, (Node,ForeignNode))
+ assert isinstance(node, Node)
assert 'node_id' in node
slice_id = self['slice_id']
"""
assert 'slice_id' in self
- assert isinstance(node, (Node,ForeignNode))
+ assert isinstance(node, Node)
assert 'node_id' in node
slice_id = self['slice_id']
self['node_ids'].remove(node_id)
node['slice_ids'].remove(slice_id)
+ ##########
def sync(self, commit = True):
"""
Add or update a slice.
(table, self['slice_id']), self)
# Mark as deleted
- self['deleted'] = True
+ self['is_deleted'] = True
self.sync(commit)
class Slices(Table):
def __init__(self, api, slice_filter = None, columns = None, expires = int(time.time())):
Table.__init__(self, api, Slice, columns)
- sql = "SELECT %s FROM view_slices WHERE deleted IS False" % \
+ sql = "SELECT %s FROM view_slices WHERE is_deleted IS False" % \
", ".join(self.columns)
if expires is not None: