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',