mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-21 04:10:23 -07:00
Added the ability to Linked_clone from snapshot
This commit is contained in:
parent
a3cb6d2f16
commit
c68d1ffa60
1 changed files with 33 additions and 8 deletions
|
@ -79,6 +79,18 @@ options:
|
||||||
description:
|
description:
|
||||||
- Name of the source template to deploy from
|
- Name of the source template to deploy from
|
||||||
default: None
|
default: None
|
||||||
|
linked_clone:
|
||||||
|
version_added: "2.0"
|
||||||
|
description:
|
||||||
|
- Boolean. Creates a linked clone copy of the specified vm requires snapshot
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
snapshot:
|
||||||
|
version_added: "2.0"
|
||||||
|
description:
|
||||||
|
- Name of the snapshot you want to link clone from
|
||||||
|
required: false
|
||||||
|
default: none
|
||||||
vm_disk:
|
vm_disk:
|
||||||
description:
|
description:
|
||||||
- A key, value list of disks and their sizes and which datastore to keep it in.
|
- A key, value list of disks and their sizes and which datastore to keep it in.
|
||||||
|
@ -523,7 +535,7 @@ def vmdisk_id(vm, current_datastore_name):
|
||||||
return id_list
|
return id_list
|
||||||
|
|
||||||
|
|
||||||
def deploy_template(vsphere_client, guest, resource_pool, template_src, esxi, module, cluster_name):
|
def deploy_template(vsphere_client, guest, resource_pool, template_src, esxi, module, cluster_name, linked_clone, snapshot):
|
||||||
vmTemplate = vsphere_client.get_vm_by_name(template_src)
|
vmTemplate = vsphere_client.get_vm_by_name(template_src)
|
||||||
vmTarget = None
|
vmTarget = None
|
||||||
|
|
||||||
|
@ -607,9 +619,14 @@ def deploy_template(vsphere_client, guest, resource_pool, template_src, esxi, mo
|
||||||
try:
|
try:
|
||||||
if vmTarget:
|
if vmTarget:
|
||||||
changed = False
|
changed = False
|
||||||
|
elif linked_clone and snapshot != None:
|
||||||
|
#Check linked_clone and snapshot value
|
||||||
|
vmTemplate.clone(guest, resourcepool=rpmor, linked=linked_clone, snapshot=snapshot)
|
||||||
|
changed = True
|
||||||
else:
|
else:
|
||||||
vmTemplate.clone(guest, resourcepool=rpmor)
|
vmTemplate.clone(guest, resourcepool=rpmor)
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
vsphere_client.disconnect()
|
vsphere_client.disconnect()
|
||||||
module.exit_json(changed=changed)
|
module.exit_json(changed=changed)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -1211,9 +1228,11 @@ def main():
|
||||||
'reconfigured'
|
'reconfigured'
|
||||||
],
|
],
|
||||||
default='present'),
|
default='present'),
|
||||||
vmware_guest_facts=dict(required=False, choices=BOOLEANS),
|
vmware_guest_facts=dict(required=False, type='bool'),
|
||||||
from_template=dict(required=False, choices=BOOLEANS),
|
from_template=dict(required=False, type='bool'),
|
||||||
template_src=dict(required=False, type='str'),
|
template_src=dict(required=False, type='str'),
|
||||||
|
linked_clone=dict(required=False, default=False, type='bool'),
|
||||||
|
snapshot=dict(required=False, default=None, type='str'),
|
||||||
guest=dict(required=True, type='str'),
|
guest=dict(required=True, type='str'),
|
||||||
vm_disk=dict(required=False, type='dict', default={}),
|
vm_disk=dict(required=False, type='dict', default={}),
|
||||||
vm_nic=dict(required=False, type='dict', default={}),
|
vm_nic=dict(required=False, type='dict', default={}),
|
||||||
|
@ -1222,7 +1241,7 @@ def main():
|
||||||
vm_hw_version=dict(required=False, default=None, type='str'),
|
vm_hw_version=dict(required=False, default=None, type='str'),
|
||||||
resource_pool=dict(required=False, default=None, type='str'),
|
resource_pool=dict(required=False, default=None, type='str'),
|
||||||
cluster=dict(required=False, default=None, type='str'),
|
cluster=dict(required=False, default=None, type='str'),
|
||||||
force=dict(required=False, choices=BOOLEANS, default=False),
|
force=dict(required=False, type='bool', default=False),
|
||||||
esxi=dict(required=False, type='dict', default={}),
|
esxi=dict(required=False, type='dict', default={}),
|
||||||
|
|
||||||
|
|
||||||
|
@ -1239,8 +1258,9 @@ def main():
|
||||||
'esxi'
|
'esxi'
|
||||||
],
|
],
|
||||||
['resource_pool', 'cluster'],
|
['resource_pool', 'cluster'],
|
||||||
['from_template', 'resource_pool', 'template_src']
|
['from_template', 'resource_pool', 'template_src'],
|
||||||
],
|
],
|
||||||
|
required_if=[('linked_clone', True, ['snapshot'])],
|
||||||
)
|
)
|
||||||
|
|
||||||
if not HAS_PYSPHERE:
|
if not HAS_PYSPHERE:
|
||||||
|
@ -1263,6 +1283,9 @@ def main():
|
||||||
cluster = module.params['cluster']
|
cluster = module.params['cluster']
|
||||||
template_src = module.params['template_src']
|
template_src = module.params['template_src']
|
||||||
from_template = module.params['from_template']
|
from_template = module.params['from_template']
|
||||||
|
linked_clone = module.params['linked_clone']
|
||||||
|
snapshot = module.params['snapshot']
|
||||||
|
|
||||||
|
|
||||||
# CONNECT TO THE SERVER
|
# CONNECT TO THE SERVER
|
||||||
viserver = VIServer()
|
viserver = VIServer()
|
||||||
|
@ -1342,7 +1365,9 @@ def main():
|
||||||
guest=guest,
|
guest=guest,
|
||||||
template_src=template_src,
|
template_src=template_src,
|
||||||
module=module,
|
module=module,
|
||||||
cluster_name=cluster
|
cluster_name=cluster,
|
||||||
|
linked_clone=linked_clone,
|
||||||
|
snapshot=snapshot
|
||||||
)
|
)
|
||||||
if state in ['restarted', 'reconfigured']:
|
if state in ['restarted', 'reconfigured']:
|
||||||
module.fail_json(
|
module.fail_json(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue