Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
sleshchenko committed Sep 25, 2020
1 parent 548e6e6 commit 3c4c9a8
Show file tree
Hide file tree
Showing 11 changed files with 151 additions and 128 deletions.
2 changes: 1 addition & 1 deletion pkg/controller/che/che_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,7 @@ func (r *ReconcileChe) Reconcile(request reconcile.Request) (reconcile.Result, e
}

// create Che service and route
serviceStatus := deploy.SyncCheServiceToCluster(deployContext)
serviceStatus := server.SyncCheServiceToCluster(deployContext)
if !tests {
if !serviceStatus.Continue {
logrus.Infof("Waiting on service '%s' to be ready", deploy.CheServiceName)
Expand Down
4 changes: 2 additions & 2 deletions pkg/controller/che/che_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ package che

import (
"context"
"github.com/eclipse/che-operator/pkg/deploy/identity-provider"
identity_provider "github.com/eclipse/che-operator/pkg/deploy/identity-provider"
"io/ioutil"
"os"
"time"
Expand Down Expand Up @@ -246,7 +246,7 @@ func TestCheController(t *testing.T) {
if err = r.client.Get(context.TODO(), types.NamespacedName{Name: cheCR.Name, Namespace: cheCR.Namespace}, cheCR); err != nil {
t.Errorf("Failed to get the Che custom resource %s: %s", cheCR.Name, err)
}
if err = keycloak.CreateIdentityProviderItems(deployContext, "che"); err != nil {
if err = identity_provider.CreateIdentityProviderItems(deployContext, "che"); err != nil {
t.Errorf("Failed to create the items for the identity provider: %s", err)
}
oAuthClientName := cheCR.Spec.Auth.OAuthClientName
Expand Down
48 changes: 24 additions & 24 deletions pkg/deploy/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,30 +105,6 @@ func InitDefaults(defaultsPath string) {
}
}

func InitDefaultsFromEnv() {
defaultCheVersion = getDefaultFromEnv("CHE_VERSION")
defaultCheServerImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_server"))
defaultPluginRegistryImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_plugin_registry"))
defaultDevfileRegistryImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_devfile_registry"))
defaultPvcJobsImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_pvc_jobs"))
defaultPostgresImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_postgres"))
defaultKeycloakImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_keycloak"))
defaultSingleHostGatewayImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_single_host_gateway"))
defaultSingleHostGatewayConfigSidecarImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_single_host_gateway_config_sidecar"))

// CRW images for that are mentioned in the Che server che.properties
// For CRW these should be synced by hand with images stored in RH registries
// instead of being synced by script with the content of the upstream `che.properties` file
defaultCheWorkspacePluginBrokerMetadataImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_workspace_plugin_broker_metadata"))
defaultCheWorkspacePluginBrokerArtifactsImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_workspace_plugin_broker_artifacts"))
defaultCheServerSecureExposerJwtProxyImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_server_secure_exposer_jwt_proxy_image"))

// Don't get some k8s specific env
if !util.IsOpenShift {
defaultCheTLSSecretsCreationJobImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_tls_secrets_creation_job"))
}
}

func InitDefaultsFromFile(defaultsPath string) {
operatorDeployment := getDefaultsFromFile(defaultsPath)

Expand Down Expand Up @@ -364,3 +340,27 @@ func getOrganizationFromImage(image string) string {
}
return organization
}

func InitDefaultsFromEnv() {
defaultCheVersion = getDefaultFromEnv("CHE_VERSION")
defaultCheServerImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_server"))
defaultPluginRegistryImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_plugin_registry"))
defaultDevfileRegistryImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_devfile_registry"))
defaultPvcJobsImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_pvc_jobs"))
defaultPostgresImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_postgres"))
defaultKeycloakImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_keycloak"))
defaultSingleHostGatewayImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_single_host_gateway"))
defaultSingleHostGatewayConfigSidecarImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_single_host_gateway_config_sidecar"))

// CRW images for that are mentioned in the Che server che.properties
// For CRW these should be synced by hand with images stored in RH registries
// instead of being synced by script with the content of the upstream `che.properties` file
defaultCheWorkspacePluginBrokerMetadataImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_workspace_plugin_broker_metadata"))
defaultCheWorkspacePluginBrokerArtifactsImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_workspace_plugin_broker_artifacts"))
defaultCheServerSecureExposerJwtProxyImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_server_secure_exposer_jwt_proxy_image"))

// Don't get some k8s specific env
if !util.IsOpenShift {
defaultCheTLSSecretsCreationJobImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_tls_secrets_creation_job"))
}
}
56 changes: 0 additions & 56 deletions pkg/deploy/defaults_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,67 +13,11 @@ package deploy

import (
"fmt"
"io/ioutil"
"os"
"testing"

orgv1 "github.com/eclipse/che-operator/pkg/apis/org/v1"
util "github.com/eclipse/che-operator/pkg/util"
"gopkg.in/yaml.v2"
appsv1 "k8s.io/api/apps/v1"
)

var (
cheVersionTest string
cheServerImageTest string
pluginRegistryImageTest string
devfileRegistryImageTest string
pvcJobsImageTest string
postgresImageTest string
keycloakImageTest string
brokerMetadataTest string
brokerArtifactsTest string
jwtProxyTest string
tlsJobImageTest string
)

func init() {
operator := &appsv1.Deployment{}
data, err := ioutil.ReadFile("../../deploy/operator.yaml")
yaml.Unmarshal(data, operator)
if err == nil {
for _, env := range operator.Spec.Template.Spec.Containers[0].Env {
os.Setenv(env.Name, env.Value)
switch env.Name {
case "CHE_VERSION":
cheVersionTest = env.Value
case util.GetArchitectureDependentEnv("RELATED_IMAGE_che_server"):
cheServerImageTest = env.Value
case util.GetArchitectureDependentEnv("RELATED_IMAGE_plugin_registry"):
pluginRegistryImageTest = env.Value
case util.GetArchitectureDependentEnv("RELATED_IMAGE_devfile_registry"):
devfileRegistryImageTest = env.Value
case util.GetArchitectureDependentEnv("RELATED_IMAGE_che_tls_secrets_creation_job"):
tlsJobImageTest = env.Value
case util.GetArchitectureDependentEnv("RELATED_IMAGE_pvc_jobs"):
pvcJobsImageTest = env.Value
case util.GetArchitectureDependentEnv("RELATED_IMAGE_postgres"):
postgresImageTest = env.Value
case util.GetArchitectureDependentEnv("RELATED_IMAGE_keycloak"):
keycloakImageTest = env.Value
case util.GetArchitectureDependentEnv("RELATED_IMAGE_che_workspace_plugin_broker_metadata"):
brokerMetadataTest = env.Value
case util.GetArchitectureDependentEnv("RELATED_IMAGE_che_workspace_plugin_broker_artifacts"):
brokerArtifactsTest = env.Value
case util.GetArchitectureDependentEnv("RELATED_IMAGE_che_server_secure_exposer_jwt_proxy_image"):
jwtProxyTest = env.Value
}
}
}

InitDefaultsFromEnv()
}

func TestDefaultFromEnv(t *testing.T) {
if DefaultCheVersion() != cheVersionTest {
t.Errorf("Expected %s but was %s", cheVersionTest, DefaultCheVersion())
Expand Down
6 changes: 6 additions & 0 deletions pkg/deploy/init_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package deploy


func init() {
InitTestDefaults("../../deploy/operator.yaml")
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@
// Contributors:
// Red Hat, Inc. - initial API and implementation
//
package deploy
package server

import (
"fmt"
"github.com/eclipse/che-operator/pkg/deploy"
"testing"

orgv1 "github.com/eclipse/che-operator/pkg/apis/org/v1"
Expand All @@ -39,9 +40,9 @@ func TestCreateCheDefaultService(t *testing.T) {
Server: orgv1.CheClusterSpecServer{},
},
}
deployContext := &DeployContext{
deployContext := &deploy.DeployContext{
CheCluster: cheCluster,
ClusterAPI: ClusterAPI{},
ClusterAPI: deploy.ClusterAPI{},
}
service, err := GetSpecCheService(deployContext)

Expand All @@ -63,9 +64,9 @@ func TestCreateCheServerDebug(t *testing.T) {
},
},
}
deployContext := &DeployContext{
deployContext := &deploy.DeployContext{
CheCluster: cheCluster,
ClusterAPI: ClusterAPI{},
ClusterAPI: deploy.ClusterAPI{},
}

service, err := GetSpecCheService(deployContext)
Expand All @@ -90,9 +91,9 @@ func TestCreateCheServiceEnableMetrics(t *testing.T) {
},
}

deployContext := &DeployContext{
deployContext := &deploy.DeployContext{
CheCluster: cheCluster,
ClusterAPI: ClusterAPI{},
ClusterAPI: deploy.ClusterAPI{},
}

service, err := GetSpecCheService(deployContext)
Expand All @@ -116,9 +117,9 @@ func TestCreateCheServiceDisableMetrics(t *testing.T) {
},
}

deployContext := &DeployContext{
deployContext := &deploy.DeployContext{
CheCluster: cheCluster,
ClusterAPI: ClusterAPI{},
ClusterAPI: deploy.ClusterAPI{},
}

service, err := GetSpecCheService(deployContext)
Expand All @@ -131,7 +132,7 @@ func TestCreateCheServiceDisableMetrics(t *testing.T) {
t.Error("expected 2 ports")
}
checkPort(ports[0], "http", 8080, t)
checkPort(ports[1], "metrics", DefaultCheMetricsPort, t)
checkPort(ports[1], "metrics", deploy.DefaultCheMetricsPort, t)
}

func checkPort(actualPort corev1.ServicePort, expectedName string, expectedPort int32, t *testing.T) {
Expand Down
7 changes: 7 additions & 0 deletions pkg/deploy/server/init_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package server

import "github.com/eclipse/che-operator/pkg/deploy"

func init() {
deploy.InitTestDefaults("../../../deploy/operator.yaml")
}
36 changes: 36 additions & 0 deletions pkg/deploy/server/service.go.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package server

import (
"github.com/eclipse/che-operator/pkg/deploy"
"k8s.io/api/core/v1"
)

func GetSpecCheService(deployContext *deploy.DeployContext) (*v1.Service, error) {
portName := []string{"http"}
portNumber := []int32{8080}
labels := deploy.GetLabels(deployContext.CheCluster, deploy.DefaultCheFlavor(deployContext.CheCluster))

if deployContext.CheCluster.Spec.Metrics.Enable {
portName = append(portName, "metrics")
portNumber = append(portNumber, deploy.DefaultCheMetricsPort)
}

if deployContext.CheCluster.Spec.Server.CheDebug == "true" {
portName = append(portName, "debug")
portNumber = append(portNumber, deploy.DefaultCheDebugPort)
}

return deploy.GetSpecService(deployContext, deploy.CheServiceName, portName, portNumber, labels)
}

func SyncCheServiceToCluster(deployContext *deploy.DeployContext) deploy.ServiceProvisioningStatus {
specService, err := GetSpecCheService(deployContext)
if err != nil {
return deploy.ServiceProvisioningStatus{
ProvisioningStatus: deploy.ProvisioningStatus{Err: err},
}
}

return deploy.DoSyncServiceToCluster(deployContext, specService)
}

38 changes: 4 additions & 34 deletions pkg/deploy/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ package deploy
import (
"context"
"fmt"

"github.com/eclipse/che-operator/pkg/util"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
Expand All @@ -40,52 +39,23 @@ var portsDiffOpts = cmp.Options{
cmpopts.IgnoreFields(corev1.ServicePort{}, "TargetPort", "NodePort"),
}

func SyncCheServiceToCluster(deployContext *DeployContext) ServiceProvisioningStatus {
specService, err := GetSpecCheService(deployContext)
if err != nil {
return ServiceProvisioningStatus{
ProvisioningStatus: ProvisioningStatus{Err: err},
}
}

return doSyncServiceToCluster(deployContext, specService)
}

func GetSpecCheService(deployContext *DeployContext) (*corev1.Service, error) {
portName := []string{"http"}
portNumber := []int32{8080}
labels := GetLabels(deployContext.CheCluster, DefaultCheFlavor(deployContext.CheCluster))

if deployContext.CheCluster.Spec.Metrics.Enable {
portName = append(portName, "metrics")
portNumber = append(portNumber, DefaultCheMetricsPort)
}

if deployContext.CheCluster.Spec.Server.CheDebug == "true" {
portName = append(portName, "debug")
portNumber = append(portNumber, DefaultCheDebugPort)
}

return getSpecService(deployContext, CheServiceName, portName, portNumber, labels)
}

func SyncServiceToCluster(
deployContext *DeployContext,
name string,
portName []string,
portNumber []int32,
labels map[string]string) ServiceProvisioningStatus {
specService, err := getSpecService(deployContext, name, portName, portNumber, labels)
specService, err := GetSpecService(deployContext, name, portName, portNumber, labels)
if err != nil {
return ServiceProvisioningStatus{
ProvisioningStatus: ProvisioningStatus{Err: err},
}
}

return doSyncServiceToCluster(deployContext, specService)
return DoSyncServiceToCluster(deployContext, specService)
}

func doSyncServiceToCluster(deployContext *DeployContext, specService *corev1.Service) ServiceProvisioningStatus {
func DoSyncServiceToCluster(deployContext *DeployContext, specService *corev1.Service) ServiceProvisioningStatus {

clusterService, err := getClusterService(specService.Name, specService.Namespace, deployContext.ClusterAPI.Client)
if err != nil {
Expand Down Expand Up @@ -127,7 +97,7 @@ func doSyncServiceToCluster(deployContext *DeployContext, specService *corev1.Se
}
}

func getSpecService(
func GetSpecService(
deployContext *DeployContext,
name string,
portName []string,
Expand Down
Loading

0 comments on commit 3c4c9a8

Please sign in to comment.