Files
dokku/plugins/scheduler-k3s/report.go
Jose Diaz-Gonzalez 5ae6c1c845 feat: add the ability to specify a kustomize-root-path
This will default to `config/kustomize`, though may change to `.dokku/kustomize` in the future.
2025-07-23 18:34:53 -04:00

205 lines
6.7 KiB
Go

package scheduler_k3s
import (
"fmt"
"strings"
"github.com/dokku/dokku/plugins/common"
)
// ReportSingleApp is an internal function that displays the scheduler-k3s report for one or more apps
func ReportSingleApp(appName string, format string, infoFlag string) error {
if err := common.VerifyAppName(appName); err != nil {
return err
}
flags := map[string]common.ReportFunc{
"--scheduler-k3s-computed-deploy-timeout": reportComputedDeployTimeout,
"--scheduler-k3s-deploy-timeout": reportDeployTimeout,
"--scheduler-k3s-global-deploy-timeout": reportGlobalDeployTimeout,
"--scheduler-k3s-computed-image-pull-secrets": reportComputedImagePullSecrets,
"--scheduler-k3s-image-pull-secrets": reportImagePullSecrets,
"--scheduler-k3s-global-image-pull-secrets": reportGlobalImagePullSecrets,
"--scheduler-k3s-global-kubeconfig-path": reportGlobalKubeconfigPath,
"--scheduler-k3s-global-kube-context": reportGlobalKubeContext,
"--scheduler-k3s-computed-letsencrypt-server": reportComputedLetsencryptServer,
"--scheduler-k3s-letsencrypt-server": reportLetsencryptServer,
"--scheduler-k3s-global-letsencrypt-server": reportGlobalLetsencryptServer,
"--scheduler-k3s-global-ingress-class": reportGlobalIngressClass,
"--scheduler-k3s-global-letsencrypt-email-prod": reportGlobalLetsencryptEmailProd,
"--scheduler-k3s-global-letsencrypt-email-stag": reportGlobalLetsencryptEmailStag,
"--scheduler-k3s-computed-kustomize-root-path": reportComputedKustomizeRootPath,
"--scheduler-k3s-kustomize-root-path": reportKustomizeRootPath,
"--scheduler-k3s-global-kustomize-root-path": reportGlobalKustomizeRootPath,
"--scheduler-k3s-computed-namespace": reportComputedNamespace,
"--scheduler-k3s-namespace": reportNamespace,
"--scheduler-k3s-global-namespace": reportGlobalNamespace,
"--scheduler-k3s-global-network-interface": reportGlobalNetworkInterface,
"--scheduler-k3s-computed-rollback-on-failure": reportComputedRollbackOnFailure,
"--scheduler-k3s-rollback-on-failure": reportRollbackOnFailure,
"--scheduler-k3s-global-rollback-on-failure": reportGlobalRollbackOnFailure,
"--scheduler-k3s-computed-shm-size": reportComputedShmSize,
"--scheduler-k3s-global-shm-size": reportGlobalShmSize,
"--scheduler-k3s-shm-size": reportShmSize,
}
chartProperties, err := common.PropertyGetAllByPrefix("scheduler-k3s", "--global", "chart.")
if err != nil {
return fmt.Errorf("Unable to get property list: %w", err)
}
for name, value := range chartProperties {
flagName := "--scheduler-k3s-global-" + name
flags[flagName] = func(appName string) string {
return value
}
}
flagKeys := []string{}
for flagKey := range flags {
flagKeys = append(flagKeys, flagKey)
}
trimPrefix := false
uppercaseFirstCharacter := true
infoFlags := common.CollectReport(appName, infoFlag, flags)
return common.ReportSingleApp("scheduler-k3s", appName, infoFlag, infoFlags, flagKeys, format, trimPrefix, uppercaseFirstCharacter)
}
// ReportAutoscalingAuthSingleApp is an internal function that displays the scheduler-k3s autoscaling-auth report for one app
func ReportAutoscalingAuthSingleApp(appName string, format string, includeMetadata bool) error {
properties, err := common.PropertyGetAllByPrefix("scheduler-k3s", appName, TriggerAuthPropertyPrefix)
if err != nil {
return fmt.Errorf("Unable to get property list: %w", err)
}
infoFlags := map[string]string{}
for key, value := range properties {
metadataKey := strings.TrimPrefix(key, TriggerAuthPropertyPrefix)
authType := strings.SplitN(metadataKey, ".", 2)[0]
if authType == "" {
continue
}
infoFlags[authType] = "configured"
if includeMetadata {
infoFlags[strings.ReplaceAll(metadataKey, ".", "-")] = value
}
}
flagKeys := []string{}
for flagKey := range infoFlags {
flagKeys = append(flagKeys, flagKey)
}
trimPrefix := false
uppercaseFirstCharacter := true
return common.ReportSingleApp("scheduler-k3s", appName, "", infoFlags, flagKeys, format, trimPrefix, uppercaseFirstCharacter)
}
func reportComputedDeployTimeout(appName string) string {
return getComputedDeployTimeout(appName)
}
func reportDeployTimeout(appName string) string {
return getDeployTimeout(appName)
}
func reportGlobalDeployTimeout(appName string) string {
return getGlobalDeployTimeout()
}
func reportComputedImagePullSecrets(appName string) string {
return getComputedImagePullSecrets(appName)
}
func reportImagePullSecrets(appName string) string {
return getImagePullSecrets(appName)
}
func reportGlobalImagePullSecrets(appName string) string {
return getGlobalImagePullSecrets()
}
func reportGlobalIngressClass(appName string) string {
return getGlobalIngressClass()
}
func reportGlobalKubeconfigPath(appName string) string {
return getKubeconfigPath()
}
func reportGlobalKubeContext(appName string) string {
return getKubeContext()
}
func reportComputedLetsencryptServer(appName string) string {
return getComputedLetsencryptServer(appName)
}
func reportLetsencryptServer(appName string) string {
return getLetsencryptServer(appName)
}
func reportGlobalLetsencryptServer(appName string) string {
return getGlobalLetsencryptServer()
}
func reportGlobalLetsencryptEmailProd(appName string) string {
return getGlobalLetsencryptEmailProd()
}
func reportGlobalLetsencryptEmailStag(appName string) string {
return getGlobalLetsencryptEmailStag()
}
func reportComputedKustomizeRootPath(appName string) string {
return getComputedKustomizeRootPath(appName)
}
func reportKustomizeRootPath(appName string) string {
return getKustomizeRootPath(appName)
}
func reportGlobalKustomizeRootPath(appName string) string {
return getGlobalKustomizeRootPath()
}
func reportComputedNamespace(appName string) string {
return getComputedNamespace(appName)
}
func reportNamespace(appName string) string {
return getNamespace(appName)
}
func reportGlobalNamespace(appName string) string {
return getGlobalNamespace()
}
func reportGlobalNetworkInterface(appName string) string {
return getGlobalNetworkInterface()
}
func reportComputedRollbackOnFailure(appName string) string {
return getComputedRollbackOnFailure(appName)
}
func reportRollbackOnFailure(appName string) string {
return getRollbackOnFailure(appName)
}
func reportGlobalRollbackOnFailure(appName string) string {
return getGlobalRollbackOnFailure()
}
func reportComputedShmSize(appName string) string {
return getComputedShmSize(appName)
}
func reportGlobalShmSize(appName string) string {
return getGlobalShmSize()
}
func reportShmSize(appName string) string {
return getShmSize(appName)
}