Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # create_jira_issue.rb
- require 'rest_client'
- require 'json'
- def log_and_update_message(level, msg, update_message=false)
- $evm.log(level, "#{msg}")
- @task.message = msg if @task && (update_message || level == 'error')
- end
- def valid_json?(json)
- begin
- JSON.parse(json)
- return true
- rescue => parserr
- return false
- end
- end
- def call_jira(action, body_hash=nil)
- servername = nil || $evm.object['jira_servername']
- username = $evm.object['jira_service_id']
- password = $evm.object.decrypt('jira_pw')
- api_version = nil || $evm.object['api_version']
- url = "http://#{servername}/rest/api/2/issue/"
- params = {
- :method=>action, :url=>url,:user=>username, :password=>password,
- :verify_ssl=>false, :headers=>{ :content_type=>:json, :accept=>:json }
- }
- params[:payload] = JSON.generate(body_hash) if body_hash
- log_and_update_message(:info, "Calling -> JIRA:<#{url}> action:<#{action}> payload:<#{params[:payload]}>")
- response = RestClient::Request.new(params).execute
- raise "Failure code: #{response.code} response:<#{response.inspect}>" unless response.code == 200 || response.code == 201
- valid_json?(response) ? (return JSON.parse(response)) : (return response)
- end
- begin
- case $evm.root['vmdb_object_type']
- when 'miq_provision'
- prov = $evm.root['miq_provision']
- vm = prov.vm
- user_description = ''
- when 'vm'
- vm = $evm.root['vm']
- user_description = $evm.root['dialog_miq_alert_description']
- end
- body_hash = {
- 'fields' => {
- 'project' => {
- 'key' => "PRODINFPRJ"
- },
- 'summary' => "CF: #{vm.name} - #{user_description}",
- 'customfield_11170' => {
- 'value' => "Systems",
- "child" => {
- "id":"12121"
- },
- },
- "issuetype": {
- "name": "Impairment"
- }
- }
- }
- # '{
- # "fields": {
- # "project": {
- # "key": "PRODINFPRJ"
- # },
- # "summary": "REST ye merry gentlemen.",
- # "customfield_11170": {
- # "value":"Systems",
- # "child":{
- # "id":"12121"
- # }
- # },
- # "issuetype": {
- # "name": "Impairment"
- # }
- # }
- # }'
- jira_response = call_jira(:post, body_hash)
- log_and_update_message(:info, "jira_response: #{jira_response}")
- vm.custom_set(:JIRA_ticket, jira_response['key'])
- # Set Ruby rescue behavior
- rescue => err
- log_and_update_message(:error, "[#{err}]\n#{err.backtrace.join("\n")}")
- exit MIQ_ABORT
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement