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-02-05 17:59:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nelm (Old)
 and      /work/SRC/openSUSE:Factory/.nelm.new.1670 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nelm"

Thu Feb  5 17:59:07 2026 rev:22 rq:1331102 version:1.19.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/nelm/nelm.changes        2025-12-17 
18:40:40.997400405 +0100
+++ /work/SRC/openSUSE:Factory/.nelm.new.1670/nelm.changes      2026-02-05 
18:02:12.048139083 +0100
@@ -1,0 +2,28 @@
+Thu Feb 05 06:07:07 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.19.1:
+  * Bug Fixes
+    - docker hub creds might leak in pod events (#510) (8f8d7b4)
+    - logs stop showing after 4 hours (#508) (9d31303)
+
+-------------------------------------------------------------------
+Thu Feb 05 06:03:35 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.19.0:
+  * Features
+    - werf.io/log-regex-skip and
+      werf.io/log-regex-skip-for-<container> annotations (#506)
+      (ced6487)
+  * Bug Fixes
+    - panic if apiserver connection lost (#507) (d9db36b)
+
+-------------------------------------------------------------------
+Thu Feb 05 05:57:12 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.18.1:
+  * Bug Fixes
+    - hooks cleaned up too early (#503) (f9986dd)
+    - inherit deckhouse-controller managed fields (0116483)
+    - revert: inherit deckhouse-controller managed fields (c3dd378)
+
+-------------------------------------------------------------------

Old:
----
  nelm-1.18.0.obscpio

New:
----
  nelm-1.19.1.obscpio

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

Other differences:
------------------
++++++ nelm.spec ++++++
--- /var/tmp/diff_new_pack.fry6qI/_old  2026-02-05 18:02:13.492199657 +0100
+++ /var/tmp/diff_new_pack.fry6qI/_new  2026-02-05 18:02:13.496199825 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package nelm
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           nelm
-Version:        1.18.0
+Version:        1.19.1
 Release:        0
 Summary:        Helm 3 alternative
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.fry6qI/_old  2026-02-05 18:02:13.588203685 +0100
+++ /var/tmp/diff_new_pack.fry6qI/_new  2026-02-05 18:02:13.592203853 +0100
@@ -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.18.0</param>
+    <param name="revision">v1.19.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.fry6qI/_old  2026-02-05 18:02:13.632205531 +0100
+++ /var/tmp/diff_new_pack.fry6qI/_new  2026-02-05 18:02:13.644206034 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/werf/nelm</param>
-              <param 
name="changesrevision">5ba43b55e461563256a785c019aa3bdae247f7a7</param></service></servicedata>
+              <param 
name="changesrevision">0b2816ba60ef9b7492a05aeec97aa71670cba19b</param></service></servicedata>
 (No newline at EOF)
 

++++++ nelm-1.18.0.obscpio -> nelm-1.19.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/CHANGELOG.md new/nelm-1.19.1/CHANGELOG.md
--- old/nelm-1.18.0/CHANGELOG.md        2025-11-25 13:29:33.000000000 +0100
+++ new/nelm-1.19.1/CHANGELOG.md        2025-12-10 13:58:40.000000000 +0100
@@ -1,5 +1,34 @@
 # Changelog
 
+## [1.19.1](https://github.com/werf/nelm/compare/v1.19.0...v1.19.1) 
(2025-12-10)
+
+
+### Bug Fixes
+
+* docker hub creds might leak in pod events 
([#510](https://github.com/werf/nelm/issues/510)) 
([8f8d7b4](https://github.com/werf/nelm/commit/8f8d7b4991e780e6aba1687f694495f2a8bed001))
+* logs stop showing after 4 hours 
([#508](https://github.com/werf/nelm/issues/508)) 
([9d31303](https://github.com/werf/nelm/commit/9d313034adba7c3fd6c6358d04212ed8293d9e2c))
+
+## [1.19.0](https://github.com/werf/nelm/compare/v1.18.1...v1.19.0) 
(2025-12-10)
+
+
+### Features
+
+* `werf.io/log-regex-skip` and `werf.io/log-regex-skip-for-<container>` 
annotations ([#506](https://github.com/werf/nelm/issues/506)) 
([ced6487](https://github.com/werf/nelm/commit/ced6487db92603b8cdbca9154bd64779b56c32a2))
+
+
+### Bug Fixes
+
+* panic if apiserver connection lost 
([#507](https://github.com/werf/nelm/issues/507)) 
([d9db36b](https://github.com/werf/nelm/commit/d9db36b837e41d34548e475bb6f866093faec163))
+
+## [1.18.1](https://github.com/werf/nelm/compare/v1.18.0...v1.18.1) 
(2025-12-08)
+
+
+### Bug Fixes
+
+* hooks cleaned up too early ([#503](https://github.com/werf/nelm/issues/503)) 
([f9986dd](https://github.com/werf/nelm/commit/f9986ddfdd556ce6ccacc1b3b7ad87626d084ea1))
+* inherit `deckhouse-controller` managed fields 
([0116483](https://github.com/werf/nelm/commit/0116483ae15553394a4fd7a0e82721fb613fff2d))
+* revert: inherit `deckhouse-controller` managed fields 
([c3dd378](https://github.com/werf/nelm/commit/c3dd3788de561b297becef68c15aacc5ceb3011b))
+
 ## [1.18.0](https://github.com/werf/nelm/compare/v1.17.2...v1.18.0) 
(2025-11-25)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/README.md new/nelm-1.19.1/README.md
--- old/nelm-1.18.0/README.md   2025-11-25 13:29:33.000000000 +0100
+++ new/nelm-1.19.1/README.md   2025-12-10 13:58:40.000000000 +0100
@@ -59,6 +59,7 @@
   - [`werf.io/log-regex` annotation](#werfiolog-regex-annotation)
   - [`werf.io/log-regex-for-<container_name>` 
annotation](#werfiolog-regex-for-container_name-annotation)
   - [`werf.io/log-regex-skip` annotation](#werfiolog-regex-skip-annotation)
+  - [`werf.io/log-regex-skip-for-<container_name>` 
annotation](#werfiolog-regex-skip-for-container_name-annotation)
   - [`werf.io/skip-logs` annotation](#werfioskip-logs-annotation)
   - [`werf.io/skip-logs-for-containers` 
annotation](#werfioskip-logs-for-containers-annotation)
   - [`werf.io/show-logs-only-for-number-of-replicas` 
annotation](#werfioshow-logs-only-for-number-of-replicas-annotation)
@@ -243,7 +244,7 @@
 
 `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.
 
-![planning](resources/images/nelm-release-plan-install.gif)
+![planning](resources/images/nelm-release-plan-install.png)
 
 ### Encrypted values and encrypted files
 
@@ -602,6 +603,19 @@
 werf.io/log-regex-skip: <re2 regex>
 ```
 
+### `werf.io/log-regex-skip-for-<container_name>` annotation 
+
+For the specified container, exclude log lines that match the specified regex.
+
+Example:
+```yaml
+werf.io/log-regex-skip-for-backend: ".*ERR|err|WARN|warn.*"
+```
+Format ([more info](https://github.com/google/re2/wiki/Syntax)):
+```
+werf.io/log-regex-skip-for-backend: <re2 regex>
+```
+
 ### `werf.io/skip-logs` annotation 
 
 Don't print container logs during resource tracking.
@@ -838,9 +852,10 @@
 - [x] Advanced resource lifecycle management.
 - [ ] Nelm v2.
 - [ ] Migration to Helm v4.
-- [ ] The Nelm operator, which can integrate with ArgoCD/Flux.
+- [ ] The Nelm operator, which can integrate with ArgoCD/Flux 
([#494](https://github.com/werf/nelm/issues/494)).
 - [ ] An alternative to Helm templating 
([#54](https://github.com/werf/nelm/issues/54)).
 - [ ] Resource patching support 
([#115](https://github.com/werf/nelm/issues/115)).
+- [ ] DRY values.yaml files ([#495](https://github.com/werf/nelm/issues/495)).
 - [ ] Downloading charts directly from Git.
 - [ ] Migrate the built-in secrets management to Mozilla SOPS 
([#62](https://github.com/werf/nelm/issues/62)).
 - [ ] Nelmfile.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/go.mod new/nelm-1.19.1/go.mod
--- old/nelm-1.18.0/go.mod      2025-11-25 13:29:33.000000000 +0100
+++ new/nelm-1.19.1/go.mod      2025-12-10 13:58:40.000000000 +0100
@@ -40,7 +40,7 @@
        github.com/wI2L/jsondiff v0.5.0
        github.com/werf/3p-helm v0.0.0-20251113141050-17dd24e6c20b
        github.com/werf/common-go v0.0.0-20251113140850-a1a98e909e9b
-       github.com/werf/kubedog v0.13.1-0.20251110132552-6ffc5a117ada
+       github.com/werf/kubedog v0.13.1-0.20251210123541-25b3a13e42fe
        github.com/werf/lockgate v0.1.1
        github.com/werf/logboek v0.6.1
        github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/go.sum new/nelm-1.19.1/go.sum
--- old/nelm-1.18.0/go.sum      2025-11-25 13:29:33.000000000 +0100
+++ new/nelm-1.19.1/go.sum      2025-12-10 13:58:40.000000000 +0100
@@ -411,8 +411,8 @@
 github.com/werf/3p-helm v0.0.0-20251113141050-17dd24e6c20b/go.mod 
h1:UAmQvGZhiUULXQpigm1yqcp57s097kpAHz2EvFtKCSk=
 github.com/werf/common-go v0.0.0-20251113140850-a1a98e909e9b 
h1:58850oFrnw5Jy5YaB8QifXz75qpGotfx6qqZ9Q2my1A=
 github.com/werf/common-go v0.0.0-20251113140850-a1a98e909e9b/go.mod 
h1:MXS0JR9zut+oR9oEM8PEkdXXoEbKDILTmWopt0z1eZs=
-github.com/werf/kubedog v0.13.1-0.20251110132552-6ffc5a117ada 
h1:QABud6hPXaKnl7sMpvAtu9Rxi/fY2+QzGKtw+7itYo4=
-github.com/werf/kubedog v0.13.1-0.20251110132552-6ffc5a117ada/go.mod 
h1:gu4EY4hxtiYVDy5o6WE2lRZS0YWqrOV0HS//GTYyrUE=
+github.com/werf/kubedog v0.13.1-0.20251210123541-25b3a13e42fe 
h1:fQDk19dTi6CEue5tYR+lroJCFwFrt+zh1kO1b2pjXQo=
+github.com/werf/kubedog v0.13.1-0.20251210123541-25b3a13e42fe/go.mod 
h1:gu4EY4hxtiYVDy5o6WE2lRZS0YWqrOV0HS//GTYyrUE=
 github.com/werf/lockgate v0.1.1 h1:S400JFYjtWfE4i4LY9FA8zx0fMdfui9DPrBiTciCrx4=
 github.com/werf/lockgate v0.1.1/go.mod 
h1:0yIFSLq9ausy6ejNxF5uUBf/Ib6daMAfXuCaTMZJzIE=
 github.com/werf/logboek v0.6.1 h1:oEe6FkmlKg0z0n80oZjLplj6sXcBeLleCkjfOOZEL2g=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/internal/plan/operation_config.go 
new/nelm-1.19.1/internal/plan/operation_config.go
--- old/nelm-1.18.0/internal/plan/operation_config.go   2025-11-25 
13:29:33.000000000 +0100
+++ new/nelm-1.19.1/internal/plan/operation_config.go   2025-12-10 
13:58:40.000000000 +0100
@@ -114,6 +114,8 @@
        FailuresAllowed                          int
        IgnoreLogs                               bool
        IgnoreLogsForContainers                  []string
+       IgnoreLogsByRegex                        *regexp.Regexp
+       IgnoreLogsByRegexForContainers           map[string]*regexp.Regexp
        IgnoreReadinessProbeFailsByContainerName map[string]time.Duration
        NoActivityTimeout                        time.Duration
        SaveEvents                               bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/internal/plan/plan_build.go 
new/nelm-1.19.1/internal/plan/plan_build.go
--- old/nelm-1.18.0/internal/plan/plan_build.go 2025-11-25 13:29:33.000000000 
+0100
+++ new/nelm-1.19.1/internal/plan/plan_build.go 2025-12-10 13:58:40.000000000 
+0100
@@ -491,6 +491,8 @@
                                        FailuresAllowed:                        
  info.LocalResource.FailuresAllowed,
                                        IgnoreLogs:                             
  info.LocalResource.SkipLogs,
                                        IgnoreLogsForContainers:                
  info.LocalResource.SkipLogsForContainers,
+                                       IgnoreLogsByRegex:                      
  info.LocalResource.SkipLogsRegex,
+                                       IgnoreLogsByRegexForContainers:         
  info.LocalResource.SkipLogsRegexForContainers,
                                        
IgnoreReadinessProbeFailsByContainerName: 
info.LocalResource.IgnoreReadinessProbeFailsForContainers,
                                        NoActivityTimeout:                      
  info.LocalResource.NoActivityTimeout,
                                        SaveEvents:                             
  info.LocalResource.ShowServiceMessages,
@@ -514,7 +516,7 @@
                                        DeletePropagation: 
info.LocalResource.DeletePropagation,
                                },
                        }
-                       chain.AddOperation(deleteOp).Stage(stg)
+                       
chain.AddOperation(deleteOp).Stage(info.StageDeleteOnSuccessfulInstall)
 
                        opTrack := &Operation{
                                Type:      OperationTypeTrackAbsence,
@@ -525,7 +527,7 @@
                                        ResourceMeta: info.ResourceMeta,
                                },
                        }
-                       chain.AddOperation(opTrack).Stage(stg)
+                       
chain.AddOperation(opTrack).Stage(info.StageDeleteOnSuccessfulInstall)
                }
 
                if err := chain.Do(); err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/internal/plan/plan_build_test.go 
new/nelm-1.19.1/internal/plan/plan_build_test.go
--- old/nelm-1.18.0/internal/plan/plan_build_test.go    2025-11-25 
13:29:33.000000000 +0100
+++ new/nelm-1.19.1/internal/plan/plan_build_test.go    2025-12-10 
13:58:40.000000000 +0100
@@ -1007,6 +1007,7 @@
                                info := 
defaultInstallableResourceInfo(defaultInstallableResource(s.releaseName, 
s.releaseNamespace))
                                info.MustTrackReadiness = false
                                info.MustDeleteOnSuccessfulInstall = true
+                               info.StageDeleteOnSuccessfulInstall = 
common.StageUninstall
 
                                return []*plan.InstallableResourceInfo{
                                        info,
@@ -1022,25 +1023,6 @@
                                        },
                                }
 
-                               deleteOp := &plan.Operation{
-                                       Type:     plan.OperationTypeDelete,
-                                       Version:  plan.OperationVersionDelete,
-                                       Category: 
plan.OperationCategoryResource,
-                                       Config: &plan.OperationConfigDelete{
-                                               ResourceMeta:      
installableInfos[0].LocalResource.ResourceMeta,
-                                               DeletePropagation: 
installableInfos[0].LocalResource.DeletePropagation,
-                                       },
-                               }
-
-                               trackDeletionOp := &plan.Operation{
-                                       Type:     
plan.OperationTypeTrackAbsence,
-                                       Version:  
plan.OperationVersionTrackAbsence,
-                                       Category: plan.OperationCategoryTrack,
-                                       Config: 
&plan.OperationConfigTrackAbsence{
-                                               ResourceMeta: 
installableInfos[0].LocalResource.ResourceMeta,
-                                       },
-                               }
-
                                mainStageStartOp := &plan.Operation{
                                        Type:     plan.OperationTypeNoop,
                                        Version:  plan.OperationVersionNoop,
@@ -1077,14 +1059,53 @@
                                        },
                                }
 
+                               mainDeleteStageStartOp := &plan.Operation{
+                                       Type:     plan.OperationTypeNoop,
+                                       Version:  plan.OperationVersionNoop,
+                                       Category: plan.OperationCategoryMeta,
+                                       Config: &plan.OperationConfigNoop{
+                                               OpID: fmt.Sprintf("%s/%s/%s", 
common.StagePrefix, common.StageUninstall, common.StageStartSuffix),
+                                       },
+                               }
+
+                               deleteOp := &plan.Operation{
+                                       Type:     plan.OperationTypeDelete,
+                                       Version:  plan.OperationVersionDelete,
+                                       Category: 
plan.OperationCategoryResource,
+                                       Config: &plan.OperationConfigDelete{
+                                               ResourceMeta:      
installableInfos[0].LocalResource.ResourceMeta,
+                                               DeletePropagation: 
installableInfos[0].LocalResource.DeletePropagation,
+                                       },
+                               }
+
+                               trackDeletionOp := &plan.Operation{
+                                       Type:     
plan.OperationTypeTrackAbsence,
+                                       Version:  
plan.OperationVersionTrackAbsence,
+                                       Category: plan.OperationCategoryTrack,
+                                       Config: 
&plan.OperationConfigTrackAbsence{
+                                               ResourceMeta: 
installableInfos[0].LocalResource.ResourceMeta,
+                                       },
+                               }
+
+                               mainDeleteStageEndOp := &plan.Operation{
+                                       Type:     plan.OperationTypeNoop,
+                                       Version:  plan.OperationVersionNoop,
+                                       Category: plan.OperationCategoryMeta,
+                                       Config: &plan.OperationConfigNoop{
+                                               OpID: fmt.Sprintf("%s/%s/%s", 
common.StagePrefix, common.StageUninstall, common.StageEndSuffix),
+                                       },
+                               }
+
                                ops := []*plan.Operation{
                                        mainStageStartOp,
                                        weightStageStartOp,
                                        createOp,
-                                       deleteOp,
-                                       trackDeletionOp,
                                        weightStageEndOp,
                                        mainStageEndOp,
+                                       mainDeleteStageStartOp,
+                                       deleteOp,
+                                       trackDeletionOp,
+                                       mainDeleteStageEndOp,
                                }
 
                                adjMap := 
map[string]map[string]graph.Edge[string]{
@@ -1095,18 +1116,24 @@
                                                createOp.ID(): {},
                                        },
                                        createOp.ID(): {
+                                               weightStageEndOp.ID(): {},
+                                       },
+                                       weightStageEndOp.ID(): {
+                                               mainStageEndOp.ID(): {},
+                                       },
+                                       mainStageEndOp.ID(): {
+                                               mainDeleteStageStartOp.ID(): {},
+                                       },
+                                       mainDeleteStageStartOp.ID(): {
                                                deleteOp.ID(): {},
                                        },
                                        deleteOp.ID(): {
                                                trackDeletionOp.ID(): {},
                                        },
                                        trackDeletionOp.ID(): {
-                                               weightStageEndOp.ID(): {},
-                                       },
-                                       weightStageEndOp.ID(): {
-                                               mainStageEndOp.ID(): {},
+                                               mainDeleteStageEndOp.ID(): {},
                                        },
-                                       mainStageEndOp.ID(): {},
+                                       mainDeleteStageEndOp.ID(): {},
                                }
 
                                return ops, adjMap
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/internal/plan/plan_execute.go 
new/nelm-1.19.1/internal/plan/plan_execute.go
--- old/nelm-1.18.0/internal/plan/plan_execute.go       2025-11-25 
13:29:33.000000000 +0100
+++ new/nelm-1.19.1/internal/plan/plan_execute.go       2025-12-10 
13:58:40.000000000 +0100
@@ -274,6 +274,8 @@
                SaveLogsByRegexForContainers:             
opConfig.SaveLogsByRegexForContainers,
                IgnoreLogs:                               opConfig.IgnoreLogs,
                IgnoreLogsForContainers:                  
opConfig.IgnoreLogsForContainers,
+               IgnoreLogsByRegex:                        
opConfig.IgnoreLogsByRegex,
+               IgnoreLogsByRegexForContainers:           
opConfig.IgnoreLogsByRegexForContainers,
                SaveEvents:                               opConfig.SaveEvents,
        })
        if err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/internal/plan/resource_info.go 
new/nelm-1.19.1/internal/plan/resource_info.go
--- old/nelm-1.18.0/internal/plan/resource_info.go      2025-11-25 
13:29:33.000000000 +0100
+++ new/nelm-1.19.1/internal/plan/resource_info.go      2025-12-10 
13:58:40.000000000 +0100
@@ -61,8 +61,9 @@
        MustDeleteOnFailedInstall     bool
        MustTrackReadiness            bool
 
-       Stage     common.Stage
-       Iteration int
+       Stage                          common.Stage
+       StageDeleteOnSuccessfulInstall common.Stage
+       Iteration                      int
 }
 
 type DeletableResourceInfo struct {
@@ -174,13 +175,14 @@
 
                        return lo.Map(stages, func(stg common.Stage, _ int) 
*InstallableResourceInfo {
                                return &InstallableResourceInfo{
-                                       ResourceMeta:                  
localRes.ResourceMeta,
-                                       LocalResource:                 localRes,
-                                       MustInstall:                   
ResourceInstallTypeCreate,
-                                       MustDeleteOnSuccessfulInstall: 
mustDeleteOnSuccess,
-                                       MustDeleteOnFailedInstall:     
mustDeleteOnFailedDeploy(localRes, nil, ResourceInstallTypeCreate, 
releaseNamespace, trackReadiness),
-                                       MustTrackReadiness:            
trackReadiness,
-                                       Stage:                         stg,
+                                       ResourceMeta:                   
localRes.ResourceMeta,
+                                       LocalResource:                  
localRes,
+                                       MustInstall:                    
ResourceInstallTypeCreate,
+                                       MustDeleteOnSuccessfulInstall:  
mustDeleteOnSuccess,
+                                       MustDeleteOnFailedInstall:      
mustDeleteOnFailedDeploy(localRes, nil, ResourceInstallTypeCreate, 
releaseNamespace, trackReadiness),
+                                       MustTrackReadiness:             
trackReadiness,
+                                       Stage:                          stg,
+                                       StageDeleteOnSuccessfulInstall: 
stageDeleteOnSuccessfulInstall(mustDeleteOnSuccess, stg),
                                }
                        }), nil
                } else {
@@ -211,16 +213,17 @@
 
        return lo.Map(stages, func(stg common.Stage, _ int) 
*InstallableResourceInfo {
                return &InstallableResourceInfo{
-                       ResourceMeta:                  localRes.ResourceMeta,
-                       LocalResource:                 localRes,
-                       GetResult:                     getObj,
-                       DryApplyResult:                dryApplyObj,
-                       DryApplyErr:                   dryApplyErr,
-                       MustInstall:                   installType,
-                       MustDeleteOnSuccessfulInstall: mustDeleteOnSuccess,
-                       MustDeleteOnFailedInstall:     
mustDeleteOnFailedDeploy(localRes, getMeta, installType, releaseNamespace, 
trackReadiness),
-                       MustTrackReadiness:            trackReadiness,
-                       Stage:                         stg,
+                       ResourceMeta:                   localRes.ResourceMeta,
+                       LocalResource:                  localRes,
+                       GetResult:                      getObj,
+                       DryApplyResult:                 dryApplyObj,
+                       DryApplyErr:                    dryApplyErr,
+                       MustInstall:                    installType,
+                       MustDeleteOnSuccessfulInstall:  mustDeleteOnSuccess,
+                       MustDeleteOnFailedInstall:      
mustDeleteOnFailedDeploy(localRes, getMeta, installType, releaseNamespace, 
trackReadiness),
+                       MustTrackReadiness:             trackReadiness,
+                       Stage:                          stg,
+                       StageDeleteOnSuccessfulInstall: 
stageDeleteOnSuccessfulInstall(mustDeleteOnSuccess, stg),
                }
        }), nil
 }
@@ -452,6 +455,25 @@
        return true
 }
 
+func stageDeleteOnSuccessfulInstall(shouldDelete bool, installStg 
common.Stage) common.Stage {
+       if !shouldDelete {
+               return ""
+       }
+
+       switch installStg {
+       case common.StagePreInstall:
+               return common.StagePreUninstall
+       case common.StageInstall:
+               return common.StageUninstall
+       case common.StagePostInstall:
+               return common.StagePostUninstall
+       case common.StagePostPostInstall:
+               return common.StagePostPostUninstall
+       default:
+               panic("unexpected resource install stage")
+       }
+}
+
 func fixManagedFieldsInCluster(ctx context.Context, releaseNamespace string, 
getObj *unstructured.Unstructured, meta *spec.ResourceMeta, 
noRemoveManualChanges bool, clientFactory kube.ClientFactorier) 
(*unstructured.Unstructured, error) {
        if changed, err := fixManagedFields(getObj, noRemoveManualChanges); err 
!= nil {
                return nil, fmt.Errorf("fix managed fields for resource %q: 
%w", meta.IDHuman(), err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/internal/plan/resource_info_test.go 
new/nelm-1.19.1/internal/plan/resource_info_test.go
--- old/nelm-1.18.0/internal/plan/resource_info_test.go 2025-11-25 
13:29:33.000000000 +0100
+++ new/nelm-1.19.1/internal/plan/resource_info_test.go 2025-12-10 
13:58:40.000000000 +0100
@@ -152,6 +152,7 @@
                                info.DryApplyResult = 
defaultResourceSpec(s.releaseName, s.releaseNamespace).Unstruct
                                info.MustInstall = plan.ResourceInstallTypeNone
                                info.MustDeleteOnSuccessfulInstall = true
+                               info.StageDeleteOnSuccessfulInstall = 
common.StageUninstall
 
                                return []*plan.InstallableResourceInfo{info}
                        },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/internal/resource/metadata.go 
new/nelm-1.19.1/internal/resource/metadata.go
--- old/nelm-1.18.0/internal/resource/metadata.go       2025-11-25 
13:29:33.000000000 +0100
+++ new/nelm-1.19.1/internal/resource/metadata.go       2025-12-10 
13:58:40.000000000 +0100
@@ -243,6 +243,16 @@
                }
        }
 
+       if key, value, found := 
spec.FindAnnotationOrLabelByKeyPattern(meta.Annotations, 
common.AnnotationKeyPatternLogRegexSkip); found {
+               if value == "" {
+                       return fmt.Errorf("invalid value %q for annotation %q, 
expected non-empty string value", value, key)
+               }
+
+               if _, err := regexp.Compile(value); err != nil {
+                       return fmt.Errorf("invalid value %q for annotation %q, 
expected valid regexp", value, key)
+               }
+       }
+
        if annotations, found := 
spec.FindAnnotationsOrLabelsByKeyPattern(meta.Annotations, 
common.AnnotationKeyPatternLogRegexFor); found {
                for key, value := range annotations {
                        keyMatches := 
common.AnnotationKeyPatternLogRegexFor.FindStringSubmatch(key)
@@ -269,6 +279,32 @@
                }
        }
 
+       if annotations, found := 
spec.FindAnnotationsOrLabelsByKeyPattern(meta.Annotations, 
common.AnnotationKeyPatternSkipLogRegexFor); found {
+               for key, value := range annotations {
+                       keyMatches := 
common.AnnotationKeyPatternSkipLogRegexFor.FindStringSubmatch(key)
+                       if keyMatches == nil {
+                               return fmt.Errorf("invalid key for annotation 
%q", key)
+                       }
+
+                       containerSubexpIndex := 
common.AnnotationKeyPatternSkipLogRegexFor.SubexpIndex("container")
+                       if containerSubexpIndex == -1 {
+                               return fmt.Errorf("invalid regexp pattern %q 
for annotation %q", common.AnnotationKeyPatternSkipLogRegexFor.String(), key)
+                       }
+
+                       if len(keyMatches) < containerSubexpIndex+1 {
+                               return fmt.Errorf("can't parse container name 
for annotation %q", key)
+                       }
+
+                       if value == "" {
+                               return fmt.Errorf("invalid value %q for 
annotation %q, expected non-empty value", value, key)
+                       }
+
+                       if _, err := regexp.Compile(value); err != nil {
+                               return fmt.Errorf("invalid value %q for 
annotation %q, expected valid regular expression", value, key)
+                       }
+               }
+       }
+
        if key, value, found := 
spec.FindAnnotationOrLabelByKeyPattern(meta.Annotations, 
common.AnnotationKeyPatternNoActivityTimeout); found {
                if value == "" {
                        return fmt.Errorf("invalid value %q for annotation %q, 
expected non-empty duration value", value, key)
@@ -752,6 +788,15 @@
        return regexp.MustCompile(value)
 }
 
+func skipLogRegex(meta *spec.ResourceMeta) *regexp.Regexp {
+       _, value, found := 
spec.FindAnnotationOrLabelByKeyPattern(meta.Annotations, 
common.AnnotationKeyPatternLogRegexSkip)
+       if !found {
+               return nil
+       }
+
+       return regexp.MustCompile(value)
+}
+
 func logRegexesForContainers(meta *spec.ResourceMeta) 
map[string]*regexp.Regexp {
        annotations, found := 
spec.FindAnnotationsOrLabelsByKeyPattern(meta.Annotations, 
common.AnnotationKeyPatternLogRegexFor)
        if !found {
@@ -765,6 +810,23 @@
                container := keyMatches[containerSubexpIndex]
                regexByContainer[container] = regexp.MustCompile(value)
        }
+
+       return regexByContainer
+}
+
+func skipLogRegexesForContainers(meta *spec.ResourceMeta) 
map[string]*regexp.Regexp {
+       annotations, found := 
spec.FindAnnotationsOrLabelsByKeyPattern(meta.Annotations, 
common.AnnotationKeyPatternSkipLogRegexFor)
+       if !found {
+               return nil
+       }
+
+       regexByContainer := map[string]*regexp.Regexp{}
+       for key, value := range annotations {
+               keyMatches := 
common.AnnotationKeyPatternSkipLogRegexFor.FindStringSubmatch(key)
+               containerSubexpIndex := 
common.AnnotationKeyPatternSkipLogRegexFor.SubexpIndex("container")
+               container := keyMatches[containerSubexpIndex]
+               regexByContainer[container] = regexp.MustCompile(value)
+       }
 
        return regexByContainer
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/internal/resource/resource.go 
new/nelm-1.19.1/internal/resource/resource.go
--- old/nelm-1.18.0/internal/resource/resource.go       2025-11-25 
13:29:33.000000000 +0100
+++ new/nelm-1.19.1/internal/resource/resource.go       2025-12-10 
13:58:40.000000000 +0100
@@ -38,6 +38,8 @@
        ShowLogsOnlyForNumberOfReplicas        int
        SkipLogs                               bool
        SkipLogsForContainers                  []string
+       SkipLogsRegex                          *regexp.Regexp
+       SkipLogsRegexForContainers             map[string]*regexp.Regexp
        TrackTerminationMode                   multitrack.TrackTerminationMode
        Weight                                 *int
        ManualInternalDependencies             []*InternalDependency
@@ -132,6 +134,8 @@
                ShowLogsOnlyForNumberOfReplicas:        
showLogsOnlyForNumberOfReplicas(res.ResourceMeta),
                SkipLogs:                               
skipLogs(res.ResourceMeta),
                SkipLogsForContainers:                  
skipLogsForContainers(res.ResourceMeta),
+               SkipLogsRegex:                          
skipLogRegex(res.ResourceMeta),
+               SkipLogsRegexForContainers:             
skipLogRegexesForContainers(res.ResourceMeta),
                TrackTerminationMode:                   
trackTerminationMode(res.ResourceMeta),
                Weight:                                 
weight(res.ResourceMeta, len(manIntDeps) > 0),
                ManualInternalDependencies:             manIntDeps,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/pkg/common/common.go 
new/nelm-1.19.1/pkg/common/common.go
--- old/nelm-1.18.0/pkg/common/common.go        2025-11-25 13:29:33.000000000 
+0100
+++ new/nelm-1.19.1/pkg/common/common.go        2025-12-10 13:58:40.000000000 
+0100
@@ -23,6 +23,7 @@
 const (
        DefaultBurstLimit              = 100
        DefaultChartProvenanceStrategy = "never" // TODO(v2): switch to 
if-possible
+       DefaultDeletePropagation       = metav1.DeletePropagationForeground
        DefaultDiffContextLines        = 3
        DefaultFieldManager            = "helm"
        DefaultLocalKubeVersion        = "1.20.0"
@@ -38,7 +39,6 @@
        StageStartSuffix               = "start"
        StubReleaseName                = "stub-release"
        StubReleaseNamespace           = "stub-namespace"
-       DefaultDeletePropagation       = metav1.DeletePropagationForeground
 )
 
 const (
@@ -197,9 +197,15 @@
        AnnotationKeyHumanLogRegex   = "werf.io/log-regex"
        AnnotationKeyPatternLogRegex = regexp.MustCompile(`^werf.io/log-regex$`)
 
+       AnnotationKeyHumanLogRegexSkip   = "werf.io/log-regex-skip"
+       AnnotationKeyPatternLogRegexSkip = 
regexp.MustCompile(`^werf.io/log-regex-skip$`)
+
        AnnotationKeyHumanLogRegexFor   = "werf.io/log-regex-for-<container>"
        AnnotationKeyPatternLogRegexFor = 
regexp.MustCompile(`^werf.io/log-regex-for-(?P<container>.+)$`)
 
+       AnnotationKeyHumanSkipLogRegexFor   = 
"werf.io/log-regex-skip-for-<container>"
+       AnnotationKeyPatternSkipLogRegexFor = 
regexp.MustCompile(`^werf.io/log-regex-skip-for-(?P<container>.+)$`)
+
        AnnotationKeyHumanNoActivityTimeout   = "werf.io/no-activity-timeout"
        AnnotationKeyPatternNoActivityTimeout = 
regexp.MustCompile(`^werf.io/no-activity-timeout$`)
 
Binary files old/nelm-1.18.0/resources/images/nelm-release-plan-install.gif and 
new/nelm-1.19.1/resources/images/nelm-release-plan-install.gif differ
Binary files old/nelm-1.18.0/resources/images/nelm-release-plan-install.png and 
new/nelm-1.19.1/resources/images/nelm-release-plan-install.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.18.0/trdl_channels.yaml 
new/nelm-1.19.1/trdl_channels.yaml
--- old/nelm-1.18.0/trdl_channels.yaml  2025-11-25 13:29:33.000000000 +0100
+++ new/nelm-1.19.1/trdl_channels.yaml  2025-12-10 13:58:40.000000000 +0100
@@ -2,12 +2,12 @@
   - name: "1"
     channels:
       - name: alpha
-        version: 1.17.2
+        version: 1.19.0
       - name: beta
-        version: 1.17.2
+        version: 1.18.1
       - name: ea
-        version: 1.17.2
+        version: 1.18.0
       - name: stable
-        version: 1.16.2
+        version: 1.18.0
       - name: rock-solid
         version: 1.16.2

++++++ nelm.obsinfo ++++++
--- /var/tmp/diff_new_pack.fry6qI/_old  2026-02-05 18:02:14.308233888 +0100
+++ /var/tmp/diff_new_pack.fry6qI/_new  2026-02-05 18:02:14.320234391 +0100
@@ -1,5 +1,5 @@
 name: nelm
-version: 1.18.0
-mtime: 1764073773
-commit: 5ba43b55e461563256a785c019aa3bdae247f7a7
+version: 1.19.1
+mtime: 1765371520
+commit: 0b2816ba60ef9b7492a05aeec97aa71670cba19b
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/nelm/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.nelm.new.1670/vendor.tar.gz differ: char 131, line 2

Reply via email to