volcano-sdk 0.32.6 → 0.33.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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/lib/volcano/client.rb +3 -2
  4. data/lib/volcano/generated/lib/volcano-generated/api/auth_configuration_api.rb +6 -6
  5. data/lib/volcano/generated/lib/volcano-generated/api/databases_api.rb +4 -4
  6. data/lib/volcano/generated/lib/volcano-generated/api/frontends_api.rb +2 -2
  7. data/lib/volcano/generated/lib/volcano-generated/api/logs_api.rb +6 -6
  8. data/lib/volcano/generated/lib/volcano-generated/api/sandboxes_api.rb +1433 -0
  9. data/lib/volcano/generated/lib/volcano-generated/models/auth_config.rb +1 -1
  10. data/lib/volcano/generated/lib/volcano-generated/models/create_sandbox_session_request.rb +294 -0
  11. data/lib/volcano/generated/lib/volcano-generated/models/create_sandbox_template_request.rb +247 -0
  12. data/lib/volcano/generated/lib/volcano-generated/models/project.rb +3 -3
  13. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_signup.rb +1 -1
  14. data/lib/volcano/generated/lib/volcano-generated/models/project_config_custom_domain.rb +1 -1
  15. data/lib/volcano/generated/lib/volcano-generated/models/project_config_email_template.rb +2 -2
  16. data/lib/volcano/generated/lib/volcano-generated/models/project_config_email_templates.rb +1 -1
  17. data/lib/volcano/generated/lib/volcano-generated/models/project_config_hosted_pages.rb +1 -1
  18. data/lib/volcano/generated/lib/volcano-generated/models/project_config_project.rb +1 -1
  19. data/lib/volcano/generated/lib/volcano-generated/models/publish_sandbox_preset_request.rb +268 -0
  20. data/lib/volcano/generated/lib/volcano-generated/models/realtime_plan_limits.rb +1 -1
  21. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_access.rb +216 -0
  22. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_access_request.rb +221 -0
  23. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_capacity.rb +199 -0
  24. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_capacity_list.rb +166 -0
  25. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_command_request.rb +251 -0
  26. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_command_result.rb +294 -0
  27. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_deployment.rb +242 -0
  28. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_deployment_page.rb +192 -0
  29. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_execution_request.rb +329 -0
  30. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_execution_result.rb +381 -0
  31. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_file_read_request.rb +182 -0
  32. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_file_result.rb +164 -0
  33. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_file_write_request.rb +217 -0
  34. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_pagination.rb +199 -0
  35. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_preset.rb +294 -0
  36. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_preset_list.rb +166 -0
  37. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_session.rb +407 -0
  38. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_session_page.rb +192 -0
  39. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_subject_grant_request.rb +164 -0
  40. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_template.rb +321 -0
  41. data/lib/volcano/generated/lib/volcano-generated/models/sandbox_template_page.rb +192 -0
  42. data/lib/volcano/generated/lib/volcano-generated/models/update_auth_config_request.rb +1 -1
  43. data/lib/volcano/generated/lib/volcano-generated/models/update_sandbox_template_request.rb +175 -0
  44. data/lib/volcano/generated/lib/volcano-generated.rb +26 -0
  45. data/lib/volcano/generated_transport.rb +1 -0
  46. data/lib/volcano/generated_transport_sandbox.rb +69 -0
  47. data/lib/volcano/sandbox_files.rb +37 -0
  48. data/lib/volcano/sandbox_models.rb +24 -0
  49. data/lib/volcano/sandbox_request.rb +92 -0
  50. data/lib/volcano/sandbox_response.rb +74 -0
  51. data/lib/volcano/sandbox_session.rb +78 -0
  52. data/lib/volcano/sandboxes.rb +67 -0
  53. data/lib/volcano/version.rb +1 -1
  54. data/lib/volcano.rb +7 -0
  55. data/sig/client.rbs +1 -0
  56. data/sig/sandboxes.rbs +83 -0
  57. metadata +50 -2
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Volcano
4
+ # Create isolated sessions or execute a command to completion.
5
+ class Sandboxes
6
+ def initialize(client, transport)
7
+ @requests = SandboxRequests.new(client, transport)
8
+ end
9
+
10
+ def presets
11
+ response = @requests.call(SandboxRequest.new(operation: :list_sandbox_presets))
12
+ SandboxResponse.array(Transport.json_object(response)['data']).map { |value| SandboxResponse.preset(value) }
13
+ end
14
+
15
+ def inspect = '#<Volcano::Sandboxes>'
16
+
17
+ def create( # rubocop:disable Metrics/ParameterLists -- Preserve explicit typed facade keywords.
18
+ project_id, region:, preset: nil, sandbox_id: nil, memory_mb: nil,
19
+ max_duration_seconds: nil, idle_timeout_seconds: nil, request_id: nil
20
+ )
21
+ options = { region: region, preset: preset, sandbox_id: sandbox_id, memory_mb: memory_mb,
22
+ max_duration_seconds: max_duration_seconds, idle_timeout_seconds: idle_timeout_seconds,
23
+ request_id: request_id }.compact
24
+ body = SandboxRequests.selector(options).merge(options.slice(:max_duration_seconds, :idle_timeout_seconds))
25
+ request = SandboxRequest.new(operation: :create_sandbox_session,
26
+ resource_id: SandboxRequests.identifier(project_id), body: body,
27
+ request_id: SandboxRequests.request_id(options))
28
+ requests = @requests.service_scope
29
+ SandboxSession.new(requests, requests.call(request, status: 201))
30
+ end
31
+
32
+ def get(session_id)
33
+ request = SandboxRequest.new(operation: :get_sandbox_session, resource_id: SandboxRequests.identifier(session_id))
34
+ SandboxSession.new(@requests, @requests.call(request))
35
+ end
36
+
37
+ def exec( # rubocop:disable Metrics/ParameterLists -- Preserve explicit typed facade keywords.
38
+ project_id, command, region:, preset: nil, sandbox_id: nil, memory_mb: nil,
39
+ timeout_seconds: 60, environment: nil, request_id: nil
40
+ )
41
+ options = { region: region, preset: preset, sandbox_id: sandbox_id, memory_mb: memory_mb,
42
+ timeout_seconds: timeout_seconds, environment: environment, request_id: request_id }.compact
43
+ body = SandboxRequests.selector(options).merge(SandboxRequests.command(command, options))
44
+ request = SandboxRequest.new(operation: :execute_sandbox, resource_id: SandboxRequests.identifier(project_id),
45
+ body: body, request_id: SandboxRequests.request_id(options),
46
+ timeout: SandboxResponse.integer(options.fetch(:timeout_seconds, 60)) + 120)
47
+ SandboxResponse.execution(@requests.call(request))
48
+ end
49
+
50
+ def grant(session_id, auth_user_id, expires_at:)
51
+ request = SandboxRequest.new(operation: :grant_sandbox_session,
52
+ resource_id: SandboxRequests.identifier(session_id),
53
+ subject_id: SandboxRequests.identifier(auth_user_id),
54
+ body: { expires_at: SandboxRequests.expiry(expires_at) })
55
+ @requests.call(request, status: 204)
56
+ nil
57
+ end
58
+
59
+ def revoke(session_id, auth_user_id)
60
+ request = SandboxRequest.new(operation: :revoke_sandbox_session,
61
+ resource_id: SandboxRequests.identifier(session_id),
62
+ subject_id: SandboxRequests.identifier(auth_user_id))
63
+ @requests.call(request, status: 204)
64
+ nil
65
+ end
66
+ end
67
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Volcano
4
- VERSION = '0.32.6'
4
+ VERSION = '0.33.0'
5
5
  end
