Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package k0sctl for openSUSE:Factory checked 
in at 2024-07-09 20:05:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/k0sctl (Old)
 and      /work/SRC/openSUSE:Factory/.k0sctl.new.2080 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "k0sctl"

Tue Jul  9 20:05:12 2024 rev:5 rq:1186333 version:0.18.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/k0sctl/k0sctl.changes    2024-06-14 
19:07:17.866874199 +0200
+++ /work/SRC/openSUSE:Factory/.k0sctl.new.2080/k0sctl.changes  2024-07-09 
20:05:51.836794070 +0200
@@ -1,0 +2,16 @@
+Wed Jul 03 16:17:58 UTC 2024 - opensuse_buildserv...@ojkastl.de
+
+- Update to version 0.18.1:
+  * Update all dependencies (#735)
+  * Hide kubeconfig content from logs
+  * Reusable workflow steps for smoke tests and docker downgrade
+    workaround
+  * Replace reading admin.conf with reading output of "k0s
+    kubeconfig admin"
+  * Revert "Simplify kubeconfig retrieval by using k0s kubeconfig
+    command (#720)"
+  * Bump github.com/go-playground/validator/v10 from 10.21.0 to
+    10.22.0 (#733)
+  * go v1.22.4 (#730)
+
+-------------------------------------------------------------------

Old:
----
  k0sctl-0.18.0.obscpio

New:
----
  k0sctl-0.18.1.obscpio

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

Other differences:
------------------
++++++ k0sctl.spec ++++++
--- /var/tmp/diff_new_pack.BrFLSi/_old  2024-07-09 20:05:55.152914857 +0200
+++ /var/tmp/diff_new_pack.BrFLSi/_new  2024-07-09 20:05:55.172915586 +0200
@@ -20,7 +20,7 @@
 %define __arch_install_post export NO_BRP_STRIP_DEBUG=true
 
 Name:           k0sctl
-Version:        0.18.0
+Version:        0.18.1
 Release:        0
 Summary:        A bootstrapping and management tool for k0s clusters
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.BrFLSi/_old  2024-07-09 20:05:55.380923165 +0200
+++ /var/tmp/diff_new_pack.BrFLSi/_new  2024-07-09 20:05:55.412924331 +0200
@@ -2,7 +2,7 @@
   <service name="obs_scm" mode="manual">
     <param name="url">https://github.com/k0sproject/k0sctl.git</param>
     <param name="scm">git</param>
-    <param name="revision">v0.18.0</param>
+    <param name="revision">v0.18.1</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.BrFLSi/_old  2024-07-09 20:05:55.552929432 +0200
+++ /var/tmp/diff_new_pack.BrFLSi/_new  2024-07-09 20:05:55.588930744 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/k0sproject/k0sctl.git</param>
-              <param 
name="changesrevision">1afb01f3bf23226916b52e507263500117486a18</param></service></servicedata>
+              <param 
name="changesrevision">53248d6dd0f8635e3e41fa51c116748f5eb246c7</param></service></servicedata>
 (No newline at EOF)
 

++++++ k0sctl-0.18.0.obscpio -> k0sctl-0.18.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/k0sctl-0.18.0/.github/actions/smoke-test-cache/action.yaml 
new/k0sctl-0.18.1/.github/actions/smoke-test-cache/action.yaml
--- old/k0sctl-0.18.0/.github/actions/smoke-test-cache/action.yaml      
1970-01-01 01:00:00.000000000 +0100
+++ new/k0sctl-0.18.1/.github/actions/smoke-test-cache/action.yaml      
2024-06-28 12:11:27.000000000 +0200
@@ -0,0 +1,36 @@
+name: Smoke test cache steps
+runs:
+  using: composite
+  steps:
+    - name: Set up Go
+      uses: actions/setup-go@v5
+      with:
+        go-version-file: go.mod
+        check-latest: true
+
+    - name: Download compiled binary artifact
+      uses: actions/download-artifact@v4
+      with:
+        name: k0sctl
+        path: .
+
+    - name: k0sctl cache
+      uses: actions/cache@v3
+      with:
+        key: k0sctl-cache
+        path: |
+          /var/cache/k0sctl/k0s
+          ~/.cache/k0sctl/k0s
+    
+    - name: kubectl cache
+      uses: actions/cache@v3
+      with:
+        path: |
+          smoke-test/kubectl
+        key: "kubectl-${{ hashFiles('smoke-test/smoke.common.sh') }}"
+
+    - name: Make binaries executable
+      shell: bash
+      run: |
+        chmod +x k0sctl || true
+        chmod +x smoke-test/kubectl || true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/k0sctl-0.18.0/.github/workflows/smoke.yml 
new/k0sctl-0.18.1/.github/workflows/smoke.yml
--- old/k0sctl-0.18.0/.github/workflows/smoke.yml       2024-06-10 
10:37:19.000000000 +0200
+++ new/k0sctl-0.18.1/.github/workflows/smoke.yml       2024-06-28 
12:11:27.000000000 +0200
@@ -49,19 +49,8 @@
     runs-on: ubuntu-20.04
 
     steps:
-
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run smoke tests
         env:
           LINUX_IMAGE: ${{ matrix.image }}
@@ -80,17 +69,7 @@
     steps:
 
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run smoke tests
         env:
           LINUX_IMAGE: ${{ matrix.image }}
@@ -103,16 +82,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
+      - uses: ./.github/actions/smoke-test-cache
 
       - name: Build image
         run: |
@@ -133,17 +103,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run smoke tests
         env:
           LINUX_IMAGE: ${{ matrix.image }}
@@ -161,17 +121,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run smoke tests
         run: make smoke-files
 
@@ -186,17 +136,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run smoke tests
         run: make smoke-dynamic
 
@@ -207,17 +147,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run OS override smoke test
         run: make smoke-os-override
 
@@ -228,17 +158,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run k0sDownloadURL smoke test
         run: make smoke-downloadurl
 
@@ -258,17 +178,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run smoke tests
         env:
           LINUX_IMAGE: ${{ matrix.image }}
@@ -289,17 +199,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run smoke tests
         env:
           LINUX_IMAGE: ${{ matrix.image }}
@@ -319,17 +219,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run smoke tests
         env:
           LINUX_IMAGE: ${{ matrix.image }}
@@ -349,17 +239,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run smoke tests
         env:
           LINUX_IMAGE: ${{ matrix.image }}
@@ -377,17 +257,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run smoke tests
         env:
           LINUX_IMAGE: ${{ matrix.image }}
@@ -400,17 +270,7 @@
 
     steps:
       - uses: actions/checkout@v4
-      - name: Set up Go
-        uses: actions/setup-go@v5
-        with:
-          go-version-file: go.mod
-          check-latest: true
-
-      - {"name":"Compiled binary 
cache","uses":"actions/download-artifact@v4","with":{"name":"k0sctl","path":"."}}
-      - {"name":"K0sctl 
cache","uses":"actions/cache@v3","with":{"path":"/var/cache/k0sctl/k0s\n~/.cache/k0sctl/k0s\n","key":"k0sctl-cache"}}
-      - {"name":"Kubectl 
cache","uses":"actions/cache@v3","with":{"path":"smoke-test/kubectl\n","key":"kubectl-${{
 hashFiles('smoke-test/smoke.common.sh') }}","restore-keys":"kubectl-"}}
-      - {"name":"Make binaries executable","run":"chmod +x k0sctl || 
true\nchmod +x smoke-test/kubectl || true"}
-
+      - uses: ./.github/actions/smoke-test-cache
       - name: Run init smoke test
         run: make smoke-init
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/k0sctl-0.18.0/go.mod new/k0sctl-0.18.1/go.mod
--- old/k0sctl-0.18.0/go.mod    2024-06-10 10:37:19.000000000 +0200
+++ new/k0sctl-0.18.1/go.mod    2024-06-28 12:11:27.000000000 +0200
@@ -2,7 +2,7 @@
 
 go 1.22.0
 
-toolchain go1.22.3
+toolchain go1.22.4
 
 require (
        github.com/AlecAivazis/survey/v2 v2.3.7
@@ -14,7 +14,7 @@
        github.com/creasty/defaults v1.7.0
        github.com/denisbrodbeck/machineid v1.0.1
        github.com/gofrs/uuid v4.4.0+incompatible // indirect
-       github.com/hashicorp/go-version v1.6.0 // indirect
+       github.com/hashicorp/go-version v1.7.0 // indirect
        github.com/k0sproject/dig v0.2.0
        github.com/k0sproject/rig v0.18.4
        github.com/logrusorgru/aurora v2.0.3+incompatible
@@ -28,35 +28,35 @@
        github.com/stretchr/testify v1.9.0
        github.com/urfave/cli/v2 v2.27.2
        github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect
-       golang.org/x/crypto v0.23.0 // indirect
-       golang.org/x/net v0.25.0 // indirect
-       golang.org/x/sys v0.20.0 // indirect
-       golang.org/x/term v0.20.0 // indirect
+       golang.org/x/crypto v0.24.0 // indirect
+       golang.org/x/net v0.26.0 // indirect
+       golang.org/x/sys v0.21.0 // indirect
+       golang.org/x/term v0.21.0 // indirect
        golang.org/x/text v0.16.0
        gopkg.in/yaml.v2 v2.4.0
-       k8s.io/client-go v0.30.1
 )
 
 require (
        github.com/alessio/shellescape v1.4.2
        github.com/carlmjohnson/versioninfo v0.22.5
-       github.com/go-playground/validator/v10 v10.21.0
+       github.com/go-playground/validator/v10 v10.22.0
        github.com/jellydator/validation v1.1.0
        github.com/k0sproject/version v0.6.0
        github.com/sergi/go-diff v1.3.1
+       k8s.io/client-go v0.30.2
 )
 
 require (
-       github.com/Microsoft/go-winio v0.6.1 // indirect
+       github.com/Microsoft/go-winio v0.6.2 // indirect
        github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // 
indirect
        github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // 
indirect
-       github.com/bodgit/ntlmssp v0.0.0-20240405225621-bc7a66a52237 // indirect
+       github.com/bodgit/ntlmssp v0.0.0-20240506230425-31973bb52d9b // indirect
        github.com/bodgit/windows v1.0.1 // indirect
        github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
        github.com/davecgh/go-spew v1.1.1 // indirect
        github.com/davidmz/go-pageant v1.0.2 // indirect
-       github.com/gabriel-vasile/mimetype v1.4.3 // indirect
-       github.com/go-logr/logr v1.4.1 // indirect
+       github.com/gabriel-vasile/mimetype v1.4.4 // indirect
+       github.com/go-logr/logr v1.4.2 // indirect
        github.com/go-playground/locales v0.14.1 // indirect
        github.com/go-playground/universal-translator v0.18.1 // indirect
        github.com/gogo/protobuf v1.3.2 // indirect
@@ -73,6 +73,7 @@
        github.com/json-iterator/go v1.1.12 // indirect
        github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // 
indirect
        github.com/kevinburke/ssh_config v1.2.0 // indirect
+       github.com/kr/text v0.2.0 // indirect
        github.com/leodido/go-urn v1.4.0 // indirect
        github.com/mattn/go-colorable v0.1.13 // indirect
        github.com/mattn/go-shellwords v1.0.12 // indirect
@@ -84,17 +85,15 @@
        github.com/russross/blackfriday/v2 v2.1.0 // indirect
        github.com/spf13/pflag v1.0.5 // indirect
        github.com/tidwall/transform v0.0.0-20201103190739-32f242e2dbde // 
indirect
-       github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect
-       golang.org/x/mod v0.17.0 // indirect
-       golang.org/x/oauth2 v0.19.0 // indirect
-       golang.org/x/sync v0.7.0 // indirect
+       github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
+       golang.org/x/oauth2 v0.21.0 // indirect
        golang.org/x/time v0.5.0 // indirect
-       golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
+       google.golang.org/protobuf v1.34.2 // indirect
        gopkg.in/inf.v0 v0.9.1 // indirect
        gopkg.in/yaml.v3 v3.0.1 // indirect
-       k8s.io/apimachinery v0.30.1 // indirect
-       k8s.io/klog/v2 v2.120.1 // indirect
-       k8s.io/utils v0.0.0-20240310230437-4693a0247e57 // indirect
+       k8s.io/apimachinery v0.30.2 // indirect
+       k8s.io/klog/v2 v2.130.1 // indirect
+       k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 // indirect
        sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
        sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
        sigs.k8s.io/yaml v1.4.0 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/k0sctl-0.18.0/go.sum new/k0sctl-0.18.1/go.sum
--- old/k0sctl-0.18.0/go.sum    2024-06-10 10:37:19.000000000 +0200
+++ new/k0sctl-0.18.1/go.sum    2024-06-28 12:11:27.000000000 +0200
@@ -4,8 +4,8 @@
 github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358/go.mod 
h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
 github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6 
h1:w0E0fgc1YafGEh5cROhlROMWXiNoZqApk2PDN0M1+Ns=
 github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6/go.mod 
h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4=
-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/go-winio v0.6.2 
h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
+github.com/Microsoft/go-winio v0.6.2/go.mod 
h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
 github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 
h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s=
 github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod 
h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w=
 github.com/a8m/envsubst v1.4.2 h1:4yWIHXOLEJHQEFd4UjrWDrYeYlV7ncFWJOCBRLOZHQg=
@@ -21,14 +21,15 @@
 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod 
h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
 github.com/bmatcuk/doublestar/v4 v4.6.1 
h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I=
 github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod 
h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
-github.com/bodgit/ntlmssp v0.0.0-20240405225621-bc7a66a52237 
h1:IRHxBGP4NtipmCHvxhEFpxuypBszYx+WRo6Wc6xxjXo=
-github.com/bodgit/ntlmssp v0.0.0-20240405225621-bc7a66a52237/go.mod 
h1:ZcREh7an/iQI1JTsS+K9YAlig9Twd+OAGqB75LT+5+8=
+github.com/bodgit/ntlmssp v0.0.0-20240506230425-31973bb52d9b 
h1:baFN6AnR0SeC194X2D292IUZcHDs4JjStpqtE70fjXE=
+github.com/bodgit/ntlmssp v0.0.0-20240506230425-31973bb52d9b/go.mod 
h1:Ram6ngyPDmP+0t6+4T2rymv0w0BS9N8Ch5vvUJccw5o=
 github.com/bodgit/windows v1.0.1 
h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=
 github.com/bodgit/windows v1.0.1/go.mod 
h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
 github.com/carlmjohnson/versioninfo v0.22.5 
h1:O00sjOLUAFxYQjlN/bzYTuZiS0y6fWDQjMRvwtKgwwc=
 github.com/carlmjohnson/versioninfo v0.22.5/go.mod 
h1:QT9mph3wcVfISUKd0i9sZfVrPviHuSF+cUtLjm2WSf8=
 github.com/cpuguy83/go-md2man/v2 v2.0.4 
h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
 github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod 
h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/creack/pty v1.1.9/go.mod 
h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
 github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI=
 github.com/creack/pty v1.1.17/go.mod 
h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
 github.com/creasty/defaults v1.7.0 
h1:eNdqZvc5B509z18lD8yc212CAqJNvfT1Jq6L8WowdBA=
@@ -42,10 +43,10 @@
 github.com/denisbrodbeck/machineid v1.0.1/go.mod 
h1:dJUwb7PTidGDeYyUBmXZ2GphQBbjJCrnectwCyxcUSI=
 github.com/emicklei/go-restful/v3 v3.11.0 
h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
 github.com/emicklei/go-restful/v3 v3.11.0/go.mod 
h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
-github.com/gabriel-vasile/mimetype v1.4.3 
h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
-github.com/gabriel-vasile/mimetype v1.4.3/go.mod 
h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod 
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/gabriel-vasile/mimetype v1.4.4 
h1:QjV6pZ7/XZ7ryI2KuyeEDE8wnh7fHP9YnQy+R0LnH8I=
+github.com/gabriel-vasile/mimetype v1.4.4/go.mod 
h1:JwLei5XPtWdGiMFB5Pjle1oEeoSeEuJfJE+TtfvdB/s=
+github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
+github.com/go-logr/logr v1.4.2/go.mod 
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 github.com/go-openapi/jsonpointer v0.19.6 
h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
 github.com/go-openapi/jsonpointer v0.19.6/go.mod 
h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
 github.com/go-openapi/jsonreference v0.20.2 
h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
@@ -58,8 +59,8 @@
 github.com/go-playground/locales v0.14.1/go.mod 
h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
 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.21.0 
h1:4fZA11ovvtkdgaeev9RGWPgc1uj3H8W+rNYyH/ySBb0=
-github.com/go-playground/validator/v10 v10.21.0/go.mod 
h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
+github.com/go-playground/validator/v10 v10.22.0 
h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao=
+github.com/go-playground/validator/v10 v10.22.0/go.mod 
h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
 github.com/gofrs/uuid v4.4.0+incompatible 
h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA=
 github.com/gofrs/uuid v4.4.0+incompatible/go.mod 
h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
@@ -85,8 +86,8 @@
 github.com/hashicorp/go-uuid v1.0.2/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/go-uuid v1.0.3 
h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
 github.com/hashicorp/go-uuid v1.0.3/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-version v1.6.0 
h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
-github.com/hashicorp/go-version v1.6.0/go.mod 
h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
+github.com/hashicorp/go-version v1.7.0 
h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
+github.com/hashicorp/go-version v1.7.0/go.mod 
h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
 github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec 
h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog=
 github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod 
h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68=
 github.com/imdario/mergo v0.3.16 
h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
@@ -125,8 +126,9 @@
 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=
-github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
 github.com/kr/text v0.1.0/go.mod 
h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod 
h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 github.com/leodido/go-urn v1.4.0 
h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
 github.com/leodido/go-urn v1.4.0/go.mod 
h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
 github.com/logrusorgru/aurora v2.0.3+incompatible 
h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8=
@@ -192,8 +194,8 @@
 github.com/tidwall/transform v0.0.0-20201103190739-32f242e2dbde/go.mod 
h1:MvrEmduDUz4ST5pGZ7CABCnOU5f3ZiOAZzT6b1A6nX8=
 github.com/urfave/cli/v2 v2.27.2 
h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI=
 github.com/urfave/cli/v2 v2.27.2/go.mod 
h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM=
-github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 
h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw=
-github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod 
h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk=
+github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 
h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4=
+github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod 
h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
 github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c 
h1:3lbZUMbMiGUW/LMkfsEABsc5zNT9+b1CvsJx47JzJ8g=
 github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c/go.mod 
h1:UrdRz5enIKZ63MEE3IF9l2/ebyx59GyGgPi+tICQdmM=
 github.com/yuin/goldmark v1.1.27/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -205,13 +207,11 @@
 golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod 
h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod 
h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.6.0/go.mod 
h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
-golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
-golang.org/x/crypto v0.23.0/go.mod 
h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
+golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
+golang.org/x/crypto v0.24.0/go.mod 
h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod 
h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-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-20190404232315-eb5bcb51f2a3/go.mod 
h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -221,16 +221,14 @@
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod 
h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
 golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
-golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
-golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg=
-golang.org/x/oauth2 v0.19.0/go.mod 
h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
+golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
+golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
+golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
+golang.org/x/oauth2 v0.21.0/go.mod 
h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/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.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
-golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -244,13 +242,13 @@
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
-golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
+golang.org/x/sys v0.21.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.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw=
-golang.org/x/term v0.20.0/go.mod 
h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
+golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
+golang.org/x/term v0.21.0/go.mod 
h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
@@ -265,14 +263,12 @@
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod 
h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod 
h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.1.12/go.mod 
h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-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=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v1.33.0 
h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
-google.golang.org/protobuf v1.33.0/go.mod 
h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.34.2 
h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod 
h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 
h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -285,18 +281,18 @@
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-k8s.io/api v0.30.1 h1:kCm/6mADMdbAxmIh0LBjS54nQBE+U4KmbCfIkF5CpJY=
-k8s.io/api v0.30.1/go.mod h1:ddbN2C0+0DIiPntan/bye3SW3PdwLa11/0yqwvuRrJM=
-k8s.io/apimachinery v0.30.1 h1:ZQStsEfo4n65yAdlGTfP/uSHMQSoYzU/oeEbkmF7P2U=
-k8s.io/apimachinery v0.30.1/go.mod 
h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc=
-k8s.io/client-go v0.30.1 h1:uC/Ir6A3R46wdkgCV3vbLyNOYyCJ8oZnjtJGKfytl/Q=
-k8s.io/client-go v0.30.1/go.mod h1:wrAqLNs2trwiCH/wxxmT/x3hKVH9PuV0GGW0oDoHVqc=
-k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
-k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/api v0.30.2 h1:+ZhRj+28QT4UOH+BKznu4CBgPWgkXO7XAvMcMl0qKvI=
+k8s.io/api v0.30.2/go.mod h1:ULg5g9JvOev2dG0u2hig4Z7tQ2hHIuS+m8MNZ+X6EmI=
+k8s.io/apimachinery v0.30.2 h1:fEMcnBj6qkzzPGSVsAZtQThU62SmQ4ZymlXRC5yFSCg=
+k8s.io/apimachinery v0.30.2/go.mod 
h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc=
+k8s.io/client-go v0.30.2 h1:sBIVJdojUNPDU/jObC+18tXWcTJVcwyqS9diGdWHk50=
+k8s.io/client-go v0.30.2/go.mod h1:JglKSWULm9xlJLx4KCkfLLQ7XwtlbflV6uFFSHTMgVs=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
 k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 
h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag=
 k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod 
h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98=
-k8s.io/utils v0.0.0-20240310230437-4693a0247e57 
h1:gbqbevonBh57eILzModw6mrkbwM0gQBEuevE/AaBsHY=
-k8s.io/utils v0.0.0-20240310230437-4693a0247e57/go.mod 
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 
h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak=
+k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod 
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd 
h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod 
h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
 sigs.k8s.io/structured-merge-diff/v4 v4.4.1 
h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/k0sctl-0.18.0/phase/get_kubeconfig.go 
new/k0sctl-0.18.1/phase/get_kubeconfig.go
--- old/k0sctl-0.18.0/phase/get_kubeconfig.go   2024-06-10 10:37:19.000000000 
+0200
+++ new/k0sctl-0.18.1/phase/get_kubeconfig.go   2024-06-28 12:11:27.000000000 
+0200
@@ -4,9 +4,12 @@
        "fmt"
        "strings"
 
+       "github.com/alessio/shellescape"
+       "github.com/k0sproject/dig"
+       
"github.com/k0sproject/k0sctl/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster"
        "github.com/k0sproject/rig/exec"
-       log "github.com/sirupsen/logrus"
        "gopkg.in/yaml.v2"
+       "k8s.io/client-go/tools/clientcmd"
 )
 
 // GetKubeconfig is a phase to get and dump the admin kubeconfig
@@ -15,19 +18,37 @@
        APIAddress string
 }
 
-type kubeconfig struct {
-       Clusters []struct {
-               Cluster struct {
-                       Server string `yaml:"server"`
-               } `yaml:"cluster"`
-       } `yaml:"clusters"`
-}
-
 // Title for the phase
 func (p *GetKubeconfig) Title() string {
        return "Get admin kubeconfig"
 }
 
+var readKubeconfig = func(h *cluster.Host) (string, error) {
+       output, err := h.ExecOutput(h.Configurer.K0sCmdf("kubeconfig admin 
--data-dir=%s", shellescape.Quote(h.K0sDataDir())), exec.Sudo(h), 
exec.HideOutput())
+       if err != nil {
+               return "", fmt.Errorf("get kubeconfig from host: %w", err)
+       }
+       return output, nil
+}
+
+var k0sConfig = func(h *cluster.Host) (dig.Mapping, error) {
+       cfgContent, err := h.Configurer.ReadFile(h, 
h.Configurer.K0sConfigPath())
+       if err != nil {
+               return nil, fmt.Errorf("read k0s config from host: %w", err)
+       }
+
+       var cfg dig.Mapping
+       if err := yaml.Unmarshal([]byte(cfgContent), &cfg); err != nil {
+               return nil, fmt.Errorf("unmarshal k0s config: %w", err)
+       }
+
+       if err != nil {
+               return nil, fmt.Errorf("parse k0s config: %w", err)
+       }
+
+       return cfg, nil
+}
+
 func (p *GetKubeconfig) DryRun() error {
        p.DryMsg(p.Config.Spec.Hosts.Controllers()[0], "get admin kubeconfig")
        return nil
@@ -35,31 +56,74 @@
 
 // Run the phase
 func (p *GetKubeconfig) Run() error {
-       h := p.Config.Spec.K0sLeader()
+       h := p.Config.Spec.Hosts.Controllers()[0]
+
+       cfg, err := k0sConfig(h)
+       if err != nil {
+               return err
+       }
 
-       output, err := h.ExecOutput(h.Configurer.K0sCmdf("kubeconfig admin"), 
exec.Sudo(h))
+       output, err := readKubeconfig(h)
        if err != nil {
                return fmt.Errorf("read kubeconfig from host: %w", err)
        }
 
-       if p.APIAddress != "" {
-               log.Debugf("%s: replacing api address with %v", h, p.APIAddress)
-               kubeconf := kubeconfig{}
-               if err := yaml.Unmarshal([]byte(output), &kubeconf); err != nil 
{
-                       return fmt.Errorf("unmarshal kubeconfig: %w", err)
+       if p.APIAddress == "" {
+               // the controller admin.conf is aways pointing to localhost, 
thus we need to change the address
+               // something usable from outside
+               address := h.Address()
+               if a, ok := cfg.Dig("spec", "api", "externalAddress").(string); 
ok && a != "" {
+                       address = a
                }
-               if len(kubeconf.Clusters) == 0 {
-                       return fmt.Errorf("no clusters found in kubeconfig")
+
+               port := 6443
+               if p, ok := cfg.Dig("spec", "api", "port").(int); ok && p != 0 {
+                       port = p
                }
-               server := kubeconf.Clusters[0].Cluster.Server
-               if server == "" {
-                       return fmt.Errorf("no server found in kubeconfig")
+
+               if strings.Contains(address, ":") {
+                       p.APIAddress = fmt.Sprintf("https://[%s]:%d";, address, 
port)
+               } else {
+                       p.APIAddress = fmt.Sprintf("https://%s:%d";, address, 
port)
                }
-               log.Debugf("%s: replacing %v with %v", h, server, p.APIAddress)
-               output = strings.ReplaceAll(output, server, p.APIAddress)
        }
 
-       p.Config.Metadata.Kubeconfig = output
+       cfgString, err := kubeConfig(output, p.Config.Metadata.Name, 
p.APIAddress)
+       if err != nil {
+               return err
+       }
+
+       p.Config.Metadata.Kubeconfig = cfgString
 
        return nil
 }
+
+// kubeConfig reads in the raw kubeconfig and changes the given address
+// and cluster name into it
+func kubeConfig(raw string, name string, address string) (string, error) {
+       cfg, err := clientcmd.Load([]byte(raw))
+       if err != nil {
+               return "", err
+       }
+
+       cfg.Clusters[name] = cfg.Clusters["local"]
+       delete(cfg.Clusters, "local")
+       cfg.Clusters[name].Server = address
+
+       cfg.Contexts[name] = cfg.Contexts["Default"]
+       delete(cfg.Contexts, "Default")
+       cfg.Contexts[name].Cluster = name
+       cfg.Contexts[name].AuthInfo = "admin"
+
+       cfg.CurrentContext = name
+
+       cfg.AuthInfos["admin"] = cfg.AuthInfos["user"]
+       delete(cfg.AuthInfos, "user")
+
+       out, err := clientcmd.Write(*cfg)
+       if err != nil {
+               return "", err
+       }
+
+       return string(out), nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/k0sctl-0.18.0/phase/get_kubeconfig_test.go 
new/k0sctl-0.18.1/phase/get_kubeconfig_test.go
--- old/k0sctl-0.18.0/phase/get_kubeconfig_test.go      1970-01-01 
01:00:00.000000000 +0100
+++ new/k0sctl-0.18.1/phase/get_kubeconfig_test.go      2024-06-28 
12:11:27.000000000 +0200
@@ -0,0 +1,70 @@
+package phase
+
+import (
+       "strings"
+       "testing"
+
+       "github.com/k0sproject/dig"
+       "github.com/k0sproject/k0sctl/pkg/apis/k0sctl.k0sproject.io/v1beta1"
+       
"github.com/k0sproject/k0sctl/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster"
+       "github.com/k0sproject/rig"
+       "github.com/stretchr/testify/require"
+       "k8s.io/client-go/tools/clientcmd"
+)
+
+func fakeReader(h *cluster.Host) (string, error) {
+       return strings.ReplaceAll(`apiVersion: v1
+clusters:
+- cluster:
+    server: https://localhost:6443
+  name: local
+contexts:
+- context:
+    cluster: local
+    user: user
+  name: Default
+current-context: Default
+kind: Config
+preferences: {}
+users:
+- name: user
+  user:
+`, "\t", "  "), nil
+}
+
+func TestGetKubeconfig(t *testing.T) {
+       cfg := &v1beta1.Cluster{
+               Metadata: &v1beta1.ClusterMetadata{
+                       Name: "k0s",
+               },
+               Spec: &cluster.Spec{
+                       K0s: &cluster.K0s{Config: dig.Mapping{}},
+                       Hosts: []*cluster.Host{
+                               {Role: "controller", Connection: 
rig.Connection{SSH: &rig.SSH{Address: "10.0.0.1", Port: 22}}},
+                       },
+               },
+       }
+
+       origReadKubeconfig := readKubeconfig
+       defer func() { readKubeconfig = origReadKubeconfig }()
+       readKubeconfig = fakeReader
+
+       origK0sConfig := k0sConfig
+       defer func() { k0sConfig = origK0sConfig }()
+       k0sConfig = func(h *cluster.Host) (dig.Mapping, error) {
+               return cfg.Spec.K0s.Config, nil
+       }
+
+       p := GetKubeconfig{GenericPhase: GenericPhase{Config: cfg}}
+       require.NoError(t, p.Run())
+       conf, err := clientcmd.Load([]byte(cfg.Metadata.Kubeconfig))
+       require.NoError(t, err)
+       require.Equal(t, "https://10.0.0.1:6443";, conf.Clusters["k0s"].Server)
+
+       cfg.Spec.Hosts[0].Connection.SSH.Address = "abcd:efgh:ijkl:mnop"
+       p.APIAddress = ""
+       require.NoError(t, p.Run())
+       conf, err = clientcmd.Load([]byte(cfg.Metadata.Kubeconfig))
+       require.NoError(t, err)
+       require.Equal(t, "https://[abcd:efgh:ijkl:mnop]:6443";, 
conf.Clusters["k0s"].Server)
+}

++++++ k0sctl.obsinfo ++++++
--- /var/tmp/diff_new_pack.BrFLSi/_old  2024-07-09 20:05:55.832939635 +0200
+++ /var/tmp/diff_new_pack.BrFLSi/_new  2024-07-09 20:05:55.872941093 +0200
@@ -1,5 +1,5 @@
 name: k0sctl
-version: 0.18.0
-mtime: 1718008639
-commit: 1afb01f3bf23226916b52e507263500117486a18
+version: 0.18.1
+mtime: 1719569487
+commit: 53248d6dd0f8635e3e41fa51c116748f5eb246c7
 

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

Reply via email to