Class: ActionAgent::SandboxProvisionJob
- Inherits:
-
ApplicationJob
- Object
- ActiveJob::Base
- ApplicationJob
- ActionAgent::SandboxProvisionJob
- Defined in:
- app/jobs/action_agent/sandbox_provision_job.rb
Instance Method Summary collapse
-
#perform(sandbox_session_id) ⇒ Object
Provision a Cloud Run sandbox for the session Each sandbox is an instance of the ActiveAgents application running in sandbox mode.
Instance Method Details
#perform(sandbox_session_id) ⇒ Object
Provision a Cloud Run sandbox for the session Each sandbox is an instance of the ActiveAgents application running in sandbox mode
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/jobs/action_agent/sandbox_provision_job.rb', line 9 def perform(sandbox_session_id) sandbox = SandboxSession.find(sandbox_session_id) return if sandbox.ready? || sandbox.expired? # In development/test, simulate provisioning if Rails.env.development? || Rails.env.test? simulate_provisioning(sandbox) return end # Hand off to whichever backend this install registered — the engine # ships only the in-memory one, so a real container/job comes from the # host app's backend (see ActionAgent.sandbox_backends). result = SandboxOrchestrator.new.create_sandbox(sandbox) sandbox.mark_ready!( cloud_run_url: result[:url], cloud_run_job_id: result[:sandbox_id] ) # Broadcast status update broadcast_sandbox_update(sandbox) rescue StandardError => e Rails.logger.error("Sandbox provision failed: #{e.}") sandbox.update!(status: :failed) broadcast_sandbox_update(sandbox) end |