# your code goes here
import base64
import datetime
import json
from optparse import OptionParser
import urllib2
def defineOptions( ) :
print ( "hiiiiiiiiiii 1 cal" )
parser = OptionParser( ) ;
# How to connect/login to the ServiceNow instance
parser .add_option ( "--endPoint" , dest= "endPoint" , help = "The endpoint of the web service" , default= "https://d...content-available-to-author-only...w.com/api/now/table/em_event" )
parser .add_option ( "--user" , dest= "user" , help = "The user name credential" , default= "admin" )
parser .add_option ( "--password" , dest= "password" , help = "The user password credential" , default= "dasthu@1" )
print ( "hiiiiiiiiiii 2 cal" )
# Fields on the Event
parser .add_option ( "--source" , dest= "source" , help = "Source of the event" , default= "Icinga" )
parser .add_option ( "--eventClass" , dest= "eventClass" , help = "Event class" , default= "Icinga" )
parser .add_option ( "--messageKey" , dest= "messageKey" , help = "Message key" , default= "" )
parser .add_option ( "--node" , dest= "node" , help = "Name of the node" , default= "Default-Node" )
parser .add_option ( "--type" , dest= "type" , help = "Type of event" , default= "High Memory Utilization" )
parser .add_option ( "--resource" , dest= "resource" , help = "Represents the resource event is associated with" , default= "Default-Disk" )
parser .add_option ( "--severity" , dest= "severity" , help = "Severity of event" , default= "3" )
parser .add_option ( "--timeOfEvent" , dest= "timeOfEvent" , help = "Time of event in GMT format" , default= "" )
parser .add_option ( "--description" , dest= "description" , help = "Event description" , default= "Default event description" )
parser .add_option ( "--additionalInfo" , dest= "additionalInfo" , help = "Additional event information that can be used for third-party integration or other post-alert processing" , default= "{}" )
parser .add_option ( "--ciIdentifier" , dest= "ciIdentifier" , help = "Optional JSON string that represents a configuration item" , default= "{}" )
( options, args) = parser .parse_args ( )
return options
def execute( ) :
if ( options.timeOfEvent == "" ) :
options.timeOfEvent = datetime .datetime .utcnow ( ) .strftime ( '%Y-%m-%d %H:%M:%S' ) ;
if options.eventClass == "" :
options.eventClass = options.source
if options.messageKey == "" :
options.messageKey = options.source +"__" + options.node +"__" + options.type + "__" + options.resource
data = { "source" : options.source , "node" : options.node , "type" : options.type ,
"resource" : options.resource , "severity" : options.severity ,
"time_of_event" : options.timeOfEvent , "description" : options.description ,
"additional_info" : options.additionalInfo , "ci_identifier" : options.ciIdentifier ,
"event_class" : options.eventClass , "message_key" : options.messageKey }
data = json.dumps ( data)
headers = { 'Content-type' : 'application/json' , 'Accept' : 'application/json' }
request = urllib2 .Request ( url= options.endPoint , data= data, headers= headers)
base64string = base64 .urlsafe_b64encode ( '%s:%s' % ( options.user , options.password ) )
request.add_header ( "Authorization" , "Basic %s" % base64string)
f = urllib2 .urlopen ( request)
f.read ( )
f.close ( )
if __name__ == '__main__' :
options = defineOptions( ) ;
print ( "hiiiiiiiiiii 11 cal" )
print ( options)
execute( ) ;
IyB5b3VyIGNvZGUgZ29lcyBoZXJlCmltcG9ydCBiYXNlNjQKaW1wb3J0IGRhdGV0aW1lCmltcG9ydCBqc29uCmZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgppbXBvcnQgdXJsbGliMgoKZGVmIGRlZmluZU9wdGlvbnMoKToKcHJpbnQoImhpaWlpaWlpaWlpaSAxIGNhbCIpCiAgICBwYXJzZXIgPSBPcHRpb25QYXJzZXIoKTsKICAgIAogICAgIyBIb3cgdG8gY29ubmVjdC9sb2dpbiB0byB0aGUgU2VydmljZU5vdyBpbnN0YW5jZQogICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tZW5kUG9pbnQiLCBkZXN0PSJlbmRQb2ludCIsIGhlbHA9IlRoZSBlbmRwb2ludCBvZiB0aGUgd2ViIHNlcnZpY2UiLCBkZWZhdWx0PSJodHRwczovL2QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLncuY29tL2FwaS9ub3cvdGFibGUvZW1fZXZlbnQiKQogICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tdXNlciIsIGRlc3Q9InVzZXIiLCBoZWxwPSJUaGUgdXNlciBuYW1lIGNyZWRlbnRpYWwiLCBkZWZhdWx0PSJhZG1pbiIpCiAgICBwYXJzZXIuYWRkX29wdGlvbigiLS1wYXNzd29yZCIsIGRlc3Q9InBhc3N3b3JkIiwgaGVscD0iVGhlIHVzZXIgcGFzc3dvcmQgY3JlZGVudGlhbCIsIGRlZmF1bHQ9ImRhc3RodUAxIikKcHJpbnQoImhpaWlpaWlpaWlpaSAyIGNhbCIpCgogICAgIyBGaWVsZHMgb24gdGhlIEV2ZW50CiAgICBwYXJzZXIuYWRkX29wdGlvbigiLS1zb3VyY2UiLCBkZXN0PSJzb3VyY2UiLCBoZWxwPSJTb3VyY2Ugb2YgdGhlIGV2ZW50IiwgZGVmYXVsdD0iSWNpbmdhIikKICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLWV2ZW50Q2xhc3MiLCBkZXN0PSJldmVudENsYXNzIiwgaGVscD0iRXZlbnQgY2xhc3MiLCBkZWZhdWx0PSJJY2luZ2EiKQogICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tbWVzc2FnZUtleSIsIGRlc3Q9Im1lc3NhZ2VLZXkiLCBoZWxwPSJNZXNzYWdlIGtleSIsIGRlZmF1bHQ9IiIpICAgICAgIAogICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tbm9kZSIsIGRlc3Q9Im5vZGUiLCBoZWxwPSJOYW1lIG9mIHRoZSBub2RlIiwgZGVmYXVsdD0iRGVmYXVsdC1Ob2RlIikgICAgCiAgICBwYXJzZXIuYWRkX29wdGlvbigiLS10eXBlIiwgZGVzdD0idHlwZSIsIGhlbHA9IlR5cGUgb2YgZXZlbnQiLCBkZWZhdWx0PSJIaWdoIE1lbW9yeSBVdGlsaXphdGlvbiIpICAgICAgICAKICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLXJlc291cmNlIiwgZGVzdD0icmVzb3VyY2UiLCBoZWxwPSJSZXByZXNlbnRzIHRoZSByZXNvdXJjZSBldmVudCBpcyBhc3NvY2lhdGVkIHdpdGgiLCBkZWZhdWx0PSJEZWZhdWx0LURpc2siKSAgICAKICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLXNldmVyaXR5IiwgZGVzdD0ic2V2ZXJpdHkiLCBoZWxwPSJTZXZlcml0eSBvZiBldmVudCIsIGRlZmF1bHQ9IjMiKSAgICAKICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLXRpbWVPZkV2ZW50IiwgZGVzdD0idGltZU9mRXZlbnQiLCBoZWxwPSJUaW1lIG9mIGV2ZW50IGluIEdNVCBmb3JtYXQiLCBkZWZhdWx0PSIiKQogICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tZGVzY3JpcHRpb24iLCBkZXN0PSJkZXNjcmlwdGlvbiIsIGhlbHA9IkV2ZW50IGRlc2NyaXB0aW9uIiwgZGVmYXVsdD0iRGVmYXVsdCBldmVudCBkZXNjcmlwdGlvbiIpICAgIAogICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tYWRkaXRpb25hbEluZm8iLCBkZXN0PSJhZGRpdGlvbmFsSW5mbyIsIGhlbHA9IkFkZGl0aW9uYWwgZXZlbnQgaW5mb3JtYXRpb24gdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGhpcmQtcGFydHkgaW50ZWdyYXRpb24gb3Igb3RoZXIgcG9zdC1hbGVydCBwcm9jZXNzaW5nIiwgZGVmYXVsdD0ie30iKQogICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tY2lJZGVudGlmaWVyIiwgZGVzdD0iY2lJZGVudGlmaWVyIiwgaGVscD0iT3B0aW9uYWwgSlNPTiBzdHJpbmcgdGhhdCByZXByZXNlbnRzIGEgY29uZmlndXJhdGlvbiBpdGVtIiwgZGVmYXVsdD0ie30iKQoKICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgIHJldHVybiBvcHRpb25zCgpkZWYgZXhlY3V0ZSgpOgogICAgaWYgKG9wdGlvbnMudGltZU9mRXZlbnQgPT0gIiIpOgogICAgICBvcHRpb25zLnRpbWVPZkV2ZW50ID0gZGF0ZXRpbWUuZGF0ZXRpbWUudXRjbm93KCkuc3RyZnRpbWUoJyVZLSVtLSVkICVIOiVNOiVTJyk7CiAgICAgIAogICAgaWYgb3B0aW9ucy5ldmVudENsYXNzID09ICIiOgogICAgICAgIG9wdGlvbnMuZXZlbnRDbGFzcyA9IG9wdGlvbnMuc291cmNlCiAgIAogICAgaWYgb3B0aW9ucy5tZXNzYWdlS2V5ID09ICIiOgogICAgICAgIG9wdGlvbnMubWVzc2FnZUtleSA9IG9wdGlvbnMuc291cmNlICsiX18iICsgb3B0aW9ucy5ub2RlICsiX18iICsgb3B0aW9ucy50eXBlICsgIl9fIiArIG9wdGlvbnMucmVzb3VyY2UKCiAgICBkYXRhID0geyJzb3VyY2UiIDogb3B0aW9ucy5zb3VyY2UsICJub2RlIiA6IG9wdGlvbnMubm9kZSAsICJ0eXBlIiA6IG9wdGlvbnMudHlwZSwgCiAgICAgICAgICAgICJyZXNvdXJjZSIgOiBvcHRpb25zLnJlc291cmNlLCAic2V2ZXJpdHkiIDogb3B0aW9ucy5zZXZlcml0eSwgCiAgICAgICAgICAgICJ0aW1lX29mX2V2ZW50IiA6IG9wdGlvbnMudGltZU9mRXZlbnQsICJkZXNjcmlwdGlvbiIgOiBvcHRpb25zLmRlc2NyaXB0aW9uLAogICAgICAgICAgICAiYWRkaXRpb25hbF9pbmZvIiA6IG9wdGlvbnMuYWRkaXRpb25hbEluZm8sICJjaV9pZGVudGlmaWVyIiA6IG9wdGlvbnMuY2lJZGVudGlmaWVyLAogICAgICAgICAgICAiZXZlbnRfY2xhc3MiIDogb3B0aW9ucy5ldmVudENsYXNzLCAibWVzc2FnZV9rZXkiOiBvcHRpb25zLm1lc3NhZ2VLZXl9CiAgICBkYXRhID0ganNvbi5kdW1wcyhkYXRhKQoKICAgIGhlYWRlcnMgPSB7J0NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJ30KICAgIHJlcXVlc3QgPSB1cmxsaWIyLlJlcXVlc3QodXJsPW9wdGlvbnMuZW5kUG9pbnQsIGRhdGE9ZGF0YSwgaGVhZGVycz1oZWFkZXJzKQogICAgYmFzZTY0c3RyaW5nID0gYmFzZTY0LnVybHNhZmVfYjY0ZW5jb2RlKCclczolcycgJSAob3B0aW9ucy51c2VyLCBvcHRpb25zLnBhc3N3b3JkKSkKICAgIHJlcXVlc3QuYWRkX2hlYWRlcigiQXV0aG9yaXphdGlvbiIsICJCYXNpYyAlcyIgJSBiYXNlNjRzdHJpbmcpICAKICAgIGYgPSB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKICAgIGYucmVhZCgpCiAgICBmLmNsb3NlKCkKICAKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICBvcHRpb25zID0gZGVmaW5lT3B0aW9ucygpOwpwcmludCgiaGlpaWlpaWlpaWlpIDExIGNhbCIpCnByaW50KG9wdGlvbnMpCiAgCiAgZXhlY3V0ZSgpOw==