Module cvpysdk.instances.cloudapps.cloud_database_instance

File for operating on a cloud database instance.

CloudDatabaseInstance is the only class defined in this file.

CloudDatabaseInstance: Derived class from CloudAppsInstance Base class, representing a Cloud Database instance( Amazon RDS,Redshift,DocumentDB and DynamoDB), and to perform operations on that instance

Clouddatabaseinstance

init() – Initializes cloud database instance object with associated agent_object, instance name and instance id

_get_instance_properties() – Retrieves cloud database related instance properties

_browse_request_json() – Retrieves and sets browse request json based on browse options

_process_browse_response() – Process the response received from browse request

browse() – Browse and returns the contents of this instance backup

restore() – Submits a restore request based on restore options

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 cloud database instance.

CloudDatabaseInstance is the only class defined in this file.

CloudDatabaseInstance:   Derived class from CloudAppsInstance Base class, representing a
                        Cloud Database instance( Amazon RDS,Redshift,DocumentDB and DynamoDB), and to
                        perform operations on that instance

CloudDatabaseInstance:

    __init__()                      --  Initializes cloud database instance object with associated
    agent_object, instance name and instance id

    _get_instance_properties()      --  Retrieves cloud database related instance properties

    _browse_request_json()          --  Retrieves and sets browse request json based on browse options

    _process_browse_response()      --  Process the response received from browse request

    browse()                        --  Browse and returns the contents of this instance backup

    restore()                       -- Submits a restore request based on restore options

