meteorlog 0.0.5 → 0.1.0

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: dfd8a0522aeef3bc4ce2618c6dac055860057a74
4
- data.tar.gz: a8222fcc0506fec02b883bb620f2615ea5ce14ab
3
+ metadata.gz: 14078db7b428f519f929a6539e004e8245c84e96
4
+ data.tar.gz: 61abc3d1efcb3df9a1979a0c4c8861db4ce9c36f
5
5
  SHA512:
6
- metadata.gz: 6524482cd3a2a8ee960989850c941223847e143364d44d82576c64bde0148fe88ead629bb5e8bc3fd93751008062f4e8abfbff69d3cfe1f8b03fbd330d74cba2
7
- data.tar.gz: ace680bc4626ca97d727c85c009634fd4f83f4ba2d1d6ca2993c2fb56dcca0cd7b0edcb9eb8b9c656799367a3792158bbbc0133d2cf7212cccd187542987a78c
6
+ metadata.gz: 1923845c8531277cd45ce6df7437879147c60ea0bf24596d5dedd89a0a072043f998d1675225d5e6d07c2608b6834c4ef5f6733ac43b26444191702297e62609
7
+ data.tar.gz: 05d7ee11c1baf977b426db7e8df488415ba8ac96b64b89fb941d5a5cf1460cb8df33798719cb43d4e605314c7245cd19e25bd3fa3cb795f1d86875247108f8fb
data/README.md CHANGED
@@ -85,3 +85,6 @@ log_group "/var/log/maillog" do
85
85
  end
86
86
  end
87
87
  ```
88
+
89
+ ## Similar tools
90
+ * [Codenize.tools](http://http://codenize.tools/)
@@ -34,6 +34,8 @@ ARGV.options do |opt|
34
34
  opt.on('', '--skip-delete-group') { options[:skip_delete_group] = true }
35
35
  opt.on('-e', '--export') { mode = :export }
36
36
  opt.on('-o', '--output FILE') {|v| output_file = v }
37
+ opt.on('', '--include REGEXP') {|v| options[:include] = Regexp.new(v) }
38
+ opt.on('', '--exclude REGEXP') {|v| options[:exclude] = Regexp.new(v) }
37
39
  opt.on('' , '--no-color') { options[:color] = false }
38
40
  opt.on('' , '--debug') { options[:debug] = true }
39
41
  opt.parse!
@@ -10,6 +10,7 @@ require 'aws-sdk-core'
10
10
  require 'term/ansicolor'
11
11
 
12
12
  require 'meteorlog/logger'
13
+ require 'meteorlog/template_helper'
13
14
  require 'meteorlog/utils'
14
15
  require 'meteorlog/client'
15
16
  require 'meteorlog/dsl'
@@ -25,6 +25,7 @@ class Meteorlog::Client
25
25
  aws_log_groups = collect_to_hash(aws.log_groups, :log_group_name)
26
26
 
27
27
  dsl_log_groups.each do |log_group_name, dsl_log_group|
28
+ next unless Meteorlog::Utils.matched?(log_group_name, @options[:include], @options[:exclude])
28
29
  aws_log_group = aws_log_groups[log_group_name]
29
30
 
30
31
  unless aws_log_group
@@ -34,12 +35,14 @@ class Meteorlog::Client
34
35
  end
35
36
 
36
37
  dsl_log_groups.each do |log_group_name, dsl_log_group|
38
+ next unless Meteorlog::Utils.matched?(log_group_name, @options[:include], @options[:exclude])
37
39
  aws_log_group = aws_log_groups.delete(log_group_name)
38
40
  walk_log_group(dsl_log_group, aws_log_group)
39
41
  end
40
42
 
41
43
  unless @options[:skip_delete_group]
42
44
  aws_log_groups.each do |log_group_name, aws_log_group|
45
+ next unless Meteorlog::Utils.matched?(log_group_name, @options[:include], @options[:exclude])
43
46
  aws_log_group.delete
44
47
  end
45
48
  end
@@ -1,5 +1,6 @@
1
1
  class Meteorlog::DSL::Context
2
2
  include Meteorlog::DSL::Validator
3
+ include Meteorlog::TemplateHelper
3
4
 
4
5
  class << self
5
6
  def eval(dsl, path, opts = {})
@@ -21,8 +22,12 @@ class Meteorlog::DSL::Context
21
22
 
22
23
  private
23
24
 
25
+ def template(name, &block)
26
+ @context.templates[name.to_s] = block
27
+ end
28
+
24
29
  def require(file)
25
- logsfile = File.expand_path(File.join(File.dirname(@path), file))
30
+ logsfile = (file =~ %r|\A/|) ? file : File.expand_path(File.join(File.dirname(@path), file))
26
31
 
27
32
  if File.exist?(logsfile)
28
33
  instance_eval(File.read(logsfile), logsfile)
@@ -1,5 +1,6 @@
1
1
  class Meteorlog::DSL::Context::LogGroup
2
2
  include Meteorlog::DSL::Validator
3
+ include Meteorlog::TemplateHelper
3
4
 
4
5
  attr_reader :result
5
6
 
@@ -1,5 +1,6 @@
1
1
  class Meteorlog::DSL::Context::MetricFilter
2
2
  include Meteorlog::DSL::Validator
3
+ include Meteorlog::TemplateHelper
3
4
 
4
5
  attr_reader :result
5
6
 
@@ -26,6 +26,9 @@ class Meteorlog::Exporter
26
26
 
27
27
  def export_log_graoup(log_group, result)
28
28
  log_group_name = log_group.log_group_name
29
+
30
+ return unless Meteorlog::Utils.matched?(log_group_name, @options[:include], @options[:exclude])
31
+
29
32
  log_streams = @cloud_watch_logs.describe_log_streams(
30
33
  :log_group_name => log_group_name).log_streams
31
34
  metric_filters = @cloud_watch_logs.describe_metric_filters(
@@ -0,0 +1,18 @@
1
+ module Meteorlog::TemplateHelper
2
+ def include_template(template_name, context = {})
3
+ tmplt = @context.templates[template_name.to_s]
4
+
5
+ unless tmplt
6
+ raise "Template `#{template_name}` is not defined"
7
+ end
8
+
9
+ context_orig = @context
10
+ @context = @context.merge(context)
11
+ instance_eval(&tmplt)
12
+ @context = context_orig
13
+ end
14
+
15
+ def context
16
+ @context
17
+ end
18
+ end
@@ -1,4 +1,19 @@
1
1
  module Meteorlog::Utils
