lib/bender/main.rb in bender-bot-0.6.0 vs lib/bender/main.rb in bender-bot-0.6.1
- old
+ new
@@ -39,57 +39,45 @@
include_common_options
def start
raw_config = JSON.parse File.read(options.config), symbolize_names: true
@config = DEFAULT_CONFIG.merge! raw_config
- BenderBot.const_set :RESOLVED_TRANSITIONS, %w[ 51 ]
+ BenderBot.const_set :RESOLVED_TRANSITIONS, config[:resolved_transitions]
Bender.const_set :RESOLVED_TRANSITIONS, BenderBot::RESOLVED_TRANSITIONS
Helpers.const_set :RESOLVED_TRANSITIONS, BenderBot::RESOLVED_TRANSITIONS
- BenderBot.const_set :RESOLVED_STATE, /resolve/i
+ BenderBot.const_set :RESOLVED_STATE, Regexp.new(config[:resolved_state])
Bender.const_set :RESOLVED_STATE, BenderBot::RESOLVED_STATE
Helpers.const_set :RESOLVED_STATE, BenderBot::RESOLVED_STATE
- BenderBot.const_set :CLOSED_TRANSITIONS, %w[ 61 71 ]
+ BenderBot.const_set :CLOSED_TRANSITIONS, config[:closed_transitions]
Bender.const_set :CLOSED_TRANSITIONS, BenderBot::CLOSED_TRANSITIONS
Helpers.const_set :CLOSED_TRANSITIONS, BenderBot::CLOSED_TRANSITIONS
- BenderBot.const_set :CLOSED_STATE, /close/i
+ BenderBot.const_set :CLOSED_STATE, Regexp.new(config[:closed_state])
Bender.const_set :CLOSED_STATE, BenderBot::CLOSED_STATE
Helpers.const_set :CLOSED_STATE, BenderBot::CLOSED_STATE
- BenderBot.const_set :SEVERITIES, {
- 1 => '10480',
- 2 => '10481',
- 3 => '10482',
- 4 => '10483',
- 5 => '10484'
- }
+ # Integerify keys
+ severities = config[:severities].inject({}) { |h,(k,v)| h[k.to_s.to_i] = v ; h }
+
+ BenderBot.const_set :SEVERITIES, severities
Bender.const_set :SEVERITIES, BenderBot::SEVERITIES
Helpers.const_set :SEVERITIES, BenderBot::SEVERITIES
- BenderBot.const_set :SHOW_FIELDS, {
- 'summary' => 'Summary',
- 'description' => 'Description',
- 'customfield_11250' => 'Severity',
- 'customfield_11251' => 'Impact Started',
- 'customfield_11252' => 'Impact Ended',
- 'customfield_11253' => 'Reported By',
- 'customfield_11254' => 'Services Affected',
- 'customfield_11255' => 'Cause',
- 'status' => 'Status',
- 'created' => 'Created',
- 'updated' => 'Updated'
- }
+ # Stringify keys
+ show_fields = config[:show_fields].inject({}) { |h,(k,v)| h[k.to_s] = v ; h }
+
+ BenderBot.const_set :SHOW_FIELDS, show_fields
Bender.const_set :SHOW_FIELDS, BenderBot::SHOW_FIELDS
Helpers.const_set :SHOW_FIELDS, BenderBot::SHOW_FIELDS
- BenderBot.const_set :SEVERITY_FIELD, SHOW_FIELDS.key('Severity')
+ BenderBot.const_set :SEVERITY_FIELD, config[:severity_field]
Bender.const_set :SEVERITY_FIELD, BenderBot::SEVERITY_FIELD
Helpers.const_set :SEVERITY_FIELD, BenderBot::SEVERITY_FIELD
- BenderBot.set_commands
+ BenderBot.set_commands config[:without_commands]
bot = start_bot
ts = []
ts << periodically_refresh_group(bot)
ts << periodically_refresh_users(bot)
@@ -122,11 +110,20 @@
Bot.run! config, log
end
def set_room_name_and_topic room_id, incidents, hipchat, bot
- room = hipchat[room_id]
- new_room = room.get_room
+ begin
+ room = hipchat[room_id]
+ new_room = room.get_room
+ rescue HipChat::UnknownResponseCode
+ log.error \
+ error: 'Cannot get room name and topic',
+ reason: 'HipChat returned an unknown response code',
+ room_id: room_id
+ sleep 10
+ return
+ end
if incidents.nil?
log.error \
error: 'Cannot set room name and topic',
reason: 'incidents are nil',