dapr 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.release-please-manifest.json +1 -1
- data/.version.txt +1 -1
- data/CHANGELOG.md +23 -0
- data/coverage/coverage.json +1 -1
- data/lib/dapr/client/lock.rb +14 -2
- data/lib/dapr/client/state.rb +70 -0
- data/lib/dapr/client.rb +2 -1
- data/lib/dapr/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cef0f3267e0f07b9ccedcfb29297c49cd9c5cbc5d16e556c72c82821c1ff4c8
|
4
|
+
data.tar.gz: 23d4d7a6e7b0aa1e9482c08eae87290deb7b23508820c88bcb31f1e34432dad9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6f5d917f97ad175316c3552f48b02e3600e585f9cc13dd38ec7f511f84004c6596edc9891e0e2d4ad84797be87b6d5a587093b79c81b83b1054bf7404aac96c
|
7
|
+
data.tar.gz: 6516a0a52f7538992c413d0fdf8e888124d5840e3f149bdd9247a191763256fdd4a4912037acadccd4bfd87d3b736de163af77f917fee3e5cedb2c1d81a5889e
|
data/.version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,28 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.4.0](https://github.com/rubyists/dapr-ruby-client/compare/v0.3.3...v0.4.0) (2024-10-23)
|
4
|
+
|
5
|
+
|
6
|
+
### ⚠ BREAKING CHANGES
|
7
|
+
|
8
|
+
* **state:** Adds state management component ([#74](https://github.com/rubyists/dapr-ruby-client/issues/74))
|
9
|
+
|
10
|
+
### Features
|
11
|
+
|
12
|
+
* **state:** Adds state management component ([#74](https://github.com/rubyists/dapr-ruby-client/issues/74)) ([2fc596d](https://github.com/rubyists/dapr-ruby-client/commit/2fc596dad1439c5d52a03bdf763d8b0d38aa9bab))
|
13
|
+
|
14
|
+
## [0.3.3](https://github.com/rubyists/dapr-ruby-client/compare/v0.3.2...v0.3.3) (2024-10-08)
|
15
|
+
|
16
|
+
|
17
|
+
### Features
|
18
|
+
|
19
|
+
* **grpc:** Update grpc to 1.66 in container ([#71](https://github.com/rubyists/dapr-ruby-client/issues/71)) ([da78331](https://github.com/rubyists/dapr-ruby-client/commit/da783315276b27c4a1b37996198021f415adf4cf))
|
20
|
+
|
21
|
+
|
22
|
+
### Bug Fixes
|
23
|
+
|
24
|
+
* **lock:** Updates lock/unlock to append _alpha1 ([#72](https://github.com/rubyists/dapr-ruby-client/issues/72)) ([847d091](https://github.com/rubyists/dapr-ruby-client/commit/847d0910265df8c37edf5d2af4eed0c0f6d4feb0))
|
25
|
+
|
3
26
|
## [0.3.2](https://github.com/rubyists/dapr-ruby-client/compare/v0.3.1...v0.3.2) (2024-07-19)
|
4
27
|
|
5
28
|
|
data/coverage/coverage.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"timestamp":
|
1
|
+
{"timestamp":1729718516,"command_name":"Unit Tests","files":[{"filename":"/home/bougyman/rubyists/dapr/lib/dapr.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,null,null,1,1,7,null,null,null,1,1,1,1,1,null,null]},"covered_strength":1.6,"covered_lines":10,"lines_of_code":10},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,1,1,1,null,1,1,null,1,1,1,1,1,1,null,1,4,null,1,1,null,null,1,11,null,null,1,1,null,null,1,14,null,null,null,1,1,null,1,5,null,null,1,1,1,1,null,1,null,null,1,1,null,null,null,null,null]},"covered_strength":1.8823529411764706,"covered_lines":34,"lines_of_code":34},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client/configuration.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,null,1,1,1,null,1,null,1,1,null,null,1,null,null,1,null,1,1,null,1,1,1,null,null,null,null,null,null,null,1,1,1,1,null,null,1,1,1,null,null,null,null,null]},"covered_strength":1.0,"covered_lines":21,"lines_of_code":21},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client/lock.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,null,1,1,1,null,1,null,1,1,null,null,1,null,null,1,null,1,1,null,null,null,null,null,null,1,6,6,null,null,null,null,null,null,1,6,6,null,null,null,1,6,6,5,5,null,null,1,null,null,null,1,4,4,4,null,3,3,null,null,1,null,null,1,18,null,null,null,null,null,1,6,null,null,null,null,null]},"covered_strength":3.085714285714286,"covered_lines":35,"lines_of_code":35},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/client/state.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,null,1,1,1,null,null,1,null,1,1,null,1,null,1,1,1,1,1,1,null,null,null,null,null,null,1,1,null,null,null,null,null,null,null,1,1,null,null,null,null,null,1,2,null,null,null,null,null,null,1,1,1,1,null,null,null,null,1,3,1,1,1,null,null,null,null,null]},"covered_strength":1.103448275862069,"covered_lines":29,"lines_of_code":29},{"filename":"/home/bougyman/rubyists/dapr/lib/dapr/version.rb","covered_percent":100.0,"coverage":{"lines":[null,null,1,1,null,1,null,null,null]},"covered_strength":1.0,"covered_lines":3,"lines_of_code":3}],"metrics":{"covered_percent":100.0,"covered_strength":1.8484848484848484,"covered_lines":132,"total_lines":132}}
|
data/lib/dapr/client/lock.rb
CHANGED
@@ -21,6 +21,11 @@ module Rubyists
|
|
21
21
|
UnlockRequest = ::Dapr::Proto::Runtime::V1::UnlockRequest
|
22
22
|
DEFAULT_STORE_NAME = 'locker'
|
23
23
|
|
24
|
+
# @param resource_id [String] The unique ID of the resource to lock
|
25
|
+
# @param store_name [String] The name of the Dapr lock store component to use
|
26
|
+
# @param ttl [Integer] The time-to-live for the lock in seconds
|
27
|
+
#
|
28
|
+
# @return [Lock] The lock object
|
24
29
|
def self.acquire(resource_id, store_name: DEFAULT_STORE_NAME, ttl: 10)
|
25
30
|
lock = new(store_name, resource_id)
|
26
31
|
lock.lock!(ttl:)
|
@@ -37,7 +42,7 @@ module Rubyists
|
|
37
42
|
|
38
43
|
# @param ttl [Integer] The time-to-live for the lock in seconds
|
39
44
|
def lock!(ttl: 10)
|
40
|
-
response = singleton.
|
45
|
+
response = singleton.try_lock_alpha1 lock_request
|
41
46
|
if response.success
|
42
47
|
logger.info('Acquired lock', store_name:, resource_id:, ttl:, lock_owner:)
|
43
48
|
return self
|
@@ -48,7 +53,7 @@ module Rubyists
|
|
48
53
|
end
|
49
54
|
|
50
55
|
def unlock!
|
51
|
-
response = singleton.
|
56
|
+
response = singleton.unlock_alpha1(UnlockRequest.new(store_name:, resource_id:, lock_owner:))
|
52
57
|
status = response.status
|
53
58
|
return true if status == :SUCCESS
|
54
59
|
|
@@ -62,6 +67,13 @@ module Rubyists
|
|
62
67
|
def lock_owner
|
63
68
|
@lock_owner ||= SecureRandom.uuid
|
64
69
|
end
|
70
|
+
|
71
|
+
# @param ttl [Integer] The time-to-live for the lock in seconds
|
72
|
+
#
|
73
|
+
# @return [LockRequest] The lock request
|
74
|
+
def lock_request(ttl: 10)
|
75
|
+
@lock_request ||= LockRequest.new(store_name:, resource_id:, lock_owner:, expiry_in_seconds: ttl)
|
76
|
+
end
|
65
77
|
end
|
66
78
|
end
|
67
79
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../client'
|
4
|
+
|
5
|
+
module Rubyists
|
6
|
+
module Dapr
|
7
|
+
module Client
|
8
|
+
# The State class is a client for the Dapr State Management Building block
|
9
|
+
# Info here: https://docs.dapr.io/developing-applications/building-blocks/state-management/
|
10
|
+
class State
|
11
|
+
# Include the client module
|
12
|
+
include Client
|
13
|
+
include SemanticLogger::Loggable
|
14
|
+
|
15
|
+
attr_reader :store_name
|
16
|
+
|
17
|
+
Empty = Google::Protobuf::Empty
|
18
|
+
Runtime = Client::Runtime
|
19
|
+
GetBulkStateResponse = Runtime::GetBulkStateResponse
|
20
|
+
GetStateRequest = Runtime::GetBulkStateRequest
|
21
|
+
SaveStateRequest = Runtime::SaveStateRequest
|
22
|
+
DEFAULT_STORE_NAME = 'statestore'
|
23
|
+
|
24
|
+
# @param keys [Array<String>] keys to retrieve from the state store
|
25
|
+
# @param store_name [String] name of the State Management component, defaults to 'dapr-statestore'
|
26
|
+
# @param metadata [Hash] metadata to include
|
27
|
+
#
|
28
|
+
# @return [GetBulkStateResponse] The response from the Dapr State Management component
|
29
|
+
def self.get(*keys, store_name: DEFAULT_STORE_NAME, metadata: {})
|
30
|
+
new(store_name).get(keys, metadata:)
|
31
|
+
end
|
32
|
+
|
33
|
+
# @param states [Hash] states to set in the state store, key/value pairs
|
34
|
+
# @param store_name [String] name of the State Management component, defaults to 'dapr-statestore'
|
35
|
+
# @param metadata [Hash] metadata to include
|
36
|
+
#
|
37
|
+
# @return [Empty] The response from the Dapr State Management component
|
38
|
+
def self.set(states, store_name: DEFAULT_STORE_NAME, metadata: {})
|
39
|
+
new(store_name).set(states, metadata:)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Initialize the State Management client
|
43
|
+
#
|
44
|
+
# @param store_name [String] name of the Dapr Configuration component to use
|
45
|
+
def initialize(store_name)
|
46
|
+
@store_name = store_name
|
47
|
+
end
|
48
|
+
|
49
|
+
# @param keys [Array<String>] keys to retrieve from the state store
|
50
|
+
# @param metadata [Hash] metadata to include
|
51
|
+
#
|
52
|
+
# @return [Array<BulkStateItem>] Array of items returned by the state store
|
53
|
+
def get(keys, metadata: {})
|
54
|
+
logger.debug('Getting state', keys:, store_name:, metadata:)
|
55
|
+
response = singleton.get_bulk_state GetStateRequest.new(store_name:, keys:, metadata:)
|
56
|
+
response.items
|
57
|
+
end
|
58
|
+
|
59
|
+
# @param states [Hash] states to set (key/values in the state store)
|
60
|
+
# @param metadata [Hash] metadata to include
|
61
|
+
def set(states, metadata: {})
|
62
|
+
states = states.map { |key, value| { key:, value:, metadata: } }
|
63
|
+
request = SaveStateRequest.new(store_name:, states:)
|
64
|
+
logger.debug('Setting state', states:, store_name:)
|
65
|
+
singleton.save_state request
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/dapr/client.rb
CHANGED
@@ -11,9 +11,10 @@ module Rubyists
|
|
11
11
|
# The namespace for the Dapr client
|
12
12
|
module Client
|
13
13
|
include SemanticLogger::Loggable
|
14
|
+
Runtime = ::Dapr::Proto::Runtime::V1
|
14
15
|
DAPR_PORT = ENV.fetch('DAPR_GRPC_PORT', nil)
|
15
16
|
DAPR_URI = ENV.fetch('DAPR_GRPC_HOST', 'localhost')
|
16
|
-
DAPR_STUB =
|
17
|
+
DAPR_STUB = Runtime::Dapr::Stub
|
17
18
|
|
18
19
|
def self.client(dapr_port: DAPR_PORT, dapr_uri: DAPR_URI)
|
19
20
|
return DummyClient.new if dapr_port.nil?
|
data/lib/dapr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tj (bougyman) Vanderpoel
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-10-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: dapr-ruby
|
@@ -63,6 +63,7 @@ files:
|
|
63
63
|
- lib/dapr/client/configuration.rb
|
64
64
|
- lib/dapr/client/lock.rb
|
65
65
|
- lib/dapr/client/publisher.rb
|
66
|
+
- lib/dapr/client/state.rb
|
66
67
|
- lib/dapr/service.rb
|
67
68
|
- lib/dapr/service/subscriber.rb
|
68
69
|
- lib/dapr/version.rb
|