data/lib/volcano.rb CHANGED
@@ -64,10 +64,17 @@ require_relative 'volcano/lock_response'
64
64
  require_relative 'volcano/locks'
65
65
  require_relative 'volcano/realtime/protocol'
66
66
  require_relative 'volcano/realtime'
67
+ require_relative 'volcano/sandbox_models'
68
+ require_relative 'volcano/sandbox_request'
69
+ require_relative 'volcano/sandbox_response'
70
+ require_relative 'volcano/sandbox_files'
71
+ require_relative 'volcano/sandbox_session'
72
+ require_relative 'volcano/sandboxes'
67
73
  require_relative 'volcano/client'
68
74
 
69
75
  # Public namespace for the Volcano Ruby SDK.
70
76
  module Volcano
77
+ private_constant :SandboxRequest, :SandboxRequests, :SandboxResponse
71
78
  private_constant :AuthRefresh, :AuthSignOut, :AuthProfile, :AuthProfileFields, :AuthUpdateUser, :AuthEmailChange,
72
79
  :AuthSessions, :AuthSessionConstruction,
73
80
  :GeneratedTransport, :LockAutoRenewal, :LockLeaseClock, :LockRenewer,
data/sig/client.rbs CHANGED
@@ -1,5 +1,6 @@
1
1
  module Volcano
