kessel-sdk 1.7.0 → 1.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ebc4d755f68e6022b70351cb5320d50150f99909d2c41abff3dc356f99d543e0
4
- data.tar.gz: e3023bf1171a3ae11021393dc16640cdbe9c28fdff55120f3717dfd6985b1e05
3
+ metadata.gz: 81373567779a9dd8c588272da54dfe57497d254b0b031ec64ea4d4ae39847063
4
+ data.tar.gz: fde2a1a46df1ef25745e579e43f0bb1685f5ee49938eb3a868aa2254550f9563
5
5
  SHA512:
6
- metadata.gz: 787acd87560a9a3e563ef6abb46eba11ea94a14d418798a8124d2f63c768a561321434ec0291652147377f8f53dc8092a46a0ac202d16d8366516aa9bf76c844
7
- data.tar.gz: 1a8aa9c31fdef9a382eadf8fcfa9bd0cf096549e4119c1c2256cdca85659a4cff814fe7ad718ec108bfaeb5dcb4f7589866c378e66fd5564a12be97999f74320
6
+ metadata.gz: d3c7dc9fdef0bc16cbe30a34be7e6f6a191eaec26dd91bdec21044443b3ad7537a5b185231c8a7c67ec49d3b37a052dd412364efb5000ca01e51fa8cd0423212
7
+ data.tar.gz: e13000fdbee258e3a0f1d6689eea603f3c690a9b44b1f9840b0b74ac0d919668fc6075b260a852c95b3bbfb94f8d5c6de0fc69a884366a86f49fd5a3652514f1
data/README.md CHANGED
@@ -221,10 +221,15 @@ rake install_local
221
221
 
222
222
  The `examples/` directory contains working examples:
223
223
 
224
+ - `auth.rb` - OAuth 2.0 authentication
224
225
  - `check.rb` - Permission checking
225
- - `report_resource.rb` - Reporting resource state
226
- - `delete_resource.rb` - Deleting resources
226
+ - `check_bulk.rb` - Bulk permission checks
227
227
  - `check_for_update.rb` - Checking for updates
228
+ - `check_for_update_bulk.rb` - Bulk strongly consistent update checks
229
+ - `delete_resource.rb` - Deleting resources
230
+ - `fetch_workspaces.rb` - Fetching workspaces
231
+ - `list_workspaces.rb` - Listing workspaces
232
+ - `report_resource.rb` - Reporting resource state
228
233
  - `streamed_list_objects.rb` - Streaming resource lists
229
234
 
230
235
  Run examples:
@@ -269,12 +274,17 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/). Version n
269
274
 
270
275
  1. **Update the Version**
271
276
  ```bash
272
- # Edit lib/kessel/version.rb
273
- # Update the VERSION constant to the new version number
277
+ # Edit lib/kessel/version.rb and update the VERSION constant
274
278
  vim lib/kessel/version.rb
275
279
  ```
276
280
 
277
- 2. **Update Dependencies**
281
+ 2. **Set the VERSION environment variable**
282
+ ```bash
283
+ export VERSION=$(ruby -e "require_relative './lib/kessel/version.rb'; puts Kessel::Inventory::VERSION")
284
+ echo "Releasing version: v${VERSION}"
285
+ ```
286
+
287
+ 3. **Update Dependencies**
278
288
  ```bash
279
289
  # Generate gRPC code from Kessel Inventory API
280
290
  buf generate
@@ -282,7 +292,7 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/). Version n
282
292
  bundle install
283
293
  ```
284
294
 
285
- 3. **Run Quality Checks**
295
+ 4. **Run Quality Checks**
286
296
  ```bash
287
297
  # Run the full test suite
288
298
  bundle exec rspec
@@ -297,15 +307,14 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/). Version n
297
307
  rake install_local
298
308
  ```
299
309
 
300
- 4. **Commit Changes**
310
+ 5. **Commit Changes**
301
311
  ```bash
302
- export VERSION=$(ruby -e "require_relative './lib/kessel/version.rb'; puts Kessel::Inventory::VERSION")
303
312
  git add lib/kessel/version.rb Gemfile.lock
304
313
  git commit -m "Release version ${VERSION}"
305
314
  git push origin main # or git push upstream main
306
315
  ```
