Documentation
¶
Index ¶
- Constants
- func DeleteAppTransitive(ctx context.Context, client *entityserver.Client, log *slog.Logger, ...) error
- type AddonsServer
- func (s *AddonsServer) CreateInstance(ctx context.Context, state *app_v1alpha.AddonsCreateInstance) error
- func (s *AddonsServer) DeleteInstance(ctx context.Context, state *app_v1alpha.AddonsDeleteInstance) error
- func (s *AddonsServer) ListInstances(ctx context.Context, state *app_v1alpha.AddonsListInstances) error
- func (s *AddonsServer) RotateCredential(ctx context.Context, state *app_v1alpha.AddonsRotateCredential) error
- type AppInfo
- func (a *AppInfo) AppInfo(ctx context.Context, state *app_v1alpha.AppStatusAppInfo) error
- func (r *AppInfo) CancelRun(ctx context.Context, state *app_v1alpha.RunsCancelRun) error
- func (r *AppInfo) CancelRunEntity(ctx context.Context, runID string) (bool, error)
- func (r *AppInfo) CreateRun(ctx context.Context, state *app_v1alpha.RunsCreateRun) error
- func (r *AppInfo) CreateRunEntity(ctx context.Context, app, taskName string, command []string, tty bool) (entity.Id, string, error)
- func (r *AppInfo) DeleteEnvVar(ctx context.Context, state *app_v1alpha.CrudDeleteEnvVar) error
- func (r *AppInfo) Destroy(ctx context.Context, state *app_v1alpha.CrudDestroy) error
- func (r *AppInfo) GetConfiguration(ctx context.Context, state *app_v1alpha.CrudGetConfiguration) error
- func (r *AppInfo) GetRun(ctx context.Context, state *app_v1alpha.RunsGetRun) error
- func (r *AppInfo) List(ctx context.Context, state *app_v1alpha.CrudList) error
- func (r *AppInfo) ListAppHealth(ctx context.Context) ([]apphealth.State, error)
- func (r *AppInfo) ListApps(ctx context.Context) ([]*app_v1alpha.AppInfo, error)
- func (r *AppInfo) ListRuns(ctx context.Context, state *app_v1alpha.RunsListRuns) error
- func (r *AppInfo) New(ctx context.Context, state *app_v1alpha.CrudNew) error
- func (r *AppInfo) Restart(ctx context.Context, state *app_v1alpha.CrudRestart) error
- func (r *AppInfo) SetConfiguration(ctx context.Context, state *app_v1alpha.CrudSetConfiguration) error
- func (r *AppInfo) SetEnvVar(ctx context.Context, state *app_v1alpha.CrudSetEnvVar) error
- func (r *AppInfo) SetEnvVars(ctx context.Context, state *app_v1alpha.CrudSetEnvVars) error
- func (r *AppInfo) SetHost(ctx context.Context, state *app_v1alpha.CrudSetHost) error
- func (r *AppInfo) SetInitialEnvVars(ctx context.Context, state *app_v1alpha.CrudSetInitialEnvVars) error
- func (r *AppInfo) SetWorkloadRole(ctx context.Context, state *app_v1alpha.CrudSetWorkloadRole) error
- type ClearVersioner
Constants ¶
const AppRefTag = "dev.miren.app_ref"
const ConsoleTask = appconfig.ConsoleName
ConsoleTask is the task name `miren app run` resolves when none is given.
The convention predates tasks: servers/exec already looked for a service literally called "console". Moving it to [tasks.console] also fixes an overload nobody wanted, since declaring [services.console] used to get you both a long-running service the launcher keeps up and the command app run executes -- and only the second was ever the point.
Aliased rather than respelled: the config package validates against its copy, and a second literal here would let the two drift into disagreeing about which task name is the convention.
Variables ¶
This section is empty.
Functions ¶
func DeleteAppTransitive ¶
func DeleteAppTransitive(ctx context.Context, client *entityserver.Client, log *slog.Logger, appId entity.Id) error
DeleteAppTransitive deletes an app and all entities that directly reference it. This includes app_versions and sandbox_pools (both tagged with dev.miren.app_ref). Other transitive resources (sandboxes referencing app_versions) are cleaned up by their controllers.
Artifacts are the exception among app_ref entities: they are left alone. Artifacts are deduplicated by manifest digest, so one tagged with this app may still back another app's version, and the registry resolves manifests through the artifact entity. The artifact GC archives whatever is left unreferenced once the versions are gone, and archiving is what lets the image and blob GCs reclaim the storage.
Types ¶
type AddonsServer ¶ added in v0.4.0
type AddonsServer struct {
// contains filtered or unexported fields
}
AddonsServer implements the app_v1alpha.Addons RPC interface.
func NewAddonsServer ¶ added in v0.4.0
func NewAddonsServer(log *slog.Logger, ec *entityserver.Client, registry *addon.Registry, imageChecker addon.ImageChecker) *AddonsServer
func (*AddonsServer) CreateInstance ¶ added in v0.4.0
func (s *AddonsServer) CreateInstance(ctx context.Context, state *app_v1alpha.AddonsCreateInstance) error
func (*AddonsServer) DeleteInstance ¶ added in v0.4.0
func (s *AddonsServer) DeleteInstance(ctx context.Context, state *app_v1alpha.AddonsDeleteInstance) error
func (*AddonsServer) ListInstances ¶ added in v0.4.0
func (s *AddonsServer) ListInstances(ctx context.Context, state *app_v1alpha.AddonsListInstances) error
func (*AddonsServer) RotateCredential ¶ added in v0.12.1
func (s *AddonsServer) RotateCredential(ctx context.Context, state *app_v1alpha.AddonsRotateCredential) error
RotateCredential creates a pending RotationRequest for the addon attached to the named app. The rotation controller reconciles it: apply a new secret to the live engine, update the stored value, and redeploy affected consumers.
type AppInfo ¶
type AppInfo struct {
Log *slog.Logger
CV ClearVersioner
EC *entityserver.Client
CPU *metrics.CPUUsage
Mem *metrics.MemoryUsage
HTTP *metrics.HTTPMetrics
// Secrets resolves backend-sourced variables so a ConfigVersion minted by an
// env change records the exact secret version it saw.
Secrets secret.Resolver
Deploy *deploylifecycle.Tracker
// contains filtered or unexported fields
}
func NewAppInfo ¶
func NewAppInfo(log *slog.Logger, ec *entityserver.Client, cpu *metrics.CPUUsage, mem *metrics.MemoryUsage, http *metrics.HTTPMetrics, secrets secret.Resolver) *AppInfo
func (*AppInfo) AppInfo ¶
func (a *AppInfo) AppInfo(ctx context.Context, state *app_v1alpha.AppStatusAppInfo) error
func (*AppInfo) CancelRun ¶ added in v0.14.0
func (r *AppInfo) CancelRun(ctx context.Context, state *app_v1alpha.RunsCancelRun) error
CancelRun records a cancellation request. The controller owns every status transition, so this deliberately does not write CANCELED itself -- a second writer would race the reconcile that is also deciding this run's fate.
func (*AppInfo) CancelRunEntity ¶ added in v0.14.0
CancelRunEntity requests cancellation of a run and reports whether the request was recorded (false if the run had already reached a terminal state). It is the in-process core of CancelRun, shared so the exec proxy's legacy compatibility path can cancel a run it created without re-authenticating over a loopback RPC.
func (*AppInfo) CreateRun ¶ added in v0.14.0
func (r *AppInfo) CreateRun(ctx context.Context, state *app_v1alpha.RunsCreateRun) error
CreateRun records a run and returns immediately.
Admission and launching belong to the run controller, so a caller never blocks on capacity here: a run that cannot start yet simply stays pending. That is also what lets deploy- and schedule-triggered runs share one gate with a manual invoke without any of them polling.
func (*AppInfo) CreateRunEntity ¶ added in v0.14.0
func (r *AppInfo) CreateRunEntity(ctx context.Context, app, taskName string, command []string, tty bool) (entity.Id, string, error)
CreateRunEntity records a run and returns its id and the name its first attempt's sandbox will have. It is the in-process core of CreateRun so that other coordinator services -- notably the exec proxy's legacy exec-by-app compatibility path -- can create a run with the caller's own identity rather than re-authenticating over a loopback RPC as the coordinator.
app is the app entity ref; taskName may be empty for the console task.
func (*AppInfo) DeleteEnvVar ¶
func (r *AppInfo) DeleteEnvVar(ctx context.Context, state *app_v1alpha.CrudDeleteEnvVar) error
func (*AppInfo) Destroy ¶
func (r *AppInfo) Destroy(ctx context.Context, state *app_v1alpha.CrudDestroy) error
func (*AppInfo) GetConfiguration ¶
func (r *AppInfo) GetConfiguration(ctx context.Context, state *app_v1alpha.CrudGetConfiguration) error
func (*AppInfo) GetRun ¶ added in v0.14.0
func (r *AppInfo) GetRun(ctx context.Context, state *app_v1alpha.RunsGetRun) error
func (*AppInfo) ListAppHealth ¶ added in v0.15.0
ListAppHealth returns the health classification for every app and nothing else. See collectAppHealth for why this exists alongside ListApps.
func (*AppInfo) ListApps ¶ added in v0.14.0
ListApps computes the current inventory of apps: identity, active version, health, instance counts, scaling mode, and routes.
Health comes from healthOf, the same classifier the cloud health feed uses. Health is a classification over sandbox pool state rather than a stored field, so a second implementation would drift from this one and let `miren app list` and the cloud dashboard disagree about whether an app is healthy.
func (*AppInfo) ListRuns ¶ added in v0.14.0
func (r *AppInfo) ListRuns(ctx context.Context, state *app_v1alpha.RunsListRuns) error
func (*AppInfo) Restart ¶ added in v0.7.0
func (r *AppInfo) Restart(ctx context.Context, state *app_v1alpha.CrudRestart) error
func (*AppInfo) SetConfiguration ¶
func (r *AppInfo) SetConfiguration(ctx context.Context, state *app_v1alpha.CrudSetConfiguration) error
func (*AppInfo) SetEnvVar ¶
func (r *AppInfo) SetEnvVar(ctx context.Context, state *app_v1alpha.CrudSetEnvVar) error
func (*AppInfo) SetEnvVars ¶ added in v0.3.1
func (r *AppInfo) SetEnvVars(ctx context.Context, state *app_v1alpha.CrudSetEnvVars) error
func (*AppInfo) SetHost ¶
func (r *AppInfo) SetHost(ctx context.Context, state *app_v1alpha.CrudSetHost) error
func (*AppInfo) SetInitialEnvVars ¶ added in v0.8.0
func (r *AppInfo) SetInitialEnvVars(ctx context.Context, state *app_v1alpha.CrudSetInitialEnvVars) error
func (*AppInfo) SetWorkloadRole ¶ added in v0.14.0
func (r *AppInfo) SetWorkloadRole(ctx context.Context, state *app_v1alpha.CrudSetWorkloadRole) error
SetWorkloadRole sets the app's workload identity role. This is the operator path: it can grant cluster-scoped roles, which the app.toml path must not.
It is reachable only by unscoped callers — cert (internal/operator) and JWT-with-RBAC. The guard below says that affirmatively: an app-scoped identity (OIDC or a workload) has a bound app, and is refused. That does not rely on the method staying absent from every token role map (the carve-out tripwire still enforces that too); it's belt-and-braces, and the shape the eventual cluster-admin gate will take.
type ClearVersioner ¶
type ClearVersioner interface {
ClearOldVersions(ctx context.Context, current *core_v1alpha.AppVersion) error
}