def capture_vm(resource_group_name, vm_name, vhd_name_prefix, storage_container='vhds', overwrite=True): '''Captures the VM by copying virtual hard disks of the VM and outputs a template that can be used to create similar VMs. :param str vhd_name_prefix: the VHD name prefix specify for the VM disks :param str storage_container: the storage account container name to save the disks :param str overwrite: overwrite the existing disk file ''' client = _compute_client_factory() parameter = VirtualMachineCaptureParameters(vhd_name_prefix, storage_container, overwrite) poller = client.virtual_machines.capture(resource_group_name, vm_name, parameter) result = LongRunningOperation()(poller) print(json.dumps(result.output, indent=2)) # pylint: disable=no-member
def capture(self, container, image_name, overwrite_vhds=True): self.logger.info("Attempting to Capture Azure VM '%s'", self.name) params = VirtualMachineCaptureParameters( vhd_prefix=image_name, destination_container_name=container, overwrite_vhds=overwrite_vhds) self.stop() self.raw.generalize() self.logger.info("Capturing VM '%s'", self.name) operation = self._api.capture(resource_group_name=self._resource_group, vm_name=self.name, parameters=params) return self._wait_on_operation(operation)
def capture_vm(self, vm_name, container, image_name, overwrite_vhds=True, **kwargs): self.logger.info("Attempting to Capture Azure VM {}".format(vm_name)) resource_group = kwargs.get('resource_group') or self.resource_group col = self.vms_collection params = VirtualMachineCaptureParameters(vhd_prefix=image_name, destination_container_name=container, overwrite_vhds=overwrite_vhds) self.logger.info("Stopping VM {}".format(vm_name)) self.stop_vm(vm_name, resource_group) self.logger.info("Generalizing VM {}".format(vm_name)) col.generalize(resource_group_name=resource_group, vm_name=vm_name) self.logger.info("Capturing VM {}".format(vm_name)) operation = col.capture(resource_group_name=resource_group, vm_name=vm_name, parameters=params) operation.wait() return operation.status()
def captureImages(self, destination_container_name, vhd_prefix, vm_name, overwrite=False): vmOps = self._client.virtual_machines params = VirtualMachineCaptureParameters(vhd_prefix, destination_container_name, overwrite) vmOps.deallocate(self._resource_group_name, vm_name).wait() vmOps.generalize(self._resource_group_name, vm_name) operation = vmOps.capture(self._resource_group_name, vm_name, params) operation.wait() result = operation.result() blob_uri = result.output['resources'][0]['properties'][ 'storageProfile']['osDisk']['image']['uri'] return blob_uri