class IbmPowerHmc::HmcJob

HMC Job for long running operations

Public Class Methods

new(hc, method_url, operation, group, params) click to toggle source
# File lib/ibm_power_hmc/job.rb, line 7
def initialize(hc, method_url, operation, group, params)
  @hc = hc
  @method_url = method_url
  @operation = operation
  @group = group
  @params = params
end

Public Instance Methods

delete() click to toggle source
# File lib/ibm_power_hmc/job.rb, line 64
def delete
  # Damien: check id is defined
  method_url = "/rest/api/uom/jobs/#{@id}"
  @hc.request(:delete, method_url)
  # Returns HTTP 204 if ok
end
start() click to toggle source
# File lib/ibm_power_hmc/job.rb, line 15
def start
  headers = {
    content_type: "application/vnd.ibm.powervm.web+xml; type=JobRequest"
  }
  doc = REXML::Document.new("")
  doc.add_element("JobRequest:JobRequest", {
                    "xmlns:JobRequest" => "http://www.ibm.com/xmlns/systems/power/firmware/web/mc/2012_10/",
                    "xmlns" => "http://www.ibm.com/xmlns/systems/power/firmware/web/mc/2012_10/",
                    "schemaVersion" => "V1_1_0"
                  })
  op = doc.root.add_element("RequestedOperation", { "schemaVersion" => "V1_1_0" })
  op.add_element("OperationName").text = @operation
  op.add_element("GroupName").text = @group
  # Damien: ProgressType?
  jobparams = doc.root.add_element("JobParameters", { "schemaVersion" => "V1_1_0" })
  @params.each do |key, value|
    jobparam = jobparams.add_element("JobParameter", { "schemaVersion" => "V1_1_0" })
    jobparam.add_element("ParameterName").text = key
    jobparam.add_element("ParameterValue").text = value
  end
  response = @hc.request(:put, @method_url, headers, doc.to_s)
  doc = REXML::Document.new(response.body)
  info = doc.root.elements["content/JobResponse:JobResponse"]
  @id = info.elements["JobID"].text
end
status() click to toggle source
# File lib/ibm_power_hmc/job.rb, line 41
def status
  # Damien: check id is defined
  method_url = "/rest/api/uom/jobs/#{@id}"
  headers = {
    content_type: "application/vnd.ibm.powervm.web+xml; type=JobRequest"
  }
  response = @hc.request(:get, method_url, headers)
  doc = REXML::Document.new(response.body)
  info = doc.root.elements["content/JobResponse:JobResponse"]
  status = info.elements["Status"].text
  # Damien: also retrieve "ResponseException/Message"
  status
end
wait(timeout = 120, poll_interval = 30) click to toggle source
# File lib/ibm_power_hmc/job.rb, line 55
def wait(timeout = 120, poll_interval = 30)
  endtime = Time.now + timeout
  while Time.now < endtime do
    status = self.status
    break if status != "RUNNING" # Damien: and != "STARTING"?
    sleep(poll_interval)
  end
end