Module cvpysdk.instances.mysqlinstance
File for operating on a MYSQL Instance.
MYSQLInstance is the only class defined in this file.
MYSQLInstance: Derived class from Instance Base class, representing an MYSQL instance, and to perform operations on that instance
MYSQLInstance:
_get_instance_properties() -- method to get the properties of the instance
_restore_json() -- returns the apppropriate JSON request to pass for
Restore In-Place
restore_in_place() -- Restores the mysql data/log files specified in the
input paths list to the same location
restore_out_of_place() -- method to perform out of place restore of MySQL data/log/recurring files to the
destination client.
_restore_browse_option_json() -- setter for browse option property in restore
_restore_common_options_json() -- setter for common options property in restore
_restore_destination_json() -- setter for destination options property in restore
_restore_fileoption_json() -- setter for file option property in restore
_restore_admin_option_json() -- setter for admin option property in restore
_restore_mysql_option_json() -- setter for MySQL restore option property in restore
MYSQLInstance instance Attributes:
**port** -- Returns the MySQL Server Port number
**mysql_username** -- Returns the MySQL Server username
**nt_username** -- Returns the MySQL Server nt username
**config_file** -- Returns the MySQL Server Config File location
**binary_directory** -- Returns the MySQL Server Binary File location
**version** -- Returns the MySQL Server version number
**log_data_directory** -- Returns the MySQL Server log data directory
**log_backup_sp_details** -- Returns the MySQL Server Log backup SP details
**command_line_sp_details** -- Returns the MySQL Server commandline SP details
**autodiscovery_enabled** -- Returns the MySQL Server auto discovery enabled flag
**xtrabackup_bin_path** -- Returns the MySQL Server xtrabackup bin path
**is_xtrabackup_enabled** -- Returns the MySQL Server xtrabackup enabled flag
**proxy_options** -- Returns the MySQL Server proxy options
**mysql_enterprise_backup_binary_path** -- Returns the MySQL Enterprise backup binary path
details
**no_lock_status** -- Returns the No Lock check box status for MySQL Instance
**ssl_enabled** -- Returns(boolean) True/False based on SSL status
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 MYSQL Instance.
MYSQLInstance is the only class defined in this file.
MYSQLInstance: Derived class from Instance Base class, representing an
MYSQL instance, and to perform operations on that instance
MYSQLInstance:
==============
_get_instance_properties() -- method to get the properties of the instance
_restore_json() -- returns the apppropriate JSON request to pass for
Restore In-Place
restore_in_place() -- Restores the mysql data/log files specified in the
input paths list to the same location
restore_out_of_place() -- method to perform out of place restore of MySQL data/log/recurring files to the
destination client.
_restore_browse_option_json() -- setter for browse option property in restore
_restore_common_options_json() -- setter for common options property in restore
_restore_destination_json() -- setter for destination options property in restore
_restore_fileoption_json() -- setter for file option property in restore
_restore_admin_option_json() -- setter for admin option property in restore
_restore_mysql_option_json() -- setter for MySQL restore option property in restore
MYSQLInstance instance Attributes:
==================================
**port** -- Returns the MySQL Server Port number
**mysql_username** -- Returns the MySQL Server username
**nt_username** -- Returns the MySQL Server nt username
**config_file** -- Returns the MySQL Server Config File location
**binary_directory** -- Returns the MySQL Server Binary File location
**version** -- Returns the MySQL Server version number
**log_data_directory** -- Returns the MySQL Server log data directory
**log_backup_sp_details** -- Returns the MySQL Server Log backup SP details
**command_line_sp_details** -- Returns the MySQL Server commandline SP details
**autodiscovery_enabled** -- Returns the MySQL Server auto discovery enabled flag
**xtrabackup_bin_path** -- Returns the MySQL Server xtrabackup bin path
**is_xtrabackup_enabled** -- Returns the MySQL Server xtrabackup enabled flag
**proxy_options** -- Returns the MySQL Server proxy options
**mysql_enterprise_backup_binary_path** -- Returns the MySQL Enterprise backup binary path
details
**no_lock_status** -- Returns the No Lock check box status for MySQL Instance
**ssl_enabled** -- Returns(boolean) True/False based on SSL status
"""
from __future__ import unicode_literals
from ..instance import Instance
from ..exception import SDKException
from ..credential_manager import Credential
class MYSQLInstance(Instance):
"""
Class to represent a standalone MYSQL Instance
"""
def __init__(self, agent_object, instance_name, instance_id=None):
"""Initialise the Subclient 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 MYSQLInstance class
"""
self._browse_restore_json = None
self._commonoption_restore_json = None
self._destination_restore_json = None
self._fileoption_restore_json = None
self._instance = None
self.admin_option_json = None
self.mysql_restore_json = None
super(MYSQLInstance, self).__init__(agent_object, instance_name, instance_id)
@property
def port(self):
"""Returns the MySQL Server Port number.
Returns:
(str) -- MySql server port number
"""
return self._properties.get('mySqlInstance', {}).get('port', None)
@property
def mysql_username(self):
"""Returns the MySQL Server username.
Returns:
(str) -- MySql server SA username
"""
credential_name = self._properties.get('credentialEntity', {}).get('credentialName', None)
return Credential(self._commcell_object, credential_name).credential_user_name
@property
def nt_username(self):
"""Returns the MySQL Server nt username.
Returns:
(str) -- MySql server NT username
"""
return self._properties.get('mySqlInstance', {}).get('NTUser', {}).get('userName', None)
@property
def config_file(self):
"""Returns the MySQL Server Config File location.
Returns:
(str) -- MySql server config file location
"""
return self._properties.get('mySqlInstance', {}).get('ConfigFile', None)
@property
def binary_directory(self):
"""Returns the MySQL Server Binary File location.
Returns:
(str) -- MySql server binary directory
"""
return self._properties.get('mySqlInstance', {}).get('BinaryDirectory', None)
@property
def version(self):
"""Returns the MySQL Server version number.
Returns:
(str) -- MySql server version
"""
return self._properties.get('mySqlInstance', {}).get('version', None)
@property
def log_data_directory(self):
"""Returns the MySQL Server log data directory.
Returns:
(str) -- MySql server log directory path
"""
return self._properties.get('mySqlInstance', {}).get('LogDataDirectory', None)
@property
def log_backup_sp_details(self):
"""Returns the MySQL Server Log backup SP details
Returns:
(dict) -- MySql server log backup storage policy information
"""
log_storage_policy_name = self._properties.get('mySqlInstance', {}).get(
'logStoragePolicy', {}).get('storagePolicyName', None)
log_storage_policy_id = self._properties.get('mySqlInstance', {}).get(
'logStoragePolicy', {}).get('storagePolicyId', None)
log_sp = {"storagePolicyName": log_storage_policy_name,
"storagePolicyId": log_storage_policy_id}
return log_sp
@property
def command_line_sp_details(self):
"""Returns the MySQL Server commandline SP details.
Returns:
(dict) -- MySql server commnadline storage policy information
"""
cmd_storage_policy_name = self._properties.get('mySqlInstance', {}).get(
'mysqlStorageDevice', {}).get('commandLineStoragePolicy', {}).get(
'storagePolicyName', None)
cmd_storage_policy_id = self._properties.get('mySqlInstance', {}).get(
'mysqlStorageDevice', {}).get('commandLineStoragePolicy', {}).get(
'storagePolicyId', None)
command_sp = {"storagePolicyName": cmd_storage_policy_name,
"storagePolicyId": cmd_storage_policy_id}
return command_sp
@property
def autodiscovery_enabled(self):
"""Returns the MySQL Server auto discovery enabled flag
Returns:
(bool) -- True if auto discovery enabled
False if auto discovery not enabled
"""
return self._properties.get('mySqlInstance', {}).get('EnableAutoDiscovery', False)
@autodiscovery_enabled.setter
def autodiscovery_enabled(self, value):
"""
Sets the auto discovery attribute to True or False
value (bool) -- True or False
"""
properties = self._properties
update = {
"EnableAutoDiscovery": value
}
properties['mySqlInstance'] = update
self.update_properties(properties)
@property
def xtrabackup_bin_path(self):
"""Returns the MySQL Server xtrabackup bin path
Returns:
(str) -- MySql server xtrabackup binary path
"""
return self._properties.get(
'mySqlInstance', {}).get(
'xtraBackupSettings', {}).get('xtraBackupBinPath', "")
@property
def is_xtrabackup_enabled(self):
"""Returns the MySQL Server xtrabackup enabled flag
Returns:
(bool) -- True if xtrabackup is enabled
False if xtrabackup is not enabled
"""
return self._properties.get(
'mySqlInstance', {}).get(
'xtraBackupSettings', {}).get('enableXtraBackup', False)
@property
def proxy_options(self):
"""Returns the MySQL Server proxy options
Returns:
(dict) -- MySql server proxy information
"""
proxy_settings = self._properties.get('mySqlInstance', {}).get('proxySettings', {})
proxy_opt = {
"isUseSSL": proxy_settings.get('isUseSSL', False),
"isProxyEnabled": proxy_settings.get('isProxyEnabled', False),
"runBackupOnProxy": proxy_settings.get('runBackupOnProxy', False),
"instanceId": proxy_settings.get('proxyInstance', {}).get('instanceId', None),
"instanceName": proxy_settings.get('proxyInstance', {}).get('instanceName', None),
"clientId": proxy_settings.get('proxyInstance', {}).get('clientId', None),
"clientName": proxy_settings.get('proxyInstance', {}).get('clientName', None)}
return proxy_opt
@property
def mysql_enterprise_backup_binary_path(self):
""" Returns the MySQL Enterprise backup binary path detail
Return Type: dict
"""
meb_settings = self._properties.get('mySqlInstance', {}).get('mebSettings', {})
return meb_settings
@mysql_enterprise_backup_binary_path.setter
def mysql_enterprise_backup_binary_path(self, value):
""" Setter for MySQL Enterprise backup binary path
Args:
value (str) -- Contains the MySQL Enterprise backup binary path to be updated
in MySQL Instance property
"""
if not isinstance(value, str):
raise SDKException('Instance', '101')
properties = self._properties
meb_bin_path_update = {
"enableMEB": False if value == '' else True,
"mebBinPath": value
}
properties['mySqlInstance']['mebSettings'] = meb_bin_path_update
self.update_properties(properties)
@property
def no_lock_status(self):
""" Returns the status of No Lock Checkbox in MySQL Instance
Returns:
(bool) -- True if No Lock checkbox is enabled
False if No Lock checkbox is disabled
"""
return self._properties.get('mySqlInstance', {}).get('EnableNoLocking', False)
@no_lock_status.setter
def no_lock_status(self, value):
""" Setter for No Lock property in MySQL Instance
Args:
value (bool) -- True or False to enable or disable the No Lock
property in MySQL Instance
"""
if not isinstance(value, bool):
raise SDKException('Instance', '101')
properties = self._properties
properties['mySqlInstance']['EnableNoLocking'] = value
self.update_properties(properties)
@property
def ssl_enabled(self):
""" Returns(boolean) True/False based on SSL status """
return self._properties.get('mySqlInstance', {}).get('sslEnabled', False)
def _get_instance_properties(self):
"""Gets the properties of this instance.
Raises:
SDKException:
if response is empty
if response is not success
"""
super(MYSQLInstance, self)._get_instance_properties()
self._instance = {
"type": 0,
"clientName": self._agent_object._client_object.client_name,
"clientSidePackage": True,
"subclientName": "",
"backupsetName": "defaultDummyBackupSet",
"instanceName": self.instance_name,
"appName": self._agent_object.agent_name,
"consumeLicense": True
}
def _restore_json(self, **kwargs):
"""Returns the JSON request to pass to the API as per the options selected by the user.
Args:
kwargs (list) -- list of options need to be set for restore
Returns:
dict - JSON request to pass to the API
"""
rest_json = super(MYSQLInstance, self)._restore_json(**kwargs)
restore_option = {}
if kwargs.get("restore_option"):
restore_option = kwargs["restore_option"]
for key in kwargs:
if not key == "restore_option":
restore_option[key] = kwargs[key]
else:
restore_option.update(kwargs)
if restore_option["from_time"] is None:
restore_option["from_time"] = {}
if restore_option["to_time"] is None:
restore_option["to_time"] = {}
self._restore_admin_option_json(restore_option)
self._restore_mysql_option_json(restore_option)
rest_json["taskInfo"]["subTasks"][0]["options"]["restoreOptions"][
"mySqlRstOption"] = self.mysql_restore_json
rest_json["taskInfo"]["subTasks"][0]["options"]["adminOpts"] = self.admin_option_json
return rest_json
def restore_in_place(
self,
path=None,
staging=None,
dest_client_name=None,
dest_instance_name=None,
data_restore=True,
log_restore=False,
overwrite=True,
copy_precedence=None,
from_time=None,
to_time=None,
media_agent=None,
table_level_restore=False,
clone_env=False,
clone_options=None,
redirect_enabled=False,
redirect_path=None,
browse_jobid=None):
"""Restores the mysql data/log files specified in the input paths list to the same location.
Args:
path (list) -- list of database/databases to be restored
default: None
staging (str) -- staging location for mysql logs during restores
default: None
dest_client_name (str) -- destination client name where files are to be
restored
default: None
dest_instance_name (str) -- destination mysql instance name of destination
client
default: None
data_restore (bool) -- for data only/data+log restore
default: True
log_restore (bool) -- for log only/data+log restore
default: False
overwrite (bool) -- unconditional overwrite files during restore
default: True
copy_precedence (int) -- copy precedence value of storage policy copy
default: None
from_time (str) -- time to retore the contents after
format: YYYY-MM-DD HH:MM:SS
default: None
to_time (str) -- time to retore the contents before
format: YYYY-MM-DD HH:MM:SS
default: None
media_agent (str) -- media agent associated
default: None
table_level_restore (bool) -- Table level restore flag
default: False
clone_env (bool) -- boolean to specify whether the database
should be cloned or not
default: False
clone_options (dict) -- clone restore options passed in a dict
default: None
Accepted format: {
"stagingLocaion": "/gk_snap",
"forceCleanup": True,
"port": "5595",
"libDirectory": "",
"isInstanceSelected": True,
"reservationPeriodS": 3600,
"user": "",
"binaryDirectory": "/usr/bin"
}
redirect_enabled (bool) -- boolean to specify if redirect restore is
enabled
default: False
redirect_path (str) -- Path specified in advanced restore options
in order to perform redirect restore
default: None
browse_jobid (int) -- Browse jobid to browse and restore from
default: None
Returns:
object - instance of the Job class for this restore job
Raises:
SDKException:
if paths is not a list
if failed to initialize job
if response is empty
if response is not success
"""
if not (isinstance(path, list) and
isinstance(overwrite, bool)):
raise SDKException('Instance', '101')
if path == []:
raise SDKException('Instance', '104')
if dest_client_name is None:
dest_client_name = self._agent_object._client_object.client_name
if dest_instance_name is None:
dest_instance_name = self.instance_name
request_json = self._restore_json(
paths=path,
staging=staging,
dest_client_name=dest_client_name,
dest_instance_name=dest_instance_name,
data_restore=data_restore,
log_restore=log_restore,
overwrite=overwrite,
copy_precedence=copy_precedence,
from_time=from_time,
to_time=to_time,
media_agent=media_agent,
table_level_restore=table_level_restore,
clone_env=clone_env,
clone_options=clone_options,
redirect_enabled=redirect_enabled,
redirect_path=redirect_path,
browse_jobid=browse_jobid)
return self._process_restore_response(request_json)
def restore_out_of_place(
self,
path=None,
staging=None,
dest_client_name=None,
dest_instance_name=None,
data_restore=True,
log_restore=False,
overwrite=True,
copy_precedence=None,
from_time=None,
to_time=None,
media_agent=None,
table_level_restore=False,
clone_env=False,
clone_options=None,
redirect_enabled=False,
redirect_path=None,
browse_jobid=None,
recurringRestore=False):
"""
Method to perform out of place restore of MySQL data/log/recurring files to the destination client location.
Args:
path (list) -- list of database/databases to be restored
staging (str) -- staging location for mysql logs during restores
dest_client_name (str) -- destination client name where files are to be restored
dest_instance_name (str) -- destination mysql instance name of destination client
data_restore (bool) -- for data only/data+log restore
log_restore (bool) -- for log only/data+log restore
overwrite (bool) -- unconditional overwrite files during restore
copy_precedence (int) -- copy precedence value of storage policy copy
from_time (str) -- time to restore the contents after
format: YYYY-MM-DD HH:MM:SS
to_time (str) -- time to restore the contents before
format: YYYY-MM-DD HH:MM:SS
media_agent (str) -- media agent associated
table_level_restore (bool) -- Table level restore flag
clone_env (bool) -- boolean to specify whether the database should be cloned or not
clone_options (dict) -- clone restore options passed in a dict
redirect_enabled (bool) -- boolean to specify if redirect restore is enabled
redirect_path (str) -- Path specified in advanced restore options
in order to perform redirect restore
browse_jobid (int) -- Browse jobid to browse and restore from
recurringRestore (bool) -- for Recurring restore
Returns:
object - instance of the Job class for this restore job
Raises:
SDKException:
if paths is not a list
if failed to initialize job
if destination client name is empty
if destination Instance name empty
if response is empty
if response is not success
"""
if not (isinstance(path, list) and
isinstance(overwrite, bool)):
raise SDKException('Instance', '101')
if path == []:
raise SDKException('Instance', '104')
if dest_client_name is None:
raise SDKException('Client', '102',
"The destination client name is missing. "
"Please provide a valid destination client name to proceed")
if dest_instance_name is None:
raise SDKException('Instance', '102',
"The destination Instance name is missing. "
"Please provide a valid destination Instance name to proceed")
request_json = self._restore_json(
paths=path,
staging=staging,
dest_client_name=dest_client_name,
dest_instance_name=dest_instance_name,
data_restore=data_restore,
log_restore=log_restore,
overwrite=overwrite,
copy_precedence=copy_precedence,
from_time=from_time,
to_time=to_time,
media_agent=media_agent,
table_level_restore=table_level_restore,
clone_env=clone_env,
clone_options=clone_options,
redirect_enabled=redirect_enabled,
redirect_path=redirect_path,
browse_jobid=browse_jobid,
recurringRestore=recurringRestore)
return self._process_restore_response(request_json)
def _restore_browse_option_json(self, value):
"""setter for the Browse options for restore in Json"""
if not isinstance(value, dict):
raise SDKException('Instance', '101')
super(MYSQLInstance, self)._restore_browse_option_json(value)
self._browse_restore_json['backupset'] = {
"clientName": self._agent_object._client_object.client_name,
"backupsetName": "defaultDummyBackupSet"
}
if value.get("browse_jobid"):
self._browse_restore_json['browseJobId'] = value.get("browse_jobid")
if value.get("from_time") and value.get("to_time"):
self._browse_restore_json["timeRange"] = {"fromTime" : value.get("from_time"),
"toTime" : value.get("to_time")}
def _restore_common_options_json(self, value):
"""setter for the Common options in restore JSON"""
if not isinstance(value, dict):
raise SDKException('Instance', '101')
self._commonoption_restore_json = {
"restoreToDisk": False,
"onePassRestore": False,
"revert": False,
"syncRestore": False
}
def _restore_destination_json(self, value):
"""setter for the MySQL Destination options in restore JSON"""
if not isinstance(value, dict):
raise SDKException('Instance', '101')
self._destination_restore_json = {
"destinationInstance": {
"clientName": value.get("dest_client_name", ""),
"instanceName": value.get("dest_instance_name", ""),
"appName": "MySQL"
},
"destClient": {
"clientName": value.get("dest_client_name", "")
}
}
def _restore_fileoption_json(self, value):
"""setter for the fileoption restore option in restore JSON"""
if not isinstance(value, dict):
raise SDKException('Instance', '101')
self._fileoption_restore_json = {
"sourceItem": value.get("paths", [])
}
def _restore_admin_option_json(self, value):
"""setter for the admin restore option in restore JSON"""
if not isinstance(value, dict):
raise SDKException('Instance', '101')
self.admin_option_json = {
"contentIndexingOption": {
"subClientBasedAnalytics": False
}
}
def _restore_mysql_option_json(self, value):
"""setter for the mysql restore option in restore JSON"""
if not isinstance(value, dict):
raise SDKException('Instance', '101')
self.mysql_restore_json = {
"destinationFolder": "",
"data": value.get("data_restore", True),
"log": value.get("log_restore", True),
"recurringRestore": value.get("recurringRestore", False),
"temporaryStagingLocation": value.get("staging", ""),
"dataStagingLocation": "",
"logRestoreType": 0,
"tableLevelRestore": value.get("table_level_restore", False),
"pointofTime": True if value.get("to_time") else False,
"instanceRestore": True,
"isCloneRestore": value.get("clone_env", False),
"fromTime": value.get("from_time", {}),
"refTime": value.get("to_time", {}),
"destinationServer": {
"name": ""
}
}
if value.get("table_level_restore"):
self.mysql_restore_json['dropTable'] = True
self.mysql_restore_json['instanceRestore'] = False
if value.get("clone_env", False):
self.mysql_restore_json["cloneOptions"] = value.get("clone_options", "")
if value.get("redirect_path"):
self.mysql_restore_json["redirectEnabled"] = True
self.mysql_restore_json["redirectItems"] = [value.get("redirect_path")]
if value.get("from_time"):
self.mysql_restore_json["fromTime"] = {"time" : value.get("to_time")}
if value.get("to_time"):
self.mysql_restore_json["refTime"] = {"time" : value.get("to_time")}
if value.get("to_time"):
self.mysql_restore_json["pointInTime"] = {"time" : value.get("to_time")}
if value.get("dest_instance_name"):
self.mysql_restore_json["destinationServer"] = {"name": value.get(
"dest_instance_name")}
Classes
class MYSQLInstance (agent_object, instance_name, instance_id=None)
-
Class to represent a standalone MYSQL Instance
Initialise the Subclient 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 MYSQLInstance class
Expand source code Browse git
class MYSQLInstance(Instance): """ Class to represent a standalone MYSQL Instance """ def __init__(self, agent_object, instance_name, instance_id=None): """Initialise the Subclient 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 MYSQLInstance class """ self._browse_restore_json = None self._commonoption_restore_json = None self._destination_restore_json = None self._fileoption_restore_json = None self._instance = None self.admin_option_json = None self.mysql_restore_json = None super(MYSQLInstance, self).__init__(agent_object, instance_name, instance_id) @property def port(self): """Returns the MySQL Server Port number. Returns: (str) -- MySql server port number """ return self._properties.get('mySqlInstance', {}).get('port', None) @property def mysql_username(self): """Returns the MySQL Server username. Returns: (str) -- MySql server SA username """ credential_name = self._properties.get('credentialEntity', {}).get('credentialName', None) return Credential(self._commcell_object, credential_name).credential_user_name @property def nt_username(self): """Returns the MySQL Server nt username. Returns: (str) -- MySql server NT username """ return self._properties.get('mySqlInstance', {}).get('NTUser', {}).get('userName', None) @property def config_file(self): """Returns the MySQL Server Config File location. Returns: (str) -- MySql server config file location """ return self._properties.get('mySqlInstance', {}).get('ConfigFile', None) @property def binary_directory(self): """Returns the MySQL Server Binary File location. Returns: (str) -- MySql server binary directory """ return self._properties.get('mySqlInstance', {}).get('BinaryDirectory', None) @property def version(self): """Returns the MySQL Server version number. Returns: (str) -- MySql server version """ return self._properties.get('mySqlInstance', {}).get('version', None) @property def log_data_directory(self): """Returns the MySQL Server log data directory. Returns: (str) -- MySql server log directory path """ return self._properties.get('mySqlInstance', {}).get('LogDataDirectory', None) @property def log_backup_sp_details(self): """Returns the MySQL Server Log backup SP details Returns: (dict) -- MySql server log backup storage policy information """ log_storage_policy_name = self._properties.get('mySqlInstance', {}).get( 'logStoragePolicy', {}).get('storagePolicyName', None) log_storage_policy_id = self._properties.get('mySqlInstance', {}).get( 'logStoragePolicy', {}).get('storagePolicyId', None) log_sp = {"storagePolicyName": log_storage_policy_name, "storagePolicyId": log_storage_policy_id} return log_sp @property def command_line_sp_details(self): """Returns the MySQL Server commandline SP details. Returns: (dict) -- MySql server commnadline storage policy information """ cmd_storage_policy_name = self._properties.get('mySqlInstance', {}).get( 'mysqlStorageDevice', {}).get('commandLineStoragePolicy', {}).get( 'storagePolicyName', None) cmd_storage_policy_id = self._properties.get('mySqlInstance', {}).get( 'mysqlStorageDevice', {}).get('commandLineStoragePolicy', {}).get( 'storagePolicyId', None) command_sp = {"storagePolicyName": cmd_storage_policy_name, "storagePolicyId": cmd_storage_policy_id} return command_sp @property def autodiscovery_enabled(self): """Returns the MySQL Server auto discovery enabled flag Returns: (bool) -- True if auto discovery enabled False if auto discovery not enabled """ return self._properties.get('mySqlInstance', {}).get('EnableAutoDiscovery', False) @autodiscovery_enabled.setter def autodiscovery_enabled(self, value): """ Sets the auto discovery attribute to True or False value (bool) -- True or False """ properties = self._properties update = { "EnableAutoDiscovery": value } properties['mySqlInstance'] = update self.update_properties(properties) @property def xtrabackup_bin_path(self): """Returns the MySQL Server xtrabackup bin path Returns: (str) -- MySql server xtrabackup binary path """ return self._properties.get( 'mySqlInstance', {}).get( 'xtraBackupSettings', {}).get('xtraBackupBinPath', "") @property def is_xtrabackup_enabled(self): """Returns the MySQL Server xtrabackup enabled flag Returns: (bool) -- True if xtrabackup is enabled False if xtrabackup is not enabled """ return self._properties.get( 'mySqlInstance', {}).get( 'xtraBackupSettings', {}).get('enableXtraBackup', False) @property def proxy_options(self): """Returns the MySQL Server proxy options Returns: (dict) -- MySql server proxy information """ proxy_settings = self._properties.get('mySqlInstance', {}).get('proxySettings', {}) proxy_opt = { "isUseSSL": proxy_settings.get('isUseSSL', False), "isProxyEnabled": proxy_settings.get('isProxyEnabled', False), "runBackupOnProxy": proxy_settings.get('runBackupOnProxy', False), "instanceId": proxy_settings.get('proxyInstance', {}).get('instanceId', None), "instanceName": proxy_settings.get('proxyInstance', {}).get('instanceName', None), "clientId": proxy_settings.get('proxyInstance', {}).get('clientId', None), "clientName": proxy_settings.get('proxyInstance', {}).get('clientName', None)} return proxy_opt @property def mysql_enterprise_backup_binary_path(self): """ Returns the MySQL Enterprise backup binary path detail Return Type: dict """ meb_settings = self._properties.get('mySqlInstance', {}).get('mebSettings', {}) return meb_settings @mysql_enterprise_backup_binary_path.setter def mysql_enterprise_backup_binary_path(self, value): """ Setter for MySQL Enterprise backup binary path Args: value (str) -- Contains the MySQL Enterprise backup binary path to be updated in MySQL Instance property """ if not isinstance(value, str): raise SDKException('Instance', '101') properties = self._properties meb_bin_path_update = { "enableMEB": False if value == '' else True, "mebBinPath": value } properties['mySqlInstance']['mebSettings'] = meb_bin_path_update self.update_properties(properties) @property def no_lock_status(self): """ Returns the status of No Lock Checkbox in MySQL Instance Returns: (bool) -- True if No Lock checkbox is enabled False if No Lock checkbox is disabled """ return self._properties.get('mySqlInstance', {}).get('EnableNoLocking', False) @no_lock_status.setter def no_lock_status(self, value): """ Setter for No Lock property in MySQL Instance Args: value (bool) -- True or False to enable or disable the No Lock property in MySQL Instance """ if not isinstance(value, bool): raise SDKException('Instance', '101') properties = self._properties properties['mySqlInstance']['EnableNoLocking'] = value self.update_properties(properties) @property def ssl_enabled(self): """ Returns(boolean) True/False based on SSL status """ return self._properties.get('mySqlInstance', {}).get('sslEnabled', False) def _get_instance_properties(self): """Gets the properties of this instance. Raises: SDKException: if response is empty if response is not success """ super(MYSQLInstance, self)._get_instance_properties() self._instance = { "type": 0, "clientName": self._agent_object._client_object.client_name, "clientSidePackage": True, "subclientName": "", "backupsetName": "defaultDummyBackupSet", "instanceName": self.instance_name, "appName": self._agent_object.agent_name, "consumeLicense": True } def _restore_json(self, **kwargs): """Returns the JSON request to pass to the API as per the options selected by the user. Args: kwargs (list) -- list of options need to be set for restore Returns: dict - JSON request to pass to the API """ rest_json = super(MYSQLInstance, self)._restore_json(**kwargs) restore_option = {} if kwargs.get("restore_option"): restore_option = kwargs["restore_option"] for key in kwargs: if not key == "restore_option": restore_option[key] = kwargs[key] else: restore_option.update(kwargs) if restore_option["from_time"] is None: restore_option["from_time"] = {} if restore_option["to_time"] is None: restore_option["to_time"] = {} self._restore_admin_option_json(restore_option) self._restore_mysql_option_json(restore_option) rest_json["taskInfo"]["subTasks"][0]["options"]["restoreOptions"][ "mySqlRstOption"] = self.mysql_restore_json rest_json["taskInfo"]["subTasks"][0]["options"]["adminOpts"] = self.admin_option_json return rest_json def restore_in_place( self, path=None, staging=None, dest_client_name=None, dest_instance_name=None, data_restore=True, log_restore=False, overwrite=True, copy_precedence=None, from_time=None, to_time=None, media_agent=None, table_level_restore=False, clone_env=False, clone_options=None, redirect_enabled=False, redirect_path=None, browse_jobid=None): """Restores the mysql data/log files specified in the input paths list to the same location. Args: path (list) -- list of database/databases to be restored default: None staging (str) -- staging location for mysql logs during restores default: None dest_client_name (str) -- destination client name where files are to be restored default: None dest_instance_name (str) -- destination mysql instance name of destination client default: None data_restore (bool) -- for data only/data+log restore default: True log_restore (bool) -- for log only/data+log restore default: False overwrite (bool) -- unconditional overwrite files during restore default: True copy_precedence (int) -- copy precedence value of storage policy copy default: None from_time (str) -- time to retore the contents after format: YYYY-MM-DD HH:MM:SS default: None to_time (str) -- time to retore the contents before format: YYYY-MM-DD HH:MM:SS default: None media_agent (str) -- media agent associated default: None table_level_restore (bool) -- Table level restore flag default: False clone_env (bool) -- boolean to specify whether the database should be cloned or not default: False clone_options (dict) -- clone restore options passed in a dict default: None Accepted format: { "stagingLocaion": "/gk_snap", "forceCleanup": True, "port": "5595", "libDirectory": "", "isInstanceSelected": True, "reservationPeriodS": 3600, "user": "", "binaryDirectory": "/usr/bin" } redirect_enabled (bool) -- boolean to specify if redirect restore is enabled default: False redirect_path (str) -- Path specified in advanced restore options in order to perform redirect restore default: None browse_jobid (int) -- Browse jobid to browse and restore from default: None Returns: object - instance of the Job class for this restore job Raises: SDKException: if paths is not a list if failed to initialize job if response is empty if response is not success """ if not (isinstance(path, list) and isinstance(overwrite, bool)): raise SDKException('Instance', '101') if path == []: raise SDKException('Instance', '104') if dest_client_name is None: dest_client_name = self._agent_object._client_object.client_name if dest_instance_name is None: dest_instance_name = self.instance_name request_json = self._restore_json( paths=path, staging=staging, dest_client_name=dest_client_name, dest_instance_name=dest_instance_name, data_restore=data_restore, log_restore=log_restore, overwrite=overwrite, copy_precedence=copy_precedence, from_time=from_time, to_time=to_time, media_agent=media_agent, table_level_restore=table_level_restore, clone_env=clone_env, clone_options=clone_options, redirect_enabled=redirect_enabled, redirect_path=redirect_path, browse_jobid=browse_jobid) return self._process_restore_response(request_json) def restore_out_of_place( self, path=None, staging=None, dest_client_name=None, dest_instance_name=None, data_restore=True, log_restore=False, overwrite=True, copy_precedence=None, from_time=None, to_time=None, media_agent=None, table_level_restore=False, clone_env=False, clone_options=None, redirect_enabled=False, redirect_path=None, browse_jobid=None, recurringRestore=False): """ Method to perform out of place restore of MySQL data/log/recurring files to the destination client location. Args: path (list) -- list of database/databases to be restored staging (str) -- staging location for mysql logs during restores dest_client_name (str) -- destination client name where files are to be restored dest_instance_name (str) -- destination mysql instance name of destination client data_restore (bool) -- for data only/data+log restore log_restore (bool) -- for log only/data+log restore overwrite (bool) -- unconditional overwrite files during restore copy_precedence (int) -- copy precedence value of storage policy copy from_time (str) -- time to restore the contents after format: YYYY-MM-DD HH:MM:SS to_time (str) -- time to restore the contents before format: YYYY-MM-DD HH:MM:SS media_agent (str) -- media agent associated table_level_restore (bool) -- Table level restore flag clone_env (bool) -- boolean to specify whether the database should be cloned or not clone_options (dict) -- clone restore options passed in a dict redirect_enabled (bool) -- boolean to specify if redirect restore is enabled redirect_path (str) -- Path specified in advanced restore options in order to perform redirect restore browse_jobid (int) -- Browse jobid to browse and restore from recurringRestore (bool) -- for Recurring restore Returns: object - instance of the Job class for this restore job Raises: SDKException: if paths is not a list if failed to initialize job if destination client name is empty if destination Instance name empty if response is empty if response is not success """ if not (isinstance(path, list) and isinstance(overwrite, bool)): raise SDKException('Instance', '101') if path == []: raise SDKException('Instance', '104') if dest_client_name is None: raise SDKException('Client', '102', "The destination client name is missing. " "Please provide a valid destination client name to proceed") if dest_instance_name is None: raise SDKException('Instance', '102', "The destination Instance name is missing. " "Please provide a valid destination Instance name to proceed") request_json = self._restore_json( paths=path, staging=staging, dest_client_name=dest_client_name, dest_instance_name=dest_instance_name, data_restore=data_restore, log_restore=log_restore, overwrite=overwrite, copy_precedence=copy_precedence, from_time=from_time, to_time=to_time, media_agent=media_agent, table_level_restore=table_level_restore, clone_env=clone_env, clone_options=clone_options, redirect_enabled=redirect_enabled, redirect_path=redirect_path, browse_jobid=browse_jobid, recurringRestore=recurringRestore) return self._process_restore_response(request_json) def _restore_browse_option_json(self, value): """setter for the Browse options for restore in Json""" if not isinstance(value, dict): raise SDKException('Instance', '101') super(MYSQLInstance, self)._restore_browse_option_json(value) self._browse_restore_json['backupset'] = { "clientName": self._agent_object._client_object.client_name, "backupsetName": "defaultDummyBackupSet" } if value.get("browse_jobid"): self._browse_restore_json['browseJobId'] = value.get("browse_jobid") if value.get("from_time") and value.get("to_time"): self._browse_restore_json["timeRange"] = {"fromTime" : value.get("from_time"), "toTime" : value.get("to_time")} def _restore_common_options_json(self, value): """setter for the Common options in restore JSON""" if not isinstance(value, dict): raise SDKException('Instance', '101') self._commonoption_restore_json = { "restoreToDisk": False, "onePassRestore": False, "revert": False, "syncRestore": False } def _restore_destination_json(self, value): """setter for the MySQL Destination options in restore JSON""" if not isinstance(value, dict): raise SDKException('Instance', '101') self._destination_restore_json = { "destinationInstance": { "clientName": value.get("dest_client_name", ""), "instanceName": value.get("dest_instance_name", ""), "appName": "MySQL" }, "destClient": { "clientName": value.get("dest_client_name", "") } } def _restore_fileoption_json(self, value): """setter for the fileoption restore option in restore JSON""" if not isinstance(value, dict): raise SDKException('Instance', '101') self._fileoption_restore_json = { "sourceItem": value.get("paths", []) } def _restore_admin_option_json(self, value): """setter for the admin restore option in restore JSON""" if not isinstance(value, dict): raise SDKException('Instance', '101') self.admin_option_json = { "contentIndexingOption": { "subClientBasedAnalytics": False } } def _restore_mysql_option_json(self, value): """setter for the mysql restore option in restore JSON""" if not isinstance(value, dict): raise SDKException('Instance', '101') self.mysql_restore_json = { "destinationFolder": "", "data": value.get("data_restore", True), "log": value.get("log_restore", True), "recurringRestore": value.get("recurringRestore", False), "temporaryStagingLocation": value.get("staging", ""), "dataStagingLocation": "", "logRestoreType": 0, "tableLevelRestore": value.get("table_level_restore", False), "pointofTime": True if value.get("to_time") else False, "instanceRestore": True, "isCloneRestore": value.get("clone_env", False), "fromTime": value.get("from_time", {}), "refTime": value.get("to_time", {}), "destinationServer": { "name": "" } } if value.get("table_level_restore"): self.mysql_restore_json['dropTable'] = True self.mysql_restore_json['instanceRestore'] = False if value.get("clone_env", False): self.mysql_restore_json["cloneOptions"] = value.get("clone_options", "") if value.get("redirect_path"): self.mysql_restore_json["redirectEnabled"] = True self.mysql_restore_json["redirectItems"] = [value.get("redirect_path")] if value.get("from_time"): self.mysql_restore_json["fromTime"] = {"time" : value.get("to_time")} if value.get("to_time"): self.mysql_restore_json["refTime"] = {"time" : value.get("to_time")} if value.get("to_time"): self.mysql_restore_json["pointInTime"] = {"time" : value.get("to_time")} if value.get("dest_instance_name"): self.mysql_restore_json["destinationServer"] = {"name": value.get( "dest_instance_name")}
Ancestors
Instance variables
var autodiscovery_enabled
-
Returns the MySQL Server auto discovery enabled flag
Returns
(bool) – True if auto discovery enabled False if auto discovery not enabled
Expand source code Browse git
@property def autodiscovery_enabled(self): """Returns the MySQL Server auto discovery enabled flag Returns: (bool) -- True if auto discovery enabled False if auto discovery not enabled """ return self._properties.get('mySqlInstance', {}).get('EnableAutoDiscovery', False)
var binary_directory
-
Returns the MySQL Server Binary File location.
Returns
(str) – MySql server binary directory
Expand source code Browse git
@property def binary_directory(self): """Returns the MySQL Server Binary File location. Returns: (str) -- MySql server binary directory """ return self._properties.get('mySqlInstance', {}).get('BinaryDirectory', None)
var command_line_sp_details
-
Returns the MySQL Server commandline SP details.
Returns
(dict) – MySql server commnadline storage policy information
Expand source code Browse git
@property def command_line_sp_details(self): """Returns the MySQL Server commandline SP details. Returns: (dict) -- MySql server commnadline storage policy information """ cmd_storage_policy_name = self._properties.get('mySqlInstance', {}).get( 'mysqlStorageDevice', {}).get('commandLineStoragePolicy', {}).get( 'storagePolicyName', None) cmd_storage_policy_id = self._properties.get('mySqlInstance', {}).get( 'mysqlStorageDevice', {}).get('commandLineStoragePolicy', {}).get( 'storagePolicyId', None) command_sp = {"storagePolicyName": cmd_storage_policy_name, "storagePolicyId": cmd_storage_policy_id} return command_sp
var config_file
-
Returns the MySQL Server Config File location.
Returns
(str) – MySql server config file location
Expand source code Browse git
@property def config_file(self): """Returns the MySQL Server Config File location. Returns: (str) -- MySql server config file location """ return self._properties.get('mySqlInstance', {}).get('ConfigFile', None)
var is_xtrabackup_enabled
-
Returns the MySQL Server xtrabackup enabled flag
Returns
(bool) – True if xtrabackup is enabled False if xtrabackup is not enabled
Expand source code Browse git
@property def is_xtrabackup_enabled(self): """Returns the MySQL Server xtrabackup enabled flag Returns: (bool) -- True if xtrabackup is enabled False if xtrabackup is not enabled """ return self._properties.get( 'mySqlInstance', {}).get( 'xtraBackupSettings', {}).get('enableXtraBackup', False)
var log_backup_sp_details
-
Returns the MySQL Server Log backup SP details
Returns
(dict) – MySql server log backup storage policy information
Expand source code Browse git
@property def log_backup_sp_details(self): """Returns the MySQL Server Log backup SP details Returns: (dict) -- MySql server log backup storage policy information """ log_storage_policy_name = self._properties.get('mySqlInstance', {}).get( 'logStoragePolicy', {}).get('storagePolicyName', None) log_storage_policy_id = self._properties.get('mySqlInstance', {}).get( 'logStoragePolicy', {}).get('storagePolicyId', None) log_sp = {"storagePolicyName": log_storage_policy_name, "storagePolicyId": log_storage_policy_id} return log_sp
var log_data_directory
-
Returns the MySQL Server log data directory.
Returns
(str) – MySql server log directory path
Expand source code Browse git
@property def log_data_directory(self): """Returns the MySQL Server log data directory. Returns: (str) -- MySql server log directory path """ return self._properties.get('mySqlInstance', {}).get('LogDataDirectory', None)
var mysql_enterprise_backup_binary_path
-
Returns the MySQL Enterprise backup binary path detail
Return Type: dict
Expand source code Browse git
@property def mysql_enterprise_backup_binary_path(self): """ Returns the MySQL Enterprise backup binary path detail Return Type: dict """ meb_settings = self._properties.get('mySqlInstance', {}).get('mebSettings', {}) return meb_settings
var mysql_username
-
Returns the MySQL Server username.
Returns
(str) – MySql server SA username
Expand source code Browse git
@property def mysql_username(self): """Returns the MySQL Server username. Returns: (str) -- MySql server SA username """ credential_name = self._properties.get('credentialEntity', {}).get('credentialName', None) return Credential(self._commcell_object, credential_name).credential_user_name
var no_lock_status
-
Returns the status of No Lock Checkbox in MySQL Instance
Returns: (bool) – True if No Lock checkbox is enabled False if No Lock checkbox is disabled
Expand source code Browse git
@property def no_lock_status(self): """ Returns the status of No Lock Checkbox in MySQL Instance Returns: (bool) -- True if No Lock checkbox is enabled False if No Lock checkbox is disabled """ return self._properties.get('mySqlInstance', {}).get('EnableNoLocking', False)
var nt_username
-
Returns the MySQL Server nt username.
Returns
(str) – MySql server NT username
Expand source code Browse git
@property def nt_username(self): """Returns the MySQL Server nt username. Returns: (str) -- MySql server NT username """ return self._properties.get('mySqlInstance', {}).get('NTUser', {}).get('userName', None)
var port
-
Returns the MySQL Server Port number.
Returns
(str) – MySql server port number
Expand source code Browse git
@property def port(self): """Returns the MySQL Server Port number. Returns: (str) -- MySql server port number """ return self._properties.get('mySqlInstance', {}).get('port', None)
var proxy_options
-
Returns the MySQL Server proxy options
Returns
(dict) – MySql server proxy information
Expand source code Browse git
@property def proxy_options(self): """Returns the MySQL Server proxy options Returns: (dict) -- MySql server proxy information """ proxy_settings = self._properties.get('mySqlInstance', {}).get('proxySettings', {}) proxy_opt = { "isUseSSL": proxy_settings.get('isUseSSL', False), "isProxyEnabled": proxy_settings.get('isProxyEnabled', False), "runBackupOnProxy": proxy_settings.get('runBackupOnProxy', False), "instanceId": proxy_settings.get('proxyInstance', {}).get('instanceId', None), "instanceName": proxy_settings.get('proxyInstance', {}).get('instanceName', None), "clientId": proxy_settings.get('proxyInstance', {}).get('clientId', None), "clientName": proxy_settings.get('proxyInstance', {}).get('clientName', None)} return proxy_opt
var ssl_enabled
-
Returns(boolean) True/False based on SSL status
Expand source code Browse git
@property def ssl_enabled(self): """ Returns(boolean) True/False based on SSL status """ return self._properties.get('mySqlInstance', {}).get('sslEnabled', False)
var version
-
Returns the MySQL Server version number.
Returns
(str) – MySql server version
Expand source code Browse git
@property def version(self): """Returns the MySQL Server version number. Returns: (str) -- MySql server version """ return self._properties.get('mySqlInstance', {}).get('version', None)
var xtrabackup_bin_path
-
Returns the MySQL Server xtrabackup bin path
Returns
(str) – MySql server xtrabackup binary path
Expand source code Browse git
@property def xtrabackup_bin_path(self): """Returns the MySQL Server xtrabackup bin path Returns: (str) -- MySql server xtrabackup binary path """ return self._properties.get( 'mySqlInstance', {}).get( 'xtraBackupSettings', {}).get('xtraBackupBinPath', "")
Methods
def restore_in_place(self, path=None, staging=None, dest_client_name=None, dest_instance_name=None, data_restore=True, log_restore=False, overwrite=True, copy_precedence=None, from_time=None, to_time=None, media_agent=None, table_level_restore=False, clone_env=False, clone_options=None, redirect_enabled=False, redirect_path=None, browse_jobid=None)
-
Restores the mysql data/log files specified in the input paths list to the same location.
Args
path (list) – list of database/databases to be restored
default: None
staging (str) – staging location for mysql logs during restores
default: None
dest_client_name (str) – destination client name where files are to be restored
default: None
dest_instance_name (str) – destination mysql instance name of destination client
default: None
data_restore (bool) – for data only/data+log restore
default: True
log_restore (bool) – for log only/data+log restore
default: False
overwrite (bool) – unconditional overwrite files during restore
default: True
copy_precedence (int) – copy precedence value of storage policy copy
default: None
from_time (str) – time to retore the contents after format: YYYY-MM-DD HH:MM:SS
default: None
to_time (str) – time to retore the contents before format: YYYY-MM-DD HH:MM:SS
default: None
media_agent (str) – media agent associated
default: None
table_level_restore (bool) – Table level restore flag
default: False
clone_env (bool) – boolean to specify whether the database should be cloned or not
default: False
clone_options (dict) – clone restore options passed in a dict
default: None Accepted format: { "stagingLocaion": "/gk_snap", "forceCleanup": True, "port": "5595", "libDirectory": "", "isInstanceSelected": True, "reservationPeriodS": 3600, "user": "", "binaryDirectory": "/usr/bin" }
redirect_enabled (bool) – boolean to specify if redirect restore is enabled
default: False
redirect_path (str) – Path specified in advanced restore options in order to perform redirect restore
default: None
browse_jobid (int) – Browse jobid to browse and restore from
default: None
Returns
object - instance of the Job class for this restore job
Raises
SDKException: if paths is not a list
if failed to initialize job if response is empty if response is not success
Expand source code Browse git
def restore_in_place( self, path=None, staging=None, dest_client_name=None, dest_instance_name=None, data_restore=True, log_restore=False, overwrite=True, copy_precedence=None, from_time=None, to_time=None, media_agent=None, table_level_restore=False, clone_env=False, clone_options=None, redirect_enabled=False, redirect_path=None, browse_jobid=None): """Restores the mysql data/log files specified in the input paths list to the same location. Args: path (list) -- list of database/databases to be restored default: None staging (str) -- staging location for mysql logs during restores default: None dest_client_name (str) -- destination client name where files are to be restored default: None dest_instance_name (str) -- destination mysql instance name of destination client default: None data_restore (bool) -- for data only/data+log restore default: True log_restore (bool) -- for log only/data+log restore default: False overwrite (bool) -- unconditional overwrite files during restore default: True copy_precedence (int) -- copy precedence value of storage policy copy default: None from_time (str) -- time to retore the contents after format: YYYY-MM-DD HH:MM:SS default: None to_time (str) -- time to retore the contents before format: YYYY-MM-DD HH:MM:SS default: None media_agent (str) -- media agent associated default: None table_level_restore (bool) -- Table level restore flag default: False clone_env (bool) -- boolean to specify whether the database should be cloned or not default: False clone_options (dict) -- clone restore options passed in a dict default: None Accepted format: { "stagingLocaion": "/gk_snap", "forceCleanup": True, "port": "5595", "libDirectory": "", "isInstanceSelected": True, "reservationPeriodS": 3600, "user": "", "binaryDirectory": "/usr/bin" } redirect_enabled (bool) -- boolean to specify if redirect restore is enabled default: False redirect_path (str) -- Path specified in advanced restore options in order to perform redirect restore default: None browse_jobid (int) -- Browse jobid to browse and restore from default: None Returns: object - instance of the Job class for this restore job Raises: SDKException: if paths is not a list if failed to initialize job if response is empty if response is not success """ if not (isinstance(path, list) and isinstance(overwrite, bool)): raise SDKException('Instance', '101') if path == []: raise SDKException('Instance', '104') if dest_client_name is None: dest_client_name = self._agent_object._client_object.client_name if dest_instance_name is None: dest_instance_name = self.instance_name request_json = self._restore_json( paths=path, staging=staging, dest_client_name=dest_client_name, dest_instance_name=dest_instance_name, data_restore=data_restore, log_restore=log_restore, overwrite=overwrite, copy_precedence=copy_precedence, from_time=from_time, to_time=to_time, media_agent=media_agent, table_level_restore=table_level_restore, clone_env=clone_env, clone_options=clone_options, redirect_enabled=redirect_enabled, redirect_path=redirect_path, browse_jobid=browse_jobid) return self._process_restore_response(request_json)
def restore_out_of_place(self, path=None, staging=None, dest_client_name=None, dest_instance_name=None, data_restore=True, log_restore=False, overwrite=True, copy_precedence=None, from_time=None, to_time=None, media_agent=None, table_level_restore=False, clone_env=False, clone_options=None, redirect_enabled=False, redirect_path=None, browse_jobid=None, recurringRestore=False)
-
Method to perform out of place restore of MySQL data/log/recurring files to the destination client location.
Args: path (list) -- list of database/databases to be restored staging (str) -- staging location for mysql logs during restores dest_client_name (str) -- destination client name where files are to be restored dest_instance_name (str) -- destination mysql instance name of destination client data_restore (bool) -- for data only/data+log restore log_restore (bool) -- for log only/data+log restore overwrite (bool) -- unconditional overwrite files during restore copy_precedence (int) -- copy precedence value of storage policy copy from_time (str) -- time to restore the contents after format: YYYY-MM-DD HH:MM:SS to_time (str) -- time to restore the contents before format: YYYY-MM-DD HH:MM:SS media_agent (str) -- media agent associated table_level_restore (bool) -- Table level restore flag clone_env (bool) -- boolean to specify whether the database should be cloned or not clone_options (dict) -- clone restore options passed in a dict redirect_enabled (bool) -- boolean to specify if redirect restore is enabled redirect_path (str) -- Path specified in advanced restore options in order to perform redirect restore browse_jobid (int) -- Browse jobid to browse and restore from recurringRestore (bool) -- for Recurring restore Returns: object - instance of the Job class for this restore job Raises: SDKException: if paths is not a list if failed to initialize job if destination client name is empty if destination Instance name empty if response is empty if response is not success
Expand source code Browse git
def restore_out_of_place( self, path=None, staging=None, dest_client_name=None, dest_instance_name=None, data_restore=True, log_restore=False, overwrite=True, copy_precedence=None, from_time=None, to_time=None, media_agent=None, table_level_restore=False, clone_env=False, clone_options=None, redirect_enabled=False, redirect_path=None, browse_jobid=None, recurringRestore=False): """ Method to perform out of place restore of MySQL data/log/recurring files to the destination client location. Args: path (list) -- list of database/databases to be restored staging (str) -- staging location for mysql logs during restores dest_client_name (str) -- destination client name where files are to be restored dest_instance_name (str) -- destination mysql instance name of destination client data_restore (bool) -- for data only/data+log restore log_restore (bool) -- for log only/data+log restore overwrite (bool) -- unconditional overwrite files during restore copy_precedence (int) -- copy precedence value of storage policy copy from_time (str) -- time to restore the contents after format: YYYY-MM-DD HH:MM:SS to_time (str) -- time to restore the contents before format: YYYY-MM-DD HH:MM:SS media_agent (str) -- media agent associated table_level_restore (bool) -- Table level restore flag clone_env (bool) -- boolean to specify whether the database should be cloned or not clone_options (dict) -- clone restore options passed in a dict redirect_enabled (bool) -- boolean to specify if redirect restore is enabled redirect_path (str) -- Path specified in advanced restore options in order to perform redirect restore browse_jobid (int) -- Browse jobid to browse and restore from recurringRestore (bool) -- for Recurring restore Returns: object - instance of the Job class for this restore job Raises: SDKException: if paths is not a list if failed to initialize job if destination client name is empty if destination Instance name empty if response is empty if response is not success """ if not (isinstance(path, list) and isinstance(overwrite, bool)): raise SDKException('Instance', '101') if path == []: raise SDKException('Instance', '104') if dest_client_name is None: raise SDKException('Client', '102', "The destination client name is missing. " "Please provide a valid destination client name to proceed") if dest_instance_name is None: raise SDKException('Instance', '102', "The destination Instance name is missing. " "Please provide a valid destination Instance name to proceed") request_json = self._restore_json( paths=path, staging=staging, dest_client_name=dest_client_name, dest_instance_name=dest_instance_name, data_restore=data_restore, log_restore=log_restore, overwrite=overwrite, copy_precedence=copy_precedence, from_time=from_time, to_time=to_time, media_agent=media_agent, table_level_restore=table_level_restore, clone_env=clone_env, clone_options=clone_options, redirect_enabled=redirect_enabled, redirect_path=redirect_path, browse_jobid=browse_jobid, recurringRestore=recurringRestore) return self._process_restore_response(request_json)
Inherited members