Module cvpysdk.instances.cloudapps.salesforce_instance
File for operating on a Salesforce Instance.
SalesforceInstance is the only class defined in this file.
SalesforceeInstance: Derived class from CloudAppsInstance Base class, representing a Salesforce instance, and to perform operations on that instance
Salesforceinstance
_restore_json() – Returns the JSON request to pass to the API as per the options selected by the user
restore_to_file_system() – Runs object level restore to file system and returns object of Job or Schedule class
restore_to_database() – Runs object level restore to database and returns object of Job or Schedule class
restore_to_salesforce_from_database() – Runs restore to Salesforce from database and returns object of Job or Schedule class
restore_to_salesforce_from_media() – Runs restore to Salesforce from database and returns object of Job or Schedule class
metadata_restore_to_file_system() – Runs metadata restore to file system and returns object of Job or Schedule class
metadata_restore_to_salesforce() – Runs metadata restore to Salesforce and returns object of Job or Schedule class
SalesforceInstance Attributes:
**ca_instance_type** -- Returns the instance type of this cloud apps instance
**organization_id** -- Returns the Salesforce organization id
**login_url** -- Returns the login url of Salesforce organization
**consumer_id** -- Returns the Consumer Id of the Salesforce connected app used to authenticate
with Salesforce by this instance
**proxy_client** -- Returns the name of the access node. Returns None if client group is configured
as access node
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 Salesforce Instance.
SalesforceInstance is the only class defined in this file.
SalesforceeInstance: Derived class from CloudAppsInstance Base class, representing a
Salesforce instance, and to perform operations on that instance
SalesforceInstance:
_restore_json() -- Returns the JSON request to pass to the API as per the options selected by
the user
restore_to_file_system() -- Runs object level restore to file system and returns object of Job or
Schedule class
restore_to_database() -- Runs object level restore to database and returns object of Job or Schedule
class
restore_to_salesforce_from_database() -- Runs restore to Salesforce from database and returns object of Job or
Schedule class
restore_to_salesforce_from_media() -- Runs restore to Salesforce from database and returns object of Job or
Schedule class
metadata_restore_to_file_system() -- Runs metadata restore to file system and returns object of Job or Schedule
class
metadata_restore_to_salesforce() -- Runs metadata restore to Salesforce and returns object of Job or Schedule
class
SalesforceInstance Attributes:
**ca_instance_type** -- Returns the instance type of this cloud apps instance
**organization_id** -- Returns the Salesforce organization id
**login_url** -- Returns the login url of Salesforce organization
**consumer_id** -- Returns the Consumer Id of the Salesforce connected app used to authenticate
with Salesforce by this instance
**proxy_client** -- Returns the name of the access node. Returns None if client group is configured
as access node
"""
from __future__ import unicode_literals
from base64 import b64encode
from ..cainstance import CloudAppsInstance
from ...exception import SDKException
class SalesforceInstance(CloudAppsInstance):
"""Class for representing an Instance of the Salesforce instance type."""
@property
def ca_instance_type(self):
"""
Returns the instance type of this cloud apps instance
Returns:
(str): Instance Type
"""
return 'SALESFORCE'
@property
def organization_id(self):
"""
Returns the Salesforce organization id
Returns:
(str): Organization Id
Raises:
SDKException: if attribute could not be fetched
"""
try:
return self._properties['cloudAppsInstance']['salesforceInstance']['sfOrgID']
except KeyError:
raise SDKException('Instance', '105', 'Could not fetch organization ID')
@property
def login_url(self):
"""
Returns the login url of Salesforce organization
Returns:
(str): Login URL
Raises:
SDKException: if attribute could not be fetched
"""
try:
return self._properties['cloudAppsInstance']['salesforceInstance']['endpoint']
except KeyError:
raise SDKException('Instance', '105', 'Could not fetch login url')
@property
def consumer_id(self):
"""
Returns the Consumer Id of the Salesforce connected app used to authenticate with Salesforce by this instance
Returns:
(str): Consumer Id
Raises:
SDKException: if attribute could not be fetched
"""
try:
return self._properties['cloudAppsInstance']['salesforceInstance']['consumerId']
except KeyError:
raise SDKException('Instance', '105', 'Could not fetch login url')
@property
def proxy_client(self):
"""
Returns the name of the access node.
Returns:
(str): Access Node
Raises:
SDKException:
if attribute could not be fetched
if access node is a client group
"""
try:
general_cloud_properties = self._properties['cloudAppsInstance']['generalCloudProperties']
if 'clientName' in general_cloud_properties['proxyServers'][0].keys():
return general_cloud_properties['proxyServers'][0]['clientName']
if 'clientName' in general_cloud_properties['accessNodes']['memberServers'][0]['client'].keys():
return general_cloud_properties['accessNodes']['memberServers'][0]['client']['clientName']
if 'clientGroupName' in general_cloud_properties['accessNodes']['memberServers'][0]['client'].keys():
raise SDKException(
'Instance',
'102',
'This instance uses a client group as access node. Use access_node attribute instead.'
)
except KeyError:
raise SDKException('Instance', '105', 'Could not fetch proxy client')
@property
def access_node(self):
"""
Returns a dictionary containing clientName and clientId or clientGroupName and clientGroupId depending on
whether a single client or a client group is configured as access node.
Returns:
(dict): Dictionary containing access node name and id
Raises:
SDKException: if attribute could not be fetched
"""
try:
access_node = self._properties['cloudAppsInstance']['generalCloudProperties']['accessNodes'] \
['memberServers'][0]['client'].copy()
if 'entityInfo' in access_node:
del access_node['entityInfo']
return access_node
except KeyError:
raise SDKException('Instance', '105', 'Could not fetch access node')
def _restore_json(self, **kwargs):
"""
Returns the JSON request to pass to the API as per the options selected by the user
Args:
**kwargs (dict): Dict of named parameters to set for restore
Returns:
(dict): Request JSON
"""
if len(self.backupsets.all_backupsets) > 1 or len(self.subclients.all_subclients) > 1:
raise SDKException(
'Instance',
'102',
'More than one backupset/subclient configured in this instance. Run restore from subclient'
)
if not kwargs.get('no_of_streams', None):
kwargs['no_of_streams'] = 2
kwargs['client'] = kwargs.get('client', None) or self._agent_object._client_object
request_json = super()._restore_json(**kwargs)
backupset = self.backupsets.get(list(self.backupsets.all_backupsets.keys())[0])
subclient = list(self.subclients.all_subclients.items())[0]
request_json['taskInfo']['associations'][0].update({
'backupsetName': backupset.name,
'backupsetId': int(backupset.backupset_id),
'subclientName': subclient[0],
'subclientId': int(subclient[1]['id'])
})
request_json['taskInfo']['subTasks'][0]['options']['restoreOptions']['cloudAppsRestoreOptions'] = {
'instanceType': self.ca_instance_type,
'salesforceRestoreOptions': {
'restoreToFileSystem': kwargs.get('restore_to_file_system', False),
'restoreToSalesforce': kwargs.get('restore_to_salesforce', False),
'restoreFromDatabase': kwargs.get('restore_from_database', False),
'isMetadataRestore': kwargs.get('is_metadata_restore', False),
'pathToStoreCsv': kwargs.get('path_to_store_csv', None) or backupset.download_cache_path,
'dependentRestoreLevel': kwargs.get('dependent_restore_level', 0),
'restoreParentType': kwargs.get('restore_parent_type', 'NONE'),
'isSaaSRestore': False
}
}
if 'restore_to_salesforce' in kwargs and kwargs['restore_to_salesforce']:
if kwargs.get('instance', None) and kwargs.get('backupset', None):
destination_client = self._commcell_object.clients.get(kwargs['client'])
destination_instance = destination_client.agents.get('Cloud Apps').instances.get(kwargs['instance'])
destination_backupset = destination_instance.backupsets.get(kwargs['backupset'])
else:
destination_instance = self
destination_backupset = backupset
request_json['taskInfo']['subTasks'][0]['options']['restoreOptions']['destination'].update({
'destinationInstance': {
'instanceId': int(destination_instance.instance_id),
'instanceName': destination_instance.name,
},
'destinationBackupset': {
'backupsetId': int(destination_backupset.backupset_id),
'backupsetName': destination_backupset.backupset_name
}
})
if kwargs.get('db_enabled', False):
request_json['taskInfo']['subTasks'][0]['options']['restoreOptions']['cloudAppsRestoreOptions'] \
['salesforceRestoreOptions'].update({
'syncDatabase': {
'dbEnabled': True,
'dbType': kwargs['db_type'],
'dbHost': kwargs['db_host'],
'dbInstance': kwargs.get('db_instance', ''),
'dbPort': str(kwargs.get('db_port', 5432 if kwargs['db_type'] == 'POSTGRESQL' else 1433)),
'dbName': kwargs['db_name'],
'dbUserPassword': {
'userName': kwargs['db_user_name'],
'password': b64encode(kwargs['db_password'].encode()).decode()
}
},
'overrideTable': kwargs.get('override_table', True),
'restoreCatalogDatabase': kwargs.get('restore_catalog_database', False)
})
return request_json
def restore_to_file_system(self, **kwargs):
"""
Runs object level restore to file system and returns object of Job or Schedule class. For out of place restore,
pass both client and path_to_store_csv parameters. By default, will restore to access node and download cache
path.
Args:
**kwargs (dict): Restore options including
{
paths (list[str]): List of files and objects to restore like
['/Files/filename', '/Objects/object_name']
(Default is ['/Files/', '/Objects/'] which selects all files and objects for restore),
client (str): Name of destination client (Default is access node),
path_to_store_csv (str): path on destination client to restore to (Default is download cache path),
from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None),
to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None),
no_of_streams (int): Number of streams to use for restore (Default is 2),
dependent_restore_level (int): restore children option (Default is 0)
0 -- No Children
1 -- Immediate Children
-1 -- All Children,
restore_parent_type (str): restore parents option (Default is 'NONE')
'NONE' -- No Parents
'ALL' -- All Parents
}
Returns:
object: Object of Job or Schedule class
Raises:
SDKException:
if paths is given but is not a list
if client parameter is not given and the access node configured with this instance is a client group
if either client or path_to_store_csv is given but not both are present
if client or path_to_store_csv are not strings
"""
PARAMS = ('client', 'path_to_store_csv')
if not isinstance(kwargs.get('paths', list()), list):
raise SDKException('Instance', '101')
if any(param in kwargs for param in PARAMS) and \
not all(isinstance(kwargs.get(param, None), str) for param in PARAMS):
raise SDKException('Instance', '101')
if not 'paths' in kwargs:
kwargs['paths'] = ['/Files/', '/Objects/']
request_json = self._restore_json(
client=kwargs.get('client', self.proxy_client),
restore_to_file_system=True,
**kwargs
)
return self._process_restore_response(request_json)
def restore_to_database(
self,
db_type,
db_host_name,
db_name,
db_user_name,
db_password,
**kwargs
):
"""
Runs object level restore to database and returns object of Job or Schedule class
Args:
db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER'
db_host_name (str): Hostname of database server
db_name (str): Database name where objects will be restored
db_user_name (str): Username of database user
db_password (str): Password of database user
**kwargs (dict): Other restore options including
{
paths (list[str]): List of files and objects to restore like
['/Files/filename', '/Objects/object_name']
(Default is ['/Objects/'] which selects all objects for restore),
db_instance (str): Database instance for SQL Server,
db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER),
from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None),
to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None),
no_of_streams (int): Number of streams to use for restore (Default is 2),
path_to_store_csv (str): path to use as staging folder (Default is download cache path),
dependent_restore_level (int): restore children option (Default is 0)
0 -- No Children
1 -- Immediate Children
-1 -- All Children,
restore_parent_type (str): restore parents option (Default is 'NONE')
'NONE' -- No Parents
'ALL' -- All Parents
}
Returns:
object: Object of Job or Schedule class
Raises:
SDKException:
if required parameters are not of the correct type
if db_type is 'SQLSERVER' but db_instance is not given/ is not a string
if paths is given but is not a list
"""
PARAMS = (db_type, db_host_name, db_name, db_user_name, db_password)
if not isinstance(kwargs.get('paths', list()), list):
raise SDKException('Instance', '101')
if not all(isinstance(val, str) for val in PARAMS) and \
(isinstance(kwargs.get('db_instance', None), str) != (db_type == 'SQLSERVER')):
raise SDKException('Instance', '101')
if not 'paths' in kwargs:
kwargs['paths'] = ['/Objects/']
request_json = self._restore_json(
db_enabled=True,
db_type=db_type,
db_host=db_host_name,
db_name=db_name,
db_user_name=db_user_name,
db_password=db_password,
**kwargs
)
return self._process_restore_response(request_json)
def restore_to_salesforce_from_database(self, **kwargs):
"""
Runs restore to Salesforce from database and returns object of Job or Schedule class. For out of place restore,
pass the client, instance and backupset parameters. If database parameters are not passed, sync db will be used.
Args:
**kwargs (dict): Other restore options including
{
paths (list[str]): List of files and objects to restore like
['/Files/filename', '/Objects/object_name']
(Default is ['/Files/', '/Objects/'] which selects all files and objects for restore),
client (str): Name of destination client (Default is source client),
instance (str): Name of destination instance (Default is source instance),
backupset (str): Name of destination backupset (Default is source backupset),
db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER',
db_host (str): Hostname of database server,
db_name (str): Database name where objects will be restored,
db_user_name (str): Username of database user,
db_password (str): Password of database user,
db_instance (str): Database instance for SQL Server,
db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER),
from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None),
to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None),
no_of_streams (int): Number of streams to use for restore (Default is 2),
path_to_store_csv (str): path to use as staging folder (Default is download cache path),
dependent_restore_level (int): restore children option (Default is 0)
0 -- No Children
1 -- Immediate Children
-1 -- All Children,
restore_parent_type (str): restore parents option (Default is 'NONE')
'NONE' -- No Parents
'ALL' -- All Parents
}
Returns:
object: Object of Job or Schedule class
Raises:
SDKException:
if paths is given but is not a list
if any database parameters are given but not all are present
if database parameters are not all strings
if db_type is 'SQLSERVER' but db_instance is not given/ is not a string
if either client, instance or backupset are given but not all three are present
if client, instance and backupset are not strings
"""
DB_PARAMS = ('db_type', 'db_host', 'db_name', 'db_user_name', 'db_password')
DEST_PARAMS = ('client', 'instance', 'backupset')
if not isinstance(kwargs.get('paths', list()), list):
raise SDKException('Instance', '101')
if any(param in kwargs for param in DEST_PARAMS) and \
not all(isinstance(kwargs.get(param, None), str) for param in DEST_PARAMS):
raise SDKException('Instance', '101')
if any(param in kwargs for param in DB_PARAMS):
if not all(isinstance(kwargs.get(param, None), str) for param in DB_PARAMS) and \
(isinstance(kwargs.get('db_instance', None), str) != (kwargs['db_type'] == 'SQLSERVER')):
raise SDKException('Instance', '101')
kwargs['db_enabled'] = True
if not 'paths' in kwargs:
kwargs['paths'] = ['/Files/', '/Objects/']
request_json = self._restore_json(
restore_to_salesforce=True,
restore_from_database=True,
**kwargs
)
return self._process_restore_response(request_json)
def restore_to_salesforce_from_media(self, **kwargs):
"""
Runs restore to Salesforce from database and returns object of Job or Schedule class. For out of place restore,
pass the client, instance and backupset parameters. If database parameters are not passed, sync db will be used
as staging db.
Args:
**kwargs (dict): Other restore options including
{
paths (list[str]): List of files and objects to restore like
['/Files/filename', '/Objects/object_name']
(Default is ['/Files/', '/Objects/'] which selects all files and objects for restore),
client (str): Name of destination client (Default is source client),
instance (str): Name of destination instance (Default is source instance),
backupset (str): Name of destination backupset (Default is source backupset),
db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER',
db_host (str): Hostname of database server,
db_name (str): Database name where objects will be restored,
db_user_name (str): Username of database user,
db_password (str): Password of database user,
db_instance (str): Database instance for SQL Server,
db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER),
from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None),
to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None),
no_of_streams (int): Number of streams to use for restore (Default is 2),
path_to_store_csv (str): path to use as staging folder (Default is download cache path),
dependent_restore_level (int): restore children option (Default is 0)
0 -- No Children
1 -- Immediate Children
-1 -- All Children,
restore_parent_type (str): restore parents option (Default is 'NONE')
'NONE' -- No Parents
'ALL' -- All Parents
}
Returns:
object: Object of Job or Schedule class
Raises:
SDKException:
if paths is given but is not a list
if any database parameters are given but not all are present
if database parameters are not all strings
if db_type is 'SQLSERVER' but db_instance is not given/ is not a string
if either client, instance or backupset are given but not all three are present
if client, instance and backupset are not strings
"""
DB_PARAMS = ('db_type', 'db_host', 'db_name', 'db_user_name', 'db_password')
DEST_PARAMS = ('client', 'instance', 'backupset')
if not isinstance(kwargs.get('paths', list()), list):
raise SDKException('Instance', '101')
if any(param in kwargs for param in DEST_PARAMS) and \
not all(isinstance(kwargs.get(param, None), str) for param in DEST_PARAMS):
raise SDKException('Instance', '101')
if any(keyword in kwargs for keyword in DB_PARAMS):
if not all(isinstance(kwargs.get(param, None), str) for param in DB_PARAMS) and \
(isinstance(kwargs.get('db_instance', None), str) != (kwargs['db_type'] == 'SQLSERVER')):
raise SDKException('Instance', '101')
kwargs['db_enabled'] = True
if not 'paths' in kwargs:
kwargs['paths'] = ['/Files/', '/Objects/']
request_json = self._restore_json(
restore_to_salesforce=True,
**kwargs
)
return self._process_restore_response(request_json)
def metadata_restore_to_file_system(self, **kwargs):
"""
Runs metadata restore to file system and returns object of Job or Schedule class. For out of place restore,
pass both client and path_to_store_csv parameters. By default, will restore to access node and download cache
path.
Args:
**kwargs (dict): Other restore options including
{
paths (list[str]): List of metadata components to restore like
['/Metadata/unpackaged/objects/Account.object',
'/Metadata/unpackaged/profiles/Admin.profile']
(Default is ['/Metadata/unpackaged/'] which selects all metdata components for restore),
client (str): Name of destination client (Default is access node),
path_to_store_csv (str): path on destination client to restore to (Default is download cache path),
from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None),
to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None),
no_of_streams (int): Number of streams to use for restore (Default is 2),
dependent_restore_level (int): restore children option (Default is 0)
0 -- No Children
1 -- Immediate Children
-1 -- All Children,
restore_parent_type (str): restore parents option (Default is 'NONE')
'NONE' -- No Parents
'ALL' -- All Parents
}
Returns:
object: Object of Job or Schedule class
Raises:
SDKException:
if paths is given but is not a list
if client parameter is not given and the access node configured with this instance is a client group
if either client or path_to_store_csv is given but not both are present
if client or path_to_store_csv are not strings
"""
PARAMS = ('client', 'path_to_store_csv')
if not isinstance(kwargs.get('paths', list()), list):
raise SDKException('Instance', '101')
if any(param in kwargs for param in PARAMS) and \
not all(isinstance(kwargs.get(param, None), str) for param in PARAMS):
raise SDKException('Instance', '101')
if not 'paths' in kwargs:
kwargs['paths'] = ['/Metadata/unpackaged/']
request_json = self._restore_json(
restore_to_file_system=True,
is_metadata_restore=True,
**kwargs
)
return self._process_restore_response(request_json)
def metadata_restore_to_salesforce(self, **kwargs):
"""
Runs metadata restore to Salesforce and returns object of Job or Schedule class. For out of place restore,
pass client, instance and backupset parameters.
Args:
**kwargs (dict): Other restore options including
{
paths (list[str]): List of metadata components to restore like
['/Metadata/unpackaged/objects/Account.object',
'/Metadata/unpackaged/profiles/Admin.profile']
(Default is ['/Metadata/unpackaged/'] which selects all metdata components for restore),
client (str): Name of destination client (Default is source client),
instance (str): Name of destination instance (Default is source instance),
backupset (str): Name of destination backupset (Default is source backupset),
from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None),
to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None),
no_of_streams (int): Number of streams to use for restore (Default is 2),
path_to_store_csv (str): path to use as staging folder (Default is download cache path),
dependent_restore_level (int): restore children option (Default is 0)
0 -- No Children
1 -- Immediate Children
-1 -- All Children,
restore_parent_type (str): restore parents option (Default is 'NONE')
'NONE' -- No Parents
'ALL' -- All Parents
}
Returns:
object: Object of Job or Schedule class
Raises:
SDKException:
if paths is given but is not a list
if either client, instance or backupset are given but not all three are present
if client, instance and backupset are not strings
"""
DEST_PARAMS = ('client', 'instance', 'backupset')
if not isinstance(kwargs.get('paths', list()), list):
raise SDKException('Instance', '101')
if any(param in kwargs for param in DEST_PARAMS) and \
not all(isinstance(kwargs.get(param, None), str) for param in DEST_PARAMS):
raise SDKException('Instance', '101')
if not 'paths' in kwargs:
kwargs['paths'] = ['/Metadata/unpackaged/']
request_json = self._restore_json(
restore_to_salesforce=True,
is_metadata_restore=True,
**kwargs
)
return self._process_restore_response(request_json)
Classes
class SalesforceInstance (agent_object, instance_name, instance_id=None)
-
Class for representing an Instance of the Salesforce instance type.
Initialise the instance object.
Args
agent_object (object) – instance of the Agent class
instance_name (str) – name of the instance
instance_id (str) – id of the instance default: None
Returns
object - instance of the Instance class
Expand source code Browse git
class SalesforceInstance(CloudAppsInstance): """Class for representing an Instance of the Salesforce instance type.""" @property def ca_instance_type(self): """ Returns the instance type of this cloud apps instance Returns: (str): Instance Type """ return 'SALESFORCE' @property def organization_id(self): """ Returns the Salesforce organization id Returns: (str): Organization Id Raises: SDKException: if attribute could not be fetched """ try: return self._properties['cloudAppsInstance']['salesforceInstance']['sfOrgID'] except KeyError: raise SDKException('Instance', '105', 'Could not fetch organization ID') @property def login_url(self): """ Returns the login url of Salesforce organization Returns: (str): Login URL Raises: SDKException: if attribute could not be fetched """ try: return self._properties['cloudAppsInstance']['salesforceInstance']['endpoint'] except KeyError: raise SDKException('Instance', '105', 'Could not fetch login url') @property def consumer_id(self): """ Returns the Consumer Id of the Salesforce connected app used to authenticate with Salesforce by this instance Returns: (str): Consumer Id Raises: SDKException: if attribute could not be fetched """ try: return self._properties['cloudAppsInstance']['salesforceInstance']['consumerId'] except KeyError: raise SDKException('Instance', '105', 'Could not fetch login url') @property def proxy_client(self): """ Returns the name of the access node. Returns: (str): Access Node Raises: SDKException: if attribute could not be fetched if access node is a client group """ try: general_cloud_properties = self._properties['cloudAppsInstance']['generalCloudProperties'] if 'clientName' in general_cloud_properties['proxyServers'][0].keys(): return general_cloud_properties['proxyServers'][0]['clientName'] if 'clientName' in general_cloud_properties['accessNodes']['memberServers'][0]['client'].keys(): return general_cloud_properties['accessNodes']['memberServers'][0]['client']['clientName'] if 'clientGroupName' in general_cloud_properties['accessNodes']['memberServers'][0]['client'].keys(): raise SDKException( 'Instance', '102', 'This instance uses a client group as access node. Use access_node attribute instead.' ) except KeyError: raise SDKException('Instance', '105', 'Could not fetch proxy client') @property def access_node(self): """ Returns a dictionary containing clientName and clientId or clientGroupName and clientGroupId depending on whether a single client or a client group is configured as access node. Returns: (dict): Dictionary containing access node name and id Raises: SDKException: if attribute could not be fetched """ try: access_node = self._properties['cloudAppsInstance']['generalCloudProperties']['accessNodes'] \ ['memberServers'][0]['client'].copy() if 'entityInfo' in access_node: del access_node['entityInfo'] return access_node except KeyError: raise SDKException('Instance', '105', 'Could not fetch access node') def _restore_json(self, **kwargs): """ Returns the JSON request to pass to the API as per the options selected by the user Args: **kwargs (dict): Dict of named parameters to set for restore Returns: (dict): Request JSON """ if len(self.backupsets.all_backupsets) > 1 or len(self.subclients.all_subclients) > 1: raise SDKException( 'Instance', '102', 'More than one backupset/subclient configured in this instance. Run restore from subclient' ) if not kwargs.get('no_of_streams', None): kwargs['no_of_streams'] = 2 kwargs['client'] = kwargs.get('client', None) or self._agent_object._client_object request_json = super()._restore_json(**kwargs) backupset = self.backupsets.get(list(self.backupsets.all_backupsets.keys())[0]) subclient = list(self.subclients.all_subclients.items())[0] request_json['taskInfo']['associations'][0].update({ 'backupsetName': backupset.name, 'backupsetId': int(backupset.backupset_id), 'subclientName': subclient[0], 'subclientId': int(subclient[1]['id']) }) request_json['taskInfo']['subTasks'][0]['options']['restoreOptions']['cloudAppsRestoreOptions'] = { 'instanceType': self.ca_instance_type, 'salesforceRestoreOptions': { 'restoreToFileSystem': kwargs.get('restore_to_file_system', False), 'restoreToSalesforce': kwargs.get('restore_to_salesforce', False), 'restoreFromDatabase': kwargs.get('restore_from_database', False), 'isMetadataRestore': kwargs.get('is_metadata_restore', False), 'pathToStoreCsv': kwargs.get('path_to_store_csv', None) or backupset.download_cache_path, 'dependentRestoreLevel': kwargs.get('dependent_restore_level', 0), 'restoreParentType': kwargs.get('restore_parent_type', 'NONE'), 'isSaaSRestore': False } } if 'restore_to_salesforce' in kwargs and kwargs['restore_to_salesforce']: if kwargs.get('instance', None) and kwargs.get('backupset', None): destination_client = self._commcell_object.clients.get(kwargs['client']) destination_instance = destination_client.agents.get('Cloud Apps').instances.get(kwargs['instance']) destination_backupset = destination_instance.backupsets.get(kwargs['backupset']) else: destination_instance = self destination_backupset = backupset request_json['taskInfo']['subTasks'][0]['options']['restoreOptions']['destination'].update({ 'destinationInstance': { 'instanceId': int(destination_instance.instance_id), 'instanceName': destination_instance.name, }, 'destinationBackupset': { 'backupsetId': int(destination_backupset.backupset_id), 'backupsetName': destination_backupset.backupset_name } }) if kwargs.get('db_enabled', False): request_json['taskInfo']['subTasks'][0]['options']['restoreOptions']['cloudAppsRestoreOptions'] \ ['salesforceRestoreOptions'].update({ 'syncDatabase': { 'dbEnabled': True, 'dbType': kwargs['db_type'], 'dbHost': kwargs['db_host'], 'dbInstance': kwargs.get('db_instance', ''), 'dbPort': str(kwargs.get('db_port', 5432 if kwargs['db_type'] == 'POSTGRESQL' else 1433)), 'dbName': kwargs['db_name'], 'dbUserPassword': { 'userName': kwargs['db_user_name'], 'password': b64encode(kwargs['db_password'].encode()).decode() } }, 'overrideTable': kwargs.get('override_table', True), 'restoreCatalogDatabase': kwargs.get('restore_catalog_database', False) }) return request_json def restore_to_file_system(self, **kwargs): """ Runs object level restore to file system and returns object of Job or Schedule class. For out of place restore, pass both client and path_to_store_csv parameters. By default, will restore to access node and download cache path. Args: **kwargs (dict): Restore options including { paths (list[str]): List of files and objects to restore like ['/Files/filename', '/Objects/object_name'] (Default is ['/Files/', '/Objects/'] which selects all files and objects for restore), client (str): Name of destination client (Default is access node), path_to_store_csv (str): path on destination client to restore to (Default is download cache path), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if paths is given but is not a list if client parameter is not given and the access node configured with this instance is a client group if either client or path_to_store_csv is given but not both are present if client or path_to_store_csv are not strings """ PARAMS = ('client', 'path_to_store_csv') if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if any(param in kwargs for param in PARAMS) and \ not all(isinstance(kwargs.get(param, None), str) for param in PARAMS): raise SDKException('Instance', '101') if not 'paths' in kwargs: kwargs['paths'] = ['/Files/', '/Objects/'] request_json = self._restore_json( client=kwargs.get('client', self.proxy_client), restore_to_file_system=True, **kwargs ) return self._process_restore_response(request_json) def restore_to_database( self, db_type, db_host_name, db_name, db_user_name, db_password, **kwargs ): """ Runs object level restore to database and returns object of Job or Schedule class Args: db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER' db_host_name (str): Hostname of database server db_name (str): Database name where objects will be restored db_user_name (str): Username of database user db_password (str): Password of database user **kwargs (dict): Other restore options including { paths (list[str]): List of files and objects to restore like ['/Files/filename', '/Objects/object_name'] (Default is ['/Objects/'] which selects all objects for restore), db_instance (str): Database instance for SQL Server, db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if required parameters are not of the correct type if db_type is 'SQLSERVER' but db_instance is not given/ is not a string if paths is given but is not a list """ PARAMS = (db_type, db_host_name, db_name, db_user_name, db_password) if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if not all(isinstance(val, str) for val in PARAMS) and \ (isinstance(kwargs.get('db_instance', None), str) != (db_type == 'SQLSERVER')): raise SDKException('Instance', '101') if not 'paths' in kwargs: kwargs['paths'] = ['/Objects/'] request_json = self._restore_json( db_enabled=True, db_type=db_type, db_host=db_host_name, db_name=db_name, db_user_name=db_user_name, db_password=db_password, **kwargs ) return self._process_restore_response(request_json) def restore_to_salesforce_from_database(self, **kwargs): """ Runs restore to Salesforce from database and returns object of Job or Schedule class. For out of place restore, pass the client, instance and backupset parameters. If database parameters are not passed, sync db will be used. Args: **kwargs (dict): Other restore options including { paths (list[str]): List of files and objects to restore like ['/Files/filename', '/Objects/object_name'] (Default is ['/Files/', '/Objects/'] which selects all files and objects for restore), client (str): Name of destination client (Default is source client), instance (str): Name of destination instance (Default is source instance), backupset (str): Name of destination backupset (Default is source backupset), db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER', db_host (str): Hostname of database server, db_name (str): Database name where objects will be restored, db_user_name (str): Username of database user, db_password (str): Password of database user, db_instance (str): Database instance for SQL Server, db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if paths is given but is not a list if any database parameters are given but not all are present if database parameters are not all strings if db_type is 'SQLSERVER' but db_instance is not given/ is not a string if either client, instance or backupset are given but not all three are present if client, instance and backupset are not strings """ DB_PARAMS = ('db_type', 'db_host', 'db_name', 'db_user_name', 'db_password') DEST_PARAMS = ('client', 'instance', 'backupset') if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if any(param in kwargs for param in DEST_PARAMS) and \ not all(isinstance(kwargs.get(param, None), str) for param in DEST_PARAMS): raise SDKException('Instance', '101') if any(param in kwargs for param in DB_PARAMS): if not all(isinstance(kwargs.get(param, None), str) for param in DB_PARAMS) and \ (isinstance(kwargs.get('db_instance', None), str) != (kwargs['db_type'] == 'SQLSERVER')): raise SDKException('Instance', '101') kwargs['db_enabled'] = True if not 'paths' in kwargs: kwargs['paths'] = ['/Files/', '/Objects/'] request_json = self._restore_json( restore_to_salesforce=True, restore_from_database=True, **kwargs ) return self._process_restore_response(request_json) def restore_to_salesforce_from_media(self, **kwargs): """ Runs restore to Salesforce from database and returns object of Job or Schedule class. For out of place restore, pass the client, instance and backupset parameters. If database parameters are not passed, sync db will be used as staging db. Args: **kwargs (dict): Other restore options including { paths (list[str]): List of files and objects to restore like ['/Files/filename', '/Objects/object_name'] (Default is ['/Files/', '/Objects/'] which selects all files and objects for restore), client (str): Name of destination client (Default is source client), instance (str): Name of destination instance (Default is source instance), backupset (str): Name of destination backupset (Default is source backupset), db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER', db_host (str): Hostname of database server, db_name (str): Database name where objects will be restored, db_user_name (str): Username of database user, db_password (str): Password of database user, db_instance (str): Database instance for SQL Server, db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if paths is given but is not a list if any database parameters are given but not all are present if database parameters are not all strings if db_type is 'SQLSERVER' but db_instance is not given/ is not a string if either client, instance or backupset are given but not all three are present if client, instance and backupset are not strings """ DB_PARAMS = ('db_type', 'db_host', 'db_name', 'db_user_name', 'db_password') DEST_PARAMS = ('client', 'instance', 'backupset') if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if any(param in kwargs for param in DEST_PARAMS) and \ not all(isinstance(kwargs.get(param, None), str) for param in DEST_PARAMS): raise SDKException('Instance', '101') if any(keyword in kwargs for keyword in DB_PARAMS): if not all(isinstance(kwargs.get(param, None), str) for param in DB_PARAMS) and \ (isinstance(kwargs.get('db_instance', None), str) != (kwargs['db_type'] == 'SQLSERVER')): raise SDKException('Instance', '101') kwargs['db_enabled'] = True if not 'paths' in kwargs: kwargs['paths'] = ['/Files/', '/Objects/'] request_json = self._restore_json( restore_to_salesforce=True, **kwargs ) return self._process_restore_response(request_json) def metadata_restore_to_file_system(self, **kwargs): """ Runs metadata restore to file system and returns object of Job or Schedule class. For out of place restore, pass both client and path_to_store_csv parameters. By default, will restore to access node and download cache path. Args: **kwargs (dict): Other restore options including { paths (list[str]): List of metadata components to restore like ['/Metadata/unpackaged/objects/Account.object', '/Metadata/unpackaged/profiles/Admin.profile'] (Default is ['/Metadata/unpackaged/'] which selects all metdata components for restore), client (str): Name of destination client (Default is access node), path_to_store_csv (str): path on destination client to restore to (Default is download cache path), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if paths is given but is not a list if client parameter is not given and the access node configured with this instance is a client group if either client or path_to_store_csv is given but not both are present if client or path_to_store_csv are not strings """ PARAMS = ('client', 'path_to_store_csv') if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if any(param in kwargs for param in PARAMS) and \ not all(isinstance(kwargs.get(param, None), str) for param in PARAMS): raise SDKException('Instance', '101') if not 'paths' in kwargs: kwargs['paths'] = ['/Metadata/unpackaged/'] request_json = self._restore_json( restore_to_file_system=True, is_metadata_restore=True, **kwargs ) return self._process_restore_response(request_json) def metadata_restore_to_salesforce(self, **kwargs): """ Runs metadata restore to Salesforce and returns object of Job or Schedule class. For out of place restore, pass client, instance and backupset parameters. Args: **kwargs (dict): Other restore options including { paths (list[str]): List of metadata components to restore like ['/Metadata/unpackaged/objects/Account.object', '/Metadata/unpackaged/profiles/Admin.profile'] (Default is ['/Metadata/unpackaged/'] which selects all metdata components for restore), client (str): Name of destination client (Default is source client), instance (str): Name of destination instance (Default is source instance), backupset (str): Name of destination backupset (Default is source backupset), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if paths is given but is not a list if either client, instance or backupset are given but not all three are present if client, instance and backupset are not strings """ DEST_PARAMS = ('client', 'instance', 'backupset') if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if any(param in kwargs for param in DEST_PARAMS) and \ not all(isinstance(kwargs.get(param, None), str) for param in DEST_PARAMS): raise SDKException('Instance', '101') if not 'paths' in kwargs: kwargs['paths'] = ['/Metadata/unpackaged/'] request_json = self._restore_json( restore_to_salesforce=True, is_metadata_restore=True, **kwargs ) return self._process_restore_response(request_json)
Ancestors
Instance variables
var access_node
-
Returns a dictionary containing clientName and clientId or clientGroupName and clientGroupId depending on whether a single client or a client group is configured as access node.
Returns
(dict): Dictionary containing access node name and id
Raises
SDKException
- if attribute could not be fetched
Expand source code Browse git
@property def access_node(self): """ Returns a dictionary containing clientName and clientId or clientGroupName and clientGroupId depending on whether a single client or a client group is configured as access node. Returns: (dict): Dictionary containing access node name and id Raises: SDKException: if attribute could not be fetched """ try: access_node = self._properties['cloudAppsInstance']['generalCloudProperties']['accessNodes'] \ ['memberServers'][0]['client'].copy() if 'entityInfo' in access_node: del access_node['entityInfo'] return access_node except KeyError: raise SDKException('Instance', '105', 'Could not fetch access node')
var ca_instance_type
-
Returns the instance type of this cloud apps instance
Returns
(str): Instance Type
Expand source code Browse git
@property def ca_instance_type(self): """ Returns the instance type of this cloud apps instance Returns: (str): Instance Type """ return 'SALESFORCE'
var consumer_id
-
Returns the Consumer Id of the Salesforce connected app used to authenticate with Salesforce by this instance
Returns
(str): Consumer Id
Raises
SDKException
- if attribute could not be fetched
Expand source code Browse git
@property def consumer_id(self): """ Returns the Consumer Id of the Salesforce connected app used to authenticate with Salesforce by this instance Returns: (str): Consumer Id Raises: SDKException: if attribute could not be fetched """ try: return self._properties['cloudAppsInstance']['salesforceInstance']['consumerId'] except KeyError: raise SDKException('Instance', '105', 'Could not fetch login url')
var login_url
-
Returns the login url of Salesforce organization
Returns
(str): Login URL
Raises
SDKException
- if attribute could not be fetched
Expand source code Browse git
@property def login_url(self): """ Returns the login url of Salesforce organization Returns: (str): Login URL Raises: SDKException: if attribute could not be fetched """ try: return self._properties['cloudAppsInstance']['salesforceInstance']['endpoint'] except KeyError: raise SDKException('Instance', '105', 'Could not fetch login url')
var organization_id
-
Returns the Salesforce organization id
Returns
(str): Organization Id
Raises
SDKException
- if attribute could not be fetched
Expand source code Browse git
@property def organization_id(self): """ Returns the Salesforce organization id Returns: (str): Organization Id Raises: SDKException: if attribute could not be fetched """ try: return self._properties['cloudAppsInstance']['salesforceInstance']['sfOrgID'] except KeyError: raise SDKException('Instance', '105', 'Could not fetch organization ID')
var proxy_client
-
Returns the name of the access node.
Returns
(str): Access Node
Raises
SDKException: if attribute could not be fetched
if access node is a client group
Expand source code Browse git
@property def proxy_client(self): """ Returns the name of the access node. Returns: (str): Access Node Raises: SDKException: if attribute could not be fetched if access node is a client group """ try: general_cloud_properties = self._properties['cloudAppsInstance']['generalCloudProperties'] if 'clientName' in general_cloud_properties['proxyServers'][0].keys(): return general_cloud_properties['proxyServers'][0]['clientName'] if 'clientName' in general_cloud_properties['accessNodes']['memberServers'][0]['client'].keys(): return general_cloud_properties['accessNodes']['memberServers'][0]['client']['clientName'] if 'clientGroupName' in general_cloud_properties['accessNodes']['memberServers'][0]['client'].keys(): raise SDKException( 'Instance', '102', 'This instance uses a client group as access node. Use access_node attribute instead.' ) except KeyError: raise SDKException('Instance', '105', 'Could not fetch proxy client')
Methods
def metadata_restore_to_file_system(self, **kwargs)
-
Runs metadata restore to file system and returns object of Job or Schedule class. For out of place restore, pass both client and path_to_store_csv parameters. By default, will restore to access node and download cache path.
Args
**kwargs
:dict
- Other restore options including
{
paths (list[str]): List of metadata components to restore like ['/Metadata/unpackaged/objects/Account.object', '/Metadata/unpackaged/profiles/Admin.profile'] (Default is ['/Metadata/unpackaged/'] which selects all metdata components for restore),client (str): Name of destination client (Default is access node), path_to_store_csv (str): path on destination client to restore to (Default is download cache path), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents
}
Returns
object
- Object of Job or Schedule class
Raises
SDKException: if paths is given but is not a list
if client parameter is not given and the access node configured with this instance is a client group if either client or path_to_store_csv is given but not both are present if client or path_to_store_csv are not strings
Expand source code Browse git
def metadata_restore_to_file_system(self, **kwargs): """ Runs metadata restore to file system and returns object of Job or Schedule class. For out of place restore, pass both client and path_to_store_csv parameters. By default, will restore to access node and download cache path. Args: **kwargs (dict): Other restore options including { paths (list[str]): List of metadata components to restore like ['/Metadata/unpackaged/objects/Account.object', '/Metadata/unpackaged/profiles/Admin.profile'] (Default is ['/Metadata/unpackaged/'] which selects all metdata components for restore), client (str): Name of destination client (Default is access node), path_to_store_csv (str): path on destination client to restore to (Default is download cache path), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if paths is given but is not a list if client parameter is not given and the access node configured with this instance is a client group if either client or path_to_store_csv is given but not both are present if client or path_to_store_csv are not strings """ PARAMS = ('client', 'path_to_store_csv') if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if any(param in kwargs for param in PARAMS) and \ not all(isinstance(kwargs.get(param, None), str) for param in PARAMS): raise SDKException('Instance', '101') if not 'paths' in kwargs: kwargs['paths'] = ['/Metadata/unpackaged/'] request_json = self._restore_json( restore_to_file_system=True, is_metadata_restore=True, **kwargs ) return self._process_restore_response(request_json)
def metadata_restore_to_salesforce(self, **kwargs)
-
Runs metadata restore to Salesforce and returns object of Job or Schedule class. For out of place restore, pass client, instance and backupset parameters.
Args
**kwargs
:dict
- Other restore options including
{
paths (list[str]): List of metadata components to restore like
['/Metadata/unpackaged/objects/Account.object',
'/Metadata/unpackaged/profiles/Admin.profile']
(Default is ['/Metadata/unpackaged/'] which selects all metdata components for restore),
client (str): Name of destination client (Default is source client), instance (str): Name of destination instance (Default is source instance), backupset (str): Name of destination backupset (Default is source backupset), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents
}
Returns
object
- Object of Job or Schedule class
Raises
SDKException: if paths is given but is not a list
if either client, instance or backupset are given but not all three are present if client, instance and backupset are not strings
Expand source code Browse git
def metadata_restore_to_salesforce(self, **kwargs): """ Runs metadata restore to Salesforce and returns object of Job or Schedule class. For out of place restore, pass client, instance and backupset parameters. Args: **kwargs (dict): Other restore options including { paths (list[str]): List of metadata components to restore like ['/Metadata/unpackaged/objects/Account.object', '/Metadata/unpackaged/profiles/Admin.profile'] (Default is ['/Metadata/unpackaged/'] which selects all metdata components for restore), client (str): Name of destination client (Default is source client), instance (str): Name of destination instance (Default is source instance), backupset (str): Name of destination backupset (Default is source backupset), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if paths is given but is not a list if either client, instance or backupset are given but not all three are present if client, instance and backupset are not strings """ DEST_PARAMS = ('client', 'instance', 'backupset') if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if any(param in kwargs for param in DEST_PARAMS) and \ not all(isinstance(kwargs.get(param, None), str) for param in DEST_PARAMS): raise SDKException('Instance', '101') if not 'paths' in kwargs: kwargs['paths'] = ['/Metadata/unpackaged/'] request_json = self._restore_json( restore_to_salesforce=True, is_metadata_restore=True, **kwargs ) return self._process_restore_response(request_json)
def restore_to_database(self, db_type, db_host_name, db_name, db_user_name, db_password, **kwargs)
-
Runs object level restore to database and returns object of Job or Schedule class
Args
db_type
:str
- Type of database out of 'POSTGRESQL' or 'SQLSERVER'
db_host_name
:str
- Hostname of database server
db_name
:str
- Database name where objects will be restored
db_user_name
:str
- Username of database user
db_password
:str
- Password of database user
**kwargs
:dict
- Other restore options including
{
paths (list[str]): List of files and objects to restore like
['/Files/filename', '/Objects/object_name']
(Default is ['/Objects/'] which selects all objects for restore),
db_instance (str): Database instance for SQL Server, db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents
}
Returns
object
- Object of Job or Schedule class
Raises
SDKException: if required parameters are not of the correct type
if db_type is 'SQLSERVER' but db_instance is not given/ is not a string if paths is given but is not a list
Expand source code Browse git
def restore_to_database( self, db_type, db_host_name, db_name, db_user_name, db_password, **kwargs ): """ Runs object level restore to database and returns object of Job or Schedule class Args: db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER' db_host_name (str): Hostname of database server db_name (str): Database name where objects will be restored db_user_name (str): Username of database user db_password (str): Password of database user **kwargs (dict): Other restore options including { paths (list[str]): List of files and objects to restore like ['/Files/filename', '/Objects/object_name'] (Default is ['/Objects/'] which selects all objects for restore), db_instance (str): Database instance for SQL Server, db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if required parameters are not of the correct type if db_type is 'SQLSERVER' but db_instance is not given/ is not a string if paths is given but is not a list """ PARAMS = (db_type, db_host_name, db_name, db_user_name, db_password) if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if not all(isinstance(val, str) for val in PARAMS) and \ (isinstance(kwargs.get('db_instance', None), str) != (db_type == 'SQLSERVER')): raise SDKException('Instance', '101') if not 'paths' in kwargs: kwargs['paths'] = ['/Objects/'] request_json = self._restore_json( db_enabled=True, db_type=db_type, db_host=db_host_name, db_name=db_name, db_user_name=db_user_name, db_password=db_password, **kwargs ) return self._process_restore_response(request_json)
def restore_to_file_system(self, **kwargs)
-
Runs object level restore to file system and returns object of Job or Schedule class. For out of place restore, pass both client and path_to_store_csv parameters. By default, will restore to access node and download cache path.
Args
**kwargs
:dict
- Restore options including
{
paths (list[str]): List of files and objects to restore like
['/Files/filename', '/Objects/object_name']
(Default is ['/Files/', '/Objects/'] which selects all files and objects for restore),
client (str): Name of destination client (Default is access node), path_to_store_csv (str): path on destination client to restore to (Default is download cache path), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents
}
Returns
object
- Object of Job or Schedule class
Raises
SDKException: if paths is given but is not a list
if client parameter is not given and the access node configured with this instance is a client group if either client or path_to_store_csv is given but not both are present if client or path_to_store_csv are not strings
Expand source code Browse git
def restore_to_file_system(self, **kwargs): """ Runs object level restore to file system and returns object of Job or Schedule class. For out of place restore, pass both client and path_to_store_csv parameters. By default, will restore to access node and download cache path. Args: **kwargs (dict): Restore options including { paths (list[str]): List of files and objects to restore like ['/Files/filename', '/Objects/object_name'] (Default is ['/Files/', '/Objects/'] which selects all files and objects for restore), client (str): Name of destination client (Default is access node), path_to_store_csv (str): path on destination client to restore to (Default is download cache path), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if paths is given but is not a list if client parameter is not given and the access node configured with this instance is a client group if either client or path_to_store_csv is given but not both are present if client or path_to_store_csv are not strings """ PARAMS = ('client', 'path_to_store_csv') if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if any(param in kwargs for param in PARAMS) and \ not all(isinstance(kwargs.get(param, None), str) for param in PARAMS): raise SDKException('Instance', '101') if not 'paths' in kwargs: kwargs['paths'] = ['/Files/', '/Objects/'] request_json = self._restore_json( client=kwargs.get('client', self.proxy_client), restore_to_file_system=True, **kwargs ) return self._process_restore_response(request_json)
def restore_to_salesforce_from_database(self, **kwargs)
-
Runs restore to Salesforce from database and returns object of Job or Schedule class. For out of place restore, pass the client, instance and backupset parameters. If database parameters are not passed, sync db will be used.
Args
**kwargs
:dict
- Other restore options including
{
paths (list[str]): List of files and objects to restore like
['/Files/filename', '/Objects/object_name']
(Default is ['/Files/', '/Objects/'] which selects all files and objects for restore),
client (str): Name of destination client (Default is source client), instance (str): Name of destination instance (Default is source instance), backupset (str): Name of destination backupset (Default is source backupset), db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER', db_host (str): Hostname of database server, db_name (str): Database name where objects will be restored, db_user_name (str): Username of database user, db_password (str): Password of database user, db_instance (str): Database instance for SQL Server, db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents
}
Returns
object
- Object of Job or Schedule class
Raises
SDKException: if paths is given but is not a list
if any database parameters are given but not all are present if database parameters are not all strings if db_type is 'SQLSERVER' but db_instance is not given/ is not a string if either client, instance or backupset are given but not all three are present if client, instance and backupset are not strings
Expand source code Browse git
def restore_to_salesforce_from_database(self, **kwargs): """ Runs restore to Salesforce from database and returns object of Job or Schedule class. For out of place restore, pass the client, instance and backupset parameters. If database parameters are not passed, sync db will be used. Args: **kwargs (dict): Other restore options including { paths (list[str]): List of files and objects to restore like ['/Files/filename', '/Objects/object_name'] (Default is ['/Files/', '/Objects/'] which selects all files and objects for restore), client (str): Name of destination client (Default is source client), instance (str): Name of destination instance (Default is source instance), backupset (str): Name of destination backupset (Default is source backupset), db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER', db_host (str): Hostname of database server, db_name (str): Database name where objects will be restored, db_user_name (str): Username of database user, db_password (str): Password of database user, db_instance (str): Database instance for SQL Server, db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if paths is given but is not a list if any database parameters are given but not all are present if database parameters are not all strings if db_type is 'SQLSERVER' but db_instance is not given/ is not a string if either client, instance or backupset are given but not all three are present if client, instance and backupset are not strings """ DB_PARAMS = ('db_type', 'db_host', 'db_name', 'db_user_name', 'db_password') DEST_PARAMS = ('client', 'instance', 'backupset') if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if any(param in kwargs for param in DEST_PARAMS) and \ not all(isinstance(kwargs.get(param, None), str) for param in DEST_PARAMS): raise SDKException('Instance', '101') if any(param in kwargs for param in DB_PARAMS): if not all(isinstance(kwargs.get(param, None), str) for param in DB_PARAMS) and \ (isinstance(kwargs.get('db_instance', None), str) != (kwargs['db_type'] == 'SQLSERVER')): raise SDKException('Instance', '101') kwargs['db_enabled'] = True if not 'paths' in kwargs: kwargs['paths'] = ['/Files/', '/Objects/'] request_json = self._restore_json( restore_to_salesforce=True, restore_from_database=True, **kwargs ) return self._process_restore_response(request_json)
def restore_to_salesforce_from_media(self, **kwargs)
-
Runs restore to Salesforce from database and returns object of Job or Schedule class. For out of place restore, pass the client, instance and backupset parameters. If database parameters are not passed, sync db will be used as staging db.
Args
**kwargs
:dict
- Other restore options including
{
paths (list[str]): List of files and objects to restore like
['/Files/filename', '/Objects/object_name']
(Default is ['/Files/', '/Objects/'] which selects all files and objects for restore),
client (str): Name of destination client (Default is source client), instance (str): Name of destination instance (Default is source instance), backupset (str): Name of destination backupset (Default is source backupset), db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER', db_host (str): Hostname of database server, db_name (str): Database name where objects will be restored, db_user_name (str): Username of database user, db_password (str): Password of database user, db_instance (str): Database instance for SQL Server, db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents
}
Returns
object
- Object of Job or Schedule class
Raises
SDKException: if paths is given but is not a list
if any database parameters are given but not all are present if database parameters are not all strings if db_type is 'SQLSERVER' but db_instance is not given/ is not a string if either client, instance or backupset are given but not all three are present if client, instance and backupset are not strings
Expand source code Browse git
def restore_to_salesforce_from_media(self, **kwargs): """ Runs restore to Salesforce from database and returns object of Job or Schedule class. For out of place restore, pass the client, instance and backupset parameters. If database parameters are not passed, sync db will be used as staging db. Args: **kwargs (dict): Other restore options including { paths (list[str]): List of files and objects to restore like ['/Files/filename', '/Objects/object_name'] (Default is ['/Files/', '/Objects/'] which selects all files and objects for restore), client (str): Name of destination client (Default is source client), instance (str): Name of destination instance (Default is source instance), backupset (str): Name of destination backupset (Default is source backupset), db_type (str): Type of database out of 'POSTGRESQL' or 'SQLSERVER', db_host (str): Hostname of database server, db_name (str): Database name where objects will be restored, db_user_name (str): Username of database user, db_password (str): Password of database user, db_instance (str): Database instance for SQL Server, db_port (int): Port of database server (Default is 5432 for POSTGRESQL and 1433 for SQLSERVER), from_time (str): time to restore contents after like YYYY-MM-DD HH:MM:SS (Default is None), to_time (str): time to restore contents before like YYYY-MM-DD HH:MM:SS (Default is None), no_of_streams (int): Number of streams to use for restore (Default is 2), path_to_store_csv (str): path to use as staging folder (Default is download cache path), dependent_restore_level (int): restore children option (Default is 0) 0 -- No Children 1 -- Immediate Children -1 -- All Children, restore_parent_type (str): restore parents option (Default is 'NONE') 'NONE' -- No Parents 'ALL' -- All Parents } Returns: object: Object of Job or Schedule class Raises: SDKException: if paths is given but is not a list if any database parameters are given but not all are present if database parameters are not all strings if db_type is 'SQLSERVER' but db_instance is not given/ is not a string if either client, instance or backupset are given but not all three are present if client, instance and backupset are not strings """ DB_PARAMS = ('db_type', 'db_host', 'db_name', 'db_user_name', 'db_password') DEST_PARAMS = ('client', 'instance', 'backupset') if not isinstance(kwargs.get('paths', list()), list): raise SDKException('Instance', '101') if any(param in kwargs for param in DEST_PARAMS) and \ not all(isinstance(kwargs.get(param, None), str) for param in DEST_PARAMS): raise SDKException('Instance', '101') if any(keyword in kwargs for keyword in DB_PARAMS): if not all(isinstance(kwargs.get(param, None), str) for param in DB_PARAMS) and \ (isinstance(kwargs.get('db_instance', None), str) != (kwargs['db_type'] == 'SQLSERVER')): raise SDKException('Instance', '101') kwargs['db_enabled'] = True if not 'paths' in kwargs: kwargs['paths'] = ['/Files/', '/Objects/'] request_json = self._restore_json( restore_to_salesforce=True, **kwargs ) return self._process_restore_response(request_json)
Inherited members