herdis 0.0.5 → 0.0.6

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.
@@ -0,0 +1,21 @@
1
+
2
+ module Herdis
3
+
4
+ module Handlers
5
+
6
+ class Shards < Goliath::API
7
+ include Common
8
+
9
+ def response(env)
10
+ if Herdis::Plugins::ShepherdConnection.shepherd.nil?
11
+ [404, {}, ""]
12
+ else
13
+ [200, {}, Herdis::Plugins::ShepherdConnection.shepherd.shard_status]
14
+ end
15
+ end
16
+
17
+ end
18
+
19
+ end
20
+
21
+ end
data/lib/herdis/server.rb CHANGED
@@ -18,6 +18,7 @@ require 'herdis/rack/favicon'
18
18
  require 'herdis/rack/host_parameter'
19
19
  require 'herdis/handlers/common'
20
20
  require 'herdis/handlers/cluster'
21
+ require 'herdis/handlers/shards'
21
22
  require 'herdis/handlers/join_cluster'
22
23
  require 'herdis/handlers/remove_shepherd'
23
24
  require 'herdis/handlers/shutdown'
@@ -41,6 +42,7 @@ module Herdis
41
42
  get '/', Herdis::Handlers::Info
42
43
  get '/cluster', Herdis::Handlers::Cluster
43
44
  get '/sanity', Herdis::Handlers::Sanity
45
+ get '/shards', Herdis::Handlers::Shards
44
46
 
45
47
  post '/', Herdis::Handlers::JoinCluster
46
48
 
@@ -276,7 +276,8 @@ module Herdis
276
276
  "check_slave_timer" => CHECK_SLAVE_TIMER,
277
277
  "check_predecessor_timer" => CHECK_PREDECESSOR_TIMER,
278
278
  "sanity" => "#{url}/sanity",
279
- "cluster" => "#{url}/cluster"
279
+ "cluster" => "#{url}/cluster",
280
+ "shards" => "#{url}/shards"
280
281
  }
281
282
  end
282
283
 
@@ -314,9 +315,11 @@ module Herdis
314
315
  def shard_status
315
316
  rval = []
316
317
  cluster_status.each do |shepherd_id, shepherd_status|
318
+ shepherd_url = URI.parse(shepherd_status["url"])
319
+ shepherd_host = shepherd_url.host
317
320
  shepherd_status["masters"].each do |shard_id|
318
321
  if rval[shard_id.to_i].nil?
319
- rval[shard_id.to_i] = "redis://#{host}:#{shard_id.to_i + shepherd_status["first_port"].to_i}/"
322
+ rval[shard_id.to_i] = "redis://#{shepherd_host}:#{shard_id.to_i + shepherd_status["first_port"].to_i}/"
320
323
  else
321
324
  raise Goliath::Validation::InternalServerError.new("Duplicate masters: #{shard_id}")
322
325
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: herdis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hiredis
16
- requirement: &70357281273960 !ruby/object:Gem::Requirement
16
+ requirement: &70143808249500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70357281273960
24
+ version_requirements: *70143808249500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: em-synchrony
27
- requirement: &70357281273400 !ruby/object:Gem::Requirement
27
+ requirement: &70143808248940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70357281273400
35
+ version_requirements: *70143808248940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: em-http-request
38
- requirement: &70357281272960 !ruby/object:Gem::Requirement
38
+ requirement: &70143808248500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70357281272960
46
+ version_requirements: *70143808248500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: redis
49
- requirement: &70357281272540 !ruby/object:Gem::Requirement
49
+ requirement: &70143808248080 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70357281272540
57
+ version_requirements: *70143808248080
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: yajl-ruby
60
- requirement: &70357281272100 !ruby/object:Gem::Requirement
60
+ requirement: &70143808247640 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70357281272100
68
+ version_requirements: *70143808247640
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: goliath
71
- requirement: &70357281271660 !ruby/object:Gem::Requirement
71
+ requirement: &70143808247200 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70357281271660
79
+ version_requirements: *70143808247200
80
80
  description: ! 'A Redis herder for simplifying Redis presharding
81
81
 
82
82
  '
@@ -98,6 +98,7 @@ files:
98
98
  - lib/herdis/handlers/remove_shards.rb
99
99
  - lib/herdis/handlers/remove_shepherd.rb
100
100
  - lib/herdis/handlers/sanity.rb
101
+ - lib/herdis/handlers/shards.rb
101
102
  - lib/herdis/handlers/shutdown.rb
102
103
  - lib/herdis/plugins/shepherd_connection.rb
103
104
  - lib/herdis/rack/default_headers.rb