307
316
 
308
- 5. **Build and Release the Gem**
317
+ 6. **Build and Release the Gem**
309
318
  ```bash
310
319
  # Build the gem
311
320
  gem build kessel-sdk.gemspec
@@ -314,21 +323,27 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/). Version n
314
323
  gem push kessel-sdk-${VERSION}.gem
315
324
  ```
316
325
 
317
- 6. **Tag the Release**
326
+ 7. **Tag the Release**
318
327
  ```bash
319
328
  # Create and push a git tag
320
329
  git tag -a v${VERSION} -m "Release version ${VERSION}"
321
330
  git push origin v${VERSION} # or git push upstream v${VERSION}
322
331
  ```
323
332
 
324
- 7. **Create a new release in github**
325
- - Go to the [GitHub Releases page](https://github.com/project-kessel/kessel-sdk-ruby/releases)
326
- - Click "Create a new release"
327
- - Select the tag you just created
328
- - Add release notes describing the changes
329
- - Publish the release
333
+ 8. **Create GitHub Release**
334
+ ```bash
335
+ gh release create v${VERSION} --title "v${VERSION}" --generate-notes
336
+ ```
337
+
338
+ Or manually:
339
+
340
+ - Go to the [GitHub Releases page](https://github.com/project-kessel/kessel-sdk-ruby/releases)
341
+ - Click "Create a new release"
342
+ - Select the tag you just created
343
+ - Add release notes describing the changes
344
+ - Publish the release
330
345
 
331
- 8. **Clean Up**
346
+ 9. **Clean Up**
332
347
  ```bash
333
348
  # Remove the built gem file
334
349
  rake clean
@@ -352,7 +367,7 @@ rake install
352
367
  rake release
353
368
  ```
354
369
 
355
- **Note**: The `rake release` command automates steps 5-6 above but requires proper git and RubyGems credentials to be configured.
370
+ **Note**: The `rake release` command automates steps 6-7 above but requires proper git and RubyGems credentials to be configured.
356
371
 
357
372
  ## Contributing
358
373
 
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: kessel/inventory/v1beta2/check_for_update_bulk_request.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'buf/validate/validate_pb'
8
+ require 'kessel/inventory/v1beta2/check_bulk_request_pb'
9
+
10
+
11
+ descriptor_data = "\n<kessel/inventory/v1beta2/check_for_update_bulk_request.proto\x12\x18kessel.inventory.v1beta2\x1a\x1b\x62uf/validate/validate.proto\x1a\x31kessel/inventory/v1beta2/check_bulk_request.proto\"n\n\x19\x43heckForUpdateBulkRequest\x12Q\n\x05items\x18\x01 \x03(\x0b\x32..kessel.inventory.v1beta2.CheckBulkRequestItemB\x0b\xbaH\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x05itemsBr\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
12
+
13
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
14
+ pool.add_serialized_file(descriptor_data)
15
+
16
+ module Kessel
17
+ module Inventory
18
+ module V1beta2
19
+ CheckForUpdateBulkRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.CheckForUpdateBulkRequest").msgclass
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: kessel/inventory/v1beta2/check_for_update_bulk_response.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'kessel/inventory/v1beta2/check_bulk_request_pb'
8
+ require 'kessel/inventory/v1beta2/consistency_token_pb'
9
+ require 'kessel/inventory/v1beta2/allowed_pb'
10
+ require 'buf/validate/validate_pb'
11
+ require 'google/rpc/status_pb'
12
+
13
+
14
+ descriptor_data = "\n=kessel/inventory/v1beta2/check_for_update_bulk_response.proto\x12\x18kessel.inventory.v1beta2\x1a\x31kessel/inventory/v1beta2/check_bulk_request.proto\x1a\x30kessel/inventory/v1beta2/consistency_token.proto\x1a&kessel/inventory/v1beta2/allowed.proto\x1a\x1b\x62uf/validate/validate.proto\x1a\x17google/rpc/status.proto\"]\n\x1e\x43heckForUpdateBulkResponseItem\x12;\n\x07\x61llowed\x18\x01 \x01(\x0e\x32!.kessel.inventory.v1beta2.AllowedR\x07\x61llowed\"\xf2\x01\n\x1e\x43heckForUpdateBulkResponsePair\x12H\n\x07request\x18\x01 \x01(\x0b\x32..kessel.inventory.v1beta2.CheckBulkRequestItemR\x07request\x12N\n\x04item\x18\x02 \x01(\x0b\x32\x38.kessel.inventory.v1beta2.CheckForUpdateBulkResponseItemH\x00R\x04item\x12*\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x12.google.rpc.StatusH\x00R\x05\x65rrorB\n\n\x08response\"\xcf\x01\n\x1a\x43heckForUpdateBulkResponse\x12X\n\x05pairs\x18\x01 \x03(\x0b\x32\x38.kessel.inventory.v1beta2.CheckForUpdateBulkResponsePairB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x05pairs\x12W\n\x11\x63onsistency_token\x18\x02 \x01(\x0b\x32*.kessel.inventory.v1beta2.ConsistencyTokenR\x10\x63onsistencyTokenBr\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
15
+
16
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
17
+ pool.add_serialized_file(descriptor_data)
18
+
19
+ module Kessel
20
+ module Inventory
21
+ module V1beta2
22
+ CheckForUpdateBulkResponseItem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.CheckForUpdateBulkResponseItem").msgclass
23
+ CheckForUpdateBulkResponsePair = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.CheckForUpdateBulkResponsePair").msgclass
24
+ CheckForUpdateBulkResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.CheckForUpdateBulkResponse").msgclass
25
+ end
26
+ end
27
+ end
@@ -21,9 +21,11 @@ require 'kessel/inventory/v1beta2/check_self_request_pb'
21
21
  require 'kessel/inventory/v1beta2/check_self_response_pb'
22
22
  require 'kessel/inventory/v1beta2/check_self_bulk_request_pb'
23
23
  require 'kessel/inventory/v1beta2/check_self_bulk_response_pb'
24
+ require 'kessel/inventory/v1beta2/check_for_update_bulk_request_pb'
25
+ require 'kessel/inventory/v1beta2/check_for_update_bulk_response_pb'
24
26
 
25
27
 
26
- descriptor_data = "\n0kessel/inventory/v1beta2/inventory_service.proto\x12\x18kessel.inventory.v1beta2\x1a\x1cgoogle/api/annotations.proto\x1a,kessel/inventory/v1beta2/check_request.proto\x1a-kessel/inventory/v1beta2/check_response.proto\x1a\x37kessel/inventory/v1beta2/check_for_update_request.proto\x1a\x38kessel/inventory/v1beta2/check_for_update_response.proto\x1a\x36kessel/inventory/v1beta2/report_resource_request.proto\x1a\x37kessel/inventory/v1beta2/report_resource_response.proto\x1a\x36kessel/inventory/v1beta2/delete_resource_request.proto\x1a\x37kessel/inventory/v1beta2/delete_resource_response.proto\x1a<kessel/inventory/v1beta2/streamed_list_objects_request.proto\x1a=kessel/inventory/v1beta2/streamed_list_objects_response.proto\x1a\x31kessel/inventory/v1beta2/check_bulk_request.proto\x1a\x32kessel/inventory/v1beta2/check_bulk_response.proto\x1a\x31kessel/inventory/v1beta2/check_self_request.proto\x1a\x32kessel/inventory/v1beta2/check_self_response.proto\x1a\x36kessel/inventory/v1beta2/check_self_bulk_request.proto\x1a\x37kessel/inventory/v1beta2/check_self_bulk_response.proto2\xc7\t\n\x16KesselInventoryService\x12~\n\x05\x43heck\x12&.kessel.inventory.v1beta2.CheckRequest\x1a\'.kessel.inventory.v1beta2.CheckResponse\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/api/kessel/v1beta2/check:\x01*\x12\x8e\x01\n\tCheckSelf\x12*.kessel.inventory.v1beta2.CheckSelfRequest\x1a+.kessel.inventory.v1beta2.CheckSelfResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/checkself:\x01*\x12\xa2\x01\n\x0e\x43heckForUpdate\x12/.kessel.inventory.v1beta2.CheckForUpdateRequest\x1a\x30.kessel.inventory.v1beta2.CheckForUpdateResponse\"-\x82\xd3\xe4\x93\x02\'\"\"/api/kessel/v1beta2/checkforupdate:\x01*\x12\x8e\x01\n\tCheckBulk\x12*.kessel.inventory.v1beta2.CheckBulkRequest\x1a+.kessel.inventory.v1beta2.CheckBulkResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/checkbulk:\x01*\x12\x9e\x01\n\rCheckSelfBulk\x12..kessel.inventory.v1beta2.CheckSelfBulkRequest\x1a/.kessel.inventory.v1beta2.CheckSelfBulkResponse\",\x82\xd3\xe4\x93\x02&\"!/api/kessel/v1beta2/checkselfbulk:\x01*\x12\x9d\x01\n\x0eReportResource\x12/.kessel.inventory.v1beta2.ReportResourceRequest\x1a\x30.kessel.inventory.v1beta2.ReportResourceResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/resources:\x01*\x12\x9d\x01\n\x0e\x44\x65leteResource\x12/.kessel.inventory.v1beta2.DeleteResourceRequest\x1a\x30.kessel.inventory.v1beta2.DeleteResourceResponse\"(\x82\xd3\xe4\x93\x02\"*\x1d/api/kessel/v1beta2/resources:\x01*\x12\x84\x01\n\x13StreamedListObjects\x12\x34.kessel.inventory.v1beta2.StreamedListObjectsRequest\x1a\x35.kessel.inventory.v1beta2.StreamedListObjectsResponse0\x01\x42r\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
28
+ descriptor_data = "\n0kessel/inventory/v1beta2/inventory_service.proto\x12\x18kessel.inventory.v1beta2\x1a\x1cgoogle/api/annotations.proto\x1a,kessel/inventory/v1beta2/check_request.proto\x1a-kessel/inventory/v1beta2/check_response.proto\x1a\x37kessel/inventory/v1beta2/check_for_update_request.proto\x1a\x38kessel/inventory/v1beta2/check_for_update_response.proto\x1a\x36kessel/inventory/v1beta2/report_resource_request.proto\x1a\x37kessel/inventory/v1beta2/report_resource_response.proto\x1a\x36kessel/inventory/v1beta2/delete_resource_request.proto\x1a\x37kessel/inventory/v1beta2/delete_resource_response.proto\x1a<kessel/inventory/v1beta2/streamed_list_objects_request.proto\x1a=kessel/inventory/v1beta2/streamed_list_objects_response.proto\x1a\x31kessel/inventory/v1beta2/check_bulk_request.proto\x1a\x32kessel/inventory/v1beta2/check_bulk_response.proto\x1a\x31kessel/inventory/v1beta2/check_self_request.proto\x1a\x32kessel/inventory/v1beta2/check_self_response.proto\x1a\x36kessel/inventory/v1beta2/check_self_bulk_request.proto\x1a\x37kessel/inventory/v1beta2/check_self_bulk_response.proto\x1a<kessel/inventory/v1beta2/check_for_update_bulk_request.proto\x1a=kessel/inventory/v1beta2/check_for_update_bulk_response.proto2\xfc\n\n\x16KesselInventoryService\x12~\n\x05\x43heck\x12&.kessel.inventory.v1beta2.CheckRequest\x1a\'.kessel.inventory.v1beta2.CheckResponse\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/api/kessel/v1beta2/check:\x01*\x12\x8e\x01\n\tCheckSelf\x12*.kessel.inventory.v1beta2.CheckSelfRequest\x1a+.kessel.inventory.v1beta2.CheckSelfResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/checkself:\x01*\x12\xa2\x01\n\x0e\x43heckForUpdate\x12/.kessel.inventory.v1beta2.CheckForUpdateRequest\x1a\x30.kessel.inventory.v1beta2.CheckForUpdateResponse\"-\x82\xd3\xe4\x93\x02\'\"\"/api/kessel/v1beta2/checkforupdate:\x01*\x12\xb2\x01\n\x12\x43heckForUpdateBulk\x12\x33.kessel.inventory.v1beta2.CheckForUpdateBulkRequest\x1a\x34.kessel.inventory.v1beta2.CheckForUpdateBulkResponse\"1\x82\xd3\xe4\x93\x02+\"&/api/kessel/v1beta2/checkforupdatebulk:\x01*\x12\x8e\x01\n\tCheckBulk\x12*.kessel.inventory.v1beta2.CheckBulkRequest\x1a+.kessel.inventory.v1beta2.CheckBulkResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/checkbulk:\x01*\x12\x9e\x01\n\rCheckSelfBulk\x12..kessel.inventory.v1beta2.CheckSelfBulkRequest\x1a/.kessel.inventory.v1beta2.CheckSelfBulkResponse\",\x82\xd3\xe4\x93\x02&\"!/api/kessel/v1beta2/checkselfbulk:\x01*\x12\x9d\x01\n\x0eReportResource\x12/.kessel.inventory.v1beta2.ReportResourceRequest\x1a\x30.kessel.inventory.v1beta2.ReportResourceResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/resources:\x01*\x12\x9d\x01\n\x0e\x44\x65leteResource\x12/.kessel.inventory.v1beta2.DeleteResourceRequest\x1a\x30.kessel.inventory.v1beta2.DeleteResourceResponse\"(\x82\xd3\xe4\x93\x02\"*\x1d/api/kessel/v1beta2/resources:\x01*\x12\x84\x01\n\x13StreamedListObjects\x12\x34.kessel.inventory.v1beta2.StreamedListObjectsRequest\x1a\x35.kessel.inventory.v1beta2.StreamedListObjectsResponse0\x01\x42r\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
27
29
 
28
30
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
29
31
  pool.add_serialized_file(descriptor_data)
@@ -48,6 +48,14 @@ module Kessel
48
48
  # It is intended to be used just prior to sensitive operation (e.g., update, delete)
49
49
  # which depend on the current state of the relationship.
50
50
  rpc :CheckForUpdate, ::Kessel::Inventory::V1beta2::CheckForUpdateRequest, ::Kessel::Inventory::V1beta2::CheckForUpdateResponse
51
+ # Performs bulk strongly consistent "check for update" permission checks.
52
+ #
53
+ # This API is more efficient than making individual CheckForUpdate calls when verifying
54
+ # update permissions for multiple resource-subject-relation combinations. Each item
55
+ # is evaluated with strong consistency (same semantics as CheckForUpdate).
56
+ #
57
+ # Common use cases include batch pre-authorization before bulk update or delete operations.
58
+ rpc :CheckForUpdateBulk, ::Kessel::Inventory::V1beta2::CheckForUpdateBulkRequest, ::Kessel::Inventory::V1beta2::CheckForUpdateBulkResponse
51
59
  # Performs bulk permission checks for multiple resource-subject-relation combinations.
52
60
  #
53
61
  # This API is more efficient than making individual Check calls when verifying permissions
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kessel
4
4
  module Inventory
5
- VERSION = '1.7.0'
5
+ VERSION = '1.8.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kessel-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Project Kessel
@@ -238,6 +238,8 @@ files:
238
238
  - lib/kessel/inventory/v1beta2/allowed_pb.rb
239
239
  - lib/kessel/inventory/v1beta2/check_bulk_request_pb.rb
240
240
  - lib/kessel/inventory/v1beta2/check_bulk_response_pb.rb
241
+ - lib/kessel/inventory/v1beta2/check_for_update_bulk_request_pb.rb
242
+ - lib/kessel/inventory/v1beta2/check_for_update_bulk_response_pb.rb
241
243
  - lib/kessel/inventory/v1beta2/check_for_update_request_pb.rb
242
244
  - lib/kessel/inventory/v1beta2/check_for_update_response_pb.rb
243
245
  - lib/kessel/inventory/v1beta2/check_request_pb.rb