Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
303 changes: 106 additions & 197 deletions liquidapi/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,208 +3,117 @@

package liquidapi

// This is the list of all valid values for an image's "vmware_ostype" attribute
// in Nova/Glance. This list was copied from
import (
"regexp"
)

// The following list of regexes is derived from a hardcoded list of valid values
// for an image's "vmware_ostype" attribute in Nova/Glance. This list was copied from
// https://github.com/openstack/nova/blob/master/nova/virt/vmwareapi/constants.py
// and the comment over there says:
//
// This list was extracted from a file on an installation of ESX 6.5. The
// file can be found in /usr/lib/vmware/hostd/vimLocale/en/gos.vmsg
// The contents of this list should be updated whenever there is a new
// release of ESX.
var isValidVMwareOSType = map[string]bool{
"almalinux_64Guest": true,
"amazonlinux2_64Guest": true,
"amazonlinux3_64Guest": true,
"asianux3_64Guest": true,
"asianux3Guest": true,
"asianux4_64Guest": true,
"asianux4Guest": true,
"asianux7_64Guest": true,
"asianux8_64Guest": true,
"centos64Guest": true,
"centos6_64Guest": true,
"centos6Guest": true,
"centos7_64Guest": true,
"centos8_64Guest": true,
"centos9_64Guest": true,
"centosGuest": true,
"coreos64Guest": true,
"crxPod1Guest": true,
"crxSys1Guest": true,
"darwin10_64Guest": true,
"darwin10Guest": true,
"darwin11_64Guest": true,
"darwin11Guest": true,
"darwin12_64Guest": true,
"darwin13_64Guest": true,
"darwin14_64Guest": true,
"darwin15_64Guest": true,
"darwin16_64Guest": true,
"darwin17_64Guest": true,
"darwin18_64Guest": true,
"darwin19_64Guest": true,
"darwin20_64Guest": true,
"darwin21_64Guest": true,
"darwin22_64Guest": true,
"darwin23_64Guest": true,
"darwin64Guest": true,
"darwinGuest": true,
"debian10_64Guest": true,
"debian10Guest": true,
"debian11_64Guest": true,
"debian11Guest": true,
"debian12_64Guest": true,
"debian12Guest": true,
"debian13_64Guest": true,
"debian13Guest": true,
"debian4_64Guest": true,
"debian4Guest": true,
"debian5_64Guest": true,
"debian5Guest": true,
"debian6_64Guest": true,
"debian6Guest": true,
"debian7_64Guest": true,
"debian7Guest": true,
"debian8_64Guest": true,
"debian8Guest": true,
"debian9_64Guest": true,
"debian9Guest": true,
"dosGuest": true,
"eComStation2Guest": true,
"eComStationGuest": true,
"fedora64Guest": true,
"fedoraGuest": true,
"freebsd11_64Guest": true,
"freebsd11Guest": true,
"freebsd12_64Guest": true,
"freebsd12Guest": true,
"freebsd13_64Guest": true,
"freebsd13Guest": true,
"freebsd14_64Guest": true,
"freebsd14Guest": true,
"freebsd15_64Guest": true,
"freebsd15Guest": true,
"freebsd64Guest": true,
"freebsdGuest": true,
"mandrakeGuest": true,
"mandriva64Guest": true,
"mandrivaGuest": true,
"netware5Guest": true,
"netware6Guest": true,
"nld9Guest": true,
"oesGuest": true,
"openServer5Guest": true,
"openServer6Guest": true,
"opensuse64Guest": true,
"opensuseGuest": true,
"oracleLinux10_64Guest": true,
"oracleLinux64Guest": true,
"oracleLinux6_64Guest": true,
"oracleLinux6Guest": true,
"oracleLinux7_64Guest": true,
"oracleLinux8_64Guest": true,
"oracleLinux9_64Guest": true,
"oracleLinuxGuest": true,
"os2Guest": true,
"other24xLinux64Guest": true,
"other24xLinuxGuest": true,
"other26xLinux64Guest": true,
"other26xLinuxGuest": true,
"other3xLinux64Guest": true,
"other3xLinuxGuest": true,
"other4xLinux64Guest": true,
"other4xLinuxGuest": true,
"other5xLinux64Guest": true,
"other5xLinuxGuest": true,
"other6xLinux64Guest": true,
"other6xLinuxGuest": true,
"other7xLinux64Guest": true,
"other7xLinuxGuest": true,
"otherGuest64": true,
"otherGuest": true,
"otherLinux64Guest": true,
"otherLinuxGuest": true,
"redhatGuest": true,
"rhel10_64Guest": true,
"rhel2Guest": true,
"rhel3_64Guest": true,
"rhel3Guest": true,
"rhel4_64Guest": true,
"rhel4Guest": true,
"rhel5_64Guest": true,
"rhel5Guest": true,
"rhel6_64Guest": true,
"rhel6Guest": true,
"rhel7_64Guest": true,
"rhel7Guest": true,
"rhel8_64Guest": true,
"rhel9_64Guest": true,
"rockylinux_64Guest": true,
"sjdsGuest": true,
"sles10_64Guest": true,
"sles10Guest": true,
"sles11_64Guest": true,
"sles11Guest": true,
"sles12_64Guest": true,
"sles12Guest": true,
"sles15_64Guest": true,
"sles16_64Guest": true,
"sles64Guest": true,
"slesGuest": true,
"solaris10_64Guest": true,
"solaris10Guest": true,
"solaris11_64Guest": true,
"solaris8Guest": true,
"solaris9Guest": true,
"suse64Guest": true,
"suseGuest": true,
"turboLinux64Guest": true,
"turboLinuxGuest": true,
"ubuntu64Guest": true,
"ubuntuGuest": true,
"unixWare7Guest": true,
"vmkernel5Guest": true,
"vmkernel65Guest": true,
"vmkernel6Guest": true,
"vmkernel7Guest": true,
"vmkernel8Guest": true,
"vmkernelGuest": true,
"vmwarePhoton64Guest": true,
"win2000AdvServGuest": true,
"win2000ProGuest": true,
"win2000ServGuest": true,
"win31Guest": true,
"win95Guest": true,
"win98Guest": true,
"windows11_64Guest": true,
"windows12_64Guest": true,
"windows2019srv_64Guest": true,
"windows2019srvNext_64Guest": true,
"windows2022srvNext_64Guest": true,
"windows7_64Guest": true,
"windows7Guest": true,
"windows7Server64Guest": true,
"windows8_64Guest": true,
"windows8Guest": true,
"windows8Server64Guest": true,
"windows9_64Guest": true,
"windows9Guest": true,
"windows9Server64Guest": true,
"winLonghorn64Guest": true,
"winLonghornGuest": true,
"winNetBusinessGuest": true,
"winNetDatacenter64Guest": true,
"winNetDatacenterGuest": true,
"winNetEnterprise64Guest": true,
"winNetEnterpriseGuest": true,
"winNetStandard64Guest": true,
"winNetStandardGuest": true,
"winNetWebGuest": true,
"winNTGuest": true,
"winVista64Guest": true,
"winVistaGuest": true,
"winXPHomeGuest": true,
"winXPPro64Guest": true,
"winXPProGuest": true,
//
// As the list is over 4 years old, new os_type versions have broken our
// OSTypeProber. Therefore, we replaced all obvious version numbers in the valid
// values with placeholders, so that this does not break as easily in the future.
// We do not recommend utilizing this regex list for anything else other than
// validating the "vmware_ostype" attribute on existing images.

var isValidVMwareOSTypeRegex = []*regexp.Regexp{
regexp.MustCompile(`^almalinux_64Guest$`),
regexp.MustCompile(`^amazonlinux(\d+)_64Guest$`),
regexp.MustCompile(`^asianux(\d+)_64Guest$`),
regexp.MustCompile(`^asianux(\d+)Guest$`),
regexp.MustCompile(`^centos64Guest$`),
regexp.MustCompile(`^centos(\d+)_64Guest$`),
regexp.MustCompile(`^centos(\d+)Guest$`),
regexp.MustCompile(`^centosGuest$`),
regexp.MustCompile(`^coreos64Guest$`),
regexp.MustCompile(`^crxPod1Guest$`),
regexp.MustCompile(`^crxSys1Guest$`),
regexp.MustCompile(`^darwin(\d+)_64Guest$`),
regexp.MustCompile(`^darwin(\d+)Guest$`),
regexp.MustCompile(`^darwin64Guest$`),
regexp.MustCompile(`^darwinGuest$`),
regexp.MustCompile(`^debian(\d+)_64Guest$`),
regexp.MustCompile(`^debian(\d+)Guest$`),
regexp.MustCompile(`^dosGuest$`),
regexp.MustCompile(`^eComStation2Guest$`),
regexp.MustCompile(`^eComStationGuest$`),
regexp.MustCompile(`^fedora64Guest$`),
regexp.MustCompile(`^fedoraGuest$`),
regexp.MustCompile(`^freebsd(\d+)_64Guest$`),
regexp.MustCompile(`^freebsd(\d+)Guest$`),
regexp.MustCompile(`^freebsd64Guest$`),
regexp.MustCompile(`^freebsdGuest$`),
regexp.MustCompile(`^mandrakeGuest$`),
regexp.MustCompile(`^mandriva64Guest$`),
regexp.MustCompile(`^mandrivaGuest$`),
regexp.MustCompile(`^netware(\d+)Guest$`),
regexp.MustCompile(`^nld9Guest$`),
regexp.MustCompile(`^oesGuest$`),
regexp.MustCompile(`^openServer(\d+)Guest$`),
regexp.MustCompile(`^opensuse64Guest$`),
regexp.MustCompile(`^opensuseGuest$`),
regexp.MustCompile(`^oracleLinux(\d+)_64Guest$`),
regexp.MustCompile(`^oracleLinux64Guest$`),
regexp.MustCompile(`^oracleLinux(\d+)Guest$`),
regexp.MustCompile(`^oracleLinuxGuest$`),
regexp.MustCompile(`^os2Guest$`),
regexp.MustCompile(`^other(\d+)xLinux64Guest$`),
regexp.MustCompile(`^other(\d+)xLinuxGuest$`),
regexp.MustCompile(`^otherGuest64$`),
regexp.MustCompile(`^otherGuest$`),
regexp.MustCompile(`^otherLinux64Guest$`),
regexp.MustCompile(`^otherLinuxGuest$`),
regexp.MustCompile(`^redhatGuest$`),
regexp.MustCompile(`^rhel(\d+)_64Guest$`),
regexp.MustCompile(`^rhel(\d+)Guest$`),
regexp.MustCompile(`^rockylinux_64Guest$`),
regexp.MustCompile(`^sjdsGuest$`),
regexp.MustCompile(`^sles(\d+)_64Guest$`),
regexp.MustCompile(`^sles(\d+)Guest$`),
regexp.MustCompile(`^sles64Guest$`),
regexp.MustCompile(`^slesGuest$`),
regexp.MustCompile(`^solaris(\d+)_64Guest$`),
regexp.MustCompile(`^solaris(\d+)Guest$`),
regexp.MustCompile(`^suse64Guest$`),
regexp.MustCompile(`^suseGuest$`),
regexp.MustCompile(`^turboLinux64Guest$`),
regexp.MustCompile(`^turboLinuxGuest$`),
regexp.MustCompile(`^ubuntu64Guest$`),
regexp.MustCompile(`^ubuntuGuest$`),
regexp.MustCompile(`^unixWare7Guest$`),
regexp.MustCompile(`^vmkernel(\d+)Guest$`),
regexp.MustCompile(`^vmkernelGuest$`),
regexp.MustCompile(`^vmwarePhoton64Guest$`),
regexp.MustCompile(`^win(\d+)AdvServGuest$`),
regexp.MustCompile(`^win(\d+)ProGuest$`),
regexp.MustCompile(`^win(\d+)ServGuest$`),
regexp.MustCompile(`^win(\d+)Guest$`),
regexp.MustCompile(`^windows(\d+)_64Guest$`),
regexp.MustCompile(`^windows(\d+)srv_64Guest$`),
regexp.MustCompile(`^windows(\d+)srvNext_64Guest$`),
regexp.MustCompile(`^windows(\d+)Guest$`),
regexp.MustCompile(`^windows(\d+)Server64Guest$`),
regexp.MustCompile(`^winLonghorn64Guest$`),
regexp.MustCompile(`^winLonghornGuest$`),
regexp.MustCompile(`^winNetBusinessGuest$`),
regexp.MustCompile(`^winNetDatacenter64Guest$`),
regexp.MustCompile(`^winNetDatacenterGuest$`),
regexp.MustCompile(`^winNetEnterprise64Guest$`),
regexp.MustCompile(`^winNetEnterpriseGuest$`),
regexp.MustCompile(`^winNetStandard64Guest$`),
regexp.MustCompile(`^winNetStandardGuest$`),
regexp.MustCompile(`^winNetWebGuest$`),
regexp.MustCompile(`^winNTGuest$`),
regexp.MustCompile(`^winVista64Guest$`),
regexp.MustCompile(`^winVistaGuest$`),
regexp.MustCompile(`^winXPHomeGuest$`),
regexp.MustCompile(`^winXPPro64Guest$`),
regexp.MustCompile(`^winXPProGuest$`),
}
Loading
Loading