v1alpha1

package
v0.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2025 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the orchestration v1alpha1 API group +kubebuilder:object:generate=true +groupName=orchestration.aibrix.ai

Index

Constants

View Source
const (
	StormServiceKind = "StormService"
	RoleSetKind      = "RoleSet"
)
View Source
const (
	// DefaultStormServiceUniqueLabelKey is the default key of the selector that is added
	// to existing ReplicaSets (and label key that is added to its workloads) to prevent the existing ReplicaSets
	// to select new workloads (and old workloads being select by new ReplicaSet).
	DefaultStormServiceUniqueLabelKey string = "stormservice-template-hash"
)
View Source
const (
	// RayClusterReplicaSetReplicaFailure is added in a replica set when one of its ray cluster fails to be created
	// due to insufficient quota, limit ranges, pod security policy, node selectors, etc. or deleted
	// due to kubelet being down or finalizers are failing.
	RayClusterReplicaSetReplicaFailure string = "ReplicaFailure"
)

These are valid conditions of a replica set.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "orchestration.aibrix.ai", Version: "v1alpha1"}

	// SchemeGroupVersion is group version used to register these objects.
	SchemeGroupVersion = GroupVersion

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

func Resource

func Resource(resource string) schema.GroupResource

Types

type Condition added in v0.4.0

type Condition struct {
	// Type of this condition. At most one of each condition type may apply to a resource at any point in time.
	Type ConditionType `json:"type"`

	// Status of this condition; is it currently True, False, or Unknown?
	Status corev1.ConditionStatus `json:"status"`

	// LastTransitionTime is the last time this condition transitioned from one status to another.
	// +optional
	LastTransitionTime *metav1.Time `json:"lastTransitionTime,omitempty"`

	// LastUpdateTime is the last time this condition was updated.
	// +optional
	LastUpdateTime *metav1.Time `json:"lastUpdateTime,omitempty"`

	// LastUpdateMicroTime is the last time with microsecond level precision this condition was updated.
	// +optional
	LastUpdateMicroTime *metav1.MicroTime `json:"lastUpdateMicroTime,omitempty"`

	// The Reason for the condition's last transition.
	Reason string `json:"reason,omitempty"`

	// A Message containing details about this condition's last transition from one status to another, if any.
	// +optional
	Message string `json:"message,omitempty"`
}

A Condition that may apply to a resource.

func NewCondition added in v0.4.0

func NewCondition(ct ConditionType, status corev1.ConditionStatus, msg string) Condition

func (*Condition) DeepCopy added in v0.4.0

func (in *Condition) DeepCopy() *Condition

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Condition.

func (*Condition) DeepCopyInto added in v0.4.0

func (in *Condition) DeepCopyInto(out *Condition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Condition) Equal added in v0.4.0

func (c *Condition) Equal(candidate *Condition) bool

Equal used to judge weather two condition is equal. LastTransitionTime, LastUpdateTime and LastUpdateMicroTime is ignored.

type ConditionType added in v0.4.0

type ConditionType string

A ConditionType represents a condition a resource could be in.

const (
	// RoleSetReady means the roleSet meeting the minimal requirements for the roleSet to be considered ready.
	RoleSetReady          ConditionType = "Ready"
	RoleSetReplicaFailure ConditionType = "ReplicaFailure"
	RoleSetProgressing    ConditionType = "Progressing"
)

These are valid conditions of roleSet.

const (
	// StormServiceReady means the stormService is ready, ie. at least the minimum available
	// replicas required are up.
	StormServiceReady ConditionType = "Ready"
	// StormServiceProgressing means the stormService is progressing. Progress for a stormService is
	// considered when it has more than one active replicaSet.
	StormServiceProgressing ConditionType = "Progressing"
	// StormServiceReplicaFailure is added in a stormService when one of its workloads fails to be created
	// or deleted.
	StormServiceReplicaFailure ConditionType = "ReplicaFailure"
)

These are valid conditions of a stormService.

type Conditions added in v0.4.0

type Conditions []Condition

Conditions reflects the observed status of a resource. Only one condition of each type may exist.

func (Conditions) DeepCopy added in v0.4.0

func (in Conditions) DeepCopy() Conditions

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Conditions.

func (Conditions) DeepCopyInto added in v0.4.0

func (in Conditions) DeepCopyInto(out *Conditions)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (Conditions) GetCondition added in v0.4.0

func (s Conditions) GetCondition(ct ConditionType) Condition

