chef-deployment-monitor 1.1.3 → 1.2.1

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: 7bee53a7e75c0085be4061b598629ae0b8a8cbfb
4
- data.tar.gz: 36b89c247e0707ce0d662a2d54e90dccdd2a6475
3
+ metadata.gz: 3f31ffdf254faae23202f6f4ec3635e59e909afa
4
+ data.tar.gz: 04a3e643a46400d82b4d781aca382ef872a2b423
5
5
  SHA512:
6
- metadata.gz: bd22cf5c5e8a406e6675be0c6d2f93907c6ede42e244b3160a56ecb0b5471845d6c10c10555aecbf5c19864ffe8c535f3439e214c5932734d54437c78c78223b
7
- data.tar.gz: 548a782648c49501fbad976aff5c17b15687f853d144a9aa622d57d6515d6f7c7aa5f1cc1ed0fc479d47b276948e11d7745a0e3dd758ca81a4b9572c7dca999f
6
+ metadata.gz: fa8010bc885eecc8752326f0a962b540b34764b979930bf3fd891a492669114998a6f17de356a7dc506d13a423f68f59023d78082aba3e769a42db3eac72d156
7
+ data.tar.gz: e4662c1e430e15989847c63aa18212dd63126ddd287da59255150012ae413704466024e995c3d9747d22d8b60bda7bca91dd85bd6c7bb9338aeebca733d0f19e
data/.travis.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.0
3
+ - 2.3.0
4
4
  deploy:
5
5
  provider: rubygems
6
6
  api_key:
@@ -1,10 +1,9 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $LOAD_PATH.push File.expand_path('../lib', __FILE__)
3
- require 'chef_deployment_monitor/version'
4
3
 
5
4
  Gem::Specification.new do |s|
6
5
  s.name = 'chef-deployment-monitor'
7
- s.version = Chef::Deployment::Monitor::VERSION
6
+ s.version = '1.2.1'
8
7
  s.platform = Gem::Platform::RUBY
9
8
  s.has_rdoc = false
10
9
  s.extra_rdoc_files = ['LICENSE']
@@ -24,9 +24,11 @@ class Chef
24
24
  extend Mixlib::Config
25
25
  config_strict_mode true
26
26
 
27
- default :blacklisted?, Proc.new { |data| false } # rubocop:disable Lint/UnusedBlockArgument:
28
- default :marker_file, '/tmp/last_chef_deployment'
29
- default :history_file, '/tmp/lasts_chef_deployment'
27
+ default :blacklisted?, Proc.new { |data| false } # rubocop:disable Lint/UnusedBlockArgument, Lint/AmbiguousBlockAssociation
28
+ default :route, Proc.new { |data| "" } # rubocop:disable Lint/UnusedBlockArgument, Lint/AmbiguousBlockAssociation
29
+ default :output_file_directory, '/tmp/'
30
+ default :marker_file_template, '%slast-deployment.json'
31
+ default :history_file_template, '%slast-deployments.json'
30
32
  default :history_file_size, 1000
31
33
  %w(
32
34
  mon_file
@@ -22,9 +22,10 @@ class Chef
22
22
  class Deployment
23
23
  class Monitor
24
24
  class Logmon
25
+ def initialize
26
+ @sinks = { }
27
+ end
25
28
  def run
26
- sinks = [MarkerFileSink.new, HistoryFileSink.new]
27
-
28
29
  begin
29
30
  File.open(Monitor::Config[:mon_file]) do |mon|
30
31
  mon.extend(File::Tail)
@@ -38,7 +39,7 @@ class Chef
38
39
  unless filter(data)
39
40
  Monitor::Log.new(data.to_json, 'INFO')
40
41
  data = digest(data)
41
- sinks.each { |sink| sink.receive(data) }
42
+ sinks(data).each { |sink| sink.receive(data) }
42
43
  end
43
44
  end
44
45
  end
@@ -46,6 +47,17 @@ class Chef
46
47
  end
47
48
  end
48
49
 
50
+ def sinks(data)
51
+ route = Monitor::Config[:route].call(data)
52
+ unless @sinks.has_key? route
53
+ @sinks[route] = [MarkerFileSink.new(::File.join(Monitor::Config[:output_file_directory],
54
+ Monitor::Config[:marker_file_template] % route)),
55
+ HistoryFileSink.new(::File.join(Monitor::Config[:output_file_directory],
56
+ Monitor::Config[:history_file_template] % route))]
57
+ end
58
+ @sinks[route]
59
+ end
60
+
49
61
  def format(data)
50
62
  # convert to timestamp
51
63
  data_dup = data.dup
@@ -9,11 +9,17 @@ class Chef
9
9
  end
10
10
 
11
11
  class MarkerFileSink < Sink
12
+ attr_reader :file
13
+
14
+ def initialize(outfile)
15
+ @file = outfile
16
+ end
17
+
12
18
  # will modify the marker file
13
19
  # last write data of marker file will be within 5 seconds
14
20
  # of last deployement
15
21
  def receive(data)
16
- File.open(Monitor::Config[:marker_file], 'w+') do |f|
22
+ File.open(file, 'w+') do |f|
17
23
  f.write(data.to_json)
18
24
  end
19
25
  end
@@ -23,10 +29,10 @@ class Chef
23
29
 
24
30
  attr_reader :file
25
31
 
26
- def initialize
27
- @file = Monitor::Config[:history_file]
32
+ def initialize(outfile)
33
+ @file = outfile
28
34
  @history = if File.exist?(file)
29
- JSON.parse(File.read(file)) rescue []
35
+ JSON.parse(File.read(file)) rescue [] # rubocop:disable Lint/RescueWithoutErrorClass
30
36
  else
31
37
  []
32
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-deployment-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sander Botman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-02-06 00:00:00.000000000 Z
12
+ date: 2017-09-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: file-tail
@@ -116,7 +116,6 @@ files:
116
116
  - lib/chef_deployment_monitor/log.rb
117
117
  - lib/chef_deployment_monitor/logmon.rb
118
118
  - lib/chef_deployment_monitor/sinks.rb
119
- - lib/chef_deployment_monitor/version.rb
120
119
  - lib/chef_logmon.rb
121
120
  homepage: https://github.com/kamaradclimber/chef-deployment-monitor
122
121
  licenses:
@@ -138,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
137
  version: '0'
139
138
  requirements: []
140
139
  rubyforge_project:
141
- rubygems_version: 2.6.8
140
+ rubygems_version: 2.6.13
142
141
  signing_key:
143
142
  specification_version: 4
144
143
  summary: Chef Monitoring tool to monitor all changes made
@@ -1,25 +0,0 @@
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
- class Chef
19
- class Deployment
20
- class Monitor
21
- VERSION = '1.1.3'
22
- MAJOR, MINOR, TINY = VERSION.split('.')
23
- end
24
- end
25
- end