Skip to content

Commit

Permalink
fix: default the ingress serviceType on other environments
Browse files Browse the repository at this point in the history
so we can use NodePort consistently across dev/staging/production

Signed-off-by: James Strachan <[email protected]>
  • Loading branch information
jstrachan committed Mar 30, 2020
1 parent b35f94d commit 6eea554
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 0 deletions.
3 changes: 3 additions & 0 deletions pkg/cmd/step/verify/step_verify_environments.go
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,9 @@ func ModifyEnvironmentRequirements(out io.Writer, devRequirements *config.Requir
if string(remoteRequirements.Ingress.Kind) == "" {
remoteRequirements.Ingress.Kind = devRequirements.Ingress.Kind
}
if devRequirements.Ingress.ServiceType != "" && remoteRequirements.Ingress.ServiceType == "" {
remoteRequirements.Ingress.ServiceType = devRequirements.Ingress.ServiceType
}
if env.Spec.Namespace == "" {
env.Spec.Namespace = "jx-" + env.Name
}
Expand Down
33 changes: 33 additions & 0 deletions pkg/cmd/step/verify/step_verify_environments_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,39 @@ func TestModifyEnvironmentRequirements(t *testing.T) {
}
}

func TestModifyEnvironmentRequirementsForNodePort(t *testing.T) {
devReq := config.NewRequirementsConfig()
devReq.VersionStream.Ref = "master"
devReq.VersionStream.URL = "https://github.com/jenkins-x/jenkins-x-versions.git"
devReq.Cluster.DevEnvApprovers = []string{"jstrachan", "rawlingsj"}
devReq.Cluster.Provider = "kubernetes"
devReq.Ingress.ServiceType = "NodePort"

stagingReq := NewRemoteRequirementsConfig()
stagingEnv := kube.NewPermanentEnvironment("staging")
stagingEnv.Spec.RemoteCluster = true
stagingEnv.Spec.Source.URL = "https://github.com/someuser/environment-mycluster-staging.git"
stagingEnv.Spec.Source.Ref = "master"
err := ModifyEnvironmentRequirements(os.Stdout, devReq, stagingEnv, stagingReq)
require.NoError(t, err, "failed to invoke ModifyEnvironmentRequirements")

expectedFile := path.Join("test_data", "verify_environments", "remote_requirements_nodeport", "jx-requirements.yml")
assert.FileExists(t, expectedFile)

expected, err := config.LoadRequirementsConfigFile(expectedFile)
require.NoError(t, err, "failed to load expected requirements %s", expectedFile)
expected.Repository = config.RepositoryTypeUnknown
diff := cmp.Diff(stagingReq, expected)
if diff != "" {
t.Logf("generated staging requirements not matching:\n")
t.Logf("%s\n", diff)
assert.Fail(t, "generated staging requirements not matching")

logYaml(t, stagingReq, "actual")
logYaml(t, expected, "expected")
}
}

func logYaml(t *testing.T, value interface{}, message string) {
data, err := yaml.Marshal(value)
assert.NoError(t, err, "failed to marshal to yaml")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
autoUpdate:
enabled: false
schedule: ""
bootConfigURL: https://github.com/someuser/environment-mycluster-staging.git
cluster:
devEnvApprovers:
- jstrachan
- rawlingsj
environmentGitOwner: someuser
gitKind: github
gitName: github
gitServer: https://github.com
namespace: jx-staging
provider: kubernetes
environments:
- gitKind: github
gitServer: https://github.com
ingress:
domain: ""
externalDNS: false
namespaceSubDomain: ""
tls:
email: ""
enabled: false
production: false
key: dev
owner: someuser
promotionStrategy: Auto
remoteCluster: true
repository: environment-mycluster-staging
gitops: true
helmfile: true
ingress:
domain: ""
externalDNS: false
serviceType: NodePort
namespaceSubDomain: -jx-staging.
tls:
email: ""
enabled: false
production: false
secretStorage: local
storage:
backup:
enabled: false
url: ""
logs:
enabled: false
url: ""
reports:
enabled: false
url: ""
repository:
enabled: false
url: ""
vault: {}
velero:
schedule: ""
ttl: ""
versionStream:
ref: master
url: https://github.com/jenkins-x/jenkins-x-versions.git
webhook: lighthouse

0 comments on commit 6eea554

Please sign in to comment.