smart_proxy_dhcp_infoblox 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e9d476422505f0de1b398cec16d1dc065b5906e9
4
- data.tar.gz: 59b2f67f873701ffc0e21a4f553cf50c055f627d
3
+ metadata.gz: a6a4ca3969027de5275b0b1bceb2a61900d33286
4
+ data.tar.gz: dea402d92c6936893c77c25a80e11591ea2d3aa3
5
5
  SHA512:
6
- metadata.gz: 169b3d6d58d49639054c06b65f7bd4f2ea847b0e01f5569db7a80e1b7750b220aceee8d8cf295010f87c0a9f80b870120f18042a6867c03173e709ef2809504b
7
- data.tar.gz: 5ba39c49492d1ac3c7a6c90ed30737b0549f3a406e7b9396245561f805c12a9fdb1445ae5598420a9ace11b699bb122e4ed7fbc00638dbfd94b4bda27cb04f68
6
+ metadata.gz: 9b0c9339057157d473c3db84aefa42565a14f3a1dd050653fae39d93ce9d8a10684adb813d311ec4046f3b9e81f8b6a731f6cb1d75b38693f328f16f8fbff349
7
+ data.tar.gz: 140aed657e449dc0104586d4d3f1084aea9bbbf06d6c731c42720af190b152b07f9ba177c8fb13c4e8eee28aa89a102969449dcf1edc4a68b52f6edf1dd845dc
@@ -1,5 +1,6 @@
1
1
  require 'dhcp_common/server'
2
2
  require 'infoblox'
3
+ require 'ipaddr'
3
4
 
4
5
  module Proxy::DHCP::Infoblox
5
6
  class Provider < ::Proxy::DHCP::Server
@@ -100,10 +101,29 @@ module Proxy::DHCP::Infoblox
100
101
  # returns first available ip address in a subnet with network_address, for a host with mac_address, in the range of ip addresses: from_ip_address, to_ip_address
101
102
  # Deliberatly ignoring everything but first argument
102
103
  logger.debug "Infoblox unused_ip Network_address: #{network_address} #{mac_address}, #{from_ip_address}, #{to_ip_address}"
103
- if @range
104
- ::Infoblox::Range.find(@connection, network: "#{network_address.network}/#{network_address.cidr}").first.next_available_ip
104
+ #next_available_ip can take a number to return (1), and an array of ips to exclude. So, we need to:
105
+ #build a list of all ips in the network (all_addresses)
106
+ #build a list of all ips in between from_ip_address and to_ip_address (include_addresses)
107
+ #remove all of the from_ip_address and to_ip_address from the all_address (exclude_addresses)
108
+ #and call next_available_ip with exclude_addresses passed
109
+ all_addresses = Array.new
110
+ net=IPAddr.new("#{network_address.network}/#{network_address.cidr}")
111
+ net.to_range.each do |ip|
112
+ all_addresses.push(ip.to_s)
113
+ end
114
+ range_start=IPAddr.new(from_ip_address)
115
+ range_stop=IPAddr.new(to_ip_address)
116
+ included_addresses=Array.new
117
+ (range_start..range_stop).each do |ip|
118
+ included_addresses.push(ip.to_s)
119
+ end
120
+ excluded_addresses=all_addresses-included_addresses
121
+ #excluded_addresses is now an array of ips containing all the ips from the network not between from, and to_ip_address
122
+
123
+ if @range
124
+ ::Infoblox::Range.find(@connection, network: "#{network_address.network}/#{network_address.cidr}").first.next_available_ip(1,excluded_addresses)
105
125
  else
106
- ::Infoblox::Network.find(@connection, network: "#{network_address.network}/#{network_address.cidr}").first.next_available_ip
126
+ ::Infoblox::Network.find(@connection, network: "#{network_address.network}/#{network_address.cidr}").first.next_available_ip(1,excluded_addresses)
107
127
  end
108
128
  # Idea for randomisation in case of concurrent installs:
109
129
  #::Infoblox::Network.find(@connection, network: "#{network_address.network}/#{network_address.cidr}").first.next_available_ip(15).sample
@@ -1,7 +1,7 @@
1
1
  module Proxy
2
2
  module DHCP
3
3
  module Infoblox
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.3'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_proxy_dhcp_infoblox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Klaas Demter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-19 00:00:00.000000000 Z
11
+ date: 2016-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
90
  version: '0'
91
91
  requirements: []
92
92
  rubyforge_project:
93
- rubygems_version: 2.2.2
93
+ rubygems_version: 2.5.1
94
94
  signing_key:
95
95
  specification_version: 4
96
96
  summary: Infoblox DHCP provider plugin for Foreman's smart proxy