nerve-easy 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/nerve/easy/fixed_instance_id.rb +15 -0
- data/lib/nerve/easy/nerve.rb +23 -0
- data/lib/nerve/easy/reporter.rb +3 -6
- data/lib/nerve/easy/service.rb +61 -0
- data/lib/nerve/easy/version.rb +1 -1
- data/lib/nerve/easy.rb +3 -1
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f1172ddaceb46bdb683c4f020bb72da0a33f5aa
|
4
|
+
data.tar.gz: 8175a9366f11e5cb6fafdb6af901542587c80829
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbe81a1c060a2c107ea9cad1acbc10e3e8892ef2f7b759345933e4d62f47316a85ec239b282b45c33a4d8950d1a14710462f5419c85de2eb9bf79f6c64e0ff78
|
7
|
+
data.tar.gz: f19e88838d735607c11786870c10b58e9a29ff72189b88218af8a3eecb6760a907b9465d8cda2d8e01128bfda09e1eac6271e761769b614707c88b4d8e502a3a
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Nerve
|
2
|
+
module Easy
|
3
|
+
module FixedInstanceId
|
4
|
+
class << self
|
5
|
+
def instance_id klass_name, size
|
6
|
+
@instance_ids ||= {}
|
7
|
+
@instance_ids[klass_name] ||= SecureRandom.hex(size)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
def instance_id size=4
|
11
|
+
FixedInstanceId.instance_id @name, size
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "fake/hash"
|
2
|
+
require "nerve/easy/fixed_instance_id"
|
3
|
+
|
4
|
+
module Nerve
|
5
|
+
module Easy
|
6
|
+
class Nerve
|
7
|
+
include Fake::Hash
|
8
|
+
include FixedInstanceId
|
9
|
+
def initialize
|
10
|
+
@services = {}
|
11
|
+
end
|
12
|
+
def announce service
|
13
|
+
@services[service.name] = service
|
14
|
+
end
|
15
|
+
def to_nerve
|
16
|
+
{
|
17
|
+
"instance_id" => instance_id,
|
18
|
+
"services" => @services.collect{|n,c| [n,c] }.to_h,
|
19
|
+
}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/nerve/easy/reporter.rb
CHANGED
@@ -1,15 +1,12 @@
|
|
1
1
|
require "fake/hash"
|
2
|
+
require "nerve/easy/fixed_instance_id"
|
2
3
|
|
3
4
|
module Nerve
|
4
5
|
module Easy
|
5
6
|
class Reporter
|
6
7
|
include Fake::Hash
|
7
|
-
|
8
|
-
|
9
|
-
@instance_id ||= SecureRandom.hex(size)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
attr_accessor :zk_hosts, :zk_path, :host, :port
|
8
|
+
include FixedInstanceId
|
9
|
+
attr_accessor :zk_hosts, :zk_path, :host, :port, :name
|
13
10
|
def initialize params={}
|
14
11
|
@zk_hosts = params[:zk_hosts]
|
15
12
|
@zk_hosts ||= [ "localhost:2181" ]
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require "fake/hash"
|
2
|
+
require "nerve/easy/reporter"
|
3
|
+
|
4
|
+
module Nerve
|
5
|
+
module Easy
|
6
|
+
class Service < Reporter
|
7
|
+
attr_accessor :reporter_type, :interval, :rise, :fall, :type, :uri,
|
8
|
+
:registry, :customer, :application, :function, :suffix
|
9
|
+
def initialize params={}
|
10
|
+
super
|
11
|
+
@reporter_type = params[:reporter_type]
|
12
|
+
@reporter_type ||= "zookeeper"
|
13
|
+
@interval = params[:interval]
|
14
|
+
@interval ||= 2
|
15
|
+
@timeout = params[:timeout]
|
16
|
+
@timeout ||= 0.2
|
17
|
+
@rise = params[:rise]
|
18
|
+
@rise ||= 2
|
19
|
+
@fall = params[:fall]
|
20
|
+
@fall ||= 3
|
21
|
+
@type = params[:type]
|
22
|
+
@type ||= :tcp
|
23
|
+
@uri = params[:uri]
|
24
|
+
@registry = params[:registry]
|
25
|
+
@registry ||= "global"
|
26
|
+
@customer = params[:customer]
|
27
|
+
@customer ||= "global"
|
28
|
+
@application = params[:application]
|
29
|
+
@application ||= "global"
|
30
|
+
@function = params[:function]
|
31
|
+
@function ||= "global"
|
32
|
+
@suffix = params[:suffix]
|
33
|
+
@suffix ||= "global"
|
34
|
+
@name = params[:name]
|
35
|
+
unless @name
|
36
|
+
@name = "#{@customer}_#{@application}_#{@function}"
|
37
|
+
end
|
38
|
+
@zk_path = Pathname.new("/#{@registry}")
|
39
|
+
@zk_path = @zk_path.join(@customer,@application,@function,@suffix).to_s
|
40
|
+
end
|
41
|
+
def to_nerve
|
42
|
+
super.merge({
|
43
|
+
"reporter_type" => reporter_type,
|
44
|
+
"check_interval" => interval,
|
45
|
+
"checks" => checks
|
46
|
+
})
|
47
|
+
end
|
48
|
+
def checks
|
49
|
+
[
|
50
|
+
{
|
51
|
+
"timeout" => @timeout,
|
52
|
+
"rise" => @rise,
|
53
|
+
"fall" => @fall,
|
54
|
+
"type" => @type,
|
55
|
+
"uri" => @uri
|
56
|
+
}
|
57
|
+
]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/nerve/easy/version.rb
CHANGED
data/lib/nerve/easy.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nerve-easy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mathias Kaufmann
|
@@ -67,7 +67,10 @@ files:
|
|
67
67
|
- bin/console
|
68
68
|
- bin/setup
|
69
69
|
- lib/nerve/easy.rb
|
70
|
+
- lib/nerve/easy/fixed_instance_id.rb
|
71
|
+
- lib/nerve/easy/nerve.rb
|
70
72
|
- lib/nerve/easy/reporter.rb
|
73
|
+
- lib/nerve/easy/service.rb
|
71
74
|
- lib/nerve/easy/version.rb
|
72
75
|
- nerve-easy.gemspec
|
73
76
|
homepage: https://nerve.stei.gr/easy
|