Adding environment setting features for applications under OMF
[nepi.git] / src / nepi / testbeds / omf / omf_messages.py
1 from xml.etree import cElementTree as ET
2
3 EXECUTE = "EXECUTE"
4 KILL = "KILL"
5 STDIN = "STDIN"
6 NOOP = "NOOP"
7 PM_INSTALL = "PM_INSTALL"
8 APT_INSTALL = "APT_INSTALL"
9 RPM_INSTALL = "RPM_INSTALL"
10 RESET = "RESET"
11 REBOOT = "REBOOT"
12 MODPROBE = "MODPROBE"
13 CONFIGURE = "CONFIGURE"
14 LOAD_IMAGE = "LOAD_IMAGE"
15 SAVE_IMAGE = "SAVE_IMAGE"
16 LOAD_DATA = "LOAD_DATA"
17 SET_LINK = "SET_LINK"
18 ALIAS = "ALIAS"
19 SET_DISCONNECTION = "SET_DISCONNECTION"
20 RESTART = "RESTART"
21 ENROLL = "ENROLL"
22 EXIT = "EXIT" 
23
24 class MessageHandler():
25     SliceID = ""
26     ExpID = ""
27
28     def __init__(self, sliceid, expid ):
29         self.SliceID = sliceid
30         self.ExpID = expid
31         print "init" + self.ExpID +"  "+ self.SliceID
32         pass
33
34     def Mid(self, parent, keyword):
35         mid = ET.SubElement(parent, keyword)
36         mid.set("id", "\'omf-payload\'")
37         return mid
38
39     def Mtext(self, parent, keyword, text):
40         mtext = ET.SubElement(parent, keyword)
41         mtext.text = text
42         return mtext
43
44     def executefunction(self, target, appid, cmdlineargs, path, env):
45         payload = ET.Element("omf-message")
46         execute = self.Mid(payload,"EXECUTE")
47         env = self.Mtext(execute, "ENV", env)
48         sliceid = self.Mtext(execute,"SLICEID",self.SliceID)
49         expid = self.Mtext(execute,"EXPID",self.ExpID)
50         target = self.Mtext(execute,"TARGET",target)
51         appid = self.Mtext(execute,"APPID",appid)
52         cmdlineargs = self.Mtext(execute,"CMDLINEARGS",cmdlineargs)
53         path = self.Mtext(execute,"PATH",path)
54         return payload
55
56     def exitfunction(self, target, appid):
57         payload = ET.Element("omf-message")
58         execute = self.Mid(payload,"EXIT")
59         sliceid = self.Mtext(execute,"SLICEID",self.SliceID)
60         expid = self.Mtext(execute,"EXPID",self.ExpID)
61         target = self.Mtext(execute,"TARGET",target)
62         appid = self.Mtext(execute,"APPID",appid)
63         return payload
64
65     def configurefunction(self, target, value, path):
66         payload = ET.Element("omf-message")
67         config = self.Mid(payload, "CONFIGURE")
68         sliceid = self.Mtext(config,"SLICEID",self.SliceID)
69         expid = self.Mtext(config,"EXPID",self.ExpID)
70         target = self.Mtext(config,"TARGET",target)
71         value = self.Mtext(config,"VALUE",value)
72         path = self.Mtext(config,"PATH",path)
73         return payload
74
75     def logfunction(self,level, logger, level_name, data):
76         payload = ET.Element("omf-message")
77         log = self.Mid(payload, "LOGGING")
78         level = self.Mtext(log,"LEVEL",level)
79         sliceid = self.Mtext(log,"SLICEID",self.SliceID)
80         logger = self.Mtext(log,"LOGGER",logger)
81         expid = self.Mtext(log,"EXPID",self.ExpID)
82         level_name = self.Mtext(log,"LEVEL_NAME",level_name)
83         data = self.Mtext(log,"DATA",data)
84         return payload
85
86     def aliasfunction(self, name, target):
87         payload = ET.Element("omf-message")
88         alias = self.Mid(payload,"ALIAS")
89         sliceid = self.Mtext(alias,"SLICEID",self.SliceID)
90         expid = self.Mtext(alias,"EXPID",self.ExpID)
91         name = self.Mtext(alias,"NAME",name)
92         target = self.Mtext(alias,"TARGET",target)
93         return payload
94
95     def enrollfunction(self, enrollkey, image, index, target ):
96         payload = ET.Element("omf-message")
97         enroll = self.Mid(payload,"ENROLL")
98         enrollkey = self.Mtext(enroll,"ENROLLKEY",enrollkey)
99         sliceid = self.Mtext(enroll,"SLICEID",self.SliceID)
100         image = self.Mtext(enroll,"IMAGE",image)
101         expid = self.Mtext(enroll,"EXPID",self.ExpID)
102         index = self.Mtext(enroll,"INDEX",index)
103         target = self.Mtext(enroll,"TARGET",target)
104         return payload
105
106     def noopfunction(self,target):
107         payload = ET.Element("omf-message")
108         noop = self.Mid(payload,"NOOP")
109         sliceid = self.Mtext(noop,"SLICEID",self.SliceID)
110         expid = self.Mtext(noop,"EXPID",self.ExpID)
111         target = self.Mtext(noop,"TARGET",target)
112         return payload
113
114     def newexpfunction(self, experimentid, address):
115         payload = ET.Element("omf-message")
116         newexp = self.Mid(payload,"EXPERIMENT_NEW")
117         experimentid = self.Mtext(newexp,"EXPERIMENT_ID",experimentid)
118         sliceid = self.Mtext(newexp,"SLICEID",self.SliceID)
119         expid = self.Mtext(newexp,"EXPID",self.ExpID)
120         address = self.Mtext(newexp,"ADDRESS",address)
121         return payload
122
123     def handle_message(self, msg):
124         # Do something!!!
125         return msg