Skip to content

Commit 9870986

Browse files
authored
Merge pull request #790 from guidonguido/gng/websockify
2 parents cd3bf41 + 67cdb74 commit 9870986

File tree

24 files changed

+1391
-90
lines changed

24 files changed

+1391
-90
lines changed

deploy/crownlabs/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ instance-operator:
7575
novncImage: crownlabs/novnc
7676
filebrowserImage: filebrowser/filebrowser
7777
filebrowserImageTag: latest
78+
instmetricsServerEndpoint: crownlabs-instmetrics.crownlabs-production:9090
7879
containerVmSnapshots:
7980
kanikoImage: gcr.io/kaniko-project/executor
8081
exportImage: "crownlabs/img-exporter"

operators/cmd/instance-operator/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ func main() {
8686
flag.StringVar(&containerEnvOpts.ContentDownloaderImg, "container-env-content-downloader-img", "latest", "The image name for the init-container to download and unarchive initial content to the instance volume.")
8787
flag.StringVar(&containerEnvOpts.ContentUploaderImg, "container-env-content-uploader-img", "latest", "The image name for the job to compress and upload instance content from a persistent instance.")
8888
flag.StringVar(&containerEnvOpts.MyDriveImgAndTag, "container-env-mydrive-img-and-tag", "filebrowser/filebrowser:latest", "The image name and tag for the filebrowser image (sidecar for gui-based file manager)")
89+
flag.StringVar(&containerEnvOpts.InstMetricsEndpoint, "container-env-instmetrics-server-endpoint", "instmetrics:9090", "The endpoint of the InstMetrics gRPC server")
8990

9091
flag.StringVar(&instSnapOpts.VMRegistry, "vm-registry", "", "The registry where VMs should be uploaded")
9192
flag.StringVar(&instSnapOpts.RegistrySecretName, "vm-registry-secret", "", "The name of the secret for the VM registry")

operators/deploy/instance-operator/templates/deployment.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ spec:
4545
- "--container-env-content-downloader-img={{ .Values.configurations.containerEnvironmentOptions.contentDownloaderImage }}"
4646
- "--container-env-content-uploader-img={{ .Values.configurations.containerEnvironmentOptions.contentUploaderImage }}"
4747
- "--container-env-mydrive-img-and-tag={{ .Values.configurations.containerEnvironmentOptions.mydriveImageAndTag }}"
48+
- "--container-env-instmetrics-server-endpoint={{ .Values.configurations.containerEnvironmentOptions.instmetricsServerEndpoint }}"
4849
- "--vm-registry={{ .Values.configurations.privateContainerRegistry.url }}"
4950
- "--vm-registry-secret={{ .Values.configurations.privateContainerRegistry.secretName }}"
5051
- "--container-export-img={{ .Values.configurations.containerVmSnapshots.exportImage }}:{{ include "instance-operator.containerExportImageTag" . }}"

operators/deploy/instance-operator/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ configurations:
1919
contentDownloaderImage: crownlabs/content-downloader
2020
contentUploaderImage: crownlabs/content-uploader
2121
mydriveImageAndTag: filebrowser/filebrowser:latest
22+
instmetricsServerEndpoint: crownlabs-instmetrics.crownlabs-production:9090
2223
containerVmSnapshots:
2324
kanikoImage: gcr.io/kaniko-project/executor:latest
2425
exportImage: "crownlabs/img-exporter"

operators/pkg/forge/containers.go

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,23 @@ const (
5353
CrownLabsUserID = int64(1010)
5454
// SubmissionJobMaxRetries -> max number of retries for submission jobs.
5555
SubmissionJobMaxRetries = 10
56+
// AppCPULimitsEnvName -> name of the env variable containing AppContainer CPU limits.
57+
AppCPULimitsEnvName = "APP_CPU_LIMITS"
58+
// AppMEMLimitsEnvName -> name of the env variable containing AppContainer memory limits.
59+
AppMEMLimitsEnvName = "APP_MEM_LIMITS"
60+
// PodNameEnvName -> name of the env variable containing the Pod Name.
61+
PodNameEnvName = "POD_NAME"
5662

5763
containersTerminationGracePeriod = 10
5864
)
5965

66+
var (
67+
// DefaultDivisor -> "0".
68+
DefaultDivisor = *resource.NewQuantity(0, "")
69+
// MilliDivisor -> "1m".
70+
MilliDivisor = *resource.NewMilliQuantity(1, resource.DecimalSI)
71+
)
72+
6073
// ContainerEnvOpts contains images name and tag for container environment.
6174
type ContainerEnvOpts struct {
6275
ImagesTag string
@@ -65,6 +78,7 @@ type ContainerEnvOpts struct {
6578
MyDriveImgAndTag string
6679
ContentDownloaderImg string
6780
ContentUploaderImg string
81+
InstMetricsEndpoint string
6882
}
6983

7084
// PVCSpec forges a ReadWriteOnce PersistentVolumeClaimSpec
@@ -166,7 +180,7 @@ func ContainersSpec(instance *clv1alpha2.Instance, environment *clv1alpha2.Envir
166180
volumeMountPath := MyDriveMountPath(environment)
167181
switch environment.EnvironmentType {
168182
case clv1alpha2.ClassContainer:
169-
containers = append(containers, WebsockifyContainer(opts, environment), XVncContainer(opts), AppContainer(instance, environment, volumeMountPath))
183+
containers = append(containers, WebsockifyContainer(opts, environment, instance), XVncContainer(opts), AppContainer(instance, environment, volumeMountPath))
170184
case clv1alpha2.ClassStandalone:
171185
containers = append(containers, StandaloneContainer(instance, environment, volumeMountPath))
172186
default:
@@ -179,14 +193,22 @@ func ContainersSpec(instance *clv1alpha2.Instance, environment *clv1alpha2.Envir
179193

180194
// WebsockifyContainer forges the sidecar container to proxy requests from websocket
181195
// to the VNC server.
182-
func WebsockifyContainer(opts *ContainerEnvOpts, environment *clv1alpha2.Environment) corev1.Container {
196+
func WebsockifyContainer(opts *ContainerEnvOpts, environment *clv1alpha2.Environment, instance *clv1alpha2.Instance) corev1.Container {
183197
websockifyContainer := GenericContainer(WebsockifyName, fmt.Sprintf("%s:%s", opts.WebsockifyImg, opts.ImagesTag))
184198
SetContainerResources(&websockifyContainer, 0.01, 0.1, 30, 100)
199+
AddEnvVariableFromFieldToContainer(&websockifyContainer, PodNameEnvName, "metadata.name")
200+
AddEnvVariableFromResourcesToContainer(&websockifyContainer, AppCPULimitsEnvName, environment.Name, corev1.ResourceLimitsCPU, MilliDivisor)
201+
AddEnvVariableFromResourcesToContainer(&websockifyContainer, AppMEMLimitsEnvName, environment.Name, corev1.ResourceLimitsMemory, DefaultDivisor)
185202
AddTCPPortToContainer(&websockifyContainer, GUIPortName, GUIPortNumber)
186203
AddTCPPortToContainer(&websockifyContainer, MetricsPortName, MetricsPortNumber)
187204
AddContainerArg(&websockifyContainer, "http-addr", fmt.Sprintf(":%d", GUIPortNumber))
205+
AddContainerArg(&websockifyContainer, "base-path", IngressGUICleanPath(instance))
188206
AddContainerArg(&websockifyContainer, "metrics-addr", fmt.Sprintf(":%d", MetricsPortNumber))
189207
AddContainerArg(&websockifyContainer, "show-controls", fmt.Sprint(environment.Mode == clv1alpha2.ModeStandard))
208+
AddContainerArg(&websockifyContainer, "instmetrics-server-endpoint", opts.InstMetricsEndpoint)
209+
AddContainerArg(&websockifyContainer, "pod-name", fmt.Sprintf("$(%s)", PodNameEnvName))
210+
AddContainerArg(&websockifyContainer, "cpu-limit", fmt.Sprintf("$(%s)", AppCPULimitsEnvName))
211+
AddContainerArg(&websockifyContainer, "memory-limit", fmt.Sprintf("$(%s)", AppMEMLimitsEnvName))
190212
SetContainerReadinessTCPProbe(&websockifyContainer, GUIPortName)
191213
return websockifyContainer
192214
}
@@ -236,8 +258,8 @@ func StandaloneContainer(instance *clv1alpha2.Instance, environment *clv1alpha2.
236258
func AppContainer(instance *clv1alpha2.Instance, environment *clv1alpha2.Environment, volumeMountPath string) corev1.Container {
237259
appContainer := GenericContainer(environment.Name, environment.Image)
238260
SetContainerResourcesFromEnvironment(&appContainer, environment)
239-
AddEnvVariableFromResourcesToContainer(&appContainer, "CROWNLABS_CPU_REQUESTS", corev1.ResourceRequestsCPU)
240-
AddEnvVariableFromResourcesToContainer(&appContainer, "CROWNLABS_CPU_LIMITS", corev1.ResourceLimitsCPU)
261+
AddEnvVariableFromResourcesToContainer(&appContainer, "CROWNLABS_CPU_REQUESTS", appContainer.Name, corev1.ResourceRequestsCPU, DefaultDivisor)
262+
AddEnvVariableFromResourcesToContainer(&appContainer, "CROWNLABS_CPU_LIMITS", appContainer.Name, corev1.ResourceLimitsCPU, DefaultDivisor)
241263
if NeedsContainerVolume(instance, environment) {
242264
AddContainerVolumeMount(&appContainer, MyDriveName, volumeMountPath)
243265
}
@@ -316,14 +338,27 @@ func AddEnvVariableToContainer(c *corev1.Container, name, value string) {
316338
})
317339
}
318340

319-
// AddEnvVariableFromResourcesToContainer appends an environment variable to the given container's env with a resource-referenced value.
320-
func AddEnvVariableFromResourcesToContainer(c *corev1.Container, name string, resName corev1.ResourceName) {
341+
// AddEnvVariableFromFieldToContainer appends an environment variable to the given container's env with a generic field-referenced value.
342+
func AddEnvVariableFromFieldToContainer(c *corev1.Container, name, value string) {
321343
c.Env = append(c.Env, corev1.EnvVar{
322344
Name: name,
345+
ValueFrom: &corev1.EnvVarSource{
346+
FieldRef: &corev1.ObjectFieldSelector{
347+
FieldPath: value,
348+
},
349+
},
350+
})
351+
}
352+
353+
// AddEnvVariableFromResourcesToContainer appends an environment variable to the given container's env with a resource-referenced value from the source container.
354+
func AddEnvVariableFromResourcesToContainer(c *corev1.Container, envVarName, srcContainerName string, resName corev1.ResourceName, divisor resource.Quantity) {
355+
c.Env = append(c.Env, corev1.EnvVar{
356+
Name: envVarName,
323357
ValueFrom: &corev1.EnvVarSource{
324358
ResourceFieldRef: &corev1.ResourceFieldSelector{
325-
ContainerName: c.Name,
359+
ContainerName: srcContainerName,
326360
Resource: resName.String(),
361+
Divisor: divisor,
327362
},
328363
},
329364
})

operators/pkg/forge/containers_test.go

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ var _ = Describe("Containers and Deployment spec forging", func() {
276276
EnvironmentType: clv1alpha2.ClassContainer,
277277
ExpectedOutput: func(i *clv1alpha2.Instance, e *clv1alpha2.Environment) []corev1.Container {
278278
return []corev1.Container{
279-
forge.WebsockifyContainer(&opts, &environment),
279+
forge.WebsockifyContainer(&opts, &environment, i),
280280
forge.XVncContainer(&opts),
281281
forge.MyDriveContainer(i, &opts, myDriveMountPath),
282282
forge.AppContainer(i, e, myDriveMountPath),
@@ -289,7 +289,7 @@ var _ = Describe("Containers and Deployment spec forging", func() {
289289
EnvironmentType: clv1alpha2.ClassContainer,
290290
ExpectedOutput: func(i *clv1alpha2.Instance, e *clv1alpha2.Environment) []corev1.Container {
291291
return []corev1.Container{
292-
forge.WebsockifyContainer(&opts, &environment),
292+
forge.WebsockifyContainer(&opts, &environment, i),
293293
forge.XVncContainer(&opts),
294294
forge.AppContainer(i, e, myDriveMountPath),
295295
}
@@ -301,7 +301,7 @@ var _ = Describe("Containers and Deployment spec forging", func() {
301301
EnvironmentType: clv1alpha2.ClassContainer,
302302
ExpectedOutput: func(i *clv1alpha2.Instance, e *clv1alpha2.Environment) []corev1.Container {
303303
return []corev1.Container{
304-
forge.WebsockifyContainer(&opts, &environment),
304+
forge.WebsockifyContainer(&opts, &environment, i),
305305
forge.XVncContainer(&opts),
306306
forge.AppContainer(i, e, myDriveMountPath),
307307
}
@@ -360,8 +360,8 @@ var _ = Describe("Containers and Deployment spec forging", func() {
360360
expected.Name = envName
361361
forge.AddEnvVariableToContainer(&expected, "CROWNLABS_BASE_PATH", forge.IngressGUICleanPath(&instance))
362362
forge.AddEnvVariableToContainer(&expected, "CROWNLABS_LISTEN_PORT", "6080")
363-
forge.AddEnvVariableFromResourcesToContainer(&expected, "CROWNLABS_CPU_REQUESTS", corev1.ResourceRequestsCPU)
364-
forge.AddEnvVariableFromResourcesToContainer(&expected, "CROWNLABS_CPU_LIMITS", corev1.ResourceLimitsCPU)
363+
forge.AddEnvVariableFromResourcesToContainer(&expected, "CROWNLABS_CPU_REQUESTS", expected.Name, corev1.ResourceRequestsCPU, forge.DefaultDivisor)
364+
forge.AddEnvVariableFromResourcesToContainer(&expected, "CROWNLABS_CPU_LIMITS", expected.Name, corev1.ResourceLimitsCPU, forge.DefaultDivisor)
365365
Expect(actual.Env).To(ConsistOf(expected.Env))
366366
})
367367
})
@@ -370,7 +370,7 @@ var _ = Describe("Containers and Deployment spec forging", func() {
370370
var actual, expected corev1.Container
371371
JustBeforeEach(func() {
372372
expected = corev1.Container{}
373-
actual = forge.WebsockifyContainer(&opts, &environment)
373+
actual = forge.WebsockifyContainer(&opts, &environment, &instance)
374374
})
375375

376376
It("Should set the correct container name and image", func() {
@@ -387,13 +387,17 @@ var _ = Describe("Containers and Deployment spec forging", func() {
387387
forge.AddTCPPortToContainer(&expected, "metrics", 9090)
388388
Expect(actual.Ports).To(Equal(expected.Ports))
389389
})
390-
It("Should set no environment variables", func() {
391-
Expect(actual.Env).To(BeEmpty())
392-
})
393390
It("Should set the readiness probe", func() {
394391
forge.SetContainerReadinessTCPProbe(&expected, "gui")
395392
Expect(actual.ReadinessProbe).To(Equal(expected.ReadinessProbe))
396393
})
394+
It("Should set the env varibles", func() {
395+
expected.Name = forge.WebsockifyName
396+
forge.AddEnvVariableFromFieldToContainer(&expected, forge.PodNameEnvName, "metadata.name")
397+
forge.AddEnvVariableFromResourcesToContainer(&expected, forge.AppCPULimitsEnvName, environment.Name, corev1.ResourceLimitsCPU, forge.MilliDivisor)
398+
forge.AddEnvVariableFromResourcesToContainer(&expected, forge.AppMEMLimitsEnvName, environment.Name, corev1.ResourceLimitsMemory, forge.DefaultDivisor)
399+
Expect(actual.Env).To(ConsistOf(expected.Env))
400+
})
397401

398402
When("the environment mode is Standard", func() {
399403
BeforeEach(func() {
@@ -403,8 +407,13 @@ var _ = Describe("Containers and Deployment spec forging", func() {
403407
It("Should set the correct arguments", func() {
404408
Expect(actual.Args).To(ConsistOf([]string{
405409
fmt.Sprintf("--http-addr=:%d", forge.GUIPortNumber),
410+
fmt.Sprintf("--base-path=%s", forge.IngressGUICleanPath(&instance)),
406411
fmt.Sprintf("--metrics-addr=:%d", forge.MetricsPortNumber),
407412
"--show-controls=true",
413+
fmt.Sprintf("--instmetrics-server-endpoint=%s", opts.InstMetricsEndpoint),
414+
fmt.Sprintf("--pod-name=$(%s)", forge.PodNameEnvName),
415+
fmt.Sprintf("--cpu-limit=$(%s)", forge.AppCPULimitsEnvName),
416+
fmt.Sprintf("--memory-limit=$(%s)", forge.AppMEMLimitsEnvName),
408417
}))
409418
})
410419
})
@@ -417,8 +426,13 @@ var _ = Describe("Containers and Deployment spec forging", func() {
417426
It("Should set the correct arguments", func() {
418427
Expect(actual.Args).To(ConsistOf([]string{
419428
fmt.Sprintf("--http-addr=:%d", forge.GUIPortNumber),
429+
fmt.Sprintf("--base-path=%s", forge.IngressGUICleanPath(&instance)),
420430
fmt.Sprintf("--metrics-addr=:%d", forge.MetricsPortNumber),
421431
"--show-controls=false",
432+
fmt.Sprintf("--instmetrics-server-endpoint=%s", opts.InstMetricsEndpoint),
433+
fmt.Sprintf("--pod-name=$(%s)", forge.PodNameEnvName),
434+
fmt.Sprintf("--cpu-limit=$(%s)", forge.AppCPULimitsEnvName),
435+
fmt.Sprintf("--memory-limit=$(%s)", forge.AppMEMLimitsEnvName),
422436
}))
423437
})
424438
})
@@ -516,8 +530,8 @@ var _ = Describe("Containers and Deployment spec forging", func() {
516530
})
517531
It("Should set the env varibles", func() {
518532
expected.Name = envName
519-
forge.AddEnvVariableFromResourcesToContainer(&expected, "CROWNLABS_CPU_REQUESTS", corev1.ResourceRequestsCPU)
520-
forge.AddEnvVariableFromResourcesToContainer(&expected, "CROWNLABS_CPU_LIMITS", corev1.ResourceLimitsCPU)
533+
forge.AddEnvVariableFromResourcesToContainer(&expected, "CROWNLABS_CPU_REQUESTS", expected.Name, corev1.ResourceRequestsCPU, forge.DefaultDivisor)
534+
forge.AddEnvVariableFromResourcesToContainer(&expected, "CROWNLABS_CPU_LIMITS", expected.Name, corev1.ResourceLimitsCPU, forge.DefaultDivisor)
521535
Expect(actual.Env).To(ConsistOf(expected.Env))
522536
})
523537
})
@@ -779,7 +793,7 @@ var _ = Describe("Containers and Deployment spec forging", func() {
779793
Describe("The forge.AddEnvVariableFromResourcesToContainer", func() {
780794
JustBeforeEach(func() {
781795
container.Name = envName
782-
forge.AddEnvVariableFromResourcesToContainer(&container, envVarName, corev1.ResourceRequestsCPU)
796+
forge.AddEnvVariableFromResourcesToContainer(&container, envVarName, container.Name, corev1.ResourceRequestsCPU, forge.DefaultDivisor)
783797
})
784798
It("Should add a single env entry with the specified parameters", func() {
785799
Expect(container.Env).To(ConsistOf(corev1.EnvVar{

operators/pkg/forge/ingresses.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ const (
3131
IngressGUINameSuffix = "gui"
3232
// IngressMyDriveNameSuffix -> the suffix added to the name of the ingress targeting the environment "MyDrive".
3333
IngressMyDriveNameSuffix = "mydrive"
34-
// IngressStandaloneSuffix -> the suffix added to the path of the ingress targeting the standalone application.
35-
IngressStandaloneSuffix = "app"
34+
// IngressAppSuffix -> the suffix added to the path of the ingress targeting standalone and container environments.
35+
IngressAppSuffix = "app"
3636

3737
// IngressDefaultCertificateName -> the name of the secret containing the crownlabs certificate.
3838
IngressDefaultCertificateName = "crownlabs-ingress-secret"
@@ -81,8 +81,6 @@ func IngressGUIAnnotations(environment *clv1alpha2.Environment, annotations map[
8181
}
8282
if environment.EnvironmentType == clv1alpha2.ClassStandalone && environment.RewriteURL {
8383
annotations["nginx.ingress.kubernetes.io/rewrite-target"] = StandaloneRewriteEndpoint
84-
} else if environment.EnvironmentType == clv1alpha2.ClassContainer {
85-
annotations["nginx.ingress.kubernetes.io/rewrite-target"] = WebsockifyRewriteEndpoint
8684
}
8785
annotations["nginx.ingress.kubernetes.io/proxy-read-timeout"] = "3600"
8886
annotations["nginx.ingress.kubernetes.io/proxy-send-timeout"] = "3600"
@@ -142,26 +140,28 @@ func IngressGUIPath(instance *clv1alpha2.Instance, environment *clv1alpha2.Envir
142140
switch environment.EnvironmentType {
143141
case clv1alpha2.ClassStandalone:
144142
if environment.RewriteURL {
145-
return strings.TrimRight(fmt.Sprintf("%v/%v/%v", IngressInstancePrefix, instance.UID, IngressStandaloneSuffix+"(/|$)(.*)"), "/")
143+
return strings.TrimRight(fmt.Sprintf("%v/%v/%v", IngressInstancePrefix, instance.UID, IngressAppSuffix+"(/|$)(.*)"), "/")
146144
}
147-
return strings.TrimRight(fmt.Sprintf("%v/%v/%v", IngressInstancePrefix, instance.UID, IngressStandaloneSuffix), "/")
148-
case clv1alpha2.ClassContainer, clv1alpha2.ClassCloudVM, clv1alpha2.ClassVM:
145+
return strings.TrimRight(fmt.Sprintf("%v/%v/%v", IngressInstancePrefix, instance.UID, IngressAppSuffix), "/")
146+
case clv1alpha2.ClassContainer:
147+
return strings.TrimRight(fmt.Sprintf("%v/%v/%v", IngressInstancePrefix, instance.UID, IngressAppSuffix), "/")
148+
case clv1alpha2.ClassCloudVM, clv1alpha2.ClassVM:
149149
return strings.TrimRight(fmt.Sprintf("%v/%v/%v", IngressInstancePrefix, instance.UID, IngressVNCGUIPathSuffix), "/")
150150
}
151151
return ""
152152
}
153153

154154
// IngressGUICleanPath returns the path of the ingress targeting the environment GUI vnc or Standalone, without the url-rewrite's regex.
155155
func IngressGUICleanPath(instance *clv1alpha2.Instance) string {
156-
return strings.TrimRight(fmt.Sprintf("%v/%v/%v", IngressInstancePrefix, instance.UID, IngressStandaloneSuffix), "/")
156+
return strings.TrimRight(fmt.Sprintf("%v/%v/%v", IngressInstancePrefix, instance.UID, IngressAppSuffix), "/")
157157
}
158158

159159
// IngressGuiStatusURL returns the path of the ingress targeting the environment.
160160
func IngressGuiStatusURL(host string, environment *clv1alpha2.Environment, instance *clv1alpha2.Instance) string {
161161
switch environment.EnvironmentType {
162-
case clv1alpha2.ClassStandalone:
163-
return fmt.Sprintf("https://%v%v/%v/%v/", host, IngressInstancePrefix, instance.UID, IngressStandaloneSuffix)
164-
case clv1alpha2.ClassContainer, clv1alpha2.ClassVM, clv1alpha2.ClassCloudVM:
162+
case clv1alpha2.ClassStandalone, clv1alpha2.ClassContainer:
163+
return fmt.Sprintf("https://%v%v/%v/%v/", host, IngressInstancePrefix, instance.UID, IngressAppSuffix)
164+
case clv1alpha2.ClassVM, clv1alpha2.ClassCloudVM:
165165
return fmt.Sprintf("https://%v%v/%v/", host, IngressInstancePrefix, instance.UID)
166166
}
167167
return ""
@@ -171,7 +171,7 @@ func IngressGuiStatusURL(host string, environment *clv1alpha2.Environment, insta
171171
func IngressGUIName(environment *clv1alpha2.Environment) string {
172172
switch environment.EnvironmentType {
173173
case clv1alpha2.ClassStandalone:
174-
return IngressStandaloneSuffix
174+
return IngressAppSuffix
175175
case clv1alpha2.ClassContainer, clv1alpha2.ClassVM, clv1alpha2.ClassCloudVM:
176176
return IngressGUINameSuffix
177177
}

0 commit comments

Comments
 (0)