Class: Dcmgr::Models::Network

Inherits:
AccountResource show all
Defined in:
lib/dcmgr/models/network.rb

Overview

IP network definitions.

Constant Summary

Constants inherited from BaseNew

BaseNew::LOCK_TABLES_KEY

Instance Method Summary collapse

Methods inherited from AccountResource

#account

Methods inherited from BaseNew

Proxy, dataset, install_data, install_data_hooks, lock!, unlock!

Instance Method Details

#add_reserved(ipaddr) ⇒ Object

register reserved IP address in this network



61
62
63
# File 'lib/dcmgr/models/network.rb', line 61

def add_reserved(ipaddr)
  add_ip_lease(:ipv4=>ipaddr, :type=>IpLease::TYPE_RESERVED)
end

#available_ip_numsObject



65
66
67
# File 'lib/dcmgr/models/network.rb', line 65

def available_ip_nums
  self.ipaddress.hosts.size - self.ip_lease_dataset.count
end

#include?(ipaddr) ⇒ Boolean

check if the given IP addess is in the range of this network.

Parameters:

  • ipaddr (String)

    IP address

Returns:

  • (Boolean)


55
56
57
58
# File 'lib/dcmgr/models/network.rb', line 55

def include?(ipaddr)
  ipaddr = ipaddr.is_a?(IPAddress::IPv4) ? ipaddr : IPAddress::IPv4.new(ipaddr)
  self.ipaddress.network.include?(ipaddr)
end

#ipaddressObject



49
50
51
# File 'lib/dcmgr/models/network.rb', line 49

def ipaddress
  IPAddress::IPv4.new("#{self.ipv4_gw}/#{self.prefix}")
end

#to_hashObject



40
41
42
43
44
45
46
47
# File 'lib/dcmgr/models/network.rb', line 40

def to_hash
  h = super
  h.delete(:vlan_lease_id)
  h.merge({
            :description=>description.to_s,
            :vlan_id => vlan_lease.tag_id,
          })
end

#validateObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/dcmgr/models/network.rb', line 25

def validate
  super
  
  # validate ipv4 syntax
  begin
    IPAddress::IPv4.new("#{self.ipv4_gw}")
  rescue => e
    errors.add(:ipv4_gw, "Invalid IP address syntax: #{self.ipv4_gw}")
  end

  unless (1..31).include?(self.prefix.to_i)
    errors.add(:prefix, "prefix must be 1-31: #{self.prefix}")
  end
end