Class: Nightona::Nightona
- Inherits:
-
Object
- Object
- Nightona::Nightona
- Includes:
- Instrumentation
- Defined in:
- lib/nightona/nightona.rb
Instance Attribute Summary collapse
- #api_client ⇒ NightonaApiClient readonly
- #config ⇒ Nightona::Config readonly
- #object_storage_api ⇒ NightonaApiClient::ObjectStorageApi readonly
- #sandbox_api ⇒ NightonaApiClient::SandboxApi readonly
- #snapshot ⇒ Nightona::SnapshotService readonly
- #snapshots_api ⇒ NightonaApiClient::SnapshotsApi readonly
- #volume ⇒ Nightona::VolumeService readonly
Instance Method Summary collapse
-
#close ⇒ void
Shuts down OTel providers, flushing any pending telemetry data.
-
#create(params = nil, on_snapshot_create_logs: nil) ⇒ Nightona::Sandbox
Creates a sandbox with the specified parameters.
-
#delete(sandbox) ⇒ void
Deletes a Sandbox.
-
#get(id) ⇒ Nightona::Sandbox
Gets a Sandbox by its ID.
-
#initialize(config = Config.new) ⇒ Nightona
constructor
A new instance of Nightona.
-
#list(query = nil) ⇒ Enumerator<Nightona::Sandbox>
Iterates over Sandboxes matching the given query.
-
#start(sandbox, timeout = Sandbox::DEFAULT_TIMEOUT) ⇒ void
Starts a Sandbox and waits for it to be ready.
-
#stop(sandbox, timeout = Sandbox::DEFAULT_TIMEOUT) ⇒ void
Stops a Sandbox and waits for it to be stopped.
Methods included from Instrumentation
Constructor Details
#initialize(config = Config.new) ⇒ Nightona
Returns a new instance of Nightona.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/nightona/nightona.rb', line 35 def initialize(config = Config.new) @config = config ensure_access_token_defined otel_enabled = config.otel_enabled || config._experimental&.dig('otel_enabled') || config.read_env('NIGHTONA_OTEL_ENABLED') == 'true' || config.read_env('NIGHTONA_EXPERIMENTAL_OTEL_ENABLED') == 'true' @otel_state = (::Nightona.init_otel(Sdk::VERSION) if otel_enabled) @api_client = build_api_client @sandbox_api = NightonaApiClient::SandboxApi.new(api_client) @config_api = NightonaApiClient::ConfigApi.new(api_client) @volume = VolumeService.new(NightonaApiClient::VolumesApi.new(api_client), otel_state:) @object_storage_api = NightonaApiClient::ObjectStorageApi.new(api_client) @snapshots_api = NightonaApiClient::SnapshotsApi.new(api_client) @snapshot = SnapshotService.new(snapshots_api:, object_storage_api:, default_region_id: config.target, otel_state:) end |
Instance Attribute Details
#api_client ⇒ NightonaApiClient (readonly)
17 18 19 |
# File 'lib/nightona/nightona.rb', line 17 def api_client @api_client end |
#config ⇒ Nightona::Config (readonly)
14 15 16 |
# File 'lib/nightona/nightona.rb', line 14 def config @config end |
#object_storage_api ⇒ NightonaApiClient::ObjectStorageApi (readonly)
26 27 28 |
# File 'lib/nightona/nightona.rb', line 26 def object_storage_api @object_storage_api end |
#sandbox_api ⇒ NightonaApiClient::SandboxApi (readonly)
20 21 22 |
# File 'lib/nightona/nightona.rb', line 20 def sandbox_api @sandbox_api end |
#snapshot ⇒ Nightona::SnapshotService (readonly)
32 33 34 |
# File 'lib/nightona/nightona.rb', line 32 def snapshot @snapshot end |
#snapshots_api ⇒ NightonaApiClient::SnapshotsApi (readonly)
29 30 31 |
# File 'lib/nightona/nightona.rb', line 29 def snapshots_api @snapshots_api end |
#volume ⇒ Nightona::VolumeService (readonly)
23 24 25 |
# File 'lib/nightona/nightona.rb', line 23 def volume @volume end |
Instance Method Details
#close ⇒ void
This method returns an undefined value.
Shuts down OTel providers, flushing any pending telemetry data.
58 59 60 61 |
# File 'lib/nightona/nightona.rb', line 58 def close ::Nightona.shutdown_otel(@otel_state) @otel_state = nil end |
#create(params = nil, on_snapshot_create_logs: nil) ⇒ Nightona::Sandbox
Creates a sandbox with the specified parameters
68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/nightona/nightona.rb', line 68 def create(params = nil, on_snapshot_create_logs: nil) if params.nil? params = CreateSandboxFromSnapshotParams.new(language: CodeLanguage::PYTHON) elsif params.language.nil? params.language = CodeLanguage::PYTHON end unless CodeLanguage::ALL.include?(params.language.to_s.to_sym) raise ArgumentError, "Invalid #{CODE_TOOLBOX_LANGUAGE_LABEL}: #{params.language}. Supported languages: #{CodeLanguage::ALL.join(', ')}" end _create(params, on_snapshot_create_logs:) end |
#delete(sandbox) ⇒ void
This method returns an undefined value.
Deletes a Sandbox.
87 |
# File 'lib/nightona/nightona.rb', line 87 def delete(sandbox) = sandbox.delete |
#get(id) ⇒ Nightona::Sandbox
Gets a Sandbox by its ID.
93 94 95 96 |
# File 'lib/nightona/nightona.rb', line 93 def get(id) sandbox_dto = sandbox_api.get_sandbox(id) to_sandbox(sandbox_dto:) end |
#list(query = nil) ⇒ Enumerator<Nightona::Sandbox>
Iterates over Sandboxes matching the given query.
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/nightona/nightona.rb', line 108 def list(query = nil) q = query || ListSandboxesQuery.new Enumerator.new do |yielder| cursor = nil first_page = true while first_page || cursor first_page = false response = fetch_sandbox_page(q, cursor) response.items.each do |sandbox_dto| yielder << to_sandbox(sandbox_dto: sandbox_dto) end cursor = response.next_cursor break if cursor.nil? || (cursor.respond_to?(:empty?) && cursor.empty?) end end end |
#start(sandbox, timeout = Sandbox::DEFAULT_TIMEOUT) ⇒ void
This method returns an undefined value.
Starts a Sandbox and waits for it to be ready.
131 |
# File 'lib/nightona/nightona.rb', line 131 def start(sandbox, timeout = Sandbox::DEFAULT_TIMEOUT) = sandbox.start(timeout) |
#stop(sandbox, timeout = Sandbox::DEFAULT_TIMEOUT) ⇒ void
This method returns an undefined value.
Stops a Sandbox and waits for it to be stopped.
138 |
# File 'lib/nightona/nightona.rb', line 138 def stop(sandbox, timeout = Sandbox::DEFAULT_TIMEOUT) = sandbox.stop(timeout) |