2
2
  class Client
3
+ attr_reader sandboxes: Sandboxes
3
4
  attr_reader auth: Auth
4
5
  attr_reader functions: Functions
5
6
  attr_reader durable: Durable
data/sig/sandboxes.rbs ADDED
@@ -0,0 +1,83 @@
1
+ module Volcano
2
+ type sandbox_selector = { region: String, ?preset: String, ?sandbox_id: String, ?memory_mb: Integer }
3
+ type sandbox_create_options = { region: String, ?preset: String, ?sandbox_id: String, ?memory_mb: Integer, ?max_duration_seconds: Integer, ?idle_timeout_seconds: Integer, ?request_id: String }
4
+ type sandbox_exec_options = { region: String, ?preset: String, ?sandbox_id: String, ?memory_mb: Integer, ?timeout_seconds: Integer, ?environment: Hash[String, String], ?request_id: String }
5
+ type sandbox_command_options = { ?timeout_seconds: Integer, ?environment: Hash[String, String], ?request_id: String }
6
+
7
+ class SandboxCommandResult < Data
8
+ attr_reader stdout: String
9
+ attr_reader stderr: String
10
+ attr_reader exit_code: Integer
11
+ attr_reader timed_out: bool
12
+ attr_reader stdout_truncated: bool
13
+ attr_reader stderr_truncated: bool
14
+ def self.new: (stdout: String, stderr: String, exit_code: Integer, timed_out: bool, stdout_truncated: bool, stderr_truncated: bool) -> SandboxCommandResult
15
+ def initialize: (stdout: String, stderr: String, exit_code: Integer, timed_out: bool, stdout_truncated: bool, stderr_truncated: bool) -> void
16
+ def to_h: () -> { stdout: String, stderr: String, exit_code: Integer, timed_out: bool, stdout_truncated: bool, stderr_truncated: bool }
17
+ end
18
+
19
+ class SandboxExecutionResult < Data
20
+ attr_reader stdout: String
21
+ attr_reader stderr: String
22
+ attr_reader exit_code: Integer
23
+ attr_reader timed_out: bool
24
+ attr_reader stdout_truncated: bool
25
+ attr_reader stderr_truncated: bool
26
+ attr_reader session_id: String
27
+ attr_reader region: String
28
+ attr_reader duration_ms: Integer
29
+ def self.new: (stdout: String, stderr: String, exit_code: Integer, timed_out: bool, stdout_truncated: bool, stderr_truncated: bool, session_id: String, region: String, duration_ms: Integer) -> SandboxExecutionResult
30
+ def initialize: (stdout: String, stderr: String, exit_code: Integer, timed_out: bool, stdout_truncated: bool, stderr_truncated: bool, session_id: String, region: String, duration_ms: Integer) -> void
31
+ def to_h: () -> { stdout: String, stderr: String, exit_code: Integer, timed_out: bool, stdout_truncated: bool, stderr_truncated: bool, session_id: String, region: String, duration_ms: Integer }
32
+ end
33
+
34
+ class SandboxPreset < Data
35
+ attr_reader id: String
36
+ attr_reader memory_mb: Integer
37
+ attr_reader regions: Array[String]
38
+ def self.new: (id: String, memory_mb: Integer, regions: Array[String]) -> SandboxPreset
39
+ def initialize: (id: String, memory_mb: Integer, regions: Array[String]) -> void
40
+ def to_h: () -> { id: String, memory_mb: Integer, regions: Array[String] }
41
+ end
42
+
43
+ class SandboxAccess
44
+ attr_reader url: String
45
+ attr_reader token: String
46
+ attr_reader expires_at: Time
47
+ def initialize: (url: String, token: String, expires_at: Time) -> void
48
+ def inspect: () -> String
49
+ end
50
+
51
+ class Sandboxes
52
+ def inspect: () -> String
53
+ def presets: () -> Array[SandboxPreset]
54
+ def create: (String project_id, region: String, ?preset: String?, ?sandbox_id: String?, ?memory_mb: Integer?, ?max_duration_seconds: Integer?, ?idle_timeout_seconds: Integer?, ?request_id: String?) -> SandboxSession
55
+ def get: (String session_id) -> SandboxSession
56
+ def exec: (String project_id, String command, region: String, ?preset: String?, ?sandbox_id: String?, ?memory_mb: Integer?, ?timeout_seconds: Integer, ?environment: Hash[String, String]?, ?request_id: String?) -> SandboxExecutionResult
57
+ def grant: (String session_id, String auth_user_id, expires_at: (Time | String)) -> nil
58
+ def revoke: (String session_id, String auth_user_id) -> nil
59
+ end
60
+
61
+ class SandboxSession
62
+ def inspect: () -> String
63
+ attr_reader id: String
64
+ attr_reader project_id: String
65
+ attr_reader region: String
66
+ attr_reader state: String
67
+ attr_reader expires_at: Time
68
+ attr_reader files: SandboxFiles
69
+ def refresh: () -> SandboxSession
70
+ def suspend: () -> SandboxSession
71
+ def resume: () -> SandboxSession
72
+ def terminate: () -> SandboxSession
73
+ def exec: (String command, ?timeout_seconds: Integer, ?environment: Hash[String, String]?, ?request_id: String?) -> SandboxCommandResult
74
+ def access: (Integer port) -> SandboxAccess
75
+ def use: [T] () { (SandboxSession) -> T } -> T
76
+ end
77
+
78
+ class SandboxFiles
79
+ def inspect: () -> String
80
+ def read: (String path) -> String
81
+ def write: (String path, String data) -> nil
82
+ end
83
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: volcano-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.32.6
4
+ version: 0.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kong
@@ -65,6 +65,20 @@ dependencies:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0.2'
68
+ - !ruby/object:Gem::Dependency
69
+ name: io-event
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.16'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.16'
68
82
  - !ruby/object:Gem::Dependency
