alertdesigner 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzMzYTRjZWUxMmFlMWFkMzc0NDBjY2NlYWI2NDU2M2EzNDIxYWRjYQ==
4
+ YTBmZDQ1NTg2NGQ3MDgzY2JjMWNkMjFiNTA2YjBhZWVlMmJjY2IyYQ==
5
5
  data.tar.gz: !binary |-
6
- Yzk1ODUwYmI3YjFlOTYxYTFmMTIxODE4MTllMzI0MTk2M2U0ZWQ2Yg==
6
+ MTFiZmZmMGU1MTlmYTkyZTM3NWI4YjM4NjgxYzdmOTZjYzQ0YzFiOQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NGJiYjYwNDYxZmVkZDNlYzYzNWJhMTRmMjQ4YzFhYjczODJiMmY0YzcwMGUx
10
- NjBjODg0OTUwM2VhNTNhOTJmNjY2Mzg2NzcxM2QzMmRiODM3NTg0M2Y5NjBj
11
- OGM1M2QxMzdlNGM5Zjg2N2ZiMjEyZTAyMDkxMzY0ZDAzMmQ0NjQ=
9
+ Mzg4NjQ1NGUwNGEwZTA5Y2Q3ZmE4MTE4Y2YzNTA0NGFkMjA5YzUzM2RmM2I3
10
+ YzJhMGM1NGRmNzlkZDY0NTBkYjYwNDdjMGFmOTc2YWQ5MWI4NWY4N2UzNzI3
11
+ YTFlZmMwMTZkNmE3YjM4YmIxOWEyMTg0MGZmNTc4MTQ3Zjg1ZDU=
12
12
  data.tar.gz: !binary |-
