Module cvpysdk.regions

File for associating Workload and Backup destination regions for various entites class: Regions. Region

Regions:

_get_regions()                  --  Gets all the regions created in commcell
refresh()                       --  Refresh the list of Regions associated to commcell
has_region()                    --  Checks if region with given name exists
get()                           --  returns Region class object for the specified input name
set_region()                    --  Associate a region to an entity
get_region()                    --  Gets the Region associated to an Entity
calculate_region()              --  Calculates the Region to be associated to an Entity

Attributes

all_regions – returns dict of details about region such as id Region: ======= _get_region_id() – Returns the region id

Attributes

region_id – Id of the given Region

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 associating Workload and Backup destination regions for various entites
class: Regions. Region

Regions:
========
    _get_regions()                  --  Gets all the regions created in commcell
    refresh()                       --  Refresh the list of Regions associated to commcell
    has_region()                    --  Checks if region with given name exists
    get()                           --  returns Region class object for the specified input name
    set_region()                    --  Associate a region to an entity
    get_region()                    --  Gets the Region associated to an Entity
    calculate_region()              --  Calculates the Region to be associated to an Entity

Attributes:

    ***all_regions***               --  returns dict of details about region such as id

Region:
=======
    _get_region_id()                --  Returns the region id

Attributes:
    ***region_id***                 --  Id of the given Region