69
83
  name: json
70
84
  requirement: !ruby/object:Gem::Requirement
@@ -184,6 +198,7 @@ files:
184
198
  - lib/volcano/generated/lib/volcano-generated/api/project_imports_api.rb
185
199
  - lib/volcano/generated/lib/volcano-generated/api/projects_api.rb
186
200
  - lib/volcano/generated/lib/volcano-generated/api/realtime_api.rb
201
+ - lib/volcano/generated/lib/volcano-generated/api/sandboxes_api.rb
187
202
  - lib/volcano/generated/lib/volcano-generated/api/service_keys_api.rb
188
203
  - lib/volcano/generated/lib/volcano-generated/api/storage_admin_api.rb
189
204
  - lib/volcano/generated/lib/volcano-generated/api/storage_buckets_api.rb
@@ -271,6 +286,8 @@ files:
271
286
  - lib/volcano/generated/lib/volcano-generated/models/create_function_scheduler_request.rb
272
287
  - lib/volcano/generated/lib/volcano-generated/models/create_o_auth_config_request.rb
273
288
  - lib/volcano/generated/lib/volcano-generated/models/create_project_request.rb
289
+ - lib/volcano/generated/lib/volcano-generated/models/create_sandbox_session_request.rb
290
+ - lib/volcano/generated/lib/volcano-generated/models/create_sandbox_template_request.rb
274
291
  - lib/volcano/generated/lib/volcano-generated/models/create_service_key_request.rb
275
292
  - lib/volcano/generated/lib/volcano-generated/models/create_storage_bucket_request.rb
276
293
  - lib/volcano/generated/lib/volcano-generated/models/create_storage_policy_request.rb
@@ -501,6 +518,7 @@ files:
501
518
  - lib/volcano/generated/lib/volcano-generated/models/project_source_export_skip.rb
502
519
  - lib/volcano/generated/lib/volcano-generated/models/project_source_export_state.rb
503
520
  - lib/volcano/generated/lib/volcano-generated/models/project_usage_response.rb
521
+ - lib/volcano/generated/lib/volcano-generated/models/publish_sandbox_preset_request.rb
504
522
  - lib/volcano/generated/lib/volcano-generated/models/realtime_config.rb
