mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Ovirt delete snapshots after x days (#45551)
* ovirt add snapshot delete after x days * update logic of deleting snapshot and rename it * update docs and names of vars * update docs syntax * Update ovirt_snapshot.py * put remove logic to function * use default removing function for snapshot
This commit is contained in:
parent
25c627d256
commit
66b1c838c7
1 changed files with 38 additions and 3 deletions
|
@ -59,6 +59,11 @@ options:
|
||||||
- "restore_memory"
|
- "restore_memory"
|
||||||
- "save_memory"
|
- "save_memory"
|
||||||
type: bool
|
type: bool
|
||||||
|
keep_days_old:
|
||||||
|
description:
|
||||||
|
- "Number of days after which should snapshot be deleted."
|
||||||
|
- "It will check all snapshots of virtual machine and delete them, if they are older."
|
||||||
|
version_added: "2.8"
|
||||||
notes:
|
notes:
|
||||||
- "Note that without a guest agent the data on the created snapshot may be
|
- "Note that without a guest agent the data on the created snapshot may be
|
||||||
inconsistent."
|
inconsistent."
|
||||||
|
@ -98,6 +103,11 @@ EXAMPLES = '''
|
||||||
state: absent
|
state: absent
|
||||||
vm_name: rhel7
|
vm_name: rhel7
|
||||||
snapshot_id: "{{ snapshot.id }}"
|
snapshot_id: "{{ snapshot.id }}"
|
||||||
|
|
||||||
|
# Delete all snapshots older than 2 days
|
||||||
|
- ovirt_snapshot:
|
||||||
|
vm_name: test
|
||||||
|
keep_days_old: 2
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
@ -112,6 +122,10 @@ snapshot:
|
||||||
at following url: http://ovirt.github.io/ovirt-engine-api-model/master/#types/snapshot."
|
at following url: http://ovirt.github.io/ovirt-engine-api-model/master/#types/snapshot."
|
||||||
returned: On success if snapshot is found.
|
returned: On success if snapshot is found.
|
||||||
type: dict
|
type: dict
|
||||||
|
snapshots:
|
||||||
|
description: List of deleted snapshots when keep_days_old is defined and snapshot is older than the input days
|
||||||
|
returned: On success returns deleted snapshots
|
||||||
|
type: list
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
@ -122,6 +136,7 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible.module_utils.ovirt import (
|
from ansible.module_utils.ovirt import (
|
||||||
check_sdk,
|
check_sdk,
|
||||||
|
@ -161,10 +176,12 @@ def create_snapshot(module, vm_service, snapshots_service):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def remove_snapshot(module, vm_service, snapshots_service):
|
def remove_snapshot(module, vm_service, snapshots_service, snapshot_id=None):
|
||||||
changed = False
|
changed = False
|
||||||
|
if not snapshot_id:
|
||||||
|
snapshot_id = module.params['snapshot_id']
|
||||||
snapshot = get_entity(
|
snapshot = get_entity(
|
||||||
snapshots_service.snapshot_service(module.params['snapshot_id'])
|
snapshots_service.snapshot_service(snapshot_id)
|
||||||
)
|
)
|
||||||
|
|
||||||
if snapshot:
|
if snapshot:
|
||||||
|
@ -222,6 +239,20 @@ def restore_snapshot(module, vm_service, snapshots_service):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def remove_old_snapshosts(module, vm_service, snapshots_service):
|
||||||
|
deleted_snapshots = []
|
||||||
|
changed = False
|
||||||
|
date_now = datetime.now()
|
||||||
|
for snapshot in snapshots_service.list():
|
||||||
|
if snapshot.vm is not None and snapshot.vm.name == module.params.get('vm_name'):
|
||||||
|
diff = date_now - snapshot.date.replace(tzinfo=None)
|
||||||
|
if diff.days >= module.params.get('keep_days_old'):
|
||||||
|
snapshot = remove_snapshot(module, vm_service, snapshots_service, snapshot.id).get('snapshot')
|
||||||
|
deleted_snapshots.append(snapshot)
|
||||||
|
changed = True
|
||||||
|
return dict(snapshots=deleted_snapshots, changed=changed)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
argument_spec = ovirt_full_argument_spec(
|
argument_spec = ovirt_full_argument_spec(
|
||||||
state=dict(
|
state=dict(
|
||||||
|
@ -231,6 +262,7 @@ def main():
|
||||||
vm_name=dict(required=True),
|
vm_name=dict(required=True),
|
||||||
snapshot_id=dict(default=None),
|
snapshot_id=dict(default=None),
|
||||||
description=dict(default=None),
|
description=dict(default=None),
|
||||||
|
keep_days_old=dict(default=None, type='int'),
|
||||||
use_memory=dict(
|
use_memory=dict(
|
||||||
default=None,
|
default=None,
|
||||||
type='bool',
|
type='bool',
|
||||||
|
@ -263,7 +295,10 @@ def main():
|
||||||
try:
|
try:
|
||||||
state = module.params['state']
|
state = module.params['state']
|
||||||
if state == 'present':
|
if state == 'present':
|
||||||
ret = create_snapshot(module, vm_service, snapshots_service)
|
if module.params.get('keep_days_old') is not None:
|
||||||
|
ret = remove_old_snapshosts(module, vm_service, snapshots_service)
|
||||||
|
else:
|
||||||
|
ret = create_snapshot(module, vm_service, snapshots_service)
|
||||||
elif state == 'restore':
|
elif state == 'restore':
|
||||||
ret = restore_snapshot(module, vm_service, snapshots_service)
|
ret = restore_snapshot(module, vm_service, snapshots_service)
|
||||||
elif state == 'absent':
|
elif state == 'absent':
|
||||||
|
|
Loading…
Reference in a new issue