Advertisement
maurobaraldi

Spectrum Alarms to NSSD

Apr 4th, 2012
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import urllib2
  2. import time
  3. import os
  4. import datetime
  5. import sys
  6. #import pdb
  7.  
  8. # %sope % operador.cliente
  9. usuario_         = ''
  10. pw_              = ''
  11. alarm_falhas     = []
  12. alarm_desempenho = []
  13. endereco_        = '172.16.24.242'
  14. restful_         = 'http://172.16.24.242/spectrum/restful/alarms'
  15.  
  16. def parser(parm, parm2):
  17.     #pdb.set_trace()
  18.     global alarm_falhas
  19.     global alarm_desempenho
  20.     #separators
  21.     svalida          = str(parm2)[:5]
  22.     sbloco_inicio    = "<alarm-responses>"
  23.     sbloco_fim       = "</alarm-responses>"
  24.     sbloco_alarm     = "</alarm>"
  25.     smodel_name      = "<attribute id=0x1006e>"
  26.     screation_t      = "<attribute id=0x11f4e>"
  27.     sseverity        = "<attribute id=0x11f56>"
  28.     salarm_title     = "<attribute id=0x12b4c>"
  29.     sip              = "<attribute id=0x12d7f>"
  30.     ssecurity        = "<attribute id=0x10009>"
  31.     sfim             = "</attribute>"
  32.     sseparador       = ";"
  33.     #preparing the parser
  34.     string_temp1     = str(parm.split(sbloco_inicio)[1])
  35.     string_temp2     = str(string_temp1.split(sbloco_fim)[0])
  36.     string_temp3     = str(string_temp2).split(sbloco_alarm)
  37.     string_temp4     = ""
  38.     list_temp1       = []
  39.     list_temp2       = []
  40.     loop1_           = 0
  41.     #building the list
  42.     while loop1_ < len(string_temp3):
  43.         list_temp1.append(str(string_temp3[loop1_]))
  44.         loop1_ = loop1_ + 1  
  45.     loop2_ = 0
  46.     #cleaning the list
  47.     while loop2_ < len(list_temp1):
  48.         temp_  = str(list_temp1[loop2_])
  49.         if len(temp_) > 10:
  50.             temp_1 = int(temp_.find(smodel_name)) + len(smodel_name)
  51.             temp_2 = int(temp_.find(screation_t)) + len(screation_t)
  52.             temp_3 = int(temp_.find(sseverity)) + len(sseverity)
  53.             temp_4 = int(temp_.find(salarm_title)) + len(salarm_title)
  54.             temp_5 = int(temp_.find(sip)) + len(sip)
  55.             temp_6 = int(temp_.find(ssecurity)) + len(ssecurity)
  56.             temp_1 = str(str(temp_[temp_1:]).split(sfim)[0]) + sseparador
  57.             temp_2 = str(datetime.datetime.fromtimestamp(int(str(str(temp_[temp_2:]).split(sfim)[0]))).strftime('%Y-%m-%d %H:%M:%S')) + sseparador        
  58.             temp_3 = str(str(temp_[temp_3:]).split(sfim)[0]).replace("1", "Minor").replace("2", "Major").replace("3", "Critical") + sseparador
  59.             temp_4 = str(str(temp_[temp_4:]).split(sfim)[0]) + sseparador
  60.             temp_5 = str(str(temp_[temp_5:]).split(sfim)[0]) + sseparador
  61.             temp_6 = str(str(temp_[temp_6:]).split(sfim)[0])
  62.             temp_f = temp_1 + temp_2 + temp_3 + temp_4 + temp_5
  63.         if temp_3.replace(sseparador,"") != "Critical" and temp_4[:4] == "EH -":
  64.                 if svalida == str(temp_6).split("|")[0]:
  65.                 alarm_desempenho.append(temp_f)
  66.         elif temp_3.replace(sseparador,"") == "Critical" and temp_4.replace(sseparador,"") == "DEVICE HAS STOPPED RESPONDING TO POLLS":
  67.                 if svalida == str(temp_6).split("|")[0]:
  68.                 alarm_falhas.append(temp_f)
  69.         loop2_ = loop2_ + 1
  70.     #return list_temp2
  71. #Model Name | Creation date | Severity | Alarm Title | IP
  72. xml_post = """\
  73. <?xml version="1.0" encoding="UTF-8"?>
  74. <rs:alarm-request throttlesize="100"
  75. xmlns:rs="http://www.ca.com/spectrum/restful/schema/request"
  76. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  77. xsi:schemaLocation="http://www.ca.com/spectrum/restful/schema/request ../../../xsd/Request.xsd ">
  78. <rs:attribute-filter><search-criteria xmlns="http://www.ca.com/spectrum/restful/schema/filter">
  79. <filtered-models><equals><attribute id="0x111f54"><value>"3"</value></attribute></equals>
  80. </filtered-models></search-criteria></rs:attribute-filter>
  81. <rs:requested-attribute id="0x1006e" />
  82. <rs:requested-attribute id="0x11f4e" />
  83. <rs:requested-attribute id="0x11f56" />
  84. <rs:requested-attribute id="0x12b4c" />
  85. <rs:requested-attribute id="0x12d7f" />
  86. <rs:requested-attribute id="0x10009" />
  87. </rs:alarm-request>
  88. """
  89. def x(a,b):
  90.     global usuario_
  91.     global pw_
  92.     usuario_ = a
  93.     pw_ = b
  94.     pwm_   = urllib2.HTTPPasswordMgrWithDefaultRealm()
  95.     pwm_.add_password(None, endereco_, usuario_, pw_)
  96.     auth_  = urllib2.HTTPBasicAuthHandler(pwm_)
  97.     authf_ = urllib2.build_opener(auth_)
  98.     urllib2.install_opener(authf_)
  99.     req_   = urllib2.Request(restful_)
  100.     req_.add_header('Content-Type', 'application/xml')
  101.     xml_result = urllib2.urlopen(req_, xml_post).read()
  102.     parser(str(xml_result).replace(chr(34),""),a)
  103.     #print alarm_desempenho, alarm_falhas
  104.     return alarm_desempenho, alarm_falhas
  105.     if os.path.exists("teste.txt"):
  106.         os.remove("teste.txt")
  107.     y = open("teste.txt", "w")
  108.     y.write(str(alarm_desempenho))
  109.     y.close()
  110.     print "fim"
  111. #x("tremgope","tremgope")
  112.  
  113. #print len() #Litsa com os alarmes de desempenho
  114. #print len(alarm_falhas) #Lista com os alarmes de falha
  115.  
  116. #(Obviamente soh estou printando a quantidade de elementos das listas nesse exemplo. Precisamos printar o conteudo alarm_desempenho[x])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement