Skip to content

Commit

Permalink
feat: Remove PostgreSQL component (#1630)
Browse files Browse the repository at this point in the history
* feat: Remove PostgreSQL component

Signed-off-by: Anatolii Bazko <abazko@redhat.com>
  • Loading branch information
tolusha authored Feb 28, 2023
1 parent 8d0ee22 commit 12169de
Show file tree
Hide file tree
Showing 33 changed files with 73 additions and 1,304 deletions.
57 changes: 0 additions & 57 deletions api/checluster_conversion_from_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,45 +110,6 @@ func TestConvertFrom(t *testing.T) {
Metrics: chev2.ServerMetrics{
Enable: true,
},
Database: chev2.Database{
ExternalDb: true,
Deployment: &chev2.Deployment{
Containers: []chev2.Container{
{
Image: "DatabaseImage",
ImagePullPolicy: corev1.PullAlways,
Resources: &chev2.ResourceRequirements{
Requests: &chev2.ResourceList{
Memory: resource.MustParse("128Mi"),
Cpu: resource.MustParse("1"),
},
Limits: &chev2.ResourceList{
Memory: resource.MustParse("228Mi"),
Cpu: resource.MustParse("2"),
},
},
Env: []corev1.EnvVar{
{
Name: "database-name",
Value: "database-value",
},
},
},
},
SecurityContext: &chev2.PodSecurityContext{
RunAsUser: pointer.Int64Ptr(64),
FsGroup: pointer.Int64Ptr(65),
},
},
PostgresHostName: "PostgresHostName",
PostgresPort: "PostgresPort",
PostgresDb: "PostgresDb",
CredentialsSecretName: "DatabaseCredentialsSecretName",
Pvc: &chev2.PVC{
ClaimSize: "DatabaseClaimSize",
StorageClass: "DatabaseStorageClass",
},
},
PluginRegistry: chev2.PluginRegistry{
Deployment: &chev2.Deployment{
Containers: []chev2.Container{
Expand Down Expand Up @@ -430,7 +391,6 @@ func TestConvertFrom(t *testing.T) {
ChePhase: "Active",
Message: "Message",
Reason: "Reason",
PostgresVersion: "PostgresVersion",
},
}

Expand Down Expand Up @@ -466,22 +426,6 @@ func TestConvertFrom(t *testing.T) {
assert.Equal(t, checlusterv1.Spec.Auth.GatewayConfigBumpEnv[0].Name, "configbump-name")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayConfigBumpEnv[0].Value, "configbump-value")

assert.Equal(t, checlusterv1.Spec.Database.ChePostgresContainerResources.Limits.Cpu, "2")
assert.Equal(t, checlusterv1.Spec.Database.ChePostgresContainerResources.Limits.Memory, "228Mi")
assert.Equal(t, checlusterv1.Spec.Database.ChePostgresContainerResources.Requests.Cpu, "1")
assert.Equal(t, checlusterv1.Spec.Database.ChePostgresContainerResources.Requests.Memory, "128Mi")
assert.Equal(t, checlusterv1.Spec.Database.ChePostgresDb, "PostgresDb")
assert.Equal(t, checlusterv1.Spec.Database.ChePostgresHostName, "PostgresHostName")
assert.Equal(t, checlusterv1.Spec.Database.ChePostgresPort, "PostgresPort")
assert.Equal(t, checlusterv1.Spec.Database.ChePostgresSecret, "DatabaseCredentialsSecretName")
assert.Equal(t, checlusterv1.Spec.Database.ExternalDb, true)
assert.Equal(t, checlusterv1.Spec.Database.PostgresImage, "DatabaseImage")
assert.Equal(t, checlusterv1.Spec.Database.PostgresImagePullPolicy, corev1.PullAlways)
assert.Equal(t, checlusterv1.Spec.Database.PostgresVersion, "PostgresVersion")
assert.Equal(t, checlusterv1.Spec.Database.PvcClaimSize, "DatabaseClaimSize")
assert.Equal(t, checlusterv1.Spec.Database.PostgresEnv[0].Name, "database-name")
assert.Equal(t, checlusterv1.Spec.Database.PostgresEnv[0].Value, "database-value")

assert.Equal(t, checlusterv1.Spec.DevWorkspace.RunningLimit, "10")
assert.Equal(t, checlusterv1.Spec.DevWorkspace.SecondsOfInactivityBeforeIdling, pointer.Int32Ptr(1800))
assert.Equal(t, checlusterv1.Spec.DevWorkspace.SecondsOfRunBeforeIdling, pointer.Int32Ptr(-1))
Expand Down Expand Up @@ -560,7 +504,6 @@ func TestConvertFrom(t *testing.T) {
assert.Equal(t, checlusterv1.Spec.Server.WorkspacesDefaultPlugins, []chev1.WorkspacesDefaultPlugins{{Editor: "Editor", Plugins: []string{"Plugins_1", "Plugins_2"}}})

assert.Equal(t, checlusterv1.Spec.Storage.PvcStrategy, "PvcStrategy")
assert.Equal(t, checlusterv1.Spec.Storage.PostgresPVCStorageClassName, "DatabaseStorageClass")
assert.Equal(t, checlusterv1.Spec.Storage.PvcClaimSize, "StorageClaimSize")
assert.Equal(t, checlusterv1.Spec.Storage.WorkspacePVCStorageClassName, "StorageClass")
assert.Equal(t, checlusterv1.Spec.Storage.PerWorkspaceStrategyPvcClaimSize, "PerWorkspaceStorageClaimSize")
Expand Down
46 changes: 0 additions & 46 deletions api/checluster_conversion_to_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,33 +254,6 @@ func TestConvertTo(t *testing.T) {
},
OpenVSXRegistryURL: pointer.StringPtr("open-vsx-registry"),
},
Database: chev1.CheClusterSpecDB{
ExternalDb: true,
ChePostgresHostName: "ChePostgresHostName",
ChePostgresPort: "ChePostgresPort",
ChePostgresDb: "ChePostgresDb",
ChePostgresSecret: "ChePostgresSecret",
PostgresImage: "PostgresImage",
PostgresVersion: "PostgresVersion",
PostgresImagePullPolicy: "Always",
PvcClaimSize: "DatabasePvcClaimSize",
ChePostgresContainerResources: chev1.ResourcesCustomSettings{
Requests: chev1.Resources{
Memory: "100Mi",
Cpu: "1",
},
Limits: chev1.Resources{
Memory: "200Mi",
Cpu: "2",
},
},
PostgresEnv: []corev1.EnvVar{
{
Name: "database-name",
Value: "database-value",
},
},
},
Auth: chev1.CheClusterSpecAuth{
IdentityProviderURL: "IdentityProviderURL",
OAuthClientName: "OAuthClientName",
Expand Down Expand Up @@ -317,7 +290,6 @@ func TestConvertTo(t *testing.T) {
Storage: chev1.CheClusterSpecStorage{
PvcStrategy: "PvcStrategy",
PvcClaimSize: "WorkspacePvcClaimSize",
PostgresPVCStorageClassName: "PostgresPVCStorageClassName",
WorkspacePVCStorageClassName: "WorkspacePVCStorageClassName",
PerWorkspaceStrategyPVCStorageClassName: "PerWorkspaceStrategyPVCStorageClassName",
PerWorkspaceStrategyPvcClaimSize: "PerWorkspaceStrategyPvcClaimSize",
Expand Down Expand Up @@ -456,23 +428,6 @@ func TestConvertTo(t *testing.T) {
assert.Equal(t, checlusterv2.Spec.Components.Dashboard.HeaderMessage.Text, "DashboardWarning")
assert.True(t, checlusterv2.Spec.Components.Dashboard.HeaderMessage.Show)

assert.Equal(t, checlusterv2.Spec.Components.Database.CredentialsSecretName, "ChePostgresSecret")
assert.Equal(t, checlusterv2.Spec.Components.Database.Deployment.Containers[0].Name, constants.PostgresName)
assert.Equal(t, checlusterv2.Spec.Components.Database.Deployment.Containers[0].Image, "PostgresImage")
assert.Equal(t, checlusterv2.Spec.Components.Database.Deployment.Containers[0].Env[0].Name, "database-name")
assert.Equal(t, checlusterv2.Spec.Components.Database.Deployment.Containers[0].Env[0].Value, "database-value")
assert.Equal(t, checlusterv2.Spec.Components.Database.Deployment.Containers[0].ImagePullPolicy, corev1.PullPolicy("Always"))
assert.Equal(t, checlusterv2.Spec.Components.Database.Deployment.Containers[0].Resources.Limits.Cpu, resource.MustParse("2"))
assert.Equal(t, checlusterv2.Spec.Components.Database.Deployment.Containers[0].Resources.Limits.Memory, resource.MustParse("200Mi"))
assert.Equal(t, checlusterv2.Spec.Components.Database.Deployment.Containers[0].Resources.Requests.Cpu, resource.MustParse("1"))
assert.Equal(t, checlusterv2.Spec.Components.Database.Deployment.Containers[0].Resources.Requests.Memory, resource.MustParse("100Mi"))
assert.Equal(t, checlusterv2.Spec.Components.Database.ExternalDb, true)
assert.Equal(t, checlusterv2.Spec.Components.Database.PostgresDb, "ChePostgresDb")
assert.Equal(t, checlusterv2.Spec.Components.Database.PostgresHostName, "ChePostgresHostName")
assert.Equal(t, checlusterv2.Spec.Components.Database.PostgresPort, "ChePostgresPort")
assert.Equal(t, checlusterv2.Spec.Components.Database.Pvc.ClaimSize, "DatabasePvcClaimSize")
assert.Equal(t, checlusterv2.Spec.Components.Database.Pvc.StorageClass, "PostgresPVCStorageClassName")

assert.Equal(t, checlusterv2.Spec.Components.ImagePuller.Enable, true)
assert.Equal(t, checlusterv2.Spec.Components.Metrics.Enable, true)

Expand Down Expand Up @@ -523,7 +478,6 @@ func TestConvertTo(t *testing.T) {
assert.Equal(t, checlusterv2.Status.ChePhase, chev2.CheClusterPhase("Active"))
assert.Equal(t, checlusterv2.Status.PluginRegistryURL, "PluginRegistryURL")
assert.Equal(t, checlusterv2.Status.Reason, "Reason")
assert.Equal(t, checlusterv2.Status.PostgresVersion, "PostgresVersion")

assert.Equal(t, checlusterv2.Spec.GitServices.GitHub[0].SecretName, "github-secret-name")
assert.Equal(t, checlusterv2.Spec.GitServices.GitLab[0].SecretName, "gitlab-secret-name")
Expand Down
31 changes: 0 additions & 31 deletions api/checluster_round_conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,36 +85,6 @@ func TestRoundConvertCheClusterV2(t *testing.T) {
Metrics: chev2.ServerMetrics{
Enable: true,
},
Database: chev2.Database{
ExternalDb: true,
Deployment: &chev2.Deployment{
Containers: []chev2.Container{
{
Name: "postgres",
Image: "DatabaseImage",
ImagePullPolicy: corev1.PullAlways,
Resources: &chev2.ResourceRequirements{
Requests: &chev2.ResourceList{
Memory: resource.MustParse("148Mi"),
Cpu: resource.MustParse("1"),
},
Limits: &chev2.ResourceList{
Memory: resource.MustParse("228Mi"),
Cpu: resource.MustParse("2"),
},
},
},
},
},
PostgresHostName: "PostgresHostName",
PostgresPort: "PostgresPort",
PostgresDb: "PostgresDb",
CredentialsSecretName: "DatabaseCredentialsSecretName",
Pvc: &chev2.PVC{
ClaimSize: "DatabaseClaimSize",
StorageClass: "DatabaseStorageClass",
},
},
PluginRegistry: chev2.PluginRegistry{
Deployment: &chev2.Deployment{
Containers: []chev2.Container{
Expand Down Expand Up @@ -320,7 +290,6 @@ func TestRoundConvertCheClusterV2(t *testing.T) {
ChePhase: "Active",
Message: "Message",
Reason: "Reason",
PostgresVersion: "PostgresVersion",
},
}

Expand Down
40 changes: 0 additions & 40 deletions api/v1/checluster_conversion_from.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,6 @@ func (dst *CheCluster) ConvertFrom(srcRaw conversion.Hub) error {
return err
}

if err := dst.convertFrom_Database(src); err != nil {
return err
}

if err := dst.convertFrom_DevWorkspace(src); err != nil {
return err
}
Expand Down Expand Up @@ -349,38 +345,6 @@ func (dst *CheCluster) convertFrom_Auth(src *chev2.CheCluster) error {
return nil
}

func (dst *CheCluster) convertFrom_Database(src *chev2.CheCluster) error {
dst.Spec.Database.ExternalDb = src.Spec.Components.Database.ExternalDb
dst.Spec.Database.ChePostgresDb = src.Spec.Components.Database.PostgresDb
dst.Spec.Database.ChePostgresHostName = src.Spec.Components.Database.PostgresHostName
dst.Spec.Database.ChePostgresPort = src.Spec.Components.Database.PostgresPort
dst.Spec.Database.PostgresVersion = src.Status.PostgresVersion
if src.Spec.Components.Database.Pvc != nil {
dst.Spec.Database.PvcClaimSize = src.Spec.Components.Database.Pvc.ClaimSize
}
dst.Spec.Database.ChePostgresSecret = src.Spec.Components.Database.CredentialsSecretName

if src.Spec.Components.Database.Deployment != nil {
if len(src.Spec.Components.Database.Deployment.Containers) != 0 {
dst.Spec.Database.PostgresEnv = src.Spec.Components.Database.Deployment.Containers[0].Env
dst.Spec.Database.PostgresImage = src.Spec.Components.Database.Deployment.Containers[0].Image
dst.Spec.Database.PostgresImagePullPolicy = src.Spec.Components.Database.Deployment.Containers[0].ImagePullPolicy
if src.Spec.Components.Database.Deployment.Containers[0].Resources != nil {
if src.Spec.Components.Database.Deployment.Containers[0].Resources.Requests != nil {
dst.Spec.Database.ChePostgresContainerResources.Requests.Memory = resource2String(src.Spec.Components.Database.Deployment.Containers[0].Resources.Requests.Memory)
dst.Spec.Database.ChePostgresContainerResources.Requests.Cpu = resource2String(src.Spec.Components.Database.Deployment.Containers[0].Resources.Requests.Cpu)
}
if src.Spec.Components.Database.Deployment.Containers[0].Resources.Limits != nil {
dst.Spec.Database.ChePostgresContainerResources.Limits.Memory = resource2String(src.Spec.Components.Database.Deployment.Containers[0].Resources.Limits.Memory)
dst.Spec.Database.ChePostgresContainerResources.Limits.Cpu = resource2String(src.Spec.Components.Database.Deployment.Containers[0].Resources.Limits.Cpu)
}
}
}
}

return nil
}

func (dst *CheCluster) convertFrom_DevWorkspace(src *chev2.CheCluster) error {
if src.Spec.DevEnvironments.MaxNumberOfRunningWorkspacesPerUser != nil {
dst.Spec.DevWorkspace.RunningLimit = strconv.FormatInt(*src.Spec.DevEnvironments.MaxNumberOfRunningWorkspacesPerUser, 10)
Expand Down Expand Up @@ -443,10 +407,6 @@ func (dst *CheCluster) convertFrom_Status(src *chev2.CheCluster) error {
}

func (dst *CheCluster) convertFrom_Storage(src *chev2.CheCluster) error {
if src.Spec.Components.Database.Pvc != nil {
dst.Spec.Storage.PostgresPVCStorageClassName = src.Spec.Components.Database.Pvc.StorageClass
}

dst.Spec.Storage.PvcStrategy = src.Spec.DevEnvironments.Storage.PvcStrategy
if src.Spec.DevEnvironments.Storage.PerUserStrategyPvcConfig != nil {
dst.Spec.Storage.PvcClaimSize = src.Spec.DevEnvironments.Storage.PerUserStrategyPvcConfig.ClaimSize
Expand Down
41 changes: 0 additions & 41 deletions api/v1/checluster_conversion_to.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ func (src *CheCluster) convertTo_GitServices(dst *chev2.CheCluster) error {
}

func (src *CheCluster) convertTo_Status(dst *chev2.CheCluster) error {
dst.Status.PostgresVersion = src.Spec.Database.PostgresVersion
dst.Status.CheURL = src.Status.CheURL
dst.Status.CheVersion = src.Status.CheVersion
dst.Status.DevfileRegistryURL = src.Status.DevfileRegistryURL
Expand Down Expand Up @@ -267,10 +266,6 @@ func (src *CheCluster) convertTo_Components(dst *chev2.CheCluster) error {
return err
}

if err := src.convertTo_Components_Database(dst); err != nil {
return err
}

if err := src.convertTo_Components_Metrics(dst); err != nil {
return err
}
Expand Down Expand Up @@ -433,42 +428,6 @@ func (src *CheCluster) convertTo_Components_DevfileRegistry(dst *chev2.CheCluste
return nil
}

func (src *CheCluster) convertTo_Components_Database(dst *chev2.CheCluster) error {
dst.Spec.Components.Database.CredentialsSecretName = src.Spec.Database.ChePostgresSecret

if src.Spec.Database.ChePostgresSecret == "" && src.Spec.Database.ChePostgresUser != "" && src.Spec.Database.ChePostgresPassword != "" {
if err := createCredentialsSecret(
src.Spec.Database.ChePostgresUser,
src.Spec.Database.ChePostgresPassword,
constants.DefaultPostgresCredentialsSecret,
src.ObjectMeta.Namespace); err != nil {
return err
}
dst.Spec.Components.Database.CredentialsSecretName = constants.DefaultPostgresCredentialsSecret
}

dst.Spec.Components.Database.Deployment = toCheV2Deployment(
constants.PostgresName,
src.Spec.Database.PostgresImage,
src.Spec.Database.PostgresImagePullPolicy,
src.Spec.Database.ChePostgresContainerResources.Requests.Memory,
src.Spec.Database.ChePostgresContainerResources.Limits.Memory,
src.Spec.Database.ChePostgresContainerResources.Requests.Cpu,
src.Spec.Database.ChePostgresContainerResources.Limits.Cpu,
nil,
nil,
src.Spec.Database.PostgresEnv,
)

dst.Spec.Components.Database.ExternalDb = src.Spec.Database.ExternalDb
dst.Spec.Components.Database.PostgresDb = src.Spec.Database.ChePostgresDb
dst.Spec.Components.Database.PostgresHostName = src.Spec.Database.ChePostgresHostName
dst.Spec.Components.Database.PostgresPort = src.Spec.Database.ChePostgresPort

dst.Spec.Components.Database.Pvc = toCheV2Pvc(src.Spec.Database.PvcClaimSize, src.Spec.Storage.PostgresPVCStorageClassName)
return nil
}

func (src *CheCluster) convertTo_Components_Dashboard(dst *chev2.CheCluster) error {
runAsUser, fsGroup, err := parseSecurityContext(src)
if err != nil {
Expand Down
13 changes: 5 additions & 8 deletions api/v2/checluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ type CheClusterSpec struct {
// +optional
// +operator-sdk:csv:customresourcedefinitions:type=spec,order=2
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Components"
// +kubebuilder:default:={cheServer: {logLevel: INFO, debug: false}, metrics: {enable: true}, database: {externalDb: false, credentialsSecretName: postgres-credentials, postgresHostName: postgres, postgresPort: "5432", postgresDb: dbche, pvc: {claimSize: "1Gi"}}}
// +kubebuilder:default:={cheServer: {logLevel: INFO, debug: false}, metrics: {enable: true}}
Components CheClusterComponents `json:"components"`
// A configuration that allows users to work with remote Git repositories.
// +optional
Expand Down Expand Up @@ -160,8 +160,9 @@ type CheClusterComponents struct {
// +optional
DevfileRegistry DevfileRegistry `json:"devfileRegistry"`
// Configuration settings related to the database used by the Che installation.
// Database component is Deprecated. All properties will be ignored.
// +optional
// +kubebuilder:default:={externalDb: false, credentialsSecretName: postgres-credentials, postgresHostName: postgres, postgresPort: "5432", postgresDb: dbche, pvc: {claimSize: "1Gi"}}
// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:hidden"
Database Database `json:"database"`
// Configuration settings related to the dashboard used by the Che installation.
// +optional
Expand Down Expand Up @@ -302,6 +303,7 @@ type DevfileRegistry struct {
ExternalDevfileRegistries []ExternalDevfileRegistry `json:"externalDevfileRegistries,omitempty"`
}

// Database component is Deprecated. All properties will be ignored.
// Configuration settings related to the database used by the Che installation.
// +k8s:openapi-gen=true
type Database struct {
Expand All @@ -310,33 +312,27 @@ type Database struct {
// When `externalDb` is set as `true`, no dedicated database is deployed by the
// Operator and you need to provide connection details about the external database you want to use.
// +optional
// +kubebuilder:default:=false
ExternalDb bool `json:"externalDb"`
// Deployment override options.
// +optional
Deployment *Deployment `json:"deployment,omitempty"`
// PostgreSQL database hostname that the Che server connects to.
// Override this value only when using an external database. See field `externalDb`.
// +kubebuilder:default:="postgres"
// +optional
PostgresHostName string `json:"postgresHostName,omitempty"`
// PostgreSQL Database port the Che server connects to.
// Override this value only when using an external database. See field `externalDb`.
// +optional
// +kubebuilder:default:="5432"
PostgresPort string `json:"postgresPort,omitempty"`
// PostgreSQL database name that the Che server uses to connect to the database.
// +optional
// +kubebuilder:default:="dbche"
PostgresDb string `json:"postgresDb,omitempty"`
// The secret that contains PostgreSQL `user` and `password` that the Che server uses to connect to the database.
// The secret must have a `app.kubernetes.io/part-of=che.eclipse.org` label.
// +optional
// +kubebuilder:default:="postgres-credentials"
CredentialsSecretName string `json:"credentialsSecretName,omitempty"`
// PVC settings for PostgreSQL database.
// +optional
// +kubebuilder:default:={claimSize: "1Gi"}
Pvc *PVC `json:"pvc,omitempty"`
}

Expand Down Expand Up @@ -754,6 +750,7 @@ type CheClusterStatus struct {
// +operator-sdk:csv:customresourcedefinitions:type=status
// +operator-sdk:csv:customresourcedefinitions:type=status,displayName="PostgreSQL version"
// +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:text"
// +operator-sdk:csv:customresourcedefinitions:type=status,xDescriptors="urn:alm:descriptor:com.tectonic.ui:hidden"
PostgresVersion string `json:"postgresVersion,omitempty"`
// The resolved workspace base domain. This is either the copy of the explicitly defined property of the
// same name in the spec or, if it is undefined in the spec and we're running on OpenShift, the automatically
Expand Down
Loading

0 comments on commit 12169de

Please sign in to comment.