505
523
  - lib/volcano/generated/lib/volcano-generated/models/realtime_plan_limits.rb
506
524
  - lib/volcano/generated/lib/volcano-generated/models/realtime_stats.rb
@@ -509,6 +527,27 @@ files:
509
527
  - lib/volcano/generated/lib/volcano-generated/models/reset_database_password200_response.rb
510
528
  - lib/volcano/generated/lib/volcano-generated/models/resolve_function_response.rb
511
529
  - lib/volcano/generated/lib/volcano-generated/models/resource_reference.rb
530
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_access.rb
531
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_access_request.rb
532
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_capacity.rb
533
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_capacity_list.rb
534
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_command_request.rb
535
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_command_result.rb
536
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_deployment.rb
537
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_deployment_page.rb
538
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_execution_request.rb
539
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_execution_result.rb
540
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_file_read_request.rb
541
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_file_result.rb
542
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_file_write_request.rb
543
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_pagination.rb
544
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_preset.rb
545
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_preset_list.rb
546
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_session.rb
547
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_session_page.rb
548
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_subject_grant_request.rb
549
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_template.rb
550
+ - lib/volcano/generated/lib/volcano-generated/models/sandbox_template_page.rb
512
551
  - lib/volcano/generated/lib/volcano-generated/models/schedule_request.rb
513
552
  - lib/volcano/generated/lib/volcano-generated/models/service_key.rb
514
553
  - lib/volcano/generated/lib/volcano-generated/models/set_project_git_production_branch_request.rb
@@ -537,6 +576,7 @@ files:
537
576
  - lib/volcano/generated/lib/volcano-generated/models/update_project_git_deploy_settings_request.rb
538
577
  - lib/volcano/generated/lib/volcano-generated/models/update_project_request.rb
539
578
  - lib/volcano/generated/lib/volcano-generated/models/update_realtime_config_request.rb
579
+ - lib/volcano/generated/lib/volcano-generated/models/update_sandbox_template_request.rb
540
580
  - lib/volcano/generated/lib/volcano-generated/models/update_storage_bucket_request.rb
541
581
  - lib/volcano/generated/lib/volcano-generated/models/update_variable_request.rb
542
582
  - lib/volcano/generated/lib/volcano-generated/models/upload_session_part.rb
@@ -555,6 +595,7 @@ files:
555
595
  - lib/volcano/generated_transport_functions.rb
556
596
  - lib/volcano/generated_transport_logs.rb
557
597
  - lib/volcano/generated_transport_oauth.rb
598
+ - lib/volcano/generated_transport_sandbox.rb
558
599
  - lib/volcano/generated_transport_sessions.rb
559
600
  - lib/volcano/generated_transport_storage.rb
560
601
  - lib/volcano/generated_transport_support.rb
@@ -596,6 +637,12 @@ files:
596
637
  - lib/volcano/realtime/protocol_recovery_position.rb
597
638
  - lib/volcano/realtime/reconnect.rb
598
639
  - lib/volcano/redaction.rb
640
+ - lib/volcano/sandbox_files.rb
641
+ - lib/volcano/sandbox_models.rb
642
+ - lib/volcano/sandbox_request.rb
643
+ - lib/volcano/sandbox_response.rb
644
+ - lib/volcano/sandbox_session.rb
645
+ - lib/volcano/sandboxes.rb
599
646
  - lib/volcano/session.rb
600
647
  - lib/volcano/session_credentials.rb
601
648
  - lib/volcano/session_operations.rb
@@ -637,6 +684,7 @@ files:
637
684
  - sig/realtime.rbs
638
685
  - sig/realtime_contexts.rbs
639
686
  - sig/realtime_postgres_change.rbs
687
+ - sig/sandboxes.rbs
640
688
  - sig/session.rbs
641
689
  - sig/sign_up_result.rbs
642
690
  - sig/storage.rbs
@@ -657,7 +705,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
657
705
  requirements:
658
706
  - - ">="
659
707
  - !ruby/object:Gem::Version
660
- version: '3.2'
708
+ version: '3.3'
661
709
  required_rubygems_version: !ruby/object:Gem::Requirement
662
710
  requirements:
663
711
  - - ">="