Advertisement
Guest User

Untitled

a guest
Apr 26th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. # create_jira_issue.rb
  2.  
  3. require 'rest_client'
  4. require 'json'
  5.  
  6. def log_and_update_message(level, msg, update_message=false)
  7. $evm.log(level, "#{msg}")
  8. @task.message = msg if @task && (update_message || level == 'error')
  9. end
  10.  
  11. def valid_json?(json)
  12. begin
  13. JSON.parse(json)
  14. return true
  15. rescue => parserr
  16. return false
  17. end
  18. end
  19.  
  20. def call_jira(action, body_hash=nil)
  21. servername = nil || $evm.object['jira_servername']
  22. username = $evm.object['jira_service_id']
  23. password = $evm.object.decrypt('jira_pw')
  24. api_version = nil || $evm.object['api_version']
  25. url = "http://#{servername}/rest/api/2/issue/"
  26. params = {
  27. :method=>action, :url=>url,:user=>username, :password=>password,
  28. :verify_ssl=>false, :headers=>{ :content_type=>:json, :accept=>:json }
  29. }
  30. params[:payload] = JSON.generate(body_hash) if body_hash
  31. log_and_update_message(:info, "Calling -> JIRA:<#{url}> action:<#{action}> payload:<#{params[:payload]}>")
  32. response = RestClient::Request.new(params).execute
  33. raise "Failure code: #{response.code} response:<#{response.inspect}>" unless response.code == 200 || response.code == 201
  34. valid_json?(response) ? (return JSON.parse(response)) : (return response)
  35. end
  36.  
  37. begin
  38.  
  39. case $evm.root['vmdb_object_type']
  40. when 'miq_provision'
  41. prov = $evm.root['miq_provision']
  42. vm = prov.vm
  43. user_description = ''
  44. when 'vm'
  45. vm = $evm.root['vm']
  46. user_description = $evm.root['dialog_miq_alert_description']
  47. end
  48.  
  49. body_hash = {
  50. 'fields' => {
  51. 'project' => {
  52. 'key' => "PRODINFPRJ"
  53. },
  54. 'summary' => "CF: #{vm.name} - #{user_description}",
  55. 'customfield_11170' => {
  56. 'value' => "Systems",
  57. "child" => {
  58. "id":"12121"
  59. },
  60. },
  61. "issuetype": {
  62. "name": "Impairment"
  63. }
  64. }
  65. }
  66.  
  67. # '{
  68. # "fields": {
  69. # "project": {
  70. # "key": "PRODINFPRJ"
  71. # },
  72. # "summary": "REST ye merry gentlemen.",
  73. # "customfield_11170": {
  74. # "value":"Systems",
  75. # "child":{
  76. # "id":"12121"
  77. # }
  78. # },
  79. # "issuetype": {
  80. # "name": "Impairment"
  81. # }
  82. # }
  83. # }'
  84.  
  85. jira_response = call_jira(:post, body_hash)
  86. log_and_update_message(:info, "jira_response: #{jira_response}")
  87. vm.custom_set(:JIRA_ticket, jira_response['key'])
  88.  
  89. # Set Ruby rescue behavior
  90. rescue => err
  91. log_and_update_message(:error, "[#{err}]\n#{err.backtrace.join("\n")}")
  92. exit MIQ_ABORT
  93. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement