Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
293 commits
Select commit Hold shift + click to select a range
a8ec986
check if deploy time is string or time
simonmulser Sep 10, 2014
0de4d89
add occurrences count to mapping
simonmulser Sep 10, 2014
93e7fec
improve orderd by occurrence count test
simonmulser Sep 10, 2014
6c9a71a
remove inspect function for easier debugging
simonmulser Sep 11, 2014
20c50fb
use keyword arguments for occurrence search
simonmulser Sep 11, 2014
4a6fa82
rename occurred_at to last_occurred_at
simonmulser Sep 11, 2014
e401fb0
reuse find method from occurrence model
simonmulser Sep 11, 2014
55e686f
refactor delete by query func to use keyword arg
simonmulser Sep 11, 2014
7df78d8
refactor count func to use keyword args
simonmulser Sep 11, 2014
7aba7ac
refactor search in es client to use keyword args
simonmulser Sep 11, 2014
34ea7db
rename function find to get
simonmulser Sep 11, 2014
226f042
remove all from find method
simonmulser Sep 11, 2014
3f7c063
useless assert at the beginning of the test
simonmulser Sep 11, 2014
309fd42
rename test
simonmulser Sep 11, 2014
8ba9566
rearange class
simonmulser Sep 11, 2014
faca96f
add to find the size argument
simonmulser Sep 11, 2014
483e5a8
rename position to from
simonmulser Sep 11, 2014
f08348d
add argument check for variable from
simonmulser Sep 11, 2014
a50326e
function to find occurrences since a date
simonmulser Sep 11, 2014
21ac7e6
remove unnecessary assert
simonmulser Sep 11, 2014
632fc3a
remove all from method name
simonmulser Sep 11, 2014
d408709
move defautl sorting into find method
simonmulser Sep 11, 2014
98404da
check if empty
simonmulser Sep 11, 2014
23884f2
reintroduce inspect method on models
simonmulser Sep 11, 2014
858f4ff
fix wrong name of keyword argument
simonmulser Sep 11, 2014
1d68494
rearrange method
simonmulser Sep 11, 2014
1129464
use the word filters instead terms for keyword
simonmulser Sep 11, 2014
60d402c
create count since for occurrence
simonmulser Sep 11, 2014
841cca9
remove all from method name
simonmulser Sep 11, 2014
851fd81
create method find since last deploy
simonmulser Sep 11, 2014
bb8aaf0
fix method call
simonmulser Sep 11, 2014
baa0406
improve tests
simonmulser Sep 11, 2014
a7611d8
add deploy data when importing
simonmulser Sep 15, 2014
d27bacd
call exception model directly
simonmulser Sep 15, 2014
fed5f8d
remove unused methods
simonmulser Sep 15, 2014
da5cca8
add test for project
simonmulser Sep 15, 2014
102574b
fix wrong updating of last_occurred field
simonmulser Sep 15, 2014
3f657dc
add default values
simonmulser Sep 15, 2014
b20b1ee
remove duplicate testcase
simonmulser Sep 15, 2014
e859ad2
fix typo
simonmulser Sep 15, 2014
3828a00
update occurrences_count in since_last_deploy
simonmulser Sep 15, 2014
88aa9a0
add since last deploy with ordering by occurrence
simonmulser Sep 15, 2014
ee0b5dc
improve last occurred test
simonmulser Sep 15, 2014
e1572f2
return nil when there is no deploy
simonmulser Sep 15, 2014
9471c25
create since last deploy page
simonmulser Sep 15, 2014
e9ddd22
ensure update of last occurred at are correct
simonmulser Sep 15, 2014
a5cdcbf
deploy time as time in model
simonmulser Sep 15, 2014
50f19f2
use key arguments as parameters
simonmulser Sep 15, 2014
969c941
add function find next occurrence
simonmulser Sep 15, 2014
db4bf11
move test
simonmulser Sep 15, 2014
e8a1748
add func first occurrence since last deploy
simonmulser Sep 15, 2014
29f3d87
rename variable
simonmulser Sep 15, 2014
ca29fd4
ensure occurred_at is parsed
simonmulser Sep 16, 2014
2f6fc22
change count_since to query over exceptions
simonmulser Sep 16, 2014
cfcc164
fix typos
simonmulser Sep 16, 2014
94d2f51
denormalize last_occurrence in uber_exception
simonmulser Sep 16, 2014
081762d
fix save time not whole occurrence
simonmulser Sep 16, 2014
752605c
set default pagination again to 25
simonmulser Sep 16, 2014
aaa68b7
pass start argument
simonmulser Sep 16, 2014
82e7a05
use keyword arguments
simonmulser Sep 16, 2014
e56b30c
introduce naming convetion for function names
simonmulser Sep 16, 2014
bec1a47
add since_last_deploy to frontend
simonmulser Sep 16, 2014
77fe2c5
set occurrence_counit for pagination
simonmulser Sep 16, 2014
57a5c3a
raise error when no deploy
simonmulser Sep 16, 2014
f83694c
return all possible aggs
simonmulser Sep 16, 2014
f45820a
create mget function in esclient
simonmulser Sep 16, 2014
2df4194
fix pagination issue
simonmulser Sep 16, 2014
edde3a7
add count since function
simonmulser Sep 16, 2014
856e8fd
use keyword arguments as parameters
simonmulser Sep 16, 2014
8d42aba
improve since last deploy test
simonmulser Sep 16, 2014
ad181e3
improve empty project test
simonmulser Sep 16, 2014
dbf6429
use rack to test thrown exce
simonmulser Sep 16, 2014
30de483
add more assertions
simonmulser Sep 16, 2014
0eba8ae
add pagination test for since last deploy
simonmulser Sep 16, 2014
7d5e550
path not rechable anymore
simonmulser Sep 16, 2014
b94ef28
dont inherit anymore, own setup function
simonmulser Sep 16, 2014
472697a
use id for comparison
simonmulser Sep 16, 2014
d5b3f09
add default value for days to forget exceptions
simonmulser Sep 16, 2014
116abd0
use setup function to create fixtures
simonmulser Sep 16, 2014
ab4aaee
use keyword arguments as function params
simonmulser Sep 16, 2014
0ae2e4a
remove unused function
simonmulser Sep 16, 2014
5694ea6
add deploy.json for api test
simonmulser Sep 17, 2014
4755f62
fix typo
simonmulser Sep 17, 2014
8b0f5c4
create import dir
simonmulser Sep 17, 2014
7600b94
import deploys from import dir with yaml
simonmulser Sep 17, 2014
2a08a66
add codecoverage gem
simonmulser Sep 17, 2014
316adc9
remove duplicate function
simonmulser Sep 17, 2014
5aae693
ignore test files
simonmulser Sep 17, 2014
1ac7780
move spawn of es-cluster into test_helper
simonmulser Sep 17, 2014
4002dff
use utils class for rake tasks
simonmulser Sep 17, 2014
363cd44
require yaml in boot.rb
simonmulser Sep 17, 2014
e1ad77a
move mapping into a yaml file
simonmulser Sep 17, 2014
e5aac67
move require elasticsearch into boot.rb
simonmulser Sep 17, 2014
44ae956
remove es_helper
simonmulser Sep 17, 2014
b27967d
set es-endpoint
simonmulser Sep 17, 2014
5d86ee8
add test for unauth deploy
simonmulser Sep 17, 2014
2e9016f
fix naming of test functions
simonmulser Sep 17, 2014
487acc7
remove unused functions
simonmulser Sep 17, 2014
68fa3b3
add tests for river
simonmulser Sep 17, 2014
4c211e0
add tests for since last deploy
simonmulser Sep 17, 2014
d67e6d0
add test for title
simonmulser Sep 17, 2014
c3ffbae
add test for get exception
simonmulser Sep 17, 2014
11913db
split mapping to reuse type
simonmulser Sep 17, 2014
240fd9d
dont change first occurrence at
simonmulser Sep 17, 2014
8349c03
rename deploy_time into occurred_at
simonmulser Sep 17, 2014
6db5c54
remove whitespace
simonmulser Sep 17, 2014
d46aceb
mark attr access section
simonmulser Sep 17, 2014
f369d32
add since last deploy method
simonmulser Sep 17, 2014
33d3e9f
extend test
simonmulser Sep 17, 2014
8d64196
add new since last deploy
simonmulser Sep 17, 2014
0dac153
add category field
simonmulser Sep 17, 2014
ba898ab
move require json in boot.rb
simonmulser Sep 18, 2014
a4858e4
insert whitespace
simonmulser Sep 18, 2014
71a8400
insert occurred_at in json constructor
simonmulser Sep 18, 2014
247994c
insert occurred_at in xml constructor
simonmulser Sep 18, 2014
03a58d7
indent lines
simonmulser Sep 18, 2014
06fc19f
return only aggregation results
simonmulser Sep 18, 2014
f933fe9
move constructor to the top
simonmulser Sep 18, 2014
ebe59a0
use @ instead of self
simonmulser Sep 18, 2014
8e37b9e
dynamic initialisation
simonmulser Sep 18, 2014
6360374
proper function, avoid errors with unkown vars
simonmulser Sep 18, 2014
34e0de3
dont need do deleted anymore
simonmulser Sep 18, 2014
186d603
remove superfluo div
simonmulser Sep 18, 2014
2e007ae
create update function for uber_exception
simonmulser Sep 18, 2014
3849ef5
enable category on homepage
simonmulser Sep 18, 2014
b4ef5f8
add whitespace
simonmulser Sep 18, 2014
aa9bc6d
test updating category
simonmulser Sep 18, 2014
fa4ea8a
show default value in select
simonmulser Sep 18, 2014
e2f86ab
use submit form instead of button click
simonmulser Sep 18, 2014
96d33e5
create function to get last deploys
simonmulser Sep 18, 2014
8c2318c
extract day ago function
simonmulser Sep 18, 2014
83b6d28
use helper function
simonmulser Sep 18, 2014
3fd17fa
create function deploys last thirty days
simonmulser Sep 18, 2014
4eb0ba6
display deploys in chart as points
simonmulser Sep 18, 2014
732c686
set configuration vars for test enviornment
simonmulser Sep 19, 2014
7f0341a
sinatra now throws errors, add catch block
simonmulser Sep 19, 2014
5bfbc41
formatting, move lib to the other libs
simonmulser Sep 19, 2014
03c9c72
refactor find uber_exception
simonmulser Sep 19, 2014
edaa3ea
change message
simonmulser Sep 19, 2014
7e5a992
enable filtering on frontend
simonmulser Sep 19, 2014
0529c55
move pp into boot.rb
simonmulser Sep 19, 2014
601cb35
improve test
simonmulser Sep 19, 2014
43a6990
use bar instead of circle for deploy
simonmulser Sep 19, 2014
90c482b
remove unused gem
simonmulser Sep 19, 2014
a49fc2b
add deploy overview
simonmulser Sep 19, 2014
6a5d56a
move navigation out of if
simonmulser Sep 19, 2014
2b0f9af
enable filtering for since_last_deploy view
simonmulser Sep 22, 2014
ded34c5
reformat occurrence view page
simonmulser Sep 22, 2014
e46fa99
clean up changing category
simonmulser Sep 22, 2014
6397219
remove hide/show project feature
simonmulser Sep 22, 2014
39dad58
use config.rb to set elasticsearch endpoint
simonmulser Sep 22, 2014
d2ff334
remove change category test
simonmulser Sep 22, 2014
2a2da2f
refactoring integration tests
simonmulser Sep 23, 2014
ffbbd98
enrich title of since last deploy page
simonmulser Sep 23, 2014
02c2c83
move symbolize keys into helper module
simonmulser Sep 23, 2014
bab2780
add array wrap function to helper
simonmulser Sep 23, 2014
100ed72
refactor create search query
simonmulser Sep 23, 2014
7dffa2c
use keyword arguments for index function
simonmulser Sep 23, 2014
98d4d5b
use constant
simonmulser Sep 23, 2014
92ad721
reuse wrap filters function
simonmulser Sep 23, 2014
02fb97f
use keyword arguments for update function
simonmulser Sep 23, 2014
9b72d47
use keyword arguments for search ids
simonmulser Sep 23, 2014
4da2de7
refactor search deploy
simonmulser Sep 23, 2014
6aab682
rearrange functions
simonmulser Sep 23, 2014
832aba2
make search funtion private
simonmulser Sep 23, 2014
4f5e8a3
use keyword arguments for delete function
simonmulser Sep 23, 2014
f739055
set id default to -1, no default value ruby 2.1
simonmulser Sep 23, 2014
1c5bd59
add blank lines for readability
simonmulser Sep 23, 2014
0e55f74
use helper function to wrap
simonmulser Sep 23, 2014
6404a25
initialisation ensures that time is in the field
simonmulser Sep 23, 2014
9239a8a
create helper for ES day and time format
simonmulser Sep 23, 2014
f39bdd8
move raise exce to root function
simonmulser Sep 23, 2014
fb88e93
user generic function instead of find_by_name
simonmulser Sep 23, 2014
88b2365
rearrange functions
simonmulser Sep 23, 2014
767317e
use keyword arguments for get function
simonmulser Sep 23, 2014
e7f077a
use constant
simonmulser Sep 23, 2014
c81a4d7
remove double check
simonmulser Sep 23, 2014
2bfd4f2
improve find since last deploy function
simonmulser Sep 23, 2014
a337226
remove unused variable
simonmulser Sep 23, 2014
50d8e97
remove new on day feature
simonmulser Sep 23, 2014
0ea5f56
add blank line
simonmulser Sep 23, 2014
d62041c
move function into helper class
simonmulser Sep 23, 2014
c7b57d6
rename helpers to helper
simonmulser Sep 23, 2014
a825c3e
rearrange functions
simonmulser Sep 23, 2014
42d223d
use helper function; is always type date
simonmulser Sep 23, 2014
9751ba6
use helper function for dates
simonmulser Sep 23, 2014
a4a0a6b
move search deploys into deploy class
simonmulser Sep 23, 2014
e9fa34f
move search occurrence to occurrence class
simonmulser Sep 23, 2014
b30b013
move search exception into exception class
simonmulser Sep 23, 2014
ef1b97a
make search_aggs more generic
simonmulser Sep 23, 2014
8621c28
dont use default values for function call
simonmulser Sep 23, 2014
56ed48d
remove unused function
simonmulser Sep 23, 2014
215cb65
remove model related stuff from esclient
simonmulser Sep 23, 2014
e03dc1c
remove anused function
simonmulser Sep 23, 2014
78de4ec
use constants instead of strings
simonmulser Sep 23, 2014
41d3438
refactor since last deploy functions
simonmulser Sep 23, 2014
20d8dee
remove unused function
simonmulser Sep 23, 2014
9b3210d
add test for deploy page
simonmulser Sep 23, 2014
4e1495c
reenable wrap sort
simonmulser Sep 23, 2014
22b5202
change color of low category
simonmulser Sep 24, 2014
ee9d162
make user changes happen immediately
simonmulser Sep 24, 2014
2067cb9
fix wrong occurence count in exception graph
simonmulser Sep 24, 2014
fe38c27
rename variable
simonmulser Sep 24, 2014
05c092a
add new fields
simonmulser Sep 24, 2014
59bcb89
rename variable
simonmulser Sep 25, 2014
58db07e
remove argument, argument sent over filter param
simonmulser Sep 25, 2014
7d63a7a
insert whitspaces
simonmulser Sep 25, 2014
9139a10
remove unused variable
simonmulser Sep 25, 2014
7263596
rename test file to match tested file
simonmulser Sep 25, 2014
990c47a
create one day range function
simonmulser Sep 25, 2014
2e502fc
remove field occurred_at_day
simonmulser Sep 25, 2014
4bffeae
inline the function
simonmulser Sep 25, 2014
15d0118
introduce a parent class for models
simonmulser Sep 25, 2014
90fc1a1
use to_hash function from parent class
simonmulser Sep 25, 2014
a98080a
remove unused function
simonmulser Sep 25, 2014
ee85e66
default value empty hash, to be consistent
simonmulser Sep 25, 2014
e57dd68
dont use classname in the same class
simonmulser Sep 25, 2014
4913328
apply ruby coding conventions
simonmulser Sep 25, 2014
657f3aa
use space when assigning default values to method
simonmulser Sep 25, 2014
4b79ae9
shorten constant names
simonmulser Sep 25, 2014
ebf3504
break long lines
simonmulser Sep 25, 2014
c88bcdc
remove unneeded self
simonmulser Sep 25, 2014
8ac1835
use underscore to split long number
simonmulser Sep 25, 2014
abc508d
add since last deploy link
simonmulser Sep 25, 2014
7e10183
use longer var names to make things clearer
simonmulser Sep 26, 2014
8fc351a
remove abstract model class
simonmulser Sep 26, 2014
5067f0b
add if to avoid error when cgi-data is null
simonmulser Sep 26, 2014
48b68e9
add comment to explain empty rescue block
simonmulser Sep 26, 2014
5020fd3
making exception occurred more readable
simonmulser Sep 26, 2014
bd67b71
rename endpoint to elasticsearch_host
simonmulser Sep 26, 2014
23e3423
remove mongodb leftovers
simonmulser Sep 26, 2014
09361c0
move utils into lib folder
simonmulser Sep 26, 2014
b6d8fd8
dont abbreviate aggregation anymore
simonmulser Sep 26, 2014
a22b0fa
remove unused function
simonmulser Sep 26, 2014
c50350e
fix pagination error when filtering
simonmulser Sep 30, 2014
3c4cf54
rename variable to more sensful name
simonmulser Sep 30, 2014
22012a0
split terms apart from filters
simonmulser Sep 30, 2014
b044725
update export types
simonmulser Sep 30, 2014
384340c
new naming
stengaard Jun 25, 2015
2e6d562
add helper script
stengaard Jun 25, 2015
f81b193
fix spelling
stengaard Jun 25, 2015
539c87d
remove occurrences_count field. Use ES to get the value instead (lead…
stengaard Jun 26, 2015
74fa7ce
sanitize for nil terms
stengaard Jun 30, 2015
be44350
upgrade elasticsearch-extensions
theflow Oct 10, 2016
2205caa
fix occurrences count aggregation
theflow Oct 10, 2016
5ad74be
recreate the index instead of using delete_by_query
theflow Oct 10, 2016
1164b43
replace delete_by_query with scan and bulk
theflow Oct 10, 2016
0639751
move this to the right place
theflow Oct 10, 2016
579c1d4
don’t need this anymore
theflow Oct 10, 2016
ed33681
upgrade elasticsearch gem
theflow Oct 10, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
config.rb
dump.rdb
webrat.log
*.json
import
coverage
vendor/bundle
.bundle
Gemfile.lock

.idea
8 changes: 6 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,19 @@ source 'https://rubygems.org'
gem 'unicorn'

gem 'rake'
gem 'mongo'
gem 'bson_ext'
gem 'sinatra'
gem 'nokogiri', '~> 1.5.10'
gem 'yajl-ruby'
gem 'activesupport'
gem 'elasticsearch'
gem 'patron'
gem 'hashie'

group :development do
gem 'rack-test'
gem 'simplecov'
gem 'webrat'
gem 'shotgun'
gem 'elasticsearch-extensions'
gem 'timecop'
end
89 changes: 89 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (4.1.5)
i18n (~> 0.6, >= 0.6.9)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.1)
tzinfo (~> 1.1)
ansi (1.5.0)
docile (1.1.5)
elasticsearch (2.0.0)
elasticsearch-api (= 2.0.0)
elasticsearch-transport (= 2.0.0)
elasticsearch-api (2.0.0)
multi_json
elasticsearch-extensions (0.0.22)
ansi
ruby-prof
elasticsearch-transport (2.0.0)
faraday
multi_json
faraday (0.9.2)
multipart-post (>= 1.2, < 3)
hashie (2.1.2)
i18n (0.6.11)
json (1.8.1)
kgio (2.9.2)
minitest (5.4.0)
multi_json (1.12.1)
multipart-post (2.0.0)
nokogiri (1.5.11)
patron (0.4.18)
rack (1.5.2)
rack-protection (1.5.3)
rack
rack-test (0.6.2)
rack (>= 1.0)
raindrops (0.13.0)
rake (10.3.2)
ruby-prof (0.16.2)
shotgun (0.9)
rack (>= 1.0)
simplecov (0.9.0)
docile (~> 1.1.0)
multi_json
simplecov-html (~> 0.8.0)
simplecov-html (0.8.0)
sinatra (1.4.5)
rack (~> 1.4)
rack-protection (~> 1.4)
tilt (~> 1.3, >= 1.3.4)
thread_safe (0.3.4)
tilt (1.4.1)
timecop (0.7.1)
tzinfo (1.2.2)
thread_safe (~> 0.1)
unicorn (4.8.3)
kgio (~> 2.6)
rack
raindrops (~> 0.7)
webrat (0.7.3)
nokogiri (>= 1.2.0)
rack (>= 1.0)
rack-test (>= 0.5.3)
yajl-ruby (1.2.1)