"""
from .exception import SDKException


class Regions:
    """
    Class for representing all the Regions created in the commcell
    """
    def __init__(self, commcell_object):
        """Initialises the object of Regions class"""
        self._commcell_object = commcell_object
        self._cvpysdk_object = commcell_object._cvpysdk_object
        self._regions_api = self._commcell_object._services['REGIONS']
        self._EDIT_REGION = self._commcell_object._services['EDIT_REGION']
        self._GET_REGION = self._commcell_object._services['GET_REGION']
        self._CALCULATE_REGION = self._commcell_object._services['CALCULATE_REGION']
        self._regions = {}
        self.refresh()

    def _get_regions(self):
        """Gets all the regions created in commcell"""
        flag, response = self._cvpysdk_object.make_request('GET', self._regions_api)
        if flag:
            if response.json() and 'regions' in response.json():
                for region in response.json()['regions']:
                    name = region['name']
                    id = region['id']
                    self._regions[name] = id

                return self._regions

            raise SDKException('Response', '102')

        response_string = self._update_response_(response.text)
        raise SDKException('Response', '101', response_string)

    def refresh(self):
        """Refresh the list of Regions associated to commcell"""
        self._regions = self._get_regions()

    def has_region(self, name):
        """Checks if the given Region exists in the Commcell.

            Args:
                name    (str)   --  name of the Region

            Returns:
                bool    -   boolean output whether the Region exists in the commcell or not

            Raises:
                SDKException:
                    if type of the Region name argument is not string

        """
        if not isinstance(name, str):
            raise SDKException('Region', '103')

        return self._regions and (name in self._regions)

    def get(self, name):
        """
        Returns the instance of Region class for the given Region name
        Args:
            name    (str)   --  name of the Region

        Returns:
            object  -- Instance of Region class for the given Region name

        Raises:
            SDKException:
                - If the Region name argument is not a string

                - If No Region found in commcell with the given region name
        """
        if not isinstance(name, str):
            raise SDKException('Region', '102',"Invalid input received")

        if self.has_region(name):
            return Region(self._commcell_object, name, self._regions[name])
        raise SDKException('Region', '103',"Region not present in commcell")

    def set_region(self, entity_type, entity_id, entity_region_type, region_id):
        """
        Associate a region to an entity
        Args:
            entity_type         (str)   :   Type of the entity
                                            (eg:    COMMCELL,
                                                    COMPANY,
                                                    CLIENT,
                                                    CLIENT_GROUP,
                                                    MEDIAAGENT,
                                                    STORAGE_POOL, etc
                                            )
            entity_id           (int/str):   unique id of the entity

            entity_region_type  (str)   :   Type of the region
                                            (WORKLOAD or BACKUP)

            region_id           (int)   :   ID of the region from app_regions
        """
        if isinstance(region_id,str):
            region_id = int(region_id)
        request = {
            "entityRegionType": entity_region_type,
            "region":
                {
                    "id": region_id
                }
        }

        flag, response = self._commcell_object._cvpysdk_object.make_request(
            'PUT', self._EDIT_REGION % (entity_type, entity_id), request
        )

        if flag:
            if response.json():
                error_code = response.json()['errorCode']

                if error_code != 0:
                    if error_code == 50000:
                        raise SDKException('Regions', '101')
                    elif error_code == 547:
                        raise SDKException('Regions', '102', 'Invalid regionID provided in request')
                    else:
                        error_string = response.json()['errorMessage']
                        raise SDKException('Regions', '102', '{0}'.format(error_string))

            else:
                raise SDKException('Response', '102')
        else:
            response_string = self._commcell_object._update_response_(response.text)
            raise SDKException('Response', '101', response_string)

    def get_region(self, entity_type, entity_id, entity_region_type):
        """
        Gets the Region associated to an Entity
        Args:
            entity_type         (str)   :   Type of the entity
                                            (eg:    COMMCELL,
                                                    COMPANY,


                                                    CLIENT,
                                                    CLIENT_GROUP,
                                                    MEDIAAGENT,
                                                    STORAGE_POOL, etc
                                            )
            entity_id           (int)   :   unique id of the entity

            entity_region_type  (str)   :   Type of the region
                                            (WORKLOAD or BACKUP)
        """
        flag, response = self._commcell_object._cvpysdk_object.make_request(
            'GET', self._GET_REGION % (entity_type, entity_id, entity_region_type)
        )

        if flag:
            if response.json():
                try:
                    if response.json()['errorCode']:
                        error_string = response.json()['errorMessage']
                        raise SDKException('Regions', '102', '{0}'.format(error_string))

                except:
                    if response.json().get('regionId'):
                        return response.json().get('regionId')
                    return 0

            else:
                return None
        else:
            response_string = self._commcell_object._update_response_(response.text)
            raise SDKException('Response', '101', response_string)

    def calculate_region(self, entity_type, entity_id, entity_region_type):
        """
                Calculates the Region to be associated to an Entity
                Args:
                    entity_type         (str)   :   Type of the entity
                                                    (eg:    COMMCELL,
                                                            COMPANY,
                                                            CLIENT,
                                                            CLIENT_GROUP,
                                                            MEDIAAGENT,
                                                            STORAGE_POOL, etc
                                                    )
                    entity_id           (int)   :   unique id of the entity

                    entity_region_type  (str)   :   Type of the region
                                                    (WORKLOAD or BACKUP)
                """
        flag, response = self._commcell_object._cvpysdk_object.make_request(
            'GET', self._CALCULATE_REGION % (entity_type, entity_id, entity_region_type)
        )

        if flag:
            if response.json():
                try:
                    if response.json()['errorCode']:
                        error_string = response.json()['errorMessage']
                        raise SDKException('Regions', '102', '{0}'.format(error_string))

                except:
                    return response.json()['regionId']

            else:
                raise SDKException('Response', '102')
        else:
            response_string = self._commcell_object._update_response_(response.text)
            raise SDKException('Response', '101', response_string)

    @property
    def all_regions(self):
        """Returns dict consisting of all regions details such as id"""
        return self._regions



class Region:
    """ Class for performing operations on a given Region """
    def __init__(self, commcell_object, region_name, region_id=None):
        """ Initialise the Region class instance.
            Args:
                commcell_object     (object)    --  instance of the Commcell class

                region_name         (str)       --  name of the region

                region_id           (int)       --  ID of the REgion
                                                    Default : None

            Returns:
                object  -   instance of the Region class
        """
        self._commcell_object = commcell_object
        self._region_name = region_name
        self._cvpysdk_object = commcell_object._cvpysdk_object
        self._update_response_ = commcell_object._update_response_

        self._region_name = region_name

        if region_id:
            self._region_id = str(region_id)
        else:
            self._region_id = self._get_region_id()

    def _get_region_id(self):
        """ Returns the ID of the Region """
        regions = Regions(self._commcell_object)
        id = regions.get(self._region_name).region_id

    @property
    def region_id(self):
        """ Get Region ID """
        return self._region_id

Classes

class Region (commcell_object, region_name, region_id=None)

Class for performing operations on a given Region

Initialise the Region class instance.

Args

commcell_object (object) – instance of the Commcell class

region_name (str) – name of the region

region_id (int) – ID of the REgion Default : None

Returns

object - instance of the Region class

Expand source code Browse git
class Region:
    """ Class for performing operations on a given Region """
    def __init__(self, commcell_object, region_name, region_id=None):
        """ Initialise the Region class instance.
            Args:
                commcell_object     (object)    --  instance of the Commcell class

                region_name         (str)       --  name of the region

                region_id           (int)       --  ID of the REgion
                                                    Default : None

            Returns:
                object  -   instance of the Region class
        """
        self._commcell_object = commcell_object
        self._region_name = region_name
        self._cvpysdk_object = commcell_object._cvpysdk_object
        self._update_response_ = commcell_object._update_response_

        self._region_name = region_name

        if region_id:
            self._region_id = str(region_id)
        else:
            self._region_id = self._get_region_id()

    def _get_region_id(self):
        """ Returns the ID of the Region """
        regions = Regions(self._commcell_object)
        id = regions.get(self._region_name).region_id

    @property
    def region_id(self):
        """ Get Region ID """
        return self._region_id

Instance variables

var region_id

Get Region ID

Expand source code Browse git
@property
def region_id(self):
    """ Get Region ID """
    return self._region_id
class Regions (commcell_object)

Class for representing all the Regions created in the commcell

Initialises the object of Regions class

Expand source code Browse git
class Regions:
    """
    Class for representing all the Regions created in the commcell
    """
    def __init__(self, commcell_object):
        """Initialises the object of Regions class"""
        self._commcell_object = commcell_object
        self._cvpysdk_object = commcell_object._cvpysdk_object
        self._regions_api = self._commcell_object._services['REGIONS']
        self._EDIT_REGION = self._commcell_object._services['EDIT_REGION']
        self._GET_REGION = self._commcell_object._services['GET_REGION']
        self._CALCULATE_REGION = self._commcell_object._services['CALCULATE_REGION']
        self._regions = {}
        self.refresh()

    def _get_regions(self):
        """Gets all the regions created in commcell"""
        flag, response = self._cvpysdk_object.make_request('GET', self._regions_api)
        if flag:
            if response.json() and 'regions' in response.json():
                for region in response.json()['regions']:
                    name = region['name']
                    id = region['id']
                    self._regions[name] = id

                return self._regions

            raise SDKException('Response', '102')

        response_string = self._update_response_(response.text)
        raise SDKException('Response', '101', response_string)

    def refresh(self):
        """Refresh the list of Regions associated to commcell"""
        self._regions = self._get_regions()

    def has_region(self, name):
        """Checks if the given Region exists in the Commcell.

            Args:
                name    (str)   --  name of the Region

            Returns:
                bool    -   boolean output whether the Region exists in the commcell or not

            Raises:
                SDKException:
                    if type of the Region name argument is not string

        """
        if not isinstance(name, str):
            raise SDKException('Region', '103')

        return self._regions and (name in self._regions)

    def get(self, name):
        """
        Returns the instance of Region class for the given Region name
        Args:
            name    (str)   --  name of the Region

        Returns:
            object  -- Instance of Region class for the given Region name

        Raises:
            SDKException:
                - If the Region name argument is not a string

                - If No Region found in commcell with the given region name
        """
        if not isinstance(name, str):
            raise SDKException('Region', '102',"Invalid input received")

        if self.has_region(name):
            return Region(self._commcell_object, name, self._regions[name])
        raise SDKException('Region', '103',"Region not present in commcell")

    def set_region(self, entity_type, entity_id, entity_region_type, region_id):
        """
        Associate a region to an entity
        Args:
            entity_type         (str)   :   Type of the entity
                                            (eg:    COMMCELL,
                                                    COMPANY,
                                                    CLIENT,
                                                    CLIENT_GROUP,
                                                    MEDIAAGENT,
                                                    STORAGE_POOL, etc
                                            )
            entity_id           (int/str):   unique id of the entity

            entity_region_type  (str)   :   Type of the region
                                            (WORKLOAD or BACKUP)

            region_id           (int)   :   ID of the region from app_regions
        """
        if isinstance(region_id,str):
            region_id = int(region_id)
        request = {
            "entityRegionType": entity_region_type,
            "region":
                {
                    "id": region_id
                }
        }

        flag, response = self._commcell_object._cvpysdk_object.make_request(
            'PUT', self._EDIT_REGION % (entity_type, entity_id), request
        )

        if flag:
            if response.json():
                error_code = response.json()['errorCode']

                if error_code != 0:
                    if error_code == 50000:
                        raise SDKException('Regions', '101')
                    elif error_code == 547:
                        raise SDKException('Regions', '102', 'Invalid regionID provided in request')
                    else:
                        error_string = response.json()['errorMessage']
                        raise SDKException('Regions', '102', '{0}'.format(error_string))

            else:
                raise SDKException('Response', '102')
        else:
            response_string = self._commcell_object._update_response_(response.text)
            raise SDKException('Response', '101', response_string)

    def get_region(self, entity_type, entity_id, entity_region_type):
        """
        Gets the Region associated to an Entity
        Args:
            entity_type         (str)   :   Type of the entity
                                            (eg:    COMMCELL,
                                                    COMPANY,


                                                    CLIENT,
                                                    CLIENT_GROUP,
                                                    MEDIAAGENT,
                                                    STORAGE_POOL, etc
                                            )
            entity_id           (int)   :   unique id of the entity

            entity_region_type  (str)   :   Type of the region
                                            (WORKLOAD or BACKUP)
        """
        flag, response = self._commcell_object._cvpysdk_object.make_request(
            'GET', self._GET_REGION % (entity_type, entity_id, entity_region_type)
        )

        if flag:
            if response.json():
                try:
                    if response.json()['errorCode']:
                        error_string = response.json()['errorMessage']
                        raise SDKException('Regions', '102', '{0}'.format(error_string))

                except:
                    if response.json().get('regionId'):
                        return response.json().get('regionId')
                    return 0

            else:
                return None
        else:
            response_string = self._commcell_object._update_response_(response.text)
            raise SDKException('Response', '101', response_string)

    def calculate_region(self, entity_type, entity_id, entity_region_type):
        """
                Calculates the Region to be associated to an Entity
                Args:
                    entity_type         (str)   :   Type of the entity
                                                    (eg:    COMMCELL,
                                                            COMPANY,
                                                            CLIENT,
                                                            CLIENT_GROUP,
                                                            MEDIAAGENT,
                                                            STORAGE_POOL, etc
                                                    )
                    entity_id           (int)   :   unique id of the entity

                    entity_region_type  (str)   :   Type of the region
                                                    (WORKLOAD or BACKUP)
                """
        flag, response = self._commcell_object._cvpysdk_object.make_request(
            'GET', self._CALCULATE_REGION % (entity_type, entity_id, entity_region_type)
        )

        if flag:
            if response.json():
                try:
                    if response.json()['errorCode']:
                        error_string = response.json()['errorMessage']
                        raise SDKException('Regions', '102', '{0}'.format(error_string))

                except:
                    return response.json()['regionId']

            else:
                raise SDKException('Response', '102')
        else:
            response_string = self._commcell_object._update_response_(response.text)
            raise SDKException('Response', '101', response_string)

    @property
    def all_regions(self):
        """Returns dict consisting of all regions details such as id"""
        return self._regions

Instance variables

var all_regions

Returns dict consisting of all regions details such as id

Expand source code Browse git
@property
def all_regions(self):
    """Returns dict consisting of all regions details such as id"""
    return self._regions

Methods

def calculate_region(self, entity_type, entity_id, entity_region_type)

Calculates the Region to be associated to an Entity

Args

entity_type (str) : Type of the entity (eg: COMMCELL, COMPANY, CLIENT, CLIENT_GROUP, MEDIAAGENT, STORAGE_POOL, etc ) entity_id (int) : unique id of the entity

entity_region_type (str) : Type of the region (WORKLOAD or BACKUP)

Expand source code Browse git
def calculate_region(self, entity_type, entity_id, entity_region_type):
    """
            Calculates the Region to be associated to an Entity
            Args:
                entity_type         (str)   :   Type of the entity
                                                (eg:    COMMCELL,
                                                        COMPANY,
                                                        CLIENT,
                                                        CLIENT_GROUP,
                                                        MEDIAAGENT,
                                                        STORAGE_POOL, etc
                                                )
                entity_id           (int)   :   unique id of the entity

                entity_region_type  (str)   :   Type of the region
                                                (WORKLOAD or BACKUP)
            """
    flag, response = self._commcell_object._cvpysdk_object.make_request(
        'GET', self._CALCULATE_REGION % (entity_type, entity_id, entity_region_type)
    )

    if flag:
        if response.json():
            try:
                if response.json()['errorCode']:
                    error_string = response.json()['errorMessage']
                    raise SDKException('Regions', '102', '{0}'.format(error_string))

            except:
                return response.json()['regionId']

        else:
            raise SDKException('Response', '102')
    else:
        response_string = self._commcell_object._update_response_(response.text)
        raise SDKException('Response', '101', response_string)
def get(self, name)

Returns the instance of Region class for the given Region name

Args

name (str) – name of the Region

Returns

object – Instance of Region class for the given Region name

Raises

SDKException: - If the Region name argument is not a string

- If No Region found in commcell with the given region name
Expand source code Browse git
def get(self, name):
    """
    Returns the instance of Region class for the given Region name
    Args:
        name    (str)   --  name of the Region

    Returns:
        object  -- Instance of Region class for the given Region name

    Raises:
        SDKException:
            - If the Region name argument is not a string

            - If No Region found in commcell with the given region name
    """
    if not isinstance(name, str):
        raise SDKException('Region', '102',"Invalid input received")

    if self.has_region(name):
        return Region(self._commcell_object, name, self._regions[name])
    raise SDKException('Region', '103',"Region not present in commcell")
def get_region(self, entity_type, entity_id, entity_region_type)

Gets the Region associated to an Entity

Args

entity_type (str) : Type of the entity (eg: COMMCELL, COMPANY,

                                    CLIENT,
                                    CLIENT_GROUP,
                                    MEDIAAGENT,
                                    STORAGE_POOL, etc
                            )

entity_id (int) : unique id of the entity

entity_region_type (str) : Type of the region (WORKLOAD or BACKUP)

Expand source code Browse git
def get_region(self, entity_type, entity_id, entity_region_type):
    """
    Gets the Region associated to an Entity
    Args:
        entity_type         (str)   :   Type of the entity
                                        (eg:    COMMCELL,
                                                COMPANY,


                                                CLIENT,
                                                CLIENT_GROUP,
                                                MEDIAAGENT,
                                                STORAGE_POOL, etc
                                        )
        entity_id           (int)   :   unique id of the entity

        entity_region_type  (str)   :   Type of the region
                                        (WORKLOAD or BACKUP)
    """
    flag, response = self._commcell_object._cvpysdk_object.make_request(
        'GET', self._GET_REGION % (entity_type, entity_id, entity_region_type)
    )

    if flag:
        if response.json():
            try:
                if response.json()['errorCode']:
                    error_string = response.json()['errorMessage']
                    raise SDKException('Regions', '102', '{0}'.format(error_string))

            except:
                if response.json().get('regionId'):
                    return response.json().get('regionId')
                return 0

        else:
            return None
    else:
        response_string = self._commcell_object._update_response_(response.text)
        raise SDKException('Response', '101', response_string)
def has_region(self, name)

Checks if the given Region exists in the Commcell.

Args

name (str) – name of the Region

Returns

bool - boolean output whether the Region exists in the commcell or not

Raises

SDKException: if type of the Region name argument is not string

Expand source code Browse git
def has_region(self, name):
    """Checks if the given Region exists in the Commcell.

        Args:
            name    (str)   --  name of the Region

        Returns:
            bool    -   boolean output whether the Region exists in the commcell or not

        Raises:
            SDKException:
                if type of the Region name argument is not string

    """
    if not isinstance(name, str):
        raise SDKException('Region', '103')

    return self._regions and (name in self._regions)
def refresh(self)

Refresh the list of Regions associated to commcell

Expand source code Browse git
def refresh(self):
    """Refresh the list of Regions associated to commcell"""
    self._regions = self._get_regions()
def set_region(self, entity_type, entity_id, entity_region_type, region_id)

Associate a region to an entity

Args

entity_type (str) : Type of the entity (eg: COMMCELL, COMPANY, CLIENT, CLIENT_GROUP, MEDIAAGENT, STORAGE_POOL, etc ) entity_id (int/str): unique id of the entity

entity_region_type (str) : Type of the region (WORKLOAD or BACKUP)

region_id (int) : ID of the region from app_regions

Expand source code Browse git
def set_region(self, entity_type, entity_id, entity_region_type, region_id):
    """
    Associate a region to an entity
    Args:
        entity_type         (str)   :   Type of the entity
                                        (eg:    COMMCELL,
                                                COMPANY,
                                                CLIENT,
                                                CLIENT_GROUP,
                                                MEDIAAGENT,
                                                STORAGE_POOL, etc
                                        )
        entity_id           (int/str):   unique id of the entity

        entity_region_type  (str)   :   Type of the region
                                        (WORKLOAD or BACKUP)

        region_id           (int)   :   ID of the region from app_regions
    """
    if isinstance(region_id,str):
        region_id = int(region_id)
    request = {
        "entityRegionType": entity_region_type,
        "region":
            {
                "id": region_id
            }
    }

    flag, response = self._commcell_object._cvpysdk_object.make_request(
        'PUT', self._EDIT_REGION % (entity_type, entity_id), request
    )

    if flag:
        if response.json():
            error_code = response.json()['errorCode']

            if error_code != 0:
                if error_code == 50000:
                    raise SDKException('Regions', '101')
                elif error_code == 547:
                    raise SDKException('Regions', '102', 'Invalid regionID provided in request')
                else:
                    error_string = response.json()['errorMessage']
                    raise SDKException('Regions', '102', '{0}'.format(error_string))

        else:
            raise SDKException('Response', '102')
    else:
        response_string = self._commcell_object._update_response_(response.text)
        raise SDKException('Response', '101', response_string)