SDK中mo.VirtualMachine构造体定义如下:
type VirtualMachine struct { ManagedEntity Capability types.VirtualMachineCapability `mo:"capability"` Config *types.VirtualMachineConfigInfo `mo:"config"` Layout *types.VirtualMachineFileLayout `mo:"layout"` LayoutEx *types.VirtualMachineFileLayoutEx `mo:"layoutEx"` Storage *types.VirtualMachineStorageInfo `mo:"storage"` EnvironmentBrowser types.ManagedObjectReference `mo:"environmentBrowser"` ResourcePool *types.ManagedObjectReference `mo:"resourcePool"` ParentVApp *types.ManagedObjectReference `mo:"parentVApp"` ResourceConfig *types.ResourceConfigSpec `mo:"resourceConfig"` Runtime types.VirtualMachineRuntimeInfo `mo:"runtime"` Guest *types.GuestInfo `mo:"guest"` Summary types.VirtualMachineSummary `mo:"summary"` Datastore []types.ManagedObjectReference `mo:"datastore"` Network []types.ManagedObjectReference `mo:"network"` Snapshot *types.VirtualMachineSnapshotInfo `mo:"snapshot"` RootSnapshot []types.ManagedObjectReference `mo:"rootSnapshot"` GuestHeartbeatStatus types.ManagedEntityStatus `mo:"guestHeartbeatStatus"`}应用fmt.Printf("%#v",该构造体的实例),返回值如下:
mo.VirtualMachine{ManagedEntity:mo.ManagedEntity{ExtensibleManagedObject:mo.ExtensibleManagedObject{Self:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Value:[]types.BaseCustomFieldValue(nil), AvailableField:[]types.CustomFieldDef(nil)}, Parent:(*types.ManagedObjectReference)(0xc0002cd240), CustomValue:[]types.BaseCustomFieldValue(nil), OverallStatus:"green", ConfigStatus:"green", ConfigIssue:[]types.BaseEvent(nil), EffectiveRole:[]int32{-2}, Permission:[]types.Permission(nil), Name:"IDCOMD.192.168.111.207.JumpServer", DisabledMethod:[]string{"MakePrimaryVM_Task", "TerminateFaultTolerantVM_Task", "ResetVM_Task", "UnmountToolsInstaller", "MountToolsInstaller", "MountToolsInstallerImage", "RebootGuest", "StandbyGuest", "ShutdownGuest", "PowerOffVM_Task", "ExtractOvfEnvironment", "SuspendVM_Task", "AcquireMksTicket", "AnswerVM", "UpgradeVM_Task", "UpgradeTools_Task", "UpgradeToolsFromImage_Task", "StartRecording_Task", "StopRecording_Task", "StartReplaying_Task", "StopReplaying_Task", "TurnOffFaultToleranceForVM_Task", "MakePrimaryVM_Task", "TerminateFaultTolerantVM_Task", "DisableSecondaryVM_Task", "EnableSecondaryVM_Task", "CreateSecondaryVM_Task", "CreateSecondaryVMEx_Task", "StopRecording_Task", "StopReplaying_Task", "MarkAsVirtualMachine"}, RecentTask:[]types.ManagedObjectReference(nil), DeclaredAlarmState:[]types.AlarmState{types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-10.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-10"}, OverallStatus:"gray", Time:time.Time{wall:0x20a77770, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003de040), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-11.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-11"}, OverallStatus:"gray", Time:time.Time{wall:0x21124b18, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003de190), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-2.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-2"}, OverallStatus:"gray", Time:time.Time{wall:0x23562868, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003de2e0), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-23.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-23"}, OverallStatus:"gray", Time:time.Time{wall:0x23a273a8, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003de430), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-26.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-26"}, OverallStatus:"gray", Time:time.Time{wall:0x23eebee8, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003de580), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-30.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-30"}, OverallStatus:"gray", Time:time.Time{wall:0x243b0e10, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003de6d0), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-49.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-49"}, OverallStatus:"gray", Time:time.Time{wall:0x251fefd0, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003de820), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-50.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-50"}, OverallStatus:"gray", Time:time.Time{wall:0x254dba78, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003de970), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-51.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-51"}, OverallStatus:"gray", Time:time.Time{wall:0x257b8138, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003deac0), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-59.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-59"}, OverallStatus:"gray", Time:time.Time{wall:0x25d70eb8, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003dec10), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-6.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-6"}, OverallStatus:"gray", Time:time.Time{wall:0x2604d578, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003ded60), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-65.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-65"}, OverallStatus:"gray", Time:time.Time{wall:0x266066e0, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003deeb0), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-67.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-67"}, OverallStatus:"gray", Time:time.Time{wall:0x268e2da0, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003df000), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-7.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-7"}, OverallStatus:"gray", Time:time.Time{wall:0x26bbf460, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003df150), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}, types.AlarmState{DynamicData:types.DynamicData{}, Key:"alarm-95.vm-60", Entity:types.ManagedObjectReference{Type:"VirtualMachine", Value:"vm-60"}, Alarm:types.ManagedObjectReference{Type:"Alarm", Value:"alarm-95"}, OverallStatus:"gray", Time:time.Time{wall:0x27bf5e88, ext:63700308213, loc:(*time.Location)(nil)}, Acknowledged:(*bool)(0xc0003df2a0), AcknowledgedByUser:"", AcknowledgedTime:(*time.Time)(nil), EventKey:0}}, TriggeredAlarmState:[]types.AlarmState(nil), AlarmActionsEnabled:(*bool)(0xc000544dd8), Tag:[]types.Tag(nil)}, Capability:types.VirtualMachineCapability{DynamicData:types.DynamicData{}, SnapshotOperationsSupported:true, MultipleSnapshotsSupported:true, SnapshotConfigSupported:true, PoweredOffSnapshotsSupported:true, MemorySnapshotsSupported:true, RevertToSnapshotSupported:true, QuiescedSnapshotsSupported:true, DisableSnapshotsSupported:false, LockSnapshotsSupported:true, ConsolePreferencesSupported:false, CpuFeatureMaskSupported:true, S1AcpiManagementSupported:true, SettingScreenResolutionSupported:false, ToolsAutoUpdateSupported:false, VmNpivWwnSupported:true, NpivWwnOnNonRdmVmSupported:true, VmNpivWwnDisableSupported:(*bool)(0xc000026e5c), VmNpivWwnUpdateSupported:(*bool)(0xc000026e6c), SwapPlacementSupported:true, ToolsSyncTimeSupported:true, VirtualMmuUsageSupported:true, DiskSharesSupported:true, BootOptionsSupported:true, BootRetryOptionsSupported:(*bool)(0xc000026ecc), SettingVideoRamSizeSupported:true, SettingDisplayTopologySupported:(*bool)(0xc000026eec), RecordReplaySupported:(*bool)(0xc000026efd), ChangeTrackingSupported:(*bool)(0xc000026f0c), MultipleCoresPerSocketSupported:(*bool)(0xc000026f1c), HostBasedReplicationSupported:(*bool)(0xc000026f2c), GuestAutoLockSupported:(*bool)(0xc000026f3c), MemoryReservationLockSupported:(*bool)(0xc000026f4c), FeatureRequirementSupported:(*bool)(0xc000026f5c), PoweredOnMonitorTypeChangeSupported:(*bool)(0xc000026f6c), SeSparseDiskSupported:(*bool)(0xc000026f7c), NestedHVSupported:(*bool)(0xc000026f8c), VPMCSupported:(*bool)(0xc000026f9c), SecureBootSupported:(*bool)(nil), PerVmEvcSupported:(*bool)(nil), VirtualMmuUsageIgnored:(*bool)(nil), VirtualExecUsageIgnored:(*bool)(nil), DiskOnlySnapshotOnSuspendedVMSupported:(*bool)(nil)}, Config:(*types.VirtualMachineConfigInfo)(0xc0005d4000), Layout:(*types.VirtualMachineFileLayout)(0xc00044b260), LayoutEx:(*types.VirtualMachineFileLayoutEx)(0xc0003b6960), Storage:(*types.VirtualMachineStorageInfo)(0xc0005d8000), EnvironmentBrowser:types.ManagedObjectReference{Type:"EnvironmentBrowser", Value:"envbrowser-60"}, ResourcePool:(*types.ManagedObjectReference)(0xc000534020), ParentVApp:(*types.ManagedObjectReference)(nil), ResourceConfig:(*types.ResourceConfigSpec)(0xc0001120e0), Runtime:types.VirtualMachineRuntimeInfo{DynamicData:types.DynamicData{}, Device:[]types.VirtualMachineDeviceRuntimeInfo{types.VirtualMachineDeviceRuntimeInfo{DynamicData:types.DynamicData{}, RuntimeState:(*types.VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState)(0xc000208c80), Key:4000}, types.VirtualMachineDeviceRuntimeInfo{DynamicData:types.DynamicData{}, RuntimeState:(*types.VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState)(0xc000208d00), Key:4001}}, Host:(*types.ManagedObjectReference)(0xc0004059a0), ConnectionState:"connected", PowerState:"poweredOff", FaultToleranceState:"notConfigured", DasVmProtection:(*types.VirtualMachineRuntimeInfoDasProtectionState)(nil), ToolsInstallerMounted:false, SuspendTime:(*time.Time)(nil), BootTime:(*time.Time)(nil), SuspendInterval:0, Question:(*types.VirtualMachineQuestionInfo)(nil), MemoryOverhead:0, MaxCpuUsage:0, MaxMemoryUsage:0, NumMksConnections:0, RecordReplayState:"inactive", CleanPowerOff:(*bool)(nil), NeedSecondaryReason:"", OnlineStandby:(*bool)(0xc0003ff04d), MinRequiredEVCModeKey:"", ConsolidationNeeded:(*bool)(0xc0003ff05d), OfflineFeatureRequirement:[]types.VirtualMachineFeatureRequirement{types.VirtualMachineFeatureRequirement{DynamicData:types.DynamicData{}, Key:"cpuid.lm", FeatureName:"cpuid.lm", Value:"Bool:Min:1"}}, FeatureRequirement:[]types.VirtualMachineFeatureRequirement(nil), FeatureMask:[]types.HostFeatureMask(nil), VFlashCacheAllocation:0, Paused:(*bool)(0xc0003ff120), SnapshotInBackground:(*bool)(0xc0003ff13b), QuiescedForkParent:(*bool)(nil), InstantCloneFrozen:(*bool)(nil), CryptoState:""}, Guest:(*types.GuestInfo)(0xc000192f00), Summary:types.VirtualMachineSummary{DynamicData:types.DynamicData{}, Vm:(*types.ManagedObjectReference)(0xc000416500), Runtime:types.VirtualMachineRuntimeInfo{DynamicData:types.DynamicData{}, Device:[]types.VirtualMachineDeviceRuntimeInfo{types.VirtualMachineDeviceRuntimeInfo{DynamicData:types.DynamicData{}, RuntimeState:(*types.VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState)(0xc000208d80), Key:4000}, types.VirtualMachineDeviceRuntimeInfo{DynamicData:types.DynamicData{}, RuntimeState:(*types.VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState)(0xc000208e00), Key:4001}}, Host:(*types.ManagedObjectReference)(0xc000416b60), ConnectionState:"connected", PowerState:"poweredOff", FaultToleranceState:"notConfigured", DasVmProtection:(*types.VirtualMachineRuntimeInfoDasProtectionState)(nil), ToolsInstallerMounted:false, SuspendTime:(*time.Time)(nil), BootTime:(*time.Time)(nil), SuspendInterval:0, Question:(*types.VirtualMachineQuestionInfo)(nil), MemoryOverhead:0, MaxCpuUsage:0, MaxMemoryUsage:0, NumMksConnections:0, RecordReplayState:"inactive", CleanPowerOff:(*bool)(nil), NeedSecondaryReason:"", OnlineStandby:(*bool)(0xc0003ff8bd), MinRequiredEVCModeKey:"", ConsolidationNeeded:(*bool)(0xc0003ff8cd), OfflineFeatureRequirement:[]types.VirtualMachineFeatureRequirement{types.VirtualMachineFeatureRequirement{DynamicData:types.DynamicData{}, Key:"cpuid.lm", FeatureName:"cpuid.lm", Value:"Bool:Min:1"}}, FeatureRequirement:[]types.VirtualMachineFeatureRequirement(nil), FeatureMask:[]types.HostFeatureMask(nil), VFlashCacheAllocation:0, Paused:(*bool)(0xc0003ff966), SnapshotInBackground:(*bool)(0xc0003ff97b), QuiescedForkParent:(*bool)(nil), InstantCloneFrozen:(*bool)(nil), CryptoState:""}, Guest:(*types.VirtualMachineGuestSummary)(0xc000208e80), Config:types.VirtualMachineConfigSummary{DynamicData:types.DynamicData{}, Name:"IDCOMD.192.168.111.207.JumpServer", Template:false, VmPathName:"[VOL02] IDCOMD.192.168.111.207.JumpServer/IDCOMD.192.168.111.207.JumpServer.vmx", MemorySizeMB:8192, CpuReservation:0, MemoryReservation:0, NumCpu:12, NumEthernetCards:2, NumVirtualDisks:1, Uuid:"420ecd79-a338-89a5-0eb8-977dd843814d", InstanceUuid:"500e347d-daeb-8379-9b85-af1b18d6bb2f", GuestId:"centos64Guest", GuestFullName:"CentOS 4/5/6/7 (64-bit)", Annotation:"", Product:(*types.VAppProductInfo)(nil), InstallBootRequired:(*bool)(0xc0003ffcba), FtInfo:types.BaseFaultToleranceConfigInfo(nil), ManagedBy:(*types.ManagedByInfo)(nil), TpmPresent:(*bool)(nil), NumVmiopBackings:0}, Storage:(*types.VirtualMachineStorageSummary)(0xc000091740), QuickStats:types.VirtualMachineQuickStats{DynamicData:types.DynamicData{}, OverallCpuUsage:0, OverallCpuDemand:0, GuestMemoryUsage:0, HostMemoryUsage:0, GuestHeartbeatStatus:"gray", DistributedCpuEntitlement:0, DistributedMemoryEntitlement:0, StaticCpuEntitlement:0, StaticMemoryEntitlement:0, PrivateMemory:0, SharedMemory:0, SwappedMemory:0, BalloonedMemory:0, ConsumedOverheadMemory:0, FtLogBandwidth:-1, FtSecondaryLatency:-1, FtLatencyStatus:"gray", CompressedMemory:0, UptimeSeconds:0, SsdSwappedMemory:0}, OverallStatus:"green", CustomValue:[]types.BaseCustomFieldValue(nil)}, Datastore:[]types.ManagedObjectReference{types.ManagedObjectReference{Type:"Datastore", Value:"datastore-211"}}, Network:[]types.ManagedObjectReference{types.ManagedObjectReference{Type:"Network", Value:"network-16"}}, Snapshot:(*types.VirtualMachineSnapshotInfo)(nil), RootSnapshot:[]types.ManagedObjectReference(nil), GuestHeartbeatStatus:"gray"}这段返回值,纯字符串长度15636;如果再思考到其中嵌套的层层构造体,齐全能够堪称'宏大'.
...