dapr 0.3.2 → 0.4.0
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/.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
|