PLATFORMS
ruby

DEPENDENCIES
activesupport
elasticsearch
elasticsearch-extensions
hashie
nokogiri (~> 1.5.10)
patron
rack-test
rake
shotgun
simplecov
sinatra
timecop
unicorn
webrat
yajl-ruby

BUNDLED WITH
1.10.6
26 changes: 21 additions & 5 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
$LOAD_PATH.unshift '.'
$LOAD_PATH.unshift 'lib'
require 'tools'
require 'utils'

task :default => :test

Expand All @@ -12,10 +13,25 @@ end
desc "Remove a single exception with all occurrences completely"
task :remove_exception do
uber_key = ENV['KEY']
Exceptionist::Remover.run(uber_key)
Utils::Remover.run(uber_key)
end

desc "Create MongoDB indexes"
task :create_indexes do
Exceptionist::IndexCreator.run
desc "Export occurrences in json"
task :export do
Utils::Exporter.run
end

desc "Import occurrences from json file"
task :import do
Utils::Importer.run
end

desc "Clear DB and create index with mapping"
task :cleardb do
Utils::ClearDB.run
end

desc "Print mapping"
task :mapping do
Utils::Mapping.run
end
4 changes: 2 additions & 2 deletions config.rb.example
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ require 'app'
# ==========================
#