GetCondition returns the condition for the given ConditionType if exists, otherwise returns nil

func (*Conditions) SetConditions added in v0.4.0

func (s *Conditions) SetConditions(conditions ...Condition)

SetConditions sets the supplied conditions, replacing any existing conditions of the same type. This is a no-op if all supplied conditions are identical, ignoring the last transition time, to those already set.

type DisruptionTolerance added in v0.4.0

type DisruptionTolerance struct {
	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
}

func (*DisruptionTolerance) DeepCopy added in v0.4.0

func (in *DisruptionTolerance) DeepCopy() *DisruptionTolerance

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DisruptionTolerance.

func (*DisruptionTolerance) DeepCopyInto added in v0.4.0

func (in *DisruptionTolerance) DeepCopyInto(out *DisruptionTolerance)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalConnectionConfig

type ExternalConnectionConfig struct {
	// Address to connect to (host:port)
	Address string `json:"address,omitempty"`

	// Optional secret reference for password or credential
	PasswordSecretRef string `json:"passwordSecretRef,omitempty"`
}

ExternalConnectionConfig holds config for connecting to external metadata service

func (*ExternalConnectionConfig) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalConnectionConfig.

func (*ExternalConnectionConfig) DeepCopyInto

func (in *ExternalConnectionConfig) DeepCopyInto(out *ExternalConnectionConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KVCache

type KVCache struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   KVCacheSpec   `json:"spec,omitempty"`
	Status KVCacheStatus `json:"status,omitempty"`
}

KVCache is the Schema for the kvcaches API

func (*KVCache) DeepCopy

func (in *KVCache) DeepCopy() *KVCache

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KVCache.

func (*KVCache) DeepCopyInto

func (in *KVCache) DeepCopyInto(out *KVCache)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KVCache) DeepCopyObject

func (in *KVCache) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type KVCacheList

type KVCacheList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []KVCache `json:"items"`
}

KVCacheList contains a list of KVCache

func (*KVCacheList) DeepCopy

func (in *KVCacheList) DeepCopy() *KVCacheList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KVCacheList.

func (*KVCacheList) DeepCopyInto

func (in *KVCacheList) DeepCopyInto(out *KVCacheList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KVCacheList) DeepCopyObject

