コード例 #1
0
ファイル: custom.py プロジェクト: tanaka-takayoshi/azure-cli
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
コード例 #2
0
 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)
コード例 #3
0
 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()
コード例 #4
0
    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