ustate-client 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +21 -0
- data/README.markdown +111 -0
- data/lib/ustate/client/query.rb +17 -0
- data/lib/ustate/client.rb +108 -0
- data/lib/ustate/dash/config.rb +0 -0
- data/lib/ustate/dash/controller/css.rb +5 -0
- data/lib/ustate/dash/controller/index.rb +5 -0
- data/lib/ustate/dash/helper/renderer.rb +209 -0
- data/lib/ustate/dash/state.rb +75 -0
- data/lib/ustate/dash/views/css.scss +39 -0
- data/lib/ustate/dash/views/index.erubis +3 -0
- data/lib/ustate/dash/views/layout.erubis +16 -0
- data/lib/ustate/dash.rb +111 -0
- data/lib/ustate/message.rb +16 -0
- data/lib/ustate/query.rb +7 -0
- data/lib/ustate/query_string.rb +1066 -0
- data/lib/ustate/query_string.treetop +116 -0
- data/lib/ustate/server/backends/base.rb +103 -0
- data/lib/ustate/server/backends/tcp.rb +33 -0
- data/lib/ustate/server/backends.rb +4 -0
- data/lib/ustate/server/connection.rb +82 -0
- data/lib/ustate/server/graphite.rb +11 -0
- data/lib/ustate/server/index.rb +134 -0
- data/lib/ustate/server.rb +66 -0
- data/lib/ustate/state.rb +18 -0
- data/lib/ustate/version.rb +3 -0
- data/lib/ustate.rb +9 -0
- metadata +71 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
module UState
|
2
|
+
class Server
|
3
|
+
# A server binds together Backends, an Index, and Sinks.
|
4
|
+
# - Backends spawn Connections with EM.
|
5
|
+
# - Connections receive messages from clients, and pass States to the Index.
|
6
|
+
# - The Index aggregates states together and informs Sinks.
|
7
|
+
|
8
|
+
class Error < RuntimeError; end
|
9
|
+
|
10
|
+
require 'eventmachine'
|
11
|
+
require 'ustate/server/connection'
|
12
|
+
require 'ustate/server/index'
|
13
|
+
require 'ustate/server/backends'
|
14
|
+
require 'treetop'
|
15
|
+
require 'ustate/query_string.rb'
|
16
|
+
|
17
|
+
attr_accessor :backends
|
18
|
+
attr_accessor :index
|
19
|
+
|
20
|
+
def initialize(opts = {})
|
21
|
+
# Backends
|
22
|
+
@backends = []
|
23
|
+
b = Backends::TCP.new opts
|
24
|
+
b.server = self
|
25
|
+
@backends << b
|
26
|
+
|
27
|
+
@index = Index.new
|
28
|
+
|
29
|
+
setup_signals
|
30
|
+
end
|
31
|
+
|
32
|
+
def start
|
33
|
+
@index.start
|
34
|
+
|
35
|
+
# Right now b.start blocks... should look into EM
|
36
|
+
@backends.map do |b|
|
37
|
+
b.start
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def stop
|
42
|
+
@backends.map do |b|
|
43
|
+
if b.running?
|
44
|
+
b.stop
|
45
|
+
else
|
46
|
+
stop!
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
@index.stop
|
51
|
+
end
|
52
|
+
|
53
|
+
def stop!
|
54
|
+
@backends.map do |b|
|
55
|
+
b.stop!
|
56
|
+
end
|
57
|
+
|
58
|
+
@index.stop!
|
59
|
+
end
|
60
|
+
|
61
|
+
def setup_signals
|
62
|
+
trap('INT') { stop! }
|
63
|
+
trap('TERM') { stop }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/ustate/state.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
class UState::State
|
2
|
+
include Beefcake::Message
|
3
|
+
|
4
|
+
optional :time, :int64, 1
|
5
|
+
optional :state, :string, 2
|
6
|
+
optional :service, :string, 3
|
7
|
+
optional :host, :string, 4
|
8
|
+
optional :description, :string, 5
|
9
|
+
optional :metric_f, :float, 15
|
10
|
+
|
11
|
+
def metric
|
12
|
+
@metric || metric_f
|
13
|
+
end
|
14
|
+
|
15
|
+
def metric=(m)
|
16
|
+
@metric = m
|
17
|
+
end
|
18
|
+
end
|
data/lib/ustate.rb
ADDED
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ustate-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kyle Kingsbury
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-09-05 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description:
|
15
|
+
email: aphyr@aphyr.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/ustate.rb
|
21
|
+
- lib/ustate/query_string.treetop
|
22
|
+
- lib/ustate/message.rb
|
23
|
+
- lib/ustate/version.rb
|
24
|
+
- lib/ustate/server/graphite.rb
|
25
|
+
- lib/ustate/server/backends.rb
|
26
|
+
- lib/ustate/server/backends/base.rb
|
27
|
+
- lib/ustate/server/backends/tcp.rb
|
28
|
+
- lib/ustate/server/index.rb
|
29
|
+
- lib/ustate/server/connection.rb
|
30
|
+
- lib/ustate/server.rb
|
31
|
+
- lib/ustate/dash.rb
|
32
|
+
- lib/ustate/state.rb
|
33
|
+
- lib/ustate/query.rb
|
34
|
+
- lib/ustate/client/query.rb
|
35
|
+
- lib/ustate/client.rb
|
36
|
+
- lib/ustate/dash/views/index.erubis
|
37
|
+
- lib/ustate/dash/views/layout.erubis
|
38
|
+
- lib/ustate/dash/views/css.scss
|
39
|
+
- lib/ustate/dash/state.rb
|
40
|
+
- lib/ustate/dash/controller/index.rb
|
41
|
+
- lib/ustate/dash/controller/css.rb
|
42
|
+
- lib/ustate/dash/config.rb
|
43
|
+
- lib/ustate/dash/helper/renderer.rb
|
44
|
+
- lib/ustate/query_string.rb
|
45
|
+
- LICENSE
|
46
|
+
- README.markdown
|
47
|
+
homepage: https://github.com/aphyr/ustate
|
48
|
+
licenses: []
|
49
|
+
post_install_message:
|
50
|
+
rdoc_options: []
|
51
|
+
require_paths:
|
52
|
+
- lib
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ! '>='
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 1.8.7
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ! '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
requirements: []
|
66
|
+
rubyforge_project: ustate-client
|
67
|
+
rubygems_version: 1.8.10
|
68
|
+
signing_key:
|
69
|
+
specification_version: 3
|
70
|
+
summary: Client for the distributed state server ustate.
|
71
|
+
test_files: []
|