def __init__(self, commcell): """Initializes DisasterRecovery object Args: commcell (object) -- instance of commcell """ self.commcell = commcell self.client = Client(self.commcell, self.commcell.commserv_name) self.path = self.client.install_directory self.iscompressionenabled = True self._RESTORE = self.commcell._services['RESTORE'] self.backuptype = "full" self._CREATE_TASK = self.commcell._services['CREATE_TASK'] self.ishistorydb = True self.isworkflowdb = True self._client_list = None self.advbackup = False
def restore_out_of_place(self, client, destination_path, paths, overwrite=True, restore_data_and_acl=True, copy_precedence=None, from_time=None, to_time=None, to_disk=False): """Restores the files/folders specified in the input paths list to the input client, at the specified destionation 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 paths (list) -- list of full paths of files/folders to restore overwrite (bool) -- unconditional overwrite files during restore default: True restore_data_and_acl (bool) -- restore data and ACL files default: True copy_precedence (int) -- copy precedence value of storage policy copy default: None from_time (str) -- time to retore the contents after format: YYYY-MM-DD HH:MM:SS default: None to_time (str) -- time to retore the contents before format: YYYY-MM-DD HH:MM:SS default: None to_disk (bool) -- If True, restore to disk will be performed Returns: object - instance of the Job class for this restore job Raises: SDKException: if client is not a string or Client instance if destination_path is not a string if paths is not a list if failed to initialize job if response is empty if response is not success """ from cvpysdk.client import Client if not ((isinstance(client, basestring) or isinstance(client, Client)) and isinstance(destination_path, basestring) and isinstance(paths, list) and isinstance(overwrite, bool) and isinstance(restore_data_and_acl, bool)): raise SDKException('Subclient', '101') if isinstance(client, Client): client = client elif isinstance(client, basestring): client = Client(self._commcell_object, client) else: raise SDKException('Subclient', '105') paths = self._filter_paths(paths) destination_path = self._filter_paths([destination_path], True) if paths == []: raise SDKException('Subclient', '104') request_json = self._restore_json( paths=paths, in_place=False, client=client, destination_path=destination_path, overwrite=overwrite, restore_data_and_acl=restore_data_and_acl, copy_precedence=copy_precedence, from_time=from_time, to_time=to_time, ) dest_user_account = destination_path rest_different_account = True restore_to_google = True if to_disk: dest_user_account = '' rest_different_account = False restore_to_google = False request_json["taskInfo"]["subTasks"][0]["options"]["restoreOptions"][ 'cloudAppsRestoreOptions'] = { "instanceType": self._ca_instance_type, "googleRestoreOptions": { "strDestUserAccount": dest_user_account, "folderGuid": "", "restoreToDifferentAccount": rest_different_account, "restoreToGoogle": restore_to_google } } return self._process_restore_response(request_json)
def restore_out_of_place(self, client, destination_path, overwrite=True, restore_data_and_acl=True, copy_precedence=None, from_time=None, to_time=None, fs_options=None): """Restores the files/folders specified in the input paths list to the input client, at the specified destionation 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 paths (list) -- list of full paths of files/folders to restore overwrite (bool) -- unconditional overwrite files during restore default: True restore_data_and_acl (bool) -- restore data and ACL files default: True copy_precedence (int) -- copy precedence value of storage policy copy default: None from_time (str) -- time to retore the contents after format: YYYY-MM-DD HH:MM:SS default: None to_time (str) -- time to retore the contents before format: YYYY-MM-DD HH:MM:SS default: None fs_options (dict) -- dictionary that includes all advanced options options: preserve_level : preserve level option to set in restore proxy_client : proxy that needed to be used for restore impersonate_user : Impersonate user options for restore impersonate_password: Impersonate password option for restore in base64 encoded form all_versions : if set to True restores all the versions of the specified file versions : list of version numbers to be backed up Returns: object - instance of the Job class for this restore job Raises: SDKException: if client is not a string or Client instance if destination_path is not a string if paths is not a list if failed to initialize job if response is empty if response is not success """ if not ((isinstance(client, str) or isinstance(client, Client)) and isinstance(destination_path, str) and isinstance(overwrite, bool) and isinstance(restore_data_and_acl, bool)): raise SDKException('Response', '101') if fs_options is None: fs_options = {} if isinstance(client, Client): client = client elif isinstance(client, str): client = Client(self.commcell, client) else: raise SDKException('Response', '105') drpath = self.path + "\\CommserveDR" destination_path = self._filter_paths([destination_path], True) drpath = [self._filter_paths([drpath], True)] if drpath == []: raise SDKException('Response', '104') #client_obj = self.commcell.clients.get(self.commcell.commserv_name) agent_obj = client.agents.get("File System") instance_obj = agent_obj.instances.get("DefaultInstanceName") instance_obj._restore_association = { "type": "0", "backupsetName": "DR-BackupSet", "instanceName": "DefaultInstanceName", "appName": "CommServe Management", "clientName": self.commcell.commserv_name, "consumeLicense": True, "clientSidePackage": True, "subclientName": "" } return instance_obj._restore_out_of_place( client, destination_path, paths=drpath, overwrite=overwrite, restore_data_and_acl=restore_data_and_acl, copy_precedence=copy_precedence, from_time=from_time, to_time=to_time, fs_options=fs_options)