zabbirc 0.0.1 → 0.0.2

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: fa6b2a62b76aecb1541a8608444b54aa0435258a
4
- data.tar.gz: cd3e76f12c22caed15cf276cf4518dac82160946
3
+ metadata.gz: df680508aa555565efa407d3e430ab753a9eb4b4
4
+ data.tar.gz: 74e9be479d72a9f44a347af645a4e7b62ee6937e
5
5
  SHA512:
6
- metadata.gz: ec786a1141cff5e769b91cefe1ca45b9e2fa97b7f4a15ad70f5fa13c614acfb63c4674f606f365d473e2f92938589fc154703ea2cad767b661f8869196141be9
7
- data.tar.gz: 3a0b23a5017ceb2f8aabdcc73af0a300bb2795595a2f813a77d1ff054a35d0ed469b7b44869c9a2dfd5071777eca7269b20af4d07651cb9bc907098fb5748a4a
6
+ metadata.gz: c83af7f1d8f025023bf7d96dc3b36b0218894aabe663014df01e6bea4a250eeaa4c09656b60458a557e534be2aa41b2850bef5abb59df564506874f475434127
7
+ data.tar.gz: f714c131e9e43ec77bd52c4507cc5e48cd596c4f62e35d695b3c8a2292604bc3d47e1d37aff0ed682ef00728966621ba3ca774cf1504c4aa91c8103a61700128
@@ -2,4 +2,7 @@ Zabbirc.configure do |config|
2
2
  config.zabbix_api_url = ENV['ZABBIX_API_URL']
3
3
  config.zabbix_login = ENV['ZABBIX_LOGIN']
4
4
  config.zabbix_password = ENV['ZABBIX_PASSWORD']
5
+
6
+ config.irc_server = "irc.devel.redhat.com"
7
+ config.irc_channels = ["#libra-zabbix"]
5
8
  end
@@ -9,12 +9,16 @@ module Zabbirc
9
9
  listen_to :join, method: :sync_ops
10
10
  listen_to :leaving, method: :sync_ops
11
11
 
12
+ match "zabbirc status", method: :zabbirc_status
12
13
  match "settings", method: :show_settings
