vagrant-dnsdock-hostupdater 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
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