From 23d810c9492e9af588383ac00827092c17c7bfef Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bar=C4=B1=C5=9F=20Metin?= Date: Mon, 28 Jun 2010 10:51:10 +0000 Subject: [PATCH] omfaspect now weaves AddSliceTag to track omf_control and sets vsys tag (dotsshmount) automatically. --- aspects/omfaspects.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/aspects/omfaspects.py b/aspects/omfaspects.py index 1735490e..6612ca41 100644 --- a/aspects/omfaspects.py +++ b/aspects/omfaspects.py @@ -4,7 +4,8 @@ import os import xmlrpclib from PLC.Slices import Slices -from PLC.SliceTags import SliceTags +from PLC.SliceTags import SliceTags, SliceTag +from PLC.TagTypes import TagTypes from PLC.Nodes import Nodes from PLC.Config import Config from pyaspects.meta import MetaAspect @@ -64,6 +65,13 @@ class BaseOMF(object): def get_slice_tags(self, api, slice_id): return SliceTags(api, slice_tag_filter = {'slice_id': slice_id}) + def get_tag_type(self, api, tagname): + try: + tag = TagTypes(api, {'tagname':tagname})[0] + return tag + except IndexError: + return None + def create_slice(self, slice): pass @@ -108,6 +116,8 @@ class BaseOMF(object): elif api_method_name == "AddSliceToNodes" or api_method_name == "DeleteSliceFromNodes": slice_name_or_id = args[1] node_ids = args[2] + elif api_method_name == "AddSliceTag": + slice_name_or_id = args[1] else: # ignore the rest #self.logit(wobj.name, args, kwargs, data, "SLICE") return @@ -126,6 +136,19 @@ class BaseOMF(object): for node_id in node_ids: node_hostname = self.get_node_hostname(wobj.api, node_id) self.delete_resource(slice['name'], node_hostname) + elif api_method_name == "AddSliceTag": + # OMF slices need to have dotsshmount vsys tag set to be + # able to access users' public keys. + tag_type_id_or_name = args[2] + omf_tag = self.get_tag_type(wobj.api, "omf_control") + vsys_tag = self.get_tag_type(wobj.api, "vsys") + if tag_type_id_or_name in (omf_tag['tagname'], omf_tag['tag_type_id']): + slice_tag = SliceTag(wobj.api) + slice_tag['slice_id'] = slice['slice_id'] + slice_tag['tag_type_id'] = vsys_tag['tag_type_id'] + slice_tag['value'] = u'dotsshmount' + slice_tag.sync() + self.logit(wobj.name, args, kwargs, data, slice) -- 2.47.0