module Collins::Api::Management

Public Instance Methods

ipmi_allocate(asset_or_tag, options = {}) click to toggle source

allocate IPMI address/creds on an asset in a given pool, and handles generating username/password, like a normal asset creation with IPMI. omit pool option for default IPMI pool

# File lib/collins/api/management.rb, line 85
def ipmi_allocate asset_or_tag, options = {}
  asset = get_asset_or_tag asset_or_tag
  parameters = { :pool => get_option(:pool, options, nil) }
  parameters = select_non_empty_parameters parameters
  logger.debug("Allocating IPMI details on asset #{asset.tag} with parameters #{parameters.inspect}")
  http_put("/api/asset/#{asset.tag}/ipmi", parameters, asset.location) do |response|
    parse_response response, :expects => [201], :as => :status
  end
end
ipmi_create(asset_or_tag, username, password, address, gateway, netmask) click to toggle source
# File lib/collins/api/management.rb, line 60
def ipmi_create asset_or_tag, username, password, address, gateway, netmask
  ipmi_update asset_or_tag, :username => username, :password => password, :address => address,
                            :gateway => gateway, :netmask => netmask
end
ipmi_update(asset_or_tag, options = {}) click to toggle source
# File lib/collins/api/management.rb, line 65
def ipmi_update asset_or_tag, options = {}
  asset = get_asset_or_tag asset_or_tag
  parameters = {
    :username => get_option(:username, options, nil),
    :password => get_option(:password, options, nil),
    :address => get_option(:address, options, nil),
    :gateway => get_option(:gateway, options, nil),
    :netmask => get_option(:netmask, options, nil)
  }
  parameters = select_non_empty_parameters parameters
  return true if parameters.empty?
  logger.debug("Updating asset #{asset.tag} IPMI info with parameters #{parameters.inspect}")
  http_post("/api/asset/#{asset.tag}/ipmi", parameters, asset.location) do |response|
    parse_response response, :expects => [200,201], :as => :status
  end
end
power!(asset_or_tag, action) click to toggle source
# File lib/collins/api/management.rb, line 45
def power! asset_or_tag, action
  asset = get_asset_or_tag asset_or_tag
  if action.to_s.downcase == "status" then
    return power_status asset_or_tag
  end
  action = Collins::Power.normalize_action action
  parameters = {
    :action => action
  }
  logger.debug("Calling power action on #{asset.tag}, action #{action}")
  http_post("/api/asset/#{asset.tag}/power", parameters, asset.location) do |response|
    parse_response response, :expects => 200, :as => :status
  end
end
power_status(asset_or_tag) click to toggle source
# File lib/collins/api/management.rb, line 37
def power_status asset_or_tag
  asset = get_asset_or_tag asset_or_tag
  logger.debug("Checking power status of #{asset.tag}")
  http_get("/api/asset/#{asset.tag}/power", {}, asset.location) do |response|
    parse_response response, :expects => 200, :as => :message, :raise => strict?, :default => "Unknown"
  end
end
provision(asset_or_tag, profile, contact, options = {}) click to toggle source
# File lib/collins/api/management.rb, line 17
def provision asset_or_tag, profile, contact, options = {}
  asset = get_asset_or_tag asset_or_tag
  parameters = {
    :profile => profile,
    :contact => contact,
    :suffix => options[:suffix],
    :primary_role => options[:primary_role],
    :secondary_role => options[:secondary_role],
    :pool => options[:pool],
    :activate => options[:activate]
  }
  parameters = select_non_empty_parameters parameters
  if parameters.empty? then
    raise CollinsError.new("provision requires at least a profile")
  end
  http_post("/api/provision/#{asset.tag}", parameters, asset.location) do |response|
    parse_response response, :expects => 200, :as => :status
  end
end
provisioning_profiles() click to toggle source
# File lib/collins/api/management.rb, line 8
def provisioning_profiles
  logger.debug("Getting provisioning profiles from collins")
  http_get("/api/provision/profiles") do |response|
    parse_response response, :expects => 200, :as => :data do |json|
      json["PROFILES"].map { |o| Collins::Profile.new(o) }
    end
  end
end