"""

from __future__ import unicode_literals
import time
from ..cainstance import CloudAppsInstance
from ...exception import SDKException


class CloudDatabaseInstance(CloudAppsInstance):
    """
    Class for representing an Instance of the Cloud Database such as
    Amazon RDS/Redshift/DocumentDB/DynamoDB/Cloud Spanner

    """

    def __init__(self, agent_object, instance_name, instance_id=None):
        """Initializes the object of the CloudDatabaseInstance class

            Args:
                agent_object    (object)  --  instance of the Agent class

                instance_name   (str)     --  name of the instance

                instance_id     (str)     --  id of the instance
                    default: None

            Returns:
                object - instance of the Instance class

        """

        self._ca_instance_type = None
        self._browse_request = {}
        self._browse_url = None

        super(
            CloudDatabaseInstance,
            self).__init__(
                agent_object,
                instance_name,
                instance_id)

    def _get_instance_properties(self):
        """Gets the properties of this instance"""
        super(CloudDatabaseInstance, self)._get_instance_properties()
        if 'cloudAppsInstance' in self._properties:
            cloud_apps_instance = self._properties['cloudAppsInstance']
            self._ca_instance_type = cloud_apps_instance['instanceType']

    @property
    def ca_instance_type(self):
        """Returns the CloudApps instance type as a read-only attribute."""
        return self._ca_instance_type

    @property
    def _browse_request_json(self):
        """Returns the CloudApps instance browse request json"""
        return self._browse_request

    @_browse_request_json.setter
    def _browse_request_json(self, value):
        """ Creates CloudApps instance browse request json based on the options

            Args: Dictionary of browse options

                Example:
                    {
                        'start_time': 0,
                        'end_time': 1570808875,
                        'include_aged_data': 0,
                        'copy_precedence': 0,
                    }

        """
        start_time = value.get('start_time', 0)
        end_time = value.get('end_time', int(time.time()))
        include_aged_data = value.get('include_aged_data', 0)
        copy_precedence = value.get('copy_precedence', 0)
        self._browse_request = {
            "entity": {
                "instanceId": int(self.instance_id)
            },
            "copyPresedence": copy_precedence,
            "includeAgedData": include_aged_data,
            "startTime": start_time,
            "endTime": end_time
        }

    def _process_browse_response(self, flag, response):
        """ Process browse request response

            Args:

                flag -- indicates whether the rest API request is successful

                response -- response returned if the request was successful.

            Returns:

                dict    - The JSON response received from the browse request

                Exception - If the browse request failed

        """
        if flag:
            return response.json()

        o_str = 'Failed to browse content of this instance backups.\nError: "{0}"'
        raise SDKException('Subclient', '102', o_str.format(response))

    def browse(self, *args, **kwargs):
        """
            Browses the content of cloud database instance

            args: Dictionary of browse options

                Example:

                        {
                            'start_time': 0,
                            'end_time': 1570808875,
                            'include_aged_data': 0,
                            'copy_precedence': 0,
                        }

            kwargs: keyword argument of browse options

                Example:

                        {
                            start_time: 0,
                            end_time: 1570808875,
                            include_aged_data: 0,
                            copy_precedence: 0,
                        }

            Returns:
                dict - Browse response json

        """

        if args and isinstance(args[0], dict):
            options = args[0]
        else:
            options = kwargs

        self._browse_request_json = options
        flag, response = self._cvpysdk_object.make_request('POST', self._browse_url, self._browse_request)
        return self._process_browse_response(flag, response)

    def restore(self,
                destination,
                source,
                options):
        """
            Restores the content of this instance content

            Args:

                destination : Destination cluster name we want to restore to.

                source   : Source snapshot we want to restore from.

                options  : Restore options needed to submit a restore request.

                    Example:    Restore of amazon redshift instance cluster from snapshot
                        {
                            destination : 'cluster',
                            source : 'snapshot',
                            options :   {
                                            'allowVersionUpgrade' : true,
                                            'publicallyAccessible' : true,
                                            'restoreTags' : false,
                                            'enableDeletionProtection': false,
                                            'availabilityZone': 'us-east-2a',
                                            'targetParameterGroup': 'param',
                                            'targetSubnetGroup': 'subnet',
                                            'nodeType': 'dc-large-8',
                                            'targetPort': 2990,
                                            'numberOfNodes': 1
                                        }
                        }

            Returns:

                object - instance of the Job class for this restore job
        """
        if not (isinstance(source, str) or
                isinstance(destination, str) or
                isinstance(options, dict)):
            raise SDKException('Instance', '101')
        request_json = self._restore_json(destination=destination, source=source, options=options)
        return self._process_restore_response(request_json)

Classes

class CloudDatabaseInstance (agent_object, instance_name, instance_id=None)

Class for representing an Instance of the Cloud Database such as Amazon RDS/Redshift/DocumentDB/DynamoDB/Cloud Spanner

Initializes the object of the CloudDatabaseInstance class

Args

agent_object (object) – instance of the Agent class

instance_name (str) – name of the instance

instance_id (str) – id of the instance default: None

Returns

object - instance of the Instance class

Expand source code Browse git
class CloudDatabaseInstance(CloudAppsInstance):
    """
    Class for representing an Instance of the Cloud Database such as
    Amazon RDS/Redshift/DocumentDB/DynamoDB/Cloud Spanner

    """

    def __init__(self, agent_object, instance_name, instance_id=None):
        """Initializes the object of the CloudDatabaseInstance class

            Args:
                agent_object    (object)  --  instance of the Agent class

                instance_name   (str)     --  name of the instance

                instance_id     (str)     --  id of the instance
                    default: None

            Returns:
                object - instance of the Instance class

        """

        self._ca_instance_type = None
        self._browse_request = {}
        self._browse_url = None

        super(
            CloudDatabaseInstance,
            self).__init__(
                agent_object,
                instance_name,
                instance_id)

    def _get_instance_properties(self):
        """Gets the properties of this instance"""
        super(CloudDatabaseInstance, self)._get_instance_properties()
        if 'cloudAppsInstance' in self._properties:
            cloud_apps_instance = self._properties['cloudAppsInstance']
            self._ca_instance_type = cloud_apps_instance['instanceType']

    @property
    def ca_instance_type(self):
        """Returns the CloudApps instance type as a read-only attribute."""
        return self._ca_instance_type

    @property
    def _browse_request_json(self):
        """Returns the CloudApps instance browse request json"""
        return self._browse_request

    @_browse_request_json.setter
    def _browse_request_json(self, value):
        """ Creates CloudApps instance browse request json based on the options

            Args: Dictionary of browse options

                Example:
                    {
                        'start_time': 0,
                        'end_time': 1570808875,
                        'include_aged_data': 0,
                        'copy_precedence': 0,
                    }

        """
        start_time = value.get('start_time', 0)
        end_time = value.get('end_time', int(time.time()))
        include_aged_data = value.get('include_aged_data', 0)
        copy_precedence = value.get('copy_precedence', 0)
        self._browse_request = {
            "entity": {
                "instanceId": int(self.instance_id)
            },
            "copyPresedence": copy_precedence,
            "includeAgedData": include_aged_data,
            "startTime": start_time,
            "endTime": end_time
        }

    def _process_browse_response(self, flag, response):
        """ Process browse request response

            Args:

                flag -- indicates whether the rest API request is successful

                response -- response returned if the request was successful.

            Returns:

                dict    - The JSON response received from the browse request

                Exception - If the browse request failed

        """
        if flag:
            return response.json()

        o_str = 'Failed to browse content of this instance backups.\nError: "{0}"'
        raise SDKException('Subclient', '102', o_str.format(response))

    def browse(self, *args, **kwargs):
        """
            Browses the content of cloud database instance

            args: Dictionary of browse options

                Example:

                        {
                            'start_time': 0,
                            'end_time': 1570808875,
                            'include_aged_data': 0,
                            'copy_precedence': 0,
                        }

            kwargs: keyword argument of browse options

                Example:

                        {
                            start_time: 0,
                            end_time: 1570808875,
                            include_aged_data: 0,
                            copy_precedence: 0,
                        }

            Returns:
                dict - Browse response json

        """

        if args and isinstance(args[0], dict):
            options = args[0]
        else:
            options = kwargs

        self._browse_request_json = options
        flag, response = self._cvpysdk_object.make_request('POST', self._browse_url, self._browse_request)
        return self._process_browse_response(flag, response)

    def restore(self,
                destination,
                source,
                options):
        """
            Restores the content of this instance content

            Args:

                destination : Destination cluster name we want to restore to.

                source   : Source snapshot we want to restore from.

                options  : Restore options needed to submit a restore request.

                    Example:    Restore of amazon redshift instance cluster from snapshot
                        {
                            destination : 'cluster',
                            source : 'snapshot',
                            options :   {
                                            'allowVersionUpgrade' : true,
                                            'publicallyAccessible' : true,
                                            'restoreTags' : false,
                                            'enableDeletionProtection': false,
                                            'availabilityZone': 'us-east-2a',
                                            'targetParameterGroup': 'param',
                                            'targetSubnetGroup': 'subnet',
                                            'nodeType': 'dc-large-8',
                                            'targetPort': 2990,
                                            'numberOfNodes': 1
                                        }
                        }

            Returns:

                object - instance of the Job class for this restore job
        """
        if not (isinstance(source, str) or
                isinstance(destination, str) or
                isinstance(options, dict)):
            raise SDKException('Instance', '101')
        request_json = self._restore_json(destination=destination, source=source, options=options)
        return self._process_restore_response(request_json)

Ancestors

Subclasses

Instance variables

var ca_instance_type

Returns the CloudApps instance type as a read-only attribute.

Expand source code Browse git
@property
def ca_instance_type(self):
    """Returns the CloudApps instance type as a read-only attribute."""
    return self._ca_instance_type

Methods

def browse(self, *args, **kwargs)

Browses the content of cloud database instance

args: Dictionary of browse options

Example:

        {
            'start_time': 0,
            'end_time': 1570808875,
            'include_aged_data': 0,
            'copy_precedence': 0,
        }

kwargs: keyword argument of browse options

Example:

        {
            start_time: 0,
            end_time: 1570808875,
            include_aged_data: 0,
            copy_precedence: 0,
        }

Returns

dict - Browse response json

Expand source code Browse git
def browse(self, *args, **kwargs):
    """
        Browses the content of cloud database instance

        args: Dictionary of browse options

            Example:

                    {
                        'start_time': 0,
                        'end_time': 1570808875,
                        'include_aged_data': 0,
                        'copy_precedence': 0,
                    }

        kwargs: keyword argument of browse options

            Example:

                    {
                        start_time: 0,
                        end_time: 1570808875,
                        include_aged_data: 0,
                        copy_precedence: 0,
                    }

        Returns:
            dict - Browse response json

    """

    if args and isinstance(args[0], dict):
        options = args[0]
    else:
        options = kwargs

    self._browse_request_json = options
    flag, response = self._cvpysdk_object.make_request('POST', self._browse_url, self._browse_request)
    return self._process_browse_response(flag, response)
def restore(self, destination, source, options)

Restores the content of this instance content

Args

destination : Destination cluster name we want to restore to.

source : Source snapshot we want to restore from.

options : Restore options needed to submit a restore request.

Example:    Restore of amazon redshift instance cluster from snapshot
    {
        destination : 'cluster',
        source : 'snapshot',
        options :   {
                        'allowVersionUpgrade' : true,
                        'publicallyAccessible' : true,
                        'restoreTags' : false,
                        'enableDeletionProtection': false,
                        'availabilityZone': 'us-east-2a',
                        'targetParameterGroup': 'param',
                        'targetSubnetGroup': 'subnet',
                        'nodeType': 'dc-large-8',
                        'targetPort': 2990,
                        'numberOfNodes': 1
                    }
    }

Returns

object - instance of the Job class for this restore job

Expand source code Browse git
def restore(self,
            destination,
            source,
            options):
    """
        Restores the content of this instance content

        Args:

            destination : Destination cluster name we want to restore to.

            source   : Source snapshot we want to restore from.

            options  : Restore options needed to submit a restore request.

                Example:    Restore of amazon redshift instance cluster from snapshot
                    {
                        destination : 'cluster',
                        source : 'snapshot',
                        options :   {
                                        'allowVersionUpgrade' : true,
                                        'publicallyAccessible' : true,
                                        'restoreTags' : false,
                                        'enableDeletionProtection': false,
                                        'availabilityZone': 'us-east-2a',
                                        'targetParameterGroup': 'param',
                                        'targetSubnetGroup': 'subnet',
                                        'nodeType': 'dc-large-8',
                                        'targetPort': 2990,
                                        'numberOfNodes': 1
                                    }
                    }

        Returns:

            object - instance of the Job class for this restore job
    """
    if not (isinstance(source, str) or
            isinstance(destination, str) or
            isinstance(options, dict)):
        raise SDKException('Instance', '101')
    request_json = self._restore_json(destination=destination, source=source, options=options)
    return self._process_restore_response(request_json)

Inherited members