13
14
  match /settings set ([#_a-zA-Z0-9]+)( ([#\-_a-zA-Z0-9]+))?/, method: :set_setting
15
+ match /settings set\s*$/, method: :set_setting_help
14
16
  match "events", method: :list_events
15
17
  match /status ([a-zA-Z0-9\-.]+)/, method: :host_status
16
18
  match /latest ([a-zA-Z0-9\-.]+)( (\d+))?/, method: :host_latest
17
19
  match /ack (\d+) (.*)/, method: :acknowledge_event
20
+ match /ack\s*$/, method: :acknowledge_event_usage
21
+ match /ack ([^ ]+)\s*$/, method: :acknowledge_event_usage
18
22
  end
19
23
  end
20
24
  end
@@ -2,8 +2,20 @@ module Zabbirc
2
2
  module Irc
3
3
  module PluginMethods
4
4
 
5
+ def zabbirc_status m
6
+ ops_msg = ops.collect{|o| "#{o.nick} as #{o.login}"}
7
+ m.reply("#{m.user.nick}: Identified ops: #{ops_msg.join(", ")}")
8
+ end
9
+
10
+ def acknowledge_event_usage m
11
+ return unless authenticate m
12
+ op = get_op m
13
+ usage = "Usage: !ack <event-id> <ack-message>"
14
+ m.reply("#{op.nick}: #{usage}")
15
+ end
16
+
5
17
  def acknowledge_event m, eventid, message
6
- return unless authenticate m.user.nick
18
+ return unless authenticate m
7
19
  op = get_op m
8
20
  event = find_event m, eventid
9
21
  return unless event
@@ -16,7 +28,7 @@ module Zabbirc
16
28
  end
17
29
 
18
30
  def host_status m, host
19
- return unless authenticate m.user.nick
31
+ return unless authenticate m
20
32
  op = get_op m
21
33
  host = find_host m, host
22
34
  return unless host
@@ -37,7 +49,7 @@ module Zabbirc
37
49
 
38
50
  def host_latest m, host, _rest, limit
39
51
  limit ||= 8
40
- return unless authenticate m.user.nick
52
+ return unless authenticate m
41
53
  op = get_op m
42
54
  host = find_host m, host
43
55
  return unless host
@@ -62,13 +74,20 @@ module Zabbirc
62
74
 
63
75
  ### Settings
64
76
  def show_settings m
65
- return unless authenticate m.user.nick
77
+ return unless authenticate m
66
78
  op = get_op m
67
79
  m.reply "#{op.nick}: #{op.setting}"
68
80
  end
69
81
 
82
+ def set_setting_help m
83
+ return unless authenticate m
84
+ op = get_op m
85
+ usage = "Usage: !setting set <setting-name> <setting-value>"
86
+ m.reply("#{op.nick}: #{usage}")
87
+ end
88
+
70
89
  def set_setting m, key, _rest, value
71
- return unless authenticate m.user.nick
90
+ return unless authenticate m
72
91
  op = get_op m
73
92
  case key
74
93
  when "notify"
@@ -133,7 +152,7 @@ module Zabbirc
133
152
 
134
153
  ### Events
135
154
  def list_events m
136
- return unless authenticate m.user.nick
155
+ return unless authenticate m
137
156
  events = Zabbix::Event.recent
138
157
  msg = if events.any?
139
158
  events.collect do |e|
@@ -151,13 +170,13 @@ module Zabbirc
151
170
 
152
171
  ### Authentication and helpers
153
172
  def authenticate obj
154
- nick = get_nick obj
155
- ops.authenticate nick
173
+ login = get_login obj
174
+ ops.authenticate login
156
175
  end
157
176
 
158
177
  def get_op obj
159
- nick = get_nick obj
160
- ops.get nick
178
+ login = get_login obj
179
+ ops.get login
161
180
  end
162
181
 
163
182
  def get_nick obj
@@ -171,6 +190,17 @@ module Zabbirc
171
190
  end
172
191
  end
173
192
 
193
+ def get_login obj
194
+ case obj
195
+ when Cinch::Message
196
+ obj.user.user.sub("~","")
197
+ when Cinch::User
198
+ obj.user.user.sub("~","")
199
+ when String
200
+ obj
201
+ end
202
+ end
203
+
174
204
  private
175
205
 
176
206
  def find_host m, host
@@ -1,11 +1,12 @@
1
1
  module Zabbirc
2
2
  class Op
3
3
 
4
- attr_reader :channels, :setting, :nick
4
+ attr_reader :channels, :setting, :nick, :login
5
5
  def initialize zabbix_user: nil, irc_user: nil
6
6
  raise ArgumentError, 'zabbix_user' if zabbix_user.nil?
7
7
  raise ArgumentError, 'irc_user' if irc_user.nil?
8
- @nick = zabbix_user.alias
8
+ @login= zabbix_user.alias
9
+ @nick = irc_user.nick
9
10
  @zabbix_user = zabbix_user
10
11
  @irc_user = irc_user
11
12
 
@@ -22,10 +22,10 @@ module Zabbirc
22
22
  end
23
23
 
24
24
  def add op
25
- if exists? op.nick
26
- return get(op.nick)
25
+ if exists? op.login
26
+ return get(op.login)
27
27
  end
28
- @ops[op.nick] = op
28
+ @ops[op.login] = op
29
29
  end
30
30
 
31
31
  def each &block
@@ -11,17 +11,17 @@ module Zabbirc
11
11
 
12
12
  private
13
13
 
14
- def channel_nicks channel
15
- channel.users.keys.collect(&:nick)
14
+ def channel_logins channel
15
+ channel.users.keys.collect{|u| u.user.sub("~","") }
16
16
  end
17
17
 
18
- def channel_find_user channel, nick
19
- channel.users.keys.find { |irc_user| irc_user.nick == nick }
18
+ def channel_find_user channel, login
19
+ channel.users.keys.find { |irc_user| irc_user.user.sub("~","") == login }
20
20
  end
21
21
 
22
22
  def sync_ops channel
23
- nicks = channel_nicks channel
24
- zabbix_users = Zabbix::User.get filter: { alias: nicks }
23
+ logins = channel_logins channel
24
+ zabbix_users = Zabbix::User.get filter: { alias: logins }
25
25
  zabbix_users.each do |zabbix_user|
26
26
  irc_user = channel_find_user channel, zabbix_user.alias
27
27
  op = @service.ops.add(Op.new(zabbix_user: zabbix_user, irc_user: irc_user))
@@ -29,7 +29,7 @@ module Zabbirc
29
29
  end
30
30
 
31
31
  @service.ops.each do |op|
32
- op.remove_channel channel unless nicks.include? op.nick
32
+ op.remove_channel channel unless logins.include? op.login
33
33
  end
34
34
  true
35
35
  end
@@ -1,9 +1,10 @@
1
1
  describe Zabbirc::Irc::PluginMethods do
2
2
  # let(:service) { Zabbirc::ServiceMock.new }
3
3
  let(:mock_message) { double("Cinch::Message", user: mock_user) }
4
- let(:mock_user) { double("Cinch::User", nick: mock_nick) }
4
+ let(:mock_user) { double("Cinch::User", nick: mock_nick, login: mock_login) }
5
5
  let(:bot) { Zabbirc::MockBot.new }
6
6
  let(:mock_nick) { "op1" }
7
+ let(:mock_login) { "op1" }
7
8
  let(:mock_user_settings) { nil }
8
9
 
9
10
  before do
@@ -1,6 +1,7 @@
1
1
  module Zabbirc
2
2
  class MockBot
3
3
  include Zabbirc::Irc::PluginMethods
4
+ include RSpec::Mocks::ExampleMethods
4
5
 
5
6
  def initialize
6
7
  @ops = OpList.new
@@ -16,10 +17,17 @@ module Zabbirc
16
17
  return get_nick(obj.user) if obj.respond_to? :user
17
18
  end
18
19
 
20
+ def get_login obj
21
+ return obj if obj.is_a? String
22
+ return obj.login if obj.respond_to? :login
23
+ return get_login(obj.user) if obj.respond_to? :user
24
+ end
25
+
19
26
  def setup_op name, settings=nil
20
27
  @@op_ids ||= 0
21
28
  zabbix_user = Zabbix::User.new(alias: name, userid: (@@op_ids+=1))
22
- op = Op.new(zabbix_user: zabbix_user, irc_user: Object.new)
29
+ irc_user = double "IrcUser", nick: name, user: name
30
+ op = Op.new(zabbix_user: zabbix_user, irc_user: irc_user)
23
31
  settings.each do |key, value|
24
32
  op.setting.set key, value
25
33
  end if settings
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zabbirc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Filip Zachar
@@ -141,7 +141,6 @@ files:
141
141
  - spec/spec_helper.rb
142
142
  - spec/support/mock_bot.rb
143
143
  - templates/zabbirc_config.rb
144
- - thread_test.rb
145
144
  - tmp/playground.rb
146
145
  homepage: http://rubygems.org/gems/zabbirc
147
146
  licenses:
@@ -153,9 +152,9 @@ require_paths:
153
152
  - lib
154
153
  required_ruby_version: !ruby/object:Gem::Requirement
155
154
  requirements:
156
- - - ">="
155
+ - - "~>"
157
156
  - !ruby/object:Gem::Version
158
- version: '0'
157
+ version: '2.0'
159
158
  required_rubygems_version: !ruby/object:Gem::Requirement
160
159
  requirements:
161
160
  - - ">="
@@ -1,46 +0,0 @@
1
- require 'pry'
2
- StopError = Object.new
3
- $f = File.open("thread.log", "w")
4
-
5
- def lg msg
6
- $f.puts msg
7
- $f.flush
8
- end
9
- main_thread = Thread.current
10
-
11
- def make_thread
12
- Thread.new do
13
- begin
14
- loop do
15
- Thread.handle_interrupt(StopError => :never) do
16
- lg "Start - critical"
17
- sleep 5
18
- lg "Stop - critical"
19
-
20
- Thread.handle_interrupt(StopError => :immediate) do
21
- lg "Start - interruptibly"
22
- sleep 10
23
- lg "Stop - interruptibly"
24
- end
25
- end
26
- end
27
- rescue => e
28
- puts "Chyba: #{e}"
29
- main_thread.raise e
30
- end
31
- end
32
- end
33
-
34
- def start
35
- $t = make_thread
36
- end
37
-
38
- def stop
39
- $t.raise StopError
40
- end
41
-
42
- def q
43
- $t.raise StandardError
44
- end
45
-
46
- binding.pry