Module cvpysdk.subclients.sybasesubclient
Main File for performing Sybase Subclient Operations
SybaseSubclient is the only class defined in this file.
SybaseSubclient : Derived class from DatabaseSubclient Base class, representing an Sybase subclient, and to perform operations on that subclient
Sybasesubclient
init() – initialise object of sybase subclient object associated with the specified instance
_get_subclient_properties – get the all subclient related properties of this subclient
_sybase_backup_request_json – Returns the JSON request to pass to the API as per the options selected by the user
is_snapenabled() – Check if intellisnap has been enabled in the subclient and sets it accordingly
snap_engine() – updates snap_engine for sybase subclient
snap_proxy() – updates proxy name from sybase snap operation
use_dump_based_backup_copy() – updates the use of dump based method for backup copy
dump_based_backup_copy_option() – updates subtype of dump based operation
configured_instance() – updates configured instance name for dump based backup copy type 1
auxiliary_sybase_server() – updates custom instance properties for dump based backup copy type 2
content() – update the content of the sybase subclient
backup() – Run a backup job for the subclient
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.
# --------------------------------------------------------------------------
"""
Main File for performing Sybase Subclient Operations
SybaseSubclient is the only class defined in this file.
SybaseSubclient : Derived class from DatabaseSubclient Base class,
representing an Sybase subclient,
and to perform operations on that subclient
SybaseSubclient:
__init__() -- initialise object of sybase
subclient object associated
with the specified instance
_get_subclient_properties -- get the all subclient related
properties of this subclient
_sybase_backup_request_json -- Returns the JSON request to pass to
the API as per the options selected by the user
is_snapenabled() -- Check if intellisnap has been enabled
in the subclient and sets it accordingly
snap_engine() -- updates snap_engine for sybase subclient
snap_proxy() -- updates proxy name from sybase snap operation
use_dump_based_backup_copy() -- updates the use of dump based method for backup copy
dump_based_backup_copy_option() -- updates subtype of dump based operation
configured_instance() -- updates configured instance name
for dump based backup copy type 1
auxiliary_sybase_server() -- updates custom instance properties
for dump based backup copy type 2
content() -- update the content of
the sybase subclient
backup() -- Run a backup job for the subclient
"""
from __future__ import unicode_literals
from ..subclient import Subclient
from ..exception import SDKException
class SybaseSubclient(Subclient):
"""
Base class consisting of all the common properties and operations for a Sybase Subclient
"""
def __init__(self, backupset_object, subclient_name, subclient_id=None):
"""
Initialize Sybase Subclient Object
Args:
backupset_object (object) -- instance of the Backupset class
subclient_name (str) -- name of the subclient
subclient_id (str) -- id of the subclient
default : None
Returns :
(object) - instance of the Sybase Subclient class
"""
self._sybase_properties = {}
self._snap_copy_info = None
super(SybaseSubclient, self).__init__(
backupset_object, subclient_name, subclient_id)
def _get_subclient_properties(self):
"""
Gets the subclient related properties of Sybase subclient
"""
super(SybaseSubclient, self)._get_subclient_properties()
if 'content' in self._subclient_properties:
self._content = self._subclient_properties['content']
self._snap_copy_info = self._commonProperties.get('snapCopyInfo')
def _get_subclient_properties_json(self):
"""
Get the all subclient related properties of this subclient.
Returns:
(dict) - all subclient properties put inside a dict
"""
return {
"subClientProperties":
{
"proxyClient": self._proxyClient,
"subClientEntity": self._subClientEntity,
"content": self._content,
"commonProperties": self._commonProperties,
"contentOperationType": 1,
"snapCopyInfo": self._snap_copy_info
}
}
def _sybase_backup_request_json(self,
backup_level,
do_not_truncate_log=False,
sybase_skip_full_after_logbkp=False,
create_backup_copy_immediately=False,
backup_copy_type=2,
directive_file=None):
"""
Returns the JSON request to pass to the API as per the options selected by the user.
Args:
backup_level (list) -- level of backup the user wish to run
Full / Incremental / Differential
do_not_truncate_log (bool) -- Sybase truncate log option
for incremental backup
default : False
sybase_skip_full_after_logbkp (bool) -- Sybase backup option for incremental
default : False
create_backup_copy_immediately (bool) -- Sybase snap job needs
this backup copy operation
default : False
backup_copy_type (int) -- backup copy job to be launched
based on below two options
default : 2, possible values :
1 (USING_STORAGE_POLICY_RULE),
2( USING_LATEST_CYCLE)
directive_file (str) -- inputfile for ondemand backup
containing database list
default : None
Returns:
(dict) - JSON request to pass to the API
"""
request_json = self._backup_json(backup_level, False, "BEFORE_SYNTH")
sybase_options = {
"doNotTruncateLog": do_not_truncate_log,
"sybaseSkipFullafterLogBkp": sybase_skip_full_after_logbkp
}
if create_backup_copy_immediately:
sub_opt = {"dataOpt":
{
"createBackupCopyImmediately": create_backup_copy_immediately,
"backupCopyType": backup_copy_type
}
}
sybase_options.update(sub_opt)
if self._commonProperties.get("onDemandSubClient", False):
on_demand_input = {"onDemandInputFile":directive_file}
sybase_options.update(on_demand_input)
request_json["taskInfo"]["subTasks"][0]["options"]["backupOpts"].update(
sybase_options
)
return request_json
@property
def is_snapenabled(self):
"""
Getter to check whether the subclient has snap enabled
Returns:
(bool) - boolean value based on snap
status at subclient level
True - returns Truee if snap is enabled on the subclient
False - returns False if snap is not
enabled at subclient level
"""
return self._snap_copy_info.get("isSnapBackupEnabled", False)
@is_snapenabled.setter
def is_snapenabled(self, value):
"""
To set is snap enabled to true or false
Args:
value (bool) -- to enable snap at subclient level or not
"""
self._set_subclient_properties(
"_snap_copy_info['isSnapBackupEnabled']", value)
@property
def snap_engine(self):
"""
Getter to fetch snap_engine
Returns:
(str) - name of snap engine at subclient level
"""
return self._snap_copy_info.get('snapToTapeSelectedEngine', {}).get('snapShotEngineName')
@snap_engine.setter
def snap_engine(self, engine_name):
"""
To set snap engine name
Args:
engine_name (str) -- name of snap engine
for intellisnap
"""
self._set_subclient_properties(
"_snap_copy_info['snapToTapeSelectedEngine']['snapShotEngineName']", engine_name)
@property
def snap_proxy(self):
"""
Getter to snap_proxy if set any
Returns:
(str) -- name of proxy client used
for intellisnap operation
"""
return self._snap_copy_info.get('snapToTapeProxyToUse', {}).get('clientName')
@snap_proxy.setter
def snap_proxy(self, proxy_name):
"""
Setter for snap proxy name
Args:
proxy_name (str) -- snap proxy name
"""
self._set_subclient_properties(
"_snap_copy_info['snapToTapeProxyToUse']['clientName']", proxy_name)
@property
def use_dump_based_backup_copy(self):
"""
Getter to status of dumpbased backup copy
Returns:
(bool) - checks if dump based backup
copy is enabled or not
"""
return self._snap_copy_info.get('useDumpBasedBackupCopy')
@use_dump_based_backup_copy.setter
def use_dump_based_backup_copy(self, dump_based):
"""
To enable dump based backup copy
Args:
dump_based (bool) -- set true to enable dump
based backup copy option
"""
self._set_subclient_properties(
"_snap_copy_info['useDumpBasedBackupCopy']", dump_based)
@property
def dump_based_backup_copy_option(self):
"""
Getter to fetch dumpbased backup copy option :
1(configured instance), 2(custom new instance)
Returns:
(int) - returns 1 or 2 based type of sybase instance configured
"""
return self._snap_copy_info.get("dumpBasedBackupCopyOption")
@dump_based_backup_copy_option.setter
def dump_based_backup_copy_option(self, dump_based_backup_copy_option):
"""
Enable dump based backup copy
Args:
dump_based_backup_copy_option (int) -- set 1(configured instance),
2(custom new instance)
"""
self._set_subclient_properties(
"_snap_copy_info['dumpBasedBackupCopyOption']", dump_based_backup_copy_option)
@property
def configured_instance(self):
"""
Getter to fetch configured instance
name if dump based backup copy option is 2
Returns:
(str) - string of configured instance
if dump based backup option is 1
Raises:
SDK Exception
if dump based backup copy not enabled
if dump based copy option is not 1
"""
if self._snap_copy_info.get('useDumpBasedBackupCopy'):
if self._snap_copy_info.get('dumpBasedBackupCopyOption') == 1:
return self._snap_copy_info['configuredSybaseInstance']['instanceName']
else:
raise SDKException(
'Subclient', '102', "Invalid dump based copy option")
else:
raise SDKException('Subclient', '102',
"Dump based parameter is not available")
@configured_instance.setter
def configured_instance(self, instance_name):
"""
Setter for configured instance
name for dump based backup copy option
Args:
instance_name (str) -- string of instance name
to be used for dump based backup copy
"""
self._set_subclient_properties(
"_snap_copy_info['configuredSybaseInstance']['instanceName']", instance_name)
@property
def auxiliary_sybase_server(self):
"""
Getter to fetch custom instance properties if dump based copy option is 2
Returns:
(dict) - dict of four properties
for custom instance
Raises:
SDK Exception
if dump based backup copy not enabled
if dump based copy option is not 2
"""
if self.use_dump_based_backup_copy:
if self.dump_based_backup_copy_option == 2:
auxiliary_sybase_server = {
'sybaseHome': self._snap_copy_info.get('sybaseHome'),
'sybaseASE': self._snap_copy_info.get('sybaseASE'),
'sybaseOCS': self._snap_copy_info.get('sybaseOCS'),
'sybaseUser': self._snap_copy_info.get('sybaseUser', {}).get('userName')
}
return auxiliary_sybase_server
else:
raise SDKException(
'Subclient', '102', "Invalid dump based copy option set")
else:
raise SDKException('Subclient', '102',
"dump based parameter is not available")
@auxiliary_sybase_server.setter
def auxiliary_sybase_server(self, instance_properties):
"""
Setter custom instance properties if dump based copy option is 2
Args:
instance_properties (dict) -- dict of four properties
for custom instance
Sample dict:
instance_properties = {
'sybaseHome':sybase_home,
'sybaseASE':sybase_ase,
'sybaseOCS':sybase_ocs,
'sybaseUser':sybase_user
}
Raises:
SDK Exception
if None value in instance_properties
"""
if None in instance_properties.values():
raise SDKException(
'Instance', '102', "One of the sybase custom instance parameter is None. Exiting")
self._set_subclient_properties(
"_snap_copy_info['sybaseHome']", instance_properties['sybaseHome'])
self._set_subclient_properties(
"_snap_copy_info['sybaseASE']", instance_properties['sybaseASE'])
self._set_subclient_properties(
"_snap_copy_info['sybaseOCS']", instance_properties['sybaseOCS'])
self._set_subclient_properties("_snap_copy_info['sybaseUser']['userName']",
instance_properties['sybaseUser'])
@property
def content(self):
"""Treats the subclient content as a property of the Subclient class."""
subclient_content = self._content
sybase_dblist = []
for item in subclient_content:
sybase_server_dict = item
dbname = sybase_server_dict['sybaseContent']['databaseName']
sybase_dblist.append(dbname)
return sybase_dblist
@content.setter
def content(self, subclient_content):
"""
Creates the list of content JSON to pass to the API to add a new Sybase Subclient
with the content passed in subclient content.
Args:
subclient_content (list) -- list of the content to add to the subclient
Returns:
(list) - list of the appropriate JSON
for an agent to send to the POST Subclient API
"""
content_new = []
for dbname in subclient_content:
sybase_server_dict = {"sybaseContent": {"databaseName": dbname}}
content_new.append(sybase_server_dict)
self._set_subclient_properties("_content", content_new)
def backup(self,
backup_level=r'full',
do_not_truncate_log=False,
sybase_skip_full_after_logbkp=False,
create_backup_copy_immediately=False,
backup_copy_type=2,
directive_file=None):
"""
Performs backup on sybase subclient
Args:
backup_level (str) -- Level of backup.
full|incremental|differential
default: full
do_not_truncate_log (bool) -- Sybase truncate log option
for incremental backup
default : False
sybase_skip_full_after_logbkp (bool) -- Sybase backup option for incremental
default : False
create_backup_copy_immediately (bool) -- Sybase snap job needs
this backup copy operation
default : False
backup_copy_type (int) -- backup copy job to be launched
based on below two options
default : 2, possible values :
1 (USING_STORAGE_POLICY_RULE),
2( USING_LATEST_CYCLE)
directive_file (str) -- input file for ondemand backup
containing database list
default : None
Returns:
(object) - instance of Job class
Raises:
SDKException:
if backup level is incorrect
if response is empty
if response does not succeed
"""
if backup_level.lower() not in ['full', 'incremental', 'differential']:
raise SDKException(r'Subclient', r'103')
if backup_level.lower() == 'incremental':
do_not_truncate_log = do_not_truncate_log
sybase_skip_full_after_logbkp = sybase_skip_full_after_logbkp
else:
do_not_truncate_log = False
sybase_skip_full_after_logbkp = False
if create_backup_copy_immediately:
if backup_level.lower() == 'incremental':
raise SDKException(
'Subclient', '102', 'Backup Copy job is not valid for Transaction Log Backup ')
request_json = self._sybase_backup_request_json(backup_level.lower(),
do_not_truncate_log,
sybase_skip_full_after_logbkp,
create_backup_copy_immediately,
backup_copy_type,
directive_file)
backup_service = self._commcell_object._services['CREATE_TASK']
flag, response = self._commcell_object._cvpysdk_object.make_request(
'POST', backup_service, request_json
)
return self._process_backup_response(flag, response)
Classes
class SybaseSubclient (backupset_object, subclient_name, subclient_id=None)
-
Base class consisting of all the common properties and operations for a Sybase Subclient
Initialize Sybase Subclient Object
Args
backupset_object (object) – instance of the Backupset class
subclient_name (str) – name of the subclient
subclient_id (str) – id of the subclient default : None Returns : (object) - instance of the Sybase Subclient class
Expand source code Browse git
class SybaseSubclient(Subclient): """ Base class consisting of all the common properties and operations for a Sybase Subclient """ def __init__(self, backupset_object, subclient_name, subclient_id=None): """ Initialize Sybase Subclient Object Args: backupset_object (object) -- instance of the Backupset class subclient_name (str) -- name of the subclient subclient_id (str) -- id of the subclient default : None Returns : (object) - instance of the Sybase Subclient class """ self._sybase_properties = {} self._snap_copy_info = None super(SybaseSubclient, self).__init__( backupset_object, subclient_name, subclient_id) def _get_subclient_properties(self): """ Gets the subclient related properties of Sybase subclient """ super(SybaseSubclient, self)._get_subclient_properties() if 'content' in self._subclient_properties: self._content = self._subclient_properties['content'] self._snap_copy_info = self._commonProperties.get('snapCopyInfo') def _get_subclient_properties_json(self): """ Get the all subclient related properties of this subclient. Returns: (dict) - all subclient properties put inside a dict """ return { "subClientProperties": { "proxyClient": self._proxyClient, "subClientEntity": self._subClientEntity, "content": self._content, "commonProperties": self._commonProperties, "contentOperationType": 1, "snapCopyInfo": self._snap_copy_info } } def _sybase_backup_request_json(self, backup_level, do_not_truncate_log=False, sybase_skip_full_after_logbkp=False, create_backup_copy_immediately=False, backup_copy_type=2, directive_file=None): """ Returns the JSON request to pass to the API as per the options selected by the user. Args: backup_level (list) -- level of backup the user wish to run Full / Incremental / Differential do_not_truncate_log (bool) -- Sybase truncate log option for incremental backup default : False sybase_skip_full_after_logbkp (bool) -- Sybase backup option for incremental default : False create_backup_copy_immediately (bool) -- Sybase snap job needs this backup copy operation default : False backup_copy_type (int) -- backup copy job to be launched based on below two options default : 2, possible values : 1 (USING_STORAGE_POLICY_RULE), 2( USING_LATEST_CYCLE) directive_file (str) -- inputfile for ondemand backup containing database list default : None Returns: (dict) - JSON request to pass to the API """ request_json = self._backup_json(backup_level, False, "BEFORE_SYNTH") sybase_options = { "doNotTruncateLog": do_not_truncate_log, "sybaseSkipFullafterLogBkp": sybase_skip_full_after_logbkp } if create_backup_copy_immediately: sub_opt = {"dataOpt": { "createBackupCopyImmediately": create_backup_copy_immediately, "backupCopyType": backup_copy_type } } sybase_options.update(sub_opt) if self._commonProperties.get("onDemandSubClient", False): on_demand_input = {"onDemandInputFile":directive_file} sybase_options.update(on_demand_input) request_json["taskInfo"]["subTasks"][0]["options"]["backupOpts"].update( sybase_options ) return request_json @property def is_snapenabled(self): """ Getter to check whether the subclient has snap enabled Returns: (bool) - boolean value based on snap status at subclient level True - returns Truee if snap is enabled on the subclient False - returns False if snap is not enabled at subclient level """ return self._snap_copy_info.get("isSnapBackupEnabled", False) @is_snapenabled.setter def is_snapenabled(self, value): """ To set is snap enabled to true or false Args: value (bool) -- to enable snap at subclient level or not """ self._set_subclient_properties( "_snap_copy_info['isSnapBackupEnabled']", value) @property def snap_engine(self): """ Getter to fetch snap_engine Returns: (str) - name of snap engine at subclient level """ return self._snap_copy_info.get('snapToTapeSelectedEngine', {}).get('snapShotEngineName') @snap_engine.setter def snap_engine(self, engine_name): """ To set snap engine name Args: engine_name (str) -- name of snap engine for intellisnap """ self._set_subclient_properties( "_snap_copy_info['snapToTapeSelectedEngine']['snapShotEngineName']", engine_name) @property def snap_proxy(self): """ Getter to snap_proxy if set any Returns: (str) -- name of proxy client used for intellisnap operation """ return self._snap_copy_info.get('snapToTapeProxyToUse', {}).get('clientName') @snap_proxy.setter def snap_proxy(self, proxy_name): """ Setter for snap proxy name Args: proxy_name (str) -- snap proxy name """ self._set_subclient_properties( "_snap_copy_info['snapToTapeProxyToUse']['clientName']", proxy_name) @property def use_dump_based_backup_copy(self): """ Getter to status of dumpbased backup copy Returns: (bool) - checks if dump based backup copy is enabled or not """ return self._snap_copy_info.get('useDumpBasedBackupCopy') @use_dump_based_backup_copy.setter def use_dump_based_backup_copy(self, dump_based): """ To enable dump based backup copy Args: dump_based (bool) -- set true to enable dump based backup copy option """ self._set_subclient_properties( "_snap_copy_info['useDumpBasedBackupCopy']", dump_based) @property def dump_based_backup_copy_option(self): """ Getter to fetch dumpbased backup copy option : 1(configured instance), 2(custom new instance) Returns: (int) - returns 1 or 2 based type of sybase instance configured """ return self._snap_copy_info.get("dumpBasedBackupCopyOption") @dump_based_backup_copy_option.setter def dump_based_backup_copy_option(self, dump_based_backup_copy_option): """ Enable dump based backup copy Args: dump_based_backup_copy_option (int) -- set 1(configured instance), 2(custom new instance) """ self._set_subclient_properties( "_snap_copy_info['dumpBasedBackupCopyOption']", dump_based_backup_copy_option) @property def configured_instance(self): """ Getter to fetch configured instance name if dump based backup copy option is 2 Returns: (str) - string of configured instance if dump based backup option is 1 Raises: SDK Exception if dump based backup copy not enabled if dump based copy option is not 1 """ if self._snap_copy_info.get('useDumpBasedBackupCopy'): if self._snap_copy_info.get('dumpBasedBackupCopyOption') == 1: return self._snap_copy_info['configuredSybaseInstance']['instanceName'] else: raise SDKException( 'Subclient', '102', "Invalid dump based copy option") else: raise SDKException('Subclient', '102', "Dump based parameter is not available") @configured_instance.setter def configured_instance(self, instance_name): """ Setter for configured instance name for dump based backup copy option Args: instance_name (str) -- string of instance name to be used for dump based backup copy """ self._set_subclient_properties( "_snap_copy_info['configuredSybaseInstance']['instanceName']", instance_name) @property def auxiliary_sybase_server(self): """ Getter to fetch custom instance properties if dump based copy option is 2 Returns: (dict) - dict of four properties for custom instance Raises: SDK Exception if dump based backup copy not enabled if dump based copy option is not 2 """ if self.use_dump_based_backup_copy: if self.dump_based_backup_copy_option == 2: auxiliary_sybase_server = { 'sybaseHome': self._snap_copy_info.get('sybaseHome'), 'sybaseASE': self._snap_copy_info.get('sybaseASE'), 'sybaseOCS': self._snap_copy_info.get('sybaseOCS'), 'sybaseUser': self._snap_copy_info.get('sybaseUser', {}).get('userName') } return auxiliary_sybase_server else: raise SDKException( 'Subclient', '102', "Invalid dump based copy option set") else: raise SDKException('Subclient', '102', "dump based parameter is not available") @auxiliary_sybase_server.setter def auxiliary_sybase_server(self, instance_properties): """ Setter custom instance properties if dump based copy option is 2 Args: instance_properties (dict) -- dict of four properties for custom instance Sample dict: instance_properties = { 'sybaseHome':sybase_home, 'sybaseASE':sybase_ase, 'sybaseOCS':sybase_ocs, 'sybaseUser':sybase_user } Raises: SDK Exception if None value in instance_properties """ if None in instance_properties.values(): raise SDKException( 'Instance', '102', "One of the sybase custom instance parameter is None. Exiting") self._set_subclient_properties( "_snap_copy_info['sybaseHome']", instance_properties['sybaseHome']) self._set_subclient_properties( "_snap_copy_info['sybaseASE']", instance_properties['sybaseASE']) self._set_subclient_properties( "_snap_copy_info['sybaseOCS']", instance_properties['sybaseOCS']) self._set_subclient_properties("_snap_copy_info['sybaseUser']['userName']", instance_properties['sybaseUser']) @property def content(self): """Treats the subclient content as a property of the Subclient class.""" subclient_content = self._content sybase_dblist = [] for item in subclient_content: sybase_server_dict = item dbname = sybase_server_dict['sybaseContent']['databaseName'] sybase_dblist.append(dbname) return sybase_dblist @content.setter def content(self, subclient_content): """ Creates the list of content JSON to pass to the API to add a new Sybase Subclient with the content passed in subclient content. Args: subclient_content (list) -- list of the content to add to the subclient Returns: (list) - list of the appropriate JSON for an agent to send to the POST Subclient API """ content_new = [] for dbname in subclient_content: sybase_server_dict = {"sybaseContent": {"databaseName": dbname}} content_new.append(sybase_server_dict) self._set_subclient_properties("_content", content_new) def backup(self, backup_level=r'full', do_not_truncate_log=False, sybase_skip_full_after_logbkp=False, create_backup_copy_immediately=False, backup_copy_type=2, directive_file=None): """ Performs backup on sybase subclient Args: backup_level (str) -- Level of backup. full|incremental|differential default: full do_not_truncate_log (bool) -- Sybase truncate log option for incremental backup default : False sybase_skip_full_after_logbkp (bool) -- Sybase backup option for incremental default : False create_backup_copy_immediately (bool) -- Sybase snap job needs this backup copy operation default : False backup_copy_type (int) -- backup copy job to be launched based on below two options default : 2, possible values : 1 (USING_STORAGE_POLICY_RULE), 2( USING_LATEST_CYCLE) directive_file (str) -- input file for ondemand backup containing database list default : None Returns: (object) - instance of Job class Raises: SDKException: if backup level is incorrect if response is empty if response does not succeed """ if backup_level.lower() not in ['full', 'incremental', 'differential']: raise SDKException(r'Subclient', r'103') if backup_level.lower() == 'incremental': do_not_truncate_log = do_not_truncate_log sybase_skip_full_after_logbkp = sybase_skip_full_after_logbkp else: do_not_truncate_log = False sybase_skip_full_after_logbkp = False if create_backup_copy_immediately: if backup_level.lower() == 'incremental': raise SDKException( 'Subclient', '102', 'Backup Copy job is not valid for Transaction Log Backup ') request_json = self._sybase_backup_request_json(backup_level.lower(), do_not_truncate_log, sybase_skip_full_after_logbkp, create_backup_copy_immediately, backup_copy_type, directive_file) backup_service = self._commcell_object._services['CREATE_TASK'] flag, response = self._commcell_object._cvpysdk_object.make_request( 'POST', backup_service, request_json ) return self._process_backup_response(flag, response)
Ancestors
Instance variables
var auxiliary_sybase_server
-
Getter to fetch custom instance properties if dump based copy option is 2
Returns
(dict) - dict of four properties for custom instance
Raises
SDK Exception if dump based backup copy not enabled
if dump based copy option is not 2
Expand source code Browse git
@property def auxiliary_sybase_server(self): """ Getter to fetch custom instance properties if dump based copy option is 2 Returns: (dict) - dict of four properties for custom instance Raises: SDK Exception if dump based backup copy not enabled if dump based copy option is not 2 """ if self.use_dump_based_backup_copy: if self.dump_based_backup_copy_option == 2: auxiliary_sybase_server = { 'sybaseHome': self._snap_copy_info.get('sybaseHome'), 'sybaseASE': self._snap_copy_info.get('sybaseASE'), 'sybaseOCS': self._snap_copy_info.get('sybaseOCS'), 'sybaseUser': self._snap_copy_info.get('sybaseUser', {}).get('userName') } return auxiliary_sybase_server else: raise SDKException( 'Subclient', '102', "Invalid dump based copy option set") else: raise SDKException('Subclient', '102', "dump based parameter is not available")
var configured_instance
-
Getter to fetch configured instance name if dump based backup copy option is 2
Returns
(str) - string of configured instance if dump based backup option is 1
Raises
SDK Exception if dump based backup copy not enabled
if dump based copy option is not 1
Expand source code Browse git
@property def configured_instance(self): """ Getter to fetch configured instance name if dump based backup copy option is 2 Returns: (str) - string of configured instance if dump based backup option is 1 Raises: SDK Exception if dump based backup copy not enabled if dump based copy option is not 1 """ if self._snap_copy_info.get('useDumpBasedBackupCopy'): if self._snap_copy_info.get('dumpBasedBackupCopyOption') == 1: return self._snap_copy_info['configuredSybaseInstance']['instanceName'] else: raise SDKException( 'Subclient', '102', "Invalid dump based copy option") else: raise SDKException('Subclient', '102', "Dump based parameter is not available")
var content
-
Treats the subclient content as a property of the Subclient class.
Expand source code Browse git
@property def content(self): """Treats the subclient content as a property of the Subclient class.""" subclient_content = self._content sybase_dblist = [] for item in subclient_content: sybase_server_dict = item dbname = sybase_server_dict['sybaseContent']['databaseName'] sybase_dblist.append(dbname) return sybase_dblist
var dump_based_backup_copy_option
-
Getter to fetch dumpbased backup copy option : 1(configured instance), 2(custom new instance)
Returns
(int) - returns 1 or 2 based type of sybase instance configured
Expand source code Browse git
@property def dump_based_backup_copy_option(self): """ Getter to fetch dumpbased backup copy option : 1(configured instance), 2(custom new instance) Returns: (int) - returns 1 or 2 based type of sybase instance configured """ return self._snap_copy_info.get("dumpBasedBackupCopyOption")
var is_snapenabled
-
Getter to check whether the subclient has snap enabled
Returns
(bool) - boolean value based on snap status at subclient level
True - returns Truee if snap is enabled on the subclient False - returns False if snap is not enabled at subclient level
Expand source code Browse git
@property def is_snapenabled(self): """ Getter to check whether the subclient has snap enabled Returns: (bool) - boolean value based on snap status at subclient level True - returns Truee if snap is enabled on the subclient False - returns False if snap is not enabled at subclient level """ return self._snap_copy_info.get("isSnapBackupEnabled", False)
var snap_engine
-
Getter to fetch snap_engine
Returns
(str) - name of snap engine at subclient level
Expand source code Browse git
@property def snap_engine(self): """ Getter to fetch snap_engine Returns: (str) - name of snap engine at subclient level """ return self._snap_copy_info.get('snapToTapeSelectedEngine', {}).get('snapShotEngineName')
var snap_proxy
-
Getter to snap_proxy if set any
Returns
(str) – name of proxy client used for intellisnap operation
Expand source code Browse git
@property def snap_proxy(self): """ Getter to snap_proxy if set any Returns: (str) -- name of proxy client used for intellisnap operation """ return self._snap_copy_info.get('snapToTapeProxyToUse', {}).get('clientName')
var use_dump_based_backup_copy
-
Getter to status of dumpbased backup copy
Returns
(bool) - checks if dump based backup copy is enabled or not
Expand source code Browse git
@property def use_dump_based_backup_copy(self): """ Getter to status of dumpbased backup copy Returns: (bool) - checks if dump based backup copy is enabled or not """ return self._snap_copy_info.get('useDumpBasedBackupCopy')
Methods
def backup(self, backup_level='full', do_not_truncate_log=False, sybase_skip_full_after_logbkp=False, create_backup_copy_immediately=False, backup_copy_type=2, directive_file=None)
-
Performs backup on sybase subclient
Args
backup_level (str) – Level of backup. full|incremental|differential default: full
do_not_truncate_log (bool) – Sybase truncate log option for incremental backup default : False
sybase_skip_full_after_logbkp (bool) – Sybase backup option for incremental default : False
create_backup_copy_immediately (bool) – Sybase snap job needs this backup copy operation default : False
backup_copy_type (int) – backup copy job to be launched based on below two options default : 2, possible values : 1 (USING_STORAGE_POLICY_RULE), 2( USING_LATEST_CYCLE)
directive_file (str) – input file for ondemand backup containing database list default : None
Returns
(object) - instance of Job class
Raises
SDKException: if backup level is incorrect
if response is empty if response does not succeed
Expand source code Browse git
def backup(self, backup_level=r'full', do_not_truncate_log=False, sybase_skip_full_after_logbkp=False, create_backup_copy_immediately=False, backup_copy_type=2, directive_file=None): """ Performs backup on sybase subclient Args: backup_level (str) -- Level of backup. full|incremental|differential default: full do_not_truncate_log (bool) -- Sybase truncate log option for incremental backup default : False sybase_skip_full_after_logbkp (bool) -- Sybase backup option for incremental default : False create_backup_copy_immediately (bool) -- Sybase snap job needs this backup copy operation default : False backup_copy_type (int) -- backup copy job to be launched based on below two options default : 2, possible values : 1 (USING_STORAGE_POLICY_RULE), 2( USING_LATEST_CYCLE) directive_file (str) -- input file for ondemand backup containing database list default : None Returns: (object) - instance of Job class Raises: SDKException: if backup level is incorrect if response is empty if response does not succeed """ if backup_level.lower() not in ['full', 'incremental', 'differential']: raise SDKException(r'Subclient', r'103') if backup_level.lower() == 'incremental': do_not_truncate_log = do_not_truncate_log sybase_skip_full_after_logbkp = sybase_skip_full_after_logbkp else: do_not_truncate_log = False sybase_skip_full_after_logbkp = False if create_backup_copy_immediately: if backup_level.lower() == 'incremental': raise SDKException( 'Subclient', '102', 'Backup Copy job is not valid for Transaction Log Backup ') request_json = self._sybase_backup_request_json(backup_level.lower(), do_not_truncate_log, sybase_skip_full_after_logbkp, create_backup_copy_immediately, backup_copy_type, directive_file) backup_service = self._commcell_object._services['CREATE_TASK'] flag, response = self._commcell_object._cvpysdk_object.make_request( 'POST', backup_service, request_json ) return self._process_backup_response(flag, response)
Inherited members
Subclient
:allow_multiple_readers
browse
data_readers
deduplication_options
description
disable_backup
disable_intelli_snap
display_name
enable_backup
enable_backup_at_time
enable_intelli_snap
enable_trueup
enable_trueup_days
encryption_flag
exclude_from_sla
find
find_latest_job
get_ma_associated_storagepolicy
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
next_backup_time
plan
properties
read_buffer_size
refresh
restore_in_place
restore_out_of_place
set_backup_nodes
set_proxy_for_snap
snapshot_engine_name
software_compression
storage_ma
storage_ma_id
storage_policy
subclient_guid
subclient_id
subclient_name
unset_proxy_for_snap
update_properties