Skip to content

Commit

Permalink
Replace calls of vms.list with more effecient ones
Browse files Browse the repository at this point in the history
Fixes issue #32: #32
  • Loading branch information
KKoukiou committed Mar 30, 2017
1 parent 8445f2b commit 6563e92
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 29 deletions.
4 changes: 2 additions & 2 deletions backup.py
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ def main(argv):
continue
snapshot_param = params.Snapshot(id=snapshots[0].id)
snapshots_param = params.Snapshots(snapshot=[snapshot_param])
logger.info("Clone into VM started ...")
logger.info("Clone into VM (%s) started ..." % vm_clone_name)
if not config.get_dry_run():
api.vms.add(params.VM(name=vm_clone_name, memory=vm.get_memory(), cluster=api.clusters.get(config.get_cluster_name()), snapshots=snapshots_param))
VMTools.wait_for_vm_operation(api, config, "Cloning", vm_from_list)
Expand All @@ -302,7 +302,7 @@ def main(argv):
# Export the VM
try:
vm_clone = api.vms.get(vm_clone_name)
logger.info("Export started ...")
logger.info("Export of VM (%s) started ..." % vm_clone_name)
if not config.get_dry_run():
vm_clone.export(params.Action(storage_domain=api.storagedomains.get(config.get_export_domain())))
VMTools.wait_for_vm_operation(api, config, "Exporting", vm_from_list)
Expand Down
54 changes: 27 additions & 27 deletions vmtools.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,24 +79,24 @@ def delete_vm(api, config, vm_name):
i_vm_name = ""
done = False
try:
for i in api.vms.list():
vm_search_regexp = ("name=%s%s*" % (vm_name, config.get_vm_middle()))
for i in api.vms.list(query=vm_search_regexp):
i_vm_name = str(i.get_name())
if i_vm_name.startswith(vm_name + config.get_vm_middle()):
logger.info("Delete cloned VM started ...")
if not config.get_dry_run():
vm = api.vms.get(i_vm_name)
vm.delete_protected = False
vm = vm.update()
vm.delete()
while i_vm_name in [vm.name for vm in api.vms.list()]:
logger.debug("Deletion of cloned VM in progress ...")
time.sleep(config.get_timeout())
done = True
logger.info("Delete cloned VM (%s) started ..." % i_vm_name)
if not config.get_dry_run():
vm = api.vms.get(i_vm_name)
vm.delete_protected = False
vm = vm.update()
vm.delete()
while api.vms.get(i_vm_name) is not None:
logger.debug("Deletion of cloned VM (%s) in progress ..." % i_vm_name)
time.sleep(config.get_timeout())
done = True
except Exception as e:
logger.info("!!! Can't delete cloned VM (%s)", i_vm_name)
raise e
if done:
logger.info("Cloned VM deleted")
logger.info("Cloned VM (%s) deleted" % i_vm_name)

@staticmethod
def wait_for_vm_operation(api, config, comment, vm_name):
Expand All @@ -117,22 +117,22 @@ def delete_old_backups(api, config, vm_name):
:param api: ovirtsdk api
:param config: Configuration
"""
exported_vms = api.storagedomains.get(config.get_export_domain()).vms.list()
vm_search_regexp = ("name=%s%s*" % (vm_name, config.get_vm_middle()))
exported_vms = api.storagedomains.get(config.get_export_domain()).vms.list(query=vm_search_regexp)
for i in exported_vms:
vm_name_export = str(i.get_name())
if vm_name_export.startswith(vm_name + config.get_vm_middle()):
datetimeStart = datetime.datetime.combine((datetime.date.today() - datetime.timedelta(config.get_backup_keep_count())), datetime.datetime.min.time())
timestampStart = time.mktime(datetimeStart.timetuple())
datetimeCreation = i.get_creation_time()
datetimeCreation = datetimeCreation.replace(hour=0, minute=0, second=0)
timestampCreation = time.mktime(datetimeCreation.timetuple())
if timestampCreation < timestampStart:
logger.info("Backup deletion started for backup: %s", vm_name_export)
if not config.get_dry_run():
i.delete()
while vm_name_export in [vm.name for vm in api.storagedomains.get(config.get_export_domain()).vms.list()]:
logger.debug("Delete old backup in progress ...")
time.sleep(config.get_timeout())
datetimeStart = datetime.datetime.combine((datetime.date.today() - datetime.timedelta(config.get_backup_keep_count())), datetime.datetime.min.time())
timestampStart = time.mktime(datetimeStart.timetuple())
datetimeCreation = i.get_creation_time()
datetimeCreation = datetimeCreation.replace(hour=0, minute=0, second=0)
timestampCreation = time.mktime(datetimeCreation.timetuple())
if timestampCreation < timestampStart:
logger.info("Backup deletion started for backup: %s", vm_name_export)
if not config.get_dry_run():
i.delete()
while api.storagedomains.get(vm_name_export) is not None:
logger.debug("Delete old backup (%s) in progress ..." % vm_name_export)
time.sleep(config.get_timeout())

@staticmethod
def check_free_space(api, config, vm):
Expand Down

0 comments on commit 6563e92

Please sign in to comment.