Skip to content

Commit 9b9d8fd

Browse files
authored
Merge pull request #827 from AObuchow/configurable_default_pvc_size
Configurable default PVC size for common and per-workspace storage classes
2 parents ecfb532 + ac607df commit 9b9d8fd

13 files changed

+248
-26
lines changed

apis/controller/v1alpha1/devworkspaceoperatorconfig_types.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package v1alpha1
1717

1818
import (
1919
corev1 "k8s.io/api/core/v1"
20+
"k8s.io/apimachinery/pkg/api/resource"
2021
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2122
)
2223

@@ -67,6 +68,16 @@ type Proxy struct {
6768
NoProxy string `json:"noProxy,omitempty"`
6869
}
6970

71+
type StorageSizes struct {
72+
// The default Persistent Volume Claim size for the "common" storage class.
73+
// Note that the "async" storage class also uses the PVC size set for the "common" storage class.
74+
// If not specified, the "common" and "async" Persistent Volume Claim sizes are set to 10Gi
75+
Common *resource.Quantity `json:"common,omitempty"`
76+
// The default Persistent Volume Claim size for the "per-workspace" storage class.
77+
// If not specified, the "per-workspace" Persistent Volume Claim size is set to 5Gi
78+
PerWorkspace *resource.Quantity `json:"perWorkspace,omitempty"`
79+
}
80+
7081
type WorkspaceConfig struct {
7182
// ImagePullPolicy defines the imagePullPolicy used for containers in a DevWorkspace
7283
// For additional information, see Kubernetes documentation for imagePullPolicy. If
@@ -83,9 +94,12 @@ type WorkspaceConfig struct {
8394
// +kubebuilder:validation:Pattern=^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
8495
// +kubebuilder:validation:MaxLength=63
8596
PVCName string `json:"pvcName,omitempty"`
86-
// StorageClassName defines and optional storageClass to use for persistent
97+
// StorageClassName defines an optional storageClass to use for persistent
8798
// volume claims created to support DevWorkspaces
8899
StorageClassName *string `json:"storageClassName,omitempty"`
100+
// DefaultStorageSize defines an optional struct with fields to specify the sizes of Persistent Volume Claims for storage
101+
// classes used by DevWorkspaces.
102+
DefaultStorageSize *StorageSizes `json:"defaultStorageSize,omitempty"`
89103
// IdleTimeout determines how long a workspace should sit idle before being
90104
// automatically scaled down. Proper functionality of this configuration property
91105
// requires support in the workspace being started. If not specified, the default

apis/controller/v1alpha1/zz_generated.deepcopy.go

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/bundle/manifests/controller.devfile.io_devworkspaceoperatorconfigs.yaml

Lines changed: 19 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/deployment/kubernetes/combined.yaml

Lines changed: 27 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/deployment/kubernetes/objects/devworkspaceoperatorconfigs.controller.devfile.io.CustomResourceDefinition.yaml

Lines changed: 27 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/deployment/openshift/combined.yaml

Lines changed: 27 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/deployment/openshift/objects/devworkspaceoperatorconfigs.controller.devfile.io.CustomResourceDefinition.yaml

Lines changed: 27 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/templates/crd/bases/controller.devfile.io_devworkspaceoperatorconfigs.yaml

Lines changed: 27 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/config/defaults.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package config
1818
import (
1919
"github.com/devfile/devworkspace-operator/apis/controller/v1alpha1"
2020
corev1 "k8s.io/api/core/v1"
21+
"k8s.io/apimachinery/pkg/api/resource"
2122
)
2223

2324
// defaultConfig represents the default configuration for the DevWorkspace Operator.
@@ -29,6 +30,10 @@ var defaultConfig = &v1alpha1.OperatorConfiguration{
2930
Workspace: &v1alpha1.WorkspaceConfig{
3031
ImagePullPolicy: "Always",
3132
PVCName: "claim-devworkspace",
33+
DefaultStorageSize: &v1alpha1.StorageSizes{
34+
Common: &commonStorageSize,
35+
PerWorkspace: &perWorkspaceStorageSize,
36+
},
3237
IdleTimeout: "15m",
3338
ProgressTimeout: "5m",
3439
CleanupOnStop: &boolFalse,
@@ -43,8 +48,10 @@ var defaultConfig = &v1alpha1.OperatorConfiguration{
4348

4449
// Necessary variables for setting pointer values
4550
var (
46-
boolTrue = true
47-
boolFalse = false
48-
int64UID = int64(1234)
49-
int64GID = int64(0)
51+
boolTrue = true
52+
boolFalse = false
53+
int64UID = int64(1234)
54+
int64GID = int64(0)
55+
commonStorageSize = resource.MustParse("10Gi")
56+
perWorkspaceStorageSize = resource.MustParse("5Gi")
5057
)

0 commit comments

Comments
 (0)