Merge neco to nepi-3.0
[nepi.git] / src / nepi / resources / omf / omf_messages_5_4.py
1 from xml.etree import cElementTree as ET
2
3 class MessageHandler():
4     """
5     .. class:: Class Args :
6       
7         :param sliceid: Slice Name (= Xmpp Slice)
8         :type expid: Str
9         :param expid: Experiment ID (= Xmpp User)
10         :type expid: Str
11
12     .. note::
13
14        This class is used only for OMF 5.4 Protocol and is going to become unused
15
16     """
17
18     def __init__(self, sliceid, expid ):
19         """
20
21         :param sliceid: Slice Name (= Xmpp Slice)
22         :type expid: Str
23         :param expid: Experiment ID (= Xmpp User)
24         :type expid: Str
25
26         """
27         self._slice_id = sliceid
28         self._exp_id = expid
29
30
31     def _id_element(self, parent, markup):
32         """ Insert a markup element with an id
33
34         :param parent: Parent element in an XML point of view
35         :type parent: ElementTree Element
36         :param markup: Name of the markup
37         :type markup: str
38
39         """
40         elt = ET.SubElement(parent, markup)
41         elt.set("id", "\'omf-payload\'")
42         return elt
43
44     def _attr_element(self, parent, markup, text):
45         """ Insert a markup element with a text (value)
46
47         :param parent: Parent element in an XML point of view
48         :type parent: ElementTree Element
49         :param markup: Name of the markup
50         :type markup: str
51         :param text: Value of the markup element
52         :type text: str
53
54         """
55         elt = ET.SubElement(parent, markup)
56         elt.text = text
57         return elt
58
59     def execute_function(self, target, appid, cmdlineargs, path, env):
60         """ Build an Execute Message
61
62         :param target: Hrn of the target node (ex : omf.plexus.wlab17)
63         :type target: str
64         :param appid: Application id
65         :type appid: str
66         :param cmdlineargs: Arguments of the application
67         :type cmdlineargs: str
68         :param path: Path of the application
69         :type path: str
70         :param env: Environment variables
71         :type env: str
72
73         """
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)
83         return payload
84
85     def exit_function(self, target, appid):
86         """ Build an Exit Message
87
88         :param target: Hrn of the target node (ex : omf.plexus.wlab17)
89         :type target: str
90         :param appid: Application id (ex : vlc#1)
91         :type appid: str
92
93         """
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)
100         return payload
101
102     def configure_function(self, target, value, path):
103         """ Build a Configure Message
104
105         :param target: Hrn of the target node (ex : omf.plexus.wlab17)
106         :type target: str
107         :param value: guid of the RM
108         :type value: int
109         :param path: Path of the element to configure (ex : net/w0/channel)
110         :type path: dict
111
112         """
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)
120         return payload
121
122     def log_function(self,level, logger, level_name, data):
123         """ Build a Log Message
124
125         :param level: Level of logging
126         :type level: str
127         :param logger: Element publishing the log
128         :type logger: str
129         :param level_name: Name of the level (ex : INFO)
130         :type level_name: str
131         :param data: Content to publish
132         :type data: str
133
134         """
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)
143         return payload
144
145     def alias_function(self, name, target):
146         """ Build a Alias Message
147
148         :param name: Name of the new alias
149         :type name: str
150         :param target: Hrn of the target node (ex : omf.plexus.wlab17)
151         :type target: str
152
153         """
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)
160         return payload
161
162     def enroll_function(self, enrollkey, image, index, target ):
163         """ Build an Enroll Message
164
165         :param enrollkey: Type of enrollment (= 1)
166         :type enrollkey: str
167         :param image: Image (= * when all the nodes are concerned)
168         :type image: str
169         :param index: Index (= 1 in general)
170         :type index: str
171         :param target: Hrn of the target node (ex : omf.plexus.wlab17)
172         :type target: str
173
174         """
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)
183         return payload
184
185     def noop_function(self,target):
186         """ Build a Noop Message
187
188         :param target: Hrn of the target node (ex : omf.plexus.wlab17)
189         :type target: str
190
191         """
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)
197         return payload
198
199     def newexp_function(self, experimentid, address):
200         """ Build a NewExp Message
201
202         :param experimentid: Id of the new experiment
203         :type experimentid: str
204         :param address: Adress of the destination set of nodes
205         :type address: str
206
207         """
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)
214         return payload
215