I have created a python script using the oVirt SDK but I can't find an API
to shutdown the hosted engine and hosts. I am guessing this isn't possible
using the API as if you shutdown the hosted engine the API will stop
working.
I guess the only way to stop the hosted engine and shutdown hosts is via
SSH or some kind of agent?
#!/usr/bin/env python
> import ovirtsdk4 as sdk
from ovirtsdk4 import types
> import time
> MINUTES_TO_WAIT=5
# must be run from infrastructure vlan
> ovaddress = "removed"
username="removed"
password="removed"
> connection = sdk.Connection(
url=ovaddress,
username=username,
password=password,
insecure=True
)
> system_service = connection.system_service()
vms_service = system_service.vms_service()
> # Shutdown VMs and put into global maintenance
vms = vms_service.list(search='status=up')
for vm in vms:
vm_service = vms_service.vm_service(vm.id)
if "HostedEngine" in vm.name:
vm_service.maintenance(maintenance_enabled=True)
print "Global maintenance enabled"
else:
vm_service.shutdown()
print ("%s shutdown" % (vm.name))
> # Wait for VMs to shutdown
for x in range(0, MINUTES_TO_WAIT):
time.sleep(60)
vms = vms_service.list(search='status=up')
if len(vms) == 1:
# Just the Hosted Engine left
break
for vm in vms:
vm_service = vms_service.vm_service(vm.id)
print ("waiting for %s to shutdown" % (vm.name))
> # Put hosts in local maintenance
hosts_service = connection.system_service().hosts_service()
hosts = hosts_service.list(search='status=up')
for host in hosts:
host_service = hosts_service.host_service(host.id)
if host.status != types.HostStatus.MAINTENANCE:
host_service.deactivate()
print ("%s put into maintenance mode" %(host.name))
> # Shutdown Hosted Engine?
# Shutdown hosts?
> connection.close()
On 24 April 2018 at 02:06, Doug Ingham <dougti(a)gmail.com> wrote:
I've plugged this into our monitoring.
When the UPS' are at 50%, it puts the general cluster into global
maintenance & then triggers a shutdown action on all of the VMs in the
cluster's service group via the monitoring agent (you could use an SNMP
trap if you use agentless monitoring). Once all of the VMs are down, it
then continues with the hosts.
At 20%, it does the same with our "core" cluster.
This method means that the HE can be shutdown, and it works whether the HE
is up or not.
For emergencies when the monitoring is offline, I've also hacked up a bash
script which parses the output of vdsClient & uses a loop to send a
shutdown signal to all of the VMs on each host.
Doug
On Mon, 23 Apr 2018, 14:14 Simon Vincent, <sv(a)srvincent.co.uk> wrote:
> Does anyone have a way of shutting down oVirt automatically in the case
> of a power outage?
>
> Ideally I would like a script that can be automatically run when the UPS
> reaches a certain level. I had a look at the python SDK but I could only
> find functions for shutting down VMs and not hosts. Also I suspect this
> wont let me shutdown the hosted engine VM.
>
> Any ideas?
>
> Regards
> _______________________________________________
> Users mailing list
> Users(a)ovirt.org
>
http://lists.ovirt.org/mailman/listinfo/users
>