- # Create or Update slice
- slice_name = slice['name']
- slices = GetSlices([slice_name])
- if len(slices)==1:
- slice_id = slices[0]['slice_id']
- if slice.has_key('name'):
- del slice['name']
- UpdateSlice(slice_id, slice)
- slice['name']=slice_name
- else:
- expires = None
- if slice.has_key('expires'):
- expires = slice['expires']
- del slice['expires']
- slice_id = AddSlice(slice)
- if expires <> None:
- UpdateSlice(slice_id, {'expires':expires})
-
- # Get slice structure with all fields
- slice = GetSlices([slice_name])[0]
-
- # Create/delete all tags
- # NOTE: update is not needed, since unspecified tags are deleted,
- # and new tags are added
- slice_tags = []
- if slice['slice_tag_ids']:
- # Delete unknown attributes
- for slice_tag in GetSliceTags(slice['slice_tag_ids']):
- # ignore sliver tags, as those are custom/run-time values
- if slice_tag['node_id'] <> None: continue
- if (slice_tag['tagname'], slice_tag['value']) not in tags:
- DeleteSliceTag(slice_tag['slice_tag_id'])
- else:
- slice_tags.append((slice_tag['tagname'],slice_tag['value']))
-
- # only add slice tags that are new
- for (name, value) in tags:
- if (name,value) not in slice_tags:
- AddSliceTag(slice_name, name, value)
+ try:
+ # Create or Update slice
+ slice_name = slice['name']
+ slices = GetSlices([slice_name])
+ if len(slices)==1:
+ slice_id = slices[0]['slice_id']
+ if slice.has_key('name'):
+ del slice['name']
+ UpdateSlice(slice_id, slice)
+ slice['name']=slice_name