Class: Dcmgr::Models::Network
Overview
Defined Under Namespace
Modules: IpLeaseMethods
Constant Summary
Constants inherited
from BaseNew
BaseNew::LOCK_TABLES_KEY
Instance Method Summary
collapse
#account
Methods inherited from BaseNew
Proxy, dataset, default_row_lock_mode=, install_data, install_data_hooks, lock!, unlock!, #with_timestamps?
Instance Method Details
#add_reserved(ipaddr) ⇒ Object
register reserved IP address in this network
100
101
102
|
# File 'lib/dcmgr/models/network.rb', line 100
def add_reserved(ipaddr)
add_ip_lease(:ipv4=>ipaddr, :type=>IpLease::TYPE_RESERVED)
end
|
#available_ip_nums ⇒ Object
104
105
106
|
# File 'lib/dcmgr/models/network.rb', line 104
def available_ip_nums
self.ipaddress.hosts.size - self.ip_lease_dataset.count
end
|
#before_destroy ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/dcmgr/models/network.rb', line 65
def before_destroy
Network.filter(:nat_network_id => self[:id]).each { |n|
n.nat_network_id = nil
n.save
}
self.ip_lease_dataset.filter(:alloc_type => IpLease::TYPE_RESERVED).each { |i|
i.destroy
}
super
end
|
#include?(ipaddr) ⇒ Boolean
check if the given IP addess is in the range of this network.
94
95
96
97
|
# File 'lib/dcmgr/models/network.rb', line 94
def include?(ipaddr)
ipaddr = ipaddr.is_a?(IPAddress::IPv4) ? ipaddr : IPAddress::IPv4.new(ipaddr)
self.ipaddress.network.include?(ipaddr)
end
|
#ipaddress ⇒ Object
88
89
90
|
# File 'lib/dcmgr/models/network.rb', line 88
def ipaddress
IPAddress::IPv4.new("#{self.ipv4_gw}/#{self.prefix}")
end
|
#nat_network ⇒ Object
84
85
86
|
# File 'lib/dcmgr/models/network.rb', line 84
def nat_network
Network.find(:id => self.nat_network_id)
end
|
#to_api_document ⇒ Object
80
81
82
|
# File 'lib/dcmgr/models/network.rb', line 80
def to_api_document
to_hash
end
|
#to_hash ⇒ Object
55
56
57
58
59
60
61
62
63
|
# File 'lib/dcmgr/models/network.rb', line 55
def to_hash
h = super
h.delete(:vlan_lease_id)
h.merge({
:bandwidth_mark=>self[:id],
:description=>description.to_s,
:vlan_id => vlan_lease.nil? ? 0 : vlan_lease.tag_id,
})
end
|
#validate ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/dcmgr/models/network.rb', line 40
def validate
super
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
|