vagrant-dnsdock-hostupdater 0.0.10 → 0.0.11

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: 9c1d494bc348ad4bf14e33a49b68878e9089ad25
4
- data.tar.gz: f58089650e77004454d1c56d7beec701dc534b96
3
+ metadata.gz: bb921b210516dc5a4f384182c9ace1930aeb1d3e
4
+ data.tar.gz: aed719a5a8fa5ff68e5fba877b0cb72679ec3d57
5
5
  SHA512:
6
- metadata.gz: 716cdb7352cd498a5636712a6e488e713ee80ef8ba6dacad2a7e23b0c86a8641f1b5da568d73b48260511a80f63821e496a0018e46b59c64f4323b0be8ffc087
7
- data.tar.gz: 150e266e511a23b431fced083a0c22d5fcd1659fba4f780146aadfd7aa57abe8ba04110b2f53ae0509322d88325f9599a0a010b1ed34889eee1feb50a190ebfa
6
+ metadata.gz: ac6932c0a74e13fb6f8fa4ae0ff8a3b6e85d9e48de065bf6903979ff47176c4702d75fed3434954c423131322139a3bbcca1952a7d1508a67c67356f1642e24e
7
+ data.tar.gz: 5a5b3d0468c520e6c9a90d3bad1d8b82944d5889202fc7363399a7df927a39d4c0ab82d8f53dc979d57195e019c87485ffe775854eec66ba2bbe0745b55d3f11
data/lib/event-watcher.rb CHANGED
@@ -6,23 +6,38 @@ loop {
6
6
  Docker::Event.stream { |event|
7
7
  HostManager.log.info 'Connected to docker socket. Listening for events.'
8
8
  # respond to all container events
9
- if event.type == 'container'
10
- container_id = event.actor.id.chomp
11
9
 
12
- container = Docker::Container.get(container_id)
13
- ip = container.info['NetworkSettings']['IPAddress']
14
- container_name = container.info['Name'].sub!(/^\//, '')
10
+ begin
11
+ if event.type == 'container'
12
+ # container_id = event.actor.id.chomp
15
13
 
16
- client = HostManager::Client.create('10.10.10.1', 2991)
17
- client.host_suffix '.local.signal.sh'
14
+ # puts event.action
18
15
 
19
- if event.action == 'start'
20
- client.send_action('create', container_name, ip, container_id)
21
- elsif event.action == 'die'
22
- client.send_action('delete', container_name, ip, container_id)
23
- end
16
+ # container = Docker::Container.get(container_id)
17
+ # ip = container.info['NetworkSettings']['IPAddress']
18
+ # HostManager.log.info container.
19
+ # puts event.type
20
+
21
+ # container_name = container.info['Name'].sub!(/^\//, '')
22
+
23
+ client = HostManager::Client.create('10.10.10.1', 2991)
24
+ client.host_suffix '.local.signal.sh'
24
25
 
25
- client.close
26
+ # To handle updating single entries
27
+ # if event.action == 'start'
28
+ # client.send_action('create', container_name, ip, container_id)
29
+ # elsif event.action == 'die'
30
+ # client.send_action('delete', container_name, ip, container_id)
31
+ # end
32
+
33
+ # if event.action == 'start' || event.action == 'die'
34
+ client.sync_hosts Docker::Container.all({:all => true})
35
+ # end
36
+
37
+ client.close
38
+ end
39
+ rescue => e
40
+ puts e.inspect
26
41
  end
27
42
 
28
43
  break
data/lib/host-manager.rb CHANGED
@@ -28,7 +28,7 @@ module HostManager
28
28
  def self.log
29
29
  unless @log
30
30
  @log = Log4r::Logger.new('main')
31
- # @log.outputters << Log4r::Outputter.stdout
31
+ @log.outputters << Log4r::Outputter.stdout
32
32
  @log.outputters << Log4r::FileOutputter.new('logmain', :filename => 'host-manager.log')
33
33
  end
34
34
 
@@ -53,7 +53,7 @@ module HostManager
53
53
  if container_name.include?('.')
54
54
  container_name
55
55
  else
56
- container_name + host_suffix
56
+ container_name.sub!(/^\//, '') + host_suffix
57
57
  end
58
58
  end
59
59
 
@@ -81,14 +81,36 @@ module HostManager
81
81
  begin
82
82
  unless content.to_s.chomp.strip.empty?
83
83
  data = JSON.parse(content)
84
- required_keys = %w(action hostname ip containerId)
85
- required_keys.each do |key|
86
- unless data.key?(key)
87
- raise "Data for key #{key} not provided."
84
+
85
+ if data.is_a?(Hash)
86
+ required_keys = %w(action hostname ip containerId)
87
+ required_keys.each do |key|
88
+ unless data.key?(key)
89
+ raise "Data for key #{key} not provided."
90
+ end
91
+ end
92
+ execute(data['action'], data['hostname'], data['ip'], data['containerId'])
93
+
94
+ elsif data.is_a?(Array)
95
+ hosts = get_hosts
96
+
97
+ # initially remove all entries
98
+ hosts.elements.delete_if do |element|
99
+ if valid_entry?(element)
100
+ log.info 'Removing entry for ' + element.name
101
+ true
102
+ end
103
+ end
104
+
105
+ # add recieved entries
106
+ data.each do |entry|
107
+ execute('create', entry['hostname'], entry['ip'], entry['containerId'])
88
108
  end
109
+
89
110
  end
90
- execute(data['action'], data['hostname'], data['ip'], data['containerId'])
111
+
91
112
  end
113
+
92
114
  rescue => e
93
115
  log.error("Caught exception attempting to execute with data #{content}. #{e}")
94
116
  end
@@ -105,6 +127,9 @@ module HostManager
105
127
  def execute(action, hostname, ip, container_id = nil)
106
128
  hosts = get_hosts
107
129
 
130
+
131
+ # todo: remove all entries and then re-add (sync hosts every time)
132
+
108
133
  if action == 'create'
109
134
  hosts.elements.each do |element|
110
135
  if valid_entry?(element)
@@ -180,6 +205,26 @@ module HostManager
180
205
  send(data)
181
206
  end
182
207
 
208
+ def sync_hosts(container_data)
209
+ data = []
210
+ container_data.each do |container|
211
+ container.info['Names'].each do |name|
212
+ ip = container.info['NetworkSettings']['IPAddress']
213
+
214
+ if ip
215
+ item = {
216
+ :hostname => host_name(name),
217
+ :ip => ip,
218
+ :containerId => container.info['id']
219
+ }
220
+
221
+ data.push(item)
222
+ end
223
+ end
224
+
225
+ end
226
+ end
227
+
183
228
  def send(data)
184
229
  log.info("Sending data via client: #{data.to_json}")
185
230
  @socket.write data.to_json + "\n"
@@ -61,7 +61,7 @@ module Vagrant
61
61
  end
62
62
  end
63
63
 
64
- def self.init_plugin(config)
64
+ def self.init_plugin
65
65
  server_path = File.expand_path('../../server.rb', __FILE__)
66
66
 
67
67
  if @started
@@ -84,7 +84,7 @@ module Vagrant
84
84
  end
85
85
  end
86
86
 
87
- action_hook(:up, :machine_action_up) { init_plugin(@config) }
87
+ action_hook(:up, :machine_action_up) { init_plugin }
88
88
 
89
89
  end
90
90
  end
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module DnsdockHostUpdater
3
- VERSION = '0.0.10'.freeze
3
+ VERSION = '0.0.11'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-dnsdock-hostupdater
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Coit