etcdv3 0.1.1 → 0.1.2
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/README.md +11 -0
- data/lib/etcdv3.rb +36 -9
- data/lib/etcdv3/auth.rb +1 -2
- data/lib/etcdv3/kv.rb +0 -6
- data/lib/etcdv3/maintenance.rb +36 -0
- data/lib/etcdv3/version.rb +1 -1
- data/spec/etcdv3/maintenance_spec.rb +43 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3da4471fa89eef12de54927ad29a3dfe9ad78d1
|
4
|
+
data.tar.gz: d2c7b8a7df8d7a464881a6fa226c20cc24142347
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5870f96529e1084efe1c18fdc8f3295371ec6a6008f744b3db3f48198bf05564c438a2191c5a29f33d7b5a0602f4c23b86f96ee020642fe546cd7b0d3e8aacee
|
7
|
+
data.tar.gz: 4bf35190f37e5453368c9a50349dcb7151f966278b88d6ef3429bdf86716670db0912fdfe9ef82b116a097b45211ff00a5858d58c1909e5d609f7b7ffa83769b
|
data/README.md
CHANGED
@@ -6,6 +6,8 @@ Ruby client for Etcd V3
|
|
6
6
|
|
7
7
|
## Getting Started
|
8
8
|
|
9
|
+
[RubyDocs](http://www.rubydoc.info/gems/etcdv3/0.1.1/Etcd)
|
10
|
+
|
9
11
|
To install etcdv3, run the following command:
|
10
12
|
```
|
11
13
|
gem install etcdv3
|
@@ -87,3 +89,12 @@ Disabling auth will clear the auth token and all previously attached user inform
|
|
87
89
|
```
|
88
90
|
conn.disable_auth
|
89
91
|
```
|
92
|
+
|
93
|
+
**Alarms**
|
94
|
+
```
|
95
|
+
# List all active Alarms
|
96
|
+
conn.alarm_list
|
97
|
+
|
98
|
+
# Deactivate ALL active Alarms
|
99
|
+
conn.deactivate_alarms
|
100
|
+
```
|
data/lib/etcdv3.rb
CHANGED
@@ -5,6 +5,7 @@ require 'uri'
|
|
5
5
|
require 'etcdv3/etcdrpc/rpc_services_pb'
|
6
6
|
require 'etcdv3/auth'
|
7
7
|
require 'etcdv3/kv'
|
8
|
+
require 'etcdv3/maintenance'
|
8
9
|
|
9
10
|
class Etcd
|
10
11
|
|
@@ -45,6 +46,21 @@ class Etcd
|
|
45
46
|
@metadata[:token] = auth.generate_token(user, password) unless user.nil?
|
46
47
|
end
|
47
48
|
|
49
|
+
# Version of Etcd running on member
|
50
|
+
def version
|
51
|
+
maintenance.member_status.version
|
52
|
+
end
|
53
|
+
|
54
|
+
# Store size in bytes.
|
55
|
+
def db_size
|
56
|
+
maintenance.member_status.dbSize
|
57
|
+
end
|
58
|
+
|
59
|
+
# Cluster leader id
|
60
|
+
def leader_id
|
61
|
+
maintenance.member_status.leader
|
62
|
+
end
|
63
|
+
|
48
64
|
# Inserts a new key.
|
49
65
|
def put(key, value)
|
50
66
|
kv.put(key, value)
|
@@ -84,15 +100,12 @@ class Etcd
|
|
84
100
|
# On successful authentication, an auth token will be assigned to the instance.
|
85
101
|
def authenticate(user, password)
|
86
102
|
token = auth.generate_token(user, password)
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
return false
|
94
|
-
rescue GRPC::InvalidArgument => exception
|
95
|
-
return false
|
103
|
+
return false unless token
|
104
|
+
@metadata[:token] = token
|
105
|
+
@options[:user] = user
|
106
|
+
@options[:password] = password
|
107
|
+
|
108
|
+
true
|
96
109
|
end
|
97
110
|
|
98
111
|
# List all roles.
|
@@ -151,6 +164,16 @@ class Etcd
|
|
151
164
|
response
|
152
165
|
end
|
153
166
|
|
167
|
+
# List active alarms
|
168
|
+
def alarm_list
|
169
|
+
maintenance.alarms(:get, leader_id)
|
170
|
+
end
|
171
|
+
|
172
|
+
# Disarm alarms on a specified member.
|
173
|
+
def deactivate_alarms
|
174
|
+
maintenance.alarms(:deactivate, leader_id)
|
175
|
+
end
|
176
|
+
|
154
177
|
private
|
155
178
|
|
156
179
|
def auth
|
@@ -161,6 +184,10 @@ class Etcd
|
|
161
184
|
Etcd::KV.new(hostname, port, @credentials, @metadata)
|
162
185
|
end
|
163
186
|
|
187
|
+
def maintenance
|
188
|
+
Etcd::Maintenance.new(hostname, port, @credentials, @metadata)
|
189
|
+
end
|
190
|
+
|
164
191
|
def resolve_credentials
|
165
192
|
case scheme
|
166
193
|
when 'http'
|
data/lib/etcdv3/auth.rb
CHANGED
data/lib/etcdv3/kv.rb
CHANGED
@@ -9,17 +9,11 @@ class Etcd
|
|
9
9
|
def put(key, value)
|
10
10
|
kv = Etcdserverpb::PutRequest.new(key: key, value: value)
|
11
11
|
@stub.put(kv, metadata: @metadata)
|
12
|
-
rescue GRPC::PermissionDenied, GRPC::InvalidArgument => exception
|
13
|
-
puts exception.message
|
14
|
-
false
|
15
12
|
end
|
16
13
|
|
17
14
|
def get(key, range_end="")
|
18
15
|
kv = Etcdserverpb::RangeRequest.new(key: key, range_end: range_end)
|
19
16
|
@stub.range(kv, metadata: @metadata).kvs
|
20
|
-
rescue GRPC::PermissionDenied, GRPC::InvalidArgument => exception
|
21
|
-
puts exception.message
|
22
|
-
false
|
23
17
|
end
|
24
18
|
end
|
25
19
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
class Etcd
|
4
|
+
class Maintenance
|
5
|
+
# Sadly these are the only alarm types supported by the api right now.
|
6
|
+
ALARM_TYPES = {
|
7
|
+
NONE: 0,
|
8
|
+
NOSPACE: 1
|
9
|
+
}
|
10
|
+
|
11
|
+
ALARM_ACTIONS = {
|
12
|
+
get: 0,
|
13
|
+
activate: 1, # Should only be used in testing. Not a stable feature...
|
14
|
+
deactivate: 2
|
15
|
+
}
|
16
|
+
|
17
|
+
def initialize(hostname, port, credentials, metadata = {})
|
18
|
+
@stub = Etcdserverpb::Maintenance::Stub.new("#{hostname}:#{port}", credentials)
|
19
|
+
@metadata = metadata
|
20
|
+
end
|
21
|
+
|
22
|
+
def member_status
|
23
|
+
@stub.status(Etcdserverpb::StatusRequest.new, metadata: @metadata)
|
24
|
+
end
|
25
|
+
|
26
|
+
def alarms(action, member_id, alarm=:NONE)
|
27
|
+
alarm = ALARM_TYPES[alarm]
|
28
|
+
request = Etcdserverpb::AlarmRequest.new(
|
29
|
+
action: ALARM_ACTIONS[action],
|
30
|
+
memberID: member_id,
|
31
|
+
alarm: action == :deactivate ? ALARM_TYPES[:NOSPACE] : alarm
|
32
|
+
)
|
33
|
+
@stub.alarm(request)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/etcdv3/version.rb
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Etcd::Maintenance do
|
4
|
+
|
5
|
+
let(:conn) do
|
6
|
+
Etcd.new(url: 'http://127.0.0.1:2379')
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#version' do
|
10
|
+
subject { conn.version }
|
11
|
+
it { is_expected.to_not be_nil }
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#leader_id' do
|
15
|
+
subject { conn.leader_id }
|
16
|
+
it { is_expected.to_not be_nil }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#db_size' do
|
20
|
+
subject { conn.db_size }
|
21
|
+
it { is_expected.to_not be_nil }
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#alarm_list' do
|
25
|
+
before { conn.send(:maintenance).alarms(:activate, conn.leader_id, :NOSPACE) }
|
26
|
+
after { conn.deactivate_alarms }
|
27
|
+
subject { conn.alarm_list }
|
28
|
+
it 'returns an alarm' do
|
29
|
+
expect(subject).to be_an_instance_of(Etcdserverpb::AlarmResponse)
|
30
|
+
expect(subject.alarms.size).to eq(1)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#deactivate_alarms' do
|
35
|
+
before { conn.send(:maintenance).alarms(:activate, conn.leader_id, :NOSPACE) }
|
36
|
+
subject { conn.deactivate_alarms }
|
37
|
+
it 'deactivates alarms' do
|
38
|
+
expect(subject).to be_an_instance_of(Etcdserverpb::AlarmResponse)
|
39
|
+
expect(conn.alarm_list.alarms.size).to eq(0)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: etcdv3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shaun Davis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grpc
|
@@ -57,6 +57,7 @@ files:
|
|
57
57
|
- lib/etcdv3/etcdrpc/rpc_pb.rb
|
58
58
|
- lib/etcdv3/etcdrpc/rpc_services_pb.rb
|
59
59
|
- lib/etcdv3/kv.rb
|
60
|
+
- lib/etcdv3/maintenance.rb
|
60
61
|
- lib/etcdv3/protos/annotations.proto
|
61
62
|
- lib/etcdv3/protos/auth.proto
|
62
63
|
- lib/etcdv3/protos/descriptor.proto
|
@@ -68,6 +69,7 @@ files:
|
|
68
69
|
- spec/etcd_spec.rb
|
69
70
|
- spec/etcdv3/auth_spec.rb
|
70
71
|
- spec/etcdv3/kv_spec.rb
|
72
|
+
- spec/etcdv3/maintenance_spec.rb
|
71
73
|
- spec/helpers/test_instance.rb
|
72
74
|
- spec/spec_helper.rb
|
73
75
|
homepage: https://github.com/davissp14/etcdv3-ruby
|
@@ -90,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
92
|
version: '0'
|
91
93
|
requirements: []
|
92
94
|
rubyforge_project:
|
93
|
-
rubygems_version: 2.6.
|
95
|
+
rubygems_version: 2.6.8
|
94
96
|
signing_key:
|
95
97
|
specification_version: 4
|
96
98
|
summary: A Etcd client library for Version 3
|
@@ -98,5 +100,6 @@ test_files:
|
|
98
100
|
- spec/etcd_spec.rb
|
99
101
|
- spec/etcdv3/auth_spec.rb
|
100
102
|
- spec/etcdv3/kv_spec.rb
|
103
|
+
- spec/etcdv3/maintenance_spec.rb
|
101
104
|
- spec/helpers/test_instance.rb
|
102
105
|
- spec/spec_helper.rb
|