Skip to content

Commit

Permalink
refactor: (8) inline functions into class methods
Browse files Browse the repository at this point in the history
  • Loading branch information
vvagaytsev committed Nov 8, 2023
1 parent 3ec92d2 commit 6d6f80f
Showing 1 changed file with 68 additions and 88 deletions.
156 changes: 68 additions & 88 deletions core/src/plugins/kubernetes/nginx/nginx-helm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,78 @@ const HELM_INGRESS_NGINX_DEPLOYMENT_TIMEOUT = "300s"
type _HelmValue = number | string | boolean | object | null | undefined

export abstract class HelmGardenIngressController extends GardenIngressController {
override install(ctx: KubernetesPluginContext, log: Log): Promise<void> {
return helmNginxInstall(ctx, log, this.helmValuesGetter())
override async install(ctx: KubernetesPluginContext, log: Log): Promise<void> {
const ingressControllerReady = await this.ready(ctx, log)
if (ingressControllerReady) {
return
}

const provider = ctx.provider
const config = provider.config
const namespace = config.gardenSystemNamespace
const systemVars: SystemVars = getKubernetesSystemVariables(config)
const values = this.helmValuesGetter()(systemVars)

const valueArgs: string[] = []
for (const key in values) {
if (values.hasOwnProperty(key)) {
valueArgs.push(`${key}=${JSON.stringify(values[key])}`)
}
}

const args = [
"upgrade",
"--install",
HELM_INGRESS_NGINX_RELEASE_NAME,
HELM_INGRESS_NGINX_CHART,
"--version",
HELM_INGRESS_NGINX_VERSION,
"--repo",
HELM_INGRESS_NGINX_REPO,
"--timeout",
HELM_INGRESS_NGINX_DEPLOYMENT_TIMEOUT,
"--set-json",
`${valueArgs.join(",")}`,
]

log.info(`Installing nginx in ${namespace} namespace...`)
await defaultBackendInstall(ctx, log)
await helm({ ctx, namespace, log, args, emitLogEvents: false })

const nginxHelmMainResource = getNginxHelmMainResource(values)
await waitForResources({
// setting the action name to providers is necessary to display the logs in provider-section
actionName: "providers",
namespace,
ctx,
provider,
resources: [nginxHelmMainResource],
log,
timeoutSec: 60,
})

log.success(`nginx successfully installed in ${namespace} namespace`)
}

override ready(ctx: KubernetesPluginContext, log: Log): Promise<boolean> {
return helmIngressControllerReady(ctx, log, this.helmValuesGetter())
override async ready(ctx: KubernetesPluginContext, log: Log): Promise<boolean> {
const nginxStatus = await helmNginxStatus(ctx, log, this.helmValuesGetter())
const backendStatus = await defaultBackendStatus(ctx, log)

return nginxStatus === "ready" && backendStatus === "ready"
}

override uninstall(ctx: KubernetesPluginContext, log: Log): Promise<void> {
return helmNginxUninstall(ctx, log, this.helmValuesGetter())
override async uninstall(ctx: KubernetesPluginContext, log: Log): Promise<void> {
const status = await helmNginxStatus(ctx, log, this.helmValuesGetter())
if (status === "missing") {
return
}

const provider = ctx.provider
const config = provider.config
const namespace = config.gardenSystemNamespace

await helm({ ctx, namespace, log, args: ["uninstall", HELM_INGRESS_NGINX_RELEASE_NAME], emitLogEvents: false })
await defaultBackendUninstall(ctx, log)
}

abstract helmValuesGetter(): NginxHelmValuesGetter
Expand Down Expand Up @@ -90,17 +152,6 @@ function getNginxHelmMainResource(values: NginxHelmValues) {
}
}

async function helmIngressControllerReady(
ctx: KubernetesPluginContext,
log: Log,
nginxHelmValuesGetter: NginxHelmValuesGetter
) {
const nginxStatus = await helmNginxStatus(ctx, log, nginxHelmValuesGetter)
const backendStatus = await defaultBackendStatus(ctx, log)

return nginxStatus === "ready" && backendStatus === "ready"
}

async function helmNginxStatus(
ctx: KubernetesPluginContext,
log: Log,
Expand Down Expand Up @@ -141,74 +192,3 @@ async function helmNginxStatus(
return "missing"
}
}

async function helmNginxInstall(ctx: KubernetesPluginContext, log: Log, nginxHelmValuesGetter: NginxHelmValuesGetter) {
const ingressControllerReady = await helmIngressControllerReady(ctx, log, nginxHelmValuesGetter)
if (ingressControllerReady) {
return
}

const provider = ctx.provider
const config = provider.config
const namespace = config.gardenSystemNamespace
const systemVars: SystemVars = getKubernetesSystemVariables(config)
const values = nginxHelmValuesGetter(systemVars)

const valueArgs: string[] = []
for (const key in values) {
if (values.hasOwnProperty(key)) {
valueArgs.push(`${key}=${JSON.stringify(values[key])}`)
}
}

const args = [
"upgrade",
"--install",
HELM_INGRESS_NGINX_RELEASE_NAME,
HELM_INGRESS_NGINX_CHART,
"--version",
HELM_INGRESS_NGINX_VERSION,
"--repo",
HELM_INGRESS_NGINX_REPO,
"--timeout",
HELM_INGRESS_NGINX_DEPLOYMENT_TIMEOUT,
"--set-json",
`${valueArgs.join(",")}`,
]

log.info(`Installing nginx in ${namespace} namespace...`)
await defaultBackendInstall(ctx, log)
await helm({ ctx, namespace, log, args, emitLogEvents: false })

const nginxHelmMainResource = getNginxHelmMainResource(values)
await waitForResources({
// setting the action name to providers is necessary to display the logs in provider-section
actionName: "providers",
namespace,
ctx,
provider,
resources: [nginxHelmMainResource],
log,
timeoutSec: 60,
})

log.success(`nginx successfully installed in ${namespace} namespace`)
}

async function helmNginxUninstall(
ctx: KubernetesPluginContext,
log: Log,
nginxHelmValuesGetter: NginxHelmValuesGetter
) {
const status = await helmNginxStatus(ctx, log, nginxHelmValuesGetter)
if (status === "missing") {
return
}

const provider = ctx.provider
const config = provider.config
const namespace = config.gardenSystemNamespace

await helm({ ctx, namespace, log, args: ["uninstall", HELM_INGRESS_NGINX_RELEASE_NAME], emitLogEvents: false })
await defaultBackendUninstall(ctx, log)
}

0 comments on commit 6d6f80f

Please sign in to comment.