Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nova for openSUSE:Factory checked in at 2026-09-19 22:21:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nova (Old) and /work/SRC/openSUSE:Factory/.nova.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nova" Sat Sep 19 22:21:40 2026 rev:41 rq:1378959 version:3.12.1 Changes: -------- --- /work/SRC/openSUSE:Factory/nova/nova.changes 2026-04-30 20:29:58.093757164 +0200 +++ /work/SRC/openSUSE:Factory/.nova.new.383539/nova.changes 2026-09-19 22:22:50.373851286 +0200 @@ -1,0 +2,10 @@ +Sat Sep 19 07:43:51 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 3.12.1: + * INS-2928: Fix vulnerabilities for nova (#482) + * INS-2847: Prepare nova for unifying circleci (#478) + * Update CircleCI configuration to use GCP Docker login instead + of Quay.io (#459) + * fix env injection for nova release (#458) + +------------------------------------------------------------------- Old: ---- nova-3.12.0.obscpio New: ---- nova-3.12.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nova.spec ++++++ --- /var/tmp/diff_new_pack.a5ahXO/_old 2026-09-19 22:22:51.218886530 +0200 +++ /var/tmp/diff_new_pack.a5ahXO/_new 2026-09-19 22:22:51.222886696 +0200 @@ -17,14 +17,14 @@ Name: nova -Version: 3.12.0 +Version: 3.12.1 Release: 0 Summary: Find outdated or deprecated Helm charts running in your cluster License: Apache-2.0 URL: https://github.com/FairwindsOps/nova Source: nova-%{version}.tar.gz Source1: vendor.tar.gz -BuildRequires: go1.26 >= 1.26.0 +BuildRequires: go1.27 >= 1.27.1 # found conflict of nova-3.4.0-1.1.x86_64 with python3-novaclient-17.6.0-1.2.noarch # /usr/bin/nova ++++++ _service ++++++ --- /var/tmp/diff_new_pack.a5ahXO/_old 2026-09-19 22:22:51.251887906 +0200 +++ /var/tmp/diff_new_pack.a5ahXO/_new 2026-09-19 22:22:51.254888031 +0200 @@ -1,9 +1,9 @@ <services> <service name="obs_scm" mode="manual"> - <param name="url">https://github.com/FairwindsOps/nova</param> + <param name="url">https://github.com/FairwindsOps/nova.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v3.12.0</param> + <param name="revision">refs/tags/v3.12.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.a5ahXO/_old 2026-09-19 22:22:51.274888865 +0200 +++ /var/tmp/diff_new_pack.a5ahXO/_new 2026-09-19 22:22:51.276888949 +0200 @@ -1,6 +1,8 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/FairwindsOps/nova</param> - <param name="changesrevision">0803b0840d990bbf6518951899fcf8b948acc971</param></service></servicedata> + <param name="changesrevision">0803b0840d990bbf6518951899fcf8b948acc971</param></service><service name="tar_scm"> + <param name="url">https://github.com/FairwindsOps/nova.git</param> + <param name="changesrevision">686e939f41cd8e72b3e888b989622b3aa5d0700d</param></service></servicedata> (No newline at EOF) ++++++ nova-3.12.0.obscpio -> nova-3.12.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/.circleci/config.yml new/nova-3.12.1/.circleci/config.yml --- old/nova-3.12.0/.circleci/config.yml 2026-04-27 23:17:17.000000000 +0200 +++ new/nova-3.12.1/.circleci/config.yml 2026-09-15 19:51:18.000000000 +0200 @@ -1,7 +1,8 @@ +## DO NOT EDIT - Managed by Terraform version: 2.1 orbs: - rok8s: fairwinds/rok8s-scripts@14 + rok8s: fairwinds/[email protected] oss-docs: fairwinds/oss-docs@0 references: @@ -23,30 +24,29 @@ sudo apt-get install -y qemu-user-static binfmt-support docker buildx create --use || true docker buildx inspect --bootstrap + jobs: test: docker: - - image: cimg/go:1.26.2 + - image: cimg/go:1.27.1 steps: - checkout - run: - name: lint + name: Go Mod Download + command: go mod download && go mod verify + - run: + name: golangci-lint command: | - echo "installing golint" - go install golang.org/x/lint/golint@latest - echo "linting..." - golint -set_exit_status ./... | tee golint-report.out - echo "checking go fmt..." - if ! test -z $(go fmt ./...); then - echo "Please run go fmt ./... to format your code" - exit 1 - fi + curl -fsSL -o golangci-lint.tar.gz https://github.com/golangci/golangci-lint/releases/download/v2.13.2/golangci-lint-2.13.2-linux-amd64.tar.gz + echo '2277d43b98ec0054280f2ac26b53268bae97682444678a59a657dd565da021d6 golangci-lint.tar.gz' | sha256sum -c + tar -xzf golangci-lint.tar.gz + mv golangci-lint-2.13.2-linux-amd64/golangci-lint "$(go env GOPATH)/bin/golangci-lint" + golangci-lint run --timeout 5m - run: name: test command: | - go test -v --bench --benchmem -coverprofile=coverage.txt -covermode=atomic ./pkg/... - go vet 2> govet-report.out - go tool cover -html=coverage.txt -o cover-report.html + go test -v -coverprofile=coverage.txt -covermode=atomic ./pkg/... + go vet ./... snapshot: machine: image: ubuntu-2204:current @@ -63,7 +63,7 @@ -e CIRCLE_SHA1 \ -e CIRCLE_BRANCH \ -e CIRCLE_TAG \ - goreleaser/goreleaser:v2.15.4 release --snapshot --skip=sign + goreleaser/goreleaser:v2.18.1 release --snapshot --skip=sign - store_artifacts: path: dist destination: snapshot @@ -78,9 +78,9 @@ - rok8s/get_vault_env: vault_path: repo/global/env - run: - name: docker login + name: docker login Google Artifact Registry command: | - docker login -u _json_key -p "$(echo $GCP_ARTIFACTREADWRITE_JSON_KEY | base64 -d)" us-docker.pkg.dev + echo "$GCP_ARTIFACTREADWRITE_JSON_KEY" | base64 -d | docker login -u _json_key --password-stdin us-docker.pkg.dev - *setup_qemu_binfmt - run: name: Run GoReleaser release @@ -97,12 +97,16 @@ -e GITHUB_TOKEN \ -e VAULT_ADDR \ -e VAULT_TOKEN \ - goreleaser/goreleaser:v2.15.4 release + goreleaser/goreleaser:v2.18.1 release + workflows: version: 2 test_and_build: jobs: - - test + - test: + filters: + tags: + ignore: /.*/ - snapshot: requires: - test @@ -113,17 +117,27 @@ ignore: /.*/ release: jobs: - - oss-docs/publish-docs: - repository: nova + - test: filters: branches: ignore: /.*/ tags: - only: /^.*/ + only: /v.*/ - release: + requires: + - test context: org-global filters: branches: ignore: /.*/ tags: - only: /.*/ + only: /v.*/ + - oss-docs/publish-docs: + requires: + - release + repository: nova + filters: + branches: + ignore: /.*/ + tags: + only: /v.*/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/CODEOWNERS new/nova-3.12.1/CODEOWNERS --- old/nova-3.12.0/CODEOWNERS 2026-04-27 23:17:17.000000000 +0200 +++ new/nova-3.12.1/CODEOWNERS 2026-09-15 19:51:18.000000000 +0200 @@ -1,2 +1,2 @@ ## DO NOT EDIT - Managed by Terraform -* @sudermanjr @transient1 +* @sudermanjr @transient1 @azahorscak diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/Dockerfile new/nova-3.12.1/Dockerfile --- old/nova-3.12.0/Dockerfile 2026-04-27 23:17:17.000000000 +0200 +++ new/nova-3.12.1/Dockerfile 2026-09-15 19:51:18.000000000 +0200 @@ -1,4 +1,4 @@ -FROM alpine:3.23.4 +FROM alpine:3.24.1 LABEL org.opencontainers.image.authors="FairwindsOps, Inc." \ org.opencontainers.image.vendor="FairwindsOps, Inc." \ @@ -11,6 +11,7 @@ # Install CA bundle for TLS. RUN apk --no-cache add ca-certificates +RUN apk --no-cache add --upgrade libcrypto3 libssl3 USER nobody COPY nova / diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/cmd/root.go new/nova-3.12.1/cmd/root.go --- old/nova-3.12.0/cmd/root.go 2026-04-27 23:17:17.000000000 +0200 +++ new/nova-3.12.1/cmd/root.go 2026-09-15 19:51:18.000000000 +0200 @@ -177,7 +177,7 @@ if err != nil { klog.Exitf("failed to download config: %s", err.Error()) } - defer os.Remove(cfgFile) + defer func() { _ = os.Remove(cfgFile) }() } // Read config @@ -213,14 +213,17 @@ if err != nil { return "", &errors.StatusError{} } - defer resp.Body.Close() + defer func() { _ = resp.Body.Close() }() size, err := io.Copy(file, resp.Body) if err != nil { + _ = file.Close() return "", err } - defer file.Close() + if err := file.Close(); err != nil { + return "", err + } tmpConfig := file.Name() klog.V(2).Infof("downloaded config file %s with size %d", tmpConfig, size) @@ -257,7 +260,7 @@ kubeConfigPath := viper.GetString("kubeconfig") format := viper.GetString("format") - if !(format == output.TableFormat || format == output.JSONFormat) { + if format != output.TableFormat && format != output.JSONFormat { klog.Exitf("--format flag value is not valid. Run `nova find --help` to see flag options") } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/go.mod new/nova-3.12.1/go.mod --- old/nova-3.12.0/go.mod 2026-04-27 23:17:17.000000000 +0200 +++ new/nova-3.12.1/go.mod 2026-09-15 19:51:18.000000000 +0200 @@ -1,6 +1,6 @@ module github.com/fairwindsops/nova -go 1.26.2 +go 1.27.1 require ( github.com/Masterminds/semver/v3 v3.4.0 @@ -80,12 +80,12 @@ github.com/x448/float16 v0.8.4 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.51.0 // indirect + golang.org/x/net v0.58.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.43.0 // indirect - golang.org/x/term v0.40.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/sync v0.22.0 // indirect + golang.org/x/sys v0.47.0 // indirect + golang.org/x/term v0.45.0 // indirect + golang.org/x/text v0.41.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/go.sum new/nova-3.12.1/go.sum --- old/nova-3.12.0/go.sum 2026-04-27 23:17:17.000000000 +0200 +++ new/nova-3.12.1/go.sum 2026-09-15 19:51:18.000000000 +0200 @@ -207,24 +207,24 @@ go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= -golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= +golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= +golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= +golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= -golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0= +golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w= +golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= +golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= -golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= -golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= +golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE= +golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/pkg/containers/images_test.go new/nova-3.12.1/pkg/containers/images_test.go --- old/nova-3.12.0/pkg/containers/images_test.go 2026-04-27 23:17:17.000000000 +0200 +++ new/nova-3.12.1/pkg/containers/images_test.go 2026-09-15 19:51:18.000000000 +0200 @@ -15,7 +15,6 @@ package containers import ( - "context" "encoding/json" "reflect" "testing" @@ -379,16 +378,3 @@ } } -func setupKubeObjects(t *testing.T, c *Client) { - _, err := c.Kube.Client.CoreV1().Pods(testNamespace).Create(context.TODO(), testPodSpec, metav1.CreateOptions{}) - if err != nil { - t.Errorf("Error creating pod: %v", err) - } -} - -func teardownKubeObjects(t *testing.T, c *Client) { - err := c.Kube.Client.CoreV1().Pods(testNamespace).Delete(context.TODO(), testPodName, metav1.DeleteOptions{}) - if err != nil { - t.Errorf("Error deleting pod: %v", err) - } -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/pkg/helm/artifacthub.go new/nova-3.12.1/pkg/helm/artifacthub.go --- old/nova-3.12.0/pkg/helm/artifacthub.go 2026-04-27 23:17:17.000000000 +0200 +++ new/nova-3.12.1/pkg/helm/artifacthub.go 2026-09-15 19:51:18.000000000 +0200 @@ -181,9 +181,7 @@ klog.V(5).Infof("found %d packages matching '%s'", totalCount, searchTerm) ret := make([]ArtifactHubPackageSearch, totalCount) - for i, p := range firstSet.Packages { - ret[i] = p - } + copy(ret, firstSet.Packages) if totalCount > maxArtifactHubRequestLimit { wg := sync.WaitGroup{} for i := maxArtifactHubRequestLimit; i < totalCount; i += maxArtifactHubRequestLimit { @@ -287,7 +285,7 @@ } } if resp.StatusCode == http.StatusOK { - defer resp.Body.Close() + defer func() { _ = resp.Body.Close() }() err := json.NewDecoder(resp.Body).Decode(&ret) if err != nil { klog.V(3).Infof("error decoding search json with search term '%s': %s", searchTerm, err) @@ -337,7 +335,7 @@ } } if resp.StatusCode == http.StatusOK { - defer resp.Body.Close() + defer func() { _ = resp.Body.Close() }() err := json.NewDecoder(resp.Body).Decode(&ret.Package) if err != nil { klog.V(3).Infof("error decoding response for path %s:\n%v", path, err) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/pkg/output/file_test.go new/nova-3.12.1/pkg/output/file_test.go --- old/nova-3.12.0/pkg/output/file_test.go 2026-04-27 23:17:17.000000000 +0200 +++ new/nova-3.12.1/pkg/output/file_test.go 2026-09-15 19:51:18.000000000 +0200 @@ -60,14 +60,14 @@ assert.Nil(t, existsErr) if existsErr == nil { - os.Remove(path) + _ = os.Remove(path) } _, existsCSVErr := os.Stat(pathcsv) assert.Nil(t, existsCSVErr) if existsErr == nil { - os.Remove(pathcsv) + _ = os.Remove(pathcsv) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/pkg/output/output.go new/nova-3.12.1/pkg/output/output.go --- old/nova-3.12.0/pkg/output/output.go 2026-04-27 23:17:17.000000000 +0200 +++ new/nova-3.12.1/pkg/output/output.go 2026-09-15 19:51:18.000000000 +0200 @@ -139,12 +139,11 @@ } case ".csv": file, err := os.Create(filename) - defer file.Close() if err != nil { return err } + defer func() { _ = file.Close() }() w := csv.NewWriter(file) - defer w.Flush() header := []string{"Release Name", "Chart Name", "Namespace", "HelmVersion", "Installed", "Latest", "Old", "Deprecated"} var data [][]string data = append(data, header) @@ -152,9 +151,11 @@ row := []string{rl.ReleaseName, rl.ChartName, rl.Namespace, rl.HelmVersion, rl.Installed.Version, rl.Latest.Version, strconv.FormatBool(rl.IsOld), strconv.FormatBool(rl.Deprecated)} data = append(data, row) } - w.WriteAll(data) + if err := w.WriteAll(data); err != nil { + return err + } default: - return errors.New("File format is not supported. The supported file format are json and csv only") + return errors.New("file format is not supported. The supported file format are json and csv only") } return nil } @@ -168,7 +169,7 @@ switch format { case JSONFormat: data, _ := marshalWithoutHTMLEscaping(output.HelmReleases) - fmt.Fprintln(os.Stdout, string(data)) + _, _ = fmt.Fprintln(os.Stdout, string(data)) case TableFormat: w := tabwriter.NewWriter(os.Stdout, 0, 4, 4, ' ', 0) header := "Release Name\t" @@ -176,13 +177,13 @@ header += "Chart Name\tNamespace\tHelmVersion\t" } header += "Installed\tLatest\tOld\tDeprecated" - fmt.Fprintln(w, header) + _, _ = fmt.Fprintln(w, header) separator := "============\t" if wide { separator += "==========\t=========\t===========\t" } separator += "=========\t======\t===\t==========" - fmt.Fprintln(w, separator) + _, _ = fmt.Fprintln(w, separator) for _, release := range output.HelmReleases { if (!output.IncludeAll && release.Latest.Version == "") || (showOld && !release.IsOld) { @@ -198,9 +199,9 @@ line += release.Latest.Version + "\t" line += fmt.Sprintf("%t", release.IsOld) + "\t" line += fmt.Sprintf("%t", release.Deprecated) + "\t" - fmt.Fprintln(w, line) + _, _ = fmt.Fprintln(w, line) } - w.Flush() + _ = w.Flush() default: klog.Errorf("Output format is not supported. The supported formats are json and table only") } @@ -285,14 +286,14 @@ switch format { case JSONFormat: data, _ := marshalWithoutHTMLEscaping(output) - fmt.Fprintln(os.Stdout, string(data)) + _, _ = fmt.Fprintln(os.Stdout, string(data)) case TableFormat: w := tabwriter.NewWriter(os.Stdout, 0, 4, 4, ' ', 0) if len(output.ContainerImages) != 0 { header := "Container Name\tCurrent Version\tOld\tLatest\tLatest Minor\tLatest Patch" - fmt.Fprintln(w, header) + _, _ = fmt.Fprintln(w, header) separator := "==============\t===============\t===\t======\t=============\t=============" - fmt.Fprintln(w, separator) + _, _ = fmt.Fprintln(w, separator) for _, c := range output.ContainerImages { if !output.IncludeAll && c.LatestVersion == c.CurrentVersion { @@ -304,25 +305,25 @@ line += c.LatestVersion + "\t" line += c.LatestMinorVersion + "\t" line += c.LatestPatchVersion + "\t" - fmt.Fprintln(w, line) + _, _ = fmt.Fprintln(w, line) } } if len(output.ErrImages) == 0 { - w.Flush() + _ = w.Flush() return } - fmt.Fprintln(w, "\n\nErrors:") + _, _ = fmt.Fprintln(w, "\n\nErrors:") errHeader := "Container Name\tError" - fmt.Fprintln(w, errHeader) + _, _ = fmt.Fprintln(w, errHeader) errSeparator := "==============\t=====" - fmt.Fprintln(w, errSeparator) + _, _ = fmt.Fprintln(w, errSeparator) for _, e := range output.ErrImages { line := e.Image + "\t" line += e.Err + "\t" - fmt.Fprintln(w, line) + _, _ = fmt.Fprintln(w, line) } - w.Flush() + _ = w.Flush() if output.LatestStringFound { fmt.Printf("Found a container utilizing the 'latest' tag. This is bad practice and should be avoided.\n\n") } @@ -372,7 +373,7 @@ IncludeAll: output.Helm.IncludeAll, } data, _ := marshalWithoutHTMLEscaping(outputFormat) - fmt.Fprintln(os.Stdout, string(data)) + _, _ = fmt.Fprintln(os.Stdout, string(data)) } } @@ -404,7 +405,7 @@ klog.Errorf("Error writing to file %s: %v", filename, err) } default: - return errors.New("File format is not supported. The supported file format is json only") + return errors.New("file format is not supported. The supported file format is json only") } return nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nova-3.12.0/renovate.json new/nova-3.12.1/renovate.json --- old/nova-3.12.0/renovate.json 1970-01-01 01:00:00.000000000 +0100 +++ new/nova-3.12.1/renovate.json 2026-09-15 19:51:18.000000000 +0200 @@ -0,0 +1,97 @@ +// DO NOT EDIT - Managed by Terraform +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended", + ":dependencyDashboard" + ], + "labels": ["dependencies"], + "prConcurrentLimit": 10, + "branchConcurrentLimit": 10, + "minimumReleaseAge": "7 days", + "enabledManagers": [ + "gomod", + "dockerfile", + "circleci", + "custom.regex" + ], + "postUpdateOptions": ["gomodTidy", "gomodUpdateImportPaths"], + "customManagers": [ + { + "description": "HashiCorp Vault download URL in CircleCI", + "customType": "regex", + "managerFilePatterns": ["/(^|/)\\.circleci/config\\.yml$/"], + "matchStrings": [ + "https://releases\\.hashicorp\\.com/vault/(?<currentValue>[\\d.]+)/vault_[\\d.]+_linux_amd64\\.zip" + ], + "depNameTemplate": "hashicorp/vault", + "datasourceTemplate": "hashicorp-releases", + "autoReplaceStringTemplate": "https://releases.hashicorp.com/vault/{{{newValue}}}/vault_{{{newValue}}}_linux_amd64.zip" + }, + { + "description": "HashiCorp Vault archive name in CircleCI (sha256 line must be updated manually)", + "customType": "regex", + "managerFilePatterns": ["/(^|/)\\.circleci/config\\.yml$/"], + "matchStrings": [ + "vault_(?<currentValue>[\\d.]+)_linux_amd64\\.zip" + ], + "depNameTemplate": "hashicorp/vault", + "datasourceTemplate": "hashicorp-releases", + "autoReplaceStringTemplate": "vault_{{{newValue}}}_linux_amd64.zip" + }, + { + "description": "golangci-lint install.sh pin in CircleCI", + "customType": "regex", + "managerFilePatterns": ["/(^|/)\\.circleci/config\\.yml$/"], + "matchStrings": [ + "golangci/golangci-lint/HEAD/install.sh \\| sh -s -- -b /usr/local/bin v(?<currentValue>[0-9.]+)" + ], + "depNameTemplate": "golangci/golangci-lint", + "datasourceTemplate": "github-releases", + "extractVersionTemplate": "^v?(?<version>.*)$", + "autoReplaceStringTemplate": "golangci/golangci-lint/HEAD/install.sh | sh -s -- -b /usr/local/bin v{{{newValue}}}" + }, + { + "description": "Kind node image for rok8s-scripts kubernetes_e2e_tests", + "customType": "regex", + "managerFilePatterns": ["/(^|/)\\.circleci/config\\.yml$/"], + "matchStrings": [ + "kind_node_image:\\s*\"kindest/node:(?<currentValue>v[^\"\\s]+)\"" + ], + "depNameTemplate": "kindest/node", + "datasourceTemplate": "docker", + "autoReplaceStringTemplate": "kind_node_image: \"kindest/node:{{{newValue}}}\"" + } + ], + "packageRules": [ + { + "description": "Group all non-major (minor + patch) updates into a single PR", + "matchUpdateTypes": ["minor", "patch", "digest", "lockFileMaintenance"], + "groupName": "all non-major dependencies", + "groupSlug": "all-non-major", + "minimumReleaseAge": "7 days" + }, + { + "description": "Keep major updates separate and also enforce minimum age", + "matchUpdateTypes": ["major"], + "minimumReleaseAge": "7 days" + }, + { + "description": "Disable replace updates", + "matchManagers": ["gomod"], + "matchDepTypes": ["replace"], + "enabled": false + }, + { + "description": "Every upgrade: upstream release must be at least 7 days old", + "matchManagers": ["gomod", "dockerfile", "circleci", "custom.regex"], + "minimumReleaseAge": "7 days" + }, + { + "description": "Group HashiCorp Vault version bumps (sha256 checksum still needs manual update)", + "groupName": "HashiCorp Vault", + "matchManagers": ["custom.regex"], + "matchDepNames": ["hashicorp/vault"] + } + ] +} ++++++ nova.obsinfo ++++++ --- /var/tmp/diff_new_pack.a5ahXO/_old 2026-09-19 22:22:51.838912389 +0200 +++ /var/tmp/diff_new_pack.a5ahXO/_new 2026-09-19 22:22:51.841912514 +0200 @@ -1,5 +1,5 @@ name: nova -version: 3.12.0 -mtime: 1777324637 -commit: 0803b0840d990bbf6518951899fcf8b948acc971 +version: 3.12.1 +mtime: 1789494678 +commit: 686e939f41cd8e72b3e888b989622b3aa5d0700d ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/nova/vendor.tar.gz /work/SRC/openSUSE:Factory/.nova.new.383539/vendor.tar.gz differ: char 130, line 2
