vagrant-powerdns 0.1.3 → 0.1.4
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/lib/vagrant-powerdns/action.rb +33 -24
- data/lib/vagrant-powerdns/config.rb +4 -2
- data/lib/vagrant-powerdns/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc8b1b7a3bec8ad99768ddd3b9a121c4c8e11d3f
|
4
|
+
data.tar.gz: 41e9ba6a0ef85ba5868e9004f88c4dc00ac24c25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78c6d01a68e63df6c00c1edb0b1b16705fd158fd923cc6176bdbaf5e5e34724f0e0c0479743b8454073bd48a1cc9cd90531abbd5fe994626bae009fc3ac91357
|
7
|
+
data.tar.gz: a61c70169d0ab2a0e2c3588fa8f62bac74597b520cdc0b2e1386b5fc285e34a58825e0f0fe6fffd8d0dcb1905cebc9060549d27858ceb71029ea6718e1f1b366
|
@@ -5,18 +5,19 @@ module Vagrant
|
|
5
5
|
def initialize(app, env)
|
6
6
|
@app = app
|
7
7
|
@machine = env[:machine]
|
8
|
-
@zone = env[:machine].config.powerdns.default_zone
|
9
|
-
@host = env[:machine].config.vm.hostname.nil? ?
|
10
|
-
env[:machine].name.to_s : env[:machine].config.vm.hostname.to_s
|
11
|
-
@domain = @host.include?(@zone.name)? @host : @host + @zone.dotted
|
12
|
-
|
13
|
-
# Identify who i am
|
14
|
-
@myuser = Etc.getlogin.gsub(/\s+/, '')
|
15
|
-
@myhost = Socket.gethostname
|
16
8
|
end
|
17
9
|
|
18
10
|
def call(env)
|
19
11
|
if @machine.config.powerdns.enabled?
|
12
|
+
@zone = env[:machine].config.powerdns.default_zone
|
13
|
+
@host = env[:machine].config.vm.hostname.nil? ?
|
14
|
+
env[:machine].name.to_s : env[:machine].config.vm.hostname.to_s
|
15
|
+
@domain = @host.include?(@zone.name)? @host : @host + @zone.dotted
|
16
|
+
|
17
|
+
# Identify who i am
|
18
|
+
@myuser = Etc.getlogin.gsub(/\s+/, '')
|
19
|
+
@myhost = Socket.gethostname
|
20
|
+
|
20
21
|
# assume default gateway address
|
21
22
|
@machine.communicate.sudo "ip route get to 8.8.8.8 | head -n 1" do |type,data|
|
22
23
|
stdout = data.chomp if type == :stdout
|
@@ -27,10 +28,14 @@ module Vagrant
|
|
27
28
|
|
28
29
|
p = PdnsRestApiClient.new(env[:machine].config.powerdns.api_url,
|
29
30
|
env[:machine].config.powerdns.api_key)
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
begin
|
32
|
+
# Only update if IP changed or inactive
|
33
|
+
record_not_found = p.zone(zone)["records"].select {|v| v["type"] == "A" and v["name"] == @domain and v["content"] == ip}.empty?
|
34
|
+
record_disabled = p.zone(zone)["records"].select { |v| v["type"] == "A" and v["name"] == @domain and v["disable"]}.empty?
|
35
|
+
rescue
|
36
|
+
env[:ui].info "PowerDNS: Error while calling PowernDNS API. Skip DNS action..."
|
37
|
+
return
|
38
|
+
end
|
34
39
|
|
35
40
|
if record_not_found or record_disabled
|
36
41
|
env[:ui].info "PowerDNS action..."
|
@@ -79,26 +84,30 @@ module Vagrant
|
|
79
84
|
def initialize(app, env)
|
80
85
|
@app = app
|
81
86
|
@machine = env[:machine]
|
82
|
-
@zone = env[:machine].config.powerdns.default_zone
|
83
|
-
@host = env[:machine].config.vm.hostname.nil? ?
|
84
|
-
env[:machine].name.to_s : env[:machine].config.vm.hostname.to_s
|
85
|
-
@domain = @host.include?(@zone.name)? @host : @host + @zone.dotted
|
86
|
-
|
87
|
-
# Identify who i am
|
88
|
-
@myuser = Etc.getlogin.gsub(/\s+/, '')
|
89
|
-
@myhost = Socket.gethostname
|
90
87
|
end
|
91
88
|
|
92
89
|
def call(env)
|
93
90
|
if @machine.config.powerdns.enabled?
|
91
|
+
@zone = env[:machine].config.powerdns.default_zone
|
92
|
+
@host = env[:machine].config.vm.hostname.nil? ?
|
93
|
+
env[:machine].name.to_s : env[:machine].config.vm.hostname.to_s
|
94
|
+
@domain = @host.include?(@zone.name)? @host : @host + @zone.dotted
|
95
|
+
|
96
|
+
# Identify who i am
|
97
|
+
@myuser = Etc.getlogin.gsub(/\s+/, '')
|
98
|
+
@myhost = Socket.gethostname
|
94
99
|
p = PdnsRestApiClient.new(env[:machine].config.powerdns.api_url,
|
95
100
|
env[:machine].config.powerdns.api_key)
|
96
101
|
|
97
102
|
zone = @zone.name
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
103
|
+
begin
|
104
|
+
record = p.zone(zone)["records"].find {|v| v["name"] == @domain}
|
105
|
+
# Get comments for this domain
|
106
|
+
comments = p.zone(zone)["comments"].select {|v| v["name"] == @domain}
|
107
|
+
rescue
|
108
|
+
env[:ui].info "PowerDNS: Error while calling PowernDNS API. Skip DNS action..."
|
109
|
+
return
|
110
|
+
end # Get A record
|
102
111
|
|
103
112
|
# only disable if active
|
104
113
|
if !record.nil? and not record["disabled"]
|
@@ -15,9 +15,11 @@ module Vagrant
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def finalize!
|
18
|
-
|
19
18
|
if @default_zone == UNSET_VALUE
|
20
19
|
@default_zone = nil
|
20
|
+
elsif @default_zone.nil?
|
21
|
+
# Completely disable if no default zone
|
22
|
+
@disable = true
|
21
23
|
elsif !@default_zone.is_a?(Zone)
|
22
24
|
@default_zone = Zone.new @default_zone;
|
23
25
|
end
|
@@ -29,7 +31,7 @@ module Vagrant
|
|
29
31
|
end
|
30
32
|
|
31
33
|
def enabled?
|
32
|
-
@api_url.is_a?(String)
|
34
|
+
@api_url.is_a?(String) and @api_key.is_a?(String) and @default_zone.is_a?(Zone)
|
33
35
|
end
|
34
36
|
|
35
37
|
def validate(machine)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-powerdns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sayid Munawar
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|