
org.cdk8s.plus31.k8s.KubeStorageClass Maven / Gradle / Ivy
package org.cdk8s.plus31.k8s;
/**
* StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.
*
* StorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.
*/
@javax.annotation.Generated(value = "jsii-pacmak/1.105.0 (build 0a2adcb)", date = "2024-11-15T12:15:25.079Z")
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
@software.amazon.jsii.Jsii(module = org.cdk8s.plus31.$Module.class, fqn = "cdk8s-plus-31.k8s.KubeStorageClass")
public class KubeStorageClass extends org.cdk8s.ApiObject {
protected KubeStorageClass(final software.amazon.jsii.JsiiObjectRef objRef) {
super(objRef);
}
protected KubeStorageClass(final software.amazon.jsii.JsiiObject.InitializationMode initializationMode) {
super(initializationMode);
}
static {
GVK = software.amazon.jsii.JsiiObject.jsiiStaticGet(org.cdk8s.plus31.k8s.KubeStorageClass.class, "GVK", software.amazon.jsii.NativeType.forClass(org.cdk8s.GroupVersionKind.class));
}
/**
* Defines a "io.k8s.api.storage.v1.StorageClass" API object.
*
* @param scope the scope in which to define this object. This parameter is required.
* @param id a scope-local name for the object. This parameter is required.
* @param props initialization props. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public KubeStorageClass(final @org.jetbrains.annotations.NotNull software.constructs.Construct scope, final @org.jetbrains.annotations.NotNull java.lang.String id, final @org.jetbrains.annotations.NotNull org.cdk8s.plus31.k8s.KubeStorageClassProps props) {
super(software.amazon.jsii.JsiiObject.InitializationMode.JSII);
software.amazon.jsii.JsiiEngine.getInstance().createNewObject(this, new Object[] { java.util.Objects.requireNonNull(scope, "scope is required"), java.util.Objects.requireNonNull(id, "id is required"), java.util.Objects.requireNonNull(props, "props is required") });
}
/**
* Renders a Kubernetes manifest for "io.k8s.api.storage.v1.StorageClass".
*
* This can be used to inline resource manifests inside other objects (e.g. as templates).
*
* @param props initialization props. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public static @org.jetbrains.annotations.NotNull java.lang.Object manifest(final @org.jetbrains.annotations.NotNull org.cdk8s.plus31.k8s.KubeStorageClassProps props) {
return software.amazon.jsii.JsiiObject.jsiiStaticCall(org.cdk8s.plus31.k8s.KubeStorageClass.class, "manifest", software.amazon.jsii.NativeType.forClass(java.lang.Object.class), new Object[] { java.util.Objects.requireNonNull(props, "props is required") });
}
/**
* Renders the object to Kubernetes JSON.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
@Override
public @org.jetbrains.annotations.NotNull java.lang.Object toJson() {
return software.amazon.jsii.Kernel.call(this, "toJson", software.amazon.jsii.NativeType.forClass(java.lang.Object.class));
}
/**
* Returns the apiVersion and kind for "io.k8s.api.storage.v1.StorageClass".
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public final static org.cdk8s.GroupVersionKind GVK;
/**
* A fluent builder for {@link org.cdk8s.plus31.k8s.KubeStorageClass}.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public static final class Builder implements software.amazon.jsii.Builder {
/**
* @return a new instance of {@link Builder}.
* @param scope the scope in which to define this object. This parameter is required.
* @param id a scope-local name for the object. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public static Builder create(final software.constructs.Construct scope, final java.lang.String id) {
return new Builder(scope, id);
}
private final software.constructs.Construct scope;
private final java.lang.String id;
private final org.cdk8s.plus31.k8s.KubeStorageClassProps.Builder props;
private Builder(final software.constructs.Construct scope, final java.lang.String id) {
this.scope = scope;
this.id = id;
this.props = new org.cdk8s.plus31.k8s.KubeStorageClassProps.Builder();
}
/**
* provisioner indicates the type of the provisioner.
*
* @return {@code this}
* @param provisioner provisioner indicates the type of the provisioner. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder provisioner(final java.lang.String provisioner) {
this.props.provisioner(provisioner);
return this;
}
/**
* allowedTopologies restrict the node topologies where volumes can be dynamically provisioned.
*
* Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.
*
* @return {@code this}
* @param allowedTopologies allowedTopologies restrict the node topologies where volumes can be dynamically provisioned. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder allowedTopologies(final java.util.List extends org.cdk8s.plus31.k8s.TopologySelectorTerm> allowedTopologies) {
this.props.allowedTopologies(allowedTopologies);
return this;
}
/**
* allowVolumeExpansion shows whether the storage class allow volume expand.
*
* @return {@code this}
* @param allowVolumeExpansion allowVolumeExpansion shows whether the storage class allow volume expand. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder allowVolumeExpansion(final java.lang.Boolean allowVolumeExpansion) {
this.props.allowVolumeExpansion(allowVolumeExpansion);
return this;
}
/**
* Standard object's metadata.
*
* More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*
* @return {@code this}
* @param metadata Standard object's metadata. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder metadata(final org.cdk8s.plus31.k8s.ObjectMeta metadata) {
this.props.metadata(metadata);
return this;
}
/**
* mountOptions controls the mountOptions for dynamically provisioned PersistentVolumes of this storage class.
*
* e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.
*
* @return {@code this}
* @param mountOptions mountOptions controls the mountOptions for dynamically provisioned PersistentVolumes of this storage class. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder mountOptions(final java.util.List mountOptions) {
this.props.mountOptions(mountOptions);
return this;
}
/**
* parameters holds the parameters for the provisioner that should create volumes of this storage class.
*
* @return {@code this}
* @param parameters parameters holds the parameters for the provisioner that should create volumes of this storage class. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder parameters(final java.util.Map parameters) {
this.props.parameters(parameters);
return this;
}
/**
* reclaimPolicy controls the reclaimPolicy for dynamically provisioned PersistentVolumes of this storage class.
*
* Defaults to Delete.
*
* Default: Delete.
*
* @return {@code this}
* @param reclaimPolicy reclaimPolicy controls the reclaimPolicy for dynamically provisioned PersistentVolumes of this storage class. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder reclaimPolicy(final java.lang.String reclaimPolicy) {
this.props.reclaimPolicy(reclaimPolicy);
return this;
}
/**
* volumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound.
*
* When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature.
*
* @return {@code this}
* @param volumeBindingMode volumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder volumeBindingMode(final java.lang.String volumeBindingMode) {
this.props.volumeBindingMode(volumeBindingMode);
return this;
}
/**
* @return a newly built instance of {@link org.cdk8s.plus31.k8s.KubeStorageClass}.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
@Override
public org.cdk8s.plus31.k8s.KubeStorageClass build() {
return new org.cdk8s.plus31.k8s.KubeStorageClass(
this.scope,
this.id,
this.props.build()
);
}
}
}