chef-monitor 0.1.0 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/chef-logmon +5 -1
- data/bin/chef-worker +33 -6
- data/lib/chef_logmon.rb +20 -0
- data/lib/chef_monitor/item.rb +61 -49
- data/lib/chef_monitor/itemlist.rb +60 -123
- data/lib/chef_monitor/log.rb +3 -1
- data/lib/chef_monitor/version.rb +1 -1
- data/lib/chef_monitor/worker.rb +20 -25
- data/lib/{chef_monitor.rb → chef_worker.rb} +0 -2
- metadata +4 -3
data/bin/chef-logmon
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
# See the License for the specific language governing permissions and
|
17
17
|
# limitations under the License.
|
18
18
|
|
19
|
-
require "
|
19
|
+
require "chef_logmon"
|
20
20
|
require 'rubygems'
|
21
21
|
require 'file-tail'
|
22
22
|
require 'bunny'
|
@@ -24,9 +24,12 @@ require 'json'
|
|
24
24
|
require 'daemons'
|
25
25
|
|
26
26
|
config=nil
|
27
|
+
debug=false
|
28
|
+
|
27
29
|
opt=0
|
28
30
|
ARGV.each do |arg|
|
29
31
|
config = ARGV[opt+1] if arg == "-C" || arg == "--config"
|
32
|
+
debug = true if arg == "--debug"
|
30
33
|
opt+=1
|
31
34
|
end
|
32
35
|
|
@@ -47,6 +50,7 @@ MQSERVER = Monitor::Config[:mq_server]
|
|
47
50
|
MQQUEUE = Monitor::Config[:mq_queue]
|
48
51
|
MON_FILE = Monitor::Config[:mon_file]
|
49
52
|
CHEF_URL = Monitor::Config[:chef_url]
|
53
|
+
DEBUG = debug
|
50
54
|
|
51
55
|
@options = {
|
52
56
|
:log_output => true,
|
data/bin/chef-worker
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
#!/opt/chef/embedded/bin/ruby
|
2
3
|
#
|
3
4
|
# Author:: Sander Botman (<sander.botman@gmail.com>)
|
4
5
|
# Copyright:: Copyright (c) 2014 Sander Botman.
|
@@ -15,17 +16,21 @@
|
|
15
16
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
17
|
# See the License for the specific language governing permissions and
|
17
18
|
# limitations under the License.
|
18
|
-
|
19
|
-
require "
|
19
|
+
# $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
20
|
+
require "chef_worker"
|
20
21
|
require 'rubygems'
|
21
22
|
require 'bunny'
|
22
23
|
require 'json'
|
23
24
|
require 'daemons'
|
24
25
|
|
25
26
|
config=nil
|
27
|
+
populate=nil
|
28
|
+
debug=false
|
26
29
|
opt=0
|
27
30
|
ARGV.each do |arg|
|
28
31
|
config = ARGV[opt+1] if arg == "-C" || arg == "--config"
|
32
|
+
populate = ARGV[opt+1] if arg == "-O"
|
33
|
+
debug = true if arg == "--debug"
|
29
34
|
opt+=1
|
30
35
|
end
|
31
36
|
|
@@ -42,10 +47,12 @@ else
|
|
42
47
|
end
|
43
48
|
end
|
44
49
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
50
|
+
ALLOWED_OBJECTS = ['users', 'cookbooks','roles','environments','clients','nodes','groups','data']
|
51
|
+
DOWNLOAD_PATH = Monitor::Config[:download_path]
|
52
|
+
MQSERVER = Monitor::Config[:mq_server]
|
53
|
+
MQQUEUE = Monitor::Config[:mq_queue]
|
54
|
+
CHEF_URL = Monitor::Config[:chef_url]
|
55
|
+
DEBUG = debug
|
49
56
|
Chef::Config[:node_name] = Monitor::Config[:node_name]
|
50
57
|
Chef::Config[:client_key] = Monitor::Config[:client_key]
|
51
58
|
|
@@ -56,6 +63,26 @@ Chef::Config[:client_key] = Monitor::Config[:client_key]
|
|
56
63
|
:log_dir => Monitor::Config[:log_dir]
|
57
64
|
}
|
58
65
|
|
66
|
+
unless populate.nil?
|
67
|
+
Chef::Config[:chef_server_url] = CHEF_URL + "/organizations/#{populate}"
|
68
|
+
ALLOWED_OBJECTS.each do |object|
|
69
|
+
data = {}
|
70
|
+
data['object'] = object
|
71
|
+
data['action'] = 'POST'
|
72
|
+
data['org'] = populate
|
73
|
+
data['time'] = Time.now
|
74
|
+
data['user'] = 'chef-worker'
|
75
|
+
data['server'] = ENV['HOSTNAME']
|
76
|
+
pop = Monitor::Item.new(data)
|
77
|
+
obj = Monitor::ItemList.new(data)
|
78
|
+
obj.each do |item|
|
79
|
+
item.download(DOWNLOAD_PATH)
|
80
|
+
end
|
81
|
+
pop.commit_nohook(DOWNLOAD_PATH)
|
82
|
+
end
|
83
|
+
exit 0
|
84
|
+
end
|
85
|
+
|
59
86
|
Daemons.run_proc('chef-worker', @options) do
|
60
87
|
worker = Monitor::Worker.new
|
61
88
|
worker.run()
|
data/lib/chef_logmon.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Sander Botman (<sander.botman@gmail.com>)
|
3
|
+
# Copyright:: Copyright (c) 2014 Sander Botman.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
require "chef_monitor/log"
|
19
|
+
require "chef_monitor/config"
|
20
|
+
require "chef_monitor/logmon"
|
data/lib/chef_monitor/item.rb
CHANGED
@@ -43,13 +43,12 @@ class Monitor
|
|
43
43
|
attr_reader :organization
|
44
44
|
|
45
45
|
def download(path)
|
46
|
-
|
47
|
-
|
48
|
-
r = download_object(path)
|
49
|
-
when 'cookbooks'
|
46
|
+
|
47
|
+
if @object == "cookbooks"
|
50
48
|
r = download_cookbook(path)
|
49
|
+
else
|
50
|
+
r = download_object(path)
|
51
51
|
end
|
52
|
-
|
53
52
|
|
54
53
|
(@version.nil? || @version.empty?) ? object = [@organization, @object, @name].join('/') : object = [@organization, @object, @name, @version].join('/')
|
55
54
|
|
@@ -71,8 +70,8 @@ class Monitor
|
|
71
70
|
items << @organization
|
72
71
|
items << @object
|
73
72
|
if @name
|
74
|
-
filename=@name + ".json"
|
75
|
-
|
73
|
+
filename=@name + ".json"
|
74
|
+
|
76
75
|
if @object == "cookbooks"
|
77
76
|
(@version.nil? || @version.empty?) ? filename=@name : filename=@name + "-" + @version
|
78
77
|
end
|
@@ -83,37 +82,62 @@ class Monitor
|
|
83
82
|
|
84
83
|
items << filename
|
85
84
|
end
|
86
|
-
|
87
85
|
file = items.join("/")
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
86
|
+
delete_file(file)
|
87
|
+
end
|
88
|
+
|
89
|
+
def delete_file(file)
|
90
|
+
FileUtils.rm_rf(file)
|
91
|
+
Monitor::Log.new("Deleted : " + file, 'INFO')
|
92
|
+
true
|
93
|
+
end
|
94
|
+
|
95
|
+
def get_item_json(object)
|
96
|
+
begin
|
97
|
+
item = rest.get_rest(object)
|
98
|
+
result = JSON.pretty_generate(item)
|
99
|
+
rescue
|
100
|
+
return nil
|
93
101
|
end
|
94
|
-
return
|
102
|
+
return result
|
95
103
|
end
|
96
104
|
|
97
105
|
def commit(path)
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
106
|
+
current_dir = Dir.pwd
|
107
|
+
commit_dir = File.join(path, @organization, @object)
|
108
|
+
Dir.chdir(commit_dir)
|
109
|
+
@version ? object = [@organization, @object, @name, @version].join('/') : object = [@organization, @object, @name].join('/')
|
110
|
+
text = "User : " + @user + "\nObject : " + object + "\nAction : " + @action + "\nLog Time : " + @time
|
111
|
+
domain = %x(git config hooks.emaildomain) || "acme.com"
|
112
|
+
domain = "@" + domain unless domain[0,1] == "@"
|
113
|
+
username = @user
|
114
|
+
useremail = @user + domain
|
115
|
+
%x(git config hooks.username #{username} )
|
116
|
+
%x(git config hooks.useremail #{useremail} )
|
117
|
+
%x(git add .)
|
118
|
+
%x(git commit -am \"#{text}\")
|
119
|
+
Dir.chdir(current_dir)
|
120
|
+
end
|
121
|
+
|
122
|
+
def commit_nohook(path)
|
123
|
+
current_dir = Dir.pwd
|
124
|
+
commit_dir = File.join(path, @organization, @object)
|
125
|
+
Dir.chdir(commit_dir)
|
126
|
+
%x(git config hooks.exclude true)
|
127
|
+
%x(git add .)
|
128
|
+
%x(git commit -am \"no hook executed on this commit\")
|
129
|
+
Dir.chdir(current_dir)
|
113
130
|
end
|
114
|
-
|
131
|
+
|
115
132
|
private
|
116
|
-
|
133
|
+
|
134
|
+
def rest
|
135
|
+
@rest ||= begin
|
136
|
+
require 'chef/rest'
|
137
|
+
Chef::REST.new(Chef::Config[:chef_server_url])
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
117
141
|
def download_cookbook(path)
|
118
142
|
begin
|
119
143
|
args = ['cookbook', 'download', @name ]
|
@@ -133,26 +157,14 @@ class Monitor
|
|
133
157
|
end
|
134
158
|
|
135
159
|
def download_object(path)
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
data = JSON.pretty_generate(Chef::Node.load(@name))
|
143
|
-
when 'environments'
|
144
|
-
data = JSON.pretty_generate(Chef::Environment.load(@name))
|
145
|
-
when 'clients'
|
146
|
-
data = JSON.pretty_generate(Chef::ApiClient.load(@name))
|
147
|
-
when 'data'
|
148
|
-
data = JSON.pretty_generate(Chef::DataBagItem.load(@name, @version))
|
149
|
-
file = File.join(path, @organization, @object, @name, @version + '.json' )
|
150
|
-
end
|
160
|
+
args = [ @object, @name ]
|
161
|
+
args.push(@version) if @version
|
162
|
+
item = args.join('/')
|
163
|
+
file = File.join(path, @organization, item + '.json' )
|
164
|
+
data = get_item_json(item)
|
165
|
+
unless data.nil?
|
151
166
|
FileUtils.mkdir_p(File.dirname(file)) unless File.directory?(File.dirname(file))
|
152
167
|
File.open(file, 'w') {|f| f.write(data)}
|
153
|
-
self.path = File.dirname(file)
|
154
|
-
rescue Exception => e
|
155
|
-
return e
|
156
168
|
end
|
157
169
|
return true
|
158
170
|
end
|
@@ -16,7 +16,6 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
18
|
require 'chef/client'
|
19
|
-
require 'chef_monitor/log'
|
20
19
|
require 'chef_monitor/item'
|
21
20
|
|
22
21
|
class Monitor
|
@@ -24,152 +23,90 @@ class Monitor
|
|
24
23
|
|
25
24
|
def initialize(data)
|
26
25
|
@name = data['name']
|
27
|
-
@time = data['time']
|
28
|
-
@user = data['user']
|
29
|
-
@object = data['object']
|
30
|
-
@server = data['server']
|
31
|
-
@action = data['action']
|
26
|
+
@time = data['time']
|
27
|
+
@user = data['user']
|
28
|
+
@object = data['object']
|
29
|
+
@server = data['server']
|
30
|
+
@action = data['action']
|
32
31
|
@version = data['version'] unless data['version'].nil? || data['version'].empty?
|
33
|
-
@organization = data['org']
|
32
|
+
@organization = data['org']
|
33
|
+
check_sub_items()
|
34
34
|
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
list = []
|
50
|
-
items = []
|
51
|
-
if object.nil? || object.empty?
|
52
|
-
objects = [ "roles", "nodes", "environments", "clients", "cookbooks", "data" ]
|
36
|
+
private
|
37
|
+
|
38
|
+
def check_sub_items()
|
39
|
+
if @object == "cookbooks" || @object == "data"
|
40
|
+
if @name.nil? || @name.empty?
|
41
|
+
add_sub_items(@object)
|
42
|
+
elsif @version.nil? || @version.empty?
|
43
|
+
add_sub_items(@object, @name)
|
44
|
+
else
|
45
|
+
add_item(@object, @name, @version)
|
46
|
+
end
|
47
|
+
elsif @name.nil? || @name.empty?
|
48
|
+
add_sub_items(@object)
|
53
49
|
else
|
54
|
-
|
50
|
+
add_item(@object, @name)
|
55
51
|
end
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
52
|
+
end
|
53
|
+
|
54
|
+
def add_sub_items(object, name=nil)
|
55
|
+
items = get_sub_items(object, name)
|
56
|
+
items.each do |item|
|
57
|
+
res = item.split('/')
|
58
|
+
add_item(res[0], res[1], res[2])
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def get_sub_items(object, name=nil)
|
63
|
+
col = []
|
64
|
+
target = [ object, name ].join('/')
|
65
|
+
items = get_rest_item(target)
|
66
|
+
items.each do |item,value|
|
67
|
+
if object == "data" || object == "cookbooks"
|
68
|
+
if name.nil?
|
69
|
+
col += get_sub_items(object, item)
|
62
70
|
else
|
63
|
-
|
71
|
+
col.push([object, name, item].join('/')) if object == "data"
|
72
|
+
value['versions'].each {|ver| col << sub_item_parse(ver['url'])} if object == "cookbooks"
|
64
73
|
end
|
74
|
+
elsif object == "users"
|
75
|
+
item.each { |k| k.each {|sv| col << "users/" + sv['username'] unless sv['username'].nil? }} unless name
|
65
76
|
else
|
66
|
-
|
67
|
-
list += get_item(object)
|
68
|
-
else
|
69
|
-
return [ create_item(object, name) ]
|
70
|
-
end
|
77
|
+
col << sub_item_parse(value) unless name
|
71
78
|
end
|
72
79
|
end
|
80
|
+
return col
|
81
|
+
end
|
73
82
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
end
|
78
|
-
return items
|
83
|
+
def sub_item_parse(str)
|
84
|
+
str.gsub!(Chef::Config[:chef_server_url],"")
|
85
|
+
str[1..-1] if str[0] == '/'
|
79
86
|
end
|
80
|
-
|
81
|
-
def
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
names << url[6]
|
87
|
+
|
88
|
+
def get_rest_item(target)
|
89
|
+
begin
|
90
|
+
result = rest.get_rest(target)
|
91
|
+
rescue
|
92
|
+
return []
|
87
93
|
end
|
88
|
-
return
|
89
|
-
|
94
|
+
return result
|
95
|
+
end
|
90
96
|
|
91
|
-
def
|
97
|
+
def add_item(object, name, version=nil)
|
92
98
|
data = {}
|
93
99
|
data['time'] = @time
|
94
100
|
data['user'] = @user
|
95
101
|
data['action'] = @action
|
96
102
|
data['server'] = @server
|
97
103
|
data['org'] = @organization
|
98
|
-
data['name'] = name
|
99
104
|
data['object'] = object
|
105
|
+
data['name'] = name
|
100
106
|
data['version'] = version unless version.nil?
|
101
|
-
Monitor::Item.new(data)
|
107
|
+
self << Monitor::Item.new(data)
|
102
108
|
end
|
103
109
|
|
104
|
-
def parse_data(object, data)
|
105
|
-
data = JSON[data].to_hash unless data.class == Hash
|
106
|
-
items = []
|
107
|
-
data.each do |key,val|
|
108
|
-
item = {}
|
109
|
-
item['object'] = object
|
110
|
-
item['url'] = val
|
111
|
-
items << item
|
112
|
-
end
|
113
|
-
items
|
114
|
-
end
|
115
|
-
|
116
|
-
def get_item(object=nil, name=nil)
|
117
|
-
objects = []
|
118
|
-
begin
|
119
|
-
case object
|
120
|
-
when 'roles'
|
121
|
-
json = JSON[Chef::Role.list]
|
122
|
-
objects = parse_data("role", json)
|
123
|
-
when 'nodes'
|
124
|
-
json = JSON[Chef::Node.list]
|
125
|
-
objects = parse_data("node", json)
|
126
|
-
when 'environments'
|
127
|
-
json = JSON[Chef::Environment.list]
|
128
|
-
objects = parse_data("environment", json)
|
129
|
-
when 'clients'
|
130
|
-
json = JSON[Chef::ApiClient.list]
|
131
|
-
objects = parse_data("client", json)
|
132
|
-
when 'data'
|
133
|
-
if name
|
134
|
-
json = JSON[Chef::DataBag.load(name)]
|
135
|
-
items = JSON[json].to_hash
|
136
|
-
items.each do |key,val|
|
137
|
-
item = {}
|
138
|
-
item['object'] = 'data_bag'
|
139
|
-
item['url'] = val
|
140
|
-
objects << item
|
141
|
-
end
|
142
|
-
else
|
143
|
-
json = JSON[Chef::DataBag.list]
|
144
|
-
items = JSON[json].to_hash
|
145
|
-
items.each do |key,val|
|
146
|
-
objects += get_item(object, key)
|
147
|
-
end
|
148
|
-
end
|
149
|
-
when 'cookbooks'
|
150
|
-
json = JSON[rest.get_rest("/cookbooks?num_versions=all")]
|
151
|
-
items = JSON[json].to_hash
|
152
|
-
items.each do |key,val|
|
153
|
-
val['versions'].each do |version|
|
154
|
-
item = {}
|
155
|
-
item['object'] = 'cookbook'
|
156
|
-
item['url'] = version['url']
|
157
|
-
objects << item
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
rescue Exception => e
|
162
|
-
@version ? object = [@organization, @object, @name, @version].join('/') : object = [@organization, @object, @name].join('/')
|
163
|
-
if e.respond_to?("message")
|
164
|
-
Monitor::Log.new(e.message + ' with object: ' + object , 'ERROR')
|
165
|
-
else
|
166
|
-
Monitor::Log.new('Error while downloading object: ' + object , 'ERROR')
|
167
|
-
end
|
168
|
-
return []
|
169
|
-
end
|
170
|
-
return objects
|
171
|
-
end
|
172
|
-
|
173
110
|
def rest
|
174
111
|
@rest ||= begin
|
175
112
|
require 'chef/rest'
|
data/lib/chef_monitor/log.rb
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
|
18
18
|
class Monitor
|
19
19
|
class Log
|
20
|
-
|
20
|
+
|
21
21
|
def initialize(text, type='INFO')
|
22
22
|
case type.downcase
|
23
23
|
when "INFO".downcase
|
@@ -26,6 +26,8 @@ class Monitor
|
|
26
26
|
puts "[" + Time.now.iso8601 + "] WARN: " + text
|
27
27
|
when "ERROR".downcase
|
28
28
|
puts "[" + Time.now.iso8601 + "] ERROR: " + text
|
29
|
+
when "DEBUG".downcase
|
30
|
+
puts "[" + Time.now.iso8601 + "] DEBUG: " + text if DEBUG
|
29
31
|
else
|
30
32
|
puts "[" + Time.now.iso8601 + "] UNKNOWN: " + text
|
31
33
|
end
|
data/lib/chef_monitor/version.rb
CHANGED
data/lib/chef_monitor/worker.rb
CHANGED
@@ -15,9 +15,9 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
+
|
18
19
|
class Monitor
|
19
20
|
class Worker
|
20
|
-
|
21
21
|
def run
|
22
22
|
conn = Bunny.new(:hostname => MQSERVER)
|
23
23
|
conn.start
|
@@ -30,37 +30,32 @@ class Monitor
|
|
30
30
|
q.subscribe(:ack => true, :block => true) do |delivery_info, properties, body|
|
31
31
|
if properties[:content_type] =~ /.*json/
|
32
32
|
data = JSON.parse(body).to_hash
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
elsif data['name'].nil? || data['name'].empty?
|
37
|
-
log_obj = [ data['org'], data['object'] ].join('/')
|
38
|
-
elsif data['version'].nil? || data['version'].empty?
|
39
|
-
log_obj = [ data['org'], data['object'], data['name'] ].join('/')
|
40
|
-
else
|
41
|
-
log_obj = [ data['org'], data['object'], data['name'], data['version'] ].join('/')
|
42
|
-
end
|
43
|
-
Monitor::Log.new("Receiving : #{log_obj} action: #{data['action']}", "INFO")
|
44
|
-
|
33
|
+
Monitor::Log.new("Receiving : #{data}", "DEBUG")
|
34
|
+
data['object'] = nil unless ALLOWED_OBJECTS.include?(data['object'])
|
35
|
+
|
45
36
|
unless data['object'].nil? || !File.directory?((File.join(DOWNLOAD_PATH, data['org'])))
|
46
37
|
Chef::Config[:chef_server_url] = CHEF_URL + "/organizations/#{data['org']}"
|
47
38
|
|
48
|
-
Monitor::Item.new(data)
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
if
|
56
|
-
item.
|
57
|
-
|
58
|
-
|
39
|
+
obj = Monitor::Item.new(data)
|
40
|
+
if data['action'] == "DELETE"
|
41
|
+
obj.delete(DOWNLOAD_PATH)
|
42
|
+
else
|
43
|
+
items = Monitor::ItemList.new(data)
|
44
|
+
|
45
|
+
items.each do |item|
|
46
|
+
if data['action'] == "PUT"
|
47
|
+
item.download(DOWNLOAD_PATH)
|
48
|
+
end
|
49
|
+
|
50
|
+
if data['action'] == "POST"
|
51
|
+
item.delete(DOWNLOAD_PATH)
|
52
|
+
item.download(DOWNLOAD_PATH)
|
59
53
|
end
|
60
54
|
end
|
61
55
|
end
|
56
|
+
obj.commit(DOWNLOAD_PATH)
|
62
57
|
else
|
63
|
-
Monitor::Log.new("Ignoring : #{
|
58
|
+
Monitor::Log.new("Ignoring : #{data}", "DEBUG")
|
64
59
|
end
|
65
60
|
else
|
66
61
|
Monitor::Log.new("Unknown : #{body}", "ERROR")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-monitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bunny
|
@@ -92,7 +92,7 @@ files:
|
|
92
92
|
- bin/chef-logmon
|
93
93
|
- bin/chef-worker
|
94
94
|
- chef-monitor.gemspec
|
95
|
-
- lib/
|
95
|
+
- lib/chef_logmon.rb
|
96
96
|
- lib/chef_monitor/config.rb
|
97
97
|
- lib/chef_monitor/item.rb
|
98
98
|
- lib/chef_monitor/itemlist.rb
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/chef_monitor/logmon.rb
|
101
101
|
- lib/chef_monitor/version.rb
|
102
102
|
- lib/chef_monitor/worker.rb
|
103
|
+
- lib/chef_worker.rb
|
103
104
|
homepage: https://github.com/schubergphilis/chef-monitor
|
104
105
|
licenses:
|
105
106
|
- Apache 2.0
|