in agent/updateutil/updateinfo/updateinfo.go [162:255]
func newInner(context context.T) (updateInfo *updateInfoImpl, err error) {
log := context.Log()
var installScriptName, uninstallScriptName, platformName, platformVersion, downloadPlatformOverride string
if platformName, err = getPlatformName(log); err != nil {
return nil, err
}
installScriptName = updateconstants.InstallScript
uninstallScriptName = updateconstants.UninstallScript
// TODO: Change this structure to a switch and inject the platform name from another method.
platformName = strings.ToLower(platformName)
if strings.Contains(platformName, updateconstants.PlatformAmazonLinux) {
log.Info("Detected platform Amazon Linux")
platformName = updateconstants.PlatformLinux
} else if strings.Contains(platformName, updateconstants.PlatformBottlerocket) {
log.Info("Detected platform Bottlerocket")
platformName = updateconstants.PlatformLinux
} else if strings.Contains(platformName, updateconstants.PlatformRedHat) {
log.Info("Detected platform RedHat")
platformName = updateconstants.PlatformRedHat
downloadPlatformOverride = updateconstants.PlatformLinux
} else if strings.Contains(platformName, updateconstants.PlatformOracleLinux) {
log.Info("Detected platform Oracle Linux")
platformName = updateconstants.PlatformOracleLinux
downloadPlatformOverride = updateconstants.PlatformLinux
} else if strings.Contains(platformName, updateconstants.PlatformUbuntu) {
platformName = updateconstants.PlatformUbuntu
log.Info("Detected platform Ubuntu")
if isSnap, err := isAgentInstalledUsingSnap(log); err == nil && isSnap {
log.Info("Detected agent installed with snap")
installScriptName = updateconstants.SnapInstaller
uninstallScriptName = updateconstants.SnapUnInstaller
// TODO: when versions below 2.2.546.0 have been deprecated, add line below
// Versions below 2.2.546 don't have *-snap-* download packages
// with these names and version below would be unable to update
// downloadPlatformOverride = updateconstants.PlatformUbuntuSnap
}
} else if strings.Contains(platformName, updateconstants.PlatformCentOS) {
log.Info("Detected platform CentOS")
platformName = updateconstants.PlatformCentOS
downloadPlatformOverride = updateconstants.PlatformLinux
} else if strings.Contains(platformName, updateconstants.PlatformRockyLinux) {
log.Info("Detected platform Rocky Linux")
platformName = updateconstants.PlatformRockyLinux
downloadPlatformOverride = updateconstants.PlatformLinux
} else if strings.Contains(platformName, updateconstants.PlatformAlmaLinux) {
log.Info("Detected platform AlmaLinux")
platformName = updateconstants.PlatformAlmaLinux
downloadPlatformOverride = updateconstants.PlatformLinux
} else if strings.Contains(platformName, updateconstants.PlatformFlatcar) {
log.Info("Detected platform Flatcar")
platformName = updateconstants.PlatformFlatcar
downloadPlatformOverride = updateconstants.PlatformLinux
} else if strings.Contains(platformName, updateconstants.PlatformSuseOS) {
log.Info("Detected platform SuseOS")
platformName = updateconstants.PlatformSuseOS
downloadPlatformOverride = updateconstants.PlatformLinux
} else if strings.Contains(platformName, updateconstants.PlatformRaspbian) {
log.Info("Detected platform Raspbian")
platformName = updateconstants.PlatformRaspbian
downloadPlatformOverride = updateconstants.PlatformUbuntu
} else if strings.Contains(platformName, updateconstants.PlatformDebian) {
log.Info("Detected platform Debian")
platformName = updateconstants.PlatformDebian
downloadPlatformOverride = updateconstants.PlatformUbuntu
} else if strings.Contains(platformName, updateconstants.PlatformMacOsX) || strings.Contains(platformName, updateconstants.PlatformMacOs) {
log.Info("Detected platform MacOS")
platformName = updateconstants.PlatformMacOsX
downloadPlatformOverride = updateconstants.PlatformDarwin
} else if isNano, _ := platform.IsPlatformNanoServer(log); isNano {
log.Info("Detected platform Windows Nano")
platformName = updateconstants.PlatformWindowsNano
} else {
log.Info("Detected platform Windows")
platformName = updateconstants.PlatformWindows
}
if platformVersion, err = getPlatformVersion(log); err != nil {
return nil, err
}
updateInfo = &updateInfoImpl{
context: context,
platform: platformName,
platformVersion: platformVersion,
downloadPlatformOverride: downloadPlatformOverride,
arch: runtime.GOARCH,
compressFormat: updateconstants.CompressFormat,
installScriptName: installScriptName,
uninstallScriptName: uninstallScriptName,
}
return updateInfo, nil
}