func (in *KVCacheList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type KVCacheSpec

type KVCacheSpec struct {
	// +kubebuilder:default:=distributed
	Mode string `json:"mode,omitempty"` // centralized | distributed

	// Metadata configuration for kv cache service
	// +kubebuilder:validation:Optional
	Metadata *MetadataSpec `json:"metadata,omitempty"`

	// kvcache dataplane container configuration
	// +kubebuilder:validation:Optional
	//nolint: lll
	// +kubebuilder:default:={image: "aibrix/kvcache:20241120", imagePullPolicy: "IfNotPresent"}
	Cache RuntimeSpec `json:"cache,omitempty"`

	// kvcache watcher pod for member registration
	// +kubebuilder:validation:Optional
	Watcher *RuntimeSpec `json:"watcher,omitempty"`

	// cache's service
	// +kubebuilder:validation:Optional
	Service ServiceSpec `json:"service,omitempty"`
}

KVCacheSpec defines the desired state of KVCache

func (*KVCacheSpec) DeepCopy

func (in *KVCacheSpec) DeepCopy() *KVCacheSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KVCacheSpec.

func (*KVCacheSpec) DeepCopyInto

func (in *KVCacheSpec) DeepCopyInto(out *KVCacheSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KVCacheStatus

type KVCacheStatus struct {
	// Total replicas of current running kv cache instances.
	ReadyReplicas int32 `json:"current,omitempty"`
	// Represents the kv cache deployment's current state.
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

KVCacheStatus defines the observed state of KVCache

func (*KVCacheStatus) DeepCopy

func (in *KVCacheStatus) DeepCopy() *KVCacheStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KVCacheStatus.

func (*KVCacheStatus) DeepCopyInto

func (in *KVCacheStatus) DeepCopyInto(out *KVCacheStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MetadataConfig

type MetadataConfig struct {
	ExternalConnection *ExternalConnectionConfig `json:"externalConnection,omitempty"`
	Runtime            *RuntimeSpec              `json:"runtime,omitempty"`
}

MetadataConfig provides the configuration fields for deploying Redis.

func (*MetadataConfig) DeepCopy

func (in *MetadataConfig) DeepCopy() *MetadataConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataConfig.

func (*MetadataConfig) DeepCopyInto

func (in *MetadataConfig) DeepCopyInto(out *MetadataConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MetadataSpec

type MetadataSpec struct {
	Redis *MetadataConfig `json:"redis,omitempty"`
	Etcd  *MetadataConfig `json:"etcd,omitempty"`
}

MetadataSpec holds deployment or external connection config for metadata services

func (*MetadataSpec) DeepCopy

func (in *MetadataSpec) DeepCopy() *MetadataSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataSpec.

func (*MetadataSpec) DeepCopyInto

func (in *MetadataSpec) DeepCopyInto(out *MetadataSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RayClusterFleet

type RayClusterFleet struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   RayClusterFleetSpec   `json:"spec,omitempty"`
	Status RayClusterFleetStatus `json:"status,omitempty"`
}

RayClusterFleet is the Schema for the rayclusterfleets API

func (*RayClusterFleet) DeepCopy

func (in *RayClusterFleet) DeepCopy() *RayClusterFleet

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterFleet.

func (*RayClusterFleet) DeepCopyInto

func (in *RayClusterFleet) DeepCopyInto(out *RayClusterFleet)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RayClusterFleet) DeepCopyObject

func (in *RayClusterFleet) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RayClusterFleetCondition

type RayClusterFleetCondition struct {
	// Type of deployment condition.
	Type RayClusterFleetConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=DeploymentConditionType"`
	// Status of the condition, one of True, False, Unknown.
	Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"`
	// The last time this condition was updated.
	LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,6,opt,name=lastUpdateTime"`
	// Last time the condition transitioned from one status to another.
	LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,7,opt,name=lastTransitionTime"`
	// The reason for the condition's last transition.
	Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"`
	// A human readable message indicating details about the transition.
	Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
}

DeploymentCondition describes the state of a deployment at a certain point.

func (*RayClusterFleetCondition) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterFleetCondition.

func (*RayClusterFleetCondition) DeepCopyInto

func (in *RayClusterFleetCondition) DeepCopyInto(out *RayClusterFleetCondition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RayClusterFleetConditionType

type RayClusterFleetConditionType string
const (
	// Available means the deployment is available, ie. at least the minimum available
	// replicas required are up and running for at least minReadySeconds.
	RayClusterFleetAvailable RayClusterFleetConditionType = "Available"
	// Progressing means the deployment is progressing. Progress for a deployment is
	// considered when a new replica set is created or adopted, and when new pods scale
	// up or old pods scale down. Progress is not estimated for paused deployments or
	// when progressDeadlineSeconds is not specified.
	RayClusterFleetProgressing RayClusterFleetConditionType = "Progressing"
	// ReplicaFailure is added in a deployment when one of its pods fails to be created
	// or deleted.
	RayClusterFleetReplicaFailure RayClusterFleetConditionType = "ReplicaFailure"
)

These are valid conditions of a deployment.

type RayClusterFleetList

type RayClusterFleetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []RayClusterFleet `json:"items"`
}

RayClusterFleetList contains a list of RayClusterFleet

func (*RayClusterFleetList) DeepCopy

func (in *RayClusterFleetList) DeepCopy() *RayClusterFleetList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterFleetList.

func (*RayClusterFleetList) DeepCopyInto

func (in *RayClusterFleetList) DeepCopyInto(out *RayClusterFleetList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RayClusterFleetList) DeepCopyObject

func (in *RayClusterFleetList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RayClusterFleetSpec

type RayClusterFleetSpec struct {
	// Number of desired pods. This is a pointer to distinguish between explicit
	// zero and not specified. Defaults to 1.
	// +kubebuilder:default=1
	// +optional
	Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"`

	// Label selector for pods. Existing ReplicaSets whose pods are
	// selected by this will be the ones affected by this deployment.
	// It must match the pod template's labels.
	Selector *metav1.LabelSelector `json:"selector" protobuf:"bytes,2,opt,name=selector"`

	// Template describes the pods that will be created.
	// The only allowed template.spec.restartPolicy value is "Always".
	Template RayClusterTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"`

	// The deployment strategy to use to replace existing pods with new ones.
	// +optional
	// +patchStrategy=retainKeys
	Strategy appsv1.DeploymentStrategy `json:"strategy,omitempty" patchStrategy:"retainKeys" protobuf:"bytes,4,opt,name=strategy"`

	// Minimum number of seconds for which a newly created pod should be ready
	// without any of its container crashing, for it to be considered available.
	// Defaults to 0 (pod will be considered available as soon as it is ready)
	// +optional
	MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,5,opt,name=minReadySeconds"`

	// The number of old ReplicaSets to retain to allow rollback.
	// This is a pointer to distinguish between explicit zero and not specified.
	// Defaults to 10.
	// +kubebuilder:default=10
	// +optional
	RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"`

	// Indicates that the deployment is paused.
	// +optional
	Paused bool `json:"paused,omitempty" protobuf:"varint,7,opt,name=paused"`

	// The maximum time in seconds for a deployment to make progress before it
	// is considered to be failed. The deployment controller will continue to
	// process failed deployments and a condition with a ProgressDeadlineExceeded
	// reason will be surfaced in the deployment status. Note that progress will
	// not be estimated during the time a deployment is paused. Defaults to 600s.
	// +kubebuilder:default=600
	// +optional
	ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"`
}

RayClusterFleetSpec defines the desired state of RayClusterFleet

func (*RayClusterFleetSpec) DeepCopy

func (in *RayClusterFleetSpec) DeepCopy() *RayClusterFleetSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterFleetSpec.

func (*RayClusterFleetSpec) DeepCopyInto

func (in *RayClusterFleetSpec) DeepCopyInto(out *RayClusterFleetSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RayClusterFleetStatus

type RayClusterFleetStatus struct {
	// The generation observed by the deployment controller.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"`

	// Total number of non-terminated pods targeted by this deployment (their labels match the selector).
	// +optional
	Replicas int32 `json:"replicas,omitempty" protobuf:"varint,2,opt,name=replicas"`

	// Total number of non-terminated pods targeted by this deployment that have the desired template spec.
	// +optional
	UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,3,opt,name=updatedReplicas"`

	// readyReplicas is the number of pods targeted by this Deployment with a Ready Condition.
	// +optional
	ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,7,opt,name=readyReplicas"`

	// Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.
	// +optional
	AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,4,opt,name=availableReplicas"`

	// Total number of unavailable pods targeted by this deployment. This is the total number of
	// pods that are still required for the deployment to have 100% available capacity. They may
	// either be pods that are running but not yet available or pods that still have not been created.
	// +optional
	UnavailableReplicas int32 `json:"unavailableReplicas,omitempty" protobuf:"varint,5,opt,name=unavailableReplicas"`

	// Represents the latest available observations of a deployment's current state.
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []RayClusterFleetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`

	// Count of hash collisions for the Deployment. The Deployment controller uses this
	// field as a collision avoidance mechanism when it needs to create the name for the
	// newest ReplicaSet.
	// +optional
	CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,8,opt,name=collisionCount"`

	// The label selector information of the pods belonging to the RayClusterFleet object.
	ScalingTargetSelector string `json:"scalingTargetSelector,omitempty"`
}

RayClusterFleetStatus defines the observed state of RayClusterFleet

func (*RayClusterFleetStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterFleetStatus.

func (*RayClusterFleetStatus) DeepCopyInto

func (in *RayClusterFleetStatus) DeepCopyInto(out *RayClusterFleetStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RayClusterReplicaSet

type RayClusterReplicaSet struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   RayClusterReplicaSetSpec   `json:"spec,omitempty"`
	Status RayClusterReplicaSetStatus `json:"status,omitempty"`
}

RayClusterReplicaSet is the Schema for the rayclusterreplicasets API

func (*RayClusterReplicaSet) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterReplicaSet.

func (*RayClusterReplicaSet) DeepCopyInto

func (in *RayClusterReplicaSet) DeepCopyInto(out *RayClusterReplicaSet)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RayClusterReplicaSet) DeepCopyObject

func (in *RayClusterReplicaSet) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RayClusterReplicaSetList

type RayClusterReplicaSetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []RayClusterReplicaSet `json:"items"`
}

RayClusterReplicaSetList contains a list of RayClusterReplicaSet

func (*RayClusterReplicaSetList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterReplicaSetList.

func (*RayClusterReplicaSetList) DeepCopyInto

func (in *RayClusterReplicaSetList) DeepCopyInto(out *RayClusterReplicaSetList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RayClusterReplicaSetList) DeepCopyObject

func (in *RayClusterReplicaSetList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RayClusterReplicaSetSpec

type RayClusterReplicaSetSpec struct {
	// Replicas is the number of desired replicas.
	// This is a pointer to distinguish between explicit zero and unspecified.
	// Defaults to 1.
	// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
	// +kubebuilder:default=1
	// +optional
	Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"`

	// Minimum number of seconds for which a newly created pod should be ready
	// without any of its container crashing, for it to be considered available.
	// Defaults to 0 (pod will be considered available as soon as it is ready)
	// +optional
	MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"`

	// Selector is a label query over RayCluster that should match the replica count.
	// Label keys and values that must match in order to be controlled by this replica set.
	// It must match the pod template's labels.
	// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
	// +optional
	Selector *metav1.LabelSelector `json:"selector" protobuf:"bytes,2,opt,name=selector"`

	// Template is the object that describes the pod that will be created if
	// insufficient replicas are detected.
	// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
	// +optional
	Template RayClusterTemplateSpec `json:"template,omitempty"`
}

RayClusterReplicaSetSpec defines the desired state of RayClusterReplicaSet

func (*RayClusterReplicaSetSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterReplicaSetSpec.

func (*RayClusterReplicaSetSpec) DeepCopyInto

func (in *RayClusterReplicaSetSpec) DeepCopyInto(out *RayClusterReplicaSetSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RayClusterReplicaSetStatus

type RayClusterReplicaSetStatus struct {
	// Replicas is the most recently observed number of replicas.
	// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
	Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"`

	// The number of pods that have labels matching the labels of the pod template of the replicaset.
	// +optional
	FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty" protobuf:"varint,2,opt,name=fullyLabeledReplicas"`

	// readyReplicas is the number of pods targeted by this ReplicaSet with a Ready Condition.
	// +optional
	ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,4,opt,name=readyReplicas"`

	// The number of available replicas (ready for at least minReadySeconds) for this replica set.
	// +optional
	AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,5,opt,name=availableReplicas"`

	// ObservedGeneration reflects the generation of the most recently observed ReplicaSet.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"`

	// Represents the latest available observations of a replica set's current state.
	// +optional
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`
}

RayClusterReplicaSetStatus defines the observed state of RayClusterReplicaSet

func (*RayClusterReplicaSetStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterReplicaSetStatus.

func (*RayClusterReplicaSetStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RayClusterTemplateSpec

type RayClusterTemplateSpec struct {
	// Standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`

	// Specification of the desired behavior of the RayCluster.
	// +optional
	Spec rayclusterv1.RayClusterSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
}

RayClusterTemplateSpec describes the data a pod should have when created from a template

func (*RayClusterTemplateSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RayClusterTemplateSpec.

func (*RayClusterTemplateSpec) DeepCopyInto

func (in *RayClusterTemplateSpec) DeepCopyInto(out *RayClusterTemplateSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleSet added in v0.4.0

type RoleSet struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   RoleSetSpec   `json:"spec,omitempty"`
	Status RoleSetStatus `json:"status,omitempty"`
}

RoleSet is the Schema for the rolesets API

func (*RoleSet) DeepCopy added in v0.4.0

func (in *RoleSet) DeepCopy() *RoleSet

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleSet.

func (*RoleSet) DeepCopyInto added in v0.4.0

func (in *RoleSet) DeepCopyInto(out *RoleSet)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RoleSet) DeepCopyObject added in v0.4.0

func (in *RoleSet) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RoleSetList added in v0.4.0

type RoleSetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []RoleSet `json:"items"`
}

RoleSetList contains a list of RoleSet

func (*RoleSetList) DeepCopy added in v0.4.0

func (in *RoleSetList) DeepCopy() *RoleSetList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleSetList.

func (*RoleSetList) DeepCopyInto added in v0.4.0

func (in *RoleSetList) DeepCopyInto(out *RoleSetList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RoleSetList) DeepCopyObject added in v0.4.0

func (in *RoleSetList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RoleSetSpec added in v0.4.0

type RoleSetSpec struct {
	Roles []RoleSpec `json:"roles,omitempty"`

	// +optional
	UpdateStrategy RoleSetUpdateStrategyType `json:"updateStrategy,omitempty"`

	// +optional
	SchedulingStrategy SchedulingStrategy `json:"schedulingStrategy,omitempty"`
}

RoleSetSpec defines the desired state of RoleSet

func (*RoleSetSpec) DeepCopy added in v0.4.0

func (in *RoleSetSpec) DeepCopy() *RoleSetSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleSetSpec.

func (*RoleSetSpec) DeepCopyInto added in v0.4.0

func (in *RoleSetSpec) DeepCopyInto(out *RoleSetSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleSetStatus added in v0.4.0

type RoleSetStatus struct {
	Roles []RoleStatus `json:"roles,omitempty"`
	// +optional
	// +patchMergeKey=type
	// +patchStrategy=merge
	Conditions Conditions `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}

RoleSetStatus defines the observed state of RoleSet

func (*RoleSetStatus) DeepCopy added in v0.4.0

func (in *RoleSetStatus) DeepCopy() *RoleSetStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleSetStatus.

func (*RoleSetStatus) DeepCopyInto added in v0.4.0

func (in *RoleSetStatus) DeepCopyInto(out *RoleSetStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleSetTemplateSpec added in v0.4.0

type RoleSetTemplateSpec struct {
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`

	// +optional
	Spec *RoleSetSpec `json:"spec,omitempty"`
}

func (*RoleSetTemplateSpec) DeepCopy added in v0.4.0

func (in *RoleSetTemplateSpec) DeepCopy() *RoleSetTemplateSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleSetTemplateSpec.

func (*RoleSetTemplateSpec) DeepCopyInto added in v0.4.0

func (in *RoleSetTemplateSpec) DeepCopyInto(out *RoleSetTemplateSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleSetUpdateStrategyType added in v0.4.0

type RoleSetUpdateStrategyType string

+enum

const (
	// ParallelRoleSetUpdateStrategyType update all roles in parallel
	ParallelRoleSetUpdateStrategyType RoleSetUpdateStrategyType = "Parallel"
	// SequentialRoleSetStrategyType update all roles in sequential
	SequentialRoleSetStrategyType RoleSetUpdateStrategyType = "Sequential"
	// InterleaveRoleSetStrategyType update all roles in interleave, follow the rolling step defined in roles
	InterleaveRoleSetStrategyType RoleSetUpdateStrategyType = "Interleave"
)

type RoleSpec added in v0.4.0

type RoleSpec struct {
	Name string `json:"name,omitempty"`

	// Replicas is the number of desired replicas.
	// +optional
	Replicas *int32 `json:"replicas,omitempty"`

	// PodGroupSize is the number of pods to form a minimum role instance.
	// +optional
	PodGroupSize *int32 `json:"podGroupSize,omitempty"`

	// +optional
	// +patchStrategy=retainKeys
	UpdateStrategy RoleUpdateStrategy `json:"updateStrategy,omitempty"`

	// +optional
	Stateful bool `json:"stateful,omitempty"`

	// +optional
	Template v1.PodTemplateSpec `json:"template,omitempty"`

	// DisruptionTolerance indicates how many pods can be unavailable during the preemption/eviction.
	// +optional
	DisruptionTolerance DisruptionTolerance `json:"disruptionTolerance,omitempty"`
}

func (*RoleSpec) DeepCopy added in v0.4.0

func (in *RoleSpec) DeepCopy() *RoleSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleSpec.

func (*RoleSpec) DeepCopyInto added in v0.4.0

func (in *RoleSpec) DeepCopyInto(out *RoleSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleStatus added in v0.4.0

type RoleStatus struct {
	Name string `json:"name,omitempty"`

	// Replicas is the most recently oberved number of replicas.
	Replicas int32 `json:"replicas"`

	// +optional
	ReadyReplicas int32 `json:"readyReplicas,omitempty"`

	// +optional
	NotReadyReplicas int32 `json:"notReadyReplicas,omitempty"`

	// +optional
	UpdatedReplicas int32 `json:"updatedReplicas,omitempty"`

	// +optional
	UpdatedReadyReplicas int32 `json:"updatedReadyReplicas,omitempty"`
}

func (*RoleStatus) DeepCopy added in v0.4.0

func (in *RoleStatus) DeepCopy() *RoleStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleStatus.

func (*RoleStatus) DeepCopyInto added in v0.4.0

func (in *RoleStatus) DeepCopyInto(out *RoleStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RoleUpdateStrategy added in v0.4.0

type RoleUpdateStrategy struct {
	// +optional
	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,1,opt,name=maxUnavailable"`

	// +optional
	MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"`
}

+enum

func (*RoleUpdateStrategy) DeepCopy added in v0.4.0

func (in *RoleUpdateStrategy) DeepCopy() *RoleUpdateStrategy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleUpdateStrategy.

func (*RoleUpdateStrategy) DeepCopyInto added in v0.4.0

func (in *RoleUpdateStrategy) DeepCopyInto(out *RoleUpdateStrategy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimeSpec

type RuntimeSpec struct {
	// Replicas is the number of kvcache pods to deploy
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:=1
	Replicas int32 `json:"replicas,omitempty"`

	// represent the kvcache's image
	// +kubebuilder:validation:Optional
	Image string `json:"image,omitempty"`

	// the policy about pulling image
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:="IfNotPresent"
	ImagePullPolicy string `json:"imagePullPolicy,omitempty"`

	// kvcache environment configuration
	// +kubebuilder:validation:Optional
	// +kubebuilder:default:={}
	Env []corev1.EnvVar `json:"env,omitempty"`

	// the resources of kvcache container
	// +kubebuilder:validation:Optional
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`

	// Optional: full control over the pod template and this is for advanced users.
	// If set, it overrides other runtime fields like Image, Resources, etc.
	Template *corev1.PodTemplateSpec `json:"template,omitempty"`
}

func (*RuntimeSpec) DeepCopy

func (in *RuntimeSpec) DeepCopy() *RuntimeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSpec.

func (*RuntimeSpec) DeepCopyInto

func (in *RuntimeSpec) DeepCopyInto(out *RuntimeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SchedulingStrategy added in v0.4.0

type SchedulingStrategy struct {
	PodGroup *schedv1alpha1.PodGroupSpec `json:"podGroup,omitempty"`
}

+enum

func (*SchedulingStrategy) DeepCopy added in v0.4.0

func (in *SchedulingStrategy) DeepCopy() *SchedulingStrategy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingStrategy.

func (*SchedulingStrategy) DeepCopyInto added in v0.4.0

func (in *SchedulingStrategy) DeepCopyInto(out *SchedulingStrategy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceSpec

type ServiceSpec struct {
	// Type defines the type of service (e.g., ClusterIP, NodePort, LoadBalancer).
	// +kubebuilder:default:="ClusterIP"
	Type corev1.ServiceType `json:"type,omitempty"`

	// Ports defines the list of exposed ports
	// +kubebuilder:validation:MinItems=1
	Ports []corev1.ServicePort `json:"ports"`
}

ServiceSpec holds all service configuration about KvCache public facing service

func (*ServiceSpec) DeepCopy

func (in *ServiceSpec) DeepCopy() *ServiceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceSpec.

func (*ServiceSpec) DeepCopyInto

func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StormService added in v0.4.0

type StormService struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   StormServiceSpec   `json:"spec,omitempty"`
	Status StormServiceStatus `json:"status,omitempty"`
}

StormService is the Schema for the stormservices API

func (*StormService) DeepCopy added in v0.4.0

func (in *StormService) DeepCopy() *StormService

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StormService.

func (*StormService) DeepCopyInto added in v0.4.0

func (in *StormService) DeepCopyInto(out *StormService)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*StormService) DeepCopyObject added in v0.4.0

func (in *StormService) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type StormServiceList added in v0.4.0

type StormServiceList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []StormService `json:"items"`
}

StormServiceList contains a list of StormService

func (*StormServiceList) DeepCopy added in v0.4.0

func (in *StormServiceList) DeepCopy() *StormServiceList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StormServiceList.

func (*StormServiceList) DeepCopyInto added in v0.4.0

func (in *StormServiceList) DeepCopyInto(out *StormServiceList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*StormServiceList) DeepCopyObject added in v0.4.0

func (in *StormServiceList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type StormServiceSpec added in v0.4.0

type StormServiceSpec struct {
	// Number of desired roleSets. This is a pointer to distinguish between explicit
	// zero and not specified. Defaults to 1.
	// +optional
	Replicas *int32 `json:"replicas,omitempty"`

	// Label selector for roleSets. Existing ReplicaSets whose roleSets are
	// selected by this will be the ones affected by this stormService.
	// It must match the roleSet template's labels.
	Selector *metav1.LabelSelector `json:"selector"`

	// Stateful indicates whether service is stateful
	Stateful bool `json:"stateful,omitempty"`

	// Template describes the roleSets that will be created.
	Template RoleSetTemplateSpec `json:"template"`

	// The deployment strategy to use to replace existing roleSets with new ones.
	// +optional
	// +patchStrategy=retainKeys
	UpdateStrategy StormServiceUpdateStrategy `json:"updateStrategy,omitempty"`

	// The number of old ReplicaSets to retain to allow rollback.
	// This is a pointer to distinguish between explicit zero and not specified.
	// Defaults to 10.
	// +optional
	RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"`

	// Indicates that the stormService is paused.
	// +optional
	Paused bool `json:"paused,omitempty" protobuf:"varint,7,opt,name=paused"`

	// DisruptionTolerance indicates how many roleSets can be unavailable during the preemption/eviction.
	// +optional
	DisruptionTolerance DisruptionTolerance `json:"disruptionTolerance,omitempty"`
}

StormServiceSpec defines the desired state of StormService

func (*StormServiceSpec) DeepCopy added in v0.4.0

func (in *StormServiceSpec) DeepCopy() *StormServiceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StormServiceSpec.

func (*StormServiceSpec) DeepCopyInto added in v0.4.0

func (in *StormServiceSpec) DeepCopyInto(out *StormServiceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StormServiceStatus added in v0.4.0

type StormServiceStatus struct {
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// Total number of non-terminated roleSets targeted by this stormService (their labels match the selector).
	// +optional
	Replicas int32 `json:"replicas,omitempty"`

	// Total number of ready roleSets targeted by this stormService.
	// +optional
	ReadyReplicas int32 `json:"readyReplicas,omitempty"`

	// Total number of notReady roleSets targeted by this stormService.
	// +optional
	NotReadyReplicas int32 `json:"notReadyReplicas,omitempty"`

	// currentReplicas is the number of roleSets created by the stormService controller from the stormService version
	// indicated by currentRevision.
	CurrentReplicas int32 `json:"currentReplicas,omitempty" protobuf:"varint,4,opt,name=currentReplicas"`

	// updatedReplicas is the number of roleSets created by the stormService controller from the stormService version
	// indicated by updateRevision.
	UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,5,opt,name=updatedReplicas"`

	// currentRevision, if not empty, indicates the version of the stormService used to generate roleSets in current state.
	CurrentRevision string `json:"currentRevision,omitempty" protobuf:"bytes,6,opt,name=currentRevision"`

	// updateRevision, if not empty, indicates the version of the stormService used to generate roleSets in update state.
	UpdateRevision string `json:"updateRevision,omitempty" protobuf:"bytes,7,opt,name=updateRevision"`

	// updatedReadyReplicas is the number of roleSets created by the stormService controller from the stormService version
	// indicated by updateRevision, and in ready state.
	UpdatedReadyReplicas int32 `json:"updatedReadyReplicas,omitempty" protobuf:"varint,8,opt,name=updatedReadyReplicas"`

	// +optional
	Conditions Conditions `json:"conditions,omitempty"`

	// collisionCount is the count of hash collisions for the StormService. The StormService controller
	// uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.
	// +optional
	CollisionCount *int32 `json:"collisionCount,omitempty"`

	// The label selector information of the pods belonging to the StormService object.
	ScalingTargetSelector string `json:"scalingTargetSelector,omitempty"`
}

StormServiceStatus defines the observed state of StormService

func (*StormServiceStatus) DeepCopy added in v0.4.0

func (in *StormServiceStatus) DeepCopy() *StormServiceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StormServiceStatus.

func (*StormServiceStatus) DeepCopyInto added in v0.4.0

func (in *StormServiceStatus) DeepCopyInto(out *StormServiceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StormServiceUpdateStrategy added in v0.4.0

type StormServiceUpdateStrategy struct {
	// Type of update strategy. Can be "RollingUpdate". Default is RollingUpdate.
	// +optional
	Type StormServiceUpdateStrategyType `json:"type,omitempty"`

	// +optional
	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,1,opt,name=maxUnavailable"`

	// +optional
	MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"`
}

func (*StormServiceUpdateStrategy) DeepCopy added in v0.4.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StormServiceUpdateStrategy.

func (*StormServiceUpdateStrategy) DeepCopyInto added in v0.4.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StormServiceUpdateStrategyType added in v0.4.0

type StormServiceUpdateStrategyType string

+enum

const (
	// RollingUpdateStormServiceStrategyType replaces the old ReplicaSets by new one using rolling update i.e gradually scale down the old ReplicaSets and scale up the new one.
	RollingUpdateStormServiceStrategyType StormServiceUpdateStrategyType = "RollingUpdate"
	// InPlaceUpdateStormServiceStrategyType inplace updates the ReplicaSets
	InPlaceUpdateStormServiceStrategyType StormServiceUpdateStrategyType = "InPlaceUpdate"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL