1 from xml.etree import cElementTree as ET
3 class MessageHandler():
5 .. class:: Class Args :
7 :param sliceid: Slice Name (= Xmpp Slice)
9 :param expid: Experiment ID (= Xmpp User)
14 This class is used only for OMF 5.4 Protocol and is going to become unused
18 def __init__(self, sliceid, expid ):
21 :param sliceid: Slice Name (= Xmpp Slice)
23 :param expid: Experiment ID (= Xmpp User)
27 self._slice_id = sliceid
31 def _id_element(self, parent, markup):
32 """ Insert a markup element with an id
34 :param parent: Parent element in an XML point of view
35 :type parent: ElementTree Element
36 :param markup: Name of the markup
40 elt = ET.SubElement(parent, markup)
41 elt.set("id", "\'omf-payload\'")
44 def _attr_element(self, parent, markup, text):
45 """ Insert a markup element with a text (value)
47 :param parent: Parent element in an XML point of view
48 :type parent: ElementTree Element
49 :param markup: Name of the markup
51 :param text: Value of the markup element
55 elt = ET.SubElement(parent, markup)
59 def execute_function(self, target, appid, cmdlineargs, path, env):
60 """ Build an Execute Message
62 :param target: Hrn of the target node (ex : omf.plexus.wlab17)
64 :param appid: Application id
66 :param cmdlineargs: Arguments of the application
67 :type cmdlineargs: str
68 :param path: Path of the application
70 :param env: Environment variables
74 payload = ET.Element("omf-message")
75 execute = self._id_element(payload,"EXECUTE")
76 env = self._attr_element(execute, "ENV", env)
77 sliceid = self._attr_element(execute,"SLICEID",self._slice_id)
78 expid = self._attr_element(execute,"EXPID",self._exp_id)
79 target = self._attr_element(execute,"TARGET",target)
80 appid = self._attr_element(execute,"APPID",appid)
81 cmdlineargs = self._attr_element(execute,"CMDLINEARGS",cmdlineargs)
82 path = self._attr_element(execute,"PATH",path)
85 def exit_function(self, target, appid):
86 """ Build an Exit Message
88 :param target: Hrn of the target node (ex : omf.plexus.wlab17)
90 :param appid: Application id (ex : vlc#1)
94 payload = ET.Element("omf-message")
95 execute = self._id_element(payload,"EXIT")
96 sliceid = self._attr_element(execute,"SLICEID",self._slice_id)
97 expid = self._attr_element(execute,"EXPID",self._exp_id)
98 target = self._attr_element(execute,"TARGET",target)
99 appid = self._attr_element(execute,"APPID",appid)
102 def configure_function(self, target, value, path):
103 """ Build a Configure Message
105 :param target: Hrn of the target node (ex : omf.plexus.wlab17)
107 :param value: guid of the RM
109 :param path: Path of the element to configure (ex : net/w0/channel)
113 payload = ET.Element("omf-message")
114 config = self._id_element(payload, "CONFIGURE")
115 sliceid = self._attr_element(config,"SLICEID",self._slice_id)
116 expid = self._attr_element(config,"EXPID",self._exp_id)
117 target = self._attr_element(config,"TARGET",target)
118 value = self._attr_element(config,"VALUE",value)
119 path = self._attr_element(config,"PATH",path)
122 def log_function(self,level, logger, level_name, data):
123 """ Build a Log Message
125 :param level: Level of logging
127 :param logger: Element publishing the log
129 :param level_name: Name of the level (ex : INFO)
130 :type level_name: str
131 :param data: Content to publish
135 payload = ET.Element("omf-message")
136 log = self._id_element(payload, "LOGGING")
137 level = self._attr_element(log,"LEVEL",level)
138 sliceid = self._attr_element(log,"SLICEID",self._slice_id)
139 logger = self._attr_element(log,"LOGGER",logger)
140 expid = self._attr_element(log,"EXPID",self._exp_id)
141 level_name = self._attr_element(log,"LEVEL_NAME",level_name)
142 data = self._attr_element(log,"DATA",data)
145 def alias_function(self, name, target):
146 """ Build a Alias Message
148 :param name: Name of the new alias
150 :param target: Hrn of the target node (ex : omf.plexus.wlab17)
154 payload = ET.Element("omf-message")
155 alias = self._id_element(payload,"ALIAS")
156 sliceid = self._attr_element(alias,"SLICEID",self._slice_id)
157 expid = self._attr_element(alias,"EXPID",self._exp_id)
158 name = self._attr_element(alias,"NAME",name)
159 target = self._attr_element(alias,"TARGET",target)
162 def enroll_function(self, enrollkey, image, index, target ):
163 """ Build an Enroll Message
165 :param enrollkey: Type of enrollment (= 1)
167 :param image: Image (= * when all the nodes are concerned)
169 :param index: Index (= 1 in general)
171 :param target: Hrn of the target node (ex : omf.plexus.wlab17)
175 payload = ET.Element("omf-message")
176 enroll = self._id_element(payload,"ENROLL")
177 enrollkey = self._attr_element(enroll,"ENROLLKEY",enrollkey)
178 sliceid = self._attr_element(enroll,"SLICEID",self._slice_id)
179 image = self._attr_element(enroll,"IMAGE",image)
180 expid = self._attr_element(enroll,"EXPID",self._exp_id)
181 index = self._attr_element(enroll,"INDEX",index)
182 target = self._attr_element(enroll,"TARGET",target)
185 def noop_function(self,target):
186 """ Build a Noop Message
188 :param target: Hrn of the target node (ex : omf.plexus.wlab17)
192 payload = ET.Element("omf-message")
193 noop = self._id_element(payload,"NOOP")
194 sliceid = self._attr_element(noop,"SLICEID",self._slice_id)
195 expid = self._attr_element(noop,"EXPID",self._exp_id)
196 target = self._attr_element(noop,"TARGET",target)
199 def newexp_function(self, experimentid, address):
200 """ Build a NewExp Message
202 :param experimentid: Id of the new experiment
203 :type experimentid: str
204 :param address: Adress of the destination set of nodes
208 payload = ET.Element("omf-message")
209 newexp = self._id_element(payload,"EXPERIMENT_NEW")
210 experimentid = self._attr_element(newexp,"EXPERIMENT_ID",experimentid)
211 sliceid = self._attr_element(newexp,"SLICEID",self._slice_id)
212 expid = self._attr_element(newexp,"EXPID",self._exp_id)
213 address = self._attr_element(newexp,"ADDRESS",address)