-# $Id$
import re
from PLC.Faults import *
from PLC.Methods.AddSliceTag import AddSliceTag
from PLC.Methods.UpdateSliceTag import UpdateSliceTag
+from PLC.Debug import log
+
can_update = ['name', 'instantiation', 'url', 'description', 'max_nodes']
class AddSlice(Method):
# 3. Then single underscore after login_base.
# 4. Then letters, numbers, or underscores.
name = slice_fields['name']
- good_name = r'^[a-z0-9]+_[a-zA-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"
"Site %s has reached (%d) its maximum allowable slice count (%d)"%(site['name'],
len(site['slice_ids']),
site['max_slices'])
- if not site['enabled']:
- raise PLCInvalidArgument, "Site %s is disabled and can cannot create slices" % (site['name'])
-
+ if not site['enabled']:
+ raise PLCInvalidArgument, "Site %s is disabled and can cannot create slices" % (site['name'])
+
slice = Slice(self.api, native)
slice['creator_person_id'] = self.caller['person_id']
slice['site_id'] = site['site_id']
slice.sync()
+ # Set Slice HRN
+ root_auth = self.api.config.PLC_HRN_ROOT
+ tags['hrn'] = '.'.join([root_auth, login_base, name.split("_")[1]])
+
for (tagname,value) in tags.iteritems():
# the tagtype instance is assumed to exist, just check that
if not TagTypes(self.api,{'tagname':tagname}):
else:
UpdateSliceTag(self.api).__call__(auth,slice_tags[0]['slice_tag_id'],value)
- self.event_objects = {'Slice': [slice['slice_id']]}
+ # take PLC_VSYS_DEFAULTS into account for convenience
+ try:
+ values= [ y for y in [ x.strip() for x in self.api.config.PLC_VSYS_DEFAULTS.split(',') ] if y ]
+ for value in values:
+ AddSliceTag(self.api).__call__(auth,slice['slice_id'],'vsys',value)
+ except:
+ print >> log, "Could not set vsys tags as configured in PLC_VSYS_DEFAULTS"
+ import traceback
+ traceback.print_exc(file=log)
+ self.event_objects = {'Slice': [slice['slice_id']]}
self.message = "Slice %d created" % slice['slice_id']
return slice['slice_id']