zabbirc 0.1.1 → 0.2.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: 4fbf557c48488047ac885b6c749418c0eb726276
4
- data.tar.gz: a2076325c55e080a5045688708ef5937abb5b869
3
+ metadata.gz: fc13d87c01a24f572c2335c3b833a67bd69ac32e
4
+ data.tar.gz: f52a51ece4b4cadbccf80667bc0318ef49200624
5
5
  SHA512:
6
- metadata.gz: cbc6ffaa1d3054149f3d433123caf35abd158644c0c2b15a70e391ec51260c967758928fbc207d1852698dbbafa36a7bcbbfa0b028874b4ec4eae684daf9b848
7
- data.tar.gz: 0e881776f3a7ba5cb204878b474368525ef710fda6b69b0cec504d8de36f3787f30e67cf9e669abbf863a086752030b316b494f4ab8e3252ebd22ab70669af24
6
+ metadata.gz: 6dce36ab81b1e7ec021e638a3df1a005ecd028031bb882823cfc86a50f10f905156c191de858cb121ab3ae69741313d3be0187a2a16e77b352cfe97a91193d1b
7
+ data.tar.gz: 0bd55518c88310f0d03ba5bff6308a19bd8a657690dfcc324a673850e898af0efad0e99a8956625fea044888cab047a0f0b8bc53cab1f3e1215d9cec46670df8
data/lib/zabbirc.rb CHANGED
@@ -22,6 +22,10 @@ module Zabbirc
22
22
  def self.events_id_shortener
23
23
  @events_id_shortener ||= IdShortener.new
24
24
  end
25
+
26
+ def self.maintenances_id_shortener
27
+ @maintenances_id_shortener ||= IdShortener.new
28
+ end
25
29
  end
26
30
 
27
31
  require 'zabbirc/configuration'
@@ -16,8 +16,14 @@ module Zabbirc
16
16
  @ops = ops
17
17
  @message = message
18
18
  @op = get_op @message
