diff --git a/api/v1alpha1/guestosdescriptor_types.go b/api/v1alpha1/guestosdescriptor_types.go new file mode 100644 index 0000000..83112fd --- /dev/null +++ b/api/v1alpha1/guestosdescriptor_types.go @@ -0,0 +1,58 @@ +// Copyright (c) 2022 VMware, Inc. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +//go:generate go run ./internal/generate_guestosidentifiers.go + +package v1alpha1 + +// VirtualMachineGuestOSDescriptor is used to specify information about the +// +type VirtualMachineGuestOSDescriptor struct { + // VirtualMachineGuestOSIdentifier is the guest OS identifier. + // + // If ommited the Family field is used to determine a default + // VirtualMachineGuestOSIdentifier value. + // + // +optional + ID VirtualMachineGuestOSIdentifier `json:"id,omitempty"` + + // VirtualMachineGuestOSFamily specifies the family of the guest OS. + // + // If omitted the VirtualMachineImage is used to attempt to determine + // the guest's family and/or ID. + // + // +optional + Family VirtualMachineGuestOSFamily `json:"family,omitempty"` +} + +// VirtualMachineGuestOSFamily specifies the family of the guest OS. +type VirtualMachineGuestOSFamily string + +const ( + VirtualMachineGuestOSFamilyWindows VirtualMachineGuestOSFamily = "windowsGuest" + VirtualMachineGuestOSFamilyLinux VirtualMachineGuestOSFamily = "linuxGuest" + VirtualMachineGuestOSFamilyNovellNetware VirtualMachineGuestOSFamily = "netwareGuest" + VirtualMachineGuestOSFamilySolaris VirtualMachineGuestOSFamily = "solarisGuest" + VirtualMachineGuestOSFamilyDarwin VirtualMachineGuestOSFamily = "darwinGuestFamily" + VirtualMachineGuestOSFamilyOther VirtualMachineGuestOSFamily = "otherGuestFamily" +) + +// VirtualMachineGuestOSIdentifier is the guest operating system identifier. +type VirtualMachineGuestOSIdentifier string + +// validVirtualMachineGuestOSIdentifiers is a map used to determine if a +// VirtualMachineGuestOSIdentifier value is valid. +var validVirtualMachineGuestOSIdentifiers map[VirtualMachineGuestOSIdentifier]struct{} + +// IsValidVirtualMachineGuestOSIdentifier returns true if the provided value is +// valid. +func IsValidVirtualMachineGuestOSIdentifier(s string) bool { + return VirtualMachineGuestOSIdentifier(s).IsValid() +} + +// IsValidVirtualMachineGuestOSIdentifier returns true if the identifier is +// valid. +func (e VirtualMachineGuestOSIdentifier) IsValid() bool { + _, ok := validVirtualMachineGuestOSIdentifiers[e] + return ok +} diff --git a/api/v1alpha1/guestosdescriptor_types_test.go b/api/v1alpha1/guestosdescriptor_types_test.go new file mode 100644 index 0000000..c1dec1b --- /dev/null +++ b/api/v1alpha1/guestosdescriptor_types_test.go @@ -0,0 +1,64 @@ +// Copyright (c) 2020 VMware, Inc. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package v1alpha1_test + +import ( + "testing" + + "github.com/vmware-tanzu/vm-operator-api/api/v1alpha1" +) + +func TestIsValidVirtualMachineGuestOSIdentifier(t *testing.T) { + + t.Run("valid", func(t *testing.T) { + testCases := []struct { + name string + id string + }{ + { + name: "otherLinuxGuest", + id: "otherLinuxGuest", + }, + { + name: "genericLinuxGuest", + id: "genericLinuxGuest", + }, + } + for i := range testCases { + tc := testCases[i] + t.Run(tc.name, func(t *testing.T) { + if !v1alpha1.IsValidVirtualMachineGuestOSIdentifier(tc.id) { + t.Errorf("%s is invalid & should be valid", tc.id) + } + + }) + } + }) + + t.Run("invalid", func(t *testing.T) { + testCases := []struct { + name string + id string + }{ + { + name: "windows", + id: "windows", + }, + { + name: "windowsGuest", + id: "windowsGuest", + }, + } + for i := range testCases { + tc := testCases[i] + t.Run(tc.name, func(t *testing.T) { + if v1alpha1.IsValidVirtualMachineGuestOSIdentifier(tc.id) { + t.Errorf("%s is valid & should be invalid", tc.id) + } + + }) + } + }) + +} diff --git a/api/v1alpha1/guestosidentifier_types.go b/api/v1alpha1/guestosidentifier_types.go new file mode 100644 index 0000000..6798b7f --- /dev/null +++ b/api/v1alpha1/guestosidentifier_types.go @@ -0,0 +1,406 @@ +// Copyright (c) 2022 VMware, Inc. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// +// !! GENERATED CONTENT -- DO NOT MODIFY DIRECTLY !! +// + +package v1alpha1 + +const ( + VirtualMachineGuestOSIdentifierDosGuest VirtualMachineGuestOSIdentifier = "dosGuest" + VirtualMachineGuestOSIdentifierWin31Guest VirtualMachineGuestOSIdentifier = "win31Guest" + VirtualMachineGuestOSIdentifierWin95Guest VirtualMachineGuestOSIdentifier = "win95Guest" + VirtualMachineGuestOSIdentifierWin98Guest VirtualMachineGuestOSIdentifier = "win98Guest" + VirtualMachineGuestOSIdentifierWinMeGuest VirtualMachineGuestOSIdentifier = "winMeGuest" + VirtualMachineGuestOSIdentifierWinNTGuest VirtualMachineGuestOSIdentifier = "winNTGuest" + VirtualMachineGuestOSIdentifierWin2000ProGuest VirtualMachineGuestOSIdentifier = "win2000ProGuest" + VirtualMachineGuestOSIdentifierWin2000ServGuest VirtualMachineGuestOSIdentifier = "win2000ServGuest" + VirtualMachineGuestOSIdentifierWin2000AdvServGuest VirtualMachineGuestOSIdentifier = "win2000AdvServGuest" + VirtualMachineGuestOSIdentifierWinXPHomeGuest VirtualMachineGuestOSIdentifier = "winXPHomeGuest" + VirtualMachineGuestOSIdentifierWinXPProGuest VirtualMachineGuestOSIdentifier = "winXPProGuest" + VirtualMachineGuestOSIdentifierWinXPPro64Guest VirtualMachineGuestOSIdentifier = "winXPPro64Guest" + VirtualMachineGuestOSIdentifierWinNetWebGuest VirtualMachineGuestOSIdentifier = "winNetWebGuest" + VirtualMachineGuestOSIdentifierWinNetStandardGuest VirtualMachineGuestOSIdentifier = "winNetStandardGuest" + VirtualMachineGuestOSIdentifierWinNetEnterpriseGuest VirtualMachineGuestOSIdentifier = "winNetEnterpriseGuest" + VirtualMachineGuestOSIdentifierWinNetDatacenterGuest VirtualMachineGuestOSIdentifier = "winNetDatacenterGuest" + VirtualMachineGuestOSIdentifierWinNetBusinessGuest VirtualMachineGuestOSIdentifier = "winNetBusinessGuest" + VirtualMachineGuestOSIdentifierWinNetStandard64Guest VirtualMachineGuestOSIdentifier = "winNetStandard64Guest" + VirtualMachineGuestOSIdentifierWinNetEnterprise64Guest VirtualMachineGuestOSIdentifier = "winNetEnterprise64Guest" + VirtualMachineGuestOSIdentifierWinLonghornGuest VirtualMachineGuestOSIdentifier = "winLonghornGuest" + VirtualMachineGuestOSIdentifierWinLonghorn64Guest VirtualMachineGuestOSIdentifier = "winLonghorn64Guest" + VirtualMachineGuestOSIdentifierWinNetDatacenter64Guest VirtualMachineGuestOSIdentifier = "winNetDatacenter64Guest" + VirtualMachineGuestOSIdentifierWinVistaGuest VirtualMachineGuestOSIdentifier = "winVistaGuest" + VirtualMachineGuestOSIdentifierWinVista64Guest VirtualMachineGuestOSIdentifier = "winVista64Guest" + VirtualMachineGuestOSIdentifierWindows7Guest VirtualMachineGuestOSIdentifier = "windows7Guest" + VirtualMachineGuestOSIdentifierWindows7_64Guest VirtualMachineGuestOSIdentifier = "windows7_64Guest" + VirtualMachineGuestOSIdentifierWindows7Server64Guest VirtualMachineGuestOSIdentifier = "windows7Server64Guest" + VirtualMachineGuestOSIdentifierWindows8Guest VirtualMachineGuestOSIdentifier = "windows8Guest" + VirtualMachineGuestOSIdentifierWindows8_64Guest VirtualMachineGuestOSIdentifier = "windows8_64Guest" + VirtualMachineGuestOSIdentifierWindows8Server64Guest VirtualMachineGuestOSIdentifier = "windows8Server64Guest" + VirtualMachineGuestOSIdentifierWindows9Guest VirtualMachineGuestOSIdentifier = "windows9Guest" + VirtualMachineGuestOSIdentifierWindows9_64Guest VirtualMachineGuestOSIdentifier = "windows9_64Guest" + VirtualMachineGuestOSIdentifierWindows9Server64Guest VirtualMachineGuestOSIdentifier = "windows9Server64Guest" + VirtualMachineGuestOSIdentifierWindows11_64Guest VirtualMachineGuestOSIdentifier = "windows11_64Guest" + VirtualMachineGuestOSIdentifierWindows12_64Guest VirtualMachineGuestOSIdentifier = "windows12_64Guest" + VirtualMachineGuestOSIdentifierWindowsHyperVGuest VirtualMachineGuestOSIdentifier = "windowsHyperVGuest" + VirtualMachineGuestOSIdentifierWindows2019srv_64Guest VirtualMachineGuestOSIdentifier = "windows2019srv_64Guest" + VirtualMachineGuestOSIdentifierWindows2019srvNext_64Guest VirtualMachineGuestOSIdentifier = "windows2019srvNext_64Guest" + VirtualMachineGuestOSIdentifierWindows2022srvNext_64Guest VirtualMachineGuestOSIdentifier = "windows2022srvNext_64Guest" + VirtualMachineGuestOSIdentifierFreebsdGuest VirtualMachineGuestOSIdentifier = "freebsdGuest" + VirtualMachineGuestOSIdentifierFreebsd64Guest VirtualMachineGuestOSIdentifier = "freebsd64Guest" + VirtualMachineGuestOSIdentifierFreebsd11Guest VirtualMachineGuestOSIdentifier = "freebsd11Guest" + VirtualMachineGuestOSIdentifierFreebsd11_64Guest VirtualMachineGuestOSIdentifier = "freebsd11_64Guest" + VirtualMachineGuestOSIdentifierFreebsd12Guest VirtualMachineGuestOSIdentifier = "freebsd12Guest" + VirtualMachineGuestOSIdentifierFreebsd12_64Guest VirtualMachineGuestOSIdentifier = "freebsd12_64Guest" + VirtualMachineGuestOSIdentifierFreebsd13Guest VirtualMachineGuestOSIdentifier = "freebsd13Guest" + VirtualMachineGuestOSIdentifierFreebsd13_64Guest VirtualMachineGuestOSIdentifier = "freebsd13_64Guest" + VirtualMachineGuestOSIdentifierFreebsd14Guest VirtualMachineGuestOSIdentifier = "freebsd14Guest" + VirtualMachineGuestOSIdentifierFreebsd14_64Guest VirtualMachineGuestOSIdentifier = "freebsd14_64Guest" + VirtualMachineGuestOSIdentifierRedhatGuest VirtualMachineGuestOSIdentifier = "redhatGuest" + VirtualMachineGuestOSIdentifierRhel2Guest VirtualMachineGuestOSIdentifier = "rhel2Guest" + VirtualMachineGuestOSIdentifierRhel3Guest VirtualMachineGuestOSIdentifier = "rhel3Guest" + VirtualMachineGuestOSIdentifierRhel3_64Guest VirtualMachineGuestOSIdentifier = "rhel3_64Guest" + VirtualMachineGuestOSIdentifierRhel4Guest VirtualMachineGuestOSIdentifier = "rhel4Guest" + VirtualMachineGuestOSIdentifierRhel4_64Guest VirtualMachineGuestOSIdentifier = "rhel4_64Guest" + VirtualMachineGuestOSIdentifierRhel5Guest VirtualMachineGuestOSIdentifier = "rhel5Guest" + VirtualMachineGuestOSIdentifierRhel5_64Guest VirtualMachineGuestOSIdentifier = "rhel5_64Guest" + VirtualMachineGuestOSIdentifierRhel6Guest VirtualMachineGuestOSIdentifier = "rhel6Guest" + VirtualMachineGuestOSIdentifierRhel6_64Guest VirtualMachineGuestOSIdentifier = "rhel6_64Guest" + VirtualMachineGuestOSIdentifierRhel7Guest VirtualMachineGuestOSIdentifier = "rhel7Guest" + VirtualMachineGuestOSIdentifierRhel7_64Guest VirtualMachineGuestOSIdentifier = "rhel7_64Guest" + VirtualMachineGuestOSIdentifierRhel8_64Guest VirtualMachineGuestOSIdentifier = "rhel8_64Guest" + VirtualMachineGuestOSIdentifierRhel9_64Guest VirtualMachineGuestOSIdentifier = "rhel9_64Guest" + VirtualMachineGuestOSIdentifierCentosGuest VirtualMachineGuestOSIdentifier = "centosGuest" + VirtualMachineGuestOSIdentifierCentos64Guest VirtualMachineGuestOSIdentifier = "centos64Guest" + VirtualMachineGuestOSIdentifierCentos6Guest VirtualMachineGuestOSIdentifier = "centos6Guest" + VirtualMachineGuestOSIdentifierCentos6_64Guest VirtualMachineGuestOSIdentifier = "centos6_64Guest" + VirtualMachineGuestOSIdentifierCentos7Guest VirtualMachineGuestOSIdentifier = "centos7Guest" + VirtualMachineGuestOSIdentifierCentos7_64Guest VirtualMachineGuestOSIdentifier = "centos7_64Guest" + VirtualMachineGuestOSIdentifierCentos8_64Guest VirtualMachineGuestOSIdentifier = "centos8_64Guest" + VirtualMachineGuestOSIdentifierCentos9_64Guest VirtualMachineGuestOSIdentifier = "centos9_64Guest" + VirtualMachineGuestOSIdentifierOracleLinuxGuest VirtualMachineGuestOSIdentifier = "oracleLinuxGuest" + VirtualMachineGuestOSIdentifierOracleLinux64Guest VirtualMachineGuestOSIdentifier = "oracleLinux64Guest" + VirtualMachineGuestOSIdentifierOracleLinux6Guest VirtualMachineGuestOSIdentifier = "oracleLinux6Guest" + VirtualMachineGuestOSIdentifierOracleLinux6_64Guest VirtualMachineGuestOSIdentifier = "oracleLinux6_64Guest" + VirtualMachineGuestOSIdentifierOracleLinux7Guest VirtualMachineGuestOSIdentifier = "oracleLinux7Guest" + VirtualMachineGuestOSIdentifierOracleLinux7_64Guest VirtualMachineGuestOSIdentifier = "oracleLinux7_64Guest" + VirtualMachineGuestOSIdentifierOracleLinux8_64Guest VirtualMachineGuestOSIdentifier = "oracleLinux8_64Guest" + VirtualMachineGuestOSIdentifierOracleLinux9_64Guest VirtualMachineGuestOSIdentifier = "oracleLinux9_64Guest" + VirtualMachineGuestOSIdentifierSuseGuest VirtualMachineGuestOSIdentifier = "suseGuest" + VirtualMachineGuestOSIdentifierSuse64Guest VirtualMachineGuestOSIdentifier = "suse64Guest" + VirtualMachineGuestOSIdentifierSlesGuest VirtualMachineGuestOSIdentifier = "slesGuest" + VirtualMachineGuestOSIdentifierSles64Guest VirtualMachineGuestOSIdentifier = "sles64Guest" + VirtualMachineGuestOSIdentifierSles10Guest VirtualMachineGuestOSIdentifier = "sles10Guest" + VirtualMachineGuestOSIdentifierSles10_64Guest VirtualMachineGuestOSIdentifier = "sles10_64Guest" + VirtualMachineGuestOSIdentifierSles11Guest VirtualMachineGuestOSIdentifier = "sles11Guest" + VirtualMachineGuestOSIdentifierSles11_64Guest VirtualMachineGuestOSIdentifier = "sles11_64Guest" + VirtualMachineGuestOSIdentifierSles12Guest VirtualMachineGuestOSIdentifier = "sles12Guest" + VirtualMachineGuestOSIdentifierSles12_64Guest VirtualMachineGuestOSIdentifier = "sles12_64Guest" + VirtualMachineGuestOSIdentifierSles15_64Guest VirtualMachineGuestOSIdentifier = "sles15_64Guest" + VirtualMachineGuestOSIdentifierSles16_64Guest VirtualMachineGuestOSIdentifier = "sles16_64Guest" + VirtualMachineGuestOSIdentifierNld9Guest VirtualMachineGuestOSIdentifier = "nld9Guest" + VirtualMachineGuestOSIdentifierOesGuest VirtualMachineGuestOSIdentifier = "oesGuest" + VirtualMachineGuestOSIdentifierSjdsGuest VirtualMachineGuestOSIdentifier = "sjdsGuest" + VirtualMachineGuestOSIdentifierMandrakeGuest VirtualMachineGuestOSIdentifier = "mandrakeGuest" + VirtualMachineGuestOSIdentifierMandrivaGuest VirtualMachineGuestOSIdentifier = "mandrivaGuest" + VirtualMachineGuestOSIdentifierMandriva64Guest VirtualMachineGuestOSIdentifier = "mandriva64Guest" + VirtualMachineGuestOSIdentifierTurboLinuxGuest VirtualMachineGuestOSIdentifier = "turboLinuxGuest" + VirtualMachineGuestOSIdentifierTurboLinux64Guest VirtualMachineGuestOSIdentifier = "turboLinux64Guest" + VirtualMachineGuestOSIdentifierUbuntuGuest VirtualMachineGuestOSIdentifier = "ubuntuGuest" + VirtualMachineGuestOSIdentifierUbuntu64Guest VirtualMachineGuestOSIdentifier = "ubuntu64Guest" + VirtualMachineGuestOSIdentifierDebian4Guest VirtualMachineGuestOSIdentifier = "debian4Guest" + VirtualMachineGuestOSIdentifierDebian4_64Guest VirtualMachineGuestOSIdentifier = "debian4_64Guest" + VirtualMachineGuestOSIdentifierDebian5Guest VirtualMachineGuestOSIdentifier = "debian5Guest" + VirtualMachineGuestOSIdentifierDebian5_64Guest VirtualMachineGuestOSIdentifier = "debian5_64Guest" + VirtualMachineGuestOSIdentifierDebian6Guest VirtualMachineGuestOSIdentifier = "debian6Guest" + VirtualMachineGuestOSIdentifierDebian6_64Guest VirtualMachineGuestOSIdentifier = "debian6_64Guest" + VirtualMachineGuestOSIdentifierDebian7Guest VirtualMachineGuestOSIdentifier = "debian7Guest" + VirtualMachineGuestOSIdentifierDebian7_64Guest VirtualMachineGuestOSIdentifier = "debian7_64Guest" + VirtualMachineGuestOSIdentifierDebian8Guest VirtualMachineGuestOSIdentifier = "debian8Guest" + VirtualMachineGuestOSIdentifierDebian8_64Guest VirtualMachineGuestOSIdentifier = "debian8_64Guest" + VirtualMachineGuestOSIdentifierDebian9Guest VirtualMachineGuestOSIdentifier = "debian9Guest" + VirtualMachineGuestOSIdentifierDebian9_64Guest VirtualMachineGuestOSIdentifier = "debian9_64Guest" + VirtualMachineGuestOSIdentifierDebian10Guest VirtualMachineGuestOSIdentifier = "debian10Guest" + VirtualMachineGuestOSIdentifierDebian10_64Guest VirtualMachineGuestOSIdentifier = "debian10_64Guest" + VirtualMachineGuestOSIdentifierDebian11Guest VirtualMachineGuestOSIdentifier = "debian11Guest" + VirtualMachineGuestOSIdentifierDebian11_64Guest VirtualMachineGuestOSIdentifier = "debian11_64Guest" + VirtualMachineGuestOSIdentifierDebian12Guest VirtualMachineGuestOSIdentifier = "debian12Guest" + VirtualMachineGuestOSIdentifierDebian12_64Guest VirtualMachineGuestOSIdentifier = "debian12_64Guest" + VirtualMachineGuestOSIdentifierAsianux3Guest VirtualMachineGuestOSIdentifier = "asianux3Guest" + VirtualMachineGuestOSIdentifierAsianux3_64Guest VirtualMachineGuestOSIdentifier = "asianux3_64Guest" + VirtualMachineGuestOSIdentifierAsianux4Guest VirtualMachineGuestOSIdentifier = "asianux4Guest" + VirtualMachineGuestOSIdentifierAsianux4_64Guest VirtualMachineGuestOSIdentifier = "asianux4_64Guest" + VirtualMachineGuestOSIdentifierAsianux5_64Guest VirtualMachineGuestOSIdentifier = "asianux5_64Guest" + VirtualMachineGuestOSIdentifierAsianux7_64Guest VirtualMachineGuestOSIdentifier = "asianux7_64Guest" + VirtualMachineGuestOSIdentifierAsianux8_64Guest VirtualMachineGuestOSIdentifier = "asianux8_64Guest" + VirtualMachineGuestOSIdentifierAsianux9_64Guest VirtualMachineGuestOSIdentifier = "asianux9_64Guest" + VirtualMachineGuestOSIdentifierOpensuseGuest VirtualMachineGuestOSIdentifier = "opensuseGuest" + VirtualMachineGuestOSIdentifierOpensuse64Guest VirtualMachineGuestOSIdentifier = "opensuse64Guest" + VirtualMachineGuestOSIdentifierFedoraGuest VirtualMachineGuestOSIdentifier = "fedoraGuest" + VirtualMachineGuestOSIdentifierFedora64Guest VirtualMachineGuestOSIdentifier = "fedora64Guest" + VirtualMachineGuestOSIdentifierCoreos64Guest VirtualMachineGuestOSIdentifier = "coreos64Guest" + VirtualMachineGuestOSIdentifierVmwarePhoton64Guest VirtualMachineGuestOSIdentifier = "vmwarePhoton64Guest" + VirtualMachineGuestOSIdentifierOther24xLinuxGuest VirtualMachineGuestOSIdentifier = "other24xLinuxGuest" + VirtualMachineGuestOSIdentifierOther26xLinuxGuest VirtualMachineGuestOSIdentifier = "other26xLinuxGuest" + VirtualMachineGuestOSIdentifierOtherLinuxGuest VirtualMachineGuestOSIdentifier = "otherLinuxGuest" + VirtualMachineGuestOSIdentifierOther3xLinuxGuest VirtualMachineGuestOSIdentifier = "other3xLinuxGuest" + VirtualMachineGuestOSIdentifierOther4xLinuxGuest VirtualMachineGuestOSIdentifier = "other4xLinuxGuest" + VirtualMachineGuestOSIdentifierOther5xLinuxGuest VirtualMachineGuestOSIdentifier = "other5xLinuxGuest" + VirtualMachineGuestOSIdentifierOther6xLinuxGuest VirtualMachineGuestOSIdentifier = "other6xLinuxGuest" + VirtualMachineGuestOSIdentifierGenericLinuxGuest VirtualMachineGuestOSIdentifier = "genericLinuxGuest" + VirtualMachineGuestOSIdentifierOther24xLinux64Guest VirtualMachineGuestOSIdentifier = "other24xLinux64Guest" + VirtualMachineGuestOSIdentifierOther26xLinux64Guest VirtualMachineGuestOSIdentifier = "other26xLinux64Guest" + VirtualMachineGuestOSIdentifierOther3xLinux64Guest VirtualMachineGuestOSIdentifier = "other3xLinux64Guest" + VirtualMachineGuestOSIdentifierOther4xLinux64Guest VirtualMachineGuestOSIdentifier = "other4xLinux64Guest" + VirtualMachineGuestOSIdentifierOther5xLinux64Guest VirtualMachineGuestOSIdentifier = "other5xLinux64Guest" + VirtualMachineGuestOSIdentifierOther6xLinux64Guest VirtualMachineGuestOSIdentifier = "other6xLinux64Guest" + VirtualMachineGuestOSIdentifierOtherLinux64Guest VirtualMachineGuestOSIdentifier = "otherLinux64Guest" + VirtualMachineGuestOSIdentifierSolaris6Guest VirtualMachineGuestOSIdentifier = "solaris6Guest" + VirtualMachineGuestOSIdentifierSolaris7Guest VirtualMachineGuestOSIdentifier = "solaris7Guest" + VirtualMachineGuestOSIdentifierSolaris8Guest VirtualMachineGuestOSIdentifier = "solaris8Guest" + VirtualMachineGuestOSIdentifierSolaris9Guest VirtualMachineGuestOSIdentifier = "solaris9Guest" + VirtualMachineGuestOSIdentifierSolaris10Guest VirtualMachineGuestOSIdentifier = "solaris10Guest" + VirtualMachineGuestOSIdentifierSolaris10_64Guest VirtualMachineGuestOSIdentifier = "solaris10_64Guest" + VirtualMachineGuestOSIdentifierSolaris11_64Guest VirtualMachineGuestOSIdentifier = "solaris11_64Guest" + VirtualMachineGuestOSIdentifierOs2Guest VirtualMachineGuestOSIdentifier = "os2Guest" + VirtualMachineGuestOSIdentifierEComStationGuest VirtualMachineGuestOSIdentifier = "eComStationGuest" + VirtualMachineGuestOSIdentifierEComStation2Guest VirtualMachineGuestOSIdentifier = "eComStation2Guest" + VirtualMachineGuestOSIdentifierNetware4Guest VirtualMachineGuestOSIdentifier = "netware4Guest" + VirtualMachineGuestOSIdentifierNetware5Guest VirtualMachineGuestOSIdentifier = "netware5Guest" + VirtualMachineGuestOSIdentifierNetware6Guest VirtualMachineGuestOSIdentifier = "netware6Guest" + VirtualMachineGuestOSIdentifierOpenServer5Guest VirtualMachineGuestOSIdentifier = "openServer5Guest" + VirtualMachineGuestOSIdentifierOpenServer6Guest VirtualMachineGuestOSIdentifier = "openServer6Guest" + VirtualMachineGuestOSIdentifierUnixWare7Guest VirtualMachineGuestOSIdentifier = "unixWare7Guest" + VirtualMachineGuestOSIdentifierDarwinGuest VirtualMachineGuestOSIdentifier = "darwinGuest" + VirtualMachineGuestOSIdentifierDarwin64Guest VirtualMachineGuestOSIdentifier = "darwin64Guest" + VirtualMachineGuestOSIdentifierDarwin10Guest VirtualMachineGuestOSIdentifier = "darwin10Guest" + VirtualMachineGuestOSIdentifierDarwin10_64Guest VirtualMachineGuestOSIdentifier = "darwin10_64Guest" + VirtualMachineGuestOSIdentifierDarwin11Guest VirtualMachineGuestOSIdentifier = "darwin11Guest" + VirtualMachineGuestOSIdentifierDarwin11_64Guest VirtualMachineGuestOSIdentifier = "darwin11_64Guest" + VirtualMachineGuestOSIdentifierDarwin12_64Guest VirtualMachineGuestOSIdentifier = "darwin12_64Guest" + VirtualMachineGuestOSIdentifierDarwin13_64Guest VirtualMachineGuestOSIdentifier = "darwin13_64Guest" + VirtualMachineGuestOSIdentifierDarwin14_64Guest VirtualMachineGuestOSIdentifier = "darwin14_64Guest" + VirtualMachineGuestOSIdentifierDarwin15_64Guest VirtualMachineGuestOSIdentifier = "darwin15_64Guest" + VirtualMachineGuestOSIdentifierDarwin16_64Guest VirtualMachineGuestOSIdentifier = "darwin16_64Guest" + VirtualMachineGuestOSIdentifierDarwin17_64Guest VirtualMachineGuestOSIdentifier = "darwin17_64Guest" + VirtualMachineGuestOSIdentifierDarwin18_64Guest VirtualMachineGuestOSIdentifier = "darwin18_64Guest" + VirtualMachineGuestOSIdentifierDarwin19_64Guest VirtualMachineGuestOSIdentifier = "darwin19_64Guest" + VirtualMachineGuestOSIdentifierDarwin20_64Guest VirtualMachineGuestOSIdentifier = "darwin20_64Guest" + VirtualMachineGuestOSIdentifierDarwin21_64Guest VirtualMachineGuestOSIdentifier = "darwin21_64Guest" + VirtualMachineGuestOSIdentifierDarwin22_64Guest VirtualMachineGuestOSIdentifier = "darwin22_64Guest" + VirtualMachineGuestOSIdentifierDarwin23_64Guest VirtualMachineGuestOSIdentifier = "darwin23_64Guest" + VirtualMachineGuestOSIdentifierVmkernelGuest VirtualMachineGuestOSIdentifier = "vmkernelGuest" + VirtualMachineGuestOSIdentifierVmkernel5Guest VirtualMachineGuestOSIdentifier = "vmkernel5Guest" + VirtualMachineGuestOSIdentifierVmkernel6Guest VirtualMachineGuestOSIdentifier = "vmkernel6Guest" + VirtualMachineGuestOSIdentifierVmkernel65Guest VirtualMachineGuestOSIdentifier = "vmkernel65Guest" + VirtualMachineGuestOSIdentifierVmkernel7Guest VirtualMachineGuestOSIdentifier = "vmkernel7Guest" + VirtualMachineGuestOSIdentifierVmkernel8Guest VirtualMachineGuestOSIdentifier = "vmkernel8Guest" + VirtualMachineGuestOSIdentifierAmazonlinux2_64Guest VirtualMachineGuestOSIdentifier = "amazonlinux2_64Guest" + VirtualMachineGuestOSIdentifierAmazonlinux3_64Guest VirtualMachineGuestOSIdentifier = "amazonlinux3_64Guest" + VirtualMachineGuestOSIdentifierCrxPod1Guest VirtualMachineGuestOSIdentifier = "crxPod1Guest" + VirtualMachineGuestOSIdentifierRockylinux_64Guest VirtualMachineGuestOSIdentifier = "rockylinux_64Guest" + VirtualMachineGuestOSIdentifierAlmalinux_64Guest VirtualMachineGuestOSIdentifier = "almalinux_64Guest" + VirtualMachineGuestOSIdentifierOtherGuest VirtualMachineGuestOSIdentifier = "otherGuest" + VirtualMachineGuestOSIdentifierOtherGuest64 VirtualMachineGuestOSIdentifier = "otherGuest64" +) + +func init() { + validVirtualMachineGuestOSIdentifiers = map[VirtualMachineGuestOSIdentifier]struct{}{ + VirtualMachineGuestOSIdentifierDosGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWin31Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWin95Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWin98Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWinMeGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinNTGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWin2000ProGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWin2000ServGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWin2000AdvServGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinXPHomeGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinXPProGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinXPPro64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWinNetWebGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinNetStandardGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinNetEnterpriseGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinNetDatacenterGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinNetBusinessGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinNetStandard64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWinNetEnterprise64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWinLonghornGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinLonghorn64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWinNetDatacenter64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWinVistaGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWinVista64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows7Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows7_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows7Server64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows8Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows8_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows8Server64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows9Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows9_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows9Server64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows11_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows12_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindowsHyperVGuest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows2019srv_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows2019srvNext_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierWindows2022srvNext_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierFreebsdGuest: struct{}{}, + VirtualMachineGuestOSIdentifierFreebsd64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierFreebsd11Guest: struct{}{}, + VirtualMachineGuestOSIdentifierFreebsd11_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierFreebsd12Guest: struct{}{}, + VirtualMachineGuestOSIdentifierFreebsd12_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierFreebsd13Guest: struct{}{}, + VirtualMachineGuestOSIdentifierFreebsd13_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierFreebsd14Guest: struct{}{}, + VirtualMachineGuestOSIdentifierFreebsd14_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRedhatGuest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel2Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel3Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel3_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel4Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel4_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel5Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel5_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel6Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel6_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel7Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel7_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel8_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRhel9_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierCentosGuest: struct{}{}, + VirtualMachineGuestOSIdentifierCentos64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierCentos6Guest: struct{}{}, + VirtualMachineGuestOSIdentifierCentos6_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierCentos7Guest: struct{}{}, + VirtualMachineGuestOSIdentifierCentos7_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierCentos8_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierCentos9_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOracleLinuxGuest: struct{}{}, + VirtualMachineGuestOSIdentifierOracleLinux64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOracleLinux6Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOracleLinux6_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOracleLinux7Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOracleLinux7_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOracleLinux8_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOracleLinux9_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSuseGuest: struct{}{}, + VirtualMachineGuestOSIdentifierSuse64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSlesGuest: struct{}{}, + VirtualMachineGuestOSIdentifierSles64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSles10Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSles10_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSles11Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSles11_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSles12Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSles12_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSles15_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSles16_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierNld9Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOesGuest: struct{}{}, + VirtualMachineGuestOSIdentifierSjdsGuest: struct{}{}, + VirtualMachineGuestOSIdentifierMandrakeGuest: struct{}{}, + VirtualMachineGuestOSIdentifierMandrivaGuest: struct{}{}, + VirtualMachineGuestOSIdentifierMandriva64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierTurboLinuxGuest: struct{}{}, + VirtualMachineGuestOSIdentifierTurboLinux64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierUbuntuGuest: struct{}{}, + VirtualMachineGuestOSIdentifierUbuntu64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian4Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian4_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian5Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian5_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian6Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian6_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian7Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian7_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian8Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian8_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian9Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian9_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian10Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian10_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian11Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian11_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian12Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDebian12_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAsianux3Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAsianux3_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAsianux4Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAsianux4_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAsianux5_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAsianux7_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAsianux8_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAsianux9_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOpensuseGuest: struct{}{}, + VirtualMachineGuestOSIdentifierOpensuse64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierFedoraGuest: struct{}{}, + VirtualMachineGuestOSIdentifierFedora64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierCoreos64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierVmwarePhoton64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOther24xLinuxGuest: struct{}{}, + VirtualMachineGuestOSIdentifierOther26xLinuxGuest: struct{}{}, + VirtualMachineGuestOSIdentifierOtherLinuxGuest: struct{}{}, + VirtualMachineGuestOSIdentifierOther3xLinuxGuest: struct{}{}, + VirtualMachineGuestOSIdentifierOther4xLinuxGuest: struct{}{}, + VirtualMachineGuestOSIdentifierOther5xLinuxGuest: struct{}{}, + VirtualMachineGuestOSIdentifierOther6xLinuxGuest: struct{}{}, + VirtualMachineGuestOSIdentifierGenericLinuxGuest: struct{}{}, + VirtualMachineGuestOSIdentifierOther24xLinux64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOther26xLinux64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOther3xLinux64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOther4xLinux64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOther5xLinux64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOther6xLinux64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOtherLinux64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSolaris6Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSolaris7Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSolaris8Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSolaris9Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSolaris10Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSolaris10_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierSolaris11_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOs2Guest: struct{}{}, + VirtualMachineGuestOSIdentifierEComStationGuest: struct{}{}, + VirtualMachineGuestOSIdentifierEComStation2Guest: struct{}{}, + VirtualMachineGuestOSIdentifierNetware4Guest: struct{}{}, + VirtualMachineGuestOSIdentifierNetware5Guest: struct{}{}, + VirtualMachineGuestOSIdentifierNetware6Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOpenServer5Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOpenServer6Guest: struct{}{}, + VirtualMachineGuestOSIdentifierUnixWare7Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwinGuest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin10Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin10_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin11Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin11_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin12_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin13_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin14_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin15_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin16_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin17_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin18_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin19_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin20_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin21_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin22_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierDarwin23_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierVmkernelGuest: struct{}{}, + VirtualMachineGuestOSIdentifierVmkernel5Guest: struct{}{}, + VirtualMachineGuestOSIdentifierVmkernel6Guest: struct{}{}, + VirtualMachineGuestOSIdentifierVmkernel65Guest: struct{}{}, + VirtualMachineGuestOSIdentifierVmkernel7Guest: struct{}{}, + VirtualMachineGuestOSIdentifierVmkernel8Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAmazonlinux2_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAmazonlinux3_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierCrxPod1Guest: struct{}{}, + VirtualMachineGuestOSIdentifierRockylinux_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierAlmalinux_64Guest: struct{}{}, + VirtualMachineGuestOSIdentifierOtherGuest: struct{}{}, + VirtualMachineGuestOSIdentifierOtherGuest64: struct{}{}, + } +} diff --git a/api/v1alpha1/internal/generate_guestosidentifiers.go b/api/v1alpha1/internal/generate_guestosidentifiers.go new file mode 100644 index 0000000..a307ec9 --- /dev/null +++ b/api/v1alpha1/internal/generate_guestosidentifiers.go @@ -0,0 +1,85 @@ +// Copyright (c) 2022 VMware, Inc. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +//go:build guestosidentifier_types +// +build guestosidentifier_types + +package main + +import ( + "encoding/csv" + "fmt" + "io" + "os" + "os/exec" +) + +func main() { + generate() + format() +} + +func generate() { + out, err := os.Create("guestosidentifier_types.go") + if err != nil { + os.Stderr.WriteString(err.Error()) + os.Exit(1) + } + defer out.Close() + + out.WriteString(`// Copyright (c) 2022 VMware, Inc. All Rights Reserved. + // SPDX-License-Identifier: Apache-2.0 + + // + // !! GENERATED CONTENT -- DO NOT MODIFY DIRECTLY !! + // + + package v1alpha1 + + const (`) + + in, err := os.Open("./internal/guestosidentifiers.csv") + if err != nil { + os.Stderr.WriteString(err.Error()) + os.Exit(1) + } + defer in.Close() + + var guestOSIDConstantNames []string + r := csv.NewReader(in) + r.Comment = '`' + + for { + data, err := r.Read() + if err != nil { + if err == io.EOF { + break + } + os.Stderr.WriteString(err.Error()) + os.Exit(1) + } + + guestOSIDConstName := "VirtualMachineGuestOSIdentifier" + data[1] + guestOSIDConstantNames = append(guestOSIDConstantNames, guestOSIDConstName) + fmt.Fprintf(out, "\t%s VirtualMachineGuestOSIdentifier = \"%s\"\n", guestOSIDConstName, data[0]) + } + + fmt.Fprintf(out, ")\n") + out.WriteString(` + func init() { + validVirtualMachineGuestOSIdentifiers = map[VirtualMachineGuestOSIdentifier]struct{}{ + `) + for _, name := range guestOSIDConstantNames { + fmt.Fprintf(out, "%s: struct{}{},\n", name) + } + out.WriteString(`}}`) +} + +func format() { + cmd := exec.Command("go", "fmt", "guestosidentifier_types.go") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + os.Exit(1) + } +} diff --git a/api/v1alpha1/internal/guestosidentifiers.csv b/api/v1alpha1/internal/guestosidentifiers.csv new file mode 100644 index 0000000..52da7f4 --- /dev/null +++ b/api/v1alpha1/internal/guestosidentifiers.csv @@ -0,0 +1,209 @@ +` Copyright (c) 2022 VMware, Inc. All Rights Reserved. +` SPDX-License-Identifier: Apache-2.0 +` +` lines beginning with "`" are treated as comments +` +` the first column is the guest ID +` +` the second column is the Go-formatted field name suffix that will be appended +` to VirtualMachineGuestOSIdentifier. For example: +` +` dosGuest,DosGuest +` +` becomes VirtualMachineGuestOSIdentifierDosGuest = "dosGuest" + +dosGuest,DosGuest +win31Guest,Win31Guest +win95Guest,Win95Guest +win98Guest,Win98Guest +winMeGuest,WinMeGuest +winNTGuest,WinNTGuest +win2000ProGuest,Win2000ProGuest +win2000ServGuest,Win2000ServGuest +win2000AdvServGuest,Win2000AdvServGuest +winXPHomeGuest,WinXPHomeGuest +winXPProGuest,WinXPProGuest +winXPPro64Guest,WinXPPro64Guest +winNetWebGuest,WinNetWebGuest +winNetStandardGuest,WinNetStandardGuest +winNetEnterpriseGuest,WinNetEnterpriseGuest +winNetDatacenterGuest,WinNetDatacenterGuest +winNetBusinessGuest,WinNetBusinessGuest +winNetStandard64Guest,WinNetStandard64Guest +winNetEnterprise64Guest,WinNetEnterprise64Guest +winLonghornGuest,WinLonghornGuest +winLonghorn64Guest,WinLonghorn64Guest +winNetDatacenter64Guest,WinNetDatacenter64Guest +winVistaGuest,WinVistaGuest +winVista64Guest,WinVista64Guest +windows7Guest,Windows7Guest +windows7_64Guest,Windows7_64Guest +windows7Server64Guest,Windows7Server64Guest +windows8Guest,Windows8Guest +windows8_64Guest,Windows8_64Guest +windows8Server64Guest,Windows8Server64Guest +windows9Guest,Windows9Guest +windows9_64Guest,Windows9_64Guest +windows9Server64Guest,Windows9Server64Guest +windows11_64Guest,Windows11_64Guest +windows12_64Guest,Windows12_64Guest +windowsHyperVGuest,WindowsHyperVGuest +windows2019srv_64Guest,Windows2019srv_64Guest +windows2019srvNext_64Guest,Windows2019srvNext_64Guest +windows2022srvNext_64Guest,Windows2022srvNext_64Guest +freebsdGuest,FreebsdGuest +freebsd64Guest,Freebsd64Guest +freebsd11Guest,Freebsd11Guest +freebsd11_64Guest,Freebsd11_64Guest +freebsd12Guest,Freebsd12Guest +freebsd12_64Guest,Freebsd12_64Guest +freebsd13Guest,Freebsd13Guest +freebsd13_64Guest,Freebsd13_64Guest +freebsd14Guest,Freebsd14Guest +freebsd14_64Guest,Freebsd14_64Guest +redhatGuest,RedhatGuest +rhel2Guest,Rhel2Guest +rhel3Guest,Rhel3Guest +rhel3_64Guest,Rhel3_64Guest +rhel4Guest,Rhel4Guest +rhel4_64Guest,Rhel4_64Guest +rhel5Guest,Rhel5Guest +rhel5_64Guest,Rhel5_64Guest +rhel6Guest,Rhel6Guest +rhel6_64Guest,Rhel6_64Guest +rhel7Guest,Rhel7Guest +rhel7_64Guest,Rhel7_64Guest +rhel8_64Guest,Rhel8_64Guest +rhel9_64Guest,Rhel9_64Guest +centosGuest,CentosGuest +centos64Guest,Centos64Guest +centos6Guest,Centos6Guest +centos6_64Guest,Centos6_64Guest +centos7Guest,Centos7Guest +centos7_64Guest,Centos7_64Guest +centos8_64Guest,Centos8_64Guest +centos9_64Guest,Centos9_64Guest +oracleLinuxGuest,OracleLinuxGuest +oracleLinux64Guest,OracleLinux64Guest +oracleLinux6Guest,OracleLinux6Guest +oracleLinux6_64Guest,OracleLinux6_64Guest +oracleLinux7Guest,OracleLinux7Guest +oracleLinux7_64Guest,OracleLinux7_64Guest +oracleLinux8_64Guest,OracleLinux8_64Guest +oracleLinux9_64Guest,OracleLinux9_64Guest +suseGuest,SuseGuest +suse64Guest,Suse64Guest +slesGuest,SlesGuest +sles64Guest,Sles64Guest +sles10Guest,Sles10Guest +sles10_64Guest,Sles10_64Guest +sles11Guest,Sles11Guest +sles11_64Guest,Sles11_64Guest +sles12Guest,Sles12Guest +sles12_64Guest,Sles12_64Guest +sles15_64Guest,Sles15_64Guest +sles16_64Guest,Sles16_64Guest +nld9Guest,Nld9Guest +oesGuest,OesGuest +sjdsGuest,SjdsGuest +mandrakeGuest,MandrakeGuest +mandrivaGuest,MandrivaGuest +mandriva64Guest,Mandriva64Guest +turboLinuxGuest,TurboLinuxGuest +turboLinux64Guest,TurboLinux64Guest +ubuntuGuest,UbuntuGuest +ubuntu64Guest,Ubuntu64Guest +debian4Guest,Debian4Guest +debian4_64Guest,Debian4_64Guest +debian5Guest,Debian5Guest +debian5_64Guest,Debian5_64Guest +debian6Guest,Debian6Guest +debian6_64Guest,Debian6_64Guest +debian7Guest,Debian7Guest +debian7_64Guest,Debian7_64Guest +debian8Guest,Debian8Guest +debian8_64Guest,Debian8_64Guest +debian9Guest,Debian9Guest +debian9_64Guest,Debian9_64Guest +debian10Guest,Debian10Guest +debian10_64Guest,Debian10_64Guest +debian11Guest,Debian11Guest +debian11_64Guest,Debian11_64Guest +debian12Guest,Debian12Guest +debian12_64Guest,Debian12_64Guest +asianux3Guest,Asianux3Guest +asianux3_64Guest,Asianux3_64Guest +asianux4Guest,Asianux4Guest +asianux4_64Guest,Asianux4_64Guest +asianux5_64Guest,Asianux5_64Guest +asianux7_64Guest,Asianux7_64Guest +asianux8_64Guest,Asianux8_64Guest +asianux9_64Guest,Asianux9_64Guest +opensuseGuest,OpensuseGuest +opensuse64Guest,Opensuse64Guest +fedoraGuest,FedoraGuest +fedora64Guest,Fedora64Guest +coreos64Guest,Coreos64Guest +vmwarePhoton64Guest,VmwarePhoton64Guest +other24xLinuxGuest,Other24xLinuxGuest +other26xLinuxGuest,Other26xLinuxGuest +otherLinuxGuest,OtherLinuxGuest +other3xLinuxGuest,Other3xLinuxGuest +other4xLinuxGuest,Other4xLinuxGuest +other5xLinuxGuest,Other5xLinuxGuest +other6xLinuxGuest,Other6xLinuxGuest +genericLinuxGuest,GenericLinuxGuest +other24xLinux64Guest,Other24xLinux64Guest +other26xLinux64Guest,Other26xLinux64Guest +other3xLinux64Guest,Other3xLinux64Guest +other4xLinux64Guest,Other4xLinux64Guest +other5xLinux64Guest,Other5xLinux64Guest +other6xLinux64Guest,Other6xLinux64Guest +otherLinux64Guest,OtherLinux64Guest +solaris6Guest,Solaris6Guest +solaris7Guest,Solaris7Guest +solaris8Guest,Solaris8Guest +solaris9Guest,Solaris9Guest +solaris10Guest,Solaris10Guest +solaris10_64Guest,Solaris10_64Guest +solaris11_64Guest,Solaris11_64Guest +os2Guest,Os2Guest +eComStationGuest,EComStationGuest +eComStation2Guest,EComStation2Guest +netware4Guest,Netware4Guest +netware5Guest,Netware5Guest +netware6Guest,Netware6Guest +openServer5Guest,OpenServer5Guest +openServer6Guest,OpenServer6Guest +unixWare7Guest,UnixWare7Guest +darwinGuest,DarwinGuest +darwin64Guest,Darwin64Guest +darwin10Guest,Darwin10Guest +darwin10_64Guest,Darwin10_64Guest +darwin11Guest,Darwin11Guest +darwin11_64Guest,Darwin11_64Guest +darwin12_64Guest,Darwin12_64Guest +darwin13_64Guest,Darwin13_64Guest +darwin14_64Guest,Darwin14_64Guest +darwin15_64Guest,Darwin15_64Guest +darwin16_64Guest,Darwin16_64Guest +darwin17_64Guest,Darwin17_64Guest +darwin18_64Guest,Darwin18_64Guest +darwin19_64Guest,Darwin19_64Guest +darwin20_64Guest,Darwin20_64Guest +darwin21_64Guest,Darwin21_64Guest +darwin22_64Guest,Darwin22_64Guest +darwin23_64Guest,Darwin23_64Guest +vmkernelGuest,VmkernelGuest +vmkernel5Guest,Vmkernel5Guest +vmkernel6Guest,Vmkernel6Guest +vmkernel65Guest,Vmkernel65Guest +vmkernel7Guest,Vmkernel7Guest +vmkernel8Guest,Vmkernel8Guest +amazonlinux2_64Guest,Amazonlinux2_64Guest +amazonlinux3_64Guest,Amazonlinux3_64Guest +crxPod1Guest,CrxPod1Guest +rockylinux_64Guest,Rockylinux_64Guest +almalinux_64Guest,Almalinux_64Guest +otherGuest,OtherGuest +otherGuest64,OtherGuest64 \ No newline at end of file diff --git a/api/v1alpha1/virtualmachine_types.go b/api/v1alpha1/virtualmachine_types.go index 7f966d7..2e640a5 100644 --- a/api/v1alpha1/virtualmachine_types.go +++ b/api/v1alpha1/virtualmachine_types.go @@ -294,6 +294,17 @@ type VirtualMachineSpec struct { // instance. See VirtualMachineClass for more description. ClassName string `json:"className"` + // GuestOS describes information about the guest OS, such as its intended + // family and ID. + // + // This information may be used to control how guest customization is + // applied (ex. Linux vs Windows) as well as the specificity of how much + // knowledge VMware Tools has about the guest operating system when running + // the customization logic in the guest. + // + // +optional + GuestOS VirtualMachineGuestOSDescriptor `json:"guestOS,omitempty"` + // PowerState describes the desired power state of a VirtualMachine. Valid power states are "poweredOff" and "poweredOn". PowerState VirtualMachinePowerState `json:"powerState"` diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 9e7840c..d95860e 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -942,6 +942,21 @@ func (in *VirtualMachineConfigSpec) DeepCopy() *VirtualMachineConfigSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VirtualMachineGuestOSDescriptor) DeepCopyInto(out *VirtualMachineGuestOSDescriptor) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMachineGuestOSDescriptor. +func (in *VirtualMachineGuestOSDescriptor) DeepCopy() *VirtualMachineGuestOSDescriptor { + if in == nil { + return nil + } + out := new(VirtualMachineGuestOSDescriptor) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VirtualMachineImage) DeepCopyInto(out *VirtualMachineImage) { *out = *in @@ -1408,6 +1423,7 @@ func (in *VirtualMachineSetResourcePolicyStatus) DeepCopy() *VirtualMachineSetRe // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VirtualMachineSpec) DeepCopyInto(out *VirtualMachineSpec) { *out = *in + out.GuestOS = in.GuestOS if in.Ports != nil { in, out := &in.Ports, &out.Ports *out = make([]VirtualMachinePort, len(*in))