go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/updates/updates.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package updates 5 6 import ( 7 "errors" 8 9 "go.mondoo.com/cnquery/providers/os/connection/shared" 10 ) 11 12 type OperatingSystemUpdate struct { 13 ID string `json:"id"` 14 Name string `json:"name"` 15 Version string `json:"version"` 16 Description string `json:"description"` 17 Severity string `json:"severity"` 18 Category string `json:"category"` 19 Restart bool `json:"restart"` 20 Format string `json:"format"` 21 } 22 23 type OperatingSystemUpdateManager interface { 24 Name() string 25 List() ([]OperatingSystemUpdate, error) 26 } 27 28 // ResolveSystemUpdateManager uses the local system updated to ask for updates 29 func ResolveSystemUpdateManager(conn shared.Connection) (OperatingSystemUpdateManager, error) { 30 var um OperatingSystemUpdateManager 31 32 pf := conn.Asset().Platform 33 34 // TODO: use OS family and select package manager 35 switch pf.Name { 36 case "opensuse", "sles", "opensuse-leap", "opensuse-tumbleweed": // suse family 37 um = &SuseUpdateManager{conn: conn} 38 case "windows": 39 um = &WindowsUpdateManager{conn: conn} 40 case "macos": 41 um = &MacosUpdateManager{conn: conn} 42 default: 43 return nil, errors.New("your platform is not supported by os updates resource") 44 } 45 return um, nil 46 }