@@ -69,31 +69,6 @@ def path(vm_name, service_instance=None):
6969 return utils_common .get_path (vm_ref , service_instance )
7070
7171
72- def _deployment_resources (host_name , service_instance ):
73- """
74- Returns the dict representation of deployment resources from given host name.
75-
76- host_name
77- The name of the esxi host to obtain esxi reference.
78-
79- """
80- destination_host_ref = utils_common .get_mor_by_property (
81- service_instance ,
82- vim .HostSystem ,
83- host_name ,
84- )
85- datacenter_ref = utils_common .get_parent_type (destination_host_ref , vim .Datacenter )
86- cluster_ref = utils_common .get_parent_type (destination_host_ref , vim .ClusterComputeResource )
87- resource_pool = cluster_ref .resourcePool
88-
89- return {
90- "destination_host" : destination_host_ref ,
91- "datacenter" : datacenter_ref ,
92- "cluster" : cluster_ref ,
93- "resource_pool" : resource_pool ,
94- }
95-
96-
9772def _deploy_ovf (name , host_name , ovf , service_instance = None ):
9873 """
9974 Helper fuctions that takes in a OVF file to create a virtual machine.
@@ -123,7 +98,7 @@ def _deploy_ovf(name, host_name, ovf, service_instance=None):
12398 manager = content .ovfManager
12499 spec_params = vim .OvfManager .CreateImportSpecParams (entityName = name )
125100
126- resources = _deployment_resources (host_name , service_instance )
101+ resources = utils_common . deployment_resources (host_name , service_instance )
127102
128103 import_spec = manager .CreateImportSpec (
129104 ovf , resources ["resource_pool" ], resources ["destination_host" ].datastore [0 ], spec_params
@@ -212,7 +187,7 @@ def deploy_template(vm_name, template_name, host_name, service_instance=None):
212187 raise salt .exceptions .CommandExecutionError ("Template does not exist." )
213188
214189 template = utils_common .get_mor_by_property (service_instance , vim .VirtualMachine , template_name )
215- resources = _deployment_resources (host_name , service_instance )
190+ resources = utils_common . deployment_resources (host_name , service_instance )
216191
217192 relospec = vim .vm .RelocateSpec ()
218193 relospec .pool = resources ["resource_pool" ]
@@ -512,3 +487,34 @@ def snapshot(vm_name, datacenter_name=None, service_instance=None):
512487 snapshots = utils_vm .get_snapshots (vm_ref )
513488
514489 return {"snapshots" : snapshots }
490+
491+
492+ def relocate (vm_name , new_host_name , datastore_name , service_instance = None ):
493+ """
494+ Relocates a virtual machine to the location specified.
495+
496+ vm_name
497+ The name of the virtual machine to relocate.
498+
499+ new_host_name
500+ The name of the host you want to move the virtual machine to.
501+
502+ datastore_name
503+ The name of the datastore you want to move the virtual machine to.
504+
505+ service_instance
506+ (optional) The Service Instance from which to obtain managed object references.
507+ """
508+ if service_instance is None :
509+ service_instance = connect .get_service_instance (opts = __opts__ , pillar = __pillar__ )
510+ vm_ref = utils_common .get_mor_by_property (service_instance , vim .VirtualMachine , vm_name )
511+ resources = utils_common .deployment_resources (new_host_name , service_instance )
512+ datastore_ref = utils_common .get_datastore (
513+ datastore_name , resources ["datacenter" ], service_instance
514+ )
515+ ret = utils_vm .relocate (
516+ vm_ref , resources ["destination_host" ], datastore_ref , resources ["resource_pool" ]
517+ )
518+ if ret == "success" :
519+ return {"virtual_machine" : "moved" }
520+ return {"virtual_machine" : "failed to move" }
0 commit comments