awips2/pythonPackages/ufpy/NotificationMessage.py

178 lines
6.2 KiB
Python
Raw Normal View History

2012-01-06 08:55:05 -06:00
##
# This software was developed and / or modified by Raytheon Company,
# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
#
# U.S. EXPORT CONTROLLED TECHNICAL DATA
# This software product contains export-restricted data whose
# export/transfer/disclosure is restricted by U.S. law. Dissemination
# to non-U.S. persons whether in the United States or abroad requires
# an export license or other authorization.
#
# Contractor Name: Raytheon Company
# Contractor Address: 6825 Pine Street, Suite 340
# Mail Stop B8
# Omaha, NE 68106
# 402.291.0100
#
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
# further licensing information.
##
from string import Template
Revert "12.6.1-10 baseline" This reverts commit 5e91955d3ed4dfa862922d03f28db65ff0e4f189 [formerly 8d09188a88d076efc2c4c0b8027d3b918855753a] [formerly 95e7f4fc0c7dc1ccccb7c911f1aedea43d9df3a0] [formerly a24f1f25a14bed9bbb27ae4bb1ba2c94d5748ded [formerly 86d53e7788dde0abd1f819349208edb1cf7464ba] [formerly 95e7f4fc0c7dc1ccccb7c911f1aedea43d9df3a0 [formerly aecc6a84741d71243729854254cd83d265a6f6da]]] [formerly 52485562d5a2989464f976167dad36073eecb676 [formerly 530dfc056324cef1c97d16a423957d68394449e5] [formerly f8497470fcd50a27ca9a59641d66c31c46bd0168] [formerly 2372c92775c3da4bd583f67747423445dd275d92 [formerly c1748a5eb25e81f51401dbad2116292ba34e48b2] [formerly f8497470fcd50a27ca9a59641d66c31c46bd0168 [formerly b33c5bdfcf8bd8d3a9ba1899967ea087417e8b4a]]]] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a] [formerly 73e2ffe14ad34f330db309c29b21d64acedf3fc6 [formerly 16fd236f2db98d5fda45ce2eee9e16276f666988] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6]] [formerly 73e2ffe14ad34f330db309c29b21d64acedf3fc6 [formerly 16fd236f2db98d5fda45ce2eee9e16276f666988] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6]] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a [formerly 5e2f5e9bc2b0559c3101cc0c3af708858e3b95d1]]]]]]. Former-commit-id: de6731783f6b1da1d83112bbfcb3471267bc99b3 [formerly 584f7eddf85bf9bce60d30b37e9735c0624cc159] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7]] [formerly de6731783f6b1da1d83112bbfcb3471267bc99b3 [formerly 584f7eddf85bf9bce60d30b37e9735c0624cc159] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7]] [formerly 25198a5cd64ce186d2747ad9a6a974c66bcad514 [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7] [formerly 25198a5cd64ce186d2747ad9a6a974c66bcad514 [formerly 8cdb21fda317373a0dc95e5048716d0e31412ab4]]]]] Former-commit-id: 25198a5cd64ce186d2747ad9a6a974c66bcad514 Former-commit-id: b6676b48913ba34f816004e3c602ff26af9ff415 [formerly 944e3148d44606410b830743a8900cd0e98ee257] [formerly 333fd9c64e62617b155f27e3b0bb340bff4e2c04] [formerly 52fbe497a04b79a27ebe426d8038138245d04be0 [formerly 52c1eb5688c898376b24c6add0a2d1a4c3ff2981] [formerly 333fd9c64e62617b155f27e3b0bb340bff4e2c04 [formerly 8367fb50f54d231b286314ed4ec163a81988b4b2]]] Former-commit-id: 49c8cb538b54b7cf4cf5c708ee63b28a3e79dbd3 [formerly 0bc0b7e1c450b6264ca8eb9457b80c79a047f13a] [formerly e77a15c047443e0e97e3cbea67ee798bdc91598f [formerly 75f77df4189fd143d19388c376a13f20d8648c49]] Former-commit-id: e77a15c047443e0e97e3cbea67ee798bdc91598f Former-commit-id: c7356570aea186f9e799b526f5c0d0031e644127
2012-06-21 08:51:08 -05:00
import ctypes
2012-01-06 08:55:05 -06:00
import stomp
import socket
import sys
import time
Revert "12.6.1-10 baseline" This reverts commit 5e91955d3ed4dfa862922d03f28db65ff0e4f189 [formerly 8d09188a88d076efc2c4c0b8027d3b918855753a] [formerly 95e7f4fc0c7dc1ccccb7c911f1aedea43d9df3a0] [formerly a24f1f25a14bed9bbb27ae4bb1ba2c94d5748ded [formerly 86d53e7788dde0abd1f819349208edb1cf7464ba] [formerly 95e7f4fc0c7dc1ccccb7c911f1aedea43d9df3a0 [formerly aecc6a84741d71243729854254cd83d265a6f6da]]] [formerly 52485562d5a2989464f976167dad36073eecb676 [formerly 530dfc056324cef1c97d16a423957d68394449e5] [formerly f8497470fcd50a27ca9a59641d66c31c46bd0168] [formerly 2372c92775c3da4bd583f67747423445dd275d92 [formerly c1748a5eb25e81f51401dbad2116292ba34e48b2] [formerly f8497470fcd50a27ca9a59641d66c31c46bd0168 [formerly b33c5bdfcf8bd8d3a9ba1899967ea087417e8b4a]]]] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a] [formerly 73e2ffe14ad34f330db309c29b21d64acedf3fc6 [formerly 16fd236f2db98d5fda45ce2eee9e16276f666988] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6]] [formerly 73e2ffe14ad34f330db309c29b21d64acedf3fc6 [formerly 16fd236f2db98d5fda45ce2eee9e16276f666988] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6]] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a [formerly 5e2f5e9bc2b0559c3101cc0c3af708858e3b95d1]]]]]]. Former-commit-id: de6731783f6b1da1d83112bbfcb3471267bc99b3 [formerly 584f7eddf85bf9bce60d30b37e9735c0624cc159] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7]] [formerly de6731783f6b1da1d83112bbfcb3471267bc99b3 [formerly 584f7eddf85bf9bce60d30b37e9735c0624cc159] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7]] [formerly 25198a5cd64ce186d2747ad9a6a974c66bcad514 [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7] [formerly 25198a5cd64ce186d2747ad9a6a974c66bcad514 [formerly 8cdb21fda317373a0dc95e5048716d0e31412ab4]]]]] Former-commit-id: 25198a5cd64ce186d2747ad9a6a974c66bcad514 Former-commit-id: b6676b48913ba34f816004e3c602ff26af9ff415 [formerly 944e3148d44606410b830743a8900cd0e98ee257] [formerly 333fd9c64e62617b155f27e3b0bb340bff4e2c04] [formerly 52fbe497a04b79a27ebe426d8038138245d04be0 [formerly 52c1eb5688c898376b24c6add0a2d1a4c3ff2981] [formerly 333fd9c64e62617b155f27e3b0bb340bff4e2c04 [formerly 8367fb50f54d231b286314ed4ec163a81988b4b2]]] Former-commit-id: 49c8cb538b54b7cf4cf5c708ee63b28a3e79dbd3 [formerly 0bc0b7e1c450b6264ca8eb9457b80c79a047f13a] [formerly e77a15c047443e0e97e3cbea67ee798bdc91598f [formerly 75f77df4189fd143d19388c376a13f20d8648c49]] Former-commit-id: e77a15c047443e0e97e3cbea67ee798bdc91598f Former-commit-id: c7356570aea186f9e799b526f5c0d0031e644127
2012-06-21 08:51:08 -05:00
import threading
2012-01-06 08:55:05 -06:00
import xml.etree.ElementTree as ET
import ThriftClient
from dynamicserialize.dstypes.com.raytheon.uf.common.alertviz import AlertVizRequest
from dynamicserialize import DynamicSerializationManager
#
# Provides a capability of constructing notification messages and sending
# them to a STOMP data source.
#
#
# SOFTWARE HISTORY
#
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# 09/30/08 chammack Initial Creation.
# 11/03/10 5849 cjeanbap Moved to ufpy package from
# com.raytheon.uf.tools.cli
# 01/07/11 5645 cjeanbap Added audio file to Status Message.
# 05/27/11 3050 cjeanbap Added if-statement to check Priority
# value
#
class NotificationMessage:
priorityMap = {
0: 'CRITICAL',
1: 'SIGNIFICANT',
2: 'PROBLEM',
3: 'EVENTA',
4: 'EVENTB',
5: 'VERBOSE'}
def __init__(self, host='localhost', port=61999, message='', priority='PROBLEM', category="LOCAL", source="ANNOUNCER", audioFile="NONE"):
self.host = host
self.port = port
self.message = message
self.audioFile = audioFile
self.source = source
self.category = category
priorityInt = None
try:
priorityInt = int(priority)
except:
pass
if priorityInt is None:
#UFStatus.java contains mapping of Priority to Logging level mapping
if priority == 'CRITICAL' or priority == 'FATAL':
priorityInt = int(0)
elif priority == 'SIGNIFICANT' or priority == 'ERROR':
priorityInt = int(1)
elif priority == 'PROBLEM' or priority == 'WARN':
priorityInt = int(2)
elif priority == 'EVENTA' or priority == 'INFO':
priorityInt = int(3)
elif priority == 'EVENTB':
priorityInt = int(4)
elif priority == 'VERBOSE' or priority == 'DEBUG':
priorityInt = int(5)
if (priorityInt < 0 or priorityInt > 5):
print "Error occurred, supplied an invalid Priority value: " + str(priorityInt)
print "Priority values are 0, 1, 2, 3, 4 and 5."
sys.exit(1)
if priorityInt is not None:
self.priority = self.priorityMap[priorityInt]
else:
self.priority = priority
Revert "12.6.1-10 baseline" This reverts commit 5e91955d3ed4dfa862922d03f28db65ff0e4f189 [formerly 8d09188a88d076efc2c4c0b8027d3b918855753a] [formerly 95e7f4fc0c7dc1ccccb7c911f1aedea43d9df3a0] [formerly a24f1f25a14bed9bbb27ae4bb1ba2c94d5748ded [formerly 86d53e7788dde0abd1f819349208edb1cf7464ba] [formerly 95e7f4fc0c7dc1ccccb7c911f1aedea43d9df3a0 [formerly aecc6a84741d71243729854254cd83d265a6f6da]]] [formerly 52485562d5a2989464f976167dad36073eecb676 [formerly 530dfc056324cef1c97d16a423957d68394449e5] [formerly f8497470fcd50a27ca9a59641d66c31c46bd0168] [formerly 2372c92775c3da4bd583f67747423445dd275d92 [formerly c1748a5eb25e81f51401dbad2116292ba34e48b2] [formerly f8497470fcd50a27ca9a59641d66c31c46bd0168 [formerly b33c5bdfcf8bd8d3a9ba1899967ea087417e8b4a]]]] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a] [formerly 73e2ffe14ad34f330db309c29b21d64acedf3fc6 [formerly 16fd236f2db98d5fda45ce2eee9e16276f666988] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6]] [formerly 73e2ffe14ad34f330db309c29b21d64acedf3fc6 [formerly 16fd236f2db98d5fda45ce2eee9e16276f666988] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6]] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a [formerly 5e2f5e9bc2b0559c3101cc0c3af708858e3b95d1]]]]]]. Former-commit-id: de6731783f6b1da1d83112bbfcb3471267bc99b3 [formerly 584f7eddf85bf9bce60d30b37e9735c0624cc159] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7]] [formerly de6731783f6b1da1d83112bbfcb3471267bc99b3 [formerly 584f7eddf85bf9bce60d30b37e9735c0624cc159] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7]] [formerly 25198a5cd64ce186d2747ad9a6a974c66bcad514 [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7] [formerly 25198a5cd64ce186d2747ad9a6a974c66bcad514 [formerly 8cdb21fda317373a0dc95e5048716d0e31412ab4]]]]] Former-commit-id: 25198a5cd64ce186d2747ad9a6a974c66bcad514 Former-commit-id: b6676b48913ba34f816004e3c602ff26af9ff415 [formerly 944e3148d44606410b830743a8900cd0e98ee257] [formerly 333fd9c64e62617b155f27e3b0bb340bff4e2c04] [formerly 52fbe497a04b79a27ebe426d8038138245d04be0 [formerly 52c1eb5688c898376b24c6add0a2d1a4c3ff2981] [formerly 333fd9c64e62617b155f27e3b0bb340bff4e2c04 [formerly 8367fb50f54d231b286314ed4ec163a81988b4b2]]] Former-commit-id: 49c8cb538b54b7cf4cf5c708ee63b28a3e79dbd3 [formerly 0bc0b7e1c450b6264ca8eb9457b80c79a047f13a] [formerly e77a15c047443e0e97e3cbea67ee798bdc91598f [formerly 75f77df4189fd143d19388c376a13f20d8648c49]] Former-commit-id: e77a15c047443e0e97e3cbea67ee798bdc91598f Former-commit-id: c7356570aea186f9e799b526f5c0d0031e644127
2012-06-21 08:51:08 -05:00
def connection_timeout(self, connection):
if (connection is not None and not connection.is_connected()):
print "Connection Retry Timeout"
for tid, tobj in threading._active.items():
if tobj.name is "MainThread":
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(SystemExit))
if res != 0 and res != 1:
# problem, reset state
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)
2012-01-06 08:55:05 -06:00
def send(self):
# depending on the value of the port number indicates the distribution
# of the message to AlertViz
# 9581 is global distribution thru ThriftClient to Edex
# 61999 is local distribution
if (self.port == 61999):
# use stomp.py
conn = stomp.Connection(host_and_ports=[(self.host, self.port)])
Revert "12.6.1-10 baseline" This reverts commit 5e91955d3ed4dfa862922d03f28db65ff0e4f189 [formerly 8d09188a88d076efc2c4c0b8027d3b918855753a] [formerly 95e7f4fc0c7dc1ccccb7c911f1aedea43d9df3a0] [formerly a24f1f25a14bed9bbb27ae4bb1ba2c94d5748ded [formerly 86d53e7788dde0abd1f819349208edb1cf7464ba] [formerly 95e7f4fc0c7dc1ccccb7c911f1aedea43d9df3a0 [formerly aecc6a84741d71243729854254cd83d265a6f6da]]] [formerly 52485562d5a2989464f976167dad36073eecb676 [formerly 530dfc056324cef1c97d16a423957d68394449e5] [formerly f8497470fcd50a27ca9a59641d66c31c46bd0168] [formerly 2372c92775c3da4bd583f67747423445dd275d92 [formerly c1748a5eb25e81f51401dbad2116292ba34e48b2] [formerly f8497470fcd50a27ca9a59641d66c31c46bd0168 [formerly b33c5bdfcf8bd8d3a9ba1899967ea087417e8b4a]]]] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a] [formerly 73e2ffe14ad34f330db309c29b21d64acedf3fc6 [formerly 16fd236f2db98d5fda45ce2eee9e16276f666988] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6]] [formerly 73e2ffe14ad34f330db309c29b21d64acedf3fc6 [formerly 16fd236f2db98d5fda45ce2eee9e16276f666988] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030] [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6]] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a [formerly 06f1c7b73c228f8ad3c0e5f923b744855a360030 [formerly ddde63eee0f8cb85cf89190ec93be603122d8de6] [formerly a2c0893d1a3a0caa4f181e12953d16ac02be2f1a [formerly 5e2f5e9bc2b0559c3101cc0c3af708858e3b95d1]]]]]]. Former-commit-id: de6731783f6b1da1d83112bbfcb3471267bc99b3 [formerly 584f7eddf85bf9bce60d30b37e9735c0624cc159] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7]] [formerly de6731783f6b1da1d83112bbfcb3471267bc99b3 [formerly 584f7eddf85bf9bce60d30b37e9735c0624cc159] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f] [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7]] [formerly 25198a5cd64ce186d2747ad9a6a974c66bcad514 [formerly 62cf6a9f92d76a4cbe39b84209059e132a549d7f [formerly b4b1f6975f167bbfe053835295ebd993b39d0bc7] [formerly 25198a5cd64ce186d2747ad9a6a974c66bcad514 [formerly 8cdb21fda317373a0dc95e5048716d0e31412ab4]]]]] Former-commit-id: 25198a5cd64ce186d2747ad9a6a974c66bcad514 Former-commit-id: b6676b48913ba34f816004e3c602ff26af9ff415 [formerly 944e3148d44606410b830743a8900cd0e98ee257] [formerly 333fd9c64e62617b155f27e3b0bb340bff4e2c04] [formerly 52fbe497a04b79a27ebe426d8038138245d04be0 [formerly 52c1eb5688c898376b24c6add0a2d1a4c3ff2981] [formerly 333fd9c64e62617b155f27e3b0bb340bff4e2c04 [formerly 8367fb50f54d231b286314ed4ec163a81988b4b2]]] Former-commit-id: 49c8cb538b54b7cf4cf5c708ee63b28a3e79dbd3 [formerly 0bc0b7e1c450b6264ca8eb9457b80c79a047f13a] [formerly e77a15c047443e0e97e3cbea67ee798bdc91598f [formerly 75f77df4189fd143d19388c376a13f20d8648c49]] Former-commit-id: e77a15c047443e0e97e3cbea67ee798bdc91598f Former-commit-id: c7356570aea186f9e799b526f5c0d0031e644127
2012-06-21 08:51:08 -05:00
timeout = threading.Timer(5.0, self.connection_timeout, [conn])
try:
timeout.start();
conn.start()
finally:
timeout.cancel()
2012-01-06 08:55:05 -06:00
conn.connect()
sm = ET.Element("statusMessage")
sm.set("machine", socket.gethostname())
sm.set("priority", self.priority)
sm.set("category", self.category)
sm.set("sourceKey", self.source)
sm.set("audioFile", self.audioFile)
msg = ET.SubElement(sm, "message")
msg.text = self.message
details = ET.SubElement(sm, "details")
msg = ET.tostring(sm, "UTF-8")
try :
conn.send(msg, destination='/queue/messages')
time.sleep(2)
finally:
conn.stop()
else:
# use ThriftClient
alertVizRequest = createRequest(self.message, self.priority, self.source, self.category, self.audioFile)
thriftClient = ThriftClient.ThriftClient(self.host, self.port, "/services")
serverResponse = None
try:
serverResponse = thriftClient.sendRequest(alertVizRequest)
except Exception, ex:
print "Caught exception submitting AlertVizRequest: ", str(ex)
if (serverResponse != "None"):
print "Error occurred submitting Notification Message to AlertViz receiver: ", serverResponse
sys.exit(1)
else:
print "Response: " + str(serverResponse)
def createRequest(message, priority, source, category, audioFile):
obj = AlertVizRequest()
obj.setMachine(socket.gethostname())
obj.setPriority(priority)
obj.setCategory(category)
obj.setSourceKey(source)
obj.setMessage(message)
if (audioFile is not None):
obj.setAudioFile(audioFile)
else:
obj.setAudioFile('\0')
return obj
if __name__ == '__main__':
main()