Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package nelm for openSUSE:Factory checked in 
at 2026-06-28 21:07:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nelm (Old)
 and      /work/SRC/openSUSE:Factory/.nelm.new.11887 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nelm"

Sun Jun 28 21:07:51 2026 rev:28 rq:1362083 version:1.24.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/nelm/nelm.changes        2026-06-23 
17:45:39.740330253 +0200
+++ /work/SRC/openSUSE:Factory/.nelm.new.11887/nelm.changes     2026-06-28 
21:09:00.291071219 +0200
@@ -1,0 +2,8 @@
+Sun Jun 28 06:13:18 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.24.1:
+  * Bug Fixes
+    - don't hard-fail on unsupported env vars (7bc4769)
+    - retry on webhooks unavailable error (#600) (ccde5a1)
+
+-------------------------------------------------------------------

Old:
----
  nelm-1.24.0.obscpio

New:
----
  nelm-1.24.1.obscpio

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

Other differences:
------------------
++++++ nelm.spec ++++++
--- /var/tmp/diff_new_pack.y0os5F/_old  2026-06-28 21:09:02.263137816 +0200
+++ /var/tmp/diff_new_pack.y0os5F/_new  2026-06-28 21:09:02.263137816 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           nelm
-Version:        1.24.0
+Version:        1.24.1
 Release:        0
 Summary:        Helm 3 alternative
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.y0os5F/_old  2026-06-28 21:09:02.367141329 +0200
+++ /var/tmp/diff_new_pack.y0os5F/_new  2026-06-28 21:09:02.371141464 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/werf/nelm</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v1.24.0</param>
+    <param name="revision">v1.24.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.y0os5F/_old  2026-06-28 21:09:02.387142004 +0200
+++ /var/tmp/diff_new_pack.y0os5F/_new  2026-06-28 21:09:02.391142139 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/werf/nelm</param>
-              <param 
name="changesrevision">d46813af382f8c1c7d3e653c44ab25e6fb481220</param></service></servicedata>
+              <param 
name="changesrevision">9366af9135202b7d705c71fef6c7dbe0231c0345</param></service></servicedata>
 (No newline at EOF)
 

++++++ nelm-1.24.0.obscpio -> nelm-1.24.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/.pp/.gitignore 
new/nelm-1.24.1/.pp/.gitignore
--- old/nelm-1.24.0/.pp/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/nelm-1.24.1/.pp/.gitignore      2026-05-12 15:56:02.000000000 +0200
@@ -0,0 +1,2 @@
+state/
+config.json
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/CHANGELOG.md new/nelm-1.24.1/CHANGELOG.md
--- old/nelm-1.24.0/CHANGELOG.md        2026-04-21 18:08:35.000000000 +0200
+++ new/nelm-1.24.1/CHANGELOG.md        2026-05-12 15:56:02.000000000 +0200
@@ -1,5 +1,13 @@
 # Changelog
 
+## [1.24.1](https://github.com/werf/nelm/compare/v1.24.0...v1.24.1) 
(2026-04-29)
+
+
+### Bug Fixes
+
+* don't hard-fail on unsupported env vars 
([7bc4769](https://github.com/werf/nelm/commit/7bc47694c107205e8519a82f21b65a4e88cc6e33))
+* retry on webhooks unavailable error 
([#600](https://github.com/werf/nelm/issues/600)) 
([ccde5a1](https://github.com/werf/nelm/commit/ccde5a15521e33010f4aebcc7059b7ca2c2dcc35))
+
 ## [1.24.0](https://github.com/werf/nelm/compare/v1.23.2...v1.24.0) 
(2026-04-21)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/README.md new/nelm-1.24.1/README.md
--- old/nelm-1.24.0/README.md   2026-04-21 18:08:35.000000000 +0200
+++ new/nelm-1.24.1/README.md   2026-05-12 15:56:02.000000000 +0200
@@ -5,7 +5,7 @@
 
 **Nelm** is a Helm 4 alternative. It is a Kubernetes deployment tool that 
manages Helm Charts and deploys them to Kubernetes. It is also the deployment 
engine of [werf](https://github.com/werf/werf). Nelm does everything that Helm 
does, but better, and even quite some on top of it. Nelm is based on an 
improved and partially rewritten Helm codebase, to introduce:
 
-* `terraform plan`-like capabilities;
+* `terraform plan`-like capabilities with two-stage deployment support;
 * improved CRD management;
 * out-of-the-box secrets management;
 * advanced resource ordering capabilities;
@@ -35,7 +35,7 @@
   - [Advanced resource lifecycle 
capabilities](#advanced-resource-lifecycle-capabilities)
   - [Resource state tracking](#resource-state-tracking)
   - [Printing logs and events during 
deploy](#printing-logs-and-events-during-deploy)
-  - [Release planning](#release-planning)
+  - [Release planning and two-stage deployment workflow 
support](#release-planning-and-two-stage-deployment-workflow-support)
   - [Encrypted values and encrypted 
files](#encrypted-values-and-encrypted-files)
   - [Improved CRD management](#improved-crd-management)
 - [Usage](#usage)
@@ -244,12 +244,23 @@
 
 During the deployment, Nelm finds Pods of deploying resources and periodically 
prints their container logs. With annotation `werf.io/show-service-messages: 
"true"`, resource events are also printed. Can be configured with CLI flags and 
annotations.
 
-### Release planning
+### Release planning and two-stage deployment workflow support
 
-`nelm release plan install` shows exactly what's going to happen in the 
cluster on the next release. It shows 100% accurate diffs between current and 
to-be resource versions, utilizing robust dry-run Server-Side Apply instead of 
client-side trickery.
+`nelm release plan install` shows exactly what's going to happen in the 
cluster on the next release. It shows diffs between the current and to-be 
resource versions, utilizing robust dry-run Kubernetes Server-Side Apply 
capabilities.
 
 ![planning](resources/images/nelm-release-plan-install.png)
 
+To ensure that these exact changes will be applied during the release install, 
you can utilize a two-stage deployment workflow:
+
+1. **Plan:** Generate, review, and save a plan artifact using the 
`--save-plan` flag:
+```
+nelm release plan install --save-plan=plan.gz
+```
+2. **Apply:** Perform the release install rapidly using the pre-generated 
reviewed plan:
+```
+nelm release install --use-plan=plan.gz
+```
+
 ### Encrypted values and encrypted files
 
 `nelm chart secret` commands manage encrypted values files such as 
`secret-values.yaml` or encrypted arbitrary files like `secret/mysecret.txt`. 
These files are decrypted in-memory during templating and can be used in 
templates as `.Values.my.secret.value` and `{{ werf_secret_file "mysecret.txt" 
}}`, respectively.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/cmd/nelm/main.go 
new/nelm-1.24.1/cmd/nelm/main.go
--- old/nelm-1.24.0/cmd/nelm/main.go    2026-04-21 18:08:35.000000000 +0200
+++ new/nelm-1.24.1/cmd/nelm/main.go    2026-05-12 15:56:02.000000000 +0200
@@ -71,7 +71,7 @@
        })
 
        if unsupportedEnvVars := 
lo.Without(cli.FindUndefinedFlagEnvVarsInEnviron(), featGatesEnvVars...); 
len(unsupportedEnvVars) > 0 {
-               abort(ctx, fmt.Errorf("unsupported environment variable(s): 
%s", strings.Join(unsupportedEnvVars, ",")), 1)
+               log.Default.Warn(ctx, "Unsupported environment variable(s): 
%s", strings.Join(unsupportedEnvVars, ","))
        }
 
        if err := rootCmd.ExecuteContext(ctx); err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/action/chart_lint.go 
new/nelm-1.24.1/pkg/action/chart_lint.go
--- old/nelm-1.24.0/pkg/action/chart_lint.go    2026-04-21 18:08:35.000000000 
+0200
+++ new/nelm-1.24.1/pkg/action/chart_lint.go    2026-05-12 15:56:02.000000000 
+0200
@@ -384,7 +384,7 @@
        if _, err := plan.BuildPlan(instResInfos, delResInfos, relInfos, 
plan.BuildPlanOptions{
                NoFinalTracking: opts.NoFinalTracking,
        }); err != nil {
-               return fmt.Errorf("build install plan: %w", err)
+               return fmt.Errorf("%w: install: %w", ErrBuildPlan, err)
        }
 
        return nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/action/error.go 
new/nelm-1.24.1/pkg/action/error.go
--- old/nelm-1.24.0/pkg/action/error.go 2026-04-21 18:08:35.000000000 +0200
+++ new/nelm-1.24.1/pkg/action/error.go 2026-05-12 15:56:02.000000000 +0200
@@ -1,6 +1,11 @@
 package action
 
-import "fmt"
+import (
+       "errors"
+       "fmt"
+)
+
+var ErrBuildPlan = errors.New("build plan")
 
 type ReleaseNotFoundError struct {
        ReleaseName      string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/action/release_install.go 
new/nelm-1.24.1/pkg/action/release_install.go
--- old/nelm-1.24.0/pkg/action/release_install.go       2026-04-21 
18:08:35.000000000 +0200
+++ new/nelm-1.24.1/pkg/action/release_install.go       2026-05-12 
15:56:02.000000000 +0200
@@ -487,7 +487,7 @@
                if err != nil {
                        handleBuildPlanErr(ctx, installPlan, err, 
opts.InstallGraphPath, opts.TempDirPath, "release-install-graph.dot")
 
-                       return fmt.Errorf("build install plan: %w", err)
+                       return fmt.Errorf("%w: install: %w", ErrBuildPlan, err)
                }
        }
 
@@ -896,7 +896,7 @@
                NoFinalTracking: opts.NoFinalTracking,
        })
        if err != nil {
-               return nil, nonCritErrs, critErrs.Add(fmt.Errorf("build 
rollback plan: %w", err))
+               return nil, nonCritErrs, critErrs.Add(fmt.Errorf("%w: rollback: 
%w", ErrBuildPlan, err))
        }
 
        if opts.RollbackGraphPath != "" {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/action/release_plan_install.go 
new/nelm-1.24.1/pkg/action/release_plan_install.go
--- old/nelm-1.24.0/pkg/action/release_plan_install.go  2026-04-21 
18:08:35.000000000 +0200
+++ new/nelm-1.24.1/pkg/action/release_plan_install.go  2026-05-12 
15:56:02.000000000 +0200
@@ -394,7 +394,7 @@
        if err != nil {
                handleBuildPlanErr(ctx, installPlan, err, 
opts.InstallGraphPath, opts.TempDirPath, "release-install-graph.dot")
 
-               return fmt.Errorf("build install plan: %w", err)
+               return fmt.Errorf("%w: install: %w", ErrBuildPlan, err)
        }
 
        if opts.InstallGraphPath != "" {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/action/release_rollback.go 
new/nelm-1.24.1/pkg/action/release_rollback.go
--- old/nelm-1.24.0/pkg/action/release_rollback.go      2026-04-21 
18:08:35.000000000 +0200
+++ new/nelm-1.24.1/pkg/action/release_rollback.go      2026-05-12 
15:56:02.000000000 +0200
@@ -327,7 +327,7 @@
        if err != nil {
                handleBuildPlanErr(ctx, installPlan, err, 
opts.RollbackGraphPath, opts.TempDirPath, "release-rollback-graph.dot")
 
-               return fmt.Errorf("build install plan: %w", err)
+               return fmt.Errorf("%w: install: %w", ErrBuildPlan, err)
        }
 
        if opts.RollbackGraphPath != "" {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/action/release_uninstall.go 
new/nelm-1.24.1/pkg/action/release_uninstall.go
--- old/nelm-1.24.0/pkg/action/release_uninstall.go     2026-04-21 
18:08:35.000000000 +0200
+++ new/nelm-1.24.1/pkg/action/release_uninstall.go     2026-05-12 
15:56:02.000000000 +0200
@@ -258,7 +258,7 @@
                if err != nil {
                        handleBuildPlanErr(ctx, deletePlan, err, 
opts.UninstallGraphPath, opts.TempDirPath, "release-uninstall-graph.dot")
 
-                       return fmt.Errorf("build delete plan: %w", err)
+                       return fmt.Errorf("%w: delete: %w", ErrBuildPlan, err)
                }
 
                if opts.UninstallGraphPath != "" {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/kube/client_kube.go 
new/nelm-1.24.1/pkg/kube/client_kube.go
--- old/nelm-1.24.0/pkg/kube/client_kube.go     2026-04-21 18:08:35.000000000 
+0200
+++ new/nelm-1.24.1/pkg/kube/client_kube.go     2026-05-12 15:56:02.000000000 
+0200
@@ -4,6 +4,7 @@
        "context"
        "fmt"
        "sync"
+       "time"
 
        "github.com/jellydator/ttlcache/v3"
        "github.com/samber/lo"
@@ -12,6 +13,7 @@
        "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
        "k8s.io/apimachinery/pkg/runtime/schema"
        "k8s.io/apimachinery/pkg/types"
+       kvwait "k8s.io/apimachinery/pkg/util/wait"
        "k8s.io/client-go/discovery"
        "k8s.io/client-go/dynamic"
        "k8s.io/client-go/kubernetes"
@@ -78,11 +80,29 @@
 
        log.Default.Debug(ctx, "Server-side %sapplying resource %q", 
lo.Ternary(opts.DryRun, "dry-run ", ""), resSpec.IDHuman())
 
-       resultObj, err := clientResource.Apply(ctx, resSpec.Name, 
resSpec.Unstruct, metav1.ApplyOptions{
-               DryRun:       dryRun,
-               Force:        true,
-               FieldManager: common.DefaultFieldManager,
-       })
+       var resultObj *unstructured.Unstructured
+
+       applyFn := func() error {
+               var applyErr error
+
+               resultObj, applyErr = clientResource.Apply(ctx, resSpec.Name, 
resSpec.Unstruct, metav1.ApplyOptions{
+                       DryRun:       dryRun,
+                       Force:        true,
+                       FieldManager: common.DefaultFieldManager,
+               })
+               if applyErr != nil {
+                       return fmt.Errorf("server-side apply: %w", applyErr)
+               }
+
+               return nil
+       }
+
+       if opts.RetryOnWebhookError {
+               err = retryOnWebhookErr(ctx, applyFn)
+       } else {
+               err = applyFn()
+       }
+
        if err != nil {
                if !opts.DryRun {
                        c.clusterCache.Set(resSpec.IDWithVersion(), 
&clusterCacheEntry{err: err}, 0)
@@ -125,10 +145,28 @@
 
        log.Default.Debug(ctx, "Server-side applying resource %q", 
resSpec.IDHuman())
 
-       resultObj, err := clientResource.Apply(ctx, resSpec.Name, 
resSpec.Unstruct, metav1.ApplyOptions{
-               Force:        true,
-               FieldManager: common.DefaultFieldManager,
-       })
+       var resultObj *unstructured.Unstructured
+
+       createFn := func() error {
+               var createErr error
+
+               resultObj, createErr = clientResource.Apply(ctx, resSpec.Name, 
resSpec.Unstruct, metav1.ApplyOptions{
+                       Force:        true,
+                       FieldManager: common.DefaultFieldManager,
+               })
+               if createErr != nil {
+                       return fmt.Errorf("server-side apply: %w", createErr)
+               }
+
+               return nil
+       }
+
+       if opts.RetryOnWebhookError {
+               err = retryOnWebhookErr(ctx, createFn)
+       } else {
+               err = createFn()
+       }
+
        if err != nil {
                c.clusterCache.Set(resSpec.IDWithVersion(), 
&clusterCacheEntry{err: err}, 0)
 
@@ -285,13 +323,15 @@
 }
 
 type KubeClientCreateOptions struct {
-       DefaultNamespace string
-       ForceReplicas    *int
+       DefaultNamespace    string
+       ForceReplicas       *int
+       RetryOnWebhookError bool
 }
 
 type KubeClientApplyOptions struct {
-       DefaultNamespace string
-       DryRun           bool
+       DefaultNamespace    string
+       DryRun              bool
+       RetryOnWebhookError bool
 }
 
 type KubeClientMergePatchOptions struct {
@@ -307,3 +347,26 @@
        err error
        obj *unstructured.Unstructured
 }
+
+func retryOnWebhookErr(ctx context.Context, fn func() error) error {
+       retryCtx, cancel := context.WithTimeout(ctx, 2*time.Minute)
+       defer cancel()
+
+       if err := kvwait.PollUntilContextCancel(retryCtx, 2*time.Second, true, 
func(ctx context.Context) (bool, error) {
+               if err := fn(); err != nil {
+                       if IsWebhookErr(err) {
+                               log.Default.Debug(ctx, "Retrying due to webhook 
error: %s", err)
+
+                               return false, nil
+                       }
+
+                       return false, err
+               }
+
+               return true, nil
+       }); err != nil {
+               return fmt.Errorf("retry on webhook error: %w", err)
+       }
+
+       return nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/kube/error.go 
new/nelm-1.24.1/pkg/kube/error.go
--- old/nelm-1.24.0/pkg/kube/error.go   2026-04-21 18:08:35.000000000 +0200
+++ new/nelm-1.24.1/pkg/kube/error.go   2026-05-12 15:56:02.000000000 +0200
@@ -19,3 +19,7 @@
 func IsNotFoundErr(err error) bool {
        return err != nil && errors.IsNotFound(err)
 }
+
+func IsWebhookErr(err error) bool {
+       return err != nil && strings.Contains(err.Error(), "failed calling 
webhook")
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/plan/plan_execute.go 
new/nelm-1.24.1/pkg/plan/plan_execute.go
--- old/nelm-1.24.0/pkg/plan/plan_execute.go    2026-04-21 18:08:35.000000000 
+0200
+++ new/nelm-1.24.1/pkg/plan/plan_execute.go    2026-05-12 15:56:02.000000000 
+0200
@@ -186,8 +186,9 @@
        }
 
        if _, err := clientFactory.KubeClient().Create(ctx, 
opConfig.ResourceSpec, kube.KubeClientCreateOptions{
-               DefaultNamespace: releaseNamespace,
-               ForceReplicas:    opConfig.ForceReplicas,
+               DefaultNamespace:    releaseNamespace,
+               ForceReplicas:       opConfig.ForceReplicas,
+               RetryOnWebhookError: true,
        }); err != nil {
                return fmt.Errorf("create resource: %w", err)
        }
@@ -297,7 +298,8 @@
        opConfig := op.Config.(*OperationConfigApply)
 
        if _, err := clientFactory.KubeClient().Apply(ctx, 
opConfig.ResourceSpec, kube.KubeClientApplyOptions{
-               DefaultNamespace: releaseNamespace,
+               DefaultNamespace:    releaseNamespace,
+               RetryOnWebhookError: true,
        }); err != nil {
                return fmt.Errorf("apply resource: %w", err)
        }
@@ -309,8 +311,9 @@
        opConfig := op.Config.(*OperationConfigCreate)
 
        if _, err := clientFactory.KubeClient().Create(ctx, 
opConfig.ResourceSpec, kube.KubeClientCreateOptions{
-               DefaultNamespace: releaseNamespace,
-               ForceReplicas:    opConfig.ForceReplicas,
+               DefaultNamespace:    releaseNamespace,
+               ForceReplicas:       opConfig.ForceReplicas,
+               RetryOnWebhookError: true,
        }); err != nil {
                return fmt.Errorf("create resource: %w", err)
        }
@@ -355,7 +358,8 @@
        opConfig := op.Config.(*OperationConfigUpdate)
 
        if _, err := clientFactory.KubeClient().Apply(ctx, 
opConfig.ResourceSpec, kube.KubeClientApplyOptions{
-               DefaultNamespace: releaseNamespace,
+               DefaultNamespace:    releaseNamespace,
+               RetryOnWebhookError: true,
        }); err != nil {
                return fmt.Errorf("apply resource: %w", err)
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/plan/resource_info.go 
new/nelm-1.24.1/pkg/plan/resource_info.go
--- old/nelm-1.24.0/pkg/plan/resource_info.go   2026-04-21 18:08:35.000000000 
+0200
+++ new/nelm-1.24.1/pkg/plan/resource_info.go   2026-05-12 15:56:02.000000000 
+0200
@@ -258,7 +258,9 @@
                DefaultNamespace: releaseNamespace,
        })
        if err != nil {
-               if kube.IsNotFoundErr(err) {
+               if kube.IsNotFoundErr(err) || kube.IsWebhookErr(err) {
+                       log.Default.Debug(ctx, "Skipping managed fields fix for 
resource %q due to transient error: %s", localRes.IDHuman(), err)
+
                        return getObj, nil
                }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/resource/metadata.go 
new/nelm-1.24.1/pkg/resource/metadata.go
--- old/nelm-1.24.0/pkg/resource/metadata.go    2026-04-21 18:08:35.000000000 
+0200
+++ new/nelm-1.24.1/pkg/resource/metadata.go    2026-05-12 15:56:02.000000000 
+0200
@@ -73,10 +73,6 @@
                        for on := range conditions {
                                conditions[on] = 
[]common.Stage{common.StagePrePreInstall}
                        }
-               } else if spec.IsWebhook(meta.GroupVersionKind.GroupKind()) && 
!hasManualInternalDeps {
-                       for on := range conditions {
-                               conditions[on] = 
[]common.Stage{common.StagePostPostInstall}
-                       }
                }
 
                return conditions
@@ -88,10 +84,6 @@
                                for on := range conditions {
                                        conditions[on] = 
[]common.Stage{common.StagePrePreInstall}
                                }
-                       } else if 
spec.IsWebhook(meta.GroupVersionKind.GroupKind()) && !hasManualInternalDeps {
-                               for on := range conditions {
-                                       conditions[on] = 
[]common.Stage{common.StagePostPostInstall}
-                               }
                        }
 
                        return conditions
@@ -104,12 +96,6 @@
                        common.InstallOnUpgrade:  {common.StagePrePreInstall},
                        common.InstallOnRollback: {common.StagePrePreInstall},
                }
-       } else if spec.IsWebhook(meta.GroupVersionKind.GroupKind()) && 
!hasManualInternalDeps {
-               return map[common.On][]common.Stage{
-                       common.InstallOnInstall:  {common.StagePostPostInstall},
-                       common.InstallOnUpgrade:  {common.StagePostPostInstall},
-                       common.InstallOnRollback: {common.StagePostPostInstall},
-               }
        }
 
        return map[common.On][]common.Stage{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/pkg/resource/validate.go 
new/nelm-1.24.1/pkg/resource/validate.go
--- old/nelm-1.24.0/pkg/resource/validate.go    2026-04-21 18:08:35.000000000 
+0200
+++ new/nelm-1.24.1/pkg/resource/validate.go    2026-05-12 15:56:02.000000000 
+0200
@@ -17,12 +17,16 @@
        "github.com/werf/nelm/pkg/util"
 )
 
-var errDecode = errors.New("decode")
+var (
+       ErrResourceDuplicatesFound = errors.New("validate for no duplicated 
resources")
+
+       errDecode = errors.New("decode")
+)
 
 // Can be called even without cluster access.
 func ValidateLocal(ctx context.Context, releaseNamespace string, 
transformedResources []*InstallableResource, opts 
common.ResourceValidationOptions) error {
        if err := validateNoDuplicates(releaseNamespace, transformedResources); 
err != nil {
-               return fmt.Errorf("validate for no duplicated resources: %w", 
err)
+               return fmt.Errorf("%w: %w", ErrResourceDuplicatesFound, err)
        }
 
        if featgate.FeatGateResourceValidation.Enabled() && 
!opts.NoResourceValidation {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.24.0/trdl_channels.yaml 
new/nelm-1.24.1/trdl_channels.yaml
--- old/nelm-1.24.0/trdl_channels.yaml  2026-04-21 18:08:35.000000000 +0200
+++ new/nelm-1.24.1/trdl_channels.yaml  2026-05-12 15:56:02.000000000 +0200
@@ -2,12 +2,12 @@
   - name: "1"
     channels:
       - name: alpha
-        version: 1.23.2
+        version: 1.24.0
       - name: beta
-        version: 1.22.0
+        version: 1.23.2
       - name: ea
         version: 1.22.0
       - name: stable
-        version: 1.21.0
+        version: 1.22.0
       - name: rock-solid
-        version: 1.20.1
+        version: 1.21.0

++++++ nelm.obsinfo ++++++
--- /var/tmp/diff_new_pack.y0os5F/_old  2026-06-28 21:09:03.919193751 +0200
+++ /var/tmp/diff_new_pack.y0os5F/_new  2026-06-28 21:09:03.923193887 +0200
@@ -1,5 +1,5 @@
 name: nelm
-version: 1.24.0
-mtime: 1776787715
-commit: d46813af382f8c1c7d3e653c44ab25e6fb481220
+version: 1.24.1
+mtime: 1778594162
+commit: 9366af9135202b7d705c71fef6c7dbe0231c0345
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/nelm/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.nelm.new.11887/vendor.tar.gz differ: char 13, line 1

Reply via email to