13
- ZDg5ZmUyMDViMmE5MjE0MDA2YmM0NTAyOGJhY2RiYTA0MTVlMDRkNmJhOTVi
14
- YTIwNjQ5ZGU2Zjg1ZWYyOTMxNDc3M2JjNzIzYzk3ZmY2N2RkNjI3MGNmMzI4
15
- N2ZiMzQ4ZWNhNTg3ZDVhY2NkYWJhYzQ4ZjFmYjMwNDg2NjZkOTE=
13
+ MjJkOWQ4NmIzMGM3MTU0YTZkMDY5NGYxMTY3ZGY3YjE4NDMyMTE0OGUyMTA1
14
+ NjM4YzRkOTlkMzUwM2EzMWU1OGFhZDkwZGQ5N2ViYjRlZWZlYTAzNDM5MTYw
15
+ OGQ5ZDI3ZTlkZWMyZTEwNzZmOWNkZTJhMjM1Y2ExZGI2N2JjMjg=
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- alertdesigner (0.0.2)
4
+ alertdesigner (0.0.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  [![Build Status](https://travis-ci.org/mrtazz/AlertDesigner.svg?branch=master)](https://travis-ci.org/mrtazz/AlertDesigner)
4
4
  [![Coverage Status](https://coveralls.io/repos/mrtazz/AlertDesigner/badge.svg?branch=master&service=github)](https://coveralls.io/github/mrtazz/AlertDesigner?branch=master)
5
5
  [![Code Climate](https://codeclimate.com/github/mrtazz/AlertDesigner/badges/gpa.svg)](https://codeclimate.com/github/mrtazz/AlertDesigner)
6
+ [![gem version](https://img.shields.io/gem/v/alertdesigner.svg)](https://rubygems.org/gems/alertdesigner)
6
7
  [![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](http://opensource.org/licenses/MIT)
7
8
 
8
9
  ## Overview
@@ -20,6 +21,16 @@ AlertDesigner.define do
20
21
  check_template "generic-service"
21
22
  end
22
23
 
24
+ {
25
+ "check_nrpe" => "$USER1$/check_nrpe2 -H $HOSTADDRESS$ -c $ARG1$ -t 30",
26
+ "check_local_disk" => "$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$",
27
+ }.each do |name, check_cmd|
28
+
29
+ command name do
30
+ command check_cmd
31
+ end
32
+ end
33
+
23
34
  # a simple disk space check
24
35
  check "/ Partition Disk Space" do
25
36
  hostgroups ["freebsd-base"]
@@ -52,6 +63,19 @@ end
52
63
  puts AlertDesigner.format
53
64
  ```
54
65
 
66
+ ## Installation
67
+ Install from rubygems:
68
+
69
+ ```bash
70
+ gem install alertdesigner
71
+ ```
72
+
73
+ Or in your Gemfile:
74
+
75
+ ```ruby
76
+ gem 'alertdesigner'
77
+ ```
78
+
55
79
  ## FAQ
56
80
  ### Couldn't most of this be done with a clever config hierarchy?
57
81
  Probably.
@@ -1,10 +1,12 @@
1
1
  require "alertdesigner/formatters"
2
2
  require "alertdesigner/check"
3
+ require "alertdesigner/command"
3
4
 
4
5
  # Top level AlertDesigner module with static methods for the DSL
5
6
  module AlertDesigner
6
7
  @checks = []
7
8
  @formatters = []
9
+ @commands = []
8
10
 
9
11
  def self.checks
10
12
  @checks
@@ -14,19 +16,35 @@ module AlertDesigner
14
16
  @formatters
15
17
  end
16
18
 
19
+ def self.commands
20
+ @commands
21
+ end
22
+
17
23
  def self.define(&block)
18
24
  instance_eval(&block)
19
25
  end
20
26
 
27
+ def self.reset
28
+ @checks = []
29
+ @formatters = []
30
+ @commands = []
31
+ end
32
+
21
33
  def self.check(description, &block)
22
34
  check = Check.new(description)
23
35
  check.instance_eval(&block)
24
36
  @checks << check
25
37
  end
26
38
 
39
+ def self.command(name, &block)
40
+ command = Command.new(name)
41
+ command.instance_eval(&block)
42
+ @commands << command
43
+ end
44
+
27
45
  def self.formatter(formatter_class, &block)
28
46
  formatter = formatter_class.new
29
- formatter.instance_eval(&block)
47
+ formatter.instance_eval(&block) if block_given?
30
48
  @formatters << formatter
31
49
  end
32
50
 
@@ -34,6 +52,7 @@ module AlertDesigner
34
52
  ret = ""
35
53
  @formatters.each do |formatter|
36
54
  ret << formatter.format(:checks, @checks)
55
+ ret << formatter.format(:commands, @commands)
37
56
  end
38
57
  ret
39
58
  end
@@ -0,0 +1,16 @@
1
+ module AlertDesigner
2
+ # Class to represent a command
3
+ class Command < BasicObject
4
+ attr_reader :command, :name
5
+
6
+ def initialize(name)
7
+ @name = name
8
+ @command = ""
9
+ end
10
+
11
+ def command(command = nil)
12
+ return @command if command.nil?
13
+ @command = command
14
+ end
15
+ end
16
+ end
@@ -31,6 +31,15 @@ define <%= type %>{
31
31
  fmt_check.properties["check_command"] = check.command
32
32
  fmt_check
33
33
  end
34
+
35
+ def self.get_command(name, cmd)
36
+ fmt_command = NagiosDefinition.new
37
+ fmt_command.type = "command"
38
+ fmt_command.properties = {}
39
+ fmt_command.properties["command_name"] = name
40
+ fmt_command.properties["command_line"] = cmd
41
+ fmt_command
42
+ end
34
43
  end
35
44
 
36
45
  def check_template(template)
@@ -39,10 +48,24 @@ define <%= type %>{
39
48
 
40
49
  def format(type, value)
41
50
  return format_checks(value) if type == :checks
51
+ return format_commands(value) if type == :commands
42
52
  end
43
53
 
44
54
  private
45
55
 
56
+ def format_commands(commands)
57
+ ret = ""
58
+
59
+ commands ||= []
60
+
61
+ commands.each do |cmd|
62
+ command = NagiosDefinition.get_command(cmd.name, cmd.command)
63
+ ret << command.render
64
+ end
65
+
66
+ ret
67
+ end
68
+
46
69
  def format_checks(checks)
47
70
  ret = ""
48
71
  checks.each do |check|
@@ -10,9 +10,10 @@ class FormatterNagiosTest < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def teardown
13
+ AlertDesigner.reset
13
14
  end
14
15
 
15
- def test_nagios_formatter_integration
16
+ def test_nagios_formatter_services
16
17
 
17
18
  AlertDesigner.define do
18
19
 
@@ -95,6 +96,44 @@ define service{
95
96
  contact_groups api-team
96
97
  }
97
98
 
99
+ EOS
100
+
101
+ assert_equal(expected, ret)
102
+ end
103
+
104
+ def test_nagios_formatter_commands
105
+
106
+ AlertDesigner.define do
107
+
108
+ # let's use the Nagios formatter
109
+ formatter AlertDesigner::Formatters::Nagios
110
+
111
+ # define some basic commands
112
+ {
113
+ "check_nrpe" => "$USER1$/check_nrpe2 -H $HOSTADDRESS$ -c $ARG1$ -t 30",
114
+ "check_local_disk" => "$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$",
115
+ }.each do |name, check_cmd|
116
+
117
+ command name do
118
+ command check_cmd
119
+ end
120
+
121
+ end
122
+ end
123
+
124
+ ret = AlertDesigner.format
125
+
126
+ expected = <<-EOS
127
+ define command{
128
+ command_name check_nrpe
129
+ command_line $USER1$/check_nrpe2 -H $HOSTADDRESS$ -c $ARG1$ -t 30
130
+ }
131
+
132
+ define command{
133
+ command_name check_local_disk
134
+ command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
135
+ }
136
+
98
137
  EOS
99
138
 
100
139
  assert_equal(expected, ret)
@@ -0,0 +1,20 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ require 'test/unit'
4
+ require 'alertdesigner/command'
5
+
6
+ class CommandTest < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @c = AlertDesigner::Command.new "check-host-alive"
10
+ end
11
+
12
+ def teardown
13
+ end
14
+
15
+ def test_basic_instantiation
16
+ @c.command "$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5"
17
+ assert_equal("check-host-alive", @c.name)
18
+ assert_equal("$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5", @c.command)
19
+ end
20
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alertdesigner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Schauenberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-19 00:00:00.000000000 Z
11
+ date: 2016-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -85,11 +85,13 @@ files:
85
85
  - alertdesigner.gemspec
86
86
  - lib/alertdesigner.rb
87
87
  - lib/alertdesigner/check.rb
88
+ - lib/alertdesigner/command.rb
88
89
  - lib/alertdesigner/formatters.rb
89
90
  - lib/alertdesigner/formatters/nagios.rb
90
91
  - test/integration/test_formatters_nagios.rb
91
92
  - test/test_helper.rb
92
93
  - test/unit/test_check.rb
94
+ - test/unit/test_command.rb
93
95
  - test/unit/test_formatter_nagios.rb
94
96
  - test/unit/test_formatters.rb
95
97
  homepage: https://github.com/mrtazz/AlertDesigner
@@ -119,5 +121,6 @@ test_files:
119
121
  - test/integration/test_formatters_nagios.rb
120
122
  - test/test_helper.rb
121
123
  - test/unit/test_check.rb
124
+ - test/unit/test_command.rb
122
125
  - test/unit/test_formatter_nagios.rb
123
126
  - test/unit/test_formatters.rb