diff --git a/cmd/aws/create.go b/cmd/aws/create.go index c917a98e..80c19481 100644 --- a/cmd/aws/create.go +++ b/cmd/aws/create.go @@ -58,9 +58,13 @@ func createAws(cmd *cobra.Command, _ []string) error { } // Validate aws region - awsClient := &awsinternal.AWSConfiguration{ - Config: awsinternal.NewAwsV2(cloudRegionFlag), + config, err := awsinternal.NewAwsV2(cloudRegionFlag) + if err != nil { + progress.Error(err.Error()) + return fmt.Errorf("failed to validate AWS region: %w", err) } + + awsClient := &awsinternal.Configuration{Config: config} creds, err := awsClient.Config.Credentials.Retrieve(aws.BackgroundContext()) if err != nil { progress.Error(err.Error()) diff --git a/cmd/aws/quota.go b/cmd/aws/quota.go index b5b69ced..ebd06efc 100644 --- a/cmd/aws/quota.go +++ b/cmd/aws/quota.go @@ -47,9 +47,12 @@ func evalAwsQuota(cmd *cobra.Command, _ []string) error { return fmt.Errorf("failed to get cloud region flag: %w", err) } - awsClient := &awsinternal.AWSConfiguration{ - Config: awsinternal.NewAwsV2(cloudRegionFlag), + config, err := awsinternal.NewAwsV2(cloudRegionFlag) + if err != nil { + return fmt.Errorf("failed to create new aws config: %w", err) } + + awsClient := &awsinternal.Configuration{Config: config} quotaDetails, err := awsClient.GetServiceQuotas([]string{"eks", "vpc"}) if err != nil { return fmt.Errorf("failed to get service quotas: %w", err) diff --git a/cmd/civo/backup.go b/cmd/civo/backup.go index c6694f65..8030fac1 100644 --- a/cmd/civo/backup.go +++ b/cmd/civo/backup.go @@ -37,7 +37,7 @@ func backupCivoSSL(_ *cobra.Command, _ []string) error { return fmt.Errorf("invalid git provider option: %q", gitProvider) } - config := providerConfigs.GetConfig( + config, err := providerConfigs.GetConfig( clusterName, domainName, gitProvider, @@ -46,6 +46,9 @@ func backupCivoSSL(_ *cobra.Command, _ []string) error { os.Getenv("CF_API_TOKEN"), os.Getenv("CF_ORIGIN_CA_ISSUER_API_TOKEN"), ) + if err != nil { + return fmt.Errorf("failed to get config: %w", err) + } if _, err := os.Stat(config.SSLBackupDir + "/certificates"); os.IsNotExist(err) { // path/to/whatever does not exist @@ -62,7 +65,7 @@ func backupCivoSSL(_ *cobra.Command, _ []string) error { } } - err := ssl.Backup(config.SSLBackupDir, domainName, config.K1Dir, config.Kubeconfig) + err = ssl.Backup(config.SSLBackupDir, config.Kubeconfig) if err != nil { return fmt.Errorf("error backing up SSL resources: %w", err) } diff --git a/cmd/info.go b/cmd/info.go index 8581cd3f..f99d4ecf 100755 --- a/cmd/info.go +++ b/cmd/info.go @@ -22,8 +22,11 @@ var infoCmd = &cobra.Command{ Use: "info", Short: "provides general Kubefirst setup data", Long: `Provides machine data, files and folders paths`, - Run: func(_ *cobra.Command, _ []string) { - config := configs.ReadConfig() + RunE: func(_ *cobra.Command, _ []string) error { + config, err := configs.ReadConfig() + if err != nil { + return fmt.Errorf("failed to read config: %w", err) + } var buf bytes.Buffer @@ -43,6 +46,7 @@ var infoCmd = &cobra.Command{ fmt.Fprintf(tw, "Kubefirst Version\t%s\n", configs.K1Version) progress.Success(buf.String()) + return nil }, } diff --git a/cmd/k3d/create.go b/cmd/k3d/create.go index 8779ac31..ad7fab17 100644 --- a/cmd/k3d/create.go +++ b/cmd/k3d/create.go @@ -265,7 +265,11 @@ func runK3d(cmd *cobra.Command, _ []string) error { gitDestDescriptor = "Group" } - config := k3d.GetConfig(clusterNameFlag, gitProviderFlag, cGitOwner, gitProtocolFlag) + config, err := k3d.GetConfig(clusterNameFlag, gitProviderFlag, cGitOwner, gitProtocolFlag) + if err != nil { + return fmt.Errorf("failed to get config: %w", err) + } + switch gitProviderFlag { case "github": config.GithubToken = cGitToken @@ -290,7 +294,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { progressPrinter.AddTracker("preflight-checks", "Running preflight checks", 5) progressPrinter.SetupProgress(progressPrinter.TotalOfTrackers(), false) - progressPrinter.IncrementTracker("preflight-checks", 1) + progressPrinter.IncrementTracker("preflight-checks") switch configs.K1Version { case "development": @@ -346,7 +350,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { constants.MinimumAvailableDiskSize, ) } - progressPrinter.IncrementTracker("preflight-checks", 1) + progressPrinter.IncrementTracker("preflight-checks") newRepositoryNames := []string{"gitops", "metaphor"} newTeamNames := []string{"admins", "developers"} @@ -375,10 +379,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set(fmt.Sprintf("kubefirst-checks.%s-credentials", config.GitProvider), true) viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.GitCredentialsCheckCompleted, "") - progressPrinter.IncrementTracker("preflight-checks", 1) + progressPrinter.IncrementTracker("preflight-checks") } else { log.Info().Msg(fmt.Sprintf("already completed %q checks - continuing", config.GitProvider)) - progressPrinter.IncrementTracker("preflight-checks", 1) + progressPrinter.IncrementTracker("preflight-checks") } var gitopsRepoURL string @@ -387,7 +391,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { telemetry.SendEvent(segClient, telemetry.KbotSetupStarted, "") log.Info().Msg("creating an ssh key pair for your new cloud infrastructure") - sshPrivateKey, sshPublicKey, err = utils.CreateSshKeyPair() + sshPrivateKey, sshPublicKey, err = utils.CreateSSHKeyPair() if err != nil { telemetry.SendEvent(segClient, telemetry.KbotSetupFailed, err.Error()) return fmt.Errorf("failed to create SSH key pair: %w", err) @@ -401,10 +405,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.KbotSetupCompleted, "") log.Info().Msg("kbot-setup complete") - progressPrinter.IncrementTracker("preflight-checks", 1) + progressPrinter.IncrementTracker("preflight-checks") } else { log.Info().Msg("already setup kbot user - continuing") - progressPrinter.IncrementTracker("preflight-checks", 1) + progressPrinter.IncrementTracker("preflight-checks") } log.Info().Msg("validation and kubefirst cli environment check is complete") @@ -443,7 +447,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { KubeconfigPath: config.Kubeconfig, GitopsRepoURL: gitopsRepoURL, GitProvider: config.GitProvider, - ClusterId: clusterID, + ClusterID: clusterID, CloudProvider: k3d.CloudProvider, } @@ -477,7 +481,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { } else { log.Info().Msg("already completed download of dependencies to `$HOME/.k1/tools` - continuing") } - progressPrinter.IncrementTracker("preflight-checks", 1) + progressPrinter.IncrementTracker("preflight-checks") metaphorTemplateTokens := k3d.MetaphorTokenValues{ ClusterName: clusterNameFlag, @@ -489,7 +493,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { MetaphorProductionIngressURL: fmt.Sprintf("metaphor-production.%s", k3d.DomainName), } - progressPrinter.IncrementTracker("preflight-checks", 1) + progressPrinter.IncrementTracker("preflight-checks") progressPrinter.AddTracker("cloning-and-formatting-git-repositories", "Cloning and formatting git repositories", 1) progressPrinter.SetupProgress(progressPrinter.TotalOfTrackers(), false) @@ -521,10 +525,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.gitops-ready-to-push", true) viper.WriteConfig() - progressPrinter.IncrementTracker("cloning-and-formatting-git-repositories", 1) + progressPrinter.IncrementTracker("cloning-and-formatting-git-repositories") } else { log.Info().Msg("already completed gitops repo generation - continuing") - progressPrinter.IncrementTracker("cloning-and-formatting-git-repositories", 1) + progressPrinter.IncrementTracker("cloning-and-formatting-git-repositories") } progressPrinter.AddTracker("applying-git-terraform", fmt.Sprintf("Applying %s Terraform", config.GitProvider), 1) @@ -563,10 +567,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.terraform-apply-github", true) viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.GitTerraformApplyCompleted, "") - progressPrinter.IncrementTracker("applying-git-terraform", 1) + progressPrinter.IncrementTracker("applying-git-terraform") } else { log.Info().Msg("already created GitHub Terraform resources") - progressPrinter.IncrementTracker("applying-git-terraform", 1) + progressPrinter.IncrementTracker("applying-git-terraform") } case "gitlab": executionControl = viper.GetBool("kubefirst-checks.terraform-apply-gitlab") @@ -601,10 +605,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.terraform-apply-gitlab", true) viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.GitTerraformApplyCompleted, "") - progressPrinter.IncrementTracker("applying-git-terraform", 1) + progressPrinter.IncrementTracker("applying-git-terraform") } else { log.Info().Msg("already created GitLab Terraform resources") - progressPrinter.IncrementTracker("applying-git-terraform", 1) + progressPrinter.IncrementTracker("applying-git-terraform") } } @@ -670,10 +674,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.gitops-repo-pushed", true) viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.GitopsRepoPushCompleted, "") - progressPrinter.IncrementTracker("pushing-gitops-repos-upstream", 1) + progressPrinter.IncrementTracker("pushing-gitops-repos-upstream") } else { log.Info().Msg("already pushed detokenized gitops repository content") - progressPrinter.IncrementTracker("pushing-gitops-repos-upstream", 1) + progressPrinter.IncrementTracker("pushing-gitops-repos-upstream") } progressPrinter.AddTracker("creating-k3d-cluster", "Creating k3d cluster", 1) @@ -697,13 +701,16 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.create-k3d-cluster", true) viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.CloudTerraformApplyCompleted, "") - progressPrinter.IncrementTracker("creating-k3d-cluster", 1) + progressPrinter.IncrementTracker("creating-k3d-cluster") } else { log.Info().Msg("already created k3d cluster resources") - progressPrinter.IncrementTracker("creating-k3d-cluster", 1) + progressPrinter.IncrementTracker("creating-k3d-cluster") } - kcfg := k8s.CreateKubeConfig(false, config.Kubeconfig) + kcfg, err := k8s.CreateKubeConfig(false, config.Kubeconfig) + if err != nil { + return fmt.Errorf("failed to create kubeconfig: %w", err) + } progressPrinter.AddTracker("bootstrapping-kubernetes-resources", "Bootstrapping Kubernetes resources", 2) progressPrinter.SetupProgress(progressPrinter.TotalOfTrackers(), false) @@ -716,13 +723,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { } err = k3d.AddK3DSecrets( - atlantisWebhookSecret, - viper.GetString("kbot.public-key"), - gitopsRepoURL, + config.DestinationGitopsRepoURL, viper.GetString("kbot.private-key"), config.GitProvider, cGitUser, - cGitOwner, config.Kubeconfig, cGitToken, ) @@ -732,10 +736,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { } viper.Set("kubefirst-checks.k8s-secrets-created", true) viper.WriteConfig() - progressPrinter.IncrementTracker("bootstrapping-kubernetes-resources", 1) + progressPrinter.IncrementTracker("bootstrapping-kubernetes-resources") } else { log.Info().Msg("already added secrets to k3d cluster") - progressPrinter.IncrementTracker("bootstrapping-kubernetes-resources", 1) + progressPrinter.IncrementTracker("bootstrapping-kubernetes-resources") } containerRegistryAuth := gitShim.ContainerRegistryAuth{ @@ -751,7 +755,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { if err != nil { return fmt.Errorf("failed to create container registry secret: %w", err) } - progressPrinter.IncrementTracker("bootstrapping-kubernetes-resources", 1) + progressPrinter.IncrementTracker("bootstrapping-kubernetes-resources") progressPrinter.AddTracker("verifying-k3d-cluster-readiness", "Verifying Kubernetes cluster is ready", 3) progressPrinter.SetupProgress(progressPrinter.TotalOfTrackers(), false) @@ -770,7 +774,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { if err != nil { return fmt.Errorf("error waiting for traefik deployment ready state: %w", err) } - progressPrinter.IncrementTracker("verifying-k3d-cluster-readiness", 1) + progressPrinter.IncrementTracker("verifying-k3d-cluster-readiness") metricsServerDeployment, err := k8s.ReturnDeploymentObject( kcfg.Clientset, @@ -786,11 +790,11 @@ func runK3d(cmd *cobra.Command, _ []string) error { if err != nil { return fmt.Errorf("error waiting for metrics-server deployment ready state: %w", err) } - progressPrinter.IncrementTracker("verifying-k3d-cluster-readiness", 1) + progressPrinter.IncrementTracker("verifying-k3d-cluster-readiness") time.Sleep(time.Second * 20) - progressPrinter.IncrementTracker("verifying-k3d-cluster-readiness", 1) + progressPrinter.IncrementTracker("verifying-k3d-cluster-readiness") progressPrinter.AddTracker("installing-argo-cd", "Installing and configuring Argo CD", 3) progressPrinter.SetupProgress(progressPrinter.TotalOfTrackers(), false) @@ -806,12 +810,13 @@ func runK3d(cmd *cobra.Command, _ []string) error { if err != nil { return fmt.Errorf("failed to build ArgoCD manifests: %w", err) } + output, err := kcfg.SplitYAMLFile(yamlData) if err != nil { return fmt.Errorf("failed to split YAML file: %w", err) } - err = kcfg.ApplyObjects("", output) - if err != nil { + + if err := kcfg.ApplyObjects(output); err != nil { telemetry.SendEvent(segClient, telemetry.ArgoCDInstallFailed, err.Error()) return fmt.Errorf("failed to apply ArgoCD objects: %w", err) } @@ -819,10 +824,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.argocd-install", true) viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.ArgoCDInstallCompleted, "") - progressPrinter.IncrementTracker("installing-argo-cd", 1) + progressPrinter.IncrementTracker("installing-argo-cd") } else { log.Info().Msg("ArgoCD already installed, continuing") - progressPrinter.IncrementTracker("installing-argo-cd", 1) + progressPrinter.IncrementTracker("installing-argo-cd") } _, err = k8s.VerifyArgoCDReadiness(kcfg.Clientset, true, 300) @@ -870,12 +875,12 @@ func runK3d(cmd *cobra.Command, _ []string) error { "http://", 1, ) + ":8080" - argoCDToken, err = argocd.GetArgocdTokenV2(httpClient, argoCDHTTPURL, "admin", argocdPassword) + argoCDToken, err = argocd.GetArgocdTokenV2(argoCDHTTPURL, "admin", argocdPassword) if err != nil { return fmt.Errorf("failed to get ArgoCD token: %w", err) } } else { - argoCDToken, err = argocd.GetArgocdTokenV2(httpClient, k3d.ArgocdURL, "admin", argocdPassword) + argoCDToken, err = argocd.GetArgocdTokenV2(k3d.ArgocdURL, "admin", argocdPassword) if err != nil { return fmt.Errorf("failed to get ArgoCD token: %w", err) } @@ -886,10 +891,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("components.argocd.auth-token", argoCDToken) viper.Set("kubefirst-checks.argocd-credentials-set", true) viper.WriteConfig() - progressPrinter.IncrementTracker("installing-argo-cd", 1) + progressPrinter.IncrementTracker("installing-argo-cd") } else { log.Info().Msg("ArgoCD credentials already set, continuing") - progressPrinter.IncrementTracker("installing-argo-cd", 1) + progressPrinter.IncrementTracker("installing-argo-cd") } if configs.K1Version == "development" { @@ -945,10 +950,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.argocd-create-registry", true) viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.CreateRegistryCompleted, "") - progressPrinter.IncrementTracker("installing-argo-cd", 1) + progressPrinter.IncrementTracker("installing-argo-cd") } else { log.Info().Msg("ArgoCD registry create already done, continuing") - progressPrinter.IncrementTracker("installing-argo-cd", 1) + progressPrinter.IncrementTracker("installing-argo-cd") } progressPrinter.AddTracker("configuring-vault", "Configuring Vault", 4) @@ -968,10 +973,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { if err != nil { return fmt.Errorf("error waiting for Vault StatefulSet ready state: %w", err) } - progressPrinter.IncrementTracker("configuring-vault", 1) + progressPrinter.IncrementTracker("configuring-vault") time.Sleep(time.Second * 10) - progressPrinter.IncrementTracker("configuring-vault", 1) + progressPrinter.IncrementTracker("configuring-vault") executionControl = viper.GetBool("kubefirst-checks.vault-initialized") if !executionControl { @@ -983,12 +988,13 @@ func runK3d(cmd *cobra.Command, _ []string) error { if err != nil { return fmt.Errorf("failed to build vault handler manifests: %w", err) } + output, err := kcfg.SplitYAMLFile(yamlData) if err != nil { return fmt.Errorf("failed to split YAML file: %w", err) } - err = kcfg.ApplyObjects("", output) - if err != nil { + + if err := kcfg.ApplyObjects(output); err != nil { return fmt.Errorf("failed to apply vault handler objects: %w", err) } @@ -996,7 +1002,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { if err != nil { return fmt.Errorf("failed to get vault job object: %w", err) } - _, err = k8s.WaitForJobComplete(kcfg.Clientset, job, 240) + _, err = k8s.WaitForJobComplete(kcfg.Clientset, job.GetName(), job.GetNamespace(), 240) if err != nil { msg := fmt.Errorf("could not run vault unseal job: %w", err) telemetry.SendEvent(segClient, telemetry.VaultInitializationFailed, msg.Error()) @@ -1006,10 +1012,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.vault-initialized", true) viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.VaultInitializationCompleted, "") - progressPrinter.IncrementTracker("configuring-vault", 1) + progressPrinter.IncrementTracker("configuring-vault") } else { log.Info().Msg("vault is already initialized - skipping") - progressPrinter.IncrementTracker("configuring-vault", 1) + progressPrinter.IncrementTracker("configuring-vault") } minioStopChannel := make(chan struct{}, 1) @@ -1054,7 +1060,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { log.Printf("Successfully uploaded %q to bucket %q", objectName, info.Bucket) - progressPrinter.IncrementTracker("configuring-vault", 1) + progressPrinter.IncrementTracker("configuring-vault") vaultStopChannel := make(chan struct{}, 1) defer func() { @@ -1137,10 +1143,10 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.terraform-apply-vault", true) viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.VaultTerraformApplyCompleted, "") - progressPrinter.IncrementTracker("configuring-vault", 1) + progressPrinter.IncrementTracker("configuring-vault") } else { log.Info().Msg("already executed vault terraform") - progressPrinter.IncrementTracker("configuring-vault", 1) + progressPrinter.IncrementTracker("configuring-vault") } progressPrinter.AddTracker("creating-users", "Creating users", 1) @@ -1172,19 +1178,19 @@ func runK3d(cmd *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.terraform-apply-users", true) viper.WriteConfig() telemetry.SendEvent(segClient, telemetry.UsersTerraformApplyCompleted, "") - progressPrinter.IncrementTracker("creating-users", 1) + progressPrinter.IncrementTracker("creating-users") } else { log.Info().Msg("already created users with terraform") - progressPrinter.IncrementTracker("creating-users", 1) + progressPrinter.IncrementTracker("creating-users") } progressPrinter.AddTracker("wrapping-up", "Wrapping up", 2) progressPrinter.SetupProgress(progressPrinter.TotalOfTrackers(), false) - err = k3d.PostRunPrepareGitopsRepository(clusterNameFlag, config.GitopsDir, &gitopsDirectoryTokens) - if err != nil { + if err := k3d.PostRunPrepareGitopsRepository(config.GitopsDir); err != nil { return fmt.Errorf("error detokenizing post run: %w", err) } + gitopsRepo, err := git.PlainOpen(config.GitopsDir) if err != nil { return fmt.Errorf("error opening repo at %q: %w", config.GitopsDir, err) @@ -1211,7 +1217,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { return fmt.Errorf("failed to push initial detokenized gitops-template repo content: %w", err) } - progressPrinter.IncrementTracker("wrapping-up", 1) + progressPrinter.IncrementTracker("wrapping-up") argoDeployment, err := k8s.ReturnDeploymentObject(kcfg.Clientset, "app.kubernetes.io/instance", "argo", "argo", 1200) if err != nil { @@ -1249,7 +1255,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { if err != nil { return fmt.Errorf("error waiting for kubefirst Deployment ready state: %w", err) } - progressPrinter.IncrementTracker("wrapping-up", 1) + progressPrinter.IncrementTracker("wrapping-up") err = utils.OpenBrowser(constants.KubefirstConsoleLocalURLTLS) if err != nil { @@ -1264,7 +1270,7 @@ func runK3d(cmd *cobra.Command, _ []string) error { log.Info().Msg("welcome to your new Kubefirst platform running in K3D") time.Sleep(1 * time.Second) - reports.LocalHandoffScreenV2(viper.GetString("components.argocd.password"), clusterNameFlag, gitDestDescriptor, cGitOwner, config, ciFlag) + reports.LocalHandoffScreenV2(clusterNameFlag, gitDestDescriptor, cGitOwner, config, ciFlag) if ciFlag { progress.Progress.Quit() diff --git a/cmd/k3d/destroy.go b/cmd/k3d/destroy.go index e487d777..99c1bfcb 100644 --- a/cmd/k3d/destroy.go +++ b/cmd/k3d/destroy.go @@ -62,7 +62,11 @@ func destroyK3d(_ *cobra.Command, _ []string) error { return fmt.Errorf("invalid git provider option: %q", gitProvider) } - config := k3d.GetConfig(clusterName, gitProvider, cGitOwner, gitProtocol) + config, err := k3d.GetConfig(clusterName, gitProvider, cGitOwner, gitProtocol) + if err != nil { + return fmt.Errorf("failed to get config: %w", err) + } + switch gitProvider { case "github": config.GithubToken = cGitToken @@ -70,7 +74,10 @@ func destroyK3d(_ *cobra.Command, _ []string) error { config.GitlabToken = cGitToken } - kcfg := k8s.CreateKubeConfig(false, config.Kubeconfig) + kcfg, err := k8s.CreateKubeConfig(false, config.Kubeconfig) + if err != nil { + return fmt.Errorf("unable to create kubeconfig: %w", err) + } if len(cGitToken) == 0 { return fmt.Errorf( @@ -91,7 +98,7 @@ func destroyK3d(_ *cobra.Command, _ []string) error { k8s.OpenPortForwardPodWrapper(kcfg.Clientset, kcfg.RestConfig, "minio", "minio", 9000, 9000, minioStopChannel) } - progressPrinter.IncrementTracker("preflight-checks", 1) + progressPrinter.IncrementTracker("preflight-checks") switch gitProvider { case "github": @@ -117,7 +124,7 @@ func destroyK3d(_ *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.terraform-apply-github", false) viper.WriteConfig() log.Info().Msg("github resources terraform destroyed") - progressPrinter.IncrementTracker("platform-destroy", 1) + progressPrinter.IncrementTracker("platform-destroy") } case "gitlab": if viper.GetBool("kubefirst-checks.terraform-apply-gitlab") { @@ -169,7 +176,7 @@ func destroyK3d(_ *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.terraform-apply-gitlab", false) viper.WriteConfig() log.Info().Msg("gitlab resources terraform destroyed") - progressPrinter.IncrementTracker("platform-destroy", 1) + progressPrinter.IncrementTracker("platform-destroy") } } @@ -183,7 +190,7 @@ func destroyK3d(_ *cobra.Command, _ []string) error { viper.Set("kubefirst-checks.create-k3d-cluster", false) viper.WriteConfig() log.Info().Msg("k3d resources terraform destroyed") - progressPrinter.IncrementTracker("platform-destroy", 1) + progressPrinter.IncrementTracker("platform-destroy") } if viper.GetString("kbot.gitlab-user-based-ssh-key-title") != "" { diff --git a/cmd/k3d/mkcert.go b/cmd/k3d/mkcert.go index 8305fc54..be324699 100644 --- a/cmd/k3d/mkcert.go +++ b/cmd/k3d/mkcert.go @@ -36,13 +36,21 @@ func mkCert(cmd *cobra.Command, _ []string) error { if !flags.SetupComplete { return fmt.Errorf("there doesn't appear to be an active k3d cluster") } - config := k3d.GetConfig( + + config, err := k3d.GetConfig( viper.GetString("flags.cluster-name"), flags.GitProvider, viper.GetString(fmt.Sprintf("flags.%s-owner", flags.GitProvider)), flags.GitProtocol, ) - kcfg := k8s.CreateKubeConfig(false, config.Kubeconfig) + if err != nil { + return fmt.Errorf("failed to get config: %w", err) + } + + kcfg, err := k8s.CreateKubeConfig(false, config.Kubeconfig) + if err != nil { + return fmt.Errorf("failed to create kubeconfig: %w", err) + } log.Infof("Generating certificate for %s.%s...", appNameFlag, k3d.DomainName) diff --git a/cmd/k3d/root-credentials.go b/cmd/k3d/root-credentials.go index 6c3f9b2e..624b0275 100644 --- a/cmd/k3d/root-credentials.go +++ b/cmd/k3d/root-credentials.go @@ -56,10 +56,17 @@ func getK3dRootCredentials(cmd *cobra.Command, _ []string) error { } // Instantiate kubernetes client - config := k3d.GetConfig(clusterName, gitProvider, gitOwner, gitProtocol) - kcfg := k8s.CreateKubeConfig(false, config.Kubeconfig) + config, err := k3d.GetConfig(clusterName, gitProvider, gitOwner, gitProtocol) + if err != nil { + return fmt.Errorf("failed to get config: %w", err) + } + + kcfg, err := k8s.CreateKubeConfig(false, config.Kubeconfig) + if err != nil { + return fmt.Errorf("failed to create kubeconfig: %w", err) + } - err = credentials.ParseAuthData(kcfg.Clientset, k3d.CloudProvider, gitProvider, domainName, &opts) + err = credentials.ParseAuthData(kcfg.Clientset, k3d.CloudProvider, domainName, &opts) if err != nil { return fmt.Errorf("failed to parse auth data: %w", err) } diff --git a/cmd/k3d/vault.go b/cmd/k3d/vault.go index a044b115..048724ca 100644 --- a/cmd/k3d/vault.go +++ b/cmd/k3d/vault.go @@ -38,13 +38,20 @@ func unsealVault(_ *cobra.Command, _ []string) error { if !flags.SetupComplete { return fmt.Errorf("failed to unseal vault: there doesn't appear to be an active k3d cluster") } - config := k3d.GetConfig( + config, err := k3d.GetConfig( viper.GetString("flags.cluster-name"), flags.GitProvider, viper.GetString(fmt.Sprintf("flags.%s-owner", flags.GitProvider)), flags.GitProtocol, ) - kcfg := k8s.CreateKubeConfig(false, config.Kubeconfig) + if err != nil { + return fmt.Errorf("failed to get config: %w", err) + } + + kcfg, err := k8s.CreateKubeConfig(false, config.Kubeconfig) + if err != nil { + return fmt.Errorf("failed to create kubeconfig: %w", err) + } vaultClient, err := api.NewClient(&api.Config{ Address: "https://vault.kubefirst.dev", @@ -110,7 +117,7 @@ func unsealVault(_ *cobra.Command, _ []string) error { return nil } -func parseExistingVaultInitSecret(clientset *kubernetes.Clientset) (*api.InitResponse, error) { +func parseExistingVaultInitSecret(clientset kubernetes.Interface) (*api.InitResponse, error) { secret, err := k8s.ReadSecretV2(clientset, vaultNamespace, vaultSecretName) if err != nil { return nil, fmt.Errorf("failed to read secret: %w", err) diff --git a/cmd/reset.go b/cmd/reset.go index 31848a9d..ca0293cf 100755 --- a/cmd/reset.go +++ b/cmd/reset.go @@ -112,7 +112,7 @@ func runReset() error { return fmt.Errorf("error resetting k1 directory: %w", err) } log.Info().Msg("previous platform content removed") - progressPrinter.IncrementTracker("removing-platform-content", 1) + progressPrinter.IncrementTracker("removing-platform-content") log.Info().Msg("resetting $HOME/.kubefirst config") viper.Set("argocd", "") @@ -133,7 +133,7 @@ func runReset() error { } } - progressPrinter.IncrementTracker("removing-platform-content", 1) + progressPrinter.IncrementTracker("removing-platform-content") time.Sleep(time.Second * 2) progress.Progress.Quit() diff --git a/cmd/terraform.go b/cmd/terraform.go index ec50bedb..489dfdb3 100644 --- a/cmd/terraform.go +++ b/cmd/terraform.go @@ -41,7 +41,7 @@ func terraformSetEnv() *cobra.Command { Short: "retrieve data from a target vault secret and format it for use in the local shell via environment variables", TraverseChildren: true, Run: func(_ *cobra.Command, _ []string) { - v := vault.VaultConfiguration{ + v := vault.Configuration{ Config: vault.NewVault(), } diff --git a/go.mod b/go.mod index c4b0c46d..29a48235 100644 --- a/go.mod +++ b/go.mod @@ -12,9 +12,9 @@ require ( github.com/civo/civogo v0.3.53 github.com/denisbrodbeck/machineid v1.0.1 github.com/dustin/go-humanize v1.0.1 - github.com/go-git/go-git/v5 v5.6.1 + github.com/go-git/go-git/v5 v5.12.0 github.com/hashicorp/vault/api v1.9.0 - github.com/konstructio/kubefirst-api v0.105.0 + github.com/konstructio/kubefirst-api v0.106.0 github.com/kubefirst/metrics-client v0.3.0 github.com/nxadm/tail v1.4.8 github.com/rs/zerolog v1.29.1 @@ -43,6 +43,7 @@ require ( cloud.google.com/go/iam v0.13.0 // indirect cloud.google.com/go/secretmanager v1.10.0 // indirect cloud.google.com/go/storage v1.29.0 // indirect + dario.cat/mergo v1.0.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.18 // indirect @@ -50,6 +51,7 @@ require ( github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect + github.com/KyleBanks/depth v1.2.1 // indirect github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd // indirect github.com/Masterminds/semver/v3 v3.2.0 // indirect github.com/alecthomas/chroma v0.10.0 // indirect @@ -80,8 +82,9 @@ require ( github.com/caarlos0/env/v6 v6.10.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chai2010/gettext-go v0.1.0 // indirect - github.com/cloudflare/circl v1.1.0 // indirect + github.com/cloudflare/circl v1.3.7 // indirect github.com/cloudflare/cloudflare-go v0.73.0 // indirect + github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/digitalocean/godo v1.98.0 // indirect github.com/dlclark/regexp2 v1.4.0 // indirect @@ -93,16 +96,24 @@ require ( github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect github.com/fvbommel/sortorder v1.0.2 // indirect github.com/ghodss/yaml v1.0.0 // indirect + github.com/gin-contrib/cors v1.4.0 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/gin-gonic/gin v1.8.2 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-openapi/jsonpointer v0.20.0 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/spec v0.20.9 // indirect github.com/go-openapi/swag v0.22.4 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.11.2 // indirect github.com/go-redis/cache/v8 v8.4.2 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect github.com/go-resty/resty/v2 v2.11.0 // indirect github.com/go-test/deep v1.1.0 // indirect github.com/go-yaml/yaml v2.1.0+incompatible // indirect github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.0 // indirect github.com/gofrs/flock v0.7.0 // indirect github.com/golang-jwt/jwt/v4 v4.4.3 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -123,6 +134,7 @@ require ( github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/compress v1.16.0 // indirect github.com/klauspost/cpuid/v2 v2.2.3 // indirect + github.com/leodido/go-urn v1.2.1 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect github.com/linode/linodego v1.29.0 // indirect github.com/lixiangzhong/dnsutil v1.4.0 // indirect @@ -156,9 +168,12 @@ require ( github.com/sahilm/fuzzy v0.1.0 // indirect github.com/segmentio/analytics-go v3.1.0+incompatible // indirect github.com/segmentio/backo-go v1.0.1 // indirect - github.com/skeema/knownhosts v1.1.0 // indirect - github.com/stretchr/testify v1.9.0 // indirect + github.com/skeema/knownhosts v1.2.2 // indirect + github.com/swaggo/files v1.0.0 // indirect + github.com/swaggo/gin-swagger v1.5.3 // indirect + github.com/swaggo/swag v1.16.1 // indirect github.com/thanhpk/randstr v1.0.6 // indirect + github.com/ugorji/go/codec v1.2.8 // indirect github.com/vmihailenco/go-tinylfu v0.2.1 // indirect github.com/vmihailenco/msgpack/v5 v5.3.4 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect @@ -170,7 +185,7 @@ require ( github.com/yuin/goldmark-emoji v1.0.1 // indirect go.opencensus.io v0.24.0 // indirect go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect - golang.org/x/crypto v0.20.0 // indirect + golang.org/x/crypto v0.21.0 // indirect golang.org/x/mod v0.13.0 // indirect golang.org/x/sync v0.4.0 // indirect golang.org/x/tools v0.14.0 // indirect @@ -198,8 +213,8 @@ require ( ) require ( - github.com/Microsoft/go-winio v0.6.0 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect github.com/aws/aws-sdk-go-v2 v1.17.8 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.13.18 // indirect @@ -218,8 +233,8 @@ require ( github.com/emirpasic/gods v1.18.1 // indirect github.com/fatih/color v1.13.0 github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-git/gcfg v1.5.0 // indirect - github.com/go-git/go-billy/v5 v5.4.1 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.3 // indirect @@ -259,17 +274,17 @@ require ( github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect - github.com/sergi/go-diff v1.2.0 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/spf13/afero v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/net v0.21.0 // indirect + golang.org/x/net v0.22.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect golang.org/x/sys v0.18.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index b52ea8bf..ac7e4ed1 100644 --- a/go.sum +++ b/go.sum @@ -55,6 +55,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.29.0 h1:6weCgzRvMg7lzuUurI4697AqIRPU1SvzHhynwpW31jI= cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v55.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= @@ -82,6 +84,8 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/GoogleCloudPlatform/k8s-cloud-provider v1.16.1-0.20210702024009-ea6160c1d0e3/go.mod h1:8XasY4ymP2V/tn2OOV9ZadmiTE1FIB/h3W+yNlPttKw= github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5hodBMJ5+l/7J4xAyMeuM2PNuepvHlGs8yilUCA= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= @@ -91,12 +95,16 @@ github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOp github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.8.22/go.mod h1:91uVCVzvX2QD16sMCenoxxXo6L1wJnLMX2PSufFMtF0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= +github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -105,6 +113,7 @@ github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/ github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/agiledragon/gomonkey/v2 v2.3.1/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= @@ -228,6 +237,7 @@ github.com/bradleyfalzon/ghinstallation/v2 v2.1.0 h1:5+NghM1Zred9Z078QEZtm28G/kf github.com/bradleyfalzon/ghinstallation/v2 v2.1.0/go.mod h1:Xg3xPRN5Mcq6GDqeUVhFbjEWMb4JHCyWEeeBGEYQoTU= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/caarlos0/env/v10 v10.0.0 h1:yIHUBZGsyqCnpTkbjk8asUlx6RFhhEs+h7TOBdgdzXA= github.com/caarlos0/env/v10 v10.0.0/go.mod h1:ZfulV76NvVPw3tm591U4SwL3Xx9ldzBP9aGxzeN7G18= github.com/caarlos0/env/v6 v6.10.1 h1:t1mPSxNpei6M5yAeu1qtRdPAK29Nbcf/n3G7x+b3/II= @@ -267,6 +277,9 @@ github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GKY= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cloudflare/cloudflare-go v0.73.0 h1:yBjVidAbzdI3aNSFotJdyIBswDWMO4k9Qpd25z7a16M= github.com/cloudflare/cloudflare-go v0.73.0/go.mod h1:5xOc5nIVnd+5ai+10r+5NdFHf92RPRx5AM+aekMIhco= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= @@ -322,6 +335,8 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -355,6 +370,7 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ= @@ -407,20 +423,36 @@ github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSy github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/cors v1.4.0 h1:oJ6gwtUl3lqV0WEIwM/LxPF1QZ5qe2lGWdY2+bz7y0g= +github.com/gin-contrib/cors v1.4.0/go.mod h1:bs9pNM0x/UsmHPBWT2xZz9ROh8xYjYkiURUfmBoMlcs= +github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/gin-gonic/gin v1.8.2 h1:UzKToD9/PoFj/V4rvlKqTRKnQYyz8Sc1MJlv4JHPtvY= +github.com/gin-gonic/gin v1.8.2/go.mod h1:qw5AYuDrzRTnhvusDsrov+fDIxp9Dleuu12h8nfB398= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= +github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.1 h1:y5z6dd3qi8Hl+stezc8p3JxDkoTRqMAlKnXHuzrfjTQ= github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHsk= github.com/go-git/go-git/v5 v5.6.1/go.mod h1:mvyoL6Unz0PiTQrGQfSfiLFhBH1c1e84ylC2MDs4ee8= +github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= +github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -446,14 +478,30 @@ github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3K github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= +github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= +github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= github.com/go-redis/cache/v8 v8.4.2 h1:8YbsmnU1Ws3TKS6T+qALzYE/MlGE+A/lrlx1XTA3p6M= github.com/go-redis/cache/v8 v8.4.2/go.mod h1:X7Jjd69Ssbrf3xBQLtIDE0g3WcSbFoQiSGeb8QfEJ+g= github.com/go-redis/redis/v8 v8.11.3/go.mod h1:xNJ9xDG09FsIPwh3bWdk+0oDWHbtF9rPN0F/oD9XeKc= @@ -471,6 +519,9 @@ github.com/go-yaml/yaml v2.1.0+incompatible h1:RYi2hDdss1u4YE7GwixGzWwVo47T8UQwn github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA= +github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -723,13 +774,16 @@ github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8t github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konstructio/kubefirst-api v0.105.0 h1:iy8P3wVI+BySJr2H3+sFZgbkoH9SikDXvmjD/BTHA6E= -github.com/konstructio/kubefirst-api v0.105.0/go.mod h1:jpBfSHjZhzcotYBvX4GG7H/y3VZANxri37/3ZO6B/Hk= +github.com/konstructio/kubefirst-api v0.105.1-0.20240918192230-7d246fd48c38 h1:1nUmwJFWW0vjHPo10pisKVpeZu9DW/OUzDha8VS6Haw= +github.com/konstructio/kubefirst-api v0.105.1-0.20240918192230-7d246fd48c38/go.mod h1:FeONMSuuU81o7uc1P2LJOFqxR+BUcNIf/6cTtcjhkEk= +github.com/konstructio/kubefirst-api v0.106.0 h1:+mKGFFi85qw1DgJXilR3XMSg7iSaYgLX1zpCoV5T5bE= +github.com/konstructio/kubefirst-api v0.106.0/go.mod h1:9zAeU7nPxwAoiEv3Cs7+gRjoFDfK60iR6CeYPFAeBY4= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -740,6 +794,8 @@ github.com/kubefirst/metrics-client v0.3.0 h1:zCug82pEzeWhHhpeYQvdhytRNDxrLxX18d github.com/kubefirst/metrics-client v0.3.0/go.mod h1:GR7wsMcyYhd+EU67PeuMCBYFE6OJ7P/j5OI5BLOoRMc= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= @@ -916,6 +972,7 @@ github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfad github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= @@ -947,6 +1004,7 @@ github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaR github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= @@ -956,6 +1014,7 @@ github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -1019,6 +1078,8 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= @@ -1049,6 +1110,8 @@ github.com/segmentio/backo-go v1.0.1/go.mod h1:9/Rh6yILuLysoQnZ2oNooD2g7aBnvM7r/ github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= @@ -1060,6 +1123,8 @@ github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0 github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.1.0 h1:Wvr9V0MxhjRbl3f9nMnKnFfiWTJmtECJ9Njkea3ysW0= github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag= +github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= +github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= @@ -1102,9 +1167,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -1115,11 +1179,19 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a/go.mod h1:lKJPbtWzJ9JhsTN1k1gZgleJWY/cqq0psdoMmaThG3w= +github.com/swaggo/files v1.0.0 h1:1gGXVIeUFCS/dta17rnP0iOpr6CXFwKD7EO5ID233e4= +github.com/swaggo/files v1.0.0/go.mod h1:N59U6URJLyU1PQgFqPM7wXLMhJx7QAolnvfQkqO13kc= +github.com/swaggo/gin-swagger v1.5.3 h1:8mWmHLolIbrhJJTflsaFoZzRBYVmEE7JZGIq08EiC0Q= +github.com/swaggo/gin-swagger v1.5.3/go.mod h1:3XJKSfHjDMB5dBo/0rrTXidPmgLeqsX89Yp4uA50HpI= +github.com/swaggo/swag v1.8.1/go.mod h1:ugemnJsPZm/kRwFUnzBlbHRd0JY9zE1M4F+uy2pAaPQ= +github.com/swaggo/swag v1.16.1 h1:fTNRhKstPKxcnoKsytm4sahr8FaYzUcT7i1/3nd/fBg= +github.com/swaggo/swag v1.16.1/go.mod h1:9/LMvHycG3NFHfR6LwvikHv5iFvmPADQ359cKikGxto= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/thanhpk/randstr v1.0.6 h1:psAOktJFD4vV9NEVb3qkhRSMvYh4ORRaj1+w/hn4B+o= github.com/thanhpk/randstr v1.0.6/go.mod h1:M/H2P1eNLZzlDwAzpkkkUvoyNNMbzRGhESZuEQk3r0U= @@ -1128,9 +1200,15 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= +github.com/ugorji/go/codec v1.2.8 h1:sgBJS6COt0b/P40VouWKdseidkDgHxYGm0SAglUHfP0= +github.com/ugorji/go/codec v1.2.8/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= @@ -1166,6 +1244,7 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.5.2 h1:ALmeCk/px5FSm1MAcFBAsVKZjDuMVj8Tm7FFIlMJnqU= @@ -1244,6 +1323,7 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -1254,10 +1334,14 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1362,6 +1446,7 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1386,6 +1471,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1488,6 +1575,7 @@ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1497,6 +1585,8 @@ golang.org/x/sys v0.0.0-20210608053332-aa57babbf139/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1540,6 +1630,8 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1636,6 +1728,7 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= diff --git a/internal/common/common.go b/internal/common/common.go index c6bdfec8..0ad366dd 100644 --- a/internal/common/common.go +++ b/internal/common/common.go @@ -139,7 +139,7 @@ func Destroy(_ *cobra.Command, _ []string) error { } // Instantiate aws config - config := providerConfigs.GetConfig( + config, err := providerConfigs.GetConfig( clusterName, domainName, gitProvider, @@ -148,6 +148,10 @@ func Destroy(_ *cobra.Command, _ []string) error { os.Getenv("CF_API_TOKEN"), os.Getenv("CF_ORIGIN_CA_ISSUER_API_TOKEN"), ) + if err != nil { + progress.Error(fmt.Sprintf("failed to get config: %s", err)) + return fmt.Errorf("failed to get config: %w", err) + } progress.AddStep("Destroying k3d") diff --git a/internal/gitShim/containerRegistryAuth.go b/internal/gitShim/containerRegistryAuth.go index 6a0b6484..86b068d5 100644 --- a/internal/gitShim/containerRegistryAuth.go +++ b/internal/gitShim/containerRegistryAuth.go @@ -27,7 +27,7 @@ type ContainerRegistryAuth struct { GithubOwner string ContainerRegistryHost string - Clientset *kubernetes.Clientset + Clientset kubernetes.Interface } // CreateContainerRegistrySecret diff --git a/internal/launch/cmd.go b/internal/launch/cmd.go index 0463dde9..1a8643af 100644 --- a/internal/launch/cmd.go +++ b/internal/launch/cmd.go @@ -185,7 +185,12 @@ func Up(additionalHelmFlags []string, inCluster, useTelemetry bool) { log.Info().Msg("k3d cluster for Kubefirst console and API created successfully") // Wait for traefik - kcfg := k8s.CreateKubeConfig(false, kubeconfigPath) + kcfg, err := k8s.CreateKubeConfig(false, kubeconfigPath) + if err != nil { + progress.Error(fmt.Sprintf("error creating kubernetes client: %s", err)) + return + } + log.Info().Msg("Waiting for traefik...") traefikDeployment, err := k8s.ReturnDeploymentObject( kcfg.Clientset, @@ -208,7 +213,11 @@ func Up(additionalHelmFlags []string, inCluster, useTelemetry bool) { progress.CompleteStep("Create k3d cluster") // Establish Kubernetes client for console cluster - kcfg := k8s.CreateKubeConfig(false, kubeconfigPath) + kcfg, err := k8s.CreateKubeConfig(false, kubeconfigPath) + if err != nil { + progress.Error(fmt.Sprintf("error creating kubernetes client: %s", err)) + return + } // Determine if helm chart repository has already been added res, _, err := shell.ExecShellReturnStrings( diff --git a/internal/utilities/utilities.go b/internal/utilities/utilities.go index 2d942c4f..7a56a45b 100644 --- a/internal/utilities/utilities.go +++ b/internal/utilities/utilities.go @@ -80,7 +80,7 @@ func CreateClusterRecordFromRaw( GitProvider: gitProvider, GitHost: fmt.Sprintf("%s.com", gitProvider), GitProtocol: viper.GetString("flags.git-protocol"), - DnsProvider: viper.GetString("flags.dns-provider"), + DNSProvider: viper.GetString("flags.dns-provider"), GitlabOwnerGroupID: gitlabOwnerGroupID, AtlantisWebhookSecret: viper.GetString("secrets.atlantis-webhook"), AtlantisWebhookURL: fmt.Sprintf("https://atlantis.%s/events", domainName), @@ -159,7 +159,7 @@ func CreateClusterDefinitionRecordFromRaw(gitAuth apiTypes.GitAuth, cliFlags typ GitopsTemplateBranch: cliFlags.GitopsTemplateBranch, GitProvider: gitProvider, GitProtocol: viper.GetString("flags.git-protocol"), - DnsProvider: viper.GetString("flags.dns-provider"), + DNSProvider: viper.GetString("flags.dns-provider"), LogFileName: viper.GetString("k1-paths.log-file-name"), PostInstallCatalogApps: catalogApps, InstallKubefirstPro: cliFlags.InstallKubefirstPro, @@ -202,8 +202,8 @@ func CreateClusterDefinitionRecordFromRaw(gitAuth apiTypes.GitAuth, cliFlags typ case "k3s": cl.K3sAuth.K3sServersPrivateIps = viper.GetStringSlice("flags.servers-private-ips") cl.K3sAuth.K3sServersPublicIps = viper.GetStringSlice("flags.servers-public-ips") - cl.K3sAuth.K3sSshUser = viper.GetString("flags.ssh-user") - cl.K3sAuth.K3sSshPrivateKey = viper.GetString("flags.ssh-privatekey") + cl.K3sAuth.K3sSSHUser = viper.GetString("flags.ssh-user") + cl.K3sAuth.K3sSSHPrivateKey = viper.GetString("flags.ssh-privatekey") cl.K3sAuth.K3sServersArgs = viper.GetStringSlice("flags.servers-args") case "google": jsonFilePath := os.Getenv("GOOGLE_APPLICATION_CREDENTIALS") @@ -222,7 +222,7 @@ func CreateClusterDefinitionRecordFromRaw(gitAuth apiTypes.GitAuth, cliFlags typ } cl.GoogleAuth.KeyFile = string(jsonContent) - cl.GoogleAuth.ProjectId = cliFlags.GoogleProject + cl.GoogleAuth.ProjectID = cliFlags.GoogleProject } return cl diff --git a/main.go b/main.go index 13a864bc..e030707e 100644 --- a/main.go +++ b/main.go @@ -36,7 +36,12 @@ func main() { } } - config := configs.ReadConfig() + config, err := configs.ReadConfig() + if err != nil { + log.Error().Msgf("failed to read config: %v", err) + return + } + if err := utils.SetupViper(config, true); err != nil { log.Error().Msgf("failed to setup Viper: %v", err) return