pingable_ipam_plugin 0.0.5 → 0.0.6

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
  SHA256:
3
- metadata.gz: a74278facc95a796eaa1a5cf9122ba1869dbc3300bd17a16e919deb53fbc6206
4
- data.tar.gz: cba5705fe14534f4c24734951a3fb8e809709f052b13c65ed8845b9b8d7c8c4a
3
+ metadata.gz: 908ad71e7072a4b86a8f72b60fe937148dc4053638fa4044e6949c1e48ce17b8
4
+ data.tar.gz: 310482875a9873683c62e72e36e074307f0f7053c12a93f1f863a44c60b348a9
5
5
  SHA512:
6
- metadata.gz: 8d9edce903ef99a98ab52e32ce97a18e9eb948c84389a5057c8faf6cd97c366d2097f4df58a90149ab477b9a9b40b14d86ffe904f3a26be74eee0796b2fe89b1
7
- data.tar.gz: 8f23bf9ac404645cf6e25a16dc17c258f6e947dc2045a68cea6a61886845092c062175a4f933be1c18e69aeb57eea6ef503b24ff169d3c97a08a85a64d2dd39d
6
+ metadata.gz: d825d67a8ba86b77486e86caeb2ac58f7d8bb987a05f5e98ee2a5ff6b5ce15fa4fc6e904455d68ccaf12eadb9f893fa26b59754d5bccf0acd16eaf11e0e66141
7
+ data.tar.gz: a223b1c4aa23c8eb969122dfa3c2252183a99c2853244ce95a1501ba290f6938043a9698add803650b9c79e7394100132682a78e0be26ac93958c65b2c77b141
@@ -1,5 +1,6 @@
1
1
  require 'timeout'
2
2
  require 'socket'
3
+ require 'resolv'
3
4
 
4
5
  module IPAM
5
6
  class PingRandomDb < Base
@@ -67,6 +68,16 @@ module IPAM
67
68
  true
68
69
  end
69
70
 
71
+ def ns_resolvable? ip
72
+ begin
73
+ name = Resolv.getname ip
74
+ logger.warn "Found a DNS resolvable IP #{ip}, resolved name: #{name}."
75
+ true
76
+ rescue StandardError
77
+ false
78
+ end
79
+ end
80
+
70
81
  # Safety check not to spend much CPU time when there are no many free IPs left. This gives up
71
82
  # in about a second on Ryzen 1700 running with Ruby 2.4.
72
83
  MAX_ITERATIONS = 100_000
@@ -95,8 +106,10 @@ module IPAM
95
106
  if tcp_pingable?(ip) || icmp_pingable?(ip)
96
107
  logger.warn("Found a pingable IP (#{ip}) address which not marked as known. Skipping it...")
97
108
  else
98
- logger.debug("Found #{ip} in #{iterations} iterations")
99
- return ip
109
+ unless ns_resolvable?(ip)
110
+ logger.debug("Found #{ip} in #{iterations} iterations")
111
+ return ip
112
+ end
100
113
  end
101
114
  end
102
115
  end
@@ -1,3 +1,3 @@
1
1
  module PingableIpamPlugin
2
- VERSION = '0.0.5'.freeze
2
+ VERSION = '0.0.6'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pingable_ipam_plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Parshin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-11 00:00:00.000000000 Z
11
+ date: 2020-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop