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