Hi,
This patch adds support to libvirt to work with Hyper-V 2012 R2. This
will however mean
that Hyper-V 2008 will no longer be supported. Microsoft supports
hyperv 2008 management
via windows 7 and hyperv 2012 via windows 8.1 (note that the reverse
is not true, that is,
win 7 cannot manage hyperv 2012 and win 8.1 cannot manage hyperv
2008). I think they wanted
to keep the application code separate, in the sense that one manages
the old namespace and
the new one manages the new v2 namespace. The difference between the
two namespaces is not great
either, sadly, both of them have same class names but with different
field types (int, string etc.)
which have been separated by the namespace root/virtualization vs
root/virtualization/v2
For users who wish to use libvirt to manage Hyper-V 2008, using an
older version of libvirt <= 1.4.2 should work.
Since new Hyper-V 2008 drivers wont be contributed to libvirt anyway,
so it is not like the users will be missing on features.
And it is more likely that all future contributions to libvirt will be
on Hyper-V 2012 R2 and beyond.
diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c
index aed9307..0253496 100644
--- a/src/hyperv/hyperv_driver.c
+++ b/src/hyperv/hyperv_driver.c
@@ -893,8 +893,7 @@ hypervDomainGetXMLDesc(virDomainPtr domain,
unsigned int flags)
if (VIR_STRDUP(def->name, computerSystem->data->ElementName) < 0)
goto cleanup;
- if (VIR_STRDUP(def->description,
virtualSystemSettingData->data->Notes) < 0)
- goto cleanup;
+ // No need to check length of Notes, it is now a dynamic array
def->mem.max_balloon = memorySettingData->data->Limit * 1024; /*
megabyte to kilobyte */
def->mem.cur_balloon = memorySettingData->data->VirtualQuantity *
1024; /* megabyte to kilobyte */
diff --git a/src/hyperv/hyperv_wmi.c b/src/hyperv/hyperv_wmi.c
index 6e6f629..4c9ad34 100644
--- a/src/hyperv/hyperv_wmi.c
+++ b/src/hyperv/hyperv_wmi.c
@@ -39,7 +39,7 @@
"http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
#define ROOT_VIRTUALIZATION \
- "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/*"
+ "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/v2/*"
#define VIR_FROM_THIS VIR_FROM_HYPERV
diff --git a/src/hyperv/hyperv_wmi_generator.input
b/src/hyperv/hyperv_wmi_generator.input
index 97f9dff..bb0e8c1 100644
--- a/src/hyperv/hyperv_wmi_generator.input
+++ b/src/hyperv/hyperv_wmi_generator.input
@@ -20,6 +20,9 @@
#
# Based on MSDN Hyper-V WMI Classes:
#
http://msdn.microsoft.com/en-us/library/cc136986%28v=vs.85%29.aspx
+# Hyper-V 2012 version (root/virtualization/v2 namespace):
http://msdn.microsoft.com/en-us/library/hh850257(v=vs.85).aspx
+# + Currently, Classes {Msvm_MemorySettingData,
Msvm_ProcessorSettingData, Msvm_VirtualSystemSettingData} are in v2
namespace
+# + Will eventually need to upgrade the remainder of the
classes as well.
#
@@ -97,80 +100,90 @@ end
class Msvm_MemorySettingData
- string Caption
- string Description
- string InstanceID
- string ElementName
- uint16 ResourceType
- string OtherResourceType
- string ResourceSubType
- string PoolID
- uint16 ConsumerVisibility
- string HostResource[]
- string AllocationUnits
- uint64 VirtualQuantity
- uint64 Reservation
- uint64 Limit
- uint32 Weight
- boolean AutomaticAllocation
- boolean AutomaticDeallocation
- string Parent
- string Connection[]
- string Address
- uint16 MappingBehavior
- boolean IsVirtualized
- string DeviceID
- string DeviceIDFormat
- boolean DynamicMemoryEnabled
-# uint32 TargetMemoryBuffer # Available only on Windows Server 2008 R2 SP1
+ string InstanceID
+ string Caption
+ string Description
+ string ElementName
+ uint16 ResourceType
+ string OtherResourceType
+ string ResourceSubType
+ string PoolID
+ uint16 ConsumerVisibility
+ string HostResource[]
+ string AllocationUnits
+ uint64 VirtualQuantity
+ uint64 Reservation
+ uint64 Limit
+ uint32 Weight
+ boolean AutomaticAllocation
+ boolean AutomaticDeallocation
+ string Parent
+ string Connection[]
+ string Address
+ uint16 MappingBehavior
+ string AddressOnParent
+ string VirtualQuantityUnits
+ boolean DynamicMemoryEnabled
+ uint32 TargetMemoryBuffer
+ boolean IsVirtualized
+ boolean SwapFilesInUse
+ uint64 MaxMemoryBlocksPerNumaNode
end
class Msvm_ProcessorSettingData
- string Caption
- string Description
- string InstanceID
- string ElementName
- uint16 ResourceType
- string OtherResourceType
- string ResourceSubType
- string PoolID
- uint16 ConsumerVisibility
- string HostResource[]
- string AllocationUnits
- uint64 VirtualQuantity
- uint64 Reservation
- uint64 Limit
- uint32 Weight
- boolean AutomaticAllocation
- boolean AutomaticDeallocation
- string Parent
- string Connection[]
- string Address
- uint16 MappingBehavior
- boolean IsVirtualized
- string DeviceID
- string DeviceIDFormat
- uint16 ProcessorsPerSocket
- uint16 SocketCount
- boolean ThreadsEnabled
- boolean LimitCPUID
- boolean LimitProcessorFeatures
+ string InstanceID
+ string Caption
+ string Description
+ string ElementName
+ uint16 ResourceType
+ string OtherResourceType
+ string ResourceSubType
+ string PoolID
+ uint16 ConsumerVisibility
+ string HostResource[]
+ string AllocationUnits
+ uint64 VirtualQuantity
+ uint64 Reservation
+ uint64 Limit
+ uint32 Weight
+ boolean AutomaticAllocation
+ boolean AutomaticDeallocation
+ string Parent
+ string Connection[]
+ string Address
+ uint16 MappingBehavior
+ string AddressOnParent
+ string VirtualQuantityUnits
+ boolean LimitCPUID
+ boolean LimitProcessorFeatures
+ uint64 MaxProcessorsPerNumaNode
+ uint64 MaxNumaNodesPerSocket
end
class Msvm_VirtualSystemSettingData
+ string InstanceID
string Caption
string Description
string ElementName
- string InstanceID
- string SystemName
- uint16 SettingType
- uint16 VirtualSystemType
- string OtherVirtualSystemType
- boolean AutoActivate
+ string VirtualSystemIdentifier
+ string VirtualSystemType
+ string Notes[]
datetime CreationTime
- string Notes
+ string ConfigurationID
+ string ConfigurationDataRoot
+ string ConfigurationFile
+ string SnapshotDataRoot
+ string SuspendDataRoot
+ string SwapFileDataRoot
+ string LogDataRoot
+ uint16 AutomaticStartupAction
+ datetime AutomaticStartupActionDelay
+ uint16 AutomaticStartupActionSequenceNumber
+ uint16 AutomaticShutdownAction
+ uint16 AutomaticRecoveryAction
+ string RecoveryFile
string BIOSGUID
string BIOSSerialNumber
string BaseBoardSerialNumber
@@ -179,8 +192,22 @@ class Msvm_VirtualSystemSettingData
boolean BIOSNumLock
uint16 BootOrder[]
string Parent
- uint16 NumaNodeList[]
- boolean NumaNodesAreRequired
+ boolean IsSaved
+ string AdditionalRecoveryInformation
+ boolean AllowFullSCSICommandSet
+ uint32 DebugChannelId
+ uint16 DebugPortEnabled
+ uint32 DebugPort
+ string Version
+ boolean IncrementalBackupEnabled
+ boolean VirtualNumaEnabled
+ boolean AllowReducedFcRedundancy
+ string VirtualSystemSubType
+ string BootSourceOrder[]
+ boolean PauseAfterBootFailure
+ uint16 NetworkBootPreferredProtocol
+ boolean SecureBootEnabled
+ uint64 LowMmioGapSize
end
diff --git a/src/hyperv/hyperv_wmi_generator.py
b/src/hyperv/hyperv_wmi_generator.py
index f767d54..af3ce7e 100755
--- a/src/hyperv/hyperv_wmi_generator.py
+++ b/src/hyperv/hyperv_wmi_generator.py
@@ -71,7 +71,7 @@ class Class:
if self.name.startswith("Win32_"):
header += "
\"http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/%s\"\n" %
self.name
else:
- header += "
\"http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/%s\"\n"
% self.name
+ header += "
\"http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/v2/%s\"\n"
% self.name
header += "\n"
header += "#define %s_CLASSNAME \\\n" % name_upper