Autonomic.ExecutionDomain behaviour (Autonomic v0.1.0)

Copy Markdown View Source

Backend-neutral isolation boundary for an untrusted episode worker.

Implementations MUST treat epoch as fencing data and reject lifecycle or exec operations addressed to a stale domain generation.

Summary

Types

signal()

@type signal() :: :sigterm | :sigkill | :sigint | :sigtstp | :sigcont

Callbacks

checkpoint(t)

@callback checkpoint(Autonomic.ExecutionDomain.Domain.t()) ::
  {:ok, Autonomic.ExecutionDomain.CheckpointRef.t()} | {:error, term()}

create(t)

@callback create(Autonomic.ExecutionDomain.Spec.t()) ::
  {:ok, Autonomic.ExecutionDomain.Domain.t()} | {:error, term()}

destroy(t)

@callback destroy(Autonomic.ExecutionDomain.Domain.t()) :: :ok | {:error, term()}

exec(t, t)

inspect_domain(t)

@callback inspect_domain(Autonomic.ExecutionDomain.Domain.t()) ::
  {:ok, map()} | {:error, term()}

restore(t)

signal(t, signal)

@callback signal(Autonomic.ExecutionDomain.Domain.t(), signal()) :: :ok | {:error, term()}