# Configure your MongoDB server and port
Exceptionist.mongo = 'localhost:27017'
# Configure your ES server and port
Exceptionist.elasticsearch_host = 'localhost:9200'

# Credentials for accessing the web app, remove if you do auth in another way
Exceptionist.enable_authentication('username', 'password')
Expand Down
100 changes: 72 additions & 28 deletions lib/app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,18 @@
require 'sinatra/base'
require 'net/smtp'
require 'stringio'
require 'pp'

class ExceptionistApp < Sinatra::Base
dir = File.join(File.dirname(__FILE__), '..')
set :views, "#{dir}/views"
set :public_folder, "#{dir}/public"

configure :test do
set :raise_errors, true
set :dump_errors, false
set :show_exceptions, false
end

before do
protected! if request.path_info !~ /^\/notifier_api\/v2/
end
Expand All @@ -22,7 +27,7 @@ class ExceptionistApp < Sinatra::Base
end

get '/river' do
@occurrences = Occurrence.find_all
@occurrences = Occurrence.find

@title = "River"
erb :river
Expand All @@ -31,37 +36,49 @@ class ExceptionistApp < Sinatra::Base
get '/projects/:project' do
@projects = Project.all
@current_project = Project.new(params[:project])

@start = params[:start] ? params[:start].to_i : 0
@category = { category: params[:category] } if params[:category]
@terms =[{ project_name: @current_project.name }] << @category
@exceptions_count = UberException.count(terms: @terms)

