On Fri, Aug 09, 2013 at 10:13:03AM +0200,
surface(a)me.is-a-linux-user.org wrote:
> Hello
>
> The "version" function is not supported by the hyperv driver:
> $ virsh --connect=hyperv://hypervhost version
> Compiled against library: libvirt 1.1.1
> Using library: libvirt 1.1.1
> Using API: Hyper-V 1.1.1
> error: failed to get the hypervisor version
> error: this function is not supported by the connection driver:
> virConnectGetVersion
>
> But we need this funtion for the "external/libvirt" stonith plugin
> of clusterglue:
>
> $ cat /usr/lib/stonith/plugins/libvirt | more
> # get status of stonith device (*NOT* of the domain).
> # If we can retrieve some info from the hypervisor
> # the stonith device is OK.
> libvirt_status() {
> out=$($VIRSH -c $hypervisor_uri version 2>&1)
> if [ $? -eq 0 ]
> then
> out=`echo "$out" | tail -1`
> ha_log.sh notice "$hypervisor_uri: $out"
> return 0
> fi
>
> ha_log.sh err "Failed to get status for $hypervisor_uri"
> ha_log.sh err "$out"
> return 1
> }
>
> So, we can't implement libvirt stonith with hyperv support in our
> corosync/pacemaker cluster. Is it possible to implement the
> "version" function for hyperv into virConnectGetVersion? Or exist
> any workaround for this problem?
I'm sure its possible, but it needs someone with knowledge of the
Hyper-V apis to write a patch and there's only a couple of people
in libvirt comunity who can do that. Patches welcome from any able
person...
Daniel
Hi Daniel
I don't know which api is used for the driver handling, maybe you mean
this one here:
http://msdn.microsoft.com/en-us/library/aa155227.aspx
I tested the following command on our micro$oft server:
PS C:\Users\administrator> gwmi -namespace "root\virtualization"
Msvm_VirtualSystemManagementService
__GENUS : 2
__CLASS : Msvm_VirtualSystemManagementService
__SUPERCLASS : CIM_VirtualSystemManagementService
__DYNASTY : CIM_ManagedElement
__RELPATH :
Msvm_VirtualSystemManagementService.CreationClassName="Msvm_VirtualSystemManagementService",N
ame="vmms",SystemCreationClassName="Msvm_ComputerSystem",SystemName="VSRV1"
__PROPERTY_COUNT : 21
__DERIVATION : {CIM_VirtualSystemManagementService,
CIM_Service, CIM_EnabledLogicalElement,
CIM_LogicalElement...}
__SERVER : VSRV1
__NAMESPACE : root\virtualization
__PATH :
\\VSRV1\root\virtualization:Msvm_VirtualSystemManagementService.CreationClassName="Msvm_
VirtualSystemManagementService",Name="vmms",SystemCreationClassName="Msvm_ComputerSystem",Sys
temName="VSRV1"
Caption : Hyper-V Virtual System Management Service
CreationClassName : Msvm_VirtualSystemManagementService
Description : Service for creating, manipulating, and
managing virtual systems
ElementName : Hyper-V Virtual System Management Service
EnabledDefault : 2
EnabledState : 2
HealthState : 5
InstallDate : 20130717120539.000000-000
Name : vmms
OperationalStatus : {2}
OtherEnabledState :
PrimaryOwnerContact :
PrimaryOwnerName :
RequestedState : 12
Started : True
StartMode :
Status : OK
StatusDescriptions : {The service is running normally}
SystemCreationClassName : Msvm_ComputerSystem
SystemName : VSRV1
TimeOfLastStateChange : 20130801095437.000000-000
PSComputerName : VSRV1
so I think we can query the state like this:
PS C:\Users\administrator> gwmi -namespace "root\virtualization"
Msvm_VirtualSystemManagementService | select Status
Status
------
OK
It's not the version, but we need something to let libvirt stonith know,
that the stonith device can connect to hyperv and the hyperv service is
running..