"""
super(OMF6Parser, self).__init__("OMF6API")
+ self.mailbox={}
-
+ self.init_mailbox()
+
+ def init_mailbox(self):
+ self.mailbox['create'] = []
+ self.mailbox['started'] = []
+ self.mailbox['release'] = []
def _check_for_tag(self, root, namespaces, tag):
""" Check if an element markup is in the ElementTree
def _inform_creation_ok(self, root, namespaces):
+ """ Parse and Display CREATION OK message
+
+ """
+ #ET.dump(root)
uid = self._check_for_tag(root, namespaces, "uid")
+ cid = self._check_for_tag(root, namespaces, "cid")
member = self._check_for_membership(root, namespaces)
binary_path = self._check_for_tag(root, namespaces, "binary_path")
msg = "CREATION OK -- "
if binary_path :
msg = msg + "The resource : '"+binary_path
+ else :
+ msg = msg + "The interface"
if uid :
msg = msg + "' is listening to the topics : '"+ uid
if member :
msg = msg + "' and '"+ member +"'"
- self.info(msg)
+ if cid:
+ self.info(msg)
+ self.mailbox['create'].append([cid, uid ])
def _inform_creation_failed(self, root, namespaces):
+ """ Parse and Display CREATION FAILED message
+
+ """
reason = self._check_for_tag(root, namespaces, "reason")
+ cid = self._check_for_tag(root, namespaces, "cid")
msg = "CREATION FAILED - The reason : "+reason
- self.error(msg)
+ if cid:
+ self.error(msg)
+ self.mailbox['create'].append([cid, uid ])
def _inform_status(self, root, namespaces):
+ """ Parse and Display STATUS message
+
+ """
props = self._check_for_props(root, namespaces)
+ uid = self._check_for_tag(root, namespaces, "uid")
msg = "STATUS -- "
for elt in props.keys():
ns, tag = elt.split('}')
if tag == "it":
msg = msg + "membership : " + props[elt]+" -- "
+ elif tag == "event":
+ self.mailbox['started'].append(uid)
+ msg = msg + "event : " + props[elt]+" -- "
else:
msg = msg + tag +" : " + props[elt]+" -- "
msg = msg + " STATUS "
self.info(msg)
def _inform_released(self, root, namespaces):
+ """ Parse and Display RELEASED message
+
+ """
+ #ET.dump(root)
parent_id = self._check_for_tag(root, namespaces, "src")
child_id = self._check_for_tag(root, namespaces, "res_id")
- msg = "RELEASED - The resource : '"+res_id+ \
- "' has been released by : '"+ src
- self.info(msg)
+ cid = self._check_for_tag(root, namespaces, "cid")
+ if cid :
+ msg = "RELEASED - The resource : '"+child_id+ \
+ "' has been released by : '"+ parent_id
+ self.info(msg)
+ self.mailbox['release'].append(cid)
def _inform_error(self, root, namespaces):
+ """ Parse and Display ERROR message
+
+ """
reason = self._check_for_tag(root, namespaces, "reason")
msg = "The reason : "+reason
self.error(msg)
def _inform_warn(self, root, namespaces):
+ """ Parse and Display WARN message
+
+ """
reason = self._check_for_tag(root, namespaces, "reason")
msg = "The reason : "+reason
self.warn(msg)
def _parse_inform(self, root, namespaces):
- """ Check the significative element in the answer and display it
+ """ Check the significative element in the answer
+ Then Parse it and display using specific method
:param root: Root of the tree
:type root: ElementTree Element
return
+ def check_mailbox(self, itype, attr):
+ """ Check the mail box
+
+ :param itype: type of mail
+ :type itype: str
+ :param attr: value wanted
+ :type attr: str
+
+ """
+ if itype == "create":
+ for res in self.mailbox[itype]:
+ binary, uid = res
+ if binary == attr:
+ self.mailbox[itype].remove(res)
+ return uid
+ else :
+ for res in self.mailbox[itype]:
+ if attr == res:
+ self.mailbox[itype].remove(res)
+ return res
+
+
def handle(self, iq):
+ """ Check the mail box
+
+ :param iq: message received
+ :type itype: iq
+ """
namespaces = "{http://schema.mytestbed.net/omf/6.0/protocol}"
for i in iq['pubsub_event']['items']:
root = ET.fromstring(str(i))