Module: Collins::Api::IpAddress

Included in:
Collins::Api
Defined in:
lib/collins/api/ip_address.rb

Instance Method Summary collapse

Instance Method Details

#addresses_for_asset(asset_or_tag) ⇒ Object



59
60
61
62
63
64
65
66
67
# File 'lib/collins/api/ip_address.rb', line 59

def addresses_for_asset asset_or_tag
  asset = get_asset_or_tag asset_or_tag
  logger.debug("Getting IP addresses for asset #{asset.tag}")
  http_get("/api/asset/#{asset.tag}/addresses", {}, asset.location) do |response|
    parse_response response, :expects => 200, :default => [], :raise => strict? do |json|
      Collins::Address.from_json(json["data"]["ADDRESSES"])
    end
  end
end

#asset_at_address(address) ⇒ Object



69
70
71
72
73
74
# File 'lib/collins/api/ip_address.rb', line 69

def asset_at_address address
  logger.debug("Finding asset at address #{address}")
  http_get("/api/asset/with/address/#{address}") do |response|
    parse_response response, :expects => 200, :default => nil, :raise => strict?, :as => :bare_asset
  end
end

#assets_in_pool(pool) ⇒ Object



76
77
78
79
80
81
82
83
# File 'lib/collins/api/ip_address.rb', line 76

def assets_in_pool pool
  logger.debug("Finding assets in pool #{pool}")
  http_get("/api/assets/with/addresses/in/#{pool}") do |response|
    parse_response response, :expects => 200, :default => [], :raise => strict? do |json|
      json["data"]["ASSETS"].map{|j| Collins::Asset.from_json(j, true)}
    end
  end
end

#ipaddress_allocate!(asset_or_tag, address_pool, count = 1) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/collins/api/ip_address.rb', line 6

def ipaddress_allocate! asset_or_tag, address_pool, count = 1
  asset = get_asset_or_tag asset_or_tag
  logger.debug("Allocating #{count} addresses for #{asset.tag} in pool #{address_pool}")
  parameters = {
    :count => count,
    :pool => address_pool
  }
  http_put("/api/asset/#{asset.tag}/address", parameters, asset.location) do |response|
    parse_response response, :expects => 201, :default => [] do |json|
      Collins::Address.from_json(json["data"]["ADDRESSES"])
    end
  end
end

#ipaddress_delete!(asset_or_tag, pool = nil) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/collins/api/ip_address.rb', line 36

def ipaddress_delete! asset_or_tag, pool = nil
  asset = get_asset_or_tag asset_or_tag
  logger.debug("Deleting addresses for asset #{asset.tag} in pool #{pool}")
  parameters = {
    :pool => pool
  }
  parameters = select_non_empty_parameters parameters
  http_delete("/api/asset/#{asset.tag}/addresses", parameters, asset.location) do |response|
    parse_response response, :expects => 200, :default => false, :raise => strict? do |json|
      json["data"]["DELETED"].to_s.to_i
    end
  end
end

#ipaddress_pools(show_all = true) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/collins/api/ip_address.rb', line 50

def ipaddress_pools show_all = true
  logger.debug("Finding IP address pools")
  http_get("/api/address/pools", {:all => show_all}) do |response|
    parse_response response, :expects => 200, :default => [], :raise => strict? do |json|
      json["data"]["POOLS"]
    end
  end
end

#ipaddress_update!(asset_or_tag, old_address = nil, options = {}) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/collins/api/ip_address.rb', line 20

def ipaddress_update! asset_or_tag, old_address = nil, options = {}
  asset = get_asset_or_tag asset_or_tag
  logger.debug("Updating IP address for #{asset.tag}")
  parameters = {
    :old_address => old_address,
    :address => get_option(:address, options, nil),
    :gateway => get_option(:gateway, options, nil),
    :netmask => get_option(:netmask, options, nil),
    :pool => get_option(:pool, options, nil)
  }
  parameters = select_non_empty_parameters parameters
  http_post("/api/asset/#{asset.tag}/address", parameters, asset.location) do |response|
    parse_response response, :expects => [200,201], :default => false, :raise => strict?
  end
end