2
+ def matched?(name, include_r, exclude_r)
3
+ result = true
4
+
5
+ if exclude_r
6
+ result &&= name !~ exclude_r
7
+ end
8
+
9
+ if include_r
10
+ result &&= name =~ include_r
11
+ end
12
+
13
+ result
14
+ end
15
+ module_function :matched?
16
+
2
17
  def collect_to_hash(collection, *key_attrs)
3
18
  opts = key_attrs.last.kind_of?(Hash) ? key_attrs.pop : {}
4
19
  hash = {}
@@ -1,3 +1,3 @@
1
1
  module Meteorlog
2
- VERSION = '0.0.5'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ['sgwr_dts@yahoo.co.jp']
11
11
  spec.description = "Meteorlog is a tool to manage CloudWatch Logs. It defines the state of CloudWatch Logs using DSL, and updates CloudWatch Logs according to DSL."
12
12
  spec.summary = "Meteorlog is a tool to manage CloudWatch Logs."
13
- spec.homepage = 'https://github.com/winebarrel/meteorlog'
13
+ spec.homepage = 'http://meteorlog.codenize.tools/'
14
14
  spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meteorlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-14 00:00:00.000000000 Z
11
+ date: 2016-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: term-ansicolor
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.5'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.5'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: 3.0.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: 3.0.0
97
97
  description: Meteorlog is a tool to manage CloudWatch Logs. It defines the state of
@@ -103,8 +103,8 @@ executables:
103
103
  extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
- - .gitignore
107
- - .rspec
106
+ - ".gitignore"
107
+ - ".rspec"
108
108
  - Gemfile
109
109
  - LICENSE.txt
110
110
  - README.md
@@ -121,6 +121,7 @@ files:
121
121
  - lib/meteorlog/exporter.rb
122
122
  - lib/meteorlog/ext/string_ext.rb
123
123
  - lib/meteorlog/logger.rb
124
+ - lib/meteorlog/template_helper.rb
124
125
  - lib/meteorlog/utils.rb
125
126
  - lib/meteorlog/version.rb
126
127
  - lib/meteorlog/wrapper.rb
@@ -134,7 +135,7 @@ files:
134
135
  - meteorlog.gemspec
135
136
  - spec/meteorlog_spec.rb
136
137
  - spec/spec_helper.rb
137
- homepage: https://github.com/winebarrel/meteorlog
138
+ homepage: http://meteorlog.codenize.tools/
138
139
  licenses:
139
140
  - MIT
140
141
  metadata: {}
@@ -144,17 +145,17 @@ require_paths:
144
145
  - lib
145
146
  required_ruby_version: !ruby/object:Gem::Requirement
146
147
  requirements:
147
- - - '>='
148
+ - - ">="
148
149
  - !ruby/object:Gem::Version
149
150
  version: '0'
150
151
  required_rubygems_version: !ruby/object:Gem::Requirement
151
152
  requirements:
152
- - - '>='
153
+ - - ">="
153
154
  - !ruby/object:Gem::Version
154
155
  version: '0'
155
156
  requirements: []
156
157
  rubyforge_project:
157
- rubygems_version: 2.0.14
158
+ rubygems_version: 2.4.5.1
158
159
  signing_key:
159
160
  specification_version: 4
160
161
  summary: Meteorlog is a tool to manage CloudWatch Logs.