Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kubefirst for openSUSE:Factory 
checked in at 2024-11-12 19:23:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kubefirst (Old)
 and      /work/SRC/openSUSE:Factory/.kubefirst.new.2017 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kubefirst"

Tue Nov 12 19:23:16 2024 rev:24 rq:1223582 version:2.7.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/kubefirst/kubefirst.changes      2024-10-30 
17:34:58.133595784 +0100
+++ /work/SRC/openSUSE:Factory/.kubefirst.new.2017/kubefirst.changes    
2024-11-12 19:24:03.910102195 +0100
@@ -1,0 +2,10 @@
+Tue Nov 12 09:10:44 UTC 2024 - [email protected]
+
+- Update to version 2.7.4:
+  * set next macro chart for kubefirst - 2.7.4
+  * Add Azure to beta command (#2291)
+  * set next macro chart for kubefirst - 2.7.4-rc3
+  * set next macro chart for kubefirst - 2.7.4-rc2
+  * set next macro chart for kubefirst - 2.7.4-rc1
+
+-------------------------------------------------------------------

Old:
----
  kubefirst-2.7.3.obscpio

New:
----
  kubefirst-2.7.4.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kubefirst.spec ++++++
--- /var/tmp/diff_new_pack.GgFeBk/_old  2024-11-12 19:24:04.998147735 +0100
+++ /var/tmp/diff_new_pack.GgFeBk/_new  2024-11-12 19:24:04.998147735 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           kubefirst
-Version:        2.7.3
+Version:        2.7.4
 Release:        0
 Summary:        CLI for the KubeFirst GitOps Infrastructure & Application 
Delivery Platform
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.GgFeBk/_old  2024-11-12 19:24:05.030149074 +0100
+++ /var/tmp/diff_new_pack.GgFeBk/_new  2024-11-12 19:24:05.030149074 +0100
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/kubefirst/kubefirst</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v2.7.3</param>
+    <param name="revision">v2.7.4</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.GgFeBk/_old  2024-11-12 19:24:05.050149911 +0100
+++ /var/tmp/diff_new_pack.GgFeBk/_new  2024-11-12 19:24:05.054150078 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/kubefirst/kubefirst</param>
-              <param 
name="changesrevision">718318062ccbcb9b94c0ab527c50f54c42475721</param></service></servicedata>
+              <param 
name="changesrevision">2c3fb66e89b4d17083ef924679dc6d1797c7ac7e</param></service></servicedata>
 (No newline at EOF)
 

++++++ kubefirst-2.7.3.obscpio -> kubefirst-2.7.4.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.7.3/cmd/azure/command.go 
new/kubefirst-2.7.4/cmd/azure/command.go
--- old/kubefirst-2.7.3/cmd/azure/command.go    1970-01-01 01:00:00.000000000 
+0100
+++ new/kubefirst-2.7.4/cmd/azure/command.go    2024-11-06 17:22:09.000000000 
+0100
@@ -0,0 +1,142 @@
+/*
+Copyright (C) 2021-2024, Kubefirst
+
+This program is licensed under MIT.
+See the LICENSE file for more details.
+*/
+
+package azure
+
+import (
+       "fmt"
+
+       "github.com/konstructio/kubefirst-api/pkg/constants"
+       "github.com/konstructio/kubefirst/internal/common"
+       "github.com/konstructio/kubefirst/internal/progress"
+       "github.com/spf13/cobra"
+)
+
+var (
+       // Create
+       alertsEmailFlag          string
+       ciFlag                   bool
+       cloudRegionFlag          string
+       clusterNameFlag          string
+       clusterTypeFlag          string
+       dnsProviderFlag          string
+       dnsAzureResourceGroup    string
+       domainNameFlag           string
+       subdomainNameFlag        string
+       githubOrgFlag            string
+       gitlabGroupFlag          string
+       gitProviderFlag          string
+       gitProtocolFlag          string
+       gitopsTemplateURLFlag    string
+       gitopsTemplateBranchFlag string
+       useTelemetryFlag         bool
+       forceDestroyFlag         bool
+       nodeTypeFlag             string
+       nodeCountFlag            string
+       installCatalogApps       string
+       installKubefirstProFlag  bool
+
+       // RootCredentials
+       copyArgoCDPasswordToClipboardFlag bool
+       copyKbotPasswordToClipboardFlag   bool
+       copyVaultPasswordToClipboardFlag  bool
+
+       // Supported providers
+       supportedDNSProviders = []string{"azure", "cloudflare"}
+       supportedGitProviders = []string{"github", "gitlab"}
+
+       // Supported git providers
+       supportedGitProtocolOverride = []string{"https", "ssh"}
+)
+
+func NewCommand() *cobra.Command {
+       azureCmd := &cobra.Command{
+               Use:   "azure",
+               Short: "kubefirst Azure installation",
+               Long:  "kubefirst azure",
+               Run: func(_ *cobra.Command, _ []string) {
+                       fmt.Println("To learn more about azure in kubefirst, 
run:")
+                       fmt.Println("  kubefirst beta azure --help")
+
+                       if progress.Progress != nil {
+                               progress.Progress.Quit()
+                       }
+               },
+       }
+
+       // on error, doesnt show helper/usage
+       azureCmd.SilenceUsage = true
+
+       // wire up new commands
+       azureCmd.AddCommand(Create(), Destroy(), RootCredentials())
+
+       return azureCmd
+}
+
+func Create() *cobra.Command {
+       createCmd := &cobra.Command{
+               Use:              "create",
+               Short:            "create the kubefirst platform running on 
Azure kubernetes",
+               TraverseChildren: true,
+               RunE:             createAzure,
+       }
+
+       azureDefaults := constants.GetCloudDefaults().Azure
+
+       // todo review defaults and update descriptions
+       createCmd.Flags().StringVar(&alertsEmailFlag, "alerts-email", "", 
"email address for let's encrypt certificate notifications (required)")
+       createCmd.MarkFlagRequired("alerts-email")
+       createCmd.Flags().BoolVar(&ciFlag, "ci", false, "if running kubefirst 
in ci, set this flag to disable interactive features")
+       createCmd.Flags().StringVar(&cloudRegionFlag, "cloud-region", "eastus", 
"the GCP region to provision infrastructure in")
+       createCmd.Flags().StringVar(&clusterNameFlag, "cluster-name", 
"kubefirst", "the name of the cluster to create")
+       createCmd.Flags().StringVar(&clusterTypeFlag, "cluster-type", "mgmt", 
"the type of cluster to create (i.e. mgmt|workload)")
+       createCmd.Flags().StringVar(&nodeCountFlag, "node-count", 
azureDefaults.NodeCount, "the node count for the cluster")
+       createCmd.Flags().StringVar(&nodeTypeFlag, "node-type", 
azureDefaults.InstanceSize, "the instance size of the cluster to create")
+       createCmd.Flags().StringVar(&dnsProviderFlag, "dns-provider", "azure", 
fmt.Sprintf("the dns provider - one of: %s", supportedDNSProviders))
+       createCmd.Flags().StringVar(&dnsAzureResourceGroup, 
"dns-azure-resource-group", "", "the resource group where the Azure DNS Zone is 
hosted")
+       createCmd.Flags().StringVar(&subdomainNameFlag, "subdomain", "", "the 
subdomain to use for DNS records (Cloudflare)")
+       createCmd.Flags().StringVar(&domainNameFlag, "domain-name", "", "the 
Azure/Cloudflare DNS hosted zone name to use for DNS records (i.e. 
your-domain.com|subdomain.your-domain.com) (required)")
+       createCmd.MarkFlagRequired("domain-name")
+       createCmd.Flags().StringVar(&gitProviderFlag, "git-provider", "github", 
fmt.Sprintf("the git provider - one of: %s", supportedGitProviders))
+       createCmd.Flags().StringVar(&gitProtocolFlag, "git-protocol", "ssh", 
fmt.Sprintf("the git protocol - one of: %s", supportedGitProtocolOverride))
+       createCmd.Flags().StringVar(&githubOrgFlag, "github-org", "", "the 
GitHub organization for the new gitops and metaphor repositories - required if 
using github")
+       createCmd.Flags().StringVar(&gitlabGroupFlag, "gitlab-group", "", "the 
GitLab group for the new gitops and metaphor projects - required if using 
gitlab")
+       createCmd.Flags().StringVar(&gitopsTemplateBranchFlag, 
"gitops-template-branch", "", "the branch to clone for the gitops-template 
repository")
+       createCmd.Flags().StringVar(&gitopsTemplateURLFlag, 
"gitops-template-url", "https://github.com/konstructio/gitops-template.git";, 
"the fully qualified url to the gitops-template repository to clone")
+       createCmd.Flags().StringVar(&installCatalogApps, 
"install-catalog-apps", "", "comma separated values to install after provision")
+       createCmd.Flags().BoolVar(&useTelemetryFlag, "use-telemetry", true, 
"whether to emit telemetry")
+       createCmd.Flags().BoolVar(&forceDestroyFlag, "force-destroy", false, 
"allows force destruction on objects (helpful for test environments, defaults 
to false)")
+       createCmd.Flags().BoolVar(&installKubefirstProFlag, 
"install-kubefirst-pro", true, "whether or not to install kubefirst pro")
+
+       return createCmd
+}
+
+func Destroy() *cobra.Command {
+       destroyCmd := &cobra.Command{
+               Use:   "destroy",
+               Short: "destroy the kubefirst platform",
+               Long:  "destroy the kubefirst platform running in Azure and 
remove all resources",
+               RunE:  common.Destroy,
+       }
+
+       return destroyCmd
+}
+
+func RootCredentials() *cobra.Command {
+       authCmd := &cobra.Command{
+               Use:   "root-credentials",
+               Short: "retrieve root authentication information for platform 
components",
+               Long:  "retrieve root authentication information for platform 
components",
+               RunE:  common.GetRootCredentials,
+       }
+
+       authCmd.Flags().BoolVar(&copyArgoCDPasswordToClipboardFlag, "argocd", 
false, "copy the argocd password to the clipboard (optional)")
+       authCmd.Flags().BoolVar(&copyKbotPasswordToClipboardFlag, "kbot", 
false, "copy the kbot password to the clipboard (optional)")
+       authCmd.Flags().BoolVar(&copyVaultPasswordToClipboardFlag, "vault", 
false, "copy the vault password to the clipboard (optional)")
+
+       return authCmd
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.7.3/cmd/azure/create.go 
new/kubefirst-2.7.4/cmd/azure/create.go
--- old/kubefirst-2.7.3/cmd/azure/create.go     1970-01-01 01:00:00.000000000 
+0100
+++ new/kubefirst-2.7.4/cmd/azure/create.go     2024-11-06 17:22:09.000000000 
+0100
@@ -0,0 +1,146 @@
+/*
+Copyright (C) 2021-2024, Kubefirst
+
+This program is licensed under MIT.
+See the LICENSE file for more details.
+*/
+package azure
+
+import (
+       "fmt"
+       "os"
+       "strings"
+
+       internalssh "github.com/konstructio/kubefirst-api/pkg/ssh"
+       utils "github.com/konstructio/kubefirst-api/pkg/utils"
+       "github.com/konstructio/kubefirst/internal/catalog"
+       "github.com/konstructio/kubefirst/internal/cluster"
+       "github.com/konstructio/kubefirst/internal/gitShim"
+       "github.com/konstructio/kubefirst/internal/launch"
+       "github.com/konstructio/kubefirst/internal/progress"
+       "github.com/konstructio/kubefirst/internal/provision"
+       "github.com/konstructio/kubefirst/internal/utilities"
+       "github.com/rs/zerolog/log"
+       "github.com/spf13/cobra"
+       "github.com/spf13/viper"
+)
+
+// Environment variables required for authentication. This should be a
+// service principal - the Terraform provider docs detail how to create
+// one
+// @link 
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/service_principal_client_secret.html
+var envvarSecrets = []string{
+       "ARM_CLIENT_ID",
+       "ARM_CLIENT_SECRET",
+       "ARM_TENANT_ID",
+       "ARM_SUBSCRIPTION_ID",
+}
+
+func createAzure(cmd *cobra.Command, _ []string) error {
+       cliFlags, err := utilities.GetFlags(cmd, "azure")
+       if err != nil {
+               progress.Error(err.Error())
+               return nil
+       }
+
+       progress.DisplayLogHints(20)
+
+       isValid, catalogApps, err := 
catalog.ValidateCatalogApps(cliFlags.InstallCatalogApps)
+       if !isValid {
+               progress.Error(err.Error())
+               return nil
+       }
+
+       err = ValidateProvidedFlags(cliFlags.GitProvider, cliFlags.DNSProvider, 
cliFlags.DNSAzureRG)
+       if err != nil {
+               progress.Error(err.Error())
+               return nil
+       }
+
+       // If cluster setup is complete, return
+       clusterSetupComplete := 
viper.GetBool("kubefirst-checks.cluster-install-complete")
+       if clusterSetupComplete {
+               err = fmt.Errorf("this cluster install process has already 
completed successfully")
+               progress.Error(err.Error())
+               return nil
+       }
+
+       utilities.CreateK1ClusterDirectory(clusterNameFlag)
+
+       gitAuth, err := gitShim.ValidateGitCredentials(cliFlags.GitProvider, 
cliFlags.GithubOrg, cliFlags.GitlabGroup)
+       if err != nil {
+               progress.Error(err.Error())
+               return nil
+       }
+
+       executionControl := 
viper.GetBool(fmt.Sprintf("kubefirst-checks.%s-credentials", 
cliFlags.GitProvider))
+       if !executionControl {
+               newRepositoryNames := []string{"gitops", "metaphor"}
+               newTeamNames := []string{"admins", "developers"}
+
+               initGitParameters := gitShim.GitInitParameters{
+                       GitProvider:  gitProviderFlag,
+                       GitToken:     gitAuth.Token,
+                       GitOwner:     gitAuth.Owner,
+                       Repositories: newRepositoryNames,
+                       Teams:        newTeamNames,
+               }
+               err = gitShim.InitializeGitProvider(&initGitParameters)
+               if err != nil {
+                       progress.Error(err.Error())
+                       return nil
+               }
+       }
+
+       viper.Set(fmt.Sprintf("kubefirst-checks.%s-credentials", 
cliFlags.GitProvider), true)
+       viper.WriteConfig()
+
+       k3dClusterCreationComplete := viper.GetBool("launch.deployed")
+       isK1Debug := strings.ToLower(os.Getenv("K1_LOCAL_DEBUG")) == "true"
+
+       if !k3dClusterCreationComplete && !isK1Debug {
+               launch.Up(nil, true, cliFlags.UseTelemetry)
+       }
+
+       err = utils.IsAppAvailable(fmt.Sprintf("%s/api/proxyHealth", 
cluster.GetConsoleIngressURL()), "kubefirst api")
+       if err != nil {
+               progress.Error("unable to start kubefirst api")
+       }
+
+       provision.CreateMgmtCluster(gitAuth, cliFlags, catalogApps)
+
+       return nil
+}
+
+func ValidateProvidedFlags(gitProvider, dnsProvider, dnsAzureResourceGroup 
string) error {
+       progress.AddStep("Validate provided flags")
+
+       for _, env := range envvarSecrets {
+               if os.Getenv(env) == "" {
+                       return fmt.Errorf("your %s is not set - please set and 
re-run your last command", env)
+               }
+       }
+
+       switch gitProvider {
+       case "github":
+               key, err := internalssh.GetHostKey("github.com")
+               if err != nil {
+                       return fmt.Errorf("known_hosts file does not exist - 
please run `ssh-keyscan github.com >> ~/.ssh/known_hosts` to remedy")
+               } else {
+                       log.Info().Msgf("%s %s\n", "github.com", key.Type())
+               }
+       case "gitlab":
+               key, err := internalssh.GetHostKey("gitlab.com")
+               if err != nil {
+                       return fmt.Errorf("known_hosts file does not exist - 
please run `ssh-keyscan gitlab.com >> ~/.ssh/known_hosts` to remedy")
+               } else {
+                       log.Info().Msgf("%s %s\n", "gitlab.com", key.Type())
+               }
+       }
+
+       if dnsProvider == "azure" && dnsAzureResourceGroup == "" {
+               return fmt.Errorf("the resource group for the azure dns zone is 
required when using azure dns")
+       }
+
+       return nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.7.3/cmd/beta.go 
new/kubefirst-2.7.4/cmd/beta.go
--- old/kubefirst-2.7.3/cmd/beta.go     2024-10-29 01:20:21.000000000 +0100
+++ new/kubefirst-2.7.4/cmd/beta.go     2024-11-06 17:22:09.000000000 +0100
@@ -10,6 +10,7 @@
        "fmt"
 
        "github.com/konstructio/kubefirst/cmd/akamai"
+       "github.com/konstructio/kubefirst/cmd/azure"
        "github.com/konstructio/kubefirst/cmd/google"
        "github.com/konstructio/kubefirst/cmd/k3s"
        "github.com/konstructio/kubefirst/cmd/vultr"
@@ -36,6 +37,7 @@
        cobra.OnInitialize()
        betaCmd.AddCommand(
                akamai.NewCommand(),
+               azure.NewCommand(),
                k3s.NewCommand(),
                google.NewCommand(),
                vultr.NewCommand(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.7.3/go.mod new/kubefirst-2.7.4/go.mod
--- old/kubefirst-2.7.3/go.mod  2024-10-29 01:20:21.000000000 +0100
+++ new/kubefirst-2.7.4/go.mod  2024-11-06 17:22:09.000000000 +0100
@@ -14,7 +14,7 @@
        github.com/dustin/go-humanize v1.0.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.113.0
+       github.com/konstructio/kubefirst-api v0.115.0
        github.com/kubefirst/metrics-client v0.3.0
        github.com/nxadm/tail v1.4.8
        github.com/rs/zerolog v1.29.1
@@ -44,6 +44,13 @@
        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/azure-sdk-for-go/sdk/azcore v1.14.0 // indirect
+       github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect
+       github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
+       github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 
// indirect
+       
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources 
v1.2.0 // indirect
+       
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0 
// indirect
+       github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.1 // 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
@@ -51,6 +58,7 @@
        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/AzureAD/microsoft-authentication-library-for-go v1.2.2 // 
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
@@ -107,13 +115,14 @@
        github.com/gobwas/glob v0.2.3 // indirect
        github.com/gofrs/flock v0.7.0 // indirect
        github.com/golang-jwt/jwt/v4 v4.4.3 // indirect
+       github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
        github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // 
indirect
        github.com/google/btree v1.0.1 // indirect
        github.com/google/gnostic v0.6.9 // indirect
        github.com/google/go-github/v45 v45.2.0 // indirect
        github.com/google/s2a-go v0.1.4 // indirect
        github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
-       github.com/google/uuid v1.3.0 // indirect
+       github.com/google/uuid v1.6.0 // indirect
        github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
        github.com/googleapis/gax-go/v2 v2.11.0 // indirect
        github.com/gorilla/css v1.0.0 // indirect
@@ -125,6 +134,7 @@
        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/kylelemons/godebug v1.1.0 // 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
@@ -147,6 +157,7 @@
        github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
        github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
        github.com/pjbgf/sha1cd v0.3.0 // indirect
+       github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
        github.com/pkg/errors v0.9.1 // indirect
        github.com/prometheus/client_golang v1.14.0 // indirect
        github.com/prometheus/client_model v0.3.0 // indirect
@@ -171,10 +182,10 @@
        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.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
+       golang.org/x/crypto v0.25.0 // indirect
+       golang.org/x/mod v0.17.0 // indirect
+       golang.org/x/sync v0.7.0 // indirect
+       golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
        golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
        google.golang.org/api v0.126.0 // indirect
        google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // 
indirect
@@ -266,11 +277,11 @@
        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.22.0 // indirect
+       golang.org/x/net v0.27.0 // indirect
        golang.org/x/oauth2 v0.8.0 // indirect
-       golang.org/x/sys v0.18.0 // indirect
-       golang.org/x/term v0.18.0 // indirect
-       golang.org/x/text v0.14.0 // indirect
+       golang.org/x/sys v0.22.0 // indirect
+       golang.org/x/term v0.22.0 // indirect
+       golang.org/x/text v0.16.0 // indirect
        golang.org/x/time v0.3.0 // indirect
        google.golang.org/appengine v1.6.7 // indirect
        google.golang.org/protobuf v1.30.0 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.7.3/go.sum new/kubefirst-2.7.4/go.sum
--- old/kubefirst-2.7.3/go.sum  2024-10-29 01:20:21.000000000 +0100
+++ new/kubefirst-2.7.4/go.sum  2024-11-06 17:22:09.000000000 +0100
@@ -59,7 +59,28 @@
 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 
h1:L4/vUGbg1Xkw5L20LZD+hJI5I+ibWSytqQ68lTCfLwY=
 github.com/Azure/azure-sdk-for-go v55.0.0+incompatible/go.mod 
h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0 
h1:nyQWyZvwGTvunIMxi1Y9uXkcyr+I7TeNrr/foo4Kpk8=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0/go.mod 
h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 
h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod 
h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 
h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod 
h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 
h1:lpOxwrQ919lCZoNCd69rVt8u1eLZuMORrGXqy8sNf3c=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0/go.mod 
h1:fSvRkb8d26z9dbL40Uf/OO6Vo9iExtZK3D0ulRV+8M0=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 
h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 
v2.0.0/go.mod h1:LRr2FzBTQlONPPa5HREE5+RjSCTXl7BwOvYOaWTqCaI=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v3 v3.0.0 
h1:Kb8eVvjdP6kZqYnER5w/PiGCFp91yVgaxve3d7kCEpY=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v3 
v3.0.0/go.mod h1:lYq15QkJyEsNegz5EhI/0SXQ6spvGfgwBH/Qyzkoc/s=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups
 v1.0.0 h1:pPvTJ1dY0sA35JOeFq6TsY2xj6Z85Yo23Pj4wCCvu4o=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups
 v1.0.0/go.mod h1:mLfWfj8v3jfWKsL9G4eoBoXVcsqcIUTapmdKy7uGOp0=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources 
v1.2.0 h1:Dd+RhdJn0OTtVGaeDLZpcumkIVCtA/3/Fo42+eoYvVM=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources 
v1.2.0/go.mod h1:5kakwfW5CjC9KK+Q4wjXAg+ShuIm2mBMua0ZFj2C8PE=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage 
v1.6.0 h1:PiSrjRPpkQNjrM8H0WwKMnZUdu1RGMtd/LdGKUrOo+c=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage 
v1.6.0/go.mod h1:oDrbWx4ewMylP7xHivfgixbfGBT6APAwsSoHRKotnIc=
+github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.1 
h1:cf+OIKbkmMHBaC3u78AXomweqM0oxQSgBXRZf3WH4yM=
+github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.1/go.mod 
h1:ap1dmS6vQKJxSMNiGJcq4QuUQkOynyD93gLw6MDF7ek=
 github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod 
h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 
h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
 github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod 
h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
@@ -79,6 +100,8 @@
 github.com/Azure/go-autorest/logger v0.2.1/go.mod 
h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
 github.com/Azure/go-autorest/tracing v0.6.0 
h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
 github.com/Azure/go-autorest/tracing v0.6.0/go.mod 
h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 
h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod 
h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
 github.com/BurntSushi/toml v0.3.1/go.mod 
h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod 
h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
 github.com/GoogleCloudPlatform/k8s-cloud-provider 
v1.16.1-0.20210702024009-ea6160c1d0e3/go.mod 
h1:8XasY4ymP2V/tn2OOV9ZadmiTE1FIB/h3W+yNlPttKw=
@@ -490,6 +513,8 @@
 github.com/golang-jwt/jwt/v4 v4.4.1/go.mod 
h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
 github.com/golang-jwt/jwt/v4 v4.4.3 
h1:Hxl6lhQFj4AnOX6MLrsCb/+7tCj7DxP7VA+2rDIq5AU=
 github.com/golang-jwt/jwt/v4 v4.4.3/go.mod 
h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang-jwt/jwt/v5 v5.2.1 
h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
+github.com/golang-jwt/jwt/v5 v5.2.1/go.mod 
h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
 github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod 
h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod 
h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 github.com/golang/glog v1.0.0/go.mod 
h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
@@ -579,8 +604,9 @@
 github.com/google/uuid v1.0.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.1/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.2/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
 github.com/google/uuid v1.3.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/googleapis/enterprise-certificate-proxy v0.2.3 
h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k=
 github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod 
h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod 
h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
@@ -724,8 +750,8 @@
 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.113.0 
h1:J1BkjkEJQSCcTQnyfXDXv9BEkXw4acfTqbzPtLPaiik=
-github.com/konstructio/kubefirst-api v0.113.0/go.mod 
h1:9zAeU7nPxwAoiEv3Cs7+gRjoFDfK60iR6CeYPFAeBY4=
+github.com/konstructio/kubefirst-api v0.115.0 
h1:LfZUiYXZe4vWZ0nAOLxLmKXIlf9Pva0HROFPxNeskXI=
+github.com/konstructio/kubefirst-api v0.115.0/go.mod 
h1:vucwNq+Si64QMT3gf2nkkcfDZ4AY4aVwxBUOVNxW2QE=
 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=
@@ -955,6 +981,8 @@
 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/browser v0.0.0-20240102092130-5ac0b6a4141c 
h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
+github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod 
h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
 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=
@@ -1018,8 +1046,8 @@
 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.11.0 
h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
-github.com/rogpeppe/go-internal v1.11.0/go.mod 
h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
+github.com/rogpeppe/go-internal v1.12.0 
h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
+github.com/rogpeppe/go-internal v1.12.0/go.mod 
h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
 github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
 github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY=
 github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
@@ -1252,8 +1280,8 @@
 golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod 
h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
 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.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
-golang.org/x/crypto v0.21.0/go.mod 
h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
+golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
+golang.org/x/crypto v0.25.0/go.mod 
h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
 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=
@@ -1309,8 +1337,8 @@
 golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
-golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
+golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1379,8 +1407,8 @@
 golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
 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.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
-golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
+golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
+golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
 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=
@@ -1410,8 +1438,8 @@
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
-golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1518,8 +1546,8 @@
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
-golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
+golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod 
h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod 
h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -1530,8 +1558,8 @@
 golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
 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.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
-golang.org/x/term v0.18.0/go.mod 
h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
+golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk=
+golang.org/x/term v0.22.0/go.mod 
h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
 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=
@@ -1549,8 +1577,8 @@
 golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/text v0.13.0/go.mod 
h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod 
h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
+golang.org/x/text v0.16.0/go.mod 
h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
 golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod 
h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod 
h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod 
h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1635,8 +1663,8 @@
 golang.org/x/tools v0.4.0/go.mod 
h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
 golang.org/x/tools v0.6.0/go.mod 
h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
 golang.org/x/tools v0.7.0/go.mod 
h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
-golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc=
-golang.org/x/tools v0.14.0/go.mod 
h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d 
h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod 
h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.7.3/internal/launch/constants.go 
new/kubefirst-2.7.4/internal/launch/constants.go
--- old/kubefirst-2.7.3/internal/launch/constants.go    2024-10-29 
01:20:21.000000000 +0100
+++ new/kubefirst-2.7.4/internal/launch/constants.go    2024-11-06 
17:22:09.000000000 +0100
@@ -11,7 +11,7 @@
        helmChartName     = "kubefirst"
        helmChartRepoName = "konstruct"
        helmChartRepoURL  = "https://charts.konstruct.io";
-       helmChartVersion  = "2.7.3"
+       helmChartVersion  = "2.7.4"
        namespace         = "kubefirst"
        secretName        = "kubefirst-initial-secrets"
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.7.3/internal/progress/message.go 
new/kubefirst-2.7.4/internal/progress/message.go
--- old/kubefirst-2.7.3/internal/progress/message.go    2024-10-29 
01:20:21.000000000 +0100
+++ new/kubefirst-2.7.4/internal/progress/message.go    2024-11-06 
17:22:09.000000000 +0100
@@ -88,6 +88,8 @@
        switch cluster.CloudProvider {
        case "aws":
                cloudCliKubeconfig = fmt.Sprintf("aws eks update-kubeconfig 
--name %q --region %q", cluster.ClusterName, cluster.CloudRegion)
+       case "azure":
+               cloudCliKubeconfig = fmt.Sprintf("az aks get-credentials 
--resource-group %q --name %q", cluster.ClusterName, cluster.ClusterName)
        case "civo":
                cloudCliKubeconfig = fmt.Sprintf("civo kubernetes config %q 
--save", cluster.ClusterName)
        case "digitalocean":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.7.3/internal/types/flags.go 
new/kubefirst-2.7.4/internal/types/flags.go
--- old/kubefirst-2.7.3/internal/types/flags.go 2024-10-29 01:20:21.000000000 
+0100
+++ new/kubefirst-2.7.4/internal/types/flags.go 2024-11-06 17:22:09.000000000 
+0100
@@ -14,6 +14,7 @@
        ClusterName          string
        ClusterType          string
        DNSProvider          string
+       DNSAzureRG           string
        DomainName           string
        SubDomainName        string
        GitProvider          string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.7.3/internal/utilities/flags.go 
new/kubefirst-2.7.4/internal/utilities/flags.go
--- old/kubefirst-2.7.3/internal/utilities/flags.go     2024-10-29 
01:20:21.000000000 +0100
+++ new/kubefirst-2.7.4/internal/utilities/flags.go     2024-11-06 
17:22:09.000000000 +0100
@@ -133,6 +133,15 @@
                cliFlags.ECR = ecrFlag
        }
 
+       if cloudProvider == "azure" {
+               dnsAzureResourceGroup, err := 
cmd.Flags().GetString("dns-azure-resource-group")
+               if err != nil {
+                       progress.Error(err.Error())
+                       return cliFlags, fmt.Errorf("failed to get 
dns-azure-resource-group flag: %w", err)
+               }
+               cliFlags.DNSAzureRG = dnsAzureResourceGroup
+       }
+
        if cloudProvider == "google" {
                googleProject, err := cmd.Flags().GetString("google-project")
                if err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubefirst-2.7.3/internal/utilities/utilities.go 
new/kubefirst-2.7.4/internal/utilities/utilities.go
--- old/kubefirst-2.7.3/internal/utilities/utilities.go 2024-10-29 
01:20:21.000000000 +0100
+++ new/kubefirst-2.7.4/internal/utilities/utilities.go 2024-11-06 
17:22:09.000000000 +0100
@@ -107,6 +107,11 @@
                cl.AWSAuth.AccessKeyID = 
viper.GetString("kubefirst.state-store-creds.access-key-id")
                cl.AWSAuth.SecretAccessKey = 
viper.GetString("kubefirst.state-store-creds.secret-access-key-id")
                cl.AWSAuth.SessionToken = 
viper.GetString("kubefirst.state-store-creds.token")
+       case "azure":
+               cl.AzureAuth.ClientID = os.Getenv("ARM_CLIENT_ID")
+               cl.AzureAuth.ClientSecret = os.Getenv("ARM_CLIENT_SECRET")
+               cl.AzureAuth.TenantID = os.Getenv("ARM_TENANT_ID")
+               cl.AzureAuth.SubscriptionID = os.Getenv("ARM_SUBSCRIPTION_ID")
        case "digitalocean":
                cl.DigitaloceanAuth.Token = os.Getenv("DO_TOKEN")
                cl.DigitaloceanAuth.SpacesKey = os.Getenv("DO_SPACES_KEY")
@@ -173,6 +178,7 @@
                CloudflareAuth: apiTypes.CloudflareAuth{
                        APIToken: os.Getenv("CF_API_TOKEN"),
                },
+               AzureDNSZoneResourceGroup: cliFlags.DNSAzureRG,
        }
 
        if cl.GitopsTemplateBranch == "" {
@@ -191,6 +197,11 @@
                cl.AWSAuth.SecretAccessKey = 
viper.GetString("kubefirst.state-store-creds.secret-access-key-id")
                cl.AWSAuth.SessionToken = 
viper.GetString("kubefirst.state-store-creds.token")
                cl.ECR = cliFlags.ECR
+       case "azure":
+               cl.AzureAuth.ClientID = os.Getenv("ARM_CLIENT_ID")
+               cl.AzureAuth.ClientSecret = os.Getenv("ARM_CLIENT_SECRET")
+               cl.AzureAuth.TenantID = os.Getenv("ARM_TENANT_ID")
+               cl.AzureAuth.SubscriptionID = os.Getenv("ARM_SUBSCRIPTION_ID")
        case "civo":
                cl.CivoAuth.Token = os.Getenv("CIVO_TOKEN")
        case "digitalocean":

++++++ kubefirst.obsinfo ++++++
--- /var/tmp/diff_new_pack.GgFeBk/_old  2024-11-12 19:24:05.262158784 +0100
+++ /var/tmp/diff_new_pack.GgFeBk/_new  2024-11-12 19:24:05.262158784 +0100
@@ -1,5 +1,5 @@
 name: kubefirst
-version: 2.7.3
-mtime: 1730161221
-commit: 718318062ccbcb9b94c0ab527c50f54c42475721
+version: 2.7.4
+mtime: 1730910129
+commit: 2c3fb66e89b4d17083ef924679dc6d1797c7ac7e
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/kubefirst/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.kubefirst.new.2017/vendor.tar.gz differ: char 5, 
line 1

Reply via email to