smart_proxy_dhcp_device42 1.0.4 → 1.0.7
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 +4 -4
- data/README.md +3 -3
- data/config/dhcp_device42.yml.example +9 -0
- data/lib/smart_proxy_dhcp_device42.rb +3 -0
- data/lib/smart_proxy_dhcp_device42/device42_api.rb +15 -14
- data/lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb +15 -0
- data/lib/smart_proxy_dhcp_device42/dhcp_device42_plugin.rb +7 -1
- data/lib/smart_proxy_dhcp_device42/dhcp_device42_version.rb +1 -1
- data/lib/smart_proxy_dhcp_device42/module_loader.rb +6 -0
- data/lib/smart_proxy_dhcp_device42/scheme_validator.rb +8 -0
- data/lib/smart_proxy_dhcp_device42/verify_validator.rb +8 -0
- metadata +6 -3
- data/config/dhcp_device42.yml +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 720587ff8e5e3c27316e02285178dafe2b8a4cd5
|
4
|
+
data.tar.gz: e2d27fe1e2c7a00566f2779cceafff35a96be08b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06102dcdd46fa4f8d26d22d677008dc5c38f98c7e3870c4b8f10de26bfaa5243faa2993b49557bc996f0a526a502c886e10cfa187568dc1a2abab1b8a25ce05a
|
7
|
+
data.tar.gz: 1cd2fa271260a0358a687ae500beffedccf60b2b343d8e8b271dbac34457e26bb91a91c87a9e1ff30788b29847c7211d3855bb68240ab044958ff3e74157baaf
|
data/README.md
CHANGED
@@ -18,13 +18,13 @@ When installing using "gem", make sure to install the bundle file:
|
|
18
18
|
To enable this DHCP provider, edit `/etc/foreman-proxy/settings.d/dhcp.yml` and set:
|
19
19
|
|
20
20
|
:use_provider: dhcp_device42
|
21
|
-
:scheme: server scheme
|
22
|
-
:verify: secure verification ( bool )
|
23
|
-
:server: IP of device42 server
|
24
21
|
:subnets: subnets you want to use (optional unless you set device42_subnets to false)
|
25
22
|
|
26
23
|
Configuration options for this plugin are in `/etc/foreman-proxy/settings.d/dhcp_device42.yml` and include:
|
27
24
|
|
25
|
+
:scheme: server scheme
|
26
|
+
:verify: secure verification ( bool )
|
27
|
+
:server: IP of device42 server
|
28
28
|
:username: API Username
|
29
29
|
:password: API Password
|
30
30
|
|
@@ -5,5 +5,8 @@ module Proxy
|
|
5
5
|
end
|
6
6
|
|
7
7
|
require 'smart_proxy_dhcp_device42/plugin_configuration'
|
8
|
+
require 'smart_proxy_dhcp_device42/scheme_validator'
|
9
|
+
require 'smart_proxy_dhcp_device42/verify_validator'
|
10
|
+
require 'smart_proxy_dhcp_device42/module_loader'
|
8
11
|
require 'smart_proxy_dhcp_device42/dhcp_device42_version'
|
9
12
|
require 'smart_proxy_dhcp_device42/dhcp_device42_plugin'
|
@@ -23,10 +23,6 @@ class Device42
|
|
23
23
|
|
24
24
|
def rest_get(endpoint, querystring)
|
25
25
|
response = HTTParty.get("%s://%s/api/1.0/%s/%s" % [@scheme, @host, endpoint, querystring], {
|
26
|
-
:headers => {
|
27
|
-
'Content-Type' => 'application/x-www-form-urlencoded',
|
28
|
-
'charset' => 'utf-8'
|
29
|
-
},
|
30
26
|
:basic_auth => { :username => @username, :password => @password },
|
31
27
|
:verify => @verify
|
32
28
|
})
|
@@ -37,8 +33,7 @@ class Device42
|
|
37
33
|
response = HTTParty.post("%s://%s/api/1.0/%s/" % [@scheme, @host, endpoint], {
|
38
34
|
:body => body,
|
39
35
|
:headers => {
|
40
|
-
'Content-Type' => 'application/x-www-form-urlencoded'
|
41
|
-
'charset' => 'utf-8'
|
36
|
+
'Content-Type' => 'application/x-www-form-urlencoded'
|
42
37
|
},
|
43
38
|
:basic_auth => { :username => @username, :password => @password },
|
44
39
|
:verify => @verify
|
@@ -61,8 +56,7 @@ class Device42
|
|
61
56
|
:query => query
|
62
57
|
},
|
63
58
|
:headers => {
|
64
|
-
'Content-Type' => 'application/x-www-form-urlencoded'
|
65
|
-
'charset' => 'utf-8'
|
59
|
+
'Content-Type' => 'application/x-www-form-urlencoded'
|
66
60
|
},
|
67
61
|
:basic_auth => { :username => @username, :password => @password },
|
68
62
|
:verify => @verify
|
@@ -84,15 +78,22 @@ class Device42
|
|
84
78
|
rest_post('ips', ip)
|
85
79
|
end
|
86
80
|
|
87
|
-
def remove_host(
|
88
|
-
|
89
|
-
|
90
|
-
}
|
91
|
-
response = JSON.parse(rest_post('devices', device))
|
92
|
-
device_id = response['msg'][1]
|
81
|
+
def remove_host(hostname)
|
82
|
+
response = JSON.parse(rest_get('devices/name', hostname))
|
83
|
+
device_id = response['id']
|
93
84
|
rest_delete('devices', device_id)
|
94
85
|
end
|
95
86
|
|
87
|
+
def get_hosts(network_address)
|
88
|
+
csv = doql("SELECT d.name, i.ip_address, n.hwaddress, s.network, s.mask_bits FROM view_subnet_v1 s
|
89
|
+
JOIN view_ipaddress_v1 i ON i.subnet_fk = s.subnet_pk
|
90
|
+
JOIN view_device_v1 d ON d.device_pk = i.device_fk
|
91
|
+
JOIN view_netport_v1 n ON n.netport_pk = i.netport_fk
|
92
|
+
WHERE s.network in ('%s')
|
93
|
+
AND i.available = False" % network_address)
|
94
|
+
return csv_to_array(csv)
|
95
|
+
end
|
96
|
+
|
96
97
|
def get_hosts_by_ip(ip)
|
97
98
|
csv = doql("SELECT d.name, i.ip_address, n.hwaddress, s.network, s.mask_bits FROM view_ipaddress_v1 i
|
98
99
|
JOIN view_device_v1 d ON d.device_pk = i.device_fk
|
@@ -46,6 +46,21 @@ module Proxy::DHCP::Device42
|
|
46
46
|
difined_subnets
|
47
47
|
end
|
48
48
|
|
49
|
+
def all_hosts(network_address)
|
50
|
+
records = @connection.get_hosts(network_address)
|
51
|
+
return [] if records.empty?
|
52
|
+
reservs = []
|
53
|
+
records.each do |record|
|
54
|
+
reserv = build_reservation(record)
|
55
|
+
reservs.push(reserv) if !reserv.nil?
|
56
|
+
end
|
57
|
+
reservs
|
58
|
+
end
|
59
|
+
|
60
|
+
def all_leases(network_address)
|
61
|
+
[] # device42 doesn't support leases
|
62
|
+
end
|
63
|
+
|
49
64
|
def unused_ip(subnet, _, from_ip_address, to_ip_address)
|
50
65
|
@connection.get_next_ip(subnet, from_ip_address, to_ip_address)
|
51
66
|
end
|
@@ -2,11 +2,17 @@ module Proxy::DHCP::Device42
|
|
2
2
|
class Plugin < ::Proxy::Provider
|
3
3
|
plugin :dhcp_device42, ::Proxy::DHCP::Device42::VERSION
|
4
4
|
|
5
|
-
validate_presence :username, :password
|
5
|
+
validate_presence :username, :password, :server, :scheme, :verify
|
6
6
|
|
7
7
|
requires :dhcp, '>= 1.16'
|
8
8
|
|
9
9
|
load_classes ::Proxy::DHCP::Device42::PluginConfiguration
|
10
10
|
load_dependency_injection_wirings ::Proxy::DHCP::Device42::PluginConfiguration
|
11
|
+
override_module_loader_class ::Proxy::DHCP::Device42::ModuleLoader
|
12
|
+
|
13
|
+
load_validators :scheme_validator => ::Proxy::DHCP::Device42::SchemeValidator, :verify_validator => ::Proxy::DHCP::Device42::VerifyValidator
|
14
|
+
|
15
|
+
validate :scheme, :scheme_validator => true
|
16
|
+
validate :verify, :verify_validator => true
|
11
17
|
end
|
12
18
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
module ::Proxy::DHCP::Device42
|
2
|
+
class SchemeValidator < ::Proxy::PluginValidators::Base
|
3
|
+
def validate!(settings)
|
4
|
+
return true if ['http', 'https'].include?(settings[:scheme])
|
5
|
+
raise ::Proxy::Error::ConfigurationError, "Setting 'scheme' can be set to either 'http' or 'https'"
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
module ::Proxy::DHCP::Device42
|
2
|
+
class VerifyValidator < ::Proxy::PluginValidators::Base
|
3
|
+
def validate!(settings)
|
4
|
+
return true if [true, false].include?(settings[:verify])
|
5
|
+
raise ::Proxy::Error::ConfigurationError, "Setting 'verify' can be set to either 'true' or 'false' ( bool )"
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_proxy_dhcp_device42
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anatolii Chmykhalo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -34,13 +34,16 @@ files:
|
|
34
34
|
- LICENSE
|
35
35
|
- README.md
|
36
36
|
- bundler.d/dhcp_device42.rb
|
37
|
-
- config/dhcp_device42.yml
|
37
|
+
- config/dhcp_device42.yml.example
|
38
38
|
- lib/smart_proxy_dhcp_device42.rb
|
39
39
|
- lib/smart_proxy_dhcp_device42/device42_api.rb
|
40
40
|
- lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb
|
41
41
|
- lib/smart_proxy_dhcp_device42/dhcp_device42_plugin.rb
|
42
42
|
- lib/smart_proxy_dhcp_device42/dhcp_device42_version.rb
|
43
|
+
- lib/smart_proxy_dhcp_device42/module_loader.rb
|
43
44
|
- lib/smart_proxy_dhcp_device42/plugin_configuration.rb
|
45
|
+
- lib/smart_proxy_dhcp_device42/scheme_validator.rb
|
46
|
+
- lib/smart_proxy_dhcp_device42/verify_validator.rb
|
44
47
|
homepage: https://www.device42.com
|
45
48
|
licenses:
|
46
49
|
- GPL-3.0
|
data/config/dhcp_device42.yml
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
---
|
2
|
-
# Configuration file for 'dhcp_device42' dhcp provider
|
3
|
-
#
|
4
|
-
# use :server setting in dhcp.yml if you are managing a dhcp server which is not localhost
|
5
|
-
# use :subnets setting in dhcp.yml if you want to restrict subnets available to smart-proxy
|
6
|
-
#
|
7
|
-
:username: "admin"
|
8
|
-
:password: "admin"
|