Documentation
¶
Index ¶
- Constants
- Variables
- func RegisterAteomServer(s grpc.ServiceRegistrar, srv AteomServer)
- type AteomClient
- type AteomServer
- type CheckpointWorkloadRequest
- func (*CheckpointWorkloadRequest) Descriptor() ([]byte, []int)deprecated
- func (x *CheckpointWorkloadRequest) GetActorName() string
- func (x *CheckpointWorkloadRequest) GetActorTemplateAtespace() string
- func (x *CheckpointWorkloadRequest) GetActorTemplateName() string
- func (x *CheckpointWorkloadRequest) GetActorUid() string
- func (x *CheckpointWorkloadRequest) GetAtespace() string
- func (x *CheckpointWorkloadRequest) GetRunscPath() string
- func (x *CheckpointWorkloadRequest) GetRuntimeAssetPaths() map[string]string
- func (x *CheckpointWorkloadRequest) GetScope() SnapshotScope
- func (x *CheckpointWorkloadRequest) GetSnapshotUri() string
- func (x *CheckpointWorkloadRequest) GetSpec() *WorkloadSpec
- func (*CheckpointWorkloadRequest) ProtoMessage()
- func (x *CheckpointWorkloadRequest) ProtoReflect() protoreflect.Message
- func (x *CheckpointWorkloadRequest) Reset()
- func (x *CheckpointWorkloadRequest) String() string
- type CheckpointWorkloadResponse
- func (*CheckpointWorkloadResponse) Descriptor() ([]byte, []int)deprecated
- func (x *CheckpointWorkloadResponse) GetSnapshotFiles() []string
- func (*CheckpointWorkloadResponse) ProtoMessage()
- func (x *CheckpointWorkloadResponse) ProtoReflect() protoreflect.Message
- func (x *CheckpointWorkloadResponse) Reset()
- func (x *CheckpointWorkloadResponse) String() string
- type Container
- func (*Container) Descriptor() ([]byte, []int)deprecated
- func (x *Container) GetCsiVolumeMounts() []*VolumeMount
- func (x *Container) GetDurableDirVolumeMounts() []*DurableDirVolumeMount
- func (x *Container) GetImageVolumeMounts() []*ImageVolumeMount
- func (x *Container) GetName() string
- func (x *Container) GetReadyz() *Readyz
- func (x *Container) GetSystemInfoVolumeMounts() []*SystemInfoVolumeMount
- func (*Container) ProtoMessage()
- func (x *Container) ProtoReflect() protoreflect.Message
- func (x *Container) Reset()
- func (x *Container) String() string
- type DurableDirVolumeMount
- func (*DurableDirVolumeMount) Descriptor() ([]byte, []int)deprecated
- func (x *DurableDirVolumeMount) GetMountPath() string
- func (x *DurableDirVolumeMount) GetVolumeName() string
- func (*DurableDirVolumeMount) ProtoMessage()
- func (x *DurableDirVolumeMount) ProtoReflect() protoreflect.Message
- func (x *DurableDirVolumeMount) Reset()
- func (x *DurableDirVolumeMount) String() string
- type EgressGateway
- type GetActiveWorkloadStatsRequest
- func (*GetActiveWorkloadStatsRequest) Descriptor() ([]byte, []int)deprecated
- func (*GetActiveWorkloadStatsRequest) ProtoMessage()
- func (x *GetActiveWorkloadStatsRequest) ProtoReflect() protoreflect.Message
- func (x *GetActiveWorkloadStatsRequest) Reset()
- func (x *GetActiveWorkloadStatsRequest) String() string
- type GetActiveWorkloadStatsResponse
- func (*GetActiveWorkloadStatsResponse) Descriptor() ([]byte, []int)deprecated
- func (x *GetActiveWorkloadStatsResponse) GetNoSampleReason() NoSampleReason
- func (x *GetActiveWorkloadStatsResponse) GetResult() isGetActiveWorkloadStatsResponse_Result
- func (x *GetActiveWorkloadStatsResponse) GetSample() *WorkloadStatsSample
- func (*GetActiveWorkloadStatsResponse) ProtoMessage()
- func (x *GetActiveWorkloadStatsResponse) ProtoReflect() protoreflect.Message
- func (x *GetActiveWorkloadStatsResponse) Reset()
- func (x *GetActiveWorkloadStatsResponse) String() string
- type GetActiveWorkloadStatsResponse_NoSampleReason
- type GetActiveWorkloadStatsResponse_Sample
- type GetWorkloadStatsRequest
- func (*GetWorkloadStatsRequest) Descriptor() ([]byte, []int)deprecated
- func (x *GetWorkloadStatsRequest) GetActorUid() string
- func (*GetWorkloadStatsRequest) ProtoMessage()
- func (x *GetWorkloadStatsRequest) ProtoReflect() protoreflect.Message
- func (x *GetWorkloadStatsRequest) Reset()
- func (x *GetWorkloadStatsRequest) String() string
- type GetWorkloadStatsResponse
- func (*GetWorkloadStatsResponse) Descriptor() ([]byte, []int)deprecated
- func (x *GetWorkloadStatsResponse) GetSample() *WorkloadStatsSample
- func (*GetWorkloadStatsResponse) ProtoMessage()
- func (x *GetWorkloadStatsResponse) ProtoReflect() protoreflect.Message
- func (x *GetWorkloadStatsResponse) Reset()
- func (x *GetWorkloadStatsResponse) String() string
- type HTTPGetAction
- func (*HTTPGetAction) Descriptor() ([]byte, []int)deprecated
- func (x *HTTPGetAction) GetPath() string
- func (x *HTTPGetAction) GetPort() int32
- func (*HTTPGetAction) ProtoMessage()
- func (x *HTTPGetAction) ProtoReflect() protoreflect.Message
- func (x *HTTPGetAction) Reset()
- func (x *HTTPGetAction) String() string
- type ImageVolumeMount
- func (*ImageVolumeMount) Descriptor() ([]byte, []int)deprecated
- func (x *ImageVolumeMount) GetMountPath() string
- func (x *ImageVolumeMount) GetVolumeName() string
- func (*ImageVolumeMount) ProtoMessage()
- func (x *ImageVolumeMount) ProtoReflect() protoreflect.Message
- func (x *ImageVolumeMount) Reset()
- func (x *ImageVolumeMount) String() string
- type NoSampleReason
- func (NoSampleReason) Descriptor() protoreflect.EnumDescriptor
- func (x NoSampleReason) Enum() *NoSampleReason
- func (NoSampleReason) EnumDescriptor() ([]byte, []int)deprecated
- func (x NoSampleReason) Number() protoreflect.EnumNumber
- func (x NoSampleReason) String() string
- func (NoSampleReason) Type() protoreflect.EnumType
- type Readyz
- type RestoreWorkloadRequest
- func (*RestoreWorkloadRequest) Descriptor() ([]byte, []int)deprecated
- func (x *RestoreWorkloadRequest) GetActorName() string
- func (x *RestoreWorkloadRequest) GetActorTemplateAtespace() string
- func (x *RestoreWorkloadRequest) GetActorTemplateName() string
- func (x *RestoreWorkloadRequest) GetActorUid() string
- func (x *RestoreWorkloadRequest) GetAtespace() string
- func (x *RestoreWorkloadRequest) GetCpuMilli() int64
- func (x *RestoreWorkloadRequest) GetEgressGateway() *EgressGateway
- func (x *RestoreWorkloadRequest) GetGoldenSnapshotUri() string
- func (x *RestoreWorkloadRequest) GetMemoryBytes() int64
- func (x *RestoreWorkloadRequest) GetRunscPath() string
- func (x *RestoreWorkloadRequest) GetRuntimeAssetPaths() map[string]string
- func (x *RestoreWorkloadRequest) GetScope() SnapshotScope
- func (x *RestoreWorkloadRequest) GetSnapshotUri() string
- func (x *RestoreWorkloadRequest) GetSpec() *WorkloadSpec
- func (*RestoreWorkloadRequest) ProtoMessage()
- func (x *RestoreWorkloadRequest) ProtoReflect() protoreflect.Message
- func (x *RestoreWorkloadRequest) Reset()
- func (x *RestoreWorkloadRequest) String() string
- type RestoreWorkloadResponse
- type RunWorkloadRequest
- func (*RunWorkloadRequest) Descriptor() ([]byte, []int)deprecated
- func (x *RunWorkloadRequest) GetActorName() string
- func (x *RunWorkloadRequest) GetActorTemplateAtespace() string
- func (x *RunWorkloadRequest) GetActorTemplateName() string
- func (x *RunWorkloadRequest) GetActorUid() string
- func (x *RunWorkloadRequest) GetAtespace() string
- func (x *RunWorkloadRequest) GetCpuMilli() int64
- func (x *RunWorkloadRequest) GetEgressGateway() *EgressGateway
- func (x *RunWorkloadRequest) GetMemoryBytes() int64
- func (x *RunWorkloadRequest) GetRunscPath() string
- func (x *RunWorkloadRequest) GetRuntimeAssetPaths() map[string]string
- func (x *RunWorkloadRequest) GetSpec() *WorkloadSpec
- func (*RunWorkloadRequest) ProtoMessage()
- func (x *RunWorkloadRequest) ProtoReflect() protoreflect.Message
- func (x *RunWorkloadRequest) Reset()
- func (x *RunWorkloadRequest) String() string
- type RunWorkloadResponse
- type SandboxClass
- func (SandboxClass) Descriptor() protoreflect.EnumDescriptor
- func (x SandboxClass) Enum() *SandboxClass
- func (SandboxClass) EnumDescriptor() ([]byte, []int)deprecated
- func (x SandboxClass) Number() protoreflect.EnumNumber
- func (x SandboxClass) String() string
- func (SandboxClass) Type() protoreflect.EnumType
- type SnapshotScope
- func (SnapshotScope) Descriptor() protoreflect.EnumDescriptor
- func (x SnapshotScope) Enum() *SnapshotScope
- func (SnapshotScope) EnumDescriptor() ([]byte, []int)deprecated
- func (x SnapshotScope) Number() protoreflect.EnumNumber
- func (x SnapshotScope) String() string
- func (SnapshotScope) Type() protoreflect.EnumType
- type StatsSource
- func (StatsSource) Descriptor() protoreflect.EnumDescriptor
- func (x StatsSource) Enum() *StatsSource
- func (StatsSource) EnumDescriptor() ([]byte, []int)deprecated
- func (x StatsSource) Number() protoreflect.EnumNumber
- func (x StatsSource) String() string
- func (StatsSource) Type() protoreflect.EnumType
- type SystemInfoVolumeMount
- func (*SystemInfoVolumeMount) Descriptor() ([]byte, []int)deprecated
- func (x *SystemInfoVolumeMount) GetMountPath() string
- func (x *SystemInfoVolumeMount) GetVolumeName() string
- func (*SystemInfoVolumeMount) ProtoMessage()
- func (x *SystemInfoVolumeMount) ProtoReflect() protoreflect.Message
- func (x *SystemInfoVolumeMount) Reset()
- func (x *SystemInfoVolumeMount) String() string
- type TerminateWorkloadRequest
- func (*TerminateWorkloadRequest) Descriptor() ([]byte, []int)deprecated
- func (x *TerminateWorkloadRequest) GetActorName() string
- func (x *TerminateWorkloadRequest) GetActorTemplateAtespace() string
- func (x *TerminateWorkloadRequest) GetActorTemplateName() string
- func (x *TerminateWorkloadRequest) GetActorUid() string
- func (x *TerminateWorkloadRequest) GetAtespace() string
- func (x *TerminateWorkloadRequest) GetRunscPath() string
- func (x *TerminateWorkloadRequest) GetSpec() *WorkloadSpec
- func (*TerminateWorkloadRequest) ProtoMessage()
- func (x *TerminateWorkloadRequest) ProtoReflect() protoreflect.Message
- func (x *TerminateWorkloadRequest) Reset()
- func (x *TerminateWorkloadRequest) String() string
- type TerminateWorkloadResponse
- type UnimplementedAteomServer
- func (UnimplementedAteomServer) CheckpointWorkload(context.Context, *CheckpointWorkloadRequest) (*CheckpointWorkloadResponse, error)
- func (UnimplementedAteomServer) GetActiveWorkloadStats(context.Context, *GetActiveWorkloadStatsRequest) (*GetActiveWorkloadStatsResponse, error)
- func (UnimplementedAteomServer) GetWorkloadStats(context.Context, *GetWorkloadStatsRequest) (*GetWorkloadStatsResponse, error)
- func (UnimplementedAteomServer) RestoreWorkload(context.Context, *RestoreWorkloadRequest) (*RestoreWorkloadResponse, error)
- func (UnimplementedAteomServer) RunWorkload(context.Context, *RunWorkloadRequest) (*RunWorkloadResponse, error)
- func (UnimplementedAteomServer) TerminateWorkload(context.Context, *TerminateWorkloadRequest) (*TerminateWorkloadResponse, error)
- type UnsafeAteomServer
- type VolumeMount
- func (*VolumeMount) Descriptor() ([]byte, []int)deprecated
- func (x *VolumeMount) GetMountPath() string
- func (x *VolumeMount) GetVolumeName() string
- func (*VolumeMount) ProtoMessage()
- func (x *VolumeMount) ProtoReflect() protoreflect.Message
- func (x *VolumeMount) Reset()
- func (x *VolumeMount) String() string
- type WorkloadSpec
- type WorkloadStatsSample
- func (*WorkloadStatsSample) Descriptor() ([]byte, []int)deprecated
- func (x *WorkloadStatsSample) GetActorName() string
- func (x *WorkloadStatsSample) GetActorTemplateAtespace() string
- func (x *WorkloadStatsSample) GetActorTemplateName() string
- func (x *WorkloadStatsSample) GetActorUid() string
- func (x *WorkloadStatsSample) GetAtespace() string
- func (x *WorkloadStatsSample) GetCpuUsageUsec() uint64
- func (x *WorkloadStatsSample) GetMemoryCurrentBytes() uint64
- func (x *WorkloadStatsSample) GetMemoryPeakBytes() uint64
- func (x *WorkloadStatsSample) GetMemoryWorkingSetBytes() uint64
- func (x *WorkloadStatsSample) GetObservedAtUnixNano() int64
- func (x *WorkloadStatsSample) GetSandboxClass() SandboxClass
- func (x *WorkloadStatsSample) GetSource() StatsSource
- func (*WorkloadStatsSample) ProtoMessage()
- func (x *WorkloadStatsSample) ProtoReflect() protoreflect.Message
- func (x *WorkloadStatsSample) Reset()
- func (x *WorkloadStatsSample) String() string
Constants ¶
const ( Ateom_RunWorkload_FullMethodName = "/ateom.Ateom/RunWorkload" Ateom_CheckpointWorkload_FullMethodName = "/ateom.Ateom/CheckpointWorkload" Ateom_RestoreWorkload_FullMethodName = "/ateom.Ateom/RestoreWorkload" Ateom_GetWorkloadStats_FullMethodName = "/ateom.Ateom/GetWorkloadStats" Ateom_GetActiveWorkloadStats_FullMethodName = "/ateom.Ateom/GetActiveWorkloadStats" Ateom_TerminateWorkload_FullMethodName = "/ateom.Ateom/TerminateWorkload" )
Variables ¶
var ( SnapshotScope_name = map[int32]string{ 0: "SNAPSHOT_SCOPE_UNSPECIFIED", 1: "SNAPSHOT_SCOPE_FULL", 2: "SNAPSHOT_SCOPE_DATA", 3: "SNAPSHOT_SCOPE_DATA_ON_GOLDEN", } SnapshotScope_value = map[string]int32{ "SNAPSHOT_SCOPE_UNSPECIFIED": 0, "SNAPSHOT_SCOPE_FULL": 1, "SNAPSHOT_SCOPE_DATA": 2, "SNAPSHOT_SCOPE_DATA_ON_GOLDEN": 3, } )
Enum value maps for SnapshotScope.
var ( SandboxClass_name = map[int32]string{ 0: "SANDBOX_CLASS_UNSPECIFIED", 1: "SANDBOX_CLASS_GVISOR", 2: "SANDBOX_CLASS_MICROVM", } SandboxClass_value = map[string]int32{ "SANDBOX_CLASS_UNSPECIFIED": 0, "SANDBOX_CLASS_GVISOR": 1, "SANDBOX_CLASS_MICROVM": 2, } )
Enum value maps for SandboxClass.
var ( StatsSource_name = map[int32]string{ 0: "STATS_SOURCE_UNSPECIFIED", 1: "STATS_SOURCE_CGROUP", 2: "STATS_SOURCE_GUEST_AGENT", } StatsSource_value = map[string]int32{ "STATS_SOURCE_UNSPECIFIED": 0, "STATS_SOURCE_CGROUP": 1, "STATS_SOURCE_GUEST_AGENT": 2, } )
Enum value maps for StatsSource.
var ( NoSampleReason_name = map[int32]string{ 0: "NO_SAMPLE_REASON_UNSPECIFIED", 1: "NO_SAMPLE_REASON_NO_WORKLOAD", 2: "NO_SAMPLE_REASON_NOT_MEASURABLE_YET", } NoSampleReason_value = map[string]int32{ "NO_SAMPLE_REASON_UNSPECIFIED": 0, "NO_SAMPLE_REASON_NO_WORKLOAD": 1, "NO_SAMPLE_REASON_NOT_MEASURABLE_YET": 2, } )
Enum value maps for NoSampleReason.
var Ateom_ServiceDesc = grpc.ServiceDesc{ ServiceName: "ateom.Ateom", HandlerType: (*AteomServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "RunWorkload", Handler: _Ateom_RunWorkload_Handler, }, { MethodName: "CheckpointWorkload", Handler: _Ateom_CheckpointWorkload_Handler, }, { MethodName: "RestoreWorkload", Handler: _Ateom_RestoreWorkload_Handler, }, { MethodName: "GetWorkloadStats", Handler: _Ateom_GetWorkloadStats_Handler, }, { MethodName: "GetActiveWorkloadStats", Handler: _Ateom_GetActiveWorkloadStats_Handler, }, { MethodName: "TerminateWorkload", Handler: _Ateom_TerminateWorkload_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "ateom.proto", }
Ateom_ServiceDesc is the grpc.ServiceDesc for Ateom service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)
var File_ateom_proto protoreflect.FileDescriptor
Functions ¶
func RegisterAteomServer ¶
func RegisterAteomServer(s grpc.ServiceRegistrar, srv AteomServer)
Types ¶
type AteomClient ¶
type AteomClient interface {
// RunWorkload tells ateom to begin running a new workload (one or more
// containers, potentially with shared filesystems).
RunWorkload(ctx context.Context, in *RunWorkloadRequest, opts ...grpc.CallOption) (*RunWorkloadResponse, error)
// CheckpointWorkload tells ateom to save the current state of the running
// workload to object storage, and then completely reset itself to a blank
// state (back to "available" state.)
CheckpointWorkload(ctx context.Context, in *CheckpointWorkloadRequest, opts ...grpc.CallOption) (*CheckpointWorkloadResponse, error)
// RestoreWorkload restores a workload from checkpoint that was previously
// written by CheckpointWorkload. Ateom will handle downloading the correct
// gVisor / runsc version to match the checkpoint.
RestoreWorkload(ctx context.Context, in *RestoreWorkloadRequest, opts ...grpc.CallOption) (*RestoreWorkloadResponse, error)
// GetWorkloadStats returns a point-in-time resource-usage sample for the
// workload this ateom is currently executing.
//
// It is a pure read: unlike the three calls above it does not move the ateom
// between "available" and "executing", so it is safe to call on a timer for
// the whole lifetime of a workload. It also does not wait on them. Those
// three serialize on a mutex an ateom holds for a whole boot, restore, or
// checkpoint; this call reads its state from outside that mutex, so a poll
// landing in the middle of one answers immediately instead of going quiet for
// the duration -- which would silence the poller during exactly the phases
// whose usage is most interesting.
//
// Two ways it declines to give a sample, and they ask different things of the
// caller:
//
// * NOT_FOUND -- this ateom is not executing the actor in the request. It
// may be "available", or a recycled worker may have moved on to a
// different actor. Retrying on the same timer will not change the answer:
// the caller's worker-to-actor mapping is stale and wants re-resolving.
//
// * FAILED_PRECONDITION -- this ateom is executing the requested actor but
// has no sample to give yet. It accepts an actor before the sandbox it
// will measure exists, so a poll landing in the boot lands here. Read it
// as "no numbers right now", not as "the actor is gone": it is transient,
// and the caller should skip this sample and take the next one.
//
// The split is worth the two codes because the identity is retained from the
// moment the ateom accepts the actor, on both runtimes. That is what makes
// "booting" distinguishable from "not here" at all, and it means a workload
// that dies during boot is attributable rather than anonymous.
GetWorkloadStats(ctx context.Context, in *GetWorkloadStatsRequest, opts ...grpc.CallOption) (*GetWorkloadStatsResponse, error)
// GetActiveWorkloadStats samples whatever this ateom is currently
// executing, without asserting an identity. It is the discovery read for a
// scraper that enumerates ateoms and holds no worker-to-actor mapping;
// GetWorkloadStats above is the verified read for a caller that must be
// answered about a specific actor.
//
// Every state a blind caller can find is a normal answer here, never an
// error: the response is either a sample or the NoSampleReason there is
// none -- nothing to measure ("available"), or nothing to measure YET (a
// poll landing in a boot or a restore). Error codes are reserved for real
// failures reading a sandbox that should be measurable. This is deliberately
// unlike GetWorkloadStats, whose caller asserts knowledge the codes then
// answer.
//
// Consumers MUST attribute each sample solely from the identity echoed
// inside it, never from a mapping they hold: without an asserted uid, the
// response is the only statement of who was measured. Like GetWorkloadStats
// it is a pure read, safe on a timer, and does not touch the lifecycle
// mutex.
GetActiveWorkloadStats(ctx context.Context, in *GetActiveWorkloadStatsRequest, opts ...grpc.CallOption) (*GetActiveWorkloadStatsResponse, error)
// TerminateWorkload stops and deletes container workloads and cleans up
// network and bundle overlays on ateom.
TerminateWorkload(ctx context.Context, in *TerminateWorkloadRequest, opts ...grpc.CallOption) (*TerminateWorkloadResponse, error)
}
AteomClient is the client API for Ateom service.
For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
Ateom is the interface to control a single gVisor (or, in the future microVM) guest inside a worker pod.
Each ateom server has two main states, "available" and "executing".
When the ateom is "available", the substrate control plane is free to either boot a new workload (using RunWorkload), or restore an existing workload from a checkpoint (using RestoreWorkload). These calls move the ateom into "executing" state.
When the ateom is "executing", the substrate control plane can checkpoint the running workload (with CheckpointWorkload). This moves the ateom back to "free" state.
func NewAteomClient ¶
func NewAteomClient(cc grpc.ClientConnInterface) AteomClient
type AteomServer ¶
type AteomServer interface {
// RunWorkload tells ateom to begin running a new workload (one or more
// containers, potentially with shared filesystems).
RunWorkload(context.Context, *RunWorkloadRequest) (*RunWorkloadResponse, error)
// CheckpointWorkload tells ateom to save the current state of the running
// workload to object storage, and then completely reset itself to a blank
// state (back to "available" state.)
CheckpointWorkload(context.Context, *CheckpointWorkloadRequest) (*CheckpointWorkloadResponse, error)
// RestoreWorkload restores a workload from checkpoint that was previously
// written by CheckpointWorkload. Ateom will handle downloading the correct
// gVisor / runsc version to match the checkpoint.
RestoreWorkload(context.Context, *RestoreWorkloadRequest) (*RestoreWorkloadResponse, error)
// GetWorkloadStats returns a point-in-time resource-usage sample for the
// workload this ateom is currently executing.
//
// It is a pure read: unlike the three calls above it does not move the ateom
// between "available" and "executing", so it is safe to call on a timer for
// the whole lifetime of a workload. It also does not wait on them. Those
// three serialize on a mutex an ateom holds for a whole boot, restore, or
// checkpoint; this call reads its state from outside that mutex, so a poll
// landing in the middle of one answers immediately instead of going quiet for
// the duration -- which would silence the poller during exactly the phases
// whose usage is most interesting.
//
// Two ways it declines to give a sample, and they ask different things of the
// caller:
//
// * NOT_FOUND -- this ateom is not executing the actor in the request. It
// may be "available", or a recycled worker may have moved on to a
// different actor. Retrying on the same timer will not change the answer:
// the caller's worker-to-actor mapping is stale and wants re-resolving.
//
// * FAILED_PRECONDITION -- this ateom is executing the requested actor but
// has no sample to give yet. It accepts an actor before the sandbox it
// will measure exists, so a poll landing in the boot lands here. Read it
// as "no numbers right now", not as "the actor is gone": it is transient,
// and the caller should skip this sample and take the next one.
//
// The split is worth the two codes because the identity is retained from the
// moment the ateom accepts the actor, on both runtimes. That is what makes
// "booting" distinguishable from "not here" at all, and it means a workload
// that dies during boot is attributable rather than anonymous.
GetWorkloadStats(context.Context, *GetWorkloadStatsRequest) (*GetWorkloadStatsResponse, error)
// GetActiveWorkloadStats samples whatever this ateom is currently
// executing, without asserting an identity. It is the discovery read for a
// scraper that enumerates ateoms and holds no worker-to-actor mapping;
// GetWorkloadStats above is the verified read for a caller that must be
// answered about a specific actor.
//
// Every state a blind caller can find is a normal answer here, never an
// error: the response is either a sample or the NoSampleReason there is
// none -- nothing to measure ("available"), or nothing to measure YET (a
// poll landing in a boot or a restore). Error codes are reserved for real
// failures reading a sandbox that should be measurable. This is deliberately
// unlike GetWorkloadStats, whose caller asserts knowledge the codes then
// answer.
//
// Consumers MUST attribute each sample solely from the identity echoed
// inside it, never from a mapping they hold: without an asserted uid, the
// response is the only statement of who was measured. Like GetWorkloadStats
// it is a pure read, safe on a timer, and does not touch the lifecycle
// mutex.
GetActiveWorkloadStats(context.Context, *GetActiveWorkloadStatsRequest) (*GetActiveWorkloadStatsResponse, error)
// TerminateWorkload stops and deletes container workloads and cleans up
// network and bundle overlays on ateom.
TerminateWorkload(context.Context, *TerminateWorkloadRequest) (*TerminateWorkloadResponse, error)
// contains filtered or unexported methods
}
AteomServer is the server API for Ateom service. All implementations must embed UnimplementedAteomServer for forward compatibility.
Ateom is the interface to control a single gVisor (or, in the future microVM) guest inside a worker pod.
Each ateom server has two main states, "available" and "executing".
When the ateom is "available", the substrate control plane is free to either boot a new workload (using RunWorkload), or restore an existing workload from a checkpoint (using RestoreWorkload). These calls move the ateom into "executing" state.
When the ateom is "executing", the substrate control plane can checkpoint the running workload (with CheckpointWorkload). This moves the ateom back to "free" state.
type CheckpointWorkloadRequest ¶
type CheckpointWorkloadRequest struct {
Atespace string `protobuf:"bytes,1,opt,name=atespace,proto3" json:"atespace,omitempty"`
ActorName string `protobuf:"bytes,2,opt,name=actor_name,json=actorName,proto3" json:"actor_name,omitempty"`
ActorUid string `protobuf:"bytes,3,opt,name=actor_uid,json=actorUid,proto3" json:"actor_uid,omitempty"`
ActorTemplateAtespace string `` /* 126-byte string literal not displayed */
ActorTemplateName string `protobuf:"bytes,5,opt,name=actor_template_name,json=actorTemplateName,proto3" json:"actor_template_name,omitempty"`
RunscPath string `protobuf:"bytes,6,opt,name=runsc_path,json=runscPath,proto3" json:"runsc_path,omitempty"`
Spec *WorkloadSpec `protobuf:"bytes,7,opt,name=spec,proto3" json:"spec,omitempty"`
// The object storage URI of the snapshot to write. Object names are appended
// to it, so it addresses the snapshot as a whole rather than any one object.
//
// The structure of the checkpoint should generally be treated as opaque. For
// gVisor, the checkpoint consists of a checkpoint.img file that contains the
// memory, sentry state, and filesystem deltas.
//
// The control plane sends an ActorSnapshot's snapshot_uri, which sits under
// the prefix of the resource that owns the snapshot. For example:
// "gs://bucket/root/atespaces/team-a/actors/<actor uid>/snapshots/5678".
SnapshotUri string `protobuf:"bytes,8,opt,name=snapshot_uri,json=snapshotUri,proto3" json:"snapshot_uri,omitempty"`
// runtime_asset_paths maps a runtime asset name to the local on-disk path
// atelet fetched it to (see RunWorkloadRequest). Empty for gVisor.
RuntimeAssetPaths map[string]string `` /* 188-byte string literal not displayed */
// What content to include in the checkpoint.
Scope SnapshotScope `protobuf:"varint,10,opt,name=scope,proto3,enum=ateom.SnapshotScope" json:"scope,omitempty"`
// contains filtered or unexported fields
}
func (*CheckpointWorkloadRequest) Descriptor
deprecated
func (*CheckpointWorkloadRequest) Descriptor() ([]byte, []int)
Deprecated: Use CheckpointWorkloadRequest.ProtoReflect.Descriptor instead.
func (*CheckpointWorkloadRequest) GetActorName ¶
func (x *CheckpointWorkloadRequest) GetActorName() string
func (*CheckpointWorkloadRequest) GetActorTemplateAtespace ¶
func (x *CheckpointWorkloadRequest) GetActorTemplateAtespace() string
func (*CheckpointWorkloadRequest) GetActorTemplateName ¶
func (x *CheckpointWorkloadRequest) GetActorTemplateName() string
func (*CheckpointWorkloadRequest) GetActorUid ¶
func (x *CheckpointWorkloadRequest) GetActorUid() string
func (*CheckpointWorkloadRequest) GetAtespace ¶
func (x *CheckpointWorkloadRequest) GetAtespace() string
func (*CheckpointWorkloadRequest) GetRunscPath ¶
func (x *CheckpointWorkloadRequest) GetRunscPath() string
func (*CheckpointWorkloadRequest) GetRuntimeAssetPaths ¶
func (x *CheckpointWorkloadRequest) GetRuntimeAssetPaths() map[string]string
func (*CheckpointWorkloadRequest) GetScope ¶
func (x *CheckpointWorkloadRequest) GetScope() SnapshotScope
func (*CheckpointWorkloadRequest) GetSnapshotUri ¶
func (x *CheckpointWorkloadRequest) GetSnapshotUri() string
func (*CheckpointWorkloadRequest) GetSpec ¶
func (x *CheckpointWorkloadRequest) GetSpec() *WorkloadSpec
func (*CheckpointWorkloadRequest) ProtoMessage ¶
func (*CheckpointWorkloadRequest) ProtoMessage()
func (*CheckpointWorkloadRequest) ProtoReflect ¶
func (x *CheckpointWorkloadRequest) ProtoReflect() protoreflect.Message
func (*CheckpointWorkloadRequest) Reset ¶
func (x *CheckpointWorkloadRequest) Reset()
func (*CheckpointWorkloadRequest) String ¶
func (x *CheckpointWorkloadRequest) String() string
type CheckpointWorkloadResponse ¶
type CheckpointWorkloadResponse struct {
// snapshot_files lists the files ateom wrote into the checkpoint directory
// (relative names) for atelet to ship to object storage. Each runtime reports
// its own set (gVisor's image files, cloud-hypervisor's snapshot set, ...).
SnapshotFiles []string `protobuf:"bytes,1,rep,name=snapshot_files,json=snapshotFiles,proto3" json:"snapshot_files,omitempty"`
// contains filtered or unexported fields
}
func (*CheckpointWorkloadResponse) Descriptor
deprecated
func (*CheckpointWorkloadResponse) Descriptor() ([]byte, []int)
Deprecated: Use CheckpointWorkloadResponse.ProtoReflect.Descriptor instead.
func (*CheckpointWorkloadResponse) GetSnapshotFiles ¶
func (x *CheckpointWorkloadResponse) GetSnapshotFiles() []string
func (*CheckpointWorkloadResponse) ProtoMessage ¶
func (*CheckpointWorkloadResponse) ProtoMessage()
func (*CheckpointWorkloadResponse) ProtoReflect ¶
func (x *CheckpointWorkloadResponse) ProtoReflect() protoreflect.Message
func (*CheckpointWorkloadResponse) Reset ¶
func (x *CheckpointWorkloadResponse) Reset()
func (*CheckpointWorkloadResponse) String ¶
func (x *CheckpointWorkloadResponse) String() string
type Container ¶
type Container struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Readyz *Readyz `protobuf:"bytes,2,opt,name=readyz,proto3" json:"readyz,omitempty"`
// durable_dir_volume_mounts are the durable-dir volumes this container
// mounts, if any.
DurableDirVolumeMounts []*DurableDirVolumeMount `` /* 131-byte string literal not displayed */
// csi_volume_mounts are the CSI volumes this container mounts, if any.
CsiVolumeMounts []*VolumeMount `protobuf:"bytes,5,rep,name=csi_volume_mounts,json=csiVolumeMounts,proto3" json:"csi_volume_mounts,omitempty"`
// system_info_volume_mounts are the system-info volumes this container
// mounts, if any. Contents are generated by atelet on the host; the
// container sees them read-only.
SystemInfoVolumeMounts []*SystemInfoVolumeMount `` /* 131-byte string literal not displayed */
// image_volume_mounts are the image volumes this container mounts, if any.
ImageVolumeMounts []*ImageVolumeMount `protobuf:"bytes,7,rep,name=image_volume_mounts,json=imageVolumeMounts,proto3" json:"image_volume_mounts,omitempty"`
// contains filtered or unexported fields
}
func (*Container) Descriptor
deprecated
func (*Container) GetCsiVolumeMounts ¶
func (x *Container) GetCsiVolumeMounts() []*VolumeMount
func (*Container) GetDurableDirVolumeMounts ¶
func (x *Container) GetDurableDirVolumeMounts() []*DurableDirVolumeMount
func (*Container) GetImageVolumeMounts ¶
func (x *Container) GetImageVolumeMounts() []*ImageVolumeMount
func (*Container) GetSystemInfoVolumeMounts ¶
func (x *Container) GetSystemInfoVolumeMounts() []*SystemInfoVolumeMount
func (*Container) ProtoMessage ¶
func (*Container) ProtoMessage()
func (*Container) ProtoReflect ¶
func (x *Container) ProtoReflect() protoreflect.Message
type DurableDirVolumeMount ¶
type DurableDirVolumeMount struct {
// volume_name is the name the ActorTemplate gave the volume. It selects the
// per-volume directory atelet prepared for the actor on the host.
VolumeName string `protobuf:"bytes,1,opt,name=volume_name,json=volumeName,proto3" json:"volume_name,omitempty"`
// mount_path is where the container sees the volume.
MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"`
// contains filtered or unexported fields
}
DurableDirVolumeMount is one durable-dir volume mounted into a container.
func (*DurableDirVolumeMount) Descriptor
deprecated
func (*DurableDirVolumeMount) Descriptor() ([]byte, []int)
Deprecated: Use DurableDirVolumeMount.ProtoReflect.Descriptor instead.
func (*DurableDirVolumeMount) GetMountPath ¶
func (x *DurableDirVolumeMount) GetMountPath() string
func (*DurableDirVolumeMount) GetVolumeName ¶
func (x *DurableDirVolumeMount) GetVolumeName() string
func (*DurableDirVolumeMount) ProtoMessage ¶
func (*DurableDirVolumeMount) ProtoMessage()
func (*DurableDirVolumeMount) ProtoReflect ¶
func (x *DurableDirVolumeMount) ProtoReflect() protoreflect.Message
func (*DurableDirVolumeMount) Reset ¶
func (x *DurableDirVolumeMount) Reset()
func (*DurableDirVolumeMount) String ¶
func (x *DurableDirVolumeMount) String() string
type EgressGateway ¶
type EgressGateway struct {
// address is required and identifies the remote gateway as an IP address or
// DNS name followed by its port.
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
// contains filtered or unexported fields
}
EgressGateway configures tunneled egress for one actor activation.
func (*EgressGateway) Descriptor
deprecated
func (*EgressGateway) Descriptor() ([]byte, []int)
Deprecated: Use EgressGateway.ProtoReflect.Descriptor instead.
func (*EgressGateway) GetAddress ¶
func (x *EgressGateway) GetAddress() string
func (*EgressGateway) ProtoMessage ¶
func (*EgressGateway) ProtoMessage()
func (*EgressGateway) ProtoReflect ¶
func (x *EgressGateway) ProtoReflect() protoreflect.Message
func (*EgressGateway) Reset ¶
func (x *EgressGateway) Reset()
func (*EgressGateway) String ¶
func (x *EgressGateway) String() string
type GetActiveWorkloadStatsRequest ¶
type GetActiveWorkloadStatsRequest struct {
// contains filtered or unexported fields
}
func (*GetActiveWorkloadStatsRequest) Descriptor
deprecated
func (*GetActiveWorkloadStatsRequest) Descriptor() ([]byte, []int)
Deprecated: Use GetActiveWorkloadStatsRequest.ProtoReflect.Descriptor instead.
func (*GetActiveWorkloadStatsRequest) ProtoMessage ¶
func (*GetActiveWorkloadStatsRequest) ProtoMessage()
func (*GetActiveWorkloadStatsRequest) ProtoReflect ¶
func (x *GetActiveWorkloadStatsRequest) ProtoReflect() protoreflect.Message
func (*GetActiveWorkloadStatsRequest) Reset ¶
func (x *GetActiveWorkloadStatsRequest) Reset()
func (*GetActiveWorkloadStatsRequest) String ¶
func (x *GetActiveWorkloadStatsRequest) String() string
type GetActiveWorkloadStatsResponse ¶
type GetActiveWorkloadStatsResponse struct {
// Exactly one of the two is set: either a measurement, or the reason there
// is none. An ateom serves one actor at a time, so the sample slot is
// singular; the sample is self-describing (see the attribution rule on the
// rpc), and a sample being present is itself the statement that a workload
// is executing.
//
// Types that are valid to be assigned to Result:
//
// *GetActiveWorkloadStatsResponse_Sample
// *GetActiveWorkloadStatsResponse_NoSampleReason
Result isGetActiveWorkloadStatsResponse_Result `protobuf_oneof:"result"`
// contains filtered or unexported fields
}
func (*GetActiveWorkloadStatsResponse) Descriptor
deprecated
func (*GetActiveWorkloadStatsResponse) Descriptor() ([]byte, []int)
Deprecated: Use GetActiveWorkloadStatsResponse.ProtoReflect.Descriptor instead.
func (*GetActiveWorkloadStatsResponse) GetNoSampleReason ¶
func (x *GetActiveWorkloadStatsResponse) GetNoSampleReason() NoSampleReason
func (*GetActiveWorkloadStatsResponse) GetResult ¶
func (x *GetActiveWorkloadStatsResponse) GetResult() isGetActiveWorkloadStatsResponse_Result
func (*GetActiveWorkloadStatsResponse) GetSample ¶
func (x *GetActiveWorkloadStatsResponse) GetSample() *WorkloadStatsSample
func (*GetActiveWorkloadStatsResponse) ProtoMessage ¶
func (*GetActiveWorkloadStatsResponse) ProtoMessage()
func (*GetActiveWorkloadStatsResponse) ProtoReflect ¶
func (x *GetActiveWorkloadStatsResponse) ProtoReflect() protoreflect.Message
func (*GetActiveWorkloadStatsResponse) Reset ¶
func (x *GetActiveWorkloadStatsResponse) Reset()
func (*GetActiveWorkloadStatsResponse) String ¶
func (x *GetActiveWorkloadStatsResponse) String() string
type GetActiveWorkloadStatsResponse_NoSampleReason ¶
type GetActiveWorkloadStatsResponse_NoSampleReason struct {
NoSampleReason NoSampleReason `protobuf:"varint,2,opt,name=no_sample_reason,json=noSampleReason,proto3,enum=ateom.NoSampleReason,oneof"`
}
type GetActiveWorkloadStatsResponse_Sample ¶
type GetActiveWorkloadStatsResponse_Sample struct {
Sample *WorkloadStatsSample `protobuf:"bytes,1,opt,name=sample,proto3,oneof"`
}
type GetWorkloadStatsRequest ¶
type GetWorkloadStatsRequest struct {
// The actor the caller believes is executing here. A worker can be recycled
// between the caller's view of the world and this call, so ateom answers
// NOT_FOUND on a mismatch rather than reporting a different actor's numbers
// under the requested actor's identity.
ActorUid string `protobuf:"bytes,1,opt,name=actor_uid,json=actorUid,proto3" json:"actor_uid,omitempty"`
// contains filtered or unexported fields
}
func (*GetWorkloadStatsRequest) Descriptor
deprecated
func (*GetWorkloadStatsRequest) Descriptor() ([]byte, []int)
Deprecated: Use GetWorkloadStatsRequest.ProtoReflect.Descriptor instead.
func (*GetWorkloadStatsRequest) GetActorUid ¶
func (x *GetWorkloadStatsRequest) GetActorUid() string
func (*GetWorkloadStatsRequest) ProtoMessage ¶
func (*GetWorkloadStatsRequest) ProtoMessage()
func (*GetWorkloadStatsRequest) ProtoReflect ¶
func (x *GetWorkloadStatsRequest) ProtoReflect() protoreflect.Message
func (*GetWorkloadStatsRequest) Reset ¶
func (x *GetWorkloadStatsRequest) Reset()
func (*GetWorkloadStatsRequest) String ¶
func (x *GetWorkloadStatsRequest) String() string
type GetWorkloadStatsResponse ¶
type GetWorkloadStatsResponse struct {
Sample *WorkloadStatsSample `protobuf:"bytes,1,opt,name=sample,proto3" json:"sample,omitempty"`
// contains filtered or unexported fields
}
func (*GetWorkloadStatsResponse) Descriptor
deprecated
func (*GetWorkloadStatsResponse) Descriptor() ([]byte, []int)
Deprecated: Use GetWorkloadStatsResponse.ProtoReflect.Descriptor instead.
func (*GetWorkloadStatsResponse) GetSample ¶
func (x *GetWorkloadStatsResponse) GetSample() *WorkloadStatsSample
func (*GetWorkloadStatsResponse) ProtoMessage ¶
func (*GetWorkloadStatsResponse) ProtoMessage()
func (*GetWorkloadStatsResponse) ProtoReflect ¶
func (x *GetWorkloadStatsResponse) ProtoReflect() protoreflect.Message
func (*GetWorkloadStatsResponse) Reset ¶
func (x *GetWorkloadStatsResponse) Reset()
func (*GetWorkloadStatsResponse) String ¶
func (x *GetWorkloadStatsResponse) String() string
type HTTPGetAction ¶
type HTTPGetAction struct {
// Path to access on the HTTP server. Empty means "/readyz".
Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
// TCP port to connect to (1..65535).
Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
// contains filtered or unexported fields
}
HTTPGetAction performs an HTTP GET against the container.
func (*HTTPGetAction) Descriptor
deprecated
func (*HTTPGetAction) Descriptor() ([]byte, []int)
Deprecated: Use HTTPGetAction.ProtoReflect.Descriptor instead.
func (*HTTPGetAction) GetPath ¶
func (x *HTTPGetAction) GetPath() string
func (*HTTPGetAction) GetPort ¶
func (x *HTTPGetAction) GetPort() int32
func (*HTTPGetAction) ProtoMessage ¶
func (*HTTPGetAction) ProtoMessage()
func (*HTTPGetAction) ProtoReflect ¶
func (x *HTTPGetAction) ProtoReflect() protoreflect.Message
func (*HTTPGetAction) Reset ¶
func (x *HTTPGetAction) Reset()
func (*HTTPGetAction) String ¶
func (x *HTTPGetAction) String() string
type ImageVolumeMount ¶
type ImageVolumeMount struct {
// volume_name is the name the ActorTemplate gave the volume.
VolumeName string `protobuf:"bytes,1,opt,name=volume_name,json=volumeName,proto3" json:"volume_name,omitempty"`
// mount_path is where the container sees the volume.
MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"`
// contains filtered or unexported fields
}
ImageVolumeMount is one image volume mounted into a container. ateom uses these to construct the container's volume mounts — each names the volume and its destination path.
func (*ImageVolumeMount) Descriptor
deprecated
func (*ImageVolumeMount) Descriptor() ([]byte, []int)
Deprecated: Use ImageVolumeMount.ProtoReflect.Descriptor instead.
func (*ImageVolumeMount) GetMountPath ¶
func (x *ImageVolumeMount) GetMountPath() string
func (*ImageVolumeMount) GetVolumeName ¶
func (x *ImageVolumeMount) GetVolumeName() string
func (*ImageVolumeMount) ProtoMessage ¶
func (*ImageVolumeMount) ProtoMessage()
func (*ImageVolumeMount) ProtoReflect ¶
func (x *ImageVolumeMount) ProtoReflect() protoreflect.Message
func (*ImageVolumeMount) Reset ¶
func (x *ImageVolumeMount) Reset()
func (*ImageVolumeMount) String ¶
func (x *ImageVolumeMount) String() string
type NoSampleReason ¶
type NoSampleReason int32
NoSampleReason is why the discovery read has no sample to give -- every value is a normal state a caller with no prior knowledge routinely finds, never an error.
const ( NoSampleReason_NO_SAMPLE_REASON_UNSPECIFIED NoSampleReason = 0 // Nothing is executing: the ateom is "available". NoSampleReason_NO_SAMPLE_REASON_NO_WORKLOAD NoSampleReason = 1 // A workload is executing but there are no numbers to give yet: a poll // landing in a boot or a restore, a teardown in progress, or a lifecycle // transition underneath the read. Transient -- take the next sample. NoSampleReason_NO_SAMPLE_REASON_NOT_MEASURABLE_YET NoSampleReason = 2 )
func (NoSampleReason) Descriptor ¶
func (NoSampleReason) Descriptor() protoreflect.EnumDescriptor
func (NoSampleReason) Enum ¶
func (x NoSampleReason) Enum() *NoSampleReason
func (NoSampleReason) EnumDescriptor
deprecated
func (NoSampleReason) EnumDescriptor() ([]byte, []int)
Deprecated: Use NoSampleReason.Descriptor instead.
func (NoSampleReason) Number ¶
func (x NoSampleReason) Number() protoreflect.EnumNumber
func (NoSampleReason) String ¶
func (x NoSampleReason) String() string
func (NoSampleReason) Type ¶
func (NoSampleReason) Type() protoreflect.EnumType
type Readyz ¶
type Readyz struct {
HttpGet *HTTPGetAction `protobuf:"bytes,1,opt,name=http_get,json=httpGet,proto3" json:"http_get,omitempty"`
// How long to keep polling before giving up and failing the actor start.
// Zero means the ateom's default.
TimeoutSeconds int32 `protobuf:"varint,2,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"`
// contains filtered or unexported fields
}
Readyz describes how to check that a container is ready to serve. Only HTTP is supported today.
func (*Readyz) Descriptor
deprecated
func (*Readyz) GetHttpGet ¶
func (x *Readyz) GetHttpGet() *HTTPGetAction
func (*Readyz) GetTimeoutSeconds ¶
func (*Readyz) ProtoMessage ¶
func (*Readyz) ProtoMessage()
func (*Readyz) ProtoReflect ¶
func (x *Readyz) ProtoReflect() protoreflect.Message
type RestoreWorkloadRequest ¶
type RestoreWorkloadRequest struct {
Atespace string `protobuf:"bytes,1,opt,name=atespace,proto3" json:"atespace,omitempty"`
ActorName string `protobuf:"bytes,2,opt,name=actor_name,json=actorName,proto3" json:"actor_name,omitempty"`
ActorUid string `protobuf:"bytes,3,opt,name=actor_uid,json=actorUid,proto3" json:"actor_uid,omitempty"`
ActorTemplateAtespace string `` /* 126-byte string literal not displayed */
ActorTemplateName string `protobuf:"bytes,5,opt,name=actor_template_name,json=actorTemplateName,proto3" json:"actor_template_name,omitempty"`
RunscPath string `protobuf:"bytes,6,opt,name=runsc_path,json=runscPath,proto3" json:"runsc_path,omitempty"`
Spec *WorkloadSpec `protobuf:"bytes,7,opt,name=spec,proto3" json:"spec,omitempty"`
// The object storage URI of the snapshot to restore. Object names are
// appended to it; it addresses the snapshot, not any one object.
SnapshotUri string `protobuf:"bytes,8,opt,name=snapshot_uri,json=snapshotUri,proto3" json:"snapshot_uri,omitempty"`
// runtime_asset_paths maps a runtime asset name to the local on-disk path
// atelet fetched it to (see RunWorkloadRequest). Empty for gVisor.
RuntimeAssetPaths map[string]string `` /* 188-byte string literal not displayed */
// What content to restore from the snapshot.
Scope SnapshotScope `protobuf:"varint,10,opt,name=scope,proto3,enum=ateom.SnapshotScope" json:"scope,omitempty"`
// When absent, actor traffic uses direct egress instead of atunnel.
EgressGateway *EgressGateway `protobuf:"bytes,12,opt,name=egress_gateway,json=egressGateway,proto3,oneof" json:"egress_gateway,omitempty"`
// The object storage URI of the ActorTemplate's golden snapshot.
// Set only when scope is SNAPSHOT_SCOPE_DATA_ON_GOLDEN. Mirrors the
// snapshot_uri contract (field 8).
GoldenSnapshotUri string `protobuf:"bytes,13,opt,name=golden_snapshot_uri,json=goldenSnapshotUri,proto3" json:"golden_snapshot_uri,omitempty"`
// The actor's declared size, from the ActorTemplate's resource limits. Used to
// (re)size the sandbox on a DATA-scope restore (fresh guest container). On a
// FULL micro-VM restore the size baked into the snapshot is authoritative and
// these are ignored. Zero means "unset": keep the runtime default.
CpuMilli int64 `protobuf:"varint,14,opt,name=cpu_milli,json=cpuMilli,proto3" json:"cpu_milli,omitempty"` // CPU limit in millicores (1000 = one core).
MemoryBytes int64 `protobuf:"varint,15,opt,name=memory_bytes,json=memoryBytes,proto3" json:"memory_bytes,omitempty"` // Memory limit in bytes.
// contains filtered or unexported fields
}
func (*RestoreWorkloadRequest) Descriptor
deprecated
func (*RestoreWorkloadRequest) Descriptor() ([]byte, []int)
Deprecated: Use RestoreWorkloadRequest.ProtoReflect.Descriptor instead.
func (*RestoreWorkloadRequest) GetActorName ¶
func (x *RestoreWorkloadRequest) GetActorName() string
func (*RestoreWorkloadRequest) GetActorTemplateAtespace ¶
func (x *RestoreWorkloadRequest) GetActorTemplateAtespace() string
func (*RestoreWorkloadRequest) GetActorTemplateName ¶
func (x *RestoreWorkloadRequest) GetActorTemplateName() string
func (*RestoreWorkloadRequest) GetActorUid ¶
func (x *RestoreWorkloadRequest) GetActorUid() string
func (*RestoreWorkloadRequest) GetAtespace ¶
func (x *RestoreWorkloadRequest) GetAtespace() string
func (*RestoreWorkloadRequest) GetCpuMilli ¶
func (x *RestoreWorkloadRequest) GetCpuMilli() int64
func (*RestoreWorkloadRequest) GetEgressGateway ¶
func (x *RestoreWorkloadRequest) GetEgressGateway() *EgressGateway
func (*RestoreWorkloadRequest) GetGoldenSnapshotUri ¶
func (x *RestoreWorkloadRequest) GetGoldenSnapshotUri() string
func (*RestoreWorkloadRequest) GetMemoryBytes ¶
func (x *RestoreWorkloadRequest) GetMemoryBytes() int64
func (*RestoreWorkloadRequest) GetRunscPath ¶
func (x *RestoreWorkloadRequest) GetRunscPath() string
func (*RestoreWorkloadRequest) GetRuntimeAssetPaths ¶
func (x *RestoreWorkloadRequest) GetRuntimeAssetPaths() map[string]string
func (*RestoreWorkloadRequest) GetScope ¶
func (x *RestoreWorkloadRequest) GetScope() SnapshotScope
func (*RestoreWorkloadRequest) GetSnapshotUri ¶
func (x *RestoreWorkloadRequest) GetSnapshotUri() string
func (*RestoreWorkloadRequest) GetSpec ¶
func (x *RestoreWorkloadRequest) GetSpec() *WorkloadSpec
func (*RestoreWorkloadRequest) ProtoMessage ¶
func (*RestoreWorkloadRequest) ProtoMessage()
func (*RestoreWorkloadRequest) ProtoReflect ¶
func (x *RestoreWorkloadRequest) ProtoReflect() protoreflect.Message
func (*RestoreWorkloadRequest) Reset ¶
func (x *RestoreWorkloadRequest) Reset()
func (*RestoreWorkloadRequest) String ¶
func (x *RestoreWorkloadRequest) String() string
type RestoreWorkloadResponse ¶
type RestoreWorkloadResponse struct {
// contains filtered or unexported fields
}
func (*RestoreWorkloadResponse) Descriptor
deprecated
func (*RestoreWorkloadResponse) Descriptor() ([]byte, []int)
Deprecated: Use RestoreWorkloadResponse.ProtoReflect.Descriptor instead.
func (*RestoreWorkloadResponse) ProtoMessage ¶
func (*RestoreWorkloadResponse) ProtoMessage()
func (*RestoreWorkloadResponse) ProtoReflect ¶
func (x *RestoreWorkloadResponse) ProtoReflect() protoreflect.Message
func (*RestoreWorkloadResponse) Reset ¶
func (x *RestoreWorkloadResponse) Reset()
func (*RestoreWorkloadResponse) String ¶
func (x *RestoreWorkloadResponse) String() string
type RunWorkloadRequest ¶
type RunWorkloadRequest struct {
Atespace string `protobuf:"bytes,1,opt,name=atespace,proto3" json:"atespace,omitempty"`
ActorName string `protobuf:"bytes,2,opt,name=actor_name,json=actorName,proto3" json:"actor_name,omitempty"`
ActorUid string `protobuf:"bytes,3,opt,name=actor_uid,json=actorUid,proto3" json:"actor_uid,omitempty"`
ActorTemplateAtespace string `` /* 126-byte string literal not displayed */
ActorTemplateName string `protobuf:"bytes,5,opt,name=actor_template_name,json=actorTemplateName,proto3" json:"actor_template_name,omitempty"`
RunscPath string `protobuf:"bytes,6,opt,name=runsc_path,json=runscPath,proto3" json:"runsc_path,omitempty"`
Spec *WorkloadSpec `protobuf:"bytes,7,opt,name=spec,proto3" json:"spec,omitempty"`
// runtime_asset_paths maps a runtime asset name (e.g. "cloud-hypervisor",
// "virtiofsd", "kata-kernel", "kata-image", "kata-config")
// to the local on-disk path atelet fetched it to (content-addressed, like
// runsc_path). Empty for the gVisor runtime, which uses runsc_path.
RuntimeAssetPaths map[string]string `` /* 188-byte string literal not displayed */
// When absent, actor traffic uses direct egress instead of atunnel.
EgressGateway *EgressGateway `protobuf:"bytes,10,opt,name=egress_gateway,json=egressGateway,proto3,oneof" json:"egress_gateway,omitempty"`
// The actor's declared size, from the ActorTemplate's resource limits. ateom
// sizes the sandbox to these (cgroup caps via the OCI spec, and for the
// micro-VM the VM's vCPU count and memory). Zero means "unset": keep the
// runtime default (unlimited for gVisor, the kata config for the micro-VM).
CpuMilli int64 `protobuf:"varint,11,opt,name=cpu_milli,json=cpuMilli,proto3" json:"cpu_milli,omitempty"` // CPU limit in millicores (1000 = one core).
MemoryBytes int64 `protobuf:"varint,12,opt,name=memory_bytes,json=memoryBytes,proto3" json:"memory_bytes,omitempty"` // Memory limit in bytes.
// contains filtered or unexported fields
}
func (*RunWorkloadRequest) Descriptor
deprecated
func (*RunWorkloadRequest) Descriptor() ([]byte, []int)
Deprecated: Use RunWorkloadRequest.ProtoReflect.Descriptor instead.
func (*RunWorkloadRequest) GetActorName ¶
func (x *RunWorkloadRequest) GetActorName() string
func (*RunWorkloadRequest) GetActorTemplateAtespace ¶
func (x *RunWorkloadRequest) GetActorTemplateAtespace() string
func (*RunWorkloadRequest) GetActorTemplateName ¶
func (x *RunWorkloadRequest) GetActorTemplateName() string
func (*RunWorkloadRequest) GetActorUid ¶
func (x *RunWorkloadRequest) GetActorUid() string
func (*RunWorkloadRequest) GetAtespace ¶
func (x *RunWorkloadRequest) GetAtespace() string
func (*RunWorkloadRequest) GetCpuMilli ¶
func (x *RunWorkloadRequest) GetCpuMilli() int64
func (*RunWorkloadRequest) GetEgressGateway ¶
func (x *RunWorkloadRequest) GetEgressGateway() *EgressGateway
func (*RunWorkloadRequest) GetMemoryBytes ¶
func (x *RunWorkloadRequest) GetMemoryBytes() int64
func (*RunWorkloadRequest) GetRunscPath ¶
func (x *RunWorkloadRequest) GetRunscPath() string
func (*RunWorkloadRequest) GetRuntimeAssetPaths ¶
func (x *RunWorkloadRequest) GetRuntimeAssetPaths() map[string]string
func (*RunWorkloadRequest) GetSpec ¶
func (x *RunWorkloadRequest) GetSpec() *WorkloadSpec
func (*RunWorkloadRequest) ProtoMessage ¶
func (*RunWorkloadRequest) ProtoMessage()
func (*RunWorkloadRequest) ProtoReflect ¶
func (x *RunWorkloadRequest) ProtoReflect() protoreflect.Message
func (*RunWorkloadRequest) Reset ¶
func (x *RunWorkloadRequest) Reset()
func (*RunWorkloadRequest) String ¶
func (x *RunWorkloadRequest) String() string
type RunWorkloadResponse ¶
type RunWorkloadResponse struct {
// contains filtered or unexported fields
}
func (*RunWorkloadResponse) Descriptor
deprecated
func (*RunWorkloadResponse) Descriptor() ([]byte, []int)
Deprecated: Use RunWorkloadResponse.ProtoReflect.Descriptor instead.
func (*RunWorkloadResponse) ProtoMessage ¶
func (*RunWorkloadResponse) ProtoMessage()
func (*RunWorkloadResponse) ProtoReflect ¶
func (x *RunWorkloadResponse) ProtoReflect() protoreflect.Message
func (*RunWorkloadResponse) Reset ¶
func (x *RunWorkloadResponse) Reset()
func (*RunWorkloadResponse) String ¶
func (x *RunWorkloadResponse) String() string
type SandboxClass ¶
type SandboxClass int32
SandboxClass is the sandbox runtime family that produced a sample. Mirrors the ate.dev/v1alpha1 SandboxClass the WorkerPool and ActorTemplate are configured with; an ateom binary only ever reports its own.
const ( SandboxClass_SANDBOX_CLASS_UNSPECIFIED SandboxClass = 0 // gVisor / runsc (cmd/ateom-gvisor). SandboxClass_SANDBOX_CLASS_GVISOR SandboxClass = 1 // Micro-VM (cmd/ateom-microvm). SandboxClass_SANDBOX_CLASS_MICROVM SandboxClass = 2 )
func (SandboxClass) Descriptor ¶
func (SandboxClass) Descriptor() protoreflect.EnumDescriptor
func (SandboxClass) Enum ¶
func (x SandboxClass) Enum() *SandboxClass
func (SandboxClass) EnumDescriptor
deprecated
func (SandboxClass) EnumDescriptor() ([]byte, []int)
Deprecated: Use SandboxClass.Descriptor instead.
func (SandboxClass) Number ¶
func (x SandboxClass) Number() protoreflect.EnumNumber
func (SandboxClass) String ¶
func (x SandboxClass) String() string
func (SandboxClass) Type ¶
func (SandboxClass) Type() protoreflect.EnumType
type SnapshotScope ¶
type SnapshotScope int32
const ( // Not valid option; should never happen. SnapshotScope_SNAPSHOT_SCOPE_UNSPECIFIED SnapshotScope = 0 // Capture process memory plus the full filesystem delta on top of the OCI // image (including any attached DurableDir volumes). SnapshotScope_SNAPSHOT_SCOPE_FULL SnapshotScope = 1 // Capture only the contents of attached volumes that support snapshots // (currently DurableDir-typed volumes). Memory and the rest of rootfs are // excluded. SnapshotScope_SNAPSHOT_SCOPE_DATA SnapshotScope = 2 // Restore-only: restore the ActorTemplate's golden snapshot's guest state // (memory + full filesystem delta) combined with the snapshot's durable // data. Never valid for CheckpointWorkload — snapshots only ever capture // FULL or DATA; the control plane selects this scope at restore per the // template's onResume configuration. SnapshotScope_SNAPSHOT_SCOPE_DATA_ON_GOLDEN SnapshotScope = 3 )
func (SnapshotScope) Descriptor ¶
func (SnapshotScope) Descriptor() protoreflect.EnumDescriptor
func (SnapshotScope) Enum ¶
func (x SnapshotScope) Enum() *SnapshotScope
func (SnapshotScope) EnumDescriptor
deprecated
func (SnapshotScope) EnumDescriptor() ([]byte, []int)
Deprecated: Use SnapshotScope.Descriptor instead.
func (SnapshotScope) Number ¶
func (x SnapshotScope) Number() protoreflect.EnumNumber
func (SnapshotScope) String ¶
func (x SnapshotScope) String() string
func (SnapshotScope) Type ¶
func (SnapshotScope) Type() protoreflect.EnumType
type StatsSource ¶
type StatsSource int32
StatsSource is how a sample's measurements were obtained. The two are not measured the same way and should not be compared against each other as though they were.
const ( // No measurement was taken. StatsSource_STATS_SOURCE_UNSPECIFIED StatsSource = 0 // Read from the sandbox's cgroup on the host. StatsSource_STATS_SOURCE_CGROUP StatsSource = 1 // Read from inside the guest, over the guest agent's vsock connection. What // it counts is the workload's own containers, as the guest kernel accounts // for them: the guest kernel itself, the agent, and the VMM process on the // host are overhead this source cannot see. The cgroup source above is the // other way round -- the sandbox's host process is one process, so its // runtime's overhead is charged along with the workload's. StatsSource_STATS_SOURCE_GUEST_AGENT StatsSource = 2 )
func (StatsSource) Descriptor ¶
func (StatsSource) Descriptor() protoreflect.EnumDescriptor
func (StatsSource) Enum ¶
func (x StatsSource) Enum() *StatsSource
func (StatsSource) EnumDescriptor
deprecated
func (StatsSource) EnumDescriptor() ([]byte, []int)
Deprecated: Use StatsSource.Descriptor instead.
func (StatsSource) Number ¶
func (x StatsSource) Number() protoreflect.EnumNumber
func (StatsSource) String ¶
func (x StatsSource) String() string
func (StatsSource) Type ¶
func (StatsSource) Type() protoreflect.EnumType
type SystemInfoVolumeMount ¶
type SystemInfoVolumeMount struct {
// volume_name is the name the ActorTemplate gave the volume. It selects the
// per-volume directory atelet prepared for the actor on the host.
VolumeName string `protobuf:"bytes,1,opt,name=volume_name,json=volumeName,proto3" json:"volume_name,omitempty"`
// mount_path is where the container sees the volume.
MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"`
// contains filtered or unexported fields
}
SystemInfoVolumeMount is one system-info volume mounted (read-only) into a container. Unlike durable-dir volumes, system-info contents are generated by atelet on every Run/Restore and are never captured into snapshots.
func (*SystemInfoVolumeMount) Descriptor
deprecated
func (*SystemInfoVolumeMount) Descriptor() ([]byte, []int)
Deprecated: Use SystemInfoVolumeMount.ProtoReflect.Descriptor instead.
func (*SystemInfoVolumeMount) GetMountPath ¶
func (x *SystemInfoVolumeMount) GetMountPath() string
func (*SystemInfoVolumeMount) GetVolumeName ¶
func (x *SystemInfoVolumeMount) GetVolumeName() string
func (*SystemInfoVolumeMount) ProtoMessage ¶
func (*SystemInfoVolumeMount) ProtoMessage()
func (*SystemInfoVolumeMount) ProtoReflect ¶
func (x *SystemInfoVolumeMount) ProtoReflect() protoreflect.Message
func (*SystemInfoVolumeMount) Reset ¶
func (x *SystemInfoVolumeMount) Reset()
func (*SystemInfoVolumeMount) String ¶
func (x *SystemInfoVolumeMount) String() string
type TerminateWorkloadRequest ¶
type TerminateWorkloadRequest struct {
Atespace string `protobuf:"bytes,1,opt,name=atespace,proto3" json:"atespace,omitempty"`
ActorName string `protobuf:"bytes,2,opt,name=actor_name,json=actorName,proto3" json:"actor_name,omitempty"`
ActorUid string `protobuf:"bytes,3,opt,name=actor_uid,json=actorUid,proto3" json:"actor_uid,omitempty"`
ActorTemplateAtespace string `` /* 126-byte string literal not displayed */
ActorTemplateName string `protobuf:"bytes,5,opt,name=actor_template_name,json=actorTemplateName,proto3" json:"actor_template_name,omitempty"`
RunscPath string `protobuf:"bytes,6,opt,name=runsc_path,json=runscPath,proto3" json:"runsc_path,omitempty"`
Spec *WorkloadSpec `protobuf:"bytes,7,opt,name=spec,proto3" json:"spec,omitempty"`
// contains filtered or unexported fields
}
func (*TerminateWorkloadRequest) Descriptor
deprecated
func (*TerminateWorkloadRequest) Descriptor() ([]byte, []int)
Deprecated: Use TerminateWorkloadRequest.ProtoReflect.Descriptor instead.
func (*TerminateWorkloadRequest) GetActorName ¶
func (x *TerminateWorkloadRequest) GetActorName() string
func (*TerminateWorkloadRequest) GetActorTemplateAtespace ¶
func (x *TerminateWorkloadRequest) GetActorTemplateAtespace() string
func (*TerminateWorkloadRequest) GetActorTemplateName ¶
func (x *TerminateWorkloadRequest) GetActorTemplateName() string
func (*TerminateWorkloadRequest) GetActorUid ¶
func (x *TerminateWorkloadRequest) GetActorUid() string
func (*TerminateWorkloadRequest) GetAtespace ¶
func (x *TerminateWorkloadRequest) GetAtespace() string
func (*TerminateWorkloadRequest) GetRunscPath ¶
func (x *TerminateWorkloadRequest) GetRunscPath() string
func (*TerminateWorkloadRequest) GetSpec ¶
func (x *TerminateWorkloadRequest) GetSpec() *WorkloadSpec
func (*TerminateWorkloadRequest) ProtoMessage ¶
func (*TerminateWorkloadRequest) ProtoMessage()
func (*TerminateWorkloadRequest) ProtoReflect ¶
func (x *TerminateWorkloadRequest) ProtoReflect() protoreflect.Message
func (*TerminateWorkloadRequest) Reset ¶
func (x *TerminateWorkloadRequest) Reset()
func (*TerminateWorkloadRequest) String ¶
func (x *TerminateWorkloadRequest) String() string
type TerminateWorkloadResponse ¶
type TerminateWorkloadResponse struct {
// contains filtered or unexported fields
}
func (*TerminateWorkloadResponse) Descriptor
deprecated
func (*TerminateWorkloadResponse) Descriptor() ([]byte, []int)
Deprecated: Use TerminateWorkloadResponse.ProtoReflect.Descriptor instead.
func (*TerminateWorkloadResponse) ProtoMessage ¶
func (*TerminateWorkloadResponse) ProtoMessage()
func (*TerminateWorkloadResponse) ProtoReflect ¶
func (x *TerminateWorkloadResponse) ProtoReflect() protoreflect.Message
func (*TerminateWorkloadResponse) Reset ¶
func (x *TerminateWorkloadResponse) Reset()
func (*TerminateWorkloadResponse) String ¶
func (x *TerminateWorkloadResponse) String() string
type UnimplementedAteomServer ¶
type UnimplementedAteomServer struct{}
UnimplementedAteomServer must be embedded to have forward compatible implementations.
NOTE: this should be embedded by value instead of pointer to avoid a nil pointer dereference when methods are called.
func (UnimplementedAteomServer) CheckpointWorkload ¶
func (UnimplementedAteomServer) CheckpointWorkload(context.Context, *CheckpointWorkloadRequest) (*CheckpointWorkloadResponse, error)
func (UnimplementedAteomServer) GetActiveWorkloadStats ¶
func (UnimplementedAteomServer) GetActiveWorkloadStats(context.Context, *GetActiveWorkloadStatsRequest) (*GetActiveWorkloadStatsResponse, error)
func (UnimplementedAteomServer) GetWorkloadStats ¶
func (UnimplementedAteomServer) GetWorkloadStats(context.Context, *GetWorkloadStatsRequest) (*GetWorkloadStatsResponse, error)
func (UnimplementedAteomServer) RestoreWorkload ¶
func (UnimplementedAteomServer) RestoreWorkload(context.Context, *RestoreWorkloadRequest) (*RestoreWorkloadResponse, error)
func (UnimplementedAteomServer) RunWorkload ¶
func (UnimplementedAteomServer) RunWorkload(context.Context, *RunWorkloadRequest) (*RunWorkloadResponse, error)
func (UnimplementedAteomServer) TerminateWorkload ¶
func (UnimplementedAteomServer) TerminateWorkload(context.Context, *TerminateWorkloadRequest) (*TerminateWorkloadResponse, error)
type UnsafeAteomServer ¶
type UnsafeAteomServer interface {
// contains filtered or unexported methods
}
UnsafeAteomServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to AteomServer will result in compilation errors.
type VolumeMount ¶
type VolumeMount struct {
VolumeName string `protobuf:"bytes,1,opt,name=volume_name,json=volumeName,proto3" json:"volume_name,omitempty"`
MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"`
// contains filtered or unexported fields
}
VolumeMount is one volume mounted into a container.
func (*VolumeMount) Descriptor
deprecated
func (*VolumeMount) Descriptor() ([]byte, []int)
Deprecated: Use VolumeMount.ProtoReflect.Descriptor instead.
func (*VolumeMount) GetMountPath ¶
func (x *VolumeMount) GetMountPath() string
func (*VolumeMount) GetVolumeName ¶
func (x *VolumeMount) GetVolumeName() string
func (*VolumeMount) ProtoMessage ¶
func (*VolumeMount) ProtoMessage()
func (*VolumeMount) ProtoReflect ¶
func (x *VolumeMount) ProtoReflect() protoreflect.Message
func (*VolumeMount) Reset ¶
func (x *VolumeMount) Reset()
func (*VolumeMount) String ¶
func (x *VolumeMount) String() string
type WorkloadSpec ¶
type WorkloadSpec struct {
Containers []*Container `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"`
// contains filtered or unexported fields
}
WorkloadSpec parallels Pod, but with far fewer configurable fields.
func (*WorkloadSpec) Descriptor
deprecated
func (*WorkloadSpec) Descriptor() ([]byte, []int)
Deprecated: Use WorkloadSpec.ProtoReflect.Descriptor instead.
func (*WorkloadSpec) GetContainers ¶
func (x *WorkloadSpec) GetContainers() []*Container
func (*WorkloadSpec) ProtoMessage ¶
func (*WorkloadSpec) ProtoMessage()
func (*WorkloadSpec) ProtoReflect ¶
func (x *WorkloadSpec) ProtoReflect() protoreflect.Message
func (*WorkloadSpec) Reset ¶
func (x *WorkloadSpec) Reset()
func (*WorkloadSpec) String ¶
func (x *WorkloadSpec) String() string
type WorkloadStatsSample ¶
type WorkloadStatsSample struct {
// Identity of the measured actor, retained by ateom from the
// RunWorkloadRequest / RestoreWorkloadRequest that started it. Echoed back so
// the caller can attribute the sample without holding its own mapping from
// worker to actor.
Atespace string `protobuf:"bytes,1,opt,name=atespace,proto3" json:"atespace,omitempty"`
ActorName string `protobuf:"bytes,2,opt,name=actor_name,json=actorName,proto3" json:"actor_name,omitempty"`
ActorUid string `protobuf:"bytes,3,opt,name=actor_uid,json=actorUid,proto3" json:"actor_uid,omitempty"`
ActorTemplateAtespace string `` /* 126-byte string literal not displayed */
ActorTemplateName string `protobuf:"bytes,5,opt,name=actor_template_name,json=actorTemplateName,proto3" json:"actor_template_name,omitempty"`
// The sandbox runtime family that produced this sample.
SandboxClass SandboxClass `protobuf:"varint,6,opt,name=sandbox_class,json=sandboxClass,proto3,enum=ateom.SandboxClass" json:"sandbox_class,omitempty"`
// How the measurements below were obtained.
Source StatsSource `protobuf:"varint,7,opt,name=source,proto3,enum=ateom.StatsSource" json:"source,omitempty"`
// Measurements. All four are zero when source is STATS_SOURCE_UNSPECIFIED,
// which means "not measured" rather than "measured as zero".
//
// Two of them accumulate -- memory_peak_bytes and cpu_usage_usec -- and both
// are scoped to the current EPOCH rather than to the actor's lifetime. An
// epoch begins wherever the accounting behind the sample begins, which is not
// the same event for every source: STATS_SOURCE_CGROUP reads a sandbox cgroup
// that a restore recreates, so both restart at zero there, while
// STATS_SOURCE_GUEST_AGENT reads counters the guest kernel keeps in its own
// RAM, which a restored guest brings back with it. A caller that wants a
// lifetime figure has to accumulate one itself, and must read a decrease as a
// new epoch rather than emit a negative delta -- but not the converse. An
// epoch can also begin at a value above the last one reported, so no
// comparison of consecutive samples detects every boundary.
MemoryCurrentBytes uint64 `protobuf:"varint,8,opt,name=memory_current_bytes,json=memoryCurrentBytes,proto3" json:"memory_current_bytes,omitempty"`
// High-water mark of memory_current_bytes within the current epoch. Also zero
// when the runtime cannot report a peak at all: the cgroup source reads
// memory.peak, which only exists on Linux 5.19 and later.
MemoryPeakBytes uint64 `protobuf:"varint,9,opt,name=memory_peak_bytes,json=memoryPeakBytes,proto3" json:"memory_peak_bytes,omitempty"`
// memory_current_bytes less the reclaimable page cache, floored at zero. This
// is the figure to compare against a memory limit; memory_current_bytes
// drifts upward with cache the kernel would drop for free under pressure.
MemoryWorkingSetBytes uint64 `` /* 130-byte string literal not displayed */
// Cumulative CPU time within the current epoch.
CpuUsageUsec uint64 `protobuf:"varint,11,opt,name=cpu_usage_usec,json=cpuUsageUsec,proto3" json:"cpu_usage_usec,omitempty"`
ObservedAtUnixNano int64 `protobuf:"varint,12,opt,name=observed_at_unix_nano,json=observedAtUnixNano,proto3" json:"observed_at_unix_nano,omitempty"`
// contains filtered or unexported fields
}
WorkloadStatsSample is one resource-usage sample for an executing workload, shared by both stats reads. The unit of measurement is the SANDBOX, which today equals the actor. Per-container attribution is not reported: the micro-VM source could give it, since the guest keeps a cgroup per container and ateom sums them, but the gVisor source cannot split one at all without the sentry's own accounting, and a field only one runtime could ever fill would be worse than none.
func (*WorkloadStatsSample) Descriptor
deprecated
func (*WorkloadStatsSample) Descriptor() ([]byte, []int)
Deprecated: Use WorkloadStatsSample.ProtoReflect.Descriptor instead.
func (*WorkloadStatsSample) GetActorName ¶
func (x *WorkloadStatsSample) GetActorName() string
func (*WorkloadStatsSample) GetActorTemplateAtespace ¶
func (x *WorkloadStatsSample) GetActorTemplateAtespace() string
func (*WorkloadStatsSample) GetActorTemplateName ¶
func (x *WorkloadStatsSample) GetActorTemplateName() string
func (*WorkloadStatsSample) GetActorUid ¶
func (x *WorkloadStatsSample) GetActorUid() string
func (*WorkloadStatsSample) GetAtespace ¶
func (x *WorkloadStatsSample) GetAtespace() string
func (*WorkloadStatsSample) GetCpuUsageUsec ¶
func (x *WorkloadStatsSample) GetCpuUsageUsec() uint64
func (*WorkloadStatsSample) GetMemoryCurrentBytes ¶
func (x *WorkloadStatsSample) GetMemoryCurrentBytes() uint64
func (*WorkloadStatsSample) GetMemoryPeakBytes ¶
func (x *WorkloadStatsSample) GetMemoryPeakBytes() uint64
func (*WorkloadStatsSample) GetMemoryWorkingSetBytes ¶
func (x *WorkloadStatsSample) GetMemoryWorkingSetBytes() uint64
func (*WorkloadStatsSample) GetObservedAtUnixNano ¶
func (x *WorkloadStatsSample) GetObservedAtUnixNano() int64
func (*WorkloadStatsSample) GetSandboxClass ¶
func (x *WorkloadStatsSample) GetSandboxClass() SandboxClass
func (*WorkloadStatsSample) GetSource ¶
func (x *WorkloadStatsSample) GetSource() StatsSource
func (*WorkloadStatsSample) ProtoMessage ¶
func (*WorkloadStatsSample) ProtoMessage()
func (*WorkloadStatsSample) ProtoReflect ¶
func (x *WorkloadStatsSample) ProtoReflect() protoreflect.Message
func (*WorkloadStatsSample) Reset ¶
func (x *WorkloadStatsSample) Reset()
func (*WorkloadStatsSample) String ¶
func (x *WorkloadStatsSample) String() string