Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package timoni for openSUSE:Factory checked in at 2023-09-06 18:58:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/timoni (Old) and /work/SRC/openSUSE:Factory/.timoni.new.1766 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "timoni" Wed Sep 6 18:58:01 2023 rev:4 rq:1109093 version:0.12.1 Changes: -------- --- /work/SRC/openSUSE:Factory/timoni/timoni.changes 2023-08-01 15:38:28.129797627 +0200 +++ /work/SRC/openSUSE:Factory/.timoni.new.1766/timoni.changes 2023-09-06 19:01:45.815195159 +0200 @@ -1,0 +2,36 @@ +Tue Sep 05 15:00:22 UTC 2023 - ka...@b1-systems.de + +- Update to version 0.12.1: + * Fix panic when waiting for global resources + +------------------------------------------------------------------- +Tue Sep 05 14:57:38 UTC 2023 - ka...@b1-systems.de + +- Update to version 0.12.0: + * Update example modules + - podinfo v6.4.1 + - redis v7.2.0 + - minimal v0.1.0 + * Mark image fields as required Use CUE 0.6 required fields + feature for better error messages when required fields are + missing from values. + * Build with Go 1.21 + * Bump the ci group with 2 updates + * Run server-side apply operations in parallel Speed up the + Kubernetes resources reconciliation by running the server-side + apply operations in parallel. + * Set standard Kubernetes labels: app name and version + * Use metadata abstraction in the module template + * Introduce Kubernetes metadata CUE definition + * Inject version info Add optional tags to inject the module + version and Kubernetes version at runtime. + * Update `cuelang.org/go` to v0.6.0 + * Bump the ci group with 3 updates + * Document how to change the apply behaviour + * Add support for one-off resources To apply resources only if + they don't exist on the cluster, module authors can annotate + them with `action.timoni.sh/one-off: "enabled"`. + * Update dependencies + * Bump the ci group with 2 updates + +------------------------------------------------------------------- Old: ---- timoni-0.11.1.obscpio New: ---- timoni-0.12.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ timoni.spec ++++++ --- /var/tmp/diff_new_pack.XJ8vUP/_old 2023-09-06 19:01:48.023273873 +0200 +++ /var/tmp/diff_new_pack.XJ8vUP/_new 2023-09-06 19:01:48.027274015 +0200 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: timoni -Version: 0.11.1 +Version: 0.12.1 Release: 0 Summary: Package manager for Kubernetes, powered by CUE and inspired by Helm License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.XJ8vUP/_old 2023-09-06 19:01:48.055275013 +0200 +++ /var/tmp/diff_new_pack.XJ8vUP/_new 2023-09-06 19:01:48.059275156 +0200 @@ -1,21 +1,21 @@ <services> - <service name="obs_scm" mode="disabled"> + <service name="obs_scm" mode="manual"> <param name="url">https://github.com/stefanprodan/timoni</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.11.1</param> + <param name="revision">v0.12.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> </service> - <service name="set_version" mode="disabled"> + <service name="set_version" mode="manual"> </service> <service name="tar" mode="buildtime"/> <service name="recompress" mode="buildtime"> <param name="file">*.tar</param> <param name="compression">gz</param> </service> - <service name="go_modules" mode="disabled"> + <service name="go_modules" mode="manual"> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.XJ8vUP/_old 2023-09-06 19:01:48.075275726 +0200 +++ /var/tmp/diff_new_pack.XJ8vUP/_new 2023-09-06 19:01:48.079275869 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/stefanprodan/timoni</param> - <param name="changesrevision">3e99a6045487156a2e235d525aa446f2b5b09789</param></service></servicedata> + <param name="changesrevision">51ff2903853bf29fbbbf487fe5a44e61d692034f</param></service></servicedata> (No newline at EOF) ++++++ timoni-0.11.1.obscpio -> timoni-0.12.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/.github/workflows/build.yaml new/timoni-0.12.1/.github/workflows/build.yaml --- old/timoni-0.11.1/.github/workflows/build.yaml 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/.github/workflows/build.yaml 2023-09-03 17:42:09.000000000 +0200 @@ -14,18 +14,18 @@ runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: 1.20.x + go-version: 1.21.x cache-dependency-path: | **/go.sum **/go.mod - name: Setup CUE - uses: cue-lang/setup-cue@0be332bb74c8a2f07821389447ba3163e2da3bfb # main + uses: cue-lang/setup-cue@1713281ae501e533ff06108005dffeab9e2e5203 # main with: - version: v0.5.0 + version: v0.6.0 - name: Run tests run: make test - name: Run linter diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/.github/workflows/docs.yaml new/timoni-0.12.1/.github/workflows/docs.yaml --- old/timoni-0.11.1/.github/workflows/docs.yaml 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/.github/workflows/docs.yaml 2023-09-03 17:42:09.000000000 +0200 @@ -15,11 +15,11 @@ contents: write steps: - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: 1.20.x + go-version: 1.21.x cache-dependency-path: | **/go.sum **/go.mod diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/.github/workflows/e2e.yaml new/timoni-0.12.1/.github/workflows/e2e.yaml --- old/timoni-0.11.1/.github/workflows/e2e.yaml 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/.github/workflows/e2e.yaml 2023-09-03 17:42:09.000000000 +0200 @@ -19,19 +19,19 @@ - 5000:5000 steps: - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: 1.20.x + go-version: 1.21.x cache-dependency-path: | **/go.sum **/go.mod - name: Setup Kubernetes uses: helm/kind-action@dda0770415bac9fc20092cacbc54aa298604d140 # v1.8.0 with: - version: v0.18.0 - node_image: kindest/node:v1.27.2 + version: v0.20.0 + node_image: kindest/node:v1.28.0 cluster_name: kind - name: Install run: make install diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/.github/workflows/release.yaml new/timoni-0.12.1/.github/workflows/release.yaml --- old/timoni-0.11.1/.github/workflows/release.yaml 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/.github/workflows/release.yaml 2023-09-03 17:42:09.000000000 +0200 @@ -19,13 +19,13 @@ packages: write steps: - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - name: Unshallow run: git fetch --prune --unshallow - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: 1.20.x + go-version: 1.21.x cache-dependency-path: | **/go.sum **/go.mod @@ -33,7 +33,7 @@ uses: anchore/sbom-action/download-syft@78fc58e266e87a38d4194b2137a3d4e9bcaf7ca1 # v0.14.3 - name: Run GoReleaser id: run-goreleaser - uses: goreleaser/goreleaser-action@336e29918d653399e599bfca99fadc1d7ffbc9f7 # v4.3.0 + uses: goreleaser/goreleaser-action@3fa32b8bb5620a2c1afe798654bbad59f9da4906 # v4.4.0 with: version: latest args: release --skip-validate @@ -61,7 +61,7 @@ actions: read # To read the workflow path. id-token: write # To sign the provenance. contents: write # To add assets to a release. - uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.7.0 + uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.9.0 with: provenance-name: "timoni_${{ needs.goreleaser.outputs.version }}_provenance.intoto.jsonl" base64-subjects: "${{ needs.goreleaser.outputs.hashes }}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/.github/workflows/scan.yml new/timoni-0.12.1/.github/workflows/scan.yml --- old/timoni-0.11.1/.github/workflows/scan.yml 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/.github/workflows/scan.yml 2023-09-03 17:42:09.000000000 +0200 @@ -19,11 +19,11 @@ if: github.actor != 'dependabot[bot]' steps: - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: 1.20.x + go-version: 1.21.x cache-dependency-path: | **/go.sum **/go.mod diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/Makefile new/timoni-0.12.1/Makefile --- old/timoni-0.11.1/Makefile 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/Makefile 2023-09-03 17:42:09.000000000 +0200 @@ -42,7 +42,7 @@ ./bin/timoni mod lint ./internal/engine/testdata/module cue fmt ./internal/engine/testdata/module-values -MINIMAL_VER ?= "0.0.1" +MINIMAL_VER ?= "0.1.0" push-minimal: build ./bin/timoni mod push ./examples/minimal oci://ghcr.io/stefanprodan/timoni/minimal -v $(MINIMAL_VER) --latest \ --source https://github.com/stefanprodan/timoni/tree/main/examples/minimal \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/api/v1alpha1/actions.go new/timoni-0.12.1/api/v1alpha1/actions.go --- old/timoni-0.11.1/api/v1alpha1/actions.go 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/api/v1alpha1/actions.go 2023-09-03 17:42:09.000000000 +0200 @@ -29,4 +29,8 @@ // ForceAction is the annotation that defines if a Kubernetes resource should be recreated. ForceAction = fmt.Sprintf("action.%s/force", GroupVersion.Group) + + // IfNotPresentAction is the annotation that defines if a Kubernetes resource + // should be applied only if it doesn't exist on the cluster. + IfNotPresentAction = fmt.Sprintf("action.%s/one-off", GroupVersion.Group) ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/apply.go new/timoni-0.12.1/cmd/timoni/apply.go --- old/timoni-0.11.1/cmd/timoni/apply.go 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/cmd/timoni/apply.go 2023-09-03 17:42:09.000000000 +0200 @@ -206,6 +206,13 @@ } } + kubeVersion, err := runtime.ServerVersion(kubeconfigArgs) + if err != nil { + return err + } + + builder.SetVersionInfo(mod.Version, kubeVersion) + buildResult, err := builder.Build() if err != nil { return describeErr(fetcher.GetModuleRoot(), "failed to build instance", err) @@ -288,8 +295,10 @@ } applyOpts := runtime.ApplyOptions(applyArgs.force, rootArgs.timeout) + applyOpts.WaitInterval = 5 * time.Second + waitOptions := ssa.WaitOptions{ - Interval: 5 * time.Second, + Interval: applyOpts.WaitInterval, Timeout: rootArgs.timeout, FailFast: true, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/apply_test.go new/timoni-0.12.1/cmd/timoni/apply_test.go --- old/timoni-0.11.1/cmd/timoni/apply_test.go 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/cmd/timoni/apply_test.go 2023-09-03 17:42:09.000000000 +0200 @@ -25,11 +25,12 @@ "testing" . "github.com/onsi/gomega" - apiv1 "github.com/stefanprodan/timoni/api/v1alpha1" corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" + + apiv1 "github.com/stefanprodan/timoni/api/v1alpha1" ) func TestApply(t *testing.T) { @@ -41,7 +42,7 @@ t.Run("creates instance with default values", func(t *testing.T) { g := NewWithT(t) output, err := executeCommand(fmt.Sprintf( - "apply -n %s %s %s -p main --wait", + "apply -n %s %s %s -p main --wait --timeout=10s", namespace, name, modPath, @@ -61,6 +62,8 @@ g.Expect(clientCM.GetLabels()).To(HaveKeyWithValue(tGroup+"/name", name)) g.Expect(clientCM.GetLabels()).To(HaveKeyWithValue(tGroup+"/namespace", namespace)) + g.Expect(clientCM.GetLabels()).To(HaveKeyWithValue("app.kubernetes.io/version", "0.0.0-devel")) + g.Expect(clientCM.GetLabels()).To(HaveKey("app.kubernetes.io/kube")) }) t.Run("updates instance with custom values", func(t *testing.T) { @@ -313,3 +316,41 @@ g.Expect(err).ToNot(HaveOccurred()) }) } + +func TestApply_GlobalResources(t *testing.T) { + modPath := "testdata/module" + name := rnd("my-instance", 5) + namespace := rnd("my-namespace", 5) + nsObj := &corev1.Namespace{ + ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("%s-ns", name), + }, + } + + t.Run("creates instance with global objects", func(t *testing.T) { + g := NewWithT(t) + output, err := executeCommandWithIn(fmt.Sprintf( + "apply -n %s %s %s -f- -p main --wait --timeout=10s", + namespace, + name, + modPath, + ), strings.NewReader("values: ns: enabled: true")) + g.Expect(err).ToNot(HaveOccurred()) + t.Log("\n", output) + + ns := nsObj.DeepCopy() + err = envTestClient.Get(context.Background(), client.ObjectKeyFromObject(ns), ns) + g.Expect(err).ToNot(HaveOccurred()) + }) + + t.Run("uninstalls instance", func(t *testing.T) { + g := NewWithT(t) + output, err := executeCommand(fmt.Sprintf( + "delete -n %s %s --wait=false", + namespace, + name, + )) + g.Expect(err).ToNot(HaveOccurred()) + t.Log("\n", output) + }) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/bundle_apply.go new/timoni-0.12.1/cmd/timoni/bundle_apply.go --- old/timoni-0.11.1/cmd/timoni/bundle_apply.go 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/cmd/timoni/bundle_apply.go 2023-09-03 17:42:09.000000000 +0200 @@ -143,9 +143,14 @@ ctx, cancel := context.WithTimeout(cmd.Context(), rootArgs.timeout) defer cancel() + kubeVersion, err := runtime.ServerVersion(kubeconfigArgs) + if err != nil { + return err + } + for _, instance := range bundle.Instances { log.Info(fmt.Sprintf("applying instance %s", instance.Name)) - if err := applyBundleInstance(logr.NewContext(ctx, log), cuectx, instance); err != nil { + if err := applyBundleInstance(logr.NewContext(ctx, log), cuectx, instance, kubeVersion); err != nil { return err } } @@ -159,7 +164,7 @@ return nil } -func applyBundleInstance(ctx context.Context, cuectx *cue.Context, instance engine.BundleInstance) error { +func applyBundleInstance(ctx context.Context, cuectx *cue.Context, instance engine.BundleInstance, kubeVersion string) error { moduleVersion := instance.Module.Version sourceURL := fmt.Sprintf("%s:%s", instance.Module.Repository, instance.Module.Version) @@ -221,6 +226,8 @@ return err } + builder.SetVersionInfo(mod.Version, kubeVersion) + buildResult, err := builder.Build() if err != nil { return describeErr(fetcher.GetModuleRoot(), "failed to build instance", err) @@ -302,8 +309,10 @@ } applyOpts := runtime.ApplyOptions(bundleApplyArgs.force, rootArgs.timeout) + applyOpts.WaitInterval = 5 * time.Second + waitOptions := ssa.WaitOptions{ - Interval: 5 * time.Second, + Interval: applyOpts.WaitInterval, Timeout: rootArgs.timeout, FailFast: true, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/bundle_apply_test.go new/timoni-0.12.1/cmd/timoni/bundle_apply_test.go --- old/timoni-0.11.1/cmd/timoni/bundle_apply_test.go 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/cmd/timoni/bundle_apply_test.go 2023-09-03 17:42:09.000000000 +0200 @@ -109,6 +109,8 @@ err = envTestClient.Get(context.Background(), client.ObjectKeyFromObject(clientCM), clientCM) g.Expect(err).ToNot(HaveOccurred()) + g.Expect(clientCM.GetLabels()).To(HaveKeyWithValue("app.kubernetes.io/version", modVer)) + g.Expect(clientCM.GetLabels()).To(HaveKey("app.kubernetes.io/kube")) serverCM := &corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/main.go new/timoni-0.12.1/cmd/timoni/main.go --- old/timoni-0.11.1/cmd/timoni/main.go 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/cmd/timoni/main.go 2023-09-03 17:42:09.000000000 +0200 @@ -33,7 +33,7 @@ var ( VERSION = "0.0.0-dev.0" - CUE_VERSION = "0.5.0" + CUE_VERSION = "0.6.0" ) var rootCmd = &cobra.Command{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/testdata/module/templates/config.cue new/timoni-0.12.1/cmd/timoni/testdata/module/templates/config.cue --- old/timoni-0.11.1/cmd/timoni/testdata/module/templates/config.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/cmd/timoni/testdata/module/templates/config.cue 2023-09-03 17:42:09.000000000 +0200 @@ -4,13 +4,22 @@ metadata: { name: *"test" | string namespace: *"default" | string - labels: *{"app.kubernetes.io/name": metadata.name} | {[ string]: string} + labels: *{ + "app.kubernetes.io/name": metadata.name + "app.kubernetes.io/version": moduleVersion + "app.kubernetes.io/kube": kubeVersion + } | {[ string]: string} annotations?: {[ string]: string} } + moduleVersion: string + kubeVersion: string + client: enabled: *true | bool server: enabled: *true | bool domain: *"example.internal" | string + + ns: enabled: *false | bool } #Instance: { @@ -24,5 +33,9 @@ if config.server.enabled { "\(config.metadata.name)-server": #ServerConfig & {_config: config} } + + if config.ns.enabled { + "\(config.metadata.name)-ns": #Namespace & {_config: config} + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/testdata/module/templates/namespace.cue new/timoni-0.12.1/cmd/timoni/testdata/module/templates/namespace.cue --- old/timoni-0.11.1/cmd/timoni/testdata/module/templates/namespace.cue 1970-01-01 01:00:00.000000000 +0100 +++ new/timoni-0.12.1/cmd/timoni/testdata/module/templates/namespace.cue 2023-09-03 17:42:09.000000000 +0200 @@ -0,0 +1,14 @@ +package templates + +#Namespace: { + _config: #Config + apiVersion: "v1" + kind: "Namespace" + metadata: { + name: "\(_config.metadata.name)-ns" + labels: _config.metadata.labels + if _config.metadata.annotations != _|_ { + annotations: _config.metadata.annotations + } + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/testdata/module/timoni.cue new/timoni-0.12.1/cmd/timoni/testdata/module/timoni.cue --- old/timoni-0.11.1/cmd/timoni/testdata/module/timoni.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/cmd/timoni/testdata/module/timoni.cue 2023-09-03 17:42:09.000000000 +0200 @@ -31,6 +31,10 @@ name: string @tag(name) namespace: string @tag(namespace) } + config: { + moduleVersion: string @tag(mv, var=moduleVersion) + kubeVersion: string @tag(kv, var=kubeVersion) + } } // Pass Kubernetes resources outputted by the instance diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/docs/index.md new/timoni-0.12.1/docs/index.md --- old/timoni-0.11.1/docs/index.md 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/docs/index.md 2023-09-03 17:42:09.000000000 +0200 @@ -107,17 +107,10 @@ The apply command validates all resources with a dry-run apply, and reconciles only the ones with changes to the cluster state. -To recreate immutable resources such as Kubernetes Jobs, -these resources can be annotated with `action.timoni.sh/force: "enabled"`. - Timoni's garbage collector keeps track of the applied resources and prunes the Kubernetes objects that were previously applied but are missing from the current revision. -To prevent Timoni's garbage collector from deleting certain -resources such as Kubernetes Persistent Volumes, -these resources can be annotated with `action.timoni.sh/prune: "disabled"`. - After an installation or upgrade, Timoni waits for the applied resources to be fully reconciled by checking the ready status of deployments, jobs, services, ingresses, and Kubernetes custom resources. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/docs/module.md new/timoni-0.12.1/docs/module.md --- old/timoni-0.11.1/docs/module.md 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/docs/module.md 2023-09-03 17:42:09.000000000 +0200 @@ -228,6 +228,27 @@ } ``` +### Controlling the apply behaviour + +Timoni allows module authors to change the default apply behaviour of Kubernetes resources +using the following annotations: + +| Annotation | Values | +|----------------------------|----------------------| +| `action.timoni.sh/force` | `enabled`/`disabled` | +| `action.timoni.sh/one-off` | `enabled`/`disabled` | +| `action.timoni.sh/prune` | `enabled`/`disabled` | + +To recreate immutable resources such as Kubernetes Jobs, +these resources can be annotated with `action.timoni.sh/force: "enabled"`. + +To apply resources only if they don't exist on the cluster, +these resources can be annotated with `action.timoni.sh/one-off: "enabled"`. + +To prevent Timoni's garbage collector from deleting certain +resources such as Kubernetes Persistent Volumes, +these resources can be annotated with `action.timoni.sh/prune: "disabled"`. + ## Kubernetes types The `cue.mod` directory contains the Kubernetes types and their schema. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue new/timoni-0.12.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue --- old/timoni-0.11.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue 2023-09-03 17:42:09.000000000 +0200 @@ -1,11 +1,10 @@ - package v1alpha1 // Image defines the schema for an OCI image reference. #Image: { - repository: string - tag: string - digest: string + repository!: string + tag!: string + digest!: string // Reference is the image address computed from // repository, tag and digest. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/metadata.cue new/timoni-0.12.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/metadata.cue --- old/timoni-0.11.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/metadata.cue 1970-01-01 01:00:00.000000000 +0100 +++ new/timoni-0.12.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/metadata.cue 2023-09-03 17:42:09.000000000 +0200 @@ -0,0 +1,39 @@ +package v1alpha1 + +import "strings" + +// Metadata defines the schema for the Kubernetes object metadata. +#Metadata: { + // Name must be unique within a namespace. Is required when creating resources. + // Name is primarily intended for creation idempotence and configuration definition. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names + name!: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63) + + // Namespace defines the space within which each name must be unique. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces + namespace!: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63) + + // Version should be in the strict semver format. Is required when creating resources. + version!: string & strings.MaxRunes(63) + + // Annotations is an unstructured key value map stored with a resource that may be + // set o store and retrieve arbitrary metadata. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations + annotations?: {[string]: string} + + // Map of string keys and values that can be used to organize and categorize + // (scope and select) objects. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels + labels: {[string]: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63)} + + // Standard Kubernetes labels: app name and version. + labels: { + "app.kubernetes.io/name": name + "app.kubernetes.io/version": version + } + + // Labels used to select pods for Kubernetes Deployment, Service, Job, etc. + labelSelector: *{ + "app.kubernetes.io/name": name + } | {[ string]: string} +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/debug_tool.cue new/timoni-0.12.1/examples/minimal/debug_tool.cue --- old/timoni-0.11.1/examples/minimal/debug_tool.cue 1970-01-01 01:00:00.000000000 +0100 +++ new/timoni-0.12.1/examples/minimal/debug_tool.cue 2023-09-03 17:42:09.000000000 +0200 @@ -0,0 +1,33 @@ +package main + +import ( + "tool/cli" + "encoding/yaml" + "text/tabwriter" +) + +// The build command generates the Kubernetes manifests and prints the multi-docs YAML to stdout. +// Example 'cue cmd -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 build'. +command: build: { + task: print: cli.Print & { + text: yaml.MarshalStream(timoni.apply.all) + } +} + +// The ls command prints a table with the Kubernetes resources kind, namespace, name and version. +// Example 'cue cmd -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 ls'. +command: ls: { + task: print: cli.Print & { + text: tabwriter.Write([ + "RESOURCE \tAPI VERSION", + for r in timoni.apply.all { + if r.metadata.namespace == _|_ { + "\(r.kind)/\(r.metadata.name) \t\(r.apiVersion)" + } + if r.metadata.namespace != _|_ { + "\(r.kind)/\(r.metadata.namespace)/\(r.metadata.name) \t\(r.apiVersion)" + } + }, + ]) + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/templates/config.cue new/timoni-0.12.1/examples/minimal/templates/config.cue --- old/timoni-0.11.1/examples/minimal/templates/config.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/examples/minimal/templates/config.cue 2023-09-03 17:42:09.000000000 +0200 @@ -1,29 +1,25 @@ package templates import ( - "strings" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" corev1 "k8s.io/api/core/v1" timoniv1 "timoni.sh/core/v1alpha1" ) // Config defines the schema and defaults for the Instance values. #Config: { + // Runtime version info + moduleVersion: string + kubeVersion: string + // Metadata (common to all resources) - metadata: metav1.#ObjectMeta - metadata: name: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63) - metadata: namespace: string & strings.MaxRunes(63) - metadata: labels: *selectorLabels | {[ string]: string} - metadata: labels: "app.kubernetes.io/version": image.tag - metadata: annotations?: {[ string]: string} + metadata: timoniv1.#Metadata + metadata: version: moduleVersion // App settings message: string // Deployment - replicas: *1 | int & >0 - selectorLabels: *{"app.kubernetes.io/name": metadata.name} | {[ string]: string} + replicas: *1 | int & >0 // Pod podAnnotations?: {[ string]: string} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/templates/configmap.cue new/timoni-0.12.1/examples/minimal/templates/configmap.cue --- old/timoni-0.11.1/examples/minimal/templates/configmap.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/examples/minimal/templates/configmap.cue 2023-09-03 17:42:09.000000000 +0200 @@ -13,10 +13,12 @@ apiVersion: "v1" kind: "ConfigMap" metadata: { - name: "\(_config.metadata.name)-\(_checksum)" - namespace: _config.metadata.namespace - labels: _config.metadata.labels - annotations?: _config.metadata.annotations + name: "\(_config.metadata.name)-\(_checksum)" + namespace: _config.metadata.namespace + labels: _config.metadata.labels + if _config.metadata.annotations != _|_ { + annotations: _config.metadata.annotations + } } immutable: true let _checksum = strings.Split(uuid.SHA1(uuid.ns.DNS, yaml.Marshal(data)), "-")[0] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/templates/deployment.cue new/timoni-0.12.1/examples/minimal/templates/deployment.cue --- old/timoni-0.11.1/examples/minimal/templates/deployment.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/examples/minimal/templates/deployment.cue 2023-09-03 17:42:09.000000000 +0200 @@ -10,13 +10,20 @@ _cmName: string apiVersion: "apps/v1" kind: "Deployment" - metadata: _config.metadata - spec: appsv1.#DeploymentSpec & { + metadata: { + name: _config.metadata.name + namespace: _config.metadata.namespace + labels: _config.metadata.labels + if _config.metadata.annotations != _|_ { + annotations: _config.metadata.annotations + } + } + spec: appsv1.#DeploymentSpec & { replicas: _config.replicas - selector: matchLabels: _config.selectorLabels + selector: matchLabels: _config.metadata.labelSelector template: { metadata: { - labels: _config.selectorLabels + labels: _config.metadata.labelSelector if _config.podAnnotations != _|_ { annotations: _config.podAnnotations } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/templates/service.cue new/timoni-0.12.1/examples/minimal/templates/service.cue --- old/timoni-0.11.1/examples/minimal/templates/service.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/examples/minimal/templates/service.cue 2023-09-03 17:42:09.000000000 +0200 @@ -8,10 +8,17 @@ _config: #Config apiVersion: "v1" kind: "Service" - metadata: _config.metadata - spec: corev1.#ServiceSpec & { + metadata: { + name: _config.metadata.name + namespace: _config.metadata.namespace + labels: _config.metadata.labels + if _config.metadata.annotations != _|_ { + annotations: _config.metadata.annotations + } + } + spec: corev1.#ServiceSpec & { type: corev1.#ServiceTypeClusterIP - selector: _config.selectorLabels + selector: _config.metadata.labelSelector ports: [ { name: "http" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/templates/serviceaccount.cue new/timoni-0.12.1/examples/minimal/templates/serviceaccount.cue --- old/timoni-0.11.1/examples/minimal/templates/serviceaccount.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/examples/minimal/templates/serviceaccount.cue 2023-09-03 17:42:09.000000000 +0200 @@ -8,5 +8,12 @@ _config: #Config apiVersion: "v1" kind: "ServiceAccount" - metadata: _config.metadata + metadata: { + name: _config.metadata.name + namespace: _config.metadata.namespace + labels: _config.metadata.labels + if _config.metadata.annotations != _|_ { + annotations: _config.metadata.annotations + } + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/timoni.cue new/timoni-0.12.1/examples/minimal/timoni.cue --- old/timoni-0.11.1/examples/minimal/timoni.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/examples/minimal/timoni.cue 2023-09-03 17:42:09.000000000 +0200 @@ -31,6 +31,11 @@ name: string @tag(name) namespace: string @tag(namespace) } + // Optional runtime version info. + config: { + moduleVersion: string @tag(mv, var=moduleVersion) + kubeVersion: string @tag(kv, var=kubeVersion) + } } // Pass Kubernetes resources outputted by the instance diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/podinfo/templates/config.cue new/timoni-0.12.1/examples/podinfo/templates/config.cue --- old/timoni-0.11.1/examples/podinfo/templates/config.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/examples/podinfo/templates/config.cue 2023-09-03 17:42:09.000000000 +0200 @@ -35,7 +35,7 @@ // Container image: { repository: *"ghcr.io/stefanprodan/podinfo" | string - tag: *"6.3.6" | string + tag: *"6.4.1" | string digest?: string pullPolicy: *"IfNotPresent" | string } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/examples/redis/templates/config.cue new/timoni-0.12.1/examples/redis/templates/config.cue --- old/timoni-0.11.1/examples/redis/templates/config.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/examples/redis/templates/config.cue 2023-09-03 17:42:09.000000000 +0200 @@ -32,8 +32,8 @@ // Container image image: { repository: *"cgr.dev/chainguard/redis" | string - tag: *"7.0.12" | string - digest: *"sha256:9cdc90a57fa0cc23dce9a934313cc5412a3b8415a60e79797ee9cb4ca04a3968" | string + tag: *"7.2.0" | string + digest: *"sha256:0c19ce07fa6952f872b15d5da4cb0681402775ad8f159cfcfb0c10b6e8c8bd37" | string pullPolicy: *"IfNotPresent" | string } imagePullSecrets?: [...corev1.LocalObjectReference] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/go.mod new/timoni-0.12.1/go.mod --- old/timoni-0.11.1/go.mod 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/go.mod 2023-09-03 17:42:09.000000000 +0200 @@ -3,18 +3,18 @@ go 1.20 require ( - cuelang.org/go v0.5.0 + cuelang.org/go v0.6.0 github.com/Masterminds/semver/v3 v3.2.1 github.com/briandowns/spinner v1.23.0 - github.com/distribution/distribution/v3 v3.0.0-20230722181636-7b502560cad4 + github.com/distribution/distribution/v3 v3.0.0-20230824182353-293b588075cb github.com/fatih/color v1.15.0 - github.com/fluxcd/pkg/oci v0.30.0 - github.com/fluxcd/pkg/sourceignore v0.3.4 - github.com/fluxcd/pkg/ssa v0.29.0 + github.com/fluxcd/pkg/oci v0.31.0 + github.com/fluxcd/pkg/sourceignore v0.3.5 + github.com/fluxcd/pkg/ssa v0.32.0 github.com/go-logr/logr v1.2.4 github.com/go-logr/zerologr v1.2.3 github.com/gonvenience/ytbx v1.4.4 - github.com/google/go-containerregistry v0.15.2 + github.com/google/go-containerregistry v0.16.1 github.com/homeport/dyff v1.5.8 github.com/mattn/go-shellwords v1.0.12 github.com/olekukonko/tablewriter v0.0.5 @@ -30,48 +30,44 @@ k8s.io/cli-runtime v0.27.4 k8s.io/client-go v0.27.4 sigs.k8s.io/cli-utils v0.35.0 - sigs.k8s.io/controller-runtime v0.15.0 + sigs.k8s.io/controller-runtime v0.15.1 sigs.k8s.io/yaml v1.3.0 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect github.com/BurntSushi/toml v1.3.2 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect - github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d // indirect github.com/acomagu/bufpipe v1.0.4 // indirect - github.com/aws/aws-sdk-go-v2 v1.18.1 // indirect - github.com/aws/aws-sdk-go-v2/config v1.18.27 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.13.26 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35 // indirect - github.com/aws/aws-sdk-go-v2/service/ecr v1.18.13 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.12.12 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.19.2 // indirect - github.com/aws/smithy-go v1.13.5 // indirect + github.com/aws/aws-sdk-go-v2 v1.21.0 // indirect + github.com/aws/aws-sdk-go-v2/config v1.18.36 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.13.35 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.3.42 // indirect + github.com/aws/aws-sdk-go-v2/service/ecr v1.19.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.13.5 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 // indirect + github.com/aws/smithy-go v1.14.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bshuster-repo/logrus-logstash-hook v1.0.0 // indirect - github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd // indirect - github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b // indirect - github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect - github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/cockroachdb/apd/v3 v3.2.0 // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/cyphar/filepath-securejoin v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/docker/cli v23.0.5+incompatible // indirect + github.com/docker/cli v24.0.0+incompatible // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v23.0.5+incompatible // indirect + github.com/docker/docker v24.0.0+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect github.com/docker/go-metrics v0.0.1 // indirect @@ -88,13 +84,12 @@ github.com/go-errors/errors v1.4.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect - github.com/go-git/go-git/v5 v5.7.0 // indirect + github.com/go-git/go-git/v5 v5.8.1 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.1 // indirect github.com/go-openapi/swag v0.22.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/golang/glog v1.0.0 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/gomodule/redigo v1.8.2 // indirect @@ -112,7 +107,8 @@ github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect github.com/imdario/mergo v0.3.15 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect @@ -149,7 +145,7 @@ github.com/prometheus/client_model v0.4.0 // indirect github.com/prometheus/common v0.42.0 // indirect github.com/prometheus/procfs v0.9.0 // indirect - github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b // indirect + github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sergi/go-diff v1.3.1 // indirect @@ -158,19 +154,17 @@ github.com/vbatts/tar-split v0.11.3 // indirect github.com/virtuald/go-ordered-json v0.0.0-20170621173500-b18e6e673d74 // indirect github.com/xlab/treeprint v1.1.0 // indirect - github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 // indirect - github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 // indirect - github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f // indirect go.starlark.net v0.0.0-20221028183056-acb66ad56dd2 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.11.0 // indirect - golang.org/x/net v0.12.0 // indirect - golang.org/x/oauth2 v0.7.0 // indirect + golang.org/x/crypto v0.12.0 // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/oauth2 v0.8.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.10.0 // indirect - golang.org/x/term v0.10.0 // indirect - golang.org/x/text v0.11.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/term v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect golang.org/x/time v0.3.0 // indirect gomodules.xyz/jsonpatch/v2 v2.3.0 // indirect google.golang.org/appengine v1.6.7 // indirect @@ -187,5 +181,5 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/kustomize/api v0.13.2 // indirect sigs.k8s.io/kustomize/kyaml v0.14.1 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/go.sum new/timoni-0.12.1/go.sum --- old/timoni-0.11.1/go.sum 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/go.sum 2023-09-03 17:42:09.000000000 +0200 @@ -1,17 +1,17 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cuelang.org/go v0.5.0 h1:D6N0UgTGJCOxFKU8RU+qYvavKNsVc/+ZobmifStVJzU= -cuelang.org/go v0.5.0/go.mod h1:okjJBHFQFer+a41sAe2SaGm1glWS8oEb6CmJvn5Zdws= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1 h1:SEy2xmstIphdPwNBUi7uhvjyjhVKISfwjfOJmuy7kg4= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= +cuelang.org/go v0.6.0 h1:dJhgKCog+FEZt7OwAYV1R+o/RZPmE8aqFoptmxSWyr8= +cuelang.org/go v0.6.0/go.mod h1:9CxOX8aawrr3BgSdqPj7V0RYoXo7XIb+yDFC6uESrOQ= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1 h1:/iHxaJhsFr0+xVFfbMr5vxz848jyiWuIEDhYq3y5odY= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1 h1:LNHhpdK7hzUcx/k1LIcuh5k7k1LGIWLQfCjaneSj7Fc= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1/go.mod h1:uE9zaUfEQT/nbQjVi2IblCG9iaLtZsuYZ8ne+PuQ02M= github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY= -github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= @@ -21,56 +21,47 @@ github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/aws/aws-sdk-go-v2 v1.18.1 h1:+tefE750oAb7ZQGzla6bLkOwfcQCEtC5y2RqoqCeqKo= -github.com/aws/aws-sdk-go-v2 v1.18.1/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= -github.com/aws/aws-sdk-go-v2/config v1.18.27 h1:Az9uLwmssTE6OGTpsFqOnaGpLnKDqNYOJzWuC6UAYzA= -github.com/aws/aws-sdk-go-v2/config v1.18.27/go.mod h1:0My+YgmkGxeqjXZb5BYme5pc4drjTnM+x1GJ3zv42Nw= -github.com/aws/aws-sdk-go-v2/credentials v1.13.26 h1:qmU+yhKmOCyujmuPY7tf5MxR/RKyZrOPO3V4DobiTUk= -github.com/aws/aws-sdk-go-v2/credentials v1.13.26/go.mod h1:GoXt2YC8jHUBbA4jr+W3JiemnIbkXOfxSXcisUsZ3os= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4 h1:LxK/bitrAr4lnh9LnIS6i7zWbCOdMsfzKFBI6LUCS0I= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4/go.mod h1:E1hLXN/BL2e6YizK1zFlYd8vsfi2GTjbjBazinMmeaM= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34 h1:A5UqQEmPaCFpedKouS4v+dHCTUo2sKqhoKO9U5kxyWo= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34/go.mod h1:wZpTEecJe0Btj3IYnDx/VlUzor9wm3fJHyvLpQF0VwY= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28 h1:srIVS45eQuewqz6fKKu6ZGXaq6FuFg5NzgQBAM6g8Y4= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28/go.mod h1:7VRpKQQedkfIEXb4k52I7swUnZP0wohVajJMRn3vsUw= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35 h1:LWA+3kDM8ly001vJ1X1waCuLJdtTl48gwkPKWy9sosI= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35/go.mod h1:0Eg1YjxE0Bhn56lx+SHJwCzhW+2JGtizsrx+lCqrfm0= -github.com/aws/aws-sdk-go-v2/service/ecr v1.18.13 h1:hF7MUVNjubetjggZDtn3AmqCJzD7EUi//tSdxMYPm7U= -github.com/aws/aws-sdk-go-v2/service/ecr v1.18.13/go.mod h1:XwEFO35g0uN/SftK0asWxh8Rk6DOx37R83TmWe2tzEE= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28 h1:bkRyG4a929RCnpVSTvLM2j/T4ls015ZhhYApbmYs15s= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28/go.mod h1:jj7znCIg05jXlaGBlFMGP8+7UN3VtCkRBG2spnmRQkU= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.12 h1:nneMBM2p79PGWBQovYO/6Xnc2ryRMw3InnDJq1FHkSY= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.12/go.mod h1:HuCOxYsF21eKrerARYO6HapNeh9GBNq7fius2AcwodY= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12 h1:2qTR7IFk7/0IN/adSFhYu9Xthr0zVFTgBrmPldILn80= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12/go.mod h1:E4VrHCPzmVB/KFXtqBGKb3c8zpbNBgKe3fisDNLAW5w= -github.com/aws/aws-sdk-go-v2/service/sts v1.19.2 h1:XFJ2Z6sNUUcAz9poj+245DMkrHE4h2j5I9/xD50RHfE= -github.com/aws/aws-sdk-go-v2/service/sts v1.19.2/go.mod h1:dp0yLPsLBOi++WTxzCjA/oZqi6NPIhoR+uF7GeMU9eg= -github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= -github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/aws/aws-sdk-go-v2 v1.21.0 h1:gMT0IW+03wtYJhRqTVYn0wLzwdnK9sRMcxmtfGzRdJc= +github.com/aws/aws-sdk-go-v2 v1.21.0/go.mod h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M= +github.com/aws/aws-sdk-go-v2/config v1.18.36 h1:mLNA12PWU1Y+ueOO79QgQfKIPhc1MYKl44RmvASkJ7Q= +github.com/aws/aws-sdk-go-v2/config v1.18.36/go.mod h1:8AnEFxW9/XGKCbjYDCJy7iltVNyEI9Iu9qC21UzhhgQ= +github.com/aws/aws-sdk-go-v2/credentials v1.13.35 h1:QpsNitYJu0GgvMBLUIYu9H4yryA5kMksjeIVQfgXrt8= +github.com/aws/aws-sdk-go-v2/credentials v1.13.35/go.mod h1:o7rCaLtvK0hUggAGclf76mNGGkaG5a9KWlp+d9IpcV8= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11 h1:uDZJF1hu0EVT/4bogChk8DyjSF6fof6uL/0Y26Ma7Fg= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11/go.mod h1:TEPP4tENqBGO99KwVpV9MlOX4NSrSLP8u3KRy2CDwA8= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41 h1:22dGT7PneFMx4+b3pz7lMTRyN8ZKH7M2cW4GP9yUS2g= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41/go.mod h1:CrObHAuPneJBlfEJ5T3szXOUkLEThaGfvnhTf33buas= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35 h1:SijA0mgjV8E+8G45ltVHs0fvKpTj8xmZJ3VwhGKtUSI= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35/go.mod h1:SJC1nEVVva1g3pHAIdCp7QsRIkMmLAgoDquQ9Rr8kYw= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.42 h1:GPUcE/Yq7Ur8YSUk6lVkoIMWnJNO0HT18GUzCWCgCI0= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.42/go.mod h1:rzfdUlfA+jdgLDmPKjd3Chq9V7LVLYo1Nz++Wb91aRo= +github.com/aws/aws-sdk-go-v2/service/ecr v1.19.5 h1:hg2/a7rE9dwYr+/DPNzHQ+IsHXLNt1NsQVUecBtA8os= +github.com/aws/aws-sdk-go-v2/service/ecr v1.19.5/go.mod h1:pGwmNL8hN0jpBfKfTbmu+Rl0bJkDhaGl+9PQLrZ4KLo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35 h1:CdzPW9kKitgIiLV1+MHobfR5Xg25iYnyzWZhyQuSlDI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35/go.mod h1:QGF2Rs33W5MaN9gYdEQOBBFPLwTZkEhRwI33f7KIG0o= +github.com/aws/aws-sdk-go-v2/service/sso v1.13.5 h1:oCvTFSDi67AX0pOX3PuPdGFewvLRU2zzFSrTsgURNo0= +github.com/aws/aws-sdk-go-v2/service/sso v1.13.5/go.mod h1:fIAwKQKBFu90pBxx07BFOMJLpRUGu8VOzLJakeY+0K4= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5 h1:dnInJb4S0oy8aQuri1mV6ipLlnZPfnsDNB9BGO9PDNY= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5/go.mod h1:yygr8ACQRY2PrEcy3xsUI357stq2AxnFM6DIsR9lij4= +github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 h1:CQBFElb0LS8RojMJlxRSo/HXipvTZW2S44Lt9Mk2aYQ= +github.com/aws/aws-sdk-go-v2/service/sts v1.21.5/go.mod h1:VC7JDqsqiwXukYEDjoHh9U0fOJtNWh04FPQz4ct4GGU= +github.com/aws/smithy-go v1.14.2 h1:MJU9hqBGbvWZdApzpvoF2WAIJDbtjK2NDJSiJP7HblQ= +github.com/aws/smithy-go v1.14.2/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= @@ -84,8 +75,8 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= -github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/apd/v3 v3.2.0 h1:79kHCn4tO0VGu3W0WujYrMjBDk8a2H4KEUYcXf7whcg= +github.com/cockroachdb/apd/v3 v3.2.0/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc= github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k= github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -98,15 +89,15 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/distribution/distribution/v3 v3.0.0-20230722181636-7b502560cad4 h1:DstcWc/NnRAc1hkOJm67dl4dgeQm/Gvl965lfZyOgRI= -github.com/distribution/distribution/v3 v3.0.0-20230722181636-7b502560cad4/go.mod h1:+fqBJ4vPYo4Uu1ZE4d+bUtTLRXfdSL3NvCZIZ9GHv58= +github.com/distribution/distribution/v3 v3.0.0-20230824182353-293b588075cb h1:ocxWObSQfbsmMkyEcE/tphHQU4D7yGQz5xR6AIZ16Tc= +github.com/distribution/distribution/v3 v3.0.0-20230824182353-293b588075cb/go.mod h1:WREzLx07iIFUGvbm6tBoqGt40zOC3whiM1qkcWOMFrs= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/docker/cli v23.0.5+incompatible h1:ufWmAOuD3Vmr7JP2G5K3cyuNC4YZWiAsuDEvFVVDafE= -github.com/docker/cli v23.0.5+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v24.0.0+incompatible h1:0+1VshNwBQzQAx9lOl+OYCTCEAD8fKs/qeXMx3O0wqM= +github.com/docker/cli v24.0.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v23.0.5+incompatible h1:DaxtlTJjFSnLOXVNUBU1+6kXGz2lpDoEAH6QoxaSg8k= -github.com/docker/docker v23.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.0+incompatible h1:z4bf8HvONXX9Tde5lGBMQ7yCJgNahmJumdrStZAbeY4= +github.com/docker/docker v24.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= @@ -138,12 +129,12 @@ github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/fluxcd/pkg/oci v0.30.0 h1:OabFWac1B6ye2aHSySwsqgiY4ud5DCHxdI9UXS686mM= -github.com/fluxcd/pkg/oci v0.30.0/go.mod h1:x91ESIQjUimZSElpJTVRx3yPFBmimvulni9iBsCwXlw= -github.com/fluxcd/pkg/sourceignore v0.3.4 h1:0cfS2Pj7xp2qpaerMjYqOBr82LC+/mGHl6v6pRbi5hs= -github.com/fluxcd/pkg/sourceignore v0.3.4/go.mod h1:ejLx+/uIrPUgqVzMTR5JiWuUnzs+zTkoEf9gS92LqaE= -github.com/fluxcd/pkg/ssa v0.29.0 h1:s2M6507YlYRLsPuXuGhXez/EqA5LFLhI13TZe31sm10= -github.com/fluxcd/pkg/ssa v0.29.0/go.mod h1:wvmBGQC47669GqhOvi0Ec0HTMziqMSNkPIsyIPBtGTQ= +github.com/fluxcd/pkg/oci v0.31.0 h1:Zpp65vcFJKRfeltuswKztJh2OrB86X3VrA1LU/VjspQ= +github.com/fluxcd/pkg/oci v0.31.0/go.mod h1:UL7nzm7p3fk5X0ZTsHl3qBhRy/NtuGqFSangXvPKUNw= +github.com/fluxcd/pkg/sourceignore v0.3.5 h1:omcHTH5X5tlPr9w1b9T7WuJTOP+o/KdVdarYb4kgkCU= +github.com/fluxcd/pkg/sourceignore v0.3.5/go.mod h1:6Xz3jErz8RsidsdrjUBBUGKes24rbdp/F38MnTGibEw= +github.com/fluxcd/pkg/ssa v0.32.0 h1:RBqs9DNrbJkFHjpfsiKilyean7gwqWFspSBTLOaBIHs= +github.com/fluxcd/pkg/ssa v0.32.0/go.mod h1:+Kf5euYAbvgJX645bo+IL7V/NlH0X7kGgFTr1W++I3c= github.com/fluxcd/pkg/tar v0.2.0 h1:HEUHgONQYsJGeZZ4x6h5nQU9Aox1I4T3bOp1faWTqf8= github.com/fluxcd/pkg/tar v0.2.0/go.mod h1:w0/TOC7kwBJhnSJn7TCABkc/I7ib1f2Yz6vOsbLBnhw= github.com/fluxcd/pkg/version v0.2.2 h1:ZpVXECeLA5hIQMft11iLp6gN3cKcz6UNuVTQPw/bRdI= @@ -157,8 +148,8 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= -github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= -github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= +github.com/go-git/go-git/v5 v5.8.1 h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A= +github.com/go-git/go-git/v5 v5.8.1/go.mod h1:FHFuoD6yGz5OSKEBK+aWN9Oah0q54Jxl0abmj6GnqAo= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= @@ -174,17 +165,16 @@ github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-quicktest/qt v1.100.0 h1:I7iSLgIwNp0E0UnSvKJzs7ig0jg/Iq83zsZjtQNW7jY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -229,12 +219,11 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.15.2 h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6VUEAZgy3a+TQE= -github.com/google/go-containerregistry v0.15.2/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q= +github.com/google/go-containerregistry v0.16.1 h1:rUEt426sR6nyrL3gt+18ibRcvYpKYdpsa5ZW7MA08dQ= +github.com/google/go-containerregistry v0.16.1/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -252,8 +241,10 @@ github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/arc/v2 v2.0.5 h1:l2zaLDubNhW4XO3LnliVj0GXO3+/CGNJAg1dcN2Fpfw= +github.com/hashicorp/golang-lru/arc/v2 v2.0.5/go.mod h1:ny6zBSQZi2JxIeYcv7kt2sH2PXJtirBN7RDhRpxPkxU= +github.com/hashicorp/golang-lru/v2 v2.0.5 h1:wW7h1TG88eUIJ2i69gaE3uNVtEPIagzhGvHgwfx2Vm4= +github.com/hashicorp/golang-lru/v2 v2.0.5/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/homeport/dyff v1.5.8 h1:CZvnYFh6Pr/c+d32EnWODAHRTctrDKkz0tFr6yTYCpU= github.com/homeport/dyff v1.5.8/go.mod h1:S669ekLW2ttUp6lT1d0jIlmH+eAsP3psfl9K6oMIBeU= github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= @@ -290,7 +281,7 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= @@ -324,7 +315,6 @@ github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/hashstructure v1.1.0 h1:P6P1hdjqAAknpY/M1CGipelZgp+4y9ja9kmUZPXP+H0= github.com/mitchellh/hashstructure v1.1.0/go.mod h1:xUDAozZz0Wmdiufv0uyhnHkUTN6/6d8ulp4AwfLKrmA= -github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f h1:2+myh5ml7lgEU/51gbeLHfKGNfgEQQIWrlbdaOsidbQ= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= @@ -389,8 +379,8 @@ github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= -github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b h1:zd/2RNzIRkoGGMjE+YIsZ85CnDIz672JK2F3Zl4vux4= -github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b/go.mod h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78= +github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0 h1:sadMIsgmHpEOGbUs6VtHBXRR1OHevnj7hLx9ZcdNGW4= +github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= @@ -441,12 +431,6 @@ github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.starlark.net v0.0.0-20221028183056-acb66ad56dd2 h1:5/KzhcSqd4UgY51l17r7C5g/JiE6DRw1Vq7VJfQHuMc= go.starlark.net v0.0.0-20221028183056-acb66ad56dd2/go.mod h1:kIVgS18CjmEC3PqMd5kaJSGEifyV/CeB9x506ZJ1Vbk= @@ -461,14 +445,16 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= 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.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -484,12 +470,12 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -521,19 +507,19 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -628,15 +614,15 @@ k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= sigs.k8s.io/cli-utils v0.35.0 h1:dfSJaF1W0frW74PtjwiyoB4cwdRygbHnC7qe7HF0g/Y= sigs.k8s.io/cli-utils v0.35.0/go.mod h1:ITitykCJxP1vaj1Cew/FZEaVJ2YsTN9Q71m02jebkoE= -sigs.k8s.io/controller-runtime v0.15.0 h1:ML+5Adt3qZnMSYxZ7gAverBLNPSMQEibtzAgp0UPojU= -sigs.k8s.io/controller-runtime v0.15.0/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= +sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUTb/+4c= +sigs.k8s.io/controller-runtime v0.15.1/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= 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/kustomize/api v0.13.2 h1:kejWfLeJhUsTGioDoFNJET5LQe/ajzXhJGYoU+pJsiA= sigs.k8s.io/kustomize/api v0.13.2/go.mod h1:DUp325VVMFVcQSq+ZxyDisA8wtldwHxLZbr1g94UHsw= sigs.k8s.io/kustomize/kyaml v0.14.1 h1:c8iibius7l24G2wVAGZn/Va2wNys03GXLjYVIcFVxKA= sigs.k8s.io/kustomize/kyaml v0.14.1/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= +sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/internal/engine/fetcher.go new/timoni-0.12.1/internal/engine/fetcher.go --- old/timoni-0.11.1/internal/engine/fetcher.go 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/internal/engine/fetcher.go 2023-09-03 17:42:09.000000000 +0200 @@ -76,7 +76,7 @@ mr := apiv1.ModuleReference{ Repository: f.src, - Version: "devel", + Version: defaultDevelVersion, Digest: "unknown", } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/internal/engine/module_builder.go new/timoni-0.12.1/internal/engine/module_builder.go --- old/timoni-0.11.1/internal/engine/module_builder.go 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/internal/engine/module_builder.go 2023-09-03 17:42:09.000000000 +0200 @@ -22,6 +22,7 @@ "path/filepath" "cuelang.org/go/cue" + "cuelang.org/go/cue/ast" "cuelang.org/go/cue/cuecontext" "cuelang.org/go/cue/load" @@ -29,19 +30,22 @@ ) const ( - defaultPackage = "main" - defaultValuesFile = "values.cue" - defaultSchemaFile = "timoni.schema.cue" + defaultPackage = "main" + defaultValuesFile = "values.cue" + defaultSchemaFile = "timoni.schema.cue" + defaultDevelVersion = "0.0.0-devel" ) // ModuleBuilder compiles CUE definitions to Kubernetes objects. type ModuleBuilder struct { - ctx *cue.Context - moduleRoot string - pkgName string - pkgPath string - name string - namespace string + ctx *cue.Context + moduleRoot string + pkgName string + pkgPath string + name string + namespace string + moduleVersion string + kubeVersion string } // NewModuleBuilder creates a ModuleBuilder for the given module and package. @@ -50,12 +54,14 @@ ctx = cuecontext.New() } b := &ModuleBuilder{ - ctx: ctx, - moduleRoot: moduleRoot, - pkgName: pkgName, - pkgPath: moduleRoot, - name: name, - namespace: namespace, + ctx: ctx, + moduleRoot: moduleRoot, + pkgName: pkgName, + pkgPath: moduleRoot, + name: name, + namespace: namespace, + moduleVersion: defaultDevelVersion, + kubeVersion: defaultDevelVersion, } if pkgName != defaultPackage { b.pkgPath = filepath.Join(moduleRoot, pkgName) @@ -116,6 +122,18 @@ return os.WriteFile(filepath.Join(b.pkgPath, defaultSchemaFile), []byte(cueGen), 0644) } +// SetVersionInfo allows setting the Timoni module version and Kubernetes version, +// which are injected at build time as optional CUE tags. +func (b *ModuleBuilder) SetVersionInfo(moduleVersion, kubeVersion string) { + if moduleVersion != "" { + b.moduleVersion = moduleVersion + } + + if kubeVersion != "" { + b.kubeVersion = kubeVersion + } +} + // Build builds a CUE instances for the specified package and returns the CUE value. func (b *ModuleBuilder) Build() (cue.Value, error) { var value cue.Value @@ -128,7 +146,18 @@ "name=" + b.name, "namespace=" + b.namespace, }, - TagVars: map[string]load.TagVar{}, + TagVars: map[string]load.TagVar{ + "moduleVersion": { + Func: func() (ast.Expr, error) { + return ast.NewString(b.moduleVersion), nil + }, + }, + "kubeVersion": { + Func: func() (ast.Expr, error) { + return ast.NewString(b.kubeVersion), nil + }, + }, + }, } ix := load.Instances([]string{}, cfg) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/internal/engine/module_builder_test.go new/timoni-0.12.1/internal/engine/module_builder_test.go --- old/timoni-0.11.1/internal/engine/module_builder_test.go 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/internal/engine/module_builder_test.go 2023-09-03 17:42:09.000000000 +0200 @@ -46,6 +46,8 @@ err = mb.MergeValuesFile([][]byte{mustReadFile(g, "testdata/module-values/overlay.cue")}) g.Expect(err).ToNot(HaveOccurred()) + mb.SetVersionInfo("", "1.25.3") + val, err := mb.Build() g.Expect(err).ToNot(HaveOccurred()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/internal/engine/testdata/module/templates/config.cue new/timoni-0.12.1/internal/engine/testdata/module/templates/config.cue --- old/timoni-0.11.1/internal/engine/testdata/module/templates/config.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/internal/engine/testdata/module/templates/config.cue 2023-09-03 17:42:09.000000000 +0200 @@ -5,7 +5,9 @@ name: *"test" | string namespace: *"default" | string } - hostname: *"default.internal" | string + hostname: *"default.internal" | string + moduleVersion: string + kubeVersion: string } #Instance: { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/internal/engine/testdata/module/templates/kube.cue new/timoni-0.12.1/internal/engine/testdata/module/templates/kube.cue --- old/timoni-0.11.1/internal/engine/testdata/module/templates/kube.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/internal/engine/testdata/module/templates/kube.cue 2023-09-03 17:42:09.000000000 +0200 @@ -1,11 +1,17 @@ package templates +import "strings" + #KubeConfig: { _config: #Config apiVersion: "v1" kind: "ConfigMap" metadata: _config.metadata data: { - url: "https://\(_config.hostname)" + url: "https://\(_config.hostname)" + moduleVersion: _config.moduleVersion + if strings.HasPrefix(_config.kubeVersion, "1.25") { + kubeVersion: _config.kubeVersion + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/internal/engine/testdata/module/timoni.cue new/timoni-0.12.1/internal/engine/testdata/module/timoni.cue --- old/timoni-0.11.1/internal/engine/testdata/module/timoni.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/internal/engine/testdata/module/timoni.cue 2023-09-03 17:42:09.000000000 +0200 @@ -31,6 +31,10 @@ name: string @tag(name) namespace: string @tag(namespace) } + config: { + moduleVersion: string @tag(mv, var=moduleVersion) + kubeVersion: string @tag(kv, var=kubeVersion) + } } // Pass Kubernetes resources outputted by the instance diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/internal/engine/testdata/module-golden/overlay.cue new/timoni-0.12.1/internal/engine/testdata/module-golden/overlay.cue --- old/timoni-0.11.1/internal/engine/testdata/module-golden/overlay.cue 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/internal/engine/testdata/module-golden/overlay.cue 2023-09-03 17:42:09.000000000 +0200 @@ -6,6 +6,8 @@ namespace: "test-namespace" } data: { - url: "https://test.internal" + url: "https://test.internal" + kubeVersion: "1.25.3" + moduleVersion: "0.0.0-devel" } }] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/internal/runtime/resources.go new/timoni-0.12.1/internal/runtime/resources.go --- old/timoni-0.11.1/internal/runtime/resources.go 2023-07-31 21:47:47.000000000 +0200 +++ new/timoni-0.12.1/internal/runtime/resources.go 2023-09-03 17:42:09.000000000 +0200 @@ -18,11 +18,12 @@ import ( "fmt" + "strings" + "time" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" - "strings" - "time" "github.com/fluxcd/pkg/ssa" corev1 "k8s.io/api/core/v1" @@ -64,7 +65,12 @@ kubePoller := polling.NewStatusPoller(kubeClient, restMapper, polling.Options{}) - return ssa.NewResourceManager(kubeClient, kubePoller, ownerRef), nil + man := ssa.NewResourceManager(kubeClient, kubePoller, ownerRef) + + // bump the server-side apply concurrency + man.SetConcurrency(4) + + return man, nil } // SelectObjectsFromSet returns a list of Kubernetes objects from the given changeset filtered by action. @@ -93,6 +99,9 @@ ForceSelector: map[string]string{ apiv1.ForceAction: apiv1.EnabledValue, }, + IfNotPresentSelector: map[string]string{ + apiv1.IfNotPresentAction: apiv1.EnabledValue, + }, WaitTimeout: wait, } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/timoni-0.11.1/internal/runtime/version.go new/timoni-0.12.1/internal/runtime/version.go --- old/timoni-0.11.1/internal/runtime/version.go 1970-01-01 01:00:00.000000000 +0100 +++ new/timoni-0.12.1/internal/runtime/version.go 2023-09-03 17:42:09.000000000 +0200 @@ -0,0 +1,53 @@ +/* +Copyright 2023 Stefan Prodan + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "time" + + "github.com/Masterminds/semver/v3" + "k8s.io/cli-runtime/pkg/genericclioptions" + "k8s.io/client-go/kubernetes" +) + +// ServerVersion retrieves and parses the Kubernetes server's version. +func ServerVersion(rcg genericclioptions.RESTClientGetter) (string, error) { + cfg, err := rcg.ToRESTConfig() + if err != nil { + return "", fmt.Errorf("loading kubeconfig failed: %w", err) + } + + cfg.Timeout = 5 * time.Second + + kubeClient, err := kubernetes.NewForConfig(cfg) + if err != nil { + return "", fmt.Errorf("initialising client failed: %w", err) + } + + serverVer, err := kubeClient.Discovery().ServerVersion() + if err != nil { + return "", fmt.Errorf("reading server version failed: %w", err) + } + + ver, err := semver.NewVersion(serverVer.GitVersion) + if err != nil { + return "", fmt.Errorf("parsing server version failed: %w", err) + } + + return ver.String(), nil +} ++++++ timoni.obsinfo ++++++ --- /var/tmp/diff_new_pack.XJ8vUP/_old 2023-09-06 19:01:48.339285137 +0200 +++ /var/tmp/diff_new_pack.XJ8vUP/_new 2023-09-06 19:01:48.343285281 +0200 @@ -1,5 +1,5 @@ name: timoni -version: 0.11.1 -mtime: 1690832867 -commit: 3e99a6045487156a2e235d525aa446f2b5b09789 +version: 0.12.1 +mtime: 1693755729 +commit: 51ff2903853bf29fbbbf487fe5a44e61d692034f ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/timoni/vendor.tar.gz /work/SRC/openSUSE:Factory/.timoni.new.1766/vendor.tar.gz differ: char 5, line 1