Module cvpysdk.subclients.index_server_subclient
Module for operating with index server subclient
IndexServerSubClient is the only class defined in this file
IndexServerSubClient : Derived class from BigDataAppsSubclient Base class, representing Index Server subclient and to perform operations on that subclient
IndexServerSubClient:
__init__ -- initialise object of the IndexServerSubClient class
run_backup -- run backup job for this index server
configure_backup -- Edit default subclient on index server for modifying subclient role content
do_restore_in_place -- restores the index server index to index server client
do_restore_out_of_place -- restores the index server index to the specified dir on client
get_file_details_from_backup -- gets folder/file details from index server backup using index find
_get_path_for_restore -- forms path argument for restore based on index server mode
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.
# --------------------------------------------------------------------------
"""
Module for operating with index server subclient
IndexServerSubClient is the only class defined in this file
IndexServerSubClient : Derived class from BigDataAppsSubclient Base class, representing
Index Server subclient and to perform operations on that subclient
IndexServerSubClient:
===============
__init__ -- initialise object of the IndexServerSubClient class
run_backup -- run backup job for this index server
configure_backup -- Edit default subclient on index server for modifying subclient role content
do_restore_in_place -- restores the index server index to index server client
do_restore_out_of_place -- restores the index server index to the specified dir on client
get_file_details_from_backup -- gets folder/file details from index server backup using index find
_get_path_for_restore -- forms path argument for restore based on index server mode
"""
from ..exception import SDKException
from ..index_server import IndexServerOSType
from ..subclients.bigdataappssubclient import BigDataAppsSubclient
class IndexServerSubclient(BigDataAppsSubclient):
"""
Derived class from BigDataAppsSubclient, representing index server subclient,
and to perform operations on that subclient
"""
def __init__(self, backupset_object, subclient_name, subclient_id=None):
"""
Constructor for the IndexServerSubclient class
Args:
backupset_object (object) -- instance of the Backupset class
subclient_name (str) -- name of the subclient
subclient_id (str) -- id of the subclient
"""
super(
IndexServerSubclient,
self).__init__(backupset_object, subclient_name, subclient_id)
self._agent_object = self._backupset_object._agent_object
self._instance_obj = self._backupset_object._instance_object
self._client_object = self._agent_object._client_object
self._commcell_object = self._backupset_object._commcell_object
self._index_server_obj = self._commcell_object.index_servers.get(self._client_object.client_name)
self._restore_options = {
"destination_instance_id": self._instance_obj.instance_id,
"multinode_restore": True,
"client_type": 29
}
def _get_path_for_restore(self, roles=None, core_name=None, client=None):
""" Forms the path argument for restore request based on specified input
Args:
roles (list) -- list of role names which needs to be restored
core_name (list) -- list of solr core name which needs to be restored
client (str) -- name of solr node client in case of solr cloud
***Applicable only for solr cloud or CVSolr***
Returns:
list -- list containing formatted paths
Raises:
SDKException:
if client name is not passed for index server cloud
if client is not a part of cloud
"""
paths = []
if client is None:
client = self._index_server_obj.client_name[0]
if client not in self._index_server_obj.client_name:
raise SDKException('IndexServers', '104', 'Given client name is not part of index server cloud')
path_delimiter = "\\"
if self._index_server_obj.os_type == IndexServerOSType.UNIX.value:
path_delimiter = "/"
if core_name is None and roles is not None:
paths = [f"{path_delimiter}{role}{path_delimiter}{client}" for role in roles]
elif roles is None and core_name is not None:
for core in core_name:
core = core.replace(path_delimiter, f"{path_delimiter}{client}{path_delimiter}")
paths.append(f"{path_delimiter}{core}")
elif len(roles) == 1 and core_name is not None:
for core in core_name:
paths.append(f"{path_delimiter}{roles[0]}{path_delimiter}{client}{path_delimiter}{core}")
else:
for role in self.content:
role = role.replace("\\", '')
role = role.replace("%", '')
paths.append(f"{path_delimiter}{role}{path_delimiter}{client}")
return paths
def do_restore_in_place(
self,
roles=None,
core_name=None,
overwrite=True,
from_time=None,
to_time=None,
client=None):
"""Restores the indexed data for the specified role or core list to the same index location on index server
Args:
roles (list) -- list of role name to be restored
default:None (all roles defined in this subclient)
Example : ['Data Analytics']
core_name (list) -- list of solr core name which needs to be restore.
default:None (all cores)
Format : [role name\core name]
Example : [r'Data Analytics\cvcorefla0']
overwrite (bool) -- unconditional overwrite files during restore
default: True
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
client (str) -- name of solr client whose data needs to be restored.**
***Applicable only for solr cloud mode***
default : None
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
"""
paths = self._get_path_for_restore(roles=roles, core_name=core_name, client=client)
proxy_client = self._index_server_obj.client_name[0]
if self._index_server_obj.is_cloud or len(self._index_server_obj.client_name) > 1:
proxy_client = client
job_obj = self.restore_in_place(paths=paths, overwrite=overwrite,
from_time=from_time, to_time=to_time,
proxy_client=proxy_client,
fs_options=self._restore_options)
return job_obj
def do_restore_out_of_place(
self,
dest_client,
dest_path,
roles=None,
core_name=None,
overwrite=True,
from_time=None,
to_time=None,
client=None):
"""Restores the indexed data for the specified role or core list to any other client
Args:
dest_client (str) -- Client where index needs to be restored
dest_path (str) -- folder path where index needs to be restored on client
roles (list) -- list of role name to be restored
default:None (all roles defined in this subclient)
Example : ['Data Analytics']
core_name (list) -- list of solr core name which needs to be restore.
default:None (all cores)
Format : [role name\core name]
Example : [r'Data Analytics\cvcorefla0']
overwrite (bool) -- unconditional overwrite files during restore
default: True
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
client (str) -- name of Index server client whose data needs to be restored.**
***Applicable only for solr cloud mode***
default : None
Returns:
object - instance of the Job class for this restore job
Raises:
SDKException:
if input data type is not valid
if failed to initialize job
"""
if not isinstance(dest_path, str) or not isinstance(dest_client, str):
raise SDKException('IndexServers', '101')
paths = self._get_path_for_restore(roles=roles, core_name=core_name, client=client)
job_obj = self.restore_out_of_place(client=dest_client, destination_path=dest_path,
paths=paths, to_time=to_time, from_time=from_time,
overwrite=overwrite,
fs_options=self._restore_options)
return job_obj
def run_backup(self, backup_level="Full"):
"""Runs a backup job for the default subclient.
Args:
backup_level (str) -- level of backup the user wish to run
default: Full
Returns:
object - instance of the Job class for this backup job
Raises:
SDKException:
if backup level specified is not correct
if failed to start job
"""
backup_level = backup_level.lower()
# we support only full as of now
if backup_level not in ['full']:
raise SDKException('IndexServers', '105')
if not (self.is_backup_enabled or self._client_object.is_backup_enabled):
raise SDKException('IndexServers', '107')
if self.storage_policy is None:
raise SDKException('IndexServers', '106')
job_obj = self.backup(backup_level=backup_level)
return job_obj
def get_file_details_from_backup(self, roles=None, include_files=True, job_id=0, index_server_node=None,
**kwargs):
"""Gets files/folders details from index server backup job.
Args:
roles (list) -- list of roles whose file details needs to be fetched from backup
include_files (bool) -- whether to include files in response or not
default : True (Both files/folders from backup will be returned)
Note : Works only in the case of Windows IS, does not work for Linux IS
job_id (str) -- job id to be used for browse
index_server_node (str) -- index server client node name
Note : Required compulsory in the case of unix IS when roles is not none.
kwargs -- Additional info
ex -> core_list (list) -- List of cores whose file details needs to be fetched
from backup
Returns: (list, dict)
list - List of only the file, folder paths from the browse response
dict - Dictionary of all the paths with additional metadata retrieved
from browse operation
Raises:
SDKException:
if failed to do browse
"""
find_options = {}
if roles is None:
find_options['path'] = '\\**\\*'
if self._index_server_obj.os_type == IndexServerOSType.UNIX.value:
find_options['path'] = '/**/*'
else:
roles_path = [f"\\{role}\\**\\*" for role in roles]
if index_server_node is not None:
roles_path = [f"\\{role}\\{index_server_node}\\**\\*" for role in roles]
if self._index_server_obj.os_type == IndexServerOSType.UNIX.value:
if index_server_node is None:
raise SDKException('IndexServers', '109')
if len(roles) > 1:
raise SDKException('IndexServers', '110')
roles_path = [f"/{roles[0]}/{index_server_node}"]
core_list = kwargs.get('core_list')
if core_list is not None:
roles_path = [f"/{roles[0]}/{index_server_node}/{core}" for core in core_list]
find_options['operation'] = 'browse'
find_options['path'] = roles_path
if job_id != 0:
find_options['job_id'] = job_id
if include_files:
find_options['include_meta_data'] = True
else:
find_options['hide_user_hidden'] = True
return self.find(find_options)
def configure_backup(self, storage_policy, role_content):
"""Edit the default subclient for modifying role content or storage policy.
Args:
storage_policy (str) -- Storage policy to be associated with default subclient
role_content (list) -- list of role names which needs to be backed up
Returns:
None
Raises:
SDKException:
if input data type is not valid
if response is empty
if response is not success
"""
if not isinstance(storage_policy, str):
raise SDKException('IndexServers', '101')
if not isinstance(role_content, list):
raise SDKException('IndexServers', '101')
append_str = "%"
delimiter = "/"
role_content = [f"{delimiter}{append_str}{role}{append_str}" for role in role_content]
self.content = role_content
if self.storage_policy is None:
self.storage_policy = storage_policy
elif self.storage_policy.lower() != storage_policy.lower():
self.storage_policy = storage_policy
Classes
class IndexServerSubclient (backupset_object, subclient_name, subclient_id=None)
-
Derived class from BigDataAppsSubclient, representing index server subclient, and to perform operations on that subclient
Constructor for the IndexServerSubclient class
Args
backupset_object (object) – instance of the Backupset class
subclient_name (str) – name of the subclient
subclient_id (str) – id of the subclient
Expand source code Browse git
class IndexServerSubclient(BigDataAppsSubclient): """ Derived class from BigDataAppsSubclient, representing index server subclient, and to perform operations on that subclient """ def __init__(self, backupset_object, subclient_name, subclient_id=None): """ Constructor for the IndexServerSubclient class Args: backupset_object (object) -- instance of the Backupset class subclient_name (str) -- name of the subclient subclient_id (str) -- id of the subclient """ super( IndexServerSubclient, self).__init__(backupset_object, subclient_name, subclient_id) self._agent_object = self._backupset_object._agent_object self._instance_obj = self._backupset_object._instance_object self._client_object = self._agent_object._client_object self._commcell_object = self._backupset_object._commcell_object self._index_server_obj = self._commcell_object.index_servers.get(self._client_object.client_name) self._restore_options = { "destination_instance_id": self._instance_obj.instance_id, "multinode_restore": True, "client_type": 29 } def _get_path_for_restore(self, roles=None, core_name=None, client=None): """ Forms the path argument for restore request based on specified input Args: roles (list) -- list of role names which needs to be restored core_name (list) -- list of solr core name which needs to be restored client (str) -- name of solr node client in case of solr cloud ***Applicable only for solr cloud or CVSolr*** Returns: list -- list containing formatted paths Raises: SDKException: if client name is not passed for index server cloud if client is not a part of cloud """ paths = [] if client is None: client = self._index_server_obj.client_name[0] if client not in self._index_server_obj.client_name: raise SDKException('IndexServers', '104', 'Given client name is not part of index server cloud') path_delimiter = "\\" if self._index_server_obj.os_type == IndexServerOSType.UNIX.value: path_delimiter = "/" if core_name is None and roles is not None: paths = [f"{path_delimiter}{role}{path_delimiter}{client}" for role in roles] elif roles is None and core_name is not None: for core in core_name: core = core.replace(path_delimiter, f"{path_delimiter}{client}{path_delimiter}") paths.append(f"{path_delimiter}{core}") elif len(roles) == 1 and core_name is not None: for core in core_name: paths.append(f"{path_delimiter}{roles[0]}{path_delimiter}{client}{path_delimiter}{core}") else: for role in self.content: role = role.replace("\\", '') role = role.replace("%", '') paths.append(f"{path_delimiter}{role}{path_delimiter}{client}") return paths def do_restore_in_place( self, roles=None, core_name=None, overwrite=True, from_time=None, to_time=None, client=None): """Restores the indexed data for the specified role or core list to the same index location on index server Args: roles (list) -- list of role name to be restored default:None (all roles defined in this subclient) Example : ['Data Analytics'] core_name (list) -- list of solr core name which needs to be restore. default:None (all cores) Format : [role name\core name] Example : [r'Data Analytics\cvcorefla0'] overwrite (bool) -- unconditional overwrite files during restore default: True 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 client (str) -- name of solr client whose data needs to be restored.** ***Applicable only for solr cloud mode*** default : None 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 """ paths = self._get_path_for_restore(roles=roles, core_name=core_name, client=client) proxy_client = self._index_server_obj.client_name[0] if self._index_server_obj.is_cloud or len(self._index_server_obj.client_name) > 1: proxy_client = client job_obj = self.restore_in_place(paths=paths, overwrite=overwrite, from_time=from_time, to_time=to_time, proxy_client=proxy_client, fs_options=self._restore_options) return job_obj def do_restore_out_of_place( self, dest_client, dest_path, roles=None, core_name=None, overwrite=True, from_time=None, to_time=None, client=None): """Restores the indexed data for the specified role or core list to any other client Args: dest_client (str) -- Client where index needs to be restored dest_path (str) -- folder path where index needs to be restored on client roles (list) -- list of role name to be restored default:None (all roles defined in this subclient) Example : ['Data Analytics'] core_name (list) -- list of solr core name which needs to be restore. default:None (all cores) Format : [role name\core name] Example : [r'Data Analytics\cvcorefla0'] overwrite (bool) -- unconditional overwrite files during restore default: True 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 client (str) -- name of Index server client whose data needs to be restored.** ***Applicable only for solr cloud mode*** default : None Returns: object - instance of the Job class for this restore job Raises: SDKException: if input data type is not valid if failed to initialize job """ if not isinstance(dest_path, str) or not isinstance(dest_client, str): raise SDKException('IndexServers', '101') paths = self._get_path_for_restore(roles=roles, core_name=core_name, client=client) job_obj = self.restore_out_of_place(client=dest_client, destination_path=dest_path, paths=paths, to_time=to_time, from_time=from_time, overwrite=overwrite, fs_options=self._restore_options) return job_obj def run_backup(self, backup_level="Full"): """Runs a backup job for the default subclient. Args: backup_level (str) -- level of backup the user wish to run default: Full Returns: object - instance of the Job class for this backup job Raises: SDKException: if backup level specified is not correct if failed to start job """ backup_level = backup_level.lower() # we support only full as of now if backup_level not in ['full']: raise SDKException('IndexServers', '105') if not (self.is_backup_enabled or self._client_object.is_backup_enabled): raise SDKException('IndexServers', '107') if self.storage_policy is None: raise SDKException('IndexServers', '106') job_obj = self.backup(backup_level=backup_level) return job_obj def get_file_details_from_backup(self, roles=None, include_files=True, job_id=0, index_server_node=None, **kwargs): """Gets files/folders details from index server backup job. Args: roles (list) -- list of roles whose file details needs to be fetched from backup include_files (bool) -- whether to include files in response or not default : True (Both files/folders from backup will be returned) Note : Works only in the case of Windows IS, does not work for Linux IS job_id (str) -- job id to be used for browse index_server_node (str) -- index server client node name Note : Required compulsory in the case of unix IS when roles is not none. kwargs -- Additional info ex -> core_list (list) -- List of cores whose file details needs to be fetched from backup Returns: (list, dict) list - List of only the file, folder paths from the browse response dict - Dictionary of all the paths with additional metadata retrieved from browse operation Raises: SDKException: if failed to do browse """ find_options = {} if roles is None: find_options['path'] = '\\**\\*' if self._index_server_obj.os_type == IndexServerOSType.UNIX.value: find_options['path'] = '/**/*' else: roles_path = [f"\\{role}\\**\\*" for role in roles] if index_server_node is not None: roles_path = [f"\\{role}\\{index_server_node}\\**\\*" for role in roles] if self._index_server_obj.os_type == IndexServerOSType.UNIX.value: if index_server_node is None: raise SDKException('IndexServers', '109') if len(roles) > 1: raise SDKException('IndexServers', '110') roles_path = [f"/{roles[0]}/{index_server_node}"] core_list = kwargs.get('core_list') if core_list is not None: roles_path = [f"/{roles[0]}/{index_server_node}/{core}" for core in core_list] find_options['operation'] = 'browse' find_options['path'] = roles_path if job_id != 0: find_options['job_id'] = job_id if include_files: find_options['include_meta_data'] = True else: find_options['hide_user_hidden'] = True return self.find(find_options) def configure_backup(self, storage_policy, role_content): """Edit the default subclient for modifying role content or storage policy. Args: storage_policy (str) -- Storage policy to be associated with default subclient role_content (list) -- list of role names which needs to be backed up Returns: None Raises: SDKException: if input data type is not valid if response is empty if response is not success """ if not isinstance(storage_policy, str): raise SDKException('IndexServers', '101') if not isinstance(role_content, list): raise SDKException('IndexServers', '101') append_str = "%" delimiter = "/" role_content = [f"{delimiter}{append_str}{role}{append_str}" for role in role_content] self.content = role_content if self.storage_policy is None: self.storage_policy = storage_policy elif self.storage_policy.lower() != storage_policy.lower(): self.storage_policy = storage_policy
Ancestors
Methods
def configure_backup(self, storage_policy, role_content)
-
Edit the default subclient for modifying role content or storage policy.
Args
storage_policy (str) – Storage policy to be associated with default subclient
role_content (list) – list of role names which needs to be backed up
Returns
None
Raises
SDKException:
if input data type is not valid if response is empty if response is not success
Expand source code Browse git
def configure_backup(self, storage_policy, role_content): """Edit the default subclient for modifying role content or storage policy. Args: storage_policy (str) -- Storage policy to be associated with default subclient role_content (list) -- list of role names which needs to be backed up Returns: None Raises: SDKException: if input data type is not valid if response is empty if response is not success """ if not isinstance(storage_policy, str): raise SDKException('IndexServers', '101') if not isinstance(role_content, list): raise SDKException('IndexServers', '101') append_str = "%" delimiter = "/" role_content = [f"{delimiter}{append_str}{role}{append_str}" for role in role_content] self.content = role_content if self.storage_policy is None: self.storage_policy = storage_policy elif self.storage_policy.lower() != storage_policy.lower(): self.storage_policy = storage_policy
def do_restore_in_place(self, roles=None, core_name=None, overwrite=True, from_time=None, to_time=None, client=None)
-
Restores the indexed data for the specified role or core list to the same index location on index server
Args
roles (list) – list of role name to be restored default:None (all roles defined in this subclient) Example : ['Data Analytics']
core_name (list) – list of solr core name which needs to be restore. default:None (all cores) Format : [role name\core name] Example : [r'Data Analytics\cvcorefla0']
overwrite (bool) – unconditional overwrite files during restore default: True
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
client (str) – name of solr client whose data needs to be restored. Applicable only for solr cloud mode** default : None
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 do_restore_in_place( self, roles=None, core_name=None, overwrite=True, from_time=None, to_time=None, client=None): """Restores the indexed data for the specified role or core list to the same index location on index server Args: roles (list) -- list of role name to be restored default:None (all roles defined in this subclient) Example : ['Data Analytics'] core_name (list) -- list of solr core name which needs to be restore. default:None (all cores) Format : [role name\core name] Example : [r'Data Analytics\cvcorefla0'] overwrite (bool) -- unconditional overwrite files during restore default: True 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 client (str) -- name of solr client whose data needs to be restored.** ***Applicable only for solr cloud mode*** default : None 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 """ paths = self._get_path_for_restore(roles=roles, core_name=core_name, client=client) proxy_client = self._index_server_obj.client_name[0] if self._index_server_obj.is_cloud or len(self._index_server_obj.client_name) > 1: proxy_client = client job_obj = self.restore_in_place(paths=paths, overwrite=overwrite, from_time=from_time, to_time=to_time, proxy_client=proxy_client, fs_options=self._restore_options) return job_obj
def do_restore_out_of_place(self, dest_client, dest_path, roles=None, core_name=None, overwrite=True, from_time=None, to_time=None, client=None)
-
Restores the indexed data for the specified role or core list to any other client
Args
dest_client (str) – Client where index needs to be restored
dest_path (str) – folder path where index needs to be restored on client
roles (list) – list of role name to be restored default:None (all roles defined in this subclient) Example : ['Data Analytics']
core_name (list) – list of solr core name which needs to be restore. default:None (all cores) Format : [role name\core name] Example : [r'Data Analytics\cvcorefla0']
overwrite (bool) – unconditional overwrite files during restore default: True
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
client (str) – name of Index server client whose data needs to be restored. Applicable only for solr cloud mode** default : None
Returns
object - instance of the Job class for this restore job
Raises
SDKException:
if input data type is not valid if failed to initialize job
Expand source code Browse git
def do_restore_out_of_place( self, dest_client, dest_path, roles=None, core_name=None, overwrite=True, from_time=None, to_time=None, client=None): """Restores the indexed data for the specified role or core list to any other client Args: dest_client (str) -- Client where index needs to be restored dest_path (str) -- folder path where index needs to be restored on client roles (list) -- list of role name to be restored default:None (all roles defined in this subclient) Example : ['Data Analytics'] core_name (list) -- list of solr core name which needs to be restore. default:None (all cores) Format : [role name\core name] Example : [r'Data Analytics\cvcorefla0'] overwrite (bool) -- unconditional overwrite files during restore default: True 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 client (str) -- name of Index server client whose data needs to be restored.** ***Applicable only for solr cloud mode*** default : None Returns: object - instance of the Job class for this restore job Raises: SDKException: if input data type is not valid if failed to initialize job """ if not isinstance(dest_path, str) or not isinstance(dest_client, str): raise SDKException('IndexServers', '101') paths = self._get_path_for_restore(roles=roles, core_name=core_name, client=client) job_obj = self.restore_out_of_place(client=dest_client, destination_path=dest_path, paths=paths, to_time=to_time, from_time=from_time, overwrite=overwrite, fs_options=self._restore_options) return job_obj
def get_file_details_from_backup(self, roles=None, include_files=True, job_id=0, index_server_node=None, **kwargs)
-
Gets files/folders details from index server backup job.
Args
roles (list) – list of roles whose file details needs to be fetched from backup
include_files (bool) – whether to include files in response or not default : True (Both files/folders from backup will be returned) Note : Works only in the case of Windows IS, does not work for Linux IS
job_id (str) – job id to be used for browse
index_server_node (str) – index server client node name Note : Required compulsory in the case of unix IS when roles is not none.
kwargs – Additional info ex -> core_list (list) – List of cores whose file details needs to be fetched from backup Returns: (list, dict)
list - List of only the file, folder paths from the browse response dict - Dictionary of all the paths with additional metadata retrieved from browse operation
Raises
SDKException:
if failed to do browse
Expand source code Browse git
def get_file_details_from_backup(self, roles=None, include_files=True, job_id=0, index_server_node=None, **kwargs): """Gets files/folders details from index server backup job. Args: roles (list) -- list of roles whose file details needs to be fetched from backup include_files (bool) -- whether to include files in response or not default : True (Both files/folders from backup will be returned) Note : Works only in the case of Windows IS, does not work for Linux IS job_id (str) -- job id to be used for browse index_server_node (str) -- index server client node name Note : Required compulsory in the case of unix IS when roles is not none. kwargs -- Additional info ex -> core_list (list) -- List of cores whose file details needs to be fetched from backup Returns: (list, dict) list - List of only the file, folder paths from the browse response dict - Dictionary of all the paths with additional metadata retrieved from browse operation Raises: SDKException: if failed to do browse """ find_options = {} if roles is None: find_options['path'] = '\\**\\*' if self._index_server_obj.os_type == IndexServerOSType.UNIX.value: find_options['path'] = '/**/*' else: roles_path = [f"\\{role}\\**\\*" for role in roles] if index_server_node is not None: roles_path = [f"\\{role}\\{index_server_node}\\**\\*" for role in roles] if self._index_server_obj.os_type == IndexServerOSType.UNIX.value: if index_server_node is None: raise SDKException('IndexServers', '109') if len(roles) > 1: raise SDKException('IndexServers', '110') roles_path = [f"/{roles[0]}/{index_server_node}"] core_list = kwargs.get('core_list') if core_list is not None: roles_path = [f"/{roles[0]}/{index_server_node}/{core}" for core in core_list] find_options['operation'] = 'browse' find_options['path'] = roles_path if job_id != 0: find_options['job_id'] = job_id if include_files: find_options['include_meta_data'] = True else: find_options['hide_user_hidden'] = True return self.find(find_options)
def run_backup(self, backup_level='Full')
-
Runs a backup job for the default subclient.
Args
backup_level (str) – level of backup the user wish to run default: Full
Returns
object - instance of the Job class for this backup job
Raises
SDKException: if backup level specified is not correct
if failed to start job
Expand source code Browse git
def run_backup(self, backup_level="Full"): """Runs a backup job for the default subclient. Args: backup_level (str) -- level of backup the user wish to run default: Full Returns: object - instance of the Job class for this backup job Raises: SDKException: if backup level specified is not correct if failed to start job """ backup_level = backup_level.lower() # we support only full as of now if backup_level not in ['full']: raise SDKException('IndexServers', '105') if not (self.is_backup_enabled or self._client_object.is_backup_enabled): raise SDKException('IndexServers', '107') if self.storage_policy is None: raise SDKException('IndexServers', '106') job_obj = self.backup(backup_level=backup_level) return job_obj
Inherited members
BigDataAppsSubclient
:allow_multiple_readers
archiver_retention
archiver_retention_days
backup
backup_nodes
backup_only_archiving_candidate
backup_private_authorities
backup_queue_data
backup_retention
backup_retention_days
backup_savf_file_data
backup_spool_file_data
backup_using_multiple_drives
block_level_backup_option
browse
catalog_acl
content
create_file_level_index_option
data_readers
deduplication_options
description
disable_backup
disable_content_indexing
disable_intelli_snap
disk_cleanup
disk_cleanup_rules
display_name
enable_backup
enable_backup_at_time
enable_content_indexing
enable_dc_content_indexing
enable_intelli_snap
enable_synclib
enable_trueup
enable_trueup_days
encryption_flag
exception_content
exclude_from_sla
file_version
filter_content
find
find_all_versions
find_latest_job
generate_signature_on_ibmi
get_ma_associated_storagepolicy
global_filter_status
ibmi_compression
ibmi_dr_config
impersonate_user
index_pruning_cycles_retention
index_pruning_days_retention
index_pruning_type
index_server
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
name
network_agent
network_share_auto_mount
next_backup_time
object_level_backup
onetouch_option
onetouch_server
onetouch_server_directory
other_pending_changes
pending_record_changes
plan
pre_post_commands
properties
read_buffer_size
refresh
restore_in_place
restore_out_of_place
run_backup_copy
save_access_path
save_while_active_option
scan_type
set_backup_nodes
set_data_access_nodes
set_proxy_for_snap
snapshot_engine_name
software_compression
storage_ma
storage_ma_id
storage_policy
subclient_guid
subclient_id
subclient_name
system_state_option
target_release
trueup_days
trueup_option
unset_proxy_for_snap
update_history
update_properties
use_vss