if params[:sort_by] && params[:sort_by] == 'frequent'
@uber_exceptions = @current_project.most_frequest_exceptions(@start)
@uber_exceptions = UberException.find_sorted_by_occurrences_count(terms: @terms, from: @start)
else
@uber_exceptions = @current_project.latest_exceptions(@start)
@uber_exceptions = UberException.find(terms: @terms, from: @start)
end

@title = "Latest Exceptions for #{@current_project.name}"
erb :index
end

get '/projects/:project/river' do
get '/projects/:project/since_last_deploy' do
@projects = Project.all
@current_project = Project.new(params[:project])
@occurrences = Occurrence.find_all(@current_project.name)

@title = "Latest Occurrences for #{@current_project.name}"
erb :river
end
@deploy = @current_project.last_deploy
raise ArgumentError, "There is no deploy for project #{@current_project.name}" unless @deploy

get '/projects/:project/new_on/:day' do
@day = Time.parse(params[:day])
@current_project = Project.new(params[:project])
@uber_exceptions = @current_project.new_exceptions_on(@day)
@category = { category: params[:category] } if params[:category]
@terms =[{ project_name: @current_project.name }] << @category
@exceptions_count = UberException.count(terms: @terms, filters: [ { range: { 'last_occurrence.occurred_at' => { gte: Helper.es_time(@deploy.occurred_at) } } } ])

