Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package google-osconfig-agent for
openSUSE:Factory checked in at 2026-10-02 23:05:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/google-osconfig-agent (Old)
and /work/SRC/openSUSE:Factory/.google-osconfig-agent.new.1631729 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "google-osconfig-agent"
Fri Oct 2 23:05:19 2026 rev:64 rq:1382083 version:20260928.01
Changes:
--------
---
/work/SRC/openSUSE:Factory/google-osconfig-agent/google-osconfig-agent.changes
2026-09-22 15:50:35.404677301 +0200
+++
/work/SRC/openSUSE:Factory/.google-osconfig-agent.new.1631729/google-osconfig-agent.changes
2026-10-02 23:07:00.568505664 +0200
@@ -1,0 +2,13 @@
+Fri Oct 2 06:10:13 UTC 2026 - John Paul Adrian Glaubitz
<[email protected]>
+
+- Update to version 20260928.01
+ * scalibr linux new metadata support (#1038)
+- from version 20260928.00
+ * Fix failing to report REBOOTING state during postPatchReboot
+ due to context canceled for Windows VMs (#1055)
+- from version 20260923.03
+ * Fix os/snap extractor usage (#1053)
+- Update github.com/klauspost/compress to v1.18.7
+ (bsc#1283672, CVE-2026-63209)
+
+-------------------------------------------------------------------
Old:
----
osconfig-20260918.01.tar.gz
New:
----
osconfig-20260928.01.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ google-osconfig-agent.spec ++++++
--- /var/tmp/diff_new_pack.pN5UIy/_old 2026-10-02 23:07:12.481007392 +0200
+++ /var/tmp/diff_new_pack.pN5UIy/_new 2026-10-02 23:07:12.483007476 +0200
@@ -19,7 +19,7 @@
%define shortname osconfig
Name: google-osconfig-agent
-Version: 20260918.01
+Version: 20260928.01
Release: 0
Summary: Google Cloud Guest Agent
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.pN5UIy/_old 2026-10-02 23:07:12.592012067 +0200
+++ /var/tmp/diff_new_pack.pN5UIy/_new 2026-10-02 23:07:12.602012488 +0200
@@ -3,8 +3,8 @@
<param name="url">https://github.com/GoogleCloudPlatform/osconfig</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="versionformat">20260918.01</param>
- <param name="revision">20260918.01</param>
+ <param name="versionformat">20260928.01</param>
+ <param name="revision">20260928.01</param>
<param name="changesgenerate">enable</param>
</service>
<service name="recompress" mode="disabled">
@@ -15,7 +15,8 @@
<param name="basename">osconfig</param>
</service>
<service name="go_modules" mode="disabled">
- <param name="archive">osconfig-20260918.01.tar.gz</param>
+ <param name="archive">osconfig-20260928.01.tar.gz</param>
+ <param
name="replace">github.com/klauspost/compress=github.com/klauspost/[email protected]</param>
<param
name="replace">golang.org/x/crypto=golang.org/x/[email protected]</param>
</service>
</services>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.pN5UIy/_old 2026-10-02 23:07:12.680015773 +0200
+++ /var/tmp/diff_new_pack.pN5UIy/_new 2026-10-02 23:07:12.692016279 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/GoogleCloudPlatform/osconfig</param>
- <param
name="changesrevision">5f6941b480bfb592f022dc8c6696a6c08f3054b7</param></service></servicedata>
+ <param
name="changesrevision">6cc49b8ba49719102c0e66d035396136b02be5e8</param></service></servicedata>
(No newline at EOF)
++++++ osconfig-20260918.01.tar.gz -> osconfig-20260928.01.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osconfig-20260918.01/agentendpoint/inventory.go
new/osconfig-20260928.01/agentendpoint/inventory.go
--- old/osconfig-20260918.01/agentendpoint/inventory.go 2026-09-18
15:25:34.000000000 +0200
+++ new/osconfig-20260928.01/agentendpoint/inventory.go 2026-09-28
17:49:49.000000000 +0200
@@ -163,6 +163,9 @@
if pkgs.COS != nil {
softwarePackages = append(softwarePackages,
cosToInventoryItem(pkgs.COS)...)
}
+ if pkgs.Snap != nil {
+ softwarePackages = append(softwarePackages,
snapToInventoryItem(pkgs.Snap)...)
+ }
if pkgs.GooGet != nil {
softwarePackages = append(softwarePackages,
googetToInventoryItem(pkgs.GooGet)...)
}
@@ -295,6 +298,22 @@
return formattedCos
}
+// snapToInventoryItem converts Snap PkgInfo slice to
VmInventory_InventoryItem slice.
+func snapToInventoryItem(packages []*packages.PkgInfo)
[]*agentendpointpb.VmInventory_InventoryItem {
+ formattedSnap := make([]*agentendpointpb.VmInventory_InventoryItem,
len(packages))
+ for i, pkg := range packages {
+ formattedSnap[i] = &agentendpointpb.VmInventory_InventoryItem{
+ Name: pkg.Name,
+ Type: pkg.Type,
+ Version: pkg.Version,
+ Purl: pkg.Purl,
+ Location: []string{},
+ Metadata: &structpb.Struct{Fields:
map[string]*structpb.Value{}},
+ }
+ }
+ return formattedSnap
+}
+
func zypperPatchToInventoryItem(packages []*packages.ZypperPatch)
[]*agentendpointpb.VmInventory_InventoryItem {
zypperPatchFormattedPackages :=
make([]*agentendpointpb.VmInventory_InventoryItem, len(packages))
for i, pkg := range packages {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osconfig-20260918.01/agentendpoint/inventory_test.go
new/osconfig-20260928.01/agentendpoint/inventory_test.go
--- old/osconfig-20260918.01/agentendpoint/inventory_test.go 2026-09-18
15:25:34.000000000 +0200
+++ new/osconfig-20260928.01/agentendpoint/inventory_test.go 2026-09-28
17:49:49.000000000 +0200
@@ -138,8 +138,9 @@
RevisionNumber: 1,
LastDeploymentChangeTime: time.Date(2020,
time.November, 10, 23, 0, 0, 0, time.UTC),
Purl:
"pkg:generic/ShortName/WUAInstalled@UpdateID"}},
- QFE: []*packages.QFEPackage{{Caption: "QFEInstalled",
Description: "Description", HotFixID: "HotFixID", InstalledOn: "9/1/2020",
Purl: "pkg:generic/ShortName/QFEInstalled@HotFixID"}},
- COS: []*packages.PkgInfo{{Name: "CosInstalledPkg",
Arch: "Arch", Version: "Version", Type: "cos", Purl:
"pkg:cos/ShortName/CosInstalledPkg@Version?arch=Arch"}},
+ QFE: []*packages.QFEPackage{{Caption: "QFEInstalled",
Description: "Description", HotFixID: "HotFixID", InstalledOn: "9/1/2020",
Purl: "pkg:generic/ShortName/QFEInstalled@HotFixID"}},
+ COS: []*packages.PkgInfo{{Name: "CosInstalledPkg",
Arch: "Arch", Version: "Version", Type: "cos", Purl:
"pkg:cos/ShortName/CosInstalledPkg@Version?arch=Arch"}},
+ Snap: []*packages.PkgInfo{{Name: "SnapInstalledPkg",
Arch: "Arch", Version: "Version", Type: "snap", Purl:
"pkg:snap/ShortName/SnapInstalledPkg@Version?arch=Arch"}},
},
PackageUpdates: &packages.Packages{
Yum: []*packages.PkgInfo{{Name:
"YumPkgUpdate", Arch: "Arch", Version: "Version", Type: "rpm", Purl:
"pkg:rpm/ShortName/YumPkgUpdate@Version?arch=Arch"}},
@@ -148,6 +149,7 @@
ZypperPatches: []*packages.ZypperPatch{{Name:
"ZypperPatchUpdate", Category: "Category", Severity: "Severity", Summary:
"Summary", Purl: "pkg:generic/ShortName/ZypperPatchUpdate"}},
Gem: []*packages.PkgInfo{{Name:
"GemPkgUpdate", Arch: "Arch", Version: "Version", Purl:
"pkg:gem/GemPkgUpdate@Version"}},
Pip: []*packages.PkgInfo{{Name:
"PipPkgUpdate", Arch: "Arch", Version: "Version", Purl:
"pkg:pypi/PipPkgUpdate@Version"}},
+ Snap: []*packages.PkgInfo{{Name:
"SnapPkgUpdate", Arch: "Arch", Version: "Version", Type: "snap", Purl:
"pkg:snap/ShortName/SnapPkgUpdate@Version?arch=Arch"}},
GooGet: []*packages.PkgInfo{{Name:
"GooGetPkgUpdate", Arch: "Arch", Version: "Version", Type: "googet", Purl:
"pkg:googet/ShortName/GooGetPkgUpdate@Version"}},
WUA: []*packages.WUAPackage{{
Title: "WUAUpdate",
@@ -210,6 +212,8 @@
}}},
{Name: "CosInstalledPkg", Type: "cos", Version:
"Version", Purl: "pkg:cos/ShortName/CosInstalledPkg@Version?arch=Arch",
Location: []string{}, Metadata:
&structpb.Struct{Fields: map[string]*structpb.Value{}}},
+ {Name: "SnapInstalledPkg", Type: "snap", Version:
"Version", Purl: "pkg:snap/ShortName/SnapInstalledPkg@Version?arch=Arch",
+ Location: []string{}, Metadata:
&structpb.Struct{Fields: map[string]*structpb.Value{}}},
{Name: "GooGetInstalledPkg", Type: "googet", Version:
"Version", Purl: "pkg:googet/ShortName/GooGetInstalledPkg@Version", Metadata:
&structpb.Struct{}},
{Name: "WUAInstalled", Type: "wuaPackage", Version:
"UpdateID", Purl: "pkg:generic/ShortName/WUAInstalled@UpdateID", Location:
[]string{}, Metadata: &structpb.Struct{Fields: map[string]*structpb.Value{
"Description":
structpb.NewStringValue("Description"),
@@ -250,6 +254,8 @@
"Severity":
structpb.NewStringValue("Severity"),
"Summary":
structpb.NewStringValue("Summary"),
}}},
+ {Name: "SnapPkgUpdate", Type: "snap", Version:
"Version", Purl: "pkg:snap/ShortName/SnapPkgUpdate@Version?arch=Arch",
+ Location: []string{}, Metadata:
&structpb.Struct{Fields: map[string]*structpb.Value{}}},
{Name: "GooGetPkgUpdate", Type: "googet", Version:
"Version", Purl: "pkg:googet/ShortName/GooGetPkgUpdate@Version",
Location: []string{}, Metadata:
&structpb.Struct{Fields: map[string]*structpb.Value{}}},
{Name: "WUAUpdate", Type: "wuaPackage", Version:
"UpdateID", Purl: "pkg:generic/ShortName/WUAUpdate@UpdateID",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osconfig-20260918.01/agentendpoint/patch_task.go
new/osconfig-20260928.01/agentendpoint/patch_task.go
--- old/osconfig-20260918.01/agentendpoint/patch_task.go 2026-09-18
15:25:34.000000000 +0200
+++ new/osconfig-20260928.01/agentendpoint/patch_task.go 2026-09-28
17:49:49.000000000 +0200
@@ -196,10 +196,6 @@
return nil
}
- if err := r.reportContinuingState(ctx,
agentendpointpb.ApplyPatchesTaskProgress_REBOOTING); err != nil {
- return err
- }
-
if r.Task.GetDryRun() {
clog.Infof(ctx, "Dry run - not rebooting for ApplyPatchesTask")
return nil
@@ -214,6 +210,13 @@
if err := r.saveState(); err != nil {
return fmt.Errorf("error saving state: %v", err)
}
+
+ reportCtx, cancel := context.WithTimeout(context.WithoutCancel(ctx),
15*time.Second)
+ defer cancel()
+ if err := r.reportContinuingState(reportCtx,
agentendpointpb.ApplyPatchesTaskProgress_REBOOTING); err != nil {
+ clog.Warningf(ctx, "Failed to report REBOOTING state: %v", err)
+ }
+
if err := rebootSystem(); err != nil {
return fmt.Errorf("failed to reboot system: %v", err)
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osconfig-20260918.01/main_windows.go
new/osconfig-20260928.01/main_windows.go
--- old/osconfig-20260918.01/main_windows.go 2026-09-18 15:25:34.000000000
+0200
+++ new/osconfig-20260928.01/main_windows.go 2026-09-28 17:49:49.000000000
+0200
@@ -122,6 +122,7 @@
case svc.Interrogate:
status <- c.CurrentStatus
case svc.Stop, svc.Shutdown:
+ status <- svc.Status{State: svc.StopPending,
WaitHint: 30000}
cncl()
default:
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osconfig-20260918.01/packages/packages_linux.go
new/osconfig-20260928.01/packages/packages_linux.go
--- old/osconfig-20260918.01/packages/packages_linux.go 2026-09-18
15:25:34.000000000 +0200
+++ new/osconfig-20260928.01/packages/packages_linux.go 2026-09-28
17:49:49.000000000 +0200
@@ -18,6 +18,7 @@
"context"
"errors"
"fmt"
+ "slices"
"strings"
"github.com/GoogleCloudPlatform/osconfig/agentconfig"
@@ -26,6 +27,12 @@
"github.com/package-url/packageurl-go"
)
+var (
+ scalibrLinuxEnabled = agentconfig.ScalibrLinuxEnabled
+ extendedInventoryEnabled =
agentconfig.ExtendedInventoryEnabled
+ extendedInventoryExtractorsAllowed =
agentconfig.ExtendedInventoryExtractorsAllowed
+)
+
// GetPackageUpdates gets all available package updates from any known
// installed package manager.
func (p defaultUpdatesProvider) getPackageUpdates(ctx context.Context)
(Packages, error) {
@@ -265,13 +272,21 @@
// NewInstalledPackagesProvider makes provider that uses osv-scalibr as its
implementation if enabled by config, otherwise falls back to default legacy
implementation.
func NewInstalledPackagesProvider(osinfoProvider osinfo.Provider)
InstalledPackagesProvider {
- if agentconfig.ScalibrLinuxEnabled() {
- return scalibrInstalledPackagesProvider{
- extractors: []string{
- "os/cos",
- "os/dpkg",
- "os/rpm",
- },
+ if scalibrLinuxEnabled() {
+ extractors := []string{
+ "os/cos",
+ "os/dpkg",
+ "os/rpm",
+ }
+ if extendedInventoryEnabled() {
+ for _, ext := range
extendedInventoryExtractorsAllowed() {
+ if !slices.Contains(extractors, ext) {
+ extractors = append(extractors, ext)
+ }
+ }
+ }
+ return &scalibrInstalledPackagesProvider{
+ extractors: extractors,
osinfoProvider: osinfoProvider,
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osconfig-20260918.01/packages/packages_linux_test.go
new/osconfig-20260928.01/packages/packages_linux_test.go
--- old/osconfig-20260918.01/packages/packages_linux_test.go 2026-09-18
15:25:34.000000000 +0200
+++ new/osconfig-20260928.01/packages/packages_linux_test.go 2026-09-28
17:49:49.000000000 +0200
@@ -240,6 +240,60 @@
t.Errorf("unexpected error, got: %v, want: <nil>", err)
}
}
+
+// overrideScalibrConfig overrides scalibr configuration flags for the
duration of a test.
+func overrideScalibrConfig(t *testing.T, scalibrLinux bool, extendedEnabled
bool, allowedExtractors []string) {
+ t.Helper()
+ utiltest.OverrideVariable(t, &scalibrLinuxEnabled, func() bool { return
scalibrLinux })
+ utiltest.OverrideVariable(t, &extendedInventoryEnabled, func() bool {
return extendedEnabled })
+ utiltest.OverrideVariable(t, &extendedInventoryExtractorsAllowed,
func() []string { return allowedExtractors })
+}
+
+// TestNewInstalledPackagesProvider tests the creation of
InstalledPackagesProvider based on Scalibr configuration flags.
+func TestNewInstalledPackagesProvider(t *testing.T) {
+ oiProvider := &stubOsInfoProvider{}
+
+ tests := []struct {
+ name string
+ scalibrLinuxEnabled bool
+ extendedInventoryEnabled bool
+ extendedExtractorsAllowed []string
+ wantExtractors []string
+ }{
+ {
+ name: "scalibr disabled, want no
extractors",
+ scalibrLinuxEnabled: false,
+ wantExtractors: nil,
+ },
+ {
+ name: "scalibr enabled, extended
disabled, want base extractors",
+ scalibrLinuxEnabled: true,
+ extendedInventoryEnabled: false,
+ wantExtractors: []string{"os/cos", "os/dpkg",
"os/rpm"},
+ },
+ {
+ name: "scalibr enabled, extended
enabled, want extended extractors without duplicates",
+ scalibrLinuxEnabled: true,
+ extendedInventoryEnabled: true,
+ extendedExtractorsAllowed: []string{"python/wheelegg",
"os/dpkg", "os/apk"},
+ wantExtractors: []string{"os/cos",
"os/dpkg", "os/rpm", "python/wheelegg", "os/apk"},
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ overrideScalibrConfig(t, tt.scalibrLinuxEnabled,
tt.extendedInventoryEnabled, tt.extendedExtractorsAllowed)
+ provider := NewInstalledPackagesProvider(oiProvider)
+ scalibrProvider, ok :=
provider.(*scalibrInstalledPackagesProvider)
+ if !ok {
+ t.Skip("Scalibr is disabled,
defaultInstalledPackagesProvider returned")
+ }
+
+ utiltest.AssertEquals(t, scalibrProvider.extractors,
tt.wantExtractors)
+ })
+ }
+}
+
func Test_getInstalledPackages(t *testing.T) {
enableAllInstalledPackages()
COSPkgInfoExists = false //explicitly skip for now
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osconfig-20260918.01/packages/scalibr.go
new/osconfig-20260928.01/packages/scalibr.go
--- old/osconfig-20260918.01/packages/scalibr.go 2026-09-18
15:25:34.000000000 +0200
+++ new/osconfig-20260928.01/packages/scalibr.go 2026-09-28
17:49:49.000000000 +0200
@@ -13,6 +13,7 @@
scalibrcos
"github.com/google/osv-scalibr/extractor/filesystem/os/cos/metadata"
dpkgmetadata
"github.com/google/osv-scalibr/extractor/filesystem/os/dpkg/metadata"
scalibrrpm
"github.com/google/osv-scalibr/extractor/filesystem/os/rpm/metadata"
+ scalibrsnap
"github.com/google/osv-scalibr/extractor/filesystem/os/snap/metadata"
scalibrfs "github.com/google/osv-scalibr/fs"
"github.com/google/osv-scalibr/plugin"
pl "github.com/google/osv-scalibr/plugin/list"
@@ -78,19 +79,17 @@
}
// pkgInfoFromSnapExtractorPackage creates a PkgInfo from a SCALIBR snap
extractor package.
-func pkgInfoFromSnapExtractorPackage(pkg *extractor.Package, defaultArch
string) *PkgInfo {
- purlStr := ""
- pkgType := ""
- if p := pkg.PURL(); p != nil {
- purlStr = p.String()
- pkgType = p.Type
+func pkgInfoFromSnapExtractorPackage(pkg *extractor.Package, metadata
*scalibrsnap.Metadata, defaultArch string) *PkgInfo {
+ arch := defaultArch
+ if metadata.Architectures[0] != "" {
+ arch = metadata.Architectures[0]
}
return &PkgInfo{
Name: pkg.Name,
Version: pkg.Version,
- Arch: osinfo.NormalizeArchitecture(defaultArch),
- Type: pkgType,
- Purl: purlStr,
+ Arch: osinfo.NormalizeArchitecture(arch),
+ Type: purl.TypeSnap,
+ Purl: pkg.PURL().String(),
}
}
@@ -103,13 +102,10 @@
packages.Rpm = append(packages.Rpm,
pkgInfoFromRpmExtractorPackage(pkg, metadata))
} else if metadata, ok := pkg.Metadata.(*scalibrcos.Metadata);
ok {
packages.COS = append(packages.COS,
pkgInfoFromCosExtractorPackage(pkg, metadata, osinfo))
+ } else if metadata, ok := pkg.Metadata.(*scalibrsnap.Metadata);
ok {
+ packages.Snap = append(packages.Snap,
pkgInfoFromSnapExtractorPackage(pkg, metadata, osinfo.Architecture))
} else {
- pkgInfo := pkgInfoFromSnapExtractorPackage(pkg,
osinfo.Architecture)
- if pkgInfo.Type == typeSnap {
- packages.Snap = append(packages.Snap, pkgInfo)
- } else {
- clog.Errorf(ctx, "Package type not implemented:
%v", pkg)
- }
+ clog.Errorf(ctx, "Package type not implemented: %v",
pkg)
}
}
return packages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/osconfig-20260918.01/packages/scalibr_test.go
new/osconfig-20260928.01/packages/scalibr_test.go
--- old/osconfig-20260918.01/packages/scalibr_test.go 2026-09-18
15:25:34.000000000 +0200
+++ new/osconfig-20260928.01/packages/scalibr_test.go 2026-09-28
17:49:49.000000000 +0200
@@ -17,6 +17,7 @@
scalibrcos
"github.com/google/osv-scalibr/extractor/filesystem/os/cos/metadata"
dpkgmetadata
"github.com/google/osv-scalibr/extractor/filesystem/os/dpkg/metadata"
scalibrrpm
"github.com/google/osv-scalibr/extractor/filesystem/os/rpm/metadata"
+ scalibrsnap
"github.com/google/osv-scalibr/extractor/filesystem/os/snap/metadata"
"github.com/google/osv-scalibr/inventory"
)
@@ -91,7 +92,16 @@
name: "os/snap extractor maps correctly",
arch: "x86_64",
pkgs: []*extractor.Package{
- {Name: "core22", Version: "20240111", PURLType:
"snap"},
+ {
+ Name: "core22",
+ Version: "20240111",
+ PURLType: "snap",
+ Metadata: &scalibrsnap.Metadata{
+ Name: "core22",
+ Version: "20240111",
+ Architectures:
[]string{"amd64"},
+ },
+ },
},
want: Packages{Snap: []*PkgInfo{
{Name: "core22", Version: "20240111", Arch:
"x86_64", Type: "snap", Purl: "pkg:snap/core22@20240111"},
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/google-osconfig-agent/vendor.tar.gz
/work/SRC/openSUSE:Factory/.google-osconfig-agent.new.1631729/vendor.tar.gz
differ: char 14, line 1