19
- @cmd = cmd.to_s.strip.gsub(/\s{2,}/," ")
20
- @args = @cmd.split(/ /)
19
+ @cmd = cmd.to_s.strip.gsub(/\s{2,}/," ").freeze
20
+ @args = parse_arguments @cmd
21
+ end
22
+
23
+ def parse_arguments cmd
24
+ cmd.scan(/'[a-zA-Z0-9_\-,# ]+'|[a-zA-Z0-9_\-,#]+/).collect do |x|
25
+ x.match(/[a-zA-Z0-9_\-,# ]+/)[0]
26
+ end
21
27
  end
22
28
 
23
29
  def run
@@ -68,18 +74,39 @@ module Zabbirc
68
74
  end
69
75
 
70
76
  def find_host host
71
- hosts = Zabbix::Host.get(search: {host: host})
77
+ hosts = Zabbix::Host.get(search: {name: host})
72
78
  case hosts.size
73
79
  when 0
74
- reply "Host not found `#{host}`"
80
+ raise UserInputError, "Host not found `#{host}`"
75
81
  when 1
76
82
  return hosts.first
77
83
  when 2..10
78
- reply "Found #{hosts.size} hosts: #{hosts.collect(&:name).join(', ')}. Be more specific"
84
+ raise UserInputError, "Found #{hosts.size} hosts: #{hosts.collect(&:name).join(', ')}. Be more specific"
79
85
  else
80
- reply "Found #{hosts.size} Be more specific"
86
+ raise UserInputError, "Found #{hosts.size} Be more specific"
87
+ end
88
+ end
89
+
90
+ def find_hosts names
91
+ names.collect{|name| find_host name }
92
+ end
93
+
94
+ def find_host_group name
95
+ host_group = Zabbix::HostGroup.get(search: { name: name })
96
+ case host_group.size
97
+ when 0
98
+ raise UserInputError, "Cannot find hostgroup with name: `#{name}`"
99
+ when 1
100
+ host_group.first
101
+ when 2..10
102
+ raise UserInputError, "Found #{host_group.size} host groups using name: `#{name}` be more specific. Host groups: #{host_group.collect(&:name).join(", ")}"
103
+ else
104
+ raise UserInputError, "Found #{host_group.size} host groups using name: `#{name}` be more specific"
81
105
  end
82
- false
106
+ end
107
+
108
+ def find_host_groups names
109
+ names.collect{ |name| find_host_group(name) }
83
110
  end
84
111
 
85
112
  def find_event short_eventid
@@ -0,0 +1,103 @@
1
+ module Zabbirc
2
+ module Irc
3
+ class MaintenanceCommand < BaseCommand
4
+ register_help "maint", [
5
+ "Show active maintenances: !maint",
6
+ "Schedule a maintenance: !maint [hostgroups] '<host_name>|<hostgroup_name>[, <host_name>|<hostgroup_name>]' <duration> <reason>",
7
+ " - duration format: 1h, 30m, 1h30m. h - hour, m - minute.",
8
+ "Delete a maintenance: !maint delete <maintenance-id>"
9
+ ]
10
+ private
11
+ def perform
12
+ first_arg = @args.first
13
+ case first_arg
14
+ when nil
15
+ perform_list
16
+ when "delete"
17
+ @args.shift
18
+ perform_delete
19
+ else
20
+ perform_create
21
+ end
22
+ end
23
+
24
+ def perform_list
25
+ maintenances = Zabbix::Maintenance.get(selectHosts: :extend, selectGroups: :extend, selectTimePeriods: :extend)
26
+ active_maintenances = maintenances.select(&:active?)
27
+ if active_maintenances.empty?
28
+ reply "No active maintenances at this moment."
29
+ else
30
+ reply active_maintenances.collect(&:label)
31
+ end
32
+
33
+ end
34
+
35
+ def perform_create
36
+ params = {}
37
+ hostgroups_flag = @args.shift
38
+ if hostgroups_flag == "hostgroups"
39
+ target_names = @args.shift
40
+ raise UserInputError, help_features["maint"] unless target_names
41
+ target_names = target_names.split(/,/).collect(&:strip)
42
+ params[:host_group_ids] = find_host_groups(target_names).collect(&:id)
43
+ else
44
+ target_names = hostgroups_flag.split(/,/).collect(&:strip)
45
+ params[:host_ids] = find_hosts(target_names).collect(&:id)
46
+ end
47
+
48
+ params[:duration] = parse_duration @args.shift
49
+ params[:name] = @args.join(" ")
50
+ raise raise UserInputError, "no reason specified" if params[:name].blank?
51
+
52
+ id = Zabbix::Maintenance.create params
53
+ maintenance = Zabbix::Maintenance.find(id)
54
+ reply [
55
+ "maintenance scheduled since #{maintenance.active_since.to_formatted_s(:short)} till #{maintenance.active_till.to_formatted_s(:short)}",
56
+ maintenance.label
57
+ ]
58
+ end
59
+
60
+ def perform_delete
61
+ maintenance = find_maintenance @args.shift
62
+
63
+ begin
64
+ maintenance.destroy
65
+ reply "maintenance with id #{maintenance.shorten_id} has been deleted"
66
+ rescue ::Zabbix::Client::Error => e
67
+ reply "an error occured while deleting maintenance with id #{maintenance.shorten_id}: #{e}"
68
+ end
69
+ end
70
+
71
+ def find_maintenance shorten_id
72
+ maintenance_id = Zabbirc.maintenances_id_shortener.get_id shorten_id
73
+ raise UserInputError, "Bad maintenance id `#{shorten_id}`" unless maintenance_id
74
+
75
+ maintenance = Zabbix::Maintenance.find(maintenance_id)
76
+ raise UserInputError, "Could not find maintenance with id `#{shorten_id}`" if maintenance.nil?
77
+ maintenance
78
+
79
+ rescue Zabbix::IDNotUniqueError => e
80
+ raise UserInputError, "Could not find maintenance: #{e}"
81
+ end
82
+
83
+ def find_targets names, hostgroups_flag
84
+ names = names.split(/,/).collect(&:strip)
85
+ if hostgroups_flag
86
+ find_host_groups names
87
+ else
88
+ find_hosts names
89
+ end
90
+ end
91
+
92
+ def parse_duration duration_str
93
+ raise UserInputError, help_features["maint"] unless duration_str
94
+ match_data = duration_str.match(/(?:(?<minutes>[0-9]+[mM])|(?:(?<hours>[0-9]+)[hH](?<minutes>[0-9]+[mM])?))/)
95
+ raise UserInputError, ["cannot parse duration `#{duration_str}`", help_features["maint"]].flatten unless match_data
96
+ duration = 0
97
+ duration += match_data[:hours].to_i.hours if match_data[:hours]
98
+ duration += match_data[:minutes].to_i.minutes if match_data[:minutes]
99
+ duration
100
+ end
101
+ end
102
+ end
103
+ end
@@ -22,6 +22,10 @@ module Zabbirc
22
22
 
23
23
  # Host
24
24
  match /((?:status|latest)(?: .*)?)/, method: :host_command
25
+
26
+ # Maintenance
27
+ match /maint(?: (.*))?\Z/, method: :maintenance_command
28
+
25
29
  end
26
30
  end
27
31
  end
@@ -39,6 +39,11 @@ module Zabbirc
39
39
  cmd.run
40
40
  end
41
41
 
42
+ def maintenance_command m, cmd
43
+ cmd = MaintenanceCommand.new(ops, m, cmd)
44
+ cmd.run
45
+ end
46
+
42
47
  def sync_ops m, u=nil
43
48
  return if u and u.nick == bot.nick
44
49
  bot.zabbirc_service.ops_service.iterate
@@ -135,25 +135,6 @@ module Zabbirc
135
135
  end
136
136
  [key, value, host_groups_flag, host_groups]
137
137
  end
138
-
139
- def find_host_groups names
140
- names.collect do |name|
141
- host_group = Zabbix::HostGroup.get(search: { name: name })
142
- case host_group.size
143
- when 0
144
- raise UserInputError, "Cannot find hostgroup with name: `#{name}`"
145
- when 1
146
- host_group.first
147
- when 2..10
148
- raise UserInputError, "Found #{host_group.size} host groups using name: `#{name}` be more specific. Host groups: #{host_group.collect(&:name).join(", ")}"
149
- else
150
- raise UserInputError, "Found #{host_group.size} host groups using name: `#{name}` be more specific"
151
- end
152
- end
153
- end
154
-
155
138
  end
156
139
  end
157
- end
158
-
159
- # TODO filtrovanie eventov podla hostgroup
140
+ end
@@ -1,3 +1,3 @@
1
1
  module Zabbirc
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,94 @@
1
+ module Zabbirc
2
+ module Zabbix
3
+ class Maintenance < Resource::Base
4
+
5
+ has_many :hosts
6
+ has_many :groups, class_name: "HostGroup"
7
+
8
+ def self.find id, *options
9
+ options = options.extract_options!
10
+ options[:selectHosts] = :extend
11
+ options[:selectGroups] = :extend
12
+ super(id, options)
13
+ end
14
+
15
+ def self.create *options
16
+ default_options = {
17
+ host_ids: [],
18
+ host_group_ids: []
19
+ }
20
+
21
+ options = options.extract_options!
22
+ options = options.reverse_merge(default_options)
23
+
24
+ duration = options[:duration]
25
+ name = options[:name]
26
+ host_ids = options[:host_ids]
27
+ host_group_ids = options[:host_group_ids]
28
+ maint_start = Time.current
29
+ maint_end = maint_start + duration
30
+
31
+ r = api.maintenance.create(
32
+ name: name,
33
+ active_since: maint_start.to_i,
34
+ active_till: maint_end.to_i,
35
+ hostids: host_ids,
36
+ groupids: host_group_ids,
37
+ timeperiods: [
38
+ {
39
+ timeperiod_type: 0,
40
+ start_time: maint_start.to_i,
41
+ period: duration
42
+ }
43
+ ]
44
+ )
45
+
46
+ r["maintenanceids"].first
47
+ end
48
+
49
+ def shorten_id
50
+ @shorten_id ||= Zabbirc.maintenances_id_shortener.get_shorten_id id
51
+ end
52
+
53
+ def active_since
54
+ Time.at(super.to_i)
55
+ end
56
+
57
+ def active_till
58
+ Time.at(super.to_i)
59
+ end
60
+
61
+ def active?
62
+ (active_since..active_till).cover? Time.current
63
+ end
64
+
65
+ def label
66
+ format_label "|%sid| %start -> %end >> %name %targets"
67
+ end
68
+
69
+ def format_label fmt
70
+ fmt.gsub("%start", "#{active_since.to_formatted_s(:short)}").
71
+ gsub("%end", "#{active_till.to_formatted_s(:short)}").
72
+ gsub("%name", "#{name}").
73
+ gsub("%id", "#{id}").
74
+ gsub("%sid", "#{shorten_id}").
75
+ gsub("%targets", "#{target_labels}")
76
+ end
77
+
78
+ def target_labels
79
+ host_names = hosts.collect(&:name)
80
+ group_names = groups.collect(&:name)
81
+
82
+ r = ""
83
+ r << "Hosts: #{host_names.join(", ")}" if host_names.present?
84
+ r << "Host Groups: #{group_names.join(", ")}" if group_names.present?
85
+ r
86
+ end
87
+
88
+ def destroy
89
+ api.maintenance.delete [id]
90
+ end
91
+
92
+ end
93
+ end
94
+ end
@@ -16,7 +16,7 @@ module Zabbirc
16
16
  hash_data = @attrs[options[:zabbix_attribute]]
17
17
  if hash_data.blank?
18
18
  this = self.class.find id, extend_key => :extend
19
- raise StandardError, "zabbix response does not contain #{options[:zabbix_attribute]}" if this[options[:zabbix_attribute]].blank?
19
+ raise StandardError, "zabbix response does not contain #{options[:zabbix_attribute]}" if this[options[:zabbix_attribute]].nil?
20
20
  hash_data = this[options[:zabbix_attribute]]
21
21
  end
22
22
 
@@ -0,0 +1,92 @@
1
+ describe Zabbirc::Irc::MaintenanceCommand do
2
+ let(:ops_builder) { Zabbirc::OpsBuilder.new }
3
+ let(:mock_nick) { "op1" }
4
+ let(:mock_op) { ops_builder.build_op(mock_nick, mock_user_settings) }
5
+ let(:mock_message) { double("Cinch::Message", user: mock_op.irc_user) }
6
+ let(:mock_user_settings) { nil }
7
+ let(:maintenance_command) { Zabbirc::Irc::MaintenanceCommand.new ops_builder.ops, mock_message, cmd }
8
+
9
+
10
+ describe "list maintenances" do
11
+ let(:cmd) { "" }
12
+
13
+ before do
14
+ allow(Zabbirc::Zabbix::Maintenance).to receive(:get).and_return(maintenances)
15
+ end
16
+
17
+ context "no active maintenances" do
18
+ let(:maintenances) { [] }
19
+ let(:expected_message) { "#{mock_nick}: No active maintenances at this moment." }
20
+
21
+ it "should print active maintenances" do
22
+ expect(mock_message).to receive(:reply).with(expected_message)
23
+ maintenance_command.run
24
+ end
25
+ end
26
+
27
+ context "active maintenances exist" do
28
+ let(:maint1) { double("Maintenance", label: "maint 1 label", active?: true) }
29
+ let(:maint2) { double("Maintenance", label: "maint 2 label", active?: true) }
30
+ let(:maintenances) { [maint1, maint2] }
31
+
32
+ let(:expected_message) do
33
+ maintenances.collect do |maintenance|
34
+ "#{mock_nick}: #{maintenance.label}"
35
+ end.join("\n")
36
+ end
37
+
38
+
39
+ it "should print active maintenances" do
40
+ expect(mock_message).to receive(:reply).with(expected_message)
41
+ maintenance_command.run
42
+ end
43
+ end
44
+ end
45
+
46
+ describe "create maintenance" do
47
+ let(:host1) { double("Host", id: 1, name: "Host1") }
48
+ let(:host2) { double("Host", id: 2, name: "Host2") }
49
+ let(:hosts) { [host1, host2] }
50
+
51
+ let(:host_group1) { double("HostGroup", id: 11, name: "HostGroup1") }
52
+ let(:host_group2) { double("HostGroup", id: 12, name: "HostGroup2") }
53
+ let(:host_groups) { [host_group1, host_group2] }
54
+
55
+ let(:duration) { "1h30m" }
56
+ let(:duration_int) { (1.hour + 30.minutes).to_i }
57
+ let(:reason) { "some reason" }
58
+
59
+ let(:created_maintenance) { double("Maintenance", label: "maintenance label", active_since: Time.now, active_till: Time.now) }
60
+
61
+ before do
62
+ allow(Zabbirc::Zabbix::Maintenance).to receive(:create).with(any_args).and_return(true)
63
+ allow(Zabbirc::Zabbix::Host).to receive(:get).with(hash_including(search: { name: anything })) do |params|
64
+ hosts.select{|g| g.name =~ /#{params[:search][:name]}/ }
65
+ end
66
+ allow(Zabbirc::Zabbix::HostGroup).to receive(:get).with(hash_including(search: { name: anything })) do |params|
67
+ host_groups.select{|g| g.name =~ /#{params[:search][:name]}/ }
68
+ end
69
+ allow(Zabbirc::Zabbix::Maintenance).to receive(:find).and_return(created_maintenance)
70
+ end
71
+
72
+ context "hosts" do
73
+ let(:cmd) { "'#{host1.name},#{host2.name}' #{duration} #{reason}" }
74
+ it "should create maintenance" do
75
+ expect(Zabbirc::Zabbix::Maintenance).to receive(:create).with(duration: duration_int, host_ids: hosts.collect(&:id), name: reason)
76
+ expect(mock_message).to receive(:reply)
77
+ maintenance_command.run
78
+ end
79
+ end
80
+
81
+ context "host groups" do
82
+ let(:cmd) { "hostgroups '#{host_group1.name},#{host_group2.name}' #{duration} #{reason}" }
83
+ it "should create maintenance" do
84
+ expect(Zabbirc::Zabbix::Maintenance).to receive(:create).with(duration: duration_int, host_group_ids: host_groups.collect(&:id), name: reason)
85
+ expect(mock_message).to receive(:reply)
86
+ maintenance_command.run
87
+ end
88
+ end
89
+
90
+
91
+ end
92
+ end
@@ -51,7 +51,8 @@ describe Zabbirc::Irc::SettingsCommand do
51
51
  context "group specific" do
52
52
  let(:group1) { double "HostGroup", id: 1, name: "Group1" }
53
53
  let(:group2) { double "HostGroup", id: 2, name: "Group2" }
54
- let(:groups) { [group1, group2] }
54
+ let(:group3) { double "HostGroup", id: 3, name: "Group3" }
55
+ let(:groups) { [group1, group2, group3] }
55
56
  before do
56
57
  allow(Zabbirc::Zabbix::HostGroup).to receive(:get) { groups }
57
58
  allow(Zabbirc::Zabbix::HostGroup).to receive(:get).with(hash_including(search: { name: anything })) do |params|
@@ -60,64 +61,72 @@ describe Zabbirc::Irc::SettingsCommand do
60
61
  end
61
62
 
62
63
  shared_examples "set_group_setting" do |key, value, expected_setting_value|
63
- let(:expected_msg) { "#{mock_nick}: setting `#{key}` has been set to `#{expected_setting_value}` for host groups: #{affected_host_group.name}" }
64
- let(:cmd) { "set #{key} #{value} hostgroups #{affected_host_group.name}"}
64
+ let(:affected_host_groups_names) { affected_host_groups.collect(&:name).join(", ") }
65
+ let(:expected_msg) { "#{mock_nick}: setting `#{key}` has been set to `#{expected_setting_value}` for host groups: #{affected_host_groups_names}" }
66
+ let(:cmd) { "set #{key} #{value} hostgroups '#{affected_host_groups_names}'"}
65
67
  it "should set #{key} setting to #{value} for host group" do
66
68
  old_global_value = mock_op.setting.get(key)
67
69
 
68
70
  expect(mock_message).to receive(:reply).with(expected_msg)
69
71
  settings_command.run
70
- expect(mock_op.setting.get(key, host_group_id: affected_host_group.id)).to eq expected_setting_value
72
+ affected_host_groups.each do |group|
73
+ expect(mock_op.setting.get(key, host_group_id: group.id)).to eq expected_setting_value
74
+ end
71
75
 
72
76
  expect(mock_op.setting.get(key)).to eq old_global_value
73
77
  end
74
78
  end
75
79
 
76
80
  shared_examples "set_all_groups_setting" do |key, value, expected_setting_value|
81
+ let(:affected_host_groups_names) { affected_host_groups.collect(&:name).join(", ") }
77
82
  let(:settings_command1) { Zabbirc::Irc::SettingsCommand.new ops_builder.ops, mock_message, cmd1 }
78
83
  let(:settings_command2) { Zabbirc::Irc::SettingsCommand.new ops_builder.ops, mock_message, cmd2 }
79
84
 
80
- let!(:old_global_value) { mock_op.setting.get(key, host_group_id: affected_host_group.id) }
81
- let(:expected_msg1) { "#{mock_nick}: setting `#{key}` has been set to `#{expected_setting_value}` for host groups: #{affected_host_group.name}" }
85
+ let!(:old_global_value) { mock_op.setting.get(key) }
86
+ let(:expected_msg1) { "#{mock_nick}: setting `#{key}` has been set to `#{expected_setting_value}` for host groups: #{affected_host_groups_names}" }
82
87
  let(:expected_msg2) { "#{mock_nick}: setting `#{key}` has been set to `#{old_global_value}` for all host groups" }
83
- let(:cmd1) { "set #{key} #{value} hostgroups #{affected_host_group.name}"}
88
+ let(:cmd1) { "set #{key} #{value} hostgroups #{affected_host_groups_names}"}
84
89
  let(:cmd2) { "set #{key} #{old_global_value} hostgroups-all"}
85
90
  it "should set #{key} setting to #{value} for all host groups" do
86
91
  # sets host group specific setting
87
92
  expect(mock_message).to receive(:reply).with(expected_msg1)
88
93
  settings_command1.run
89
- expect(mock_op.setting.get(key, host_group_id: affected_host_group.id)).to eq expected_setting_value
94
+ affected_host_groups.each do |group|
95
+ expect(mock_op.setting.get(key, host_group_id: group.id)).to eq expected_setting_value
96
+ end
90
97
  expect(mock_op.setting.get(key)).to eq old_global_value
91
98
 
92
99
  expect(mock_message).to receive(:reply).with(expected_msg2)
93
100
  settings_command2.run
94
- expect(mock_op.setting.get(key, host_group_id: affected_host_group.id)).to eq old_global_value
101
+ affected_host_groups.each do |group|
102
+ expect(mock_op.setting.get(key, host_group_id: group.id)).to eq old_global_value
103
+ end
95
104
  expect(mock_op.setting.get(key)).to eq old_global_value
96
105
  end
97
106
  end
98
107
 
99
108
  it_should_behave_like "set_group_setting", "notify", "false", false do
100
- let(:affected_host_group) { group1 }
109
+ let(:affected_host_groups) { [group1, group2] }
101
110
  end
102
111
 
103
112
  it_should_behave_like "set_group_setting", "events_priority", "high", :high do
104
- let(:affected_host_group) { group1 }
113
+ let(:affected_host_groups) { [group1, group2] }
105
114
  end
106
115
 
107
116
  it_should_behave_like "set_group_setting", "events_priority", "5", :disaster do
108
- let(:affected_host_group) { group1 }
117
+ let(:affected_host_groups) { [group1, group2] }
109
118
  end
110
119
 
111
120
  it_should_behave_like "set_all_groups_setting", "notify", "false", false do
112
- let(:affected_host_group) { group1 }
121
+ let(:affected_host_groups) { [group1, group2] }
113
122
  end
114
123
 
115
124
  it_should_behave_like "set_all_groups_setting", "events_priority", "high", :high do
116
- let(:affected_host_group) { group1 }
125
+ let(:affected_host_groups) { [group1, group2] }
117
126
  end
118
127
 
119
128
  it_should_behave_like "set_all_groups_setting", "events_priority", "5", :disaster do
120
- let(:affected_host_group) { group1 }
129
+ let(:affected_host_groups) { [group1, group2] }
121
130
  end
122
131
 
123
132
  end
data/tmp/playground.rb CHANGED
@@ -20,3 +20,13 @@ s.set :events_priority, :high, host_group_id: 1
20
20
 
21
21
 
22
22
  c = SettingsCommand.new
23
+
24
+
25
+ def get_event short_id
26
+ Zabbirc.events_id_shortener.get_id(short_id)
27
+ Event.get(
28
+ event_ids: short_id,
29
+ selectRelatedObject: :extend,
30
+ selectHosts: :extend
31
+ )
32
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zabbirc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Filip Zachar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-06 00:00:00.000000000 Z
11
+ date: 2015-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -123,6 +123,7 @@ files:
123
123
  - lib/zabbirc/irc/help.rb
124
124
  - lib/zabbirc/irc/help_command.rb
125
125
  - lib/zabbirc/irc/host_command.rb
126
+ - lib/zabbirc/irc/maintenance_command.rb
126
127
  - lib/zabbirc/irc/plugin.rb
127
128
  - lib/zabbirc/irc/plugin_methods.rb
128
129
  - lib/zabbirc/irc/settings_command.rb
@@ -141,6 +142,7 @@ files:
141
142
  - lib/zabbirc/zabbix/event.rb
142
143
  - lib/zabbirc/zabbix/host.rb
143
144
  - lib/zabbirc/zabbix/host_group.rb
145
+ - lib/zabbirc/zabbix/maintenance.rb
144
146
  - lib/zabbirc/zabbix/resource/associations.rb
145
147
  - lib/zabbirc/zabbix/resource/base.rb
146
148
  - lib/zabbirc/zabbix/resource/finders.rb
@@ -149,6 +151,7 @@ files:
149
151
  - spec/event_command_spec.rb
150
152
  - spec/host_command_spec.rb
151
153
  - spec/id_shortener_spec.rb
154
+ - spec/maintenance_command_spec.rb
152
155
  - spec/settings_command_spec.rb
153
156
  - spec/spec_helper.rb
154
157
  - spec/support/mock_bot.rb