message_body = erb(:new_exceptions, :layout => false)

if params[:mail_to]
Mailer.deliver_new_exceptions(@current_project, @day, params[:mail_to], message_body)
@start = params[:start] ? params[:start].to_i : 0
if params[:sort_by] && params[:sort_by] == 'frequent'
@uber_exceptions = UberException.find_since_last_deploy_ordered_by_occurrences_count(project: @current_project.name, category: params[:category], from: @start)
else
@category = { category: params[:category] } if params[:category]
@uber_exceptions = UberException.find_since_last_deploy(project: @current_project.name, terms: [@category], from: @start)
end
@title = "Exceptions since last deploy (#{format_time(@deploy.occurred_at)}) for project #{@current_project.name}"
erb :index
end

message_body
get '/projects/:project/river' do
@current_project = Project.new(params[:project])
@occurrences = Occurrence.find( filters: { term: { project_name: @current_project.name } } )

@title = "Latest Occurrences for #{@current_project.name}"
erb :river
end

post '/projects/:project/forget_exceptions' do
Expand All @@ -73,15 +90,10 @@ class ExceptionistApp < Sinatra::Base

get '/exceptions/:id' do
@projects = Project.all
@uber_exception = UberException.find(params[:id])
@uber_exception = UberException.get(params[:id])
@occurrence_position = @uber_exception.occurrences_count
@occurrence = @uber_exception.current_occurrence(@occurrence_position)

