func()

in cli_tools/import_precheck/precheck/check_osversion.go [78:114]


func (c *OSVersionCheck) createOSID(originalMajor string, originalMinor string, r *Report) string {
	major, minor := originalMajor, originalMinor

	switch c.OSInfo.ShortName {
	case "":
		r.Info("Unable to determine OS.")
		return ""
	case osinfo.Linux:
		// OS config returns "linux" as the distro when it can't find a more specific match.
		r.Info("Detected generic Linux system.")
		return ""
	case osinfo.Windows:
		r.Info("Detected Windows system.")
		// OS config uses NT version numbers, while cli_tools/common/distro uses marketing verions.
		windowsMajor, windowsMinor, err :=
			distro.WindowsServerVersionforNTVersion(originalMajor, originalMinor)
		if err == nil {
			major, minor = windowsMajor, windowsMinor
		}
	}

	release, err := distro.FromComponents(c.OSInfo.ShortName, major, minor, c.OSInfo.Architecture)
	if err != nil {
		r.Info(err.Error())
		return ""
	}
	osID := release.AsGcloudArg()
	if osID != "" {
		return osID
	}
	// If the distro package can't determine the osID, attempt to create one using
	// the format "os-version".
	if c.OSInfo.ShortName != osinfo.Linux && c.OSInfo.ShortName != "" && c.OSInfo.Version != "" {
		return fmt.Sprintf("%s-%s", c.OSInfo.ShortName, c.OSInfo.Version)
	}
	return ""
}