Module cvpysdk.subclients.virtualserver.hyperv
File for operating on a Virtual Server Hyper-V Subclient.
HyperVVirtualServerSubclient is the only class defined in this file.
HyperVVirtualServerSubclient: Derived class from VirtualServerSubClient Base class, representing a Hyper-V Subclient, and to perform operations on that Subclient
Hypervsubclient
init(,backupset_object, subclient_name, subclient_id) – initialize object of hyper-v subclient object associated with the VirtualServer subclient
disk_restore() – Perform Disk Restore on Hyper-V Subclient
full_vm_restore_out_of_place() – restores the VM specified in to the specified client, at the specified destination location
full_vm_restore_in_place() – restores the VM specified by the user to the same location
Expand source code Browse git
# -*- coding: utf-8 -*-
# --------------------------------------------------------------------------
# Copyright Commvault Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# --------------------------------------------------------------------------
"""File for operating on a Virtual Server Hyper-V Subclient.
HyperVVirtualServerSubclient is the only class defined in this file.
HyperVVirtualServerSubclient: Derived class from VirtualServerSubClient Base class, representing a
Hyper-V Subclient, and to perform operations on that Subclient
HypervSubclient:
__init__(,backupset_object, subclient_name, subclient_id) -- initialize object of hyper-v
subclient object
associated with
the VirtualServer subclient
disk_restore() -- Perform Disk Restore on
Hyper-V Subclient
full_vm_restore_out_of_place() -- restores the VM specified in
to the specified client, at the
specified destination location
full_vm_restore_in_place() -- restores the VM specified by the
user to the same location
"""
from enum import Enum
from ..vssubclient import VirtualServerSubclient
from ...exception import SDKException
class HyperVVirtualServerSubclient(VirtualServerSubclient):
"""Derived class from VirtualServerSubclient Base class, representing a
Hyper-V virtual server subclient,and to perform operations on that subclient."""
def __init__(self, backupset_object, subclient_name, subclient_id=None):
"""Initialize the Instance object for the given Virtual Server instance.
Args
class_object (backupset_object, subclient_name, subclient_id) -- instance of the
backupset class, subclient name, subclient id
"""
super(HyperVVirtualServerSubclient, self).__init__(
backupset_object, subclient_name, subclient_id)
self.diskExtension = [".vhd", ".avhd", ".avhdx", ".vhdx"]
class disk_pattern(Enum):
"""
stores the disk pattern of all hypervisors
"""
name = "name"
datastore = "DestinationPath"
new_name = "new_name"
def _get_guest_os(self, os_name):
"""
stores all the XML tag for OS
"""
_os_name_dict = {
"2012": "windows8Server64Guest"
}
for os in _os_name_dict:
if os in os_name:
return _os_name_dict[os]
raise SDKException('Subclient', '102', "Input parameter specified is incorrect")
def disk_restore(self,
vm_name,
destination_path,
proxy_client=None,
disk_name=None,
copy_precedence=0,
convert_to=None,
media_agent=None,
snap_proxy=None):
"""Restores the disk specified in the input paths list to the same location
Args:
vm_name (str) -- VM from which disk is to be restored
proxy_client (str) -- Destination client to whihc disk is to be restored
client (str) -- name of the client to restore disk
destinationpath (str) --path where the disk needs to be restored
copy_precedence (int) -- SP copy precedence from which browse
has to be performed
disk_Name (str) -- name of the disk which has to be restored
convert_to (str) -- to convert the disk to the specified format
default: None.
media_agent (str) -- MA needs to use for disk browse
default :Storage policy MA
snap_proxy (str) -- proxy need to be used for disk
restores from snap
default :proxy in instance or subclient
Returns:
object - instance of the Job class for this restore job
Raises:
SDKException:
if destinationpath is not str
if client is not str or object
if failed to initialize job
if response is empty
if response is not success
"""
_vm_names, _vm_ids = self._get_vm_ids_and_names_dict_from_browse()
_disk_restore_option = {}
# check if inputs are correct
if not (isinstance(destination_path, str) and
isinstance(vm_name, (str, list))):
raise SDKException('Subclient', '101')
if proxy_client is None:
_disk_restore_option[
"client"] = self._backupset_object._instance_object.co_ordinator
else:
_disk_restore_option["client"] = proxy_client
# if disk list is given
disk_list, disk_info_dict = self.disk_level_browse(
"\\" + _vm_ids[vm_name])
if disk_name is not None:
if disk_name in disk_list:
disk_list = list(disk_name)
else:
raise SDKException('Subclient', '111')
# if conversion option is given
if convert_to is not None:
_disk_extn = self._get_disk_extension(disk_list)
if isinstance(_disk_extn, list):
raise SDKException('Subclient', '101')
_disk_restore_option["destination_vendor"], \
_disk_restore_option["destination_disktype"] = \
self._get_conversion_disk_type(_disk_extn, convert_to)
else:
_disk_restore_option["destination_vendor"] = \
self._backupset_object._instance_object._vendor_id
_disk_restore_option["destination_disktype"] = 0
_disk_restore_option["volume_level_restore"] = 4
# set Source item List
_src_item_list = []
for each_disk in disk_list:
_src_item_list.append(
"\\" + _vm_ids[vm_name] + "\\" + each_disk.split("\\")[-1])
self._set_restore_inputs(
_disk_restore_option,
in_place=False,
copy_precedence=copy_precedence,
destination_path=destination_path,
paths=_src_item_list,
media_agent=media_agent,
snap_proxy=snap_proxy
)
request_json = self._prepare_disk_restore_json(_disk_restore_option)
return self._process_restore_response(request_json)
def full_vm_restore_out_of_place(self,
destination_client=None,
proxy_client=None,
destination_path=None,
vm_to_restore=None,
overwrite=False,
power_on=False,
copy_precedence=0,
add_to_failover=False,
network=None,
restored_vm_name=None,
restore_option=None,
snap_proxy=None,
media_agent=None,
**kwargs):
"""Restores the FULL Virtual machine specified in the input list to the client,
at the specified destination location.
Args:
client (str/object) -- either the name of the client or
the instance of the Client
destination_path (str) -- full path of the restore location on client
vm_to_restore (list) -- provide the list of VM name(s) to restore
overwrite
default:False (bool) -- overwrite the existing VM
poweron
default:False (bool) -- power on the restored VM
network (str) -- Network interface card to be used
add_to_failover
default:False (bool) -- Add the Restored VM to Failover Cluster
restore_option (dict) -- complete dictionary with all advanced optio
default: {}
snap_proxy (strig) -- Snap proxy to be used for restore
media_agent (string) -- Media Agent to be used for Browse
**kwargs : Arbitrary keyword arguments Properties as of
full_vm_restore_out_of_place
eg:
v2_details (dict) -- details for v2 subclient
eg: check clients.vmclient.VMClient._child_job_subclient_details
value:
preserve_level (int) - set the preserve level in restore
unconditional_overwrite (bool) - unconditionally overwrite the disk
in the restore path
destination_path (str) - path where the disk needs to be restored
destination_client (str) - Hyperv Host Client Name where VM needs to be restored
destination_vendor (int) - vendor id of the Hypervisor
destination_disktype (str) - type of disk needs to be restored like VHDX,VHD,VMDK
source_item (str) - GUID of VM from which disk needs to be restored
eg:\\5F9FA60C-0A89-4BD9-9D02-C5ACB42745EA
copy_precedence_applicable (str) - True if needs copy_precedence to be honoured
else False
copy_precedence (int) - the copy id from which browse and
restore needs to be performed
power_on (bool) - power on the VM after restore
add_to_failover (bool)- Register the VM to Failover Cluster
datastore (str) - Datastore where the VM needs to be restored
disks (list of dict) (list) - list with dict for each disk in VM
eg: [{
name:"disk1.vmdk"
datastore:"local"
}
{
name:"disk2.vmdk"
datastore:"local1"
}
]
guid (str)- GUID of the VM needs to be restored
new_name (str)- New name for the VM to be restored
esx_host (str)- esx_host or client name where it need to be restored
name (str)- name of the VM to be restored
Returns:
object - instance of the Job class for this restore job
Raises:
SDKException:
if destination_path is not a string
if failed to initialize job
if response is empty
if response is not success
"""
# restore options
if restore_option is None:
restore_option = {}
restore_option["v2_details"] = kwargs.get("v2_details", None)
if vm_to_restore and not isinstance(vm_to_restore, str):
raise SDKException('Subclient', '101')
if copy_precedence:
restore_option["copy_precedence_applicable"] = True
if restored_vm_name:
if not (isinstance(vm_to_restore, str) or
isinstance(restored_vm_name, str)):
raise SDKException('Subclient', '101')
restore_option['restore_new_name'] = restored_vm_name
if vm_to_restore:
vm_to_restore = [vm_to_restore]
# check mandatory input parameters are correct
if bool(restore_option):
if not (isinstance(destination_path, str) and
isinstance(overwrite, bool) and
isinstance(power_on, bool) and
isinstance(add_to_failover, bool)):
raise SDKException('Subclient', '101')
# set attr for all the option in restore xml from user inputs
self._set_restore_inputs(
restore_option,
vm_to_restore=self._set_vm_to_restore(vm_to_restore),
unconditional_overwrite=overwrite,
power_on=power_on,
copy_precedence=copy_precedence,
volume_level_restore=1,
vcenter_client=destination_client,
client_name=proxy_client,
esx_server=proxy_client,
esx_host=proxy_client,
add_to_failover=add_to_failover,
datastore=destination_path,
in_place=False,
destination_network=network,
snap_proxy=snap_proxy,
media_agent=media_agent
)
request_json = self._prepare_fullvm_restore_json(restore_option)
return self._process_restore_response(request_json)
def full_vm_restore_in_place(self,
vm_to_restore=None,
overwrite=True,
power_on=True,
copy_precedence=0,
add_to_failover=False,
snap_proxy=None,
**kwargs):
"""Restores the FULL Virtual machine specified in the input list to the client,
to the location same as source .
Args:
vm_to_restore (list) -- provide the list of VM name(s) to restore
overwrite
default:true (bool) -- overwrite the existing VM
poweron
default:true (bool) -- power on the restored VM
add_to_failover
default:False (bool) -- Add the Restored VM to Failover Cluster
snap_proxy (str) -- proxy need to be used for disk
restores from snap
default :proxy in instance or subclient
**kwargs : Arbitrary keyword arguments Properties as of
full_vm_restore_out_of_place
eg:
v2_details (dict) -- details for v2 subclient
eg: check clients.vmclient.VMClient._child_job_subclient_details
Returns:
object - instance of the Job class for this restore job
Raises:
SDKException:
if failed to initialize job
if response is empty
if response is not success
"""
restore_option = {"v2_details": kwargs.get("v2_details", None)}
# check mandatory input parameters are correct
if not (isinstance(overwrite, bool) and
isinstance(power_on, bool) and
isinstance(add_to_failover, bool)):
raise SDKException('Subclient', '101')
if copy_precedence:
restore_option["copy_precedence_applicable"] = True
if vm_to_restore and isinstance(vm_to_restore, str):
vm_to_restore = [vm_to_restore]
# set attr for all the option in restore xml from user inputs
self._set_restore_inputs(
restore_option,
vm_to_restore=self._set_vm_to_restore(vm_to_restore),
unconditional_overwrite=overwrite,
power_on=power_on,
copy_precedence=copy_precedence,
volume_level_restore=1,
add_to_failover=add_to_failover,
in_place=True,
snap_proxy=snap_proxy
)
request_json = self._prepare_fullvm_restore_json(restore_option)
request_json["taskInfo"]["subTasks"][0][
"options"]["restoreOptions"]["virtualServerRstOption"]["diskLevelVMRestoreOption"][
"esxServerName"] = restore_option["esx_server"]
return self._process_restore_response(request_json)
def full_vm_conversion_vmware(
self,
vcenter_client,
destination_os_name,
vm_to_restore=None,
esx_host=None,
datastore=None,
overwrite=True,
power_on=True,
copy_precedence=0,
disk_option='Original',
transport_mode='Auto',
proxy_client=None,
destination_network=None
):
"""
This converts the Hyperv VM to VMware
Args:
vm_to_restore (dict) -- dict containing the VM name(s) to restore as
keys and the new VM name(s) as their values.
Input empty string for default VM name for
restored VM.
default: {}
vcenter_client (str) -- name of the vcenter client
where the VM should be
restored.
esx_host (str) -- destination esx host
restores to the source VM
esx if this value is not
specified
datastore (str) -- datastore where the
restored VM should be located
restores to the source VM
datastore if this value is
not specified
overwrite (bool) -- overwrite the existing VM
default: True
power_on (bool) -- power on the restored VM
default: True
copy_precedence (int) -- copy precedence value
default: 0
disk_option (str) -- disk provisioning for the
restored vm
Options for input are: 'Original',
'Thick Lazy Zero', 'Thin', 'Thick Eager Zero'
default: Original
transport_mode (str) -- transport mode to be used for
the restore.
Options for input are: 'Auto', 'SAN', 'Hot Add',
'NBD', 'NBD SSL'
default: Auto
proxy_client (str) -- destination proxy client
destination_network (str)-- destiantion network to which VM has to be connected
destiantion_os (base string)- os of source VM
Returns:
object - instance of the Job class for this restore job
Raises:
SDKException:
if inputs are not of correct type as per definition
if failed to initialize job
if response is empty
if response is not success
"""
vm_names, vm_ids = self._get_vm_ids_and_names_dict_from_browse()
restore_option = {}
# check mandatory input parameters are correct
if not (isinstance(vcenter_client, str) and
isinstance(destination_network, str)):
raise SDKException('Subclient', '101')
#getting all dummy objects for new client
subclient = self._set_vm_conversion_defaults(vcenter_client, restore_option)
instance = subclient._backupset_object._instance_object
disk_option_value = subclient._disk_option[disk_option]
transport_mode_value = subclient._transport_mode[transport_mode]
esx_server = instance.server_host_name[0]
#setting restore vms
vm_list = None
if isinstance(vm_to_restore, dict):
vm_list = list(vm_to_restore.keys())
elif isinstance(vm_to_restore, list):
vm_list = vm_to_restore
elif isinstance(vm_to_restore, str):
vm_list = [vm_to_restore]
self._set_restore_inputs(
restore_option,
in_place=False,
vcenter_client=vcenter_client,
datastore=datastore,
esx_host=esx_host,
esx_server=esx_server,
unconditional_overwrite=overwrite,
client_name=proxy_client,
power_on=power_on,
vm_to_restore=self._set_vm_to_restore(vm_list),
disk_option=disk_option_value,
transport_mode=transport_mode_value,
copy_precedence=copy_precedence,
volume_level_restore=1,
destination_instance=instance.instance_name,
backupset_client_name=instance._agent_object._client_object.client_name,
destination_network=destination_network,
destination_os_name=destination_os_name
)
request_json = self._prepare_fullvm_restore_json(restore_option)
return self._process_restore_response(request_json)
def full_vm_conversion_azurerm(
self,
azure_client,
vm_to_restore=None,
resource_group=None,
storage_account=None,
datacenter=None,
proxy_client=None,
overwrite=True,
power_on=True,
instance_size=None,
public_ip=False,
restore_as_managed=False,
copy_precedence=0,
disk_type=None,
restore_option=None,
networkDisplayName=None,
networkrsg=None,
destsubid=None,
subnetId=None):
"""
This converts the Hyperv VM to AzureRM
Args:
vm_to_restore (dict): dict containing the VM name(s)
to restore as keys and the new
VM name(s) as their values.
Input empty string for default
VM name for restored VM.
default: {}
azure_client (str): name of the AzureRM client
where the VM should be
restored.
resource_group (str): destination Resource group
in the AzureRM
storage_account (str): storage account where the
restored VM should be located
in AzureRM
overwrite (bool): overwrite the existing VM
default: True
power_on (bool): power on the restored VM
default: True
instance_size (str): Instance Size of restored VM
public_ip (bool): If True, creates the Public IP of
restored VM
restore_as_managed (bool): If True, restore as Managed VM in Azure
copy_precedence (int): copy precedence value
default: 0
proxy_client (str): destination proxy client
networkDisplayName(str): destination network display name
networkrsg (str): destination network display name's security group
destsubid (str): destination subscription id
subnetId (str): destination subet id
Returns:
object - instance of the Job class for this restore job
Raises:
SDKException:
if inputs are not of correct type as per definition
if failed to initialize job
if response is empty
if response is not success
"""
if restore_option is None:
restore_option = {}
if vm_to_restore and not isinstance(vm_to_restore, str):
raise SDKException('Subclient', '101')
if not isinstance(vm_to_restore, list):
vm_to_restore = [vm_to_restore]
# check mandatory input parameters are correct
if not isinstance(azure_client, str):
raise SDKException('Subclient', '101')
subclient = self._set_vm_conversion_defaults(azure_client, restore_option)
instance = subclient._backupset_object._instance_object
if proxy_client is None:
proxy_client = instance.server_host_name[0]
self._set_restore_inputs(
restore_option,
in_place=False,
vcenter_client=azure_client,
datastore=storage_account,
esx_host=resource_group,
datacenter=datacenter,
unconditional_overwrite=overwrite,
client_name=proxy_client,
power_on=power_on,
vm_to_restore=self._set_vm_to_restore(vm_to_restore),
copy_precedence=copy_precedence,
createPublicIP=public_ip,
restoreAsManagedVM=restore_as_managed,
instanceSize=instance_size,
volume_level_restore=1,
destination_instance=instance.instance_name,
backupset_client_name=instance._agent_object._client_object.client_name,
networkDisplayName=networkDisplayName,
networkrsg=networkrsg,
destsubid=destsubid,
subnetId=subnetId
)
request_json = self._prepare_fullvm_restore_json(restore_option)
return self._process_restore_response(request_json)
Classes
class HyperVVirtualServerSubclient (backupset_object, subclient_name, subclient_id=None)
-
Derived class from VirtualServerSubclient Base class, representing a Hyper-V virtual server subclient,and to perform operations on that subclient.
Initialize the Instance object for the given Virtual Server instance. Args class_object (backupset_object, subclient_name, subclient_id) – instance of the backupset class, subclient name, subclient id
Expand source code Browse git
class HyperVVirtualServerSubclient(VirtualServerSubclient): """Derived class from VirtualServerSubclient Base class, representing a Hyper-V virtual server subclient,and to perform operations on that subclient.""" def __init__(self, backupset_object, subclient_name, subclient_id=None): """Initialize the Instance object for the given Virtual Server instance. Args class_object (backupset_object, subclient_name, subclient_id) -- instance of the backupset class, subclient name, subclient id """ super(HyperVVirtualServerSubclient, self).__init__( backupset_object, subclient_name, subclient_id) self.diskExtension = [".vhd", ".avhd", ".avhdx", ".vhdx"] class disk_pattern(Enum): """ stores the disk pattern of all hypervisors """ name = "name" datastore = "DestinationPath" new_name = "new_name" def _get_guest_os(self, os_name): """ stores all the XML tag for OS """ _os_name_dict = { "2012": "windows8Server64Guest" } for os in _os_name_dict: if os in os_name: return _os_name_dict[os] raise SDKException('Subclient', '102', "Input parameter specified is incorrect") def disk_restore(self, vm_name, destination_path, proxy_client=None, disk_name=None, copy_precedence=0, convert_to=None, media_agent=None, snap_proxy=None): """Restores the disk specified in the input paths list to the same location Args: vm_name (str) -- VM from which disk is to be restored proxy_client (str) -- Destination client to whihc disk is to be restored client (str) -- name of the client to restore disk destinationpath (str) --path where the disk needs to be restored copy_precedence (int) -- SP copy precedence from which browse has to be performed disk_Name (str) -- name of the disk which has to be restored convert_to (str) -- to convert the disk to the specified format default: None. media_agent (str) -- MA needs to use for disk browse default :Storage policy MA snap_proxy (str) -- proxy need to be used for disk restores from snap default :proxy in instance or subclient Returns: object - instance of the Job class for this restore job Raises: SDKException: if destinationpath is not str if client is not str or object if failed to initialize job if response is empty if response is not success """ _vm_names, _vm_ids = self._get_vm_ids_and_names_dict_from_browse() _disk_restore_option = {} # check if inputs are correct if not (isinstance(destination_path, str) and isinstance(vm_name, (str, list))): raise SDKException('Subclient', '101') if proxy_client is None: _disk_restore_option[ "client"] = self._backupset_object._instance_object.co_ordinator else: _disk_restore_option["client"] = proxy_client # if disk list is given disk_list, disk_info_dict = self.disk_level_browse( "\\" + _vm_ids[vm_name]) if disk_name is not None: if disk_name in disk_list: disk_list = list(disk_name) else: raise SDKException('Subclient', '111') # if conversion option is given if convert_to is not None: _disk_extn = self._get_disk_extension(disk_list) if isinstance(_disk_extn, list): raise SDKException('Subclient', '101') _disk_restore_option["destination_vendor"], \ _disk_restore_option["destination_disktype"] = \ self._get_conversion_disk_type(_disk_extn, convert_to) else: _disk_restore_option["destination_vendor"] = \ self._backupset_object._instance_object._vendor_id _disk_restore_option["destination_disktype"] = 0 _disk_restore_option["volume_level_restore"] = 4 # set Source item List _src_item_list = [] for each_disk in disk_list: _src_item_list.append( "\\" + _vm_ids[vm_name] + "\\" + each_disk.split("\\")[-1]) self._set_restore_inputs( _disk_restore_option, in_place=False, copy_precedence=copy_precedence, destination_path=destination_path, paths=_src_item_list, media_agent=media_agent, snap_proxy=snap_proxy ) request_json = self._prepare_disk_restore_json(_disk_restore_option) return self._process_restore_response(request_json) def full_vm_restore_out_of_place(self, destination_client=None, proxy_client=None, destination_path=None, vm_to_restore=None, overwrite=False, power_on=False, copy_precedence=0, add_to_failover=False, network=None, restored_vm_name=None, restore_option=None, snap_proxy=None, media_agent=None, **kwargs): """Restores the FULL Virtual machine specified in the input list to the client, at the specified destination location. Args: client (str/object) -- either the name of the client or the instance of the Client destination_path (str) -- full path of the restore location on client vm_to_restore (list) -- provide the list of VM name(s) to restore overwrite default:False (bool) -- overwrite the existing VM poweron default:False (bool) -- power on the restored VM network (str) -- Network interface card to be used add_to_failover default:False (bool) -- Add the Restored VM to Failover Cluster restore_option (dict) -- complete dictionary with all advanced optio default: {} snap_proxy (strig) -- Snap proxy to be used for restore media_agent (string) -- Media Agent to be used for Browse **kwargs : Arbitrary keyword arguments Properties as of full_vm_restore_out_of_place eg: v2_details (dict) -- details for v2 subclient eg: check clients.vmclient.VMClient._child_job_subclient_details value: preserve_level (int) - set the preserve level in restore unconditional_overwrite (bool) - unconditionally overwrite the disk in the restore path destination_path (str) - path where the disk needs to be restored destination_client (str) - Hyperv Host Client Name where VM needs to be restored destination_vendor (int) - vendor id of the Hypervisor destination_disktype (str) - type of disk needs to be restored like VHDX,VHD,VMDK source_item (str) - GUID of VM from which disk needs to be restored eg:\\5F9FA60C-0A89-4BD9-9D02-C5ACB42745EA copy_precedence_applicable (str) - True if needs copy_precedence to be honoured else False copy_precedence (int) - the copy id from which browse and restore needs to be performed power_on (bool) - power on the VM after restore add_to_failover (bool)- Register the VM to Failover Cluster datastore (str) - Datastore where the VM needs to be restored disks (list of dict) (list) - list with dict for each disk in VM eg: [{ name:"disk1.vmdk" datastore:"local" } { name:"disk2.vmdk" datastore:"local1" } ] guid (str)- GUID of the VM needs to be restored new_name (str)- New name for the VM to be restored esx_host (str)- esx_host or client name where it need to be restored name (str)- name of the VM to be restored Returns: object - instance of the Job class for this restore job Raises: SDKException: if destination_path is not a string if failed to initialize job if response is empty if response is not success """ # restore options if restore_option is None: restore_option = {} restore_option["v2_details"] = kwargs.get("v2_details", None) if vm_to_restore and not isinstance(vm_to_restore, str): raise SDKException('Subclient', '101') if copy_precedence: restore_option["copy_precedence_applicable"] = True if restored_vm_name: if not (isinstance(vm_to_restore, str) or isinstance(restored_vm_name, str)): raise SDKException('Subclient', '101') restore_option['restore_new_name'] = restored_vm_name if vm_to_restore: vm_to_restore = [vm_to_restore] # check mandatory input parameters are correct if bool(restore_option): if not (isinstance(destination_path, str) and isinstance(overwrite, bool) and isinstance(power_on, bool) and isinstance(add_to_failover, bool)): raise SDKException('Subclient', '101') # set attr for all the option in restore xml from user inputs self._set_restore_inputs( restore_option, vm_to_restore=self._set_vm_to_restore(vm_to_restore), unconditional_overwrite=overwrite, power_on=power_on, copy_precedence=copy_precedence, volume_level_restore=1, vcenter_client=destination_client, client_name=proxy_client, esx_server=proxy_client, esx_host=proxy_client, add_to_failover=add_to_failover, datastore=destination_path, in_place=False, destination_network=network, snap_proxy=snap_proxy, media_agent=media_agent ) request_json = self._prepare_fullvm_restore_json(restore_option) return self._process_restore_response(request_json) def full_vm_restore_in_place(self, vm_to_restore=None, overwrite=True, power_on=True, copy_precedence=0, add_to_failover=False, snap_proxy=None, **kwargs): """Restores the FULL Virtual machine specified in the input list to the client, to the location same as source . Args: vm_to_restore (list) -- provide the list of VM name(s) to restore overwrite default:true (bool) -- overwrite the existing VM poweron default:true (bool) -- power on the restored VM add_to_failover default:False (bool) -- Add the Restored VM to Failover Cluster snap_proxy (str) -- proxy need to be used for disk restores from snap default :proxy in instance or subclient **kwargs : Arbitrary keyword arguments Properties as of full_vm_restore_out_of_place eg: v2_details (dict) -- details for v2 subclient eg: check clients.vmclient.VMClient._child_job_subclient_details Returns: object - instance of the Job class for this restore job Raises: SDKException: if failed to initialize job if response is empty if response is not success """ restore_option = {"v2_details": kwargs.get("v2_details", None)} # check mandatory input parameters are correct if not (isinstance(overwrite, bool) and isinstance(power_on, bool) and isinstance(add_to_failover, bool)): raise SDKException('Subclient', '101') if copy_precedence: restore_option["copy_precedence_applicable"] = True if vm_to_restore and isinstance(vm_to_restore, str): vm_to_restore = [vm_to_restore] # set attr for all the option in restore xml from user inputs self._set_restore_inputs( restore_option, vm_to_restore=self._set_vm_to_restore(vm_to_restore), unconditional_overwrite=overwrite, power_on=power_on, copy_precedence=copy_precedence, volume_level_restore=1, add_to_failover=add_to_failover, in_place=True, snap_proxy=snap_proxy ) request_json = self._prepare_fullvm_restore_json(restore_option) request_json["taskInfo"]["subTasks"][0][ "options"]["restoreOptions"]["virtualServerRstOption"]["diskLevelVMRestoreOption"][ "esxServerName"] = restore_option["esx_server"] return self._process_restore_response(request_json) def full_vm_conversion_vmware( self, vcenter_client, destination_os_name, vm_to_restore=None, esx_host=None, datastore=None, overwrite=True, power_on=True, copy_precedence=0, disk_option='Original', transport_mode='Auto', proxy_client=None, destination_network=None ): """ This converts the Hyperv VM to VMware Args: vm_to_restore (dict) -- dict containing the VM name(s) to restore as keys and the new VM name(s) as their values. Input empty string for default VM name for restored VM. default: {} vcenter_client (str) -- name of the vcenter client where the VM should be restored. esx_host (str) -- destination esx host restores to the source VM esx if this value is not specified datastore (str) -- datastore where the restored VM should be located restores to the source VM datastore if this value is not specified overwrite (bool) -- overwrite the existing VM default: True power_on (bool) -- power on the restored VM default: True copy_precedence (int) -- copy precedence value default: 0 disk_option (str) -- disk provisioning for the restored vm Options for input are: 'Original', 'Thick Lazy Zero', 'Thin', 'Thick Eager Zero' default: Original transport_mode (str) -- transport mode to be used for the restore. Options for input are: 'Auto', 'SAN', 'Hot Add', 'NBD', 'NBD SSL' default: Auto proxy_client (str) -- destination proxy client destination_network (str)-- destiantion network to which VM has to be connected destiantion_os (base string)- os of source VM Returns: object - instance of the Job class for this restore job Raises: SDKException: if inputs are not of correct type as per definition if failed to initialize job if response is empty if response is not success """ vm_names, vm_ids = self._get_vm_ids_and_names_dict_from_browse() restore_option = {} # check mandatory input parameters are correct if not (isinstance(vcenter_client, str) and isinstance(destination_network, str)): raise SDKException('Subclient', '101') #getting all dummy objects for new client subclient = self._set_vm_conversion_defaults(vcenter_client, restore_option) instance = subclient._backupset_object._instance_object disk_option_value = subclient._disk_option[disk_option] transport_mode_value = subclient._transport_mode[transport_mode] esx_server = instance.server_host_name[0] #setting restore vms vm_list = None if isinstance(vm_to_restore, dict): vm_list = list(vm_to_restore.keys()) elif isinstance(vm_to_restore, list): vm_list = vm_to_restore elif isinstance(vm_to_restore, str): vm_list = [vm_to_restore] self._set_restore_inputs( restore_option, in_place=False, vcenter_client=vcenter_client, datastore=datastore, esx_host=esx_host, esx_server=esx_server, unconditional_overwrite=overwrite, client_name=proxy_client, power_on=power_on, vm_to_restore=self._set_vm_to_restore(vm_list), disk_option=disk_option_value, transport_mode=transport_mode_value, copy_precedence=copy_precedence, volume_level_restore=1, destination_instance=instance.instance_name, backupset_client_name=instance._agent_object._client_object.client_name, destination_network=destination_network, destination_os_name=destination_os_name ) request_json = self._prepare_fullvm_restore_json(restore_option) return self._process_restore_response(request_json) def full_vm_conversion_azurerm( self, azure_client, vm_to_restore=None, resource_group=None, storage_account=None, datacenter=None, proxy_client=None, overwrite=True, power_on=True, instance_size=None, public_ip=False, restore_as_managed=False, copy_precedence=0, disk_type=None, restore_option=None, networkDisplayName=None, networkrsg=None, destsubid=None, subnetId=None): """ This converts the Hyperv VM to AzureRM Args: vm_to_restore (dict): dict containing the VM name(s) to restore as keys and the new VM name(s) as their values. Input empty string for default VM name for restored VM. default: {} azure_client (str): name of the AzureRM client where the VM should be restored. resource_group (str): destination Resource group in the AzureRM storage_account (str): storage account where the restored VM should be located in AzureRM overwrite (bool): overwrite the existing VM default: True power_on (bool): power on the restored VM default: True instance_size (str): Instance Size of restored VM public_ip (bool): If True, creates the Public IP of restored VM restore_as_managed (bool): If True, restore as Managed VM in Azure copy_precedence (int): copy precedence value default: 0 proxy_client (str): destination proxy client networkDisplayName(str): destination network display name networkrsg (str): destination network display name's security group destsubid (str): destination subscription id subnetId (str): destination subet id Returns: object - instance of the Job class for this restore job Raises: SDKException: if inputs are not of correct type as per definition if failed to initialize job if response is empty if response is not success """ if restore_option is None: restore_option = {} if vm_to_restore and not isinstance(vm_to_restore, str): raise SDKException('Subclient', '101') if not isinstance(vm_to_restore, list): vm_to_restore = [vm_to_restore] # check mandatory input parameters are correct if not isinstance(azure_client, str): raise SDKException('Subclient', '101') subclient = self._set_vm_conversion_defaults(azure_client, restore_option) instance = subclient._backupset_object._instance_object if proxy_client is None: proxy_client = instance.server_host_name[0] self._set_restore_inputs( restore_option, in_place=False, vcenter_client=azure_client, datastore=storage_account, esx_host=resource_group, datacenter=datacenter, unconditional_overwrite=overwrite, client_name=proxy_client, power_on=power_on, vm_to_restore=self._set_vm_to_restore(vm_to_restore), copy_precedence=copy_precedence, createPublicIP=public_ip, restoreAsManagedVM=restore_as_managed, instanceSize=instance_size, volume_level_restore=1, destination_instance=instance.instance_name, backupset_client_name=instance._agent_object._client_object.client_name, networkDisplayName=networkDisplayName, networkrsg=networkrsg, destsubid=destsubid, subnetId=subnetId ) request_json = self._prepare_fullvm_restore_json(restore_option) return self._process_restore_response(request_json)
Ancestors
Methods
def disk_restore(self, vm_name, destination_path, proxy_client=None, disk_name=None, copy_precedence=0, convert_to=None, media_agent=None, snap_proxy=None)
-
Restores the disk specified in the input paths list to the same location
Args
vm_name (str) – VM from which disk is to be restored
proxy_client (str) – Destination client to whihc disk is to be restored
client (str) – name of the client to restore disk
destinationpath (str) –path where the disk needs to be restored
copy_precedence (int) – SP copy precedence from which browse has to be performed
disk_Name (str) – name of the disk which has to be restored
convert_to (str) – to convert the disk to the specified format default: None.
media_agent (str) – MA needs to use for disk browse default :Storage policy MA
snap_proxy (str) – proxy need to be used for disk restores from snap default :proxy in instance or subclient
Returns
object - instance of the Job class for this restore job
Raises
SDKException: if destinationpath is not str
if client is not str or object if failed to initialize job if response is empty if response is not success
Expand source code Browse git
def disk_restore(self, vm_name, destination_path, proxy_client=None, disk_name=None, copy_precedence=0, convert_to=None, media_agent=None, snap_proxy=None): """Restores the disk specified in the input paths list to the same location Args: vm_name (str) -- VM from which disk is to be restored proxy_client (str) -- Destination client to whihc disk is to be restored client (str) -- name of the client to restore disk destinationpath (str) --path where the disk needs to be restored copy_precedence (int) -- SP copy precedence from which browse has to be performed disk_Name (str) -- name of the disk which has to be restored convert_to (str) -- to convert the disk to the specified format default: None. media_agent (str) -- MA needs to use for disk browse default :Storage policy MA snap_proxy (str) -- proxy need to be used for disk restores from snap default :proxy in instance or subclient Returns: object - instance of the Job class for this restore job Raises: SDKException: if destinationpath is not str if client is not str or object if failed to initialize job if response is empty if response is not success """ _vm_names, _vm_ids = self._get_vm_ids_and_names_dict_from_browse() _disk_restore_option = {} # check if inputs are correct if not (isinstance(destination_path, str) and isinstance(vm_name, (str, list))): raise SDKException('Subclient', '101') if proxy_client is None: _disk_restore_option[ "client"] = self._backupset_object._instance_object.co_ordinator else: _disk_restore_option["client"] = proxy_client # if disk list is given disk_list, disk_info_dict = self.disk_level_browse( "\\" + _vm_ids[vm_name]) if disk_name is not None: if disk_name in disk_list: disk_list = list(disk_name) else: raise SDKException('Subclient', '111') # if conversion option is given if convert_to is not None: _disk_extn = self._get_disk_extension(disk_list) if isinstance(_disk_extn, list): raise SDKException('Subclient', '101') _disk_restore_option["destination_vendor"], \ _disk_restore_option["destination_disktype"] = \ self._get_conversion_disk_type(_disk_extn, convert_to) else: _disk_restore_option["destination_vendor"] = \ self._backupset_object._instance_object._vendor_id _disk_restore_option["destination_disktype"] = 0 _disk_restore_option["volume_level_restore"] = 4 # set Source item List _src_item_list = [] for each_disk in disk_list: _src_item_list.append( "\\" + _vm_ids[vm_name] + "\\" + each_disk.split("\\")[-1]) self._set_restore_inputs( _disk_restore_option, in_place=False, copy_precedence=copy_precedence, destination_path=destination_path, paths=_src_item_list, media_agent=media_agent, snap_proxy=snap_proxy ) request_json = self._prepare_disk_restore_json(_disk_restore_option) return self._process_restore_response(request_json)
def full_vm_conversion_azurerm(self, azure_client, vm_to_restore=None, resource_group=None, storage_account=None, datacenter=None, proxy_client=None, overwrite=True, power_on=True, instance_size=None, public_ip=False, restore_as_managed=False, copy_precedence=0, disk_type=None, restore_option=None, networkDisplayName=None, networkrsg=None, destsubid=None, subnetId=None)
-
This converts the Hyperv VM to AzureRM
Args
vm_to_restore (dict): dict containing the VM name(s) to restore as keys and the new VM name(s) as their values. Input empty string for default VM name for restored VM. default: {} azure_client (str): name of the AzureRM client where the VM should be restored. resource_group (str): destination Resource group in the AzureRM storage_account (str): storage account where the restored VM should be located in AzureRM overwrite (bool): overwrite the existing VM default: True power_on (bool): power on the restored VM default: True instance_size (str): Instance Size of restored VM public_ip (bool): If True, creates the Public IP of restored VM restore_as_managed (bool): If True, restore as Managed VM in Azure copy_precedence (int): copy precedence value default: 0 proxy_client (str): destination proxy client networkDisplayName(str): destination network display name networkrsg (str): destination network display name's security group destsubid (str): destination subscription id subnetId (str): destination subet id
Returns: object - instance of the Job class for this restore job
Raises: SDKException: if inputs are not of correct type as per definition
if failed to initialize job if response is empty if response is not success
Expand source code Browse git
def full_vm_conversion_azurerm( self, azure_client, vm_to_restore=None, resource_group=None, storage_account=None, datacenter=None, proxy_client=None, overwrite=True, power_on=True, instance_size=None, public_ip=False, restore_as_managed=False, copy_precedence=0, disk_type=None, restore_option=None, networkDisplayName=None, networkrsg=None, destsubid=None, subnetId=None): """ This converts the Hyperv VM to AzureRM Args: vm_to_restore (dict): dict containing the VM name(s) to restore as keys and the new VM name(s) as their values. Input empty string for default VM name for restored VM. default: {} azure_client (str): name of the AzureRM client where the VM should be restored. resource_group (str): destination Resource group in the AzureRM storage_account (str): storage account where the restored VM should be located in AzureRM overwrite (bool): overwrite the existing VM default: True power_on (bool): power on the restored VM default: True instance_size (str): Instance Size of restored VM public_ip (bool): If True, creates the Public IP of restored VM restore_as_managed (bool): If True, restore as Managed VM in Azure copy_precedence (int): copy precedence value default: 0 proxy_client (str): destination proxy client networkDisplayName(str): destination network display name networkrsg (str): destination network display name's security group destsubid (str): destination subscription id subnetId (str): destination subet id Returns: object - instance of the Job class for this restore job Raises: SDKException: if inputs are not of correct type as per definition if failed to initialize job if response is empty if response is not success """ if restore_option is None: restore_option = {} if vm_to_restore and not isinstance(vm_to_restore, str): raise SDKException('Subclient', '101') if not isinstance(vm_to_restore, list): vm_to_restore = [vm_to_restore] # check mandatory input parameters are correct if not isinstance(azure_client, str): raise SDKException('Subclient', '101') subclient = self._set_vm_conversion_defaults(azure_client, restore_option) instance = subclient._backupset_object._instance_object if proxy_client is None: proxy_client = instance.server_host_name[0] self._set_restore_inputs( restore_option, in_place=False, vcenter_client=azure_client, datastore=storage_account, esx_host=resource_group, datacenter=datacenter, unconditional_overwrite=overwrite, client_name=proxy_client, power_on=power_on, vm_to_restore=self._set_vm_to_restore(vm_to_restore), copy_precedence=copy_precedence, createPublicIP=public_ip, restoreAsManagedVM=restore_as_managed, instanceSize=instance_size, volume_level_restore=1, destination_instance=instance.instance_name, backupset_client_name=instance._agent_object._client_object.client_name, networkDisplayName=networkDisplayName, networkrsg=networkrsg, destsubid=destsubid, subnetId=subnetId ) request_json = self._prepare_fullvm_restore_json(restore_option) return self._process_restore_response(request_json)
def full_vm_conversion_vmware(self, vcenter_client, destination_os_name, vm_to_restore=None, esx_host=None, datastore=None, overwrite=True, power_on=True, copy_precedence=0, disk_option='Original', transport_mode='Auto', proxy_client=None, destination_network=None)
-
This converts the Hyperv VM to VMware
Args
vm_to_restore (dict) -- dict containing the VM name(s) to restore as keys and the new VM name(s) as their values. Input empty string for default VM name for restored VM. default: {} vcenter_client (str) -- name of the vcenter client where the VM should be restored. esx_host (str) -- destination esx host restores to the source VM esx if this value is not specified datastore (str) -- datastore where the restored VM should be located restores to the source VM datastore if this value is not specified overwrite (bool) -- overwrite the existing VM default: True power_on (bool) -- power on the restored VM default: True copy_precedence (int) -- copy precedence value default: 0 disk_option (str) -- disk provisioning for the restored vm Options for input are: 'Original', 'Thick Lazy Zero', 'Thin', 'Thick Eager Zero' default: Original transport_mode (str) -- transport mode to be used for the restore. Options for input are: 'Auto', 'SAN', 'Hot Add', 'NBD', 'NBD SSL' default: Auto proxy_client (str) -- destination proxy client destination_network (str)-- destiantion network to which VM has to be connected destiantion_os (base string)- os of source VM
Returns: object - instance of the Job class for this restore job
Raises: SDKException: if inputs are not of correct type as per definition
if failed to initialize job if response is empty if response is not success
Expand source code Browse git
def full_vm_conversion_vmware( self, vcenter_client, destination_os_name, vm_to_restore=None, esx_host=None, datastore=None, overwrite=True, power_on=True, copy_precedence=0, disk_option='Original', transport_mode='Auto', proxy_client=None, destination_network=None ): """ This converts the Hyperv VM to VMware Args: vm_to_restore (dict) -- dict containing the VM name(s) to restore as keys and the new VM name(s) as their values. Input empty string for default VM name for restored VM. default: {} vcenter_client (str) -- name of the vcenter client where the VM should be restored. esx_host (str) -- destination esx host restores to the source VM esx if this value is not specified datastore (str) -- datastore where the restored VM should be located restores to the source VM datastore if this value is not specified overwrite (bool) -- overwrite the existing VM default: True power_on (bool) -- power on the restored VM default: True copy_precedence (int) -- copy precedence value default: 0 disk_option (str) -- disk provisioning for the restored vm Options for input are: 'Original', 'Thick Lazy Zero', 'Thin', 'Thick Eager Zero' default: Original transport_mode (str) -- transport mode to be used for the restore. Options for input are: 'Auto', 'SAN', 'Hot Add', 'NBD', 'NBD SSL' default: Auto proxy_client (str) -- destination proxy client destination_network (str)-- destiantion network to which VM has to be connected destiantion_os (base string)- os of source VM Returns: object - instance of the Job class for this restore job Raises: SDKException: if inputs are not of correct type as per definition if failed to initialize job if response is empty if response is not success """ vm_names, vm_ids = self._get_vm_ids_and_names_dict_from_browse() restore_option = {} # check mandatory input parameters are correct if not (isinstance(vcenter_client, str) and isinstance(destination_network, str)): raise SDKException('Subclient', '101') #getting all dummy objects for new client subclient = self._set_vm_conversion_defaults(vcenter_client, restore_option) instance = subclient._backupset_object._instance_object disk_option_value = subclient._disk_option[disk_option] transport_mode_value = subclient._transport_mode[transport_mode] esx_server = instance.server_host_name[0] #setting restore vms vm_list = None if isinstance(vm_to_restore, dict): vm_list = list(vm_to_restore.keys()) elif isinstance(vm_to_restore, list): vm_list = vm_to_restore elif isinstance(vm_to_restore, str): vm_list = [vm_to_restore] self._set_restore_inputs( restore_option, in_place=False, vcenter_client=vcenter_client, datastore=datastore, esx_host=esx_host, esx_server=esx_server, unconditional_overwrite=overwrite, client_name=proxy_client, power_on=power_on, vm_to_restore=self._set_vm_to_restore(vm_list), disk_option=disk_option_value, transport_mode=transport_mode_value, copy_precedence=copy_precedence, volume_level_restore=1, destination_instance=instance.instance_name, backupset_client_name=instance._agent_object._client_object.client_name, destination_network=destination_network, destination_os_name=destination_os_name ) request_json = self._prepare_fullvm_restore_json(restore_option) return self._process_restore_response(request_json)
def full_vm_restore_in_place(self, vm_to_restore=None, overwrite=True, power_on=True, copy_precedence=0, add_to_failover=False, snap_proxy=None, **kwargs)
-
Restores the FULL Virtual machine specified in the input list to the client, to the location same as source .
Args
vm_to_restore (list) – provide the list of VM name(s) to restore
overwrite default:true (bool) – overwrite the existing VM
poweron default:true (bool) – power on the restored VM
add_to_failover default:False (bool) – Add the Restored VM to Failover Cluster
snap_proxy (str) – proxy need to be used for disk restores from snap default :proxy in instance or subclient
**kwargs : Arbitrary keyword arguments Properties as of full_vm_restore_out_of_place eg: v2_details (dict) – details for v2 subclient eg: check clients.vmclient.VMClient._child_job_subclient_details
Returns
object - instance of the Job class for this restore job
Raises
SDKException:
if failed to initialize job if response is empty if response is not success
Expand source code Browse git
def full_vm_restore_in_place(self, vm_to_restore=None, overwrite=True, power_on=True, copy_precedence=0, add_to_failover=False, snap_proxy=None, **kwargs): """Restores the FULL Virtual machine specified in the input list to the client, to the location same as source . Args: vm_to_restore (list) -- provide the list of VM name(s) to restore overwrite default:true (bool) -- overwrite the existing VM poweron default:true (bool) -- power on the restored VM add_to_failover default:False (bool) -- Add the Restored VM to Failover Cluster snap_proxy (str) -- proxy need to be used for disk restores from snap default :proxy in instance or subclient **kwargs : Arbitrary keyword arguments Properties as of full_vm_restore_out_of_place eg: v2_details (dict) -- details for v2 subclient eg: check clients.vmclient.VMClient._child_job_subclient_details Returns: object - instance of the Job class for this restore job Raises: SDKException: if failed to initialize job if response is empty if response is not success """ restore_option = {"v2_details": kwargs.get("v2_details", None)} # check mandatory input parameters are correct if not (isinstance(overwrite, bool) and isinstance(power_on, bool) and isinstance(add_to_failover, bool)): raise SDKException('Subclient', '101') if copy_precedence: restore_option["copy_precedence_applicable"] = True if vm_to_restore and isinstance(vm_to_restore, str): vm_to_restore = [vm_to_restore] # set attr for all the option in restore xml from user inputs self._set_restore_inputs( restore_option, vm_to_restore=self._set_vm_to_restore(vm_to_restore), unconditional_overwrite=overwrite, power_on=power_on, copy_precedence=copy_precedence, volume_level_restore=1, add_to_failover=add_to_failover, in_place=True, snap_proxy=snap_proxy ) request_json = self._prepare_fullvm_restore_json(restore_option) request_json["taskInfo"]["subTasks"][0][ "options"]["restoreOptions"]["virtualServerRstOption"]["diskLevelVMRestoreOption"][ "esxServerName"] = restore_option["esx_server"] return self._process_restore_response(request_json)
def full_vm_restore_out_of_place(self, destination_client=None, proxy_client=None, destination_path=None, vm_to_restore=None, overwrite=False, power_on=False, copy_precedence=0, add_to_failover=False, network=None, restored_vm_name=None, restore_option=None, snap_proxy=None, media_agent=None, **kwargs)
-
Restores the FULL Virtual machine specified in the input list to the client, at the specified destination location.
Args: client (str/object) -- either the name of the client or the instance of the Client destination_path (str) -- full path of the restore location on client vm_to_restore (list) -- provide the list of VM name(s) to restore overwrite default:False (bool) -- overwrite the existing VM poweron default:False (bool) -- power on the restored VM network (str) -- Network interface card to be used add_to_failover default:False (bool) -- Add the Restored VM to Failover Cluster restore_option (dict) -- complete dictionary with all advanced optio default: {} snap_proxy (strig) -- Snap proxy to be used for restore media_agent (string) -- Media Agent to be used for Browse **kwargs : Arbitrary keyword arguments Properties as of full_vm_restore_out_of_place eg: v2_details (dict) -- details for v2 subclient eg: check clients.vmclient.VMClient._child_job_subclient_details
value: preserve_level (int) - set the preserve level in restore unconditional_overwrite (bool) - unconditionally overwrite the disk in the restore path
destination_path (str) - path where the disk needs to be restored destination_client (str) - Hyperv Host Client Name where VM needs to be restored destination_vendor (int) - vendor id of the Hypervisor destination_disktype (str) - type of disk needs to be restored like VHDX,VHD,VMDK source_item (str) - GUID of VM from which disk needs to be restored eg:\5F9FA60C-0A89-4BD9-9D02-C5ACB42745EA copy_precedence_applicable (str) - True if needs copy_precedence to be honoured else False copy_precedence (int) - the copy id from which browse and restore needs to be performed power_on (bool) - power on the VM after restore add_to_failover (bool)- Register the VM to Failover Cluster datastore (str) - Datastore where the VM needs to be restored disks (list of dict) (list) - list with dict for each disk in VM eg: [{ name:"disk1.vmdk" datastore:"local" } { name:"disk2.vmdk" datastore:"local1" } ] guid (str)- GUID of the VM needs to be restored new_name (str)- New name for the VM to be restored esx_host (str)- esx_host or client name where it need to be restored name (str)- name of the VM to be restored Returns: object - instance of the Job class for this restore job Raises: SDKException: if destination_path is not a string if failed to initialize job if response is empty if response is not success
Expand source code Browse git
def full_vm_restore_out_of_place(self, destination_client=None, proxy_client=None, destination_path=None, vm_to_restore=None, overwrite=False, power_on=False, copy_precedence=0, add_to_failover=False, network=None, restored_vm_name=None, restore_option=None, snap_proxy=None, media_agent=None, **kwargs): """Restores the FULL Virtual machine specified in the input list to the client, at the specified destination location. Args: client (str/object) -- either the name of the client or the instance of the Client destination_path (str) -- full path of the restore location on client vm_to_restore (list) -- provide the list of VM name(s) to restore overwrite default:False (bool) -- overwrite the existing VM poweron default:False (bool) -- power on the restored VM network (str) -- Network interface card to be used add_to_failover default:False (bool) -- Add the Restored VM to Failover Cluster restore_option (dict) -- complete dictionary with all advanced optio default: {} snap_proxy (strig) -- Snap proxy to be used for restore media_agent (string) -- Media Agent to be used for Browse **kwargs : Arbitrary keyword arguments Properties as of full_vm_restore_out_of_place eg: v2_details (dict) -- details for v2 subclient eg: check clients.vmclient.VMClient._child_job_subclient_details value: preserve_level (int) - set the preserve level in restore unconditional_overwrite (bool) - unconditionally overwrite the disk in the restore path destination_path (str) - path where the disk needs to be restored destination_client (str) - Hyperv Host Client Name where VM needs to be restored destination_vendor (int) - vendor id of the Hypervisor destination_disktype (str) - type of disk needs to be restored like VHDX,VHD,VMDK source_item (str) - GUID of VM from which disk needs to be restored eg:\\5F9FA60C-0A89-4BD9-9D02-C5ACB42745EA copy_precedence_applicable (str) - True if needs copy_precedence to be honoured else False copy_precedence (int) - the copy id from which browse and restore needs to be performed power_on (bool) - power on the VM after restore add_to_failover (bool)- Register the VM to Failover Cluster datastore (str) - Datastore where the VM needs to be restored disks (list of dict) (list) - list with dict for each disk in VM eg: [{ name:"disk1.vmdk" datastore:"local" } { name:"disk2.vmdk" datastore:"local1" } ] guid (str)- GUID of the VM needs to be restored new_name (str)- New name for the VM to be restored esx_host (str)- esx_host or client name where it need to be restored name (str)- name of the VM to be restored Returns: object - instance of the Job class for this restore job Raises: SDKException: if destination_path is not a string if failed to initialize job if response is empty if response is not success """ # restore options if restore_option is None: restore_option = {} restore_option["v2_details"] = kwargs.get("v2_details", None) if vm_to_restore and not isinstance(vm_to_restore, str): raise SDKException('Subclient', '101') if copy_precedence: restore_option["copy_precedence_applicable"] = True if restored_vm_name: if not (isinstance(vm_to_restore, str) or isinstance(restored_vm_name, str)): raise SDKException('Subclient', '101') restore_option['restore_new_name'] = restored_vm_name if vm_to_restore: vm_to_restore = [vm_to_restore] # check mandatory input parameters are correct if bool(restore_option): if not (isinstance(destination_path, str) and isinstance(overwrite, bool) and isinstance(power_on, bool) and isinstance(add_to_failover, bool)): raise SDKException('Subclient', '101') # set attr for all the option in restore xml from user inputs self._set_restore_inputs( restore_option, vm_to_restore=self._set_vm_to_restore(vm_to_restore), unconditional_overwrite=overwrite, power_on=power_on, copy_precedence=copy_precedence, volume_level_restore=1, vcenter_client=destination_client, client_name=proxy_client, esx_server=proxy_client, esx_host=proxy_client, add_to_failover=add_to_failover, datastore=destination_path, in_place=False, destination_network=network, snap_proxy=snap_proxy, media_agent=media_agent ) request_json = self._prepare_fullvm_restore_json(restore_option) return self._process_restore_response(request_json)
Inherited members
VirtualServerSubclient
:allow_multiple_readers
amazon_defaults
backup
browse
browse_in_time
cbtvalue
content
data_readers
deduplication_options
description
disable_backup
disable_intelli_snap
disk_level_browse
disk_pattern
display_name
enable_backup
enable_backup_at_time
enable_intelli_snap
enable_trueup
enable_trueup_days
encryption_flag
exclude_from_sla
find
find_latest_job
get_ma_associated_storagepolicy
get_nics_from_browse
guest_file_restore
guest_files_browse
instance_proxy
is_backup_enabled
is_blocklevel_backup_enabled
is_default_subclient
is_intelli_snap_enabled
is_on_demand_subclient
is_trueup_enabled
last_backup_time
list_media
live_sync
metadata
name
network_agent
next_backup_time
parse_nics_xml
plan
preview_content
properties
quiesce_file_system
read_buffer_size
refresh
restore_in_place
restore_out_of_place
set_advanced_attach_disk_restore_options
set_advanced_vm_restore_options
set_backup_nodes
set_proxy_for_snap
snapshot_engine_name
software_compression
storage_ma
storage_ma_id
storage_policy
subclient_guid
subclient_id
subclient_name
subclient_proxy
unset_proxy_for_snap
update_properties
vm_diskfilter
vm_files_browse
vm_files_browse_in_time
vm_filter