if @occurrence.nil?
@uber_exception.update_occurrence_count
redirect request.url
end

@current_project = @occurrence.project
@backlink = true

Expand All @@ -90,24 +102,42 @@ class ExceptionistApp < Sinatra::Base
end

get '/exceptions/:id/occurrences/:occurrence_position' do
@uber_exception = UberException.find(params[:id])
@uber_exception = UberException.get(params[:id])
@occurrence_position = params[:occurrence_position].to_i
@occurrence = @uber_exception.current_occurrence(@occurrence_position)

erb :_occurrence, :layout => false
end

post '/exceptions/:id/close' do
@uber_exceptions = UberException.find(params[:id])
@uber_exceptions = UberException.get(params[:id])
@uber_exceptions.close!
Exceptionist.esclient.refresh

redirect to("/projects/#{@uber_exceptions.project_name}?#{Rack::Utils.unescape(params[:backparams])}")
end

post '/exceptions/category' do
@uber_exceptions = UberException.get(params[:id])
@uber_exceptions.update( category: params[:category] )
Exceptionist.esclient.refresh

halt 200, 'category changed'
end

get '/deploys/:project' do
@deploys = Deploy.find_by_project(params[:project])
@current_project = Project.new(params[:project])

@title = "All deploys for Project #{@current_project.name}"

erb :deploy
end

post '/notifier_api/v2/notices/?' do
occurrence = Occurrence.from_xml(params[:data] || request.body.read)

project = Project.find_by_key(occurrence.api_key)

if project
occurrence.project_name = project.name
occurrence.save
Expand All @@ -120,6 +150,20 @@ class ExceptionistApp < Sinatra::Base
end
end

post '/notifier_api/v2/deploy/?' do
deploy = Deploy.from_json(params[:data] || request.body.read)
project = Project.find_by_key(deploy.api_key)
if project
deploy.project_name = project.name
deploy.save

"<notice><id>#{deploy.id}</id></notice>"
else
status 401
'Invalid API Key'
end
end

helpers do
include Rack::Utils

Expand Down
9 changes: 8 additions & 1 deletion lib/boot.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,20 @@
require 'digest'
require 'active_support/ordered_hash'

require 'mongo'
require 'elasticsearch'
require 'yajl'
require 'nokogiri'
require 'yaml'
require 'json'
require 'pp'

require 'models/project'
require 'models/uber_exception'
require 'models/occurrence'
require 'models/deploy'
require 'models/mailer'

require 'mapping/mapping_helper'

require 'exceptionist'
require 'helper'
Loading