etcdv3 0.11.4 → 0.11.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/etcdv3/auth.rb +1 -1
- data/lib/etcdv3/kv.rb +1 -1
- data/lib/etcdv3/lease.rb +1 -1
- data/lib/etcdv3/lock.rb +3 -3
- data/lib/etcdv3/maintenance.rb +1 -1
- data/lib/etcdv3/namespace/kv.rb +1 -1
- data/lib/etcdv3/namespace/lock.rb +3 -3
- data/lib/etcdv3/namespace/watch.rb +1 -1
- data/lib/etcdv3/version.rb +1 -1
- data/lib/etcdv3/watch.rb +1 -1
- data/spec/etcdv3/lock_spec.rb +19 -5
- data/spec/etcdv3/namespace/lock_spec.rb +26 -7
- data/spec/helpers/connections.rb +8 -0
- data/spec/helpers/metadata_passthrough.rb +21 -0
- data/spec/helpers/test_instance.rb +2 -0
- data/spec/spec_helper.rb +6 -4
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f63c528f864012711cf608ca262674d7efd89caa6ac67674bb23e007df2920ab
|
4
|
+
data.tar.gz: 7a6c37da695eb6759a206ca5bfbd953ac647b17c7c19918596e7a6db86d065bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b6b51ca358da66d57cd16358146f54f9c220a925f43fea326aa764887c647de76c40b860a05005d48f7bd9528fe239e985be39ceb0c886052147459bdc6e98f
|
7
|
+
data.tar.gz: fcf41864b7e54c74d8788a2d94688255880f193a6ad3527262f3a0b0512301693fb5cb90b72db9a52f0abcb9fad1541427dfda1970a9348225ec9579d651345d
|
data/lib/etcdv3/auth.rb
CHANGED
@@ -10,7 +10,7 @@ class Etcdv3
|
|
10
10
|
}
|
11
11
|
|
12
12
|
def initialize(hostname, credentials, timeout, metadata = {})
|
13
|
-
@stub = Etcdserverpb::Auth::Stub.new(hostname, credentials)
|
13
|
+
@stub = Etcdserverpb::Auth::Stub.new(hostname, credentials, **metadata.delete(:client_options) || {})
|
14
14
|
@timeout = timeout
|
15
15
|
@metadata = metadata
|
16
16
|
end
|
data/lib/etcdv3/kv.rb
CHANGED
@@ -5,7 +5,7 @@ class Etcdv3
|
|
5
5
|
include GRPC::Core::TimeConsts
|
6
6
|
|
7
7
|
def initialize(hostname, credentials, timeout, metadata={})
|
8
|
-
@stub = Etcdserverpb::KV::Stub.new(hostname, credentials)
|
8
|
+
@stub = Etcdserverpb::KV::Stub.new(hostname, credentials, **metadata.delete(:client_options) || {})
|
9
9
|
@timeout = timeout
|
10
10
|
@metadata = metadata
|
11
11
|
end
|
data/lib/etcdv3/lease.rb
CHANGED
@@ -3,7 +3,7 @@ class Etcdv3
|
|
3
3
|
include GRPC::Core::TimeConsts
|
4
4
|
|
5
5
|
def initialize(hostname, credentials, timeout, metadata={})
|
6
|
-
@stub = Etcdserverpb::Lease::Stub.new(hostname, credentials)
|
6
|
+
@stub = Etcdserverpb::Lease::Stub.new(hostname, credentials, **metadata.delete(:client_options) || {})
|
7
7
|
@timeout = timeout
|
8
8
|
@metadata = metadata
|
9
9
|
end
|
data/lib/etcdv3/lock.rb
CHANGED
@@ -3,19 +3,19 @@ class Etcdv3
|
|
3
3
|
include GRPC::Core::TimeConsts
|
4
4
|
|
5
5
|
def initialize(hostname, credentials, timeout, metadata = {})
|
6
|
-
@stub = V3lockpb::Lock::Stub.new(hostname, credentials)
|
6
|
+
@stub = V3lockpb::Lock::Stub.new(hostname, credentials, **metadata.delete(:client_options) || {})
|
7
7
|
@timeout = timeout
|
8
8
|
@metadata = metadata
|
9
9
|
end
|
10
10
|
|
11
11
|
def lock(name, lease_id, timeout: nil)
|
12
12
|
request = V3lockpb::LockRequest.new(name: name, lease: lease_id)
|
13
|
-
@stub.lock(request, deadline: deadline(timeout))
|
13
|
+
@stub.lock(request, metadata: @metadata, deadline: deadline(timeout))
|
14
14
|
end
|
15
15
|
|
16
16
|
def unlock(key, timeout: nil)
|
17
17
|
request = V3lockpb::UnlockRequest.new(key: key)
|
18
|
-
@stub.unlock(request, deadline: deadline(timeout))
|
18
|
+
@stub.unlock(request, metadata: @metadata, deadline: deadline(timeout))
|
19
19
|
end
|
20
20
|
|
21
21
|
private
|
data/lib/etcdv3/maintenance.rb
CHANGED
@@ -13,7 +13,7 @@ class Etcdv3
|
|
13
13
|
}
|
14
14
|
|
15
15
|
def initialize(hostname, credentials, _timeout, metadata = {})
|
16
|
-
@stub = Etcdserverpb::Maintenance::Stub.new(hostname, credentials)
|
16
|
+
@stub = Etcdserverpb::Maintenance::Stub.new(hostname, credentials, **metadata.delete(:client_options) || {})
|
17
17
|
@metadata = metadata
|
18
18
|
end
|
19
19
|
|
data/lib/etcdv3/namespace/kv.rb
CHANGED
@@ -5,7 +5,7 @@ class Etcdv3::Namespace
|
|
5
5
|
include GRPC::Core::TimeConsts
|
6
6
|
|
7
7
|
def initialize(hostname, credentials, timeout, namespace, metadata={})
|
8
|
-
@stub = Etcdserverpb::KV::Stub.new(hostname, credentials)
|
8
|
+
@stub = Etcdserverpb::KV::Stub.new(hostname, credentials, **metadata.delete(:client_options) || {})
|
9
9
|
@timeout = timeout
|
10
10
|
@namespace = namespace
|
11
11
|
@metadata = metadata
|
@@ -4,7 +4,7 @@ class Etcdv3::Namespace
|
|
4
4
|
include Etcdv3::Namespace::Utilities
|
5
5
|
|
6
6
|
def initialize(hostname, credentials, timeout, namespace, metadata = {})
|
7
|
-
@stub = V3lockpb::Lock::Stub.new(hostname, credentials)
|
7
|
+
@stub = V3lockpb::Lock::Stub.new(hostname, credentials, **metadata.delete(:client_options) || {})
|
8
8
|
@timeout = timeout
|
9
9
|
@namespace = namespace
|
10
10
|
@metadata = metadata
|
@@ -13,14 +13,14 @@ class Etcdv3::Namespace
|
|
13
13
|
def lock(name, lease_id, timeout: nil)
|
14
14
|
name = prepend_prefix(@namespace, name)
|
15
15
|
request = V3lockpb::LockRequest.new(name: name, lease: lease_id)
|
16
|
-
resp = @stub.lock(request, deadline: deadline(timeout))
|
16
|
+
resp = @stub.lock(request, metadata: @metadata, deadline: deadline(timeout))
|
17
17
|
strip_prefix_from_lock(@namespace, resp)
|
18
18
|
end
|
19
19
|
|
20
20
|
def unlock(key, timeout: nil)
|
21
21
|
key = prepend_prefix(@namespace, key)
|
22
22
|
request = V3lockpb::UnlockRequest.new(key: key)
|
23
|
-
@stub.unlock(request, deadline: deadline(timeout))
|
23
|
+
@stub.unlock(request, metadata: @metadata, deadline: deadline(timeout))
|
24
24
|
end
|
25
25
|
|
26
26
|
private
|
@@ -4,7 +4,7 @@ class Etcdv3::Namespace
|
|
4
4
|
include Etcdv3::Namespace::Utilities
|
5
5
|
|
6
6
|
def initialize(hostname, credentials, timeout, namespace, metadata = {})
|
7
|
-
@stub = Etcdserverpb::Watch::Stub.new(hostname, credentials)
|
7
|
+
@stub = Etcdserverpb::Watch::Stub.new(hostname, credentials, **metadata.delete(:client_options) || {})
|
8
8
|
@timeout = timeout
|
9
9
|
@namespace = namespace
|
10
10
|
@metadata = metadata
|
data/lib/etcdv3/version.rb
CHANGED
data/lib/etcdv3/watch.rb
CHANGED
@@ -3,7 +3,7 @@ class Etcdv3
|
|
3
3
|
include GRPC::Core::TimeConsts
|
4
4
|
|
5
5
|
def initialize(hostname, credentials, timeout, metadata = {})
|
6
|
-
@stub = Etcdserverpb::Watch::Stub.new(hostname, credentials)
|
6
|
+
@stub = Etcdserverpb::Watch::Stub.new(hostname, credentials, **metadata.delete(:client_options) || {})
|
7
7
|
@timeout = timeout
|
8
8
|
@metadata = metadata
|
9
9
|
end
|
data/spec/etcdv3/lock_spec.rb
CHANGED
@@ -10,14 +10,28 @@ unless $instance.version < Gem::Version.new("3.2.0")
|
|
10
10
|
#it_should_behave_like "a method with a GRPC timeout", described_class, :lock, :lock, 'foo'
|
11
11
|
|
12
12
|
describe '#lock' do
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
it 'returns a response' do
|
14
|
+
lease_id = lease_stub.lease_grant(10)['ID']
|
15
|
+
|
16
|
+
expect(stub.lock('example1', lease_id)).to be_an_instance_of(V3lockpb::LockResponse)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'passes metadata correctly' do
|
20
|
+
lease_id = lease_stub.lease_grant(10)['ID']
|
21
|
+
stub = expect_metadata_passthrough(described_class, :lock, :lock)
|
22
|
+
stub.lock('example2', lease_id)
|
23
|
+
end
|
16
24
|
end
|
17
25
|
|
18
26
|
describe '#unlock' do
|
19
|
-
|
20
|
-
|
27
|
+
it 'returns a response' do
|
28
|
+
expect(stub.unlock('example3')).to be_an_instance_of(V3lockpb::UnlockResponse)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'passes metadata correctly' do
|
32
|
+
stub = expect_metadata_passthrough(described_class, :unlock, :unlock)
|
33
|
+
stub.unlock('example4')
|
34
|
+
end
|
21
35
|
end
|
22
36
|
end
|
23
37
|
end
|
@@ -2,22 +2,41 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
# Locking is not implemented in etcd v3.1.X
|
4
4
|
unless $instance.version < Gem::Version.new("3.2.0")
|
5
|
-
describe Etcdv3::Lock do
|
5
|
+
describe Etcdv3::Namespace::Lock do
|
6
6
|
let(:stub) { local_namespace_stub(Etcdv3::Namespace::Lock, 1, '/namespace/') }
|
7
7
|
let(:lease_stub) { local_stub(Etcdv3::Lease, 1) }
|
8
8
|
|
9
|
-
|
9
|
+
# NOTE: this was running duplicate tests against Etcdv3::Lock before, but it
|
10
|
+
# doesn't work with Etcdv3::Namespace::Lock
|
11
|
+
#
|
12
|
+
# it_should_behave_like "a method with a GRPC timeout", described_class, :unlock, :unlock, 'foo'
|
13
|
+
|
10
14
|
# it_should_behave_like "a method with a GRPC timeout", described_class, :lock, :lock, 'foo'
|
11
15
|
|
12
16
|
describe '#lock' do
|
13
|
-
|
14
|
-
|
15
|
-
|
17
|
+
it 'returns a response' do
|
18
|
+
lease_id = lease_stub.lease_grant(10)['ID']
|
19
|
+
expect(stub.lock('example1', lease_id)).to(
|
20
|
+
be_an_instance_of(V3lockpb::LockResponse)
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'passes metadata correctly' do
|
25
|
+
lease_id = lease_stub.lease_grant(10)['ID']
|
26
|
+
stub = expect_metadata_passthrough_namespace(described_class, :lock, :lock, '/namespace/')
|
27
|
+
stub.lock('example2', lease_id)
|
28
|
+
end
|
16
29
|
end
|
17
30
|
|
18
31
|
describe '#unlock' do
|
19
|
-
|
20
|
-
|
32
|
+
it 'returns a response' do
|
33
|
+
expect(stub.unlock('example3')).to be_an_instance_of(V3lockpb::UnlockResponse)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'passes metadata correctly' do
|
37
|
+
stub = expect_metadata_passthrough_namespace(described_class, :unlock, :unlock, '/namespace/')
|
38
|
+
stub.unlock('example4')
|
39
|
+
end
|
21
40
|
end
|
22
41
|
end
|
23
42
|
end
|
data/spec/helpers/connections.rb
CHANGED
@@ -21,10 +21,18 @@ module Helpers
|
|
21
21
|
interface.new(local_url, :this_channel_is_insecure, timeout, {})
|
22
22
|
end
|
23
23
|
|
24
|
+
def local_stub_with_metadata(interface, timeout: nil, metadata: {})
|
25
|
+
interface.new(local_url, :this_channel_is_insecure, timeout, metadata)
|
26
|
+
end
|
27
|
+
|
24
28
|
def local_namespace_stub(interface, timeout=nil, namespace)
|
25
29
|
interface.new(local_url, :this_channel_is_insecure, timeout, namespace, {})
|
26
30
|
end
|
27
31
|
|
32
|
+
def local_namespace_stub_with_metadata(interface, timeout: nil, namespace:, metadata: {})
|
33
|
+
interface.new(local_url, :this_channel_is_insecure, timeout, namespace, metadata)
|
34
|
+
end
|
35
|
+
|
28
36
|
def local_url
|
29
37
|
"127.0.0.1:#{port}"
|
30
38
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Helpers
|
2
|
+
module MetadataPassthrough
|
3
|
+
include Connections
|
4
|
+
|
5
|
+
def expect_metadata_passthrough(stub_class, method_name, expectation_target)
|
6
|
+
metadata = { user: "foo", password: "bar" }
|
7
|
+
handler = local_stub_with_metadata(stub_class, metadata: metadata, timeout: 1)
|
8
|
+
inner_stub = handler.instance_variable_get("@stub")
|
9
|
+
expect(inner_stub).to receive(expectation_target).with(anything, hash_including(metadata: metadata)).and_call_original
|
10
|
+
return handler
|
11
|
+
end
|
12
|
+
|
13
|
+
def expect_metadata_passthrough_namespace(stub_class, method_name, expectation_target, namespace)
|
14
|
+
metadata = { user: "foo", password: "bar" }
|
15
|
+
handler = local_namespace_stub_with_metadata(stub_class, metadata: metadata, timeout: 1, namespace: namespace)
|
16
|
+
inner_stub = handler.instance_variable_get("@stub")
|
17
|
+
expect(inner_stub).to receive(expectation_target).with(anything, hash_including(metadata: metadata)).and_call_original
|
18
|
+
return handler
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -3,10 +3,12 @@ require 'tmpdir'
|
|
3
3
|
require 'socket'
|
4
4
|
require 'timeout'
|
5
5
|
require 'helpers/connections'
|
6
|
+
require 'helpers/metadata_passthrough'
|
6
7
|
|
7
8
|
module Helpers
|
8
9
|
class TestInstance
|
9
10
|
include Helpers::Connections
|
11
|
+
include Helpers::MetadataPassthrough
|
10
12
|
|
11
13
|
class InvalidVersionException < StandardError; end
|
12
14
|
class PortInUseException < StandardError; end
|
data/spec/spec_helper.rb
CHANGED
@@ -3,20 +3,22 @@ $LOAD_PATH.unshift File.expand_path('./helpers', __FILE__)
|
|
3
3
|
$LOAD_PATH.unshift File.expand_path('./namespace', __FILE__)
|
4
4
|
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
require 'simplecov'
|
7
|
+
require 'codecov'
|
8
|
+
SimpleCov.start
|
9
|
+
SimpleCov.formatter = SimpleCov::Formatter::Codecov
|
10
10
|
|
11
11
|
require 'etcdv3'
|
12
12
|
require 'helpers/test_instance'
|
13
13
|
require 'helpers/connections'
|
14
|
+
require 'helpers/metadata_passthrough'
|
14
15
|
require 'helpers/shared_examples_for_timeout'
|
15
16
|
|
16
17
|
$instance = Helpers::TestInstance.new
|
17
18
|
|
18
19
|
RSpec.configure do |config|
|
19
20
|
config.include(Helpers::Connections)
|
21
|
+
config.include(Helpers::MetadataPassthrough)
|
20
22
|
|
21
23
|
config.expect_with :rspec do |expectations|
|
22
24
|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
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.11.
|
4
|
+
version: 0.11.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shaun Davis
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grpc
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- spec/etcdv3/watch_spec.rb
|
127
127
|
- spec/etcdv3_spec.rb
|
128
128
|
- spec/helpers/connections.rb
|
129
|
+
- spec/helpers/metadata_passthrough.rb
|
129
130
|
- spec/helpers/shared_examples_for_timeout.rb
|
130
131
|
- spec/helpers/test_instance.rb
|
131
132
|
- spec/spec_helper.rb
|
@@ -133,7 +134,7 @@ homepage: https://github.com/davissp14/etcdv3-ruby
|
|
133
134
|
licenses:
|
134
135
|
- MIT
|
135
136
|
metadata: {}
|
136
|
-
post_install_message:
|
137
|
+
post_install_message:
|
137
138
|
rdoc_options: []
|
138
139
|
require_paths:
|
139
140
|
- lib
|
@@ -148,8 +149,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
149
|
- !ruby/object:Gem::Version
|
149
150
|
version: '0'
|
150
151
|
requirements: []
|
151
|
-
rubygems_version: 3.
|
152
|
-
signing_key:
|
152
|
+
rubygems_version: 3.3.7
|
153
|
+
signing_key:
|
153
154
|
specification_version: 4
|
154
155
|
summary: A Etcd client library for Version 3
|
155
156
|
test_files:
|
@@ -166,6 +167,7 @@ test_files:
|
|
166
167
|
- spec/etcdv3/watch_spec.rb
|
167
168
|
- spec/etcdv3_spec.rb
|
168
169
|
- spec/helpers/connections.rb
|
170
|
+
- spec/helpers/metadata_passthrough.rb
|
169
171
|
- spec/helpers/shared_examples_for_timeout.rb
|
170
172
|
- spec/helpers/test_instance.rb
|
171
173
|
- spec/spec_helper.rb
|