Module cvpysdk.activate_entity

Main file for performing operations on Activate regex Entities, and a single Activate regex Entity in the commcell.

ActivateEntities, and ActivateEntity are 2 classes defined in this file.

ActivateEntities: Class for representing all the regex entities in the commcell.

ActivateEntity: Class for representing a single regex entity in the commcell.

Activateentities

init(commcell_object) – initialise object of the ActivateEntities class

_response_not_success() – parses through the exception response, and raises SDKException

refresh() – refresh the regex entities associated with the commcell

get() – Returns an instance of ActivateEntity class for the given regex entity name

get_entity_ids() – Returns an list of entity ids for the given regex entity name list

get_entity_keys() – Returns an list of entity keys for the given regex entity name list

get_properties() – Returns the properties for the given regex entity name

_get_all_activate_entities() – Returns dict consisting all regex entities associated with commcell

_get_regex_entity_from_collections()– gets all the regex entity details from collection response

has_entity() – Checks whether given regex entity exists in commcell or not

add() – adds the regex entity in the commcell

delete() – deletes the regex entity in the commcell for given entity name

Activateentity

init( commcell_object, entity_name, entity_id=None) – initialize an object of ActivateEntity Class with the given regex entity name and id

_response_not_success() – parses through the exception response, and raises SDKException

refresh() – refresh the properties of the regex entity

_get_entity_id() – Gets entity id for the given regex entity name

_get_entity_properties() – Gets all the details of associated regex entity

modify() – Modifies the entity properties for the associated regex entity

Activateentity Attributes

**entity_id**         --  returns the id of the regex entity

**entity_key**        --  returns the key of the regex entity

**category_name**     --  returns the category name of the regex entity

**is_enabled**        --  returns the enabled flag of the regex entity

**display_name**      --  returns the display name of the regex entity

**entity_type**       --  returns the type of entity (1- NER 2-RER 3-Derived 4-Classifier)

**entity_xml**        --  returns the entity xml associated with this entity
Expand source code Browse git
# -*- coding: utf-8 -*-

# --------------------------------------------------------------------------
# Copyright Commvault Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# --------------------------------------------------------------------------

"""Main file for performing operations on Activate regex Entities, and a single Activate regex Entity in the commcell.

`ActivateEntities`, and `ActivateEntity` are 2 classes defined in this file.

ActivateEntities:   Class for representing all the regex entities in the commcell.

ActivateEntity:     Class for representing a single regex entity in the commcell.


ActivateEntities:

    __init__(commcell_object)           --  initialise object of the ActivateEntities class

     _response_not_success()            --  parses through the exception response, and raises SDKException

    refresh()                           --  refresh the regex entities associated with the commcell

    get()                               --  Returns an instance of ActivateEntity class for the given regex entity name

    get_entity_ids()                    --  Returns an list of entity ids for the given regex entity name list

    get_entity_keys()                   --  Returns an list of entity keys for the given regex entity name list

    get_properties()                    --  Returns the properties for the given regex entity name

    _get_all_activate_entities()        --  Returns dict consisting all regex entities associated with commcell

    _get_regex_entity_from_collections()--  gets all the regex entity details from collection response

    has_entity()                        --  Checks whether given regex entity exists in commcell or not

    add()                               --  adds the regex entity in the commcell

    delete()                            --  deletes the regex entity in the commcell for given entity name

ActivateEntity:

    __init__(
        commcell_object,
        entity_name,
        entity_id=None)             --  initialize an object of ActivateEntity Class with the given regex entity
                                                name and id

     _response_not_success()            --  parses through the exception response, and raises SDKException

    refresh()                           --  refresh the properties of the regex entity

    _get_entity_id()                    --  Gets entity id for the given regex entity name

    _get_entity_properties()            --  Gets all the details of associated regex entity

    modify()                            --  Modifies the entity properties for the associated regex entity


ActivateEntity Attributes
-----------------

    **entity_id**         --  returns the id of the regex entity

    **entity_key**        --  returns the key of the regex entity

    **category_name**     --  returns the category name of the regex entity

    **is_enabled**        --  returns the enabled flag of the regex entity

    **display_name**      --  returns the display name of the regex entity

    **entity_type**       --  returns the type of entity (1- NER 2-RER 3-Derived 4-Classifier)

    **entity_xml**        --  returns the entity xml associated with this entity

"""

from past.builtins import basestring
from .exception import SDKException
from .datacube.constants import ActivateEntityConstants


class ActivateEntities(object):
    """Class for representing all the regex entities in the commcell."""

    def __init__(self, commcell_object):
        """Initializes an instance of the ActivateEntities class.

            Args:
                commcell_object     (object)    --  instance of the commcell class

            Returns:
                object  -   instance of the ActivateEntities class

        """
        self._commcell_object = commcell_object
        self._update_response_ = commcell_object._update_response_
        self._cvpysdk_object = commcell_object._cvpysdk_object
        self._services = commcell_object._services
        self._regex_entities = None
        self._api_get_all_regex_entities = self._services['ACTIVATE_ENTITIES']
        self._api_create_regex_entity = self._api_get_all_regex_entities
        self._api_delete_regex_entity = self._services['ACTIVATE_ENTITY']
        self.refresh()

    def add(self, entity_name, entity_regex, entity_keywords, entity_flag, is_derived=False, parent_entity=None):
        """Adds the specified regex entity name in the commcell

                    Args:
                        entity_name (str)      --  name of the regex entity

                        entity_regex (str)     --  Regex for the entity

                        entity_keywords (str)  --  Keywords for the entity

                        entity_flag (int)      --  Sensitivity flag value for entity
                                                        5-Highly sensitive
                                                        3-Moderate sensitive
                                                        1-Low sensitive

                        is_derived (bool)      --  represents whether it is derived entity or not

                        parent_entity(int)     -- entity id of the parent entity in case of derived entity

                    Returns:
                        None

                    Raises:
                        SDKException:

                                if response is empty

                                if response is not success

                                if unable to add regex entity in commcell

                                if entity_flag is not in proper allowed values [1,3,5]

                                if input data type is not valid
                """
        if not isinstance(entity_name, basestring) or not isinstance(entity_regex, basestring) \
                or not isinstance(entity_keywords, basestring):
            raise SDKException('ActivateEntity', '101')
        if entity_flag not in [1, 3, 5]:
            raise SDKException('ActivateEntity', '102', 'Unsupported entity flag value')
        request_json = ActivateEntityConstants.REQUEST_JSON
        request_json['regularExpression'] = "{\"entity_key\":\"" + \
            entity_name + "\",\"entity_regex\":\"" + entity_regex + "\"}"
        request_json['flags'] = entity_flag
        request_json['entityName'] = entity_name
        request_json['entityXML']['keywords'] = entity_keywords
        if is_derived:
            request_json['regularExpression'] = "{\"entity_key\":\"" + entity_name + "\"}"
            request_json['entityType'] = 3
            if isinstance(parent_entity, int):
                request_json['parentEntityId'] = parent_entity
            elif isinstance(parent_entity, basestring):
                request_json['parentEntityId'] = self._regex_entities[parent_entity]['entityId']
            else:
                raise SDKException('ActivateEntity', '102', 'Unsupported parent entity id type provided')

        flag, response = self._cvpysdk_object.make_request(
            'POST', self._api_create_regex_entity, request_json
        )

        if flag:
            if response.json() and 'entityDetails' in response.json() and 'err' not in response.json():
                self.refresh()
                return
            raise SDKException('ActivateEntity', '104')
        self._response_not_success(response)

    def delete(self, entity_name):
        """deletes the specified regex entity name in the commcell

                    Args:
                        entity_name (str)      --  name of the regex entity

                    Returns:
                        None

                    Raises:
                        SDKException:

                                if response is empty

                                if response is not success

                                if unable to delete regex entity in commcell

                                if unable to find entity name in the commcell

                                if data type of entity_name is invalid


                """
        if not isinstance(entity_name, basestring):
            raise SDKException('ActivateEntity', '101')
        if entity_name not in self._regex_entities:
            raise SDKException('ActivateEntity', '102', 'Unable to find given regex entity name in the commcell')

        flag, response = self._cvpysdk_object.make_request(
            'DELETE', self._api_delete_regex_entity % self._regex_entities[entity_name]['entityId']
        )

        if flag:
            if response.json() and 'errorCode' in response.json() and response.json()['errorCode'] == 0:
                self.refresh()
                return
            raise SDKException('ActivateEntity', '105')
        self._response_not_success(response)

    def _response_not_success(self, response):
        """Helper function to raise an exception when reponse status is not 200 (OK).

            Args:
                response    (object)    --  response class object,

                received upon running an API request, using the `requests` python package

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

    def get_properties(self, entity_name):
        """Returns a properties of the specified regex entity name.

            Args:
                entity_name (str)  --  name of the regex entity

            Returns:
                dict -  properties for the given regex entity name


        """
        return self._regex_entities[entity_name]

    def _get_all_activate_entities(self):
        """Gets the list of all regex entities associated with this commcell.

            Returns:
                dict    -   dictionary consisting of dictionaries, where each dictionary stores the
                                details of a single regex entity

                    {
                        "entityDetails": [
                            {
                                "displayName": "US Social Security number",
                                "flags": 5,
                                "description": "",
                                "categoryName": "US",
                                "enabled": true,
                                "entityName": "SSN",
                                "attribute": 3,
                                "entityType": 2,
                                "entityKey": "ssn",
                                "entityId": 1111,
                                "entityXML": {
                                    "keywords": "Social Security,Social Security#,Soc Sec,SSN,SSNS,SSN#,SS#,SSID",
                                    "entityKey": "ssn",
                                    "isSystemDefinedEntity": true,
                                    "inheritBaseWords": false
                                }
                            },
                            {
                                "displayName": "Person Name",
                                "flags": 1,
                                "description": "Name of a person.",
                                "categoryName": "Generic",
                                "enabled": true,
                                "entityName": "Person",
                                "attribute": 3,
                                "entityType": 1,
                                "entityKey": "person",
                                "entityId": 1112,
                                "entityXML": {
                                    "keywords": "",
                                    "entityKey": "person",
                                    "inheritBaseWords": false
                                }
                            }
                            ]
                            }

            Raises:
                SDKException:
                    if response is empty

                    if response is not success

        """
        flag, response = self._cvpysdk_object.make_request(
            'GET', self._api_get_all_regex_entities
        )

        if flag:
            if response.json() and 'entityDetails' in response.json():
                return self._get_regex_entity_from_collections(response.json())
            raise SDKException('ActivateEntity', '103')
        self._response_not_success(response)

    @staticmethod
    def _get_regex_entity_from_collections(collections):
        """Extracts all the regex entities, and their details from the list of collections given,
            and returns the dictionary of all regex entities

            Args:
                collections     (list)  --  list of all collections

            Returns:
                dict    -   dictionary consisting of dictionaries, where each dictionary stores the
                                details of a single regex entity

        """
        _regex_entity = {}
        for regex_entity in collections['entityDetails']:
            regex_entity_dict = {}
            regex_entity_dict['displayName'] = regex_entity.get('displayName', "")
            regex_entity_dict['entityKey'] = regex_entity.get('entityKey', "")
            regex_entity_dict['categoryName'] = regex_entity.get('categoryName', "")
            regex_entity_dict['entityXML'] = regex_entity.get('entityXML', "")
            regex_entity_dict['entityId'] = regex_entity.get('entityId', 0)
            regex_entity_dict['flags'] = regex_entity.get('flags', 0)
            regex_entity_dict['entityType'] = regex_entity.get('entityType', 0)
            regex_entity_dict['enabled'] = regex_entity.get('enabled', False)
            _regex_entity[regex_entity['entityName']] = regex_entity_dict
        return _regex_entity

    def refresh(self):
        """Refresh the activate regex entities associated with the commcell."""
        self._regex_entities = self._get_all_activate_entities()

    def get(self, entity_name):
        """Returns a ActivateEntity object for the given regex entity name.

            Args:
                entity_name (str)  --  name of the regex entity

            Returns:

                obj                 -- Object of ActivateEntity class

            Raises:
                SDKException:
                    if response is empty

                    if response is not success

                    if entity_name is not of type string


        """
        if not isinstance(entity_name, basestring):
            raise SDKException('ActivateEntity', '101')

        if self.has_entity(entity_name):
            entity_id = self._regex_entities[entity_name]['entityId']
            return ActivateEntity(self._commcell_object, entity_name, entity_id)
        raise SDKException('ActivateEntity', '102', "Unable to get ActivateEntity class object")

    def get_entity_ids(self, entity_name):
        """Returns a list of entity id for the given regex entity name list.

            Args:
                entity_name (list)  --  names of the regex entity

            Returns:

                list                -- entity id's for the given entity names


        """
        if not isinstance(entity_name, list):
            raise SDKException('ActivateEntity', '101')
        entity_ids = []
        for regex_entity in entity_name:
            if regex_entity in self._regex_entities:
                entity_ids.append(self._regex_entities[regex_entity]['entityId'])
            else:
                raise SDKException(
                    'ActivateEntity', '102', f"Unable to find entity id for given entity name :{regex_entity}")
        return entity_ids

    def get_entity_keys(self, entity_name):
        """Returns a list of entity keys for the given regex entity name list.

            Args:
                entity_name (list)  --  names of the regex entity

            Returns:

                list                -- entity keys for the given entity names


        """
        if not isinstance(entity_name, list):
            raise SDKException('ActivateEntity', '101')
        entity_keys = []
        for regex_entity in entity_name:
            if regex_entity in self._regex_entities:
                entity_keys.append(self._regex_entities[regex_entity]['entityKey'])
            else:
                raise SDKException(
                    'ActivateEntity', '102', f"Unable to find entity keys for given entity name :{regex_entity}")
        return entity_keys

    def has_entity(self, entity_name):
        """Checks if a regex entity exists in the commcell with the input name.

            Args:
                entity_name (str)  --  name of the regex entity

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

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

        """
        if not isinstance(entity_name, basestring):
            raise SDKException('ActivateEntity', '101')

        return self._regex_entities and entity_name.lower() in map(str.lower, self._regex_entities)


class ActivateEntity(object):
    """Class for performing operations on a single regex entity"""

    def __init__(self, commcell_object, entity_name, entity_id=None):
        """Initialize an object of the ActivateEntity class.

            Args:
                commcell_object     (object)    --  instance of the commcell class

                entity_name     (str)           --  name of the regex entity

                entity_id       (str)           --  id of the regex entity
                    default: None

            Returns:
                object  -   instance of the ActivateEntity class
        """
        self._commcell_object = commcell_object
        self._update_response_ = commcell_object._update_response_
        self._services = commcell_object._services
        self._cvpysdk_obj = self._commcell_object._cvpysdk_object
        self._entity_name = entity_name
        self._entity_id = None
        self._display_name = None
        self._entity_type = None
        self._is_enabled = None
        self._entity_key = None
        self._entity_xml = None
        self._category_name = None
        if entity_id is None:
            self._entity_id = self._get_entity_id(entity_name)
        else:
            self._entity_id = entity_id
        self.refresh()
        self._api_modify_regex_entity = self._services['ACTIVATE_ENTITY']

    def _response_not_success(self, response):
        """Helper function to raise an exception when reponse status is not 200 (OK).

            Args:
                response    (object)    --  response class object,

                received upon running an API request, using the `requests` python package

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

    def modify(self, entity_regex, entity_keywords, entity_flag, is_derived=False, parent_entity=None):
        """Modifies the specified regex entity details

                    Args:

                        entity_regex (str)     --  Regex for the entity

                        entity_keywords (str)  --  Keywords for the entity

                        entity_flag (int)      --  Sensitivity flag value for entity
                                                        5-Highly sensitive
                                                        3-Moderate sensitive
                                                        1-Low sensitive

                        is_derived (bool)      --  represents whether it is derived entity or not

                        parent_entity(int)     -- entity id of the parent entity in case of derived entity

                    Returns:
                        None

                    Raises:
                        SDKException:

                                if response is empty

                                if response is not success

                                if unable to modify regex entity in commcell

                                if input entity_keywords & entity_regex is not string

                                if entity_flag value is not in allowed values[1,3,5]


                """
        if not isinstance(entity_regex, basestring) \
                or not isinstance(entity_keywords, basestring):
            raise SDKException('ActivateEntity', '101')
        if entity_flag not in [1, 3, 5]:
            raise SDKException('ActivateEntity', '102', 'Unsupported entity flag value')
        request_json = ActivateEntityConstants.REQUEST_JSON
        request_json['regularExpression'] = "{\"entity_key\":\"" + \
            self._entity_name + "\",\"entity_regex\":\"" + entity_regex + "\"}"
        request_json['flags'] = entity_flag
        request_json['entityName'] = self._entity_name
        request_json['entityXML']['keywords'] = entity_keywords
        if is_derived:
            request_json['regularExpression'] = "{\"entity_key\":\"" + self._entity_name + "\"}"
            request_json['entityType'] = 3
            if isinstance(parent_entity, int):
                request_json['parentEntityId'] = parent_entity
            elif isinstance(parent_entity, basestring):
                request_json['parentEntityId'] = ActivateEntities.get(
                    self._commcell_object, entity_name=parent_entity).entity_id
            else:
                raise SDKException('ActivateEntity', '102', 'Unsupported parent entity id type provided')

        flag, response = self._cvpysdk_obj.make_request(
            'PUT', (self._api_modify_regex_entity % self.entity_id), request_json
        )

        if flag:
            if response.json() and 'entityDetails' in response.json() and 'err' not in response.json():
                return
            raise SDKException('ActivateEntity', '106')
        self._response_not_success(response)

    def _get_entity_id(self, entity_name):
        """ Get regex entity id for given entity name
                Args:

                    entity_name (str)  -- Name of the regex entity

                Returns:

                    int                -- id of the regex entity

        """

        return self._commcell_object.activate_entity.get(entity_name).entity_id

    def _get_entity_properties(self):
        """ Get regex entity properties for given entity name
                Args:

                    None

                Returns:

                    None

        """

        regex_entity_dict = self._commcell_object.activate_entity.get_properties(self._entity_name)
        self._display_name = regex_entity_dict['displayName']
        self._category_name = regex_entity_dict['categoryName']
        self._entity_id = regex_entity_dict['entityId']
        self._is_enabled = regex_entity_dict['enabled']
        self._entity_key = regex_entity_dict['entityKey']
        self._entity_type = regex_entity_dict['entityType']
        self._entity_xml = regex_entity_dict['entityXML']
        return regex_entity_dict

    @property
    def entity_id(self):
        """Returns the value of the regex entity id attribute."""
        return self._entity_id

    @property
    def entity_type(self):
        """Returns the entity type attribute."""
        return self._entity_type

    @property
    def category_name(self):
        """Returns the entity category name attribute."""
        return self._category_name

    @property
    def display_name(self):
        """Returns the entity display name attribute."""
        return self._display_name

    @property
    def is_enabled(self):
        """Returns the entity isenabled attribute."""
        return self._is_enabled

    @property
    def entity_key(self):
        """Returns the entity key attribute."""
        return self._entity_key

    @property
    def entity_xml(self):
        """Returns the entity xml attribute."""
        return self._entity_xml

    def refresh(self):
        """Refresh the regex entity details for associated object"""
        self._get_entity_properties()

Classes

class ActivateEntities (commcell_object)

Class for representing all the regex entities in the commcell.

Initializes an instance of the ActivateEntities class.

Args

commcell_object (object) – instance of the commcell class

Returns

object - instance of the ActivateEntities class

Expand source code Browse git
class ActivateEntities(object):
    """Class for representing all the regex entities in the commcell."""

    def __init__(self, commcell_object):
        """Initializes an instance of the ActivateEntities class.

            Args:
                commcell_object     (object)    --  instance of the commcell class

            Returns:
                object  -   instance of the ActivateEntities class

        """
        self._commcell_object = commcell_object
        self._update_response_ = commcell_object._update_response_
        self._cvpysdk_object = commcell_object._cvpysdk_object
        self._services = commcell_object._services
        self._regex_entities = None
        self._api_get_all_regex_entities = self._services['ACTIVATE_ENTITIES']
        self._api_create_regex_entity = self._api_get_all_regex_entities
        self._api_delete_regex_entity = self._services['ACTIVATE_ENTITY']
        self.refresh()

    def add(self, entity_name, entity_regex, entity_keywords, entity_flag, is_derived=False, parent_entity=None):
        """Adds the specified regex entity name in the commcell

                    Args:
                        entity_name (str)      --  name of the regex entity

                        entity_regex (str)     --  Regex for the entity

                        entity_keywords (str)  --  Keywords for the entity

                        entity_flag (int)      --  Sensitivity flag value for entity
                                                        5-Highly sensitive
                                                        3-Moderate sensitive
                                                        1-Low sensitive

                        is_derived (bool)      --  represents whether it is derived entity or not

                        parent_entity(int)     -- entity id of the parent entity in case of derived entity

                    Returns:
                        None

                    Raises:
                        SDKException:

                                if response is empty

                                if response is not success

                                if unable to add regex entity in commcell

                                if entity_flag is not in proper allowed values [1,3,5]

                                if input data type is not valid
                """
        if not isinstance(entity_name, basestring) or not isinstance(entity_regex, basestring) \
                or not isinstance(entity_keywords, basestring):
            raise SDKException('ActivateEntity', '101')
        if entity_flag not in [1, 3, 5]:
            raise SDKException('ActivateEntity', '102', 'Unsupported entity flag value')
        request_json = ActivateEntityConstants.REQUEST_JSON
        request_json['regularExpression'] = "{\"entity_key\":\"" + \
            entity_name + "\",\"entity_regex\":\"" + entity_regex + "\"}"
        request_json['flags'] = entity_flag
        request_json['entityName'] = entity_name
        request_json['entityXML']['keywords'] = entity_keywords
        if is_derived:
            request_json['regularExpression'] = "{\"entity_key\":\"" + entity_name + "\"}"
            request_json['entityType'] = 3
            if isinstance(parent_entity, int):
                request_json['parentEntityId'] = parent_entity
            elif isinstance(parent_entity, basestring):
                request_json['parentEntityId'] = self._regex_entities[parent_entity]['entityId']
            else:
                raise SDKException('ActivateEntity', '102', 'Unsupported parent entity id type provided')

        flag, response = self._cvpysdk_object.make_request(
            'POST', self._api_create_regex_entity, request_json
        )

        if flag:
            if response.json() and 'entityDetails' in response.json() and 'err' not in response.json():
                self.refresh()
                return
            raise SDKException('ActivateEntity', '104')
        self._response_not_success(response)

    def delete(self, entity_name):
        """deletes the specified regex entity name in the commcell

                    Args:
                        entity_name (str)      --  name of the regex entity

                    Returns:
                        None

                    Raises:
                        SDKException:

                                if response is empty

                                if response is not success

                                if unable to delete regex entity in commcell

                                if unable to find entity name in the commcell

                                if data type of entity_name is invalid


                """
        if not isinstance(entity_name, basestring):
            raise SDKException('ActivateEntity', '101')
        if entity_name not in self._regex_entities:
            raise SDKException('ActivateEntity', '102', 'Unable to find given regex entity name in the commcell')

        flag, response = self._cvpysdk_object.make_request(
            'DELETE', self._api_delete_regex_entity % self._regex_entities[entity_name]['entityId']
        )

        if flag:
            if response.json() and 'errorCode' in response.json() and response.json()['errorCode'] == 0:
                self.refresh()
                return
            raise SDKException('ActivateEntity', '105')
        self._response_not_success(response)

    def _response_not_success(self, response):
        """Helper function to raise an exception when reponse status is not 200 (OK).

            Args:
                response    (object)    --  response class object,

                received upon running an API request, using the `requests` python package

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

    def get_properties(self, entity_name):
        """Returns a properties of the specified regex entity name.

            Args:
                entity_name (str)  --  name of the regex entity

            Returns:
                dict -  properties for the given regex entity name


        """
        return self._regex_entities[entity_name]

    def _get_all_activate_entities(self):
        """Gets the list of all regex entities associated with this commcell.

            Returns:
                dict    -   dictionary consisting of dictionaries, where each dictionary stores the
                                details of a single regex entity

                    {
                        "entityDetails": [
                            {
                                "displayName": "US Social Security number",
                                "flags": 5,
                                "description": "",
                                "categoryName": "US",
                                "enabled": true,
                                "entityName": "SSN",
                                "attribute": 3,
                                "entityType": 2,
                                "entityKey": "ssn",
                                "entityId": 1111,
                                "entityXML": {
                                    "keywords": "Social Security,Social Security#,Soc Sec,SSN,SSNS,SSN#,SS#,SSID",
                                    "entityKey": "ssn",
                                    "isSystemDefinedEntity": true,
                                    "inheritBaseWords": false
                                }
                            },
                            {
                                "displayName": "Person Name",
                                "flags": 1,
                                "description": "Name of a person.",
                                "categoryName": "Generic",
                                "enabled": true,
                                "entityName": "Person",
                                "attribute": 3,
                                "entityType": 1,
                                "entityKey": "person",
                                "entityId": 1112,
                                "entityXML": {
                                    "keywords": "",
                                    "entityKey": "person",
                                    "inheritBaseWords": false
                                }
                            }
                            ]
                            }

            Raises:
                SDKException:
                    if response is empty

                    if response is not success

        """
        flag, response = self._cvpysdk_object.make_request(
            'GET', self._api_get_all_regex_entities
        )

        if flag:
            if response.json() and 'entityDetails' in response.json():
                return self._get_regex_entity_from_collections(response.json())
            raise SDKException('ActivateEntity', '103')
        self._response_not_success(response)

    @staticmethod
    def _get_regex_entity_from_collections(collections):
        """Extracts all the regex entities, and their details from the list of collections given,
            and returns the dictionary of all regex entities

            Args:
                collections     (list)  --  list of all collections

            Returns:
                dict    -   dictionary consisting of dictionaries, where each dictionary stores the
                                details of a single regex entity

        """
        _regex_entity = {}
        for regex_entity in collections['entityDetails']:
            regex_entity_dict = {}
            regex_entity_dict['displayName'] = regex_entity.get('displayName', "")
            regex_entity_dict['entityKey'] = regex_entity.get('entityKey', "")
            regex_entity_dict['categoryName'] = regex_entity.get('categoryName', "")
            regex_entity_dict['entityXML'] = regex_entity.get('entityXML', "")
            regex_entity_dict['entityId'] = regex_entity.get('entityId', 0)
            regex_entity_dict['flags'] = regex_entity.get('flags', 0)
            regex_entity_dict['entityType'] = regex_entity.get('entityType', 0)
            regex_entity_dict['enabled'] = regex_entity.get('enabled', False)
            _regex_entity[regex_entity['entityName']] = regex_entity_dict
        return _regex_entity

    def refresh(self):
        """Refresh the activate regex entities associated with the commcell."""
        self._regex_entities = self._get_all_activate_entities()

    def get(self, entity_name):
        """Returns a ActivateEntity object for the given regex entity name.

            Args:
                entity_name (str)  --  name of the regex entity

            Returns:

                obj                 -- Object of ActivateEntity class

            Raises:
                SDKException:
                    if response is empty

                    if response is not success

                    if entity_name is not of type string


        """
        if not isinstance(entity_name, basestring):
            raise SDKException('ActivateEntity', '101')

        if self.has_entity(entity_name):
            entity_id = self._regex_entities[entity_name]['entityId']
            return ActivateEntity(self._commcell_object, entity_name, entity_id)
        raise SDKException('ActivateEntity', '102', "Unable to get ActivateEntity class object")

    def get_entity_ids(self, entity_name):
        """Returns a list of entity id for the given regex entity name list.

            Args:
                entity_name (list)  --  names of the regex entity

            Returns:

                list                -- entity id's for the given entity names


        """
        if not isinstance(entity_name, list):
            raise SDKException('ActivateEntity', '101')
        entity_ids = []
        for regex_entity in entity_name:
            if regex_entity in self._regex_entities:
                entity_ids.append(self._regex_entities[regex_entity]['entityId'])
            else:
                raise SDKException(
                    'ActivateEntity', '102', f"Unable to find entity id for given entity name :{regex_entity}")
        return entity_ids

    def get_entity_keys(self, entity_name):
        """Returns a list of entity keys for the given regex entity name list.

            Args:
                entity_name (list)  --  names of the regex entity

            Returns:

                list                -- entity keys for the given entity names


        """
        if not isinstance(entity_name, list):
            raise SDKException('ActivateEntity', '101')
        entity_keys = []
        for regex_entity in entity_name:
            if regex_entity in self._regex_entities:
                entity_keys.append(self._regex_entities[regex_entity]['entityKey'])
            else:
                raise SDKException(
                    'ActivateEntity', '102', f"Unable to find entity keys for given entity name :{regex_entity}")
        return entity_keys

    def has_entity(self, entity_name):
        """Checks if a regex entity exists in the commcell with the input name.

            Args:
                entity_name (str)  --  name of the regex entity

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

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

        """
        if not isinstance(entity_name, basestring):
            raise SDKException('ActivateEntity', '101')

        return self._regex_entities and entity_name.lower() in map(str.lower, self._regex_entities)

Methods

def add(self, entity_name, entity_regex, entity_keywords, entity_flag, is_derived=False, parent_entity=None)

Adds the specified regex entity name in the commcell

Args

entity_name (str) – name of the regex entity

entity_regex (str) – Regex for the entity

entity_keywords (str) – Keywords for the entity

entity_flag (int) – Sensitivity flag value for entity 5-Highly sensitive 3-Moderate sensitive 1-Low sensitive

is_derived (bool) – represents whether it is derived entity or not

parent_entity(int) – entity id of the parent entity in case of derived entity

Returns

None

Raises

SDKException:

    if response is empty

    if response is not success

    if unable to add regex entity in commcell

    if entity_flag is not in proper allowed values [1,3,5]

    if input data type is not valid
Expand source code Browse git
def add(self, entity_name, entity_regex, entity_keywords, entity_flag, is_derived=False, parent_entity=None):
    """Adds the specified regex entity name in the commcell

                Args:
                    entity_name (str)      --  name of the regex entity

                    entity_regex (str)     --  Regex for the entity

                    entity_keywords (str)  --  Keywords for the entity

                    entity_flag (int)      --  Sensitivity flag value for entity
                                                    5-Highly sensitive
                                                    3-Moderate sensitive
                                                    1-Low sensitive

                    is_derived (bool)      --  represents whether it is derived entity or not

                    parent_entity(int)     -- entity id of the parent entity in case of derived entity

                Returns:
                    None

                Raises:
                    SDKException:

                            if response is empty

                            if response is not success

                            if unable to add regex entity in commcell

                            if entity_flag is not in proper allowed values [1,3,5]

                            if input data type is not valid
            """
    if not isinstance(entity_name, basestring) or not isinstance(entity_regex, basestring) \
            or not isinstance(entity_keywords, basestring):
        raise SDKException('ActivateEntity', '101')
    if entity_flag not in [1, 3, 5]:
        raise SDKException('ActivateEntity', '102', 'Unsupported entity flag value')
    request_json = ActivateEntityConstants.REQUEST_JSON
    request_json['regularExpression'] = "{\"entity_key\":\"" + \
        entity_name + "\",\"entity_regex\":\"" + entity_regex + "\"}"
    request_json['flags'] = entity_flag
    request_json['entityName'] = entity_name
    request_json['entityXML']['keywords'] = entity_keywords
    if is_derived:
        request_json['regularExpression'] = "{\"entity_key\":\"" + entity_name + "\"}"
        request_json['entityType'] = 3
        if isinstance(parent_entity, int):
            request_json['parentEntityId'] = parent_entity
        elif isinstance(parent_entity, basestring):
            request_json['parentEntityId'] = self._regex_entities[parent_entity]['entityId']
        else:
            raise SDKException('ActivateEntity', '102', 'Unsupported parent entity id type provided')

    flag, response = self._cvpysdk_object.make_request(
        'POST', self._api_create_regex_entity, request_json
    )

    if flag:
        if response.json() and 'entityDetails' in response.json() and 'err' not in response.json():
            self.refresh()
            return
        raise SDKException('ActivateEntity', '104')
    self._response_not_success(response)
def delete(self, entity_name)

deletes the specified regex entity name in the commcell

Args

entity_name (str) – name of the regex entity

Returns

None

Raises

SDKException:

    if response is empty

    if response is not success

    if unable to delete regex entity in commcell

    if unable to find entity name in the commcell

    if data type of entity_name is invalid
Expand source code Browse git
def delete(self, entity_name):
    """deletes the specified regex entity name in the commcell

                Args:
                    entity_name (str)      --  name of the regex entity

                Returns:
                    None

                Raises:
                    SDKException:

                            if response is empty

                            if response is not success

                            if unable to delete regex entity in commcell

                            if unable to find entity name in the commcell

                            if data type of entity_name is invalid


            """
    if not isinstance(entity_name, basestring):
        raise SDKException('ActivateEntity', '101')
    if entity_name not in self._regex_entities:
        raise SDKException('ActivateEntity', '102', 'Unable to find given regex entity name in the commcell')

    flag, response = self._cvpysdk_object.make_request(
        'DELETE', self._api_delete_regex_entity % self._regex_entities[entity_name]['entityId']
    )

    if flag:
        if response.json() and 'errorCode' in response.json() and response.json()['errorCode'] == 0:
            self.refresh()
            return
        raise SDKException('ActivateEntity', '105')
    self._response_not_success(response)
def get(self, entity_name)

Returns a ActivateEntity object for the given regex entity name.

Args

entity_name (str) – name of the regex entity

Returns

obj – Object of ActivateEntity class

Raises

SDKException: if response is empty

if response is not success

if entity_name is not of type string
Expand source code Browse git
def get(self, entity_name):
    """Returns a ActivateEntity object for the given regex entity name.

        Args:
            entity_name (str)  --  name of the regex entity

        Returns:

            obj                 -- Object of ActivateEntity class

        Raises:
            SDKException:
                if response is empty

                if response is not success

                if entity_name is not of type string


    """
    if not isinstance(entity_name, basestring):
        raise SDKException('ActivateEntity', '101')

    if self.has_entity(entity_name):
        entity_id = self._regex_entities[entity_name]['entityId']
        return ActivateEntity(self._commcell_object, entity_name, entity_id)
    raise SDKException('ActivateEntity', '102', "Unable to get ActivateEntity class object")
def get_entity_ids(self, entity_name)

Returns a list of entity id for the given regex entity name list.

Args

entity_name (list) – names of the regex entity

Returns

list – entity id's for the given entity names

Expand source code Browse git
def get_entity_ids(self, entity_name):
    """Returns a list of entity id for the given regex entity name list.

        Args:
            entity_name (list)  --  names of the regex entity

        Returns:

            list                -- entity id's for the given entity names


    """
    if not isinstance(entity_name, list):
        raise SDKException('ActivateEntity', '101')
    entity_ids = []
    for regex_entity in entity_name:
        if regex_entity in self._regex_entities:
            entity_ids.append(self._regex_entities[regex_entity]['entityId'])
        else:
            raise SDKException(
                'ActivateEntity', '102', f"Unable to find entity id for given entity name :{regex_entity}")
    return entity_ids
def get_entity_keys(self, entity_name)

Returns a list of entity keys for the given regex entity name list.

Args

entity_name (list) – names of the regex entity

Returns

list – entity keys for the given entity names

Expand source code Browse git
def get_entity_keys(self, entity_name):
    """Returns a list of entity keys for the given regex entity name list.

        Args:
            entity_name (list)  --  names of the regex entity

        Returns:

            list                -- entity keys for the given entity names


    """
    if not isinstance(entity_name, list):
        raise SDKException('ActivateEntity', '101')
    entity_keys = []
    for regex_entity in entity_name:
        if regex_entity in self._regex_entities:
            entity_keys.append(self._regex_entities[regex_entity]['entityKey'])
        else:
            raise SDKException(
                'ActivateEntity', '102', f"Unable to find entity keys for given entity name :{regex_entity}")
    return entity_keys
def get_properties(self, entity_name)

Returns a properties of the specified regex entity name.

Args

entity_name (str) – name of the regex entity

Returns

dict - properties for the given regex entity name

Expand source code Browse git
def get_properties(self, entity_name):
    """Returns a properties of the specified regex entity name.

        Args:
            entity_name (str)  --  name of the regex entity

        Returns:
            dict -  properties for the given regex entity name


    """
    return self._regex_entities[entity_name]
def has_entity(self, entity_name)

Checks if a regex entity exists in the commcell with the input name.

Args

entity_name (str) – name of the regex entity

Returns

bool - boolean output whether the regex entity exists in the commcell or not

Raises

SDKException: if type of the regex entity name argument is not string

Expand source code Browse git
def has_entity(self, entity_name):
    """Checks if a regex entity exists in the commcell with the input name.

        Args:
            entity_name (str)  --  name of the regex entity

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

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

    """
    if not isinstance(entity_name, basestring):
        raise SDKException('ActivateEntity', '101')

    return self._regex_entities and entity_name.lower() in map(str.lower, self._regex_entities)
def refresh(self)

Refresh the activate regex entities associated with the commcell.

Expand source code Browse git
def refresh(self):
    """Refresh the activate regex entities associated with the commcell."""
    self._regex_entities = self._get_all_activate_entities()
class ActivateEntity (commcell_object, entity_name, entity_id=None)

Class for performing operations on a single regex entity

Initialize an object of the ActivateEntity class.

Args

commcell_object (object) – instance of the commcell class

entity_name (str) – name of the regex entity

entity_id (str) – id of the regex entity default: None

Returns

object - instance of the ActivateEntity class

Expand source code Browse git
class ActivateEntity(object):
    """Class for performing operations on a single regex entity"""

    def __init__(self, commcell_object, entity_name, entity_id=None):
        """Initialize an object of the ActivateEntity class.

            Args:
                commcell_object     (object)    --  instance of the commcell class

                entity_name     (str)           --  name of the regex entity

                entity_id       (str)           --  id of the regex entity
                    default: None

            Returns:
                object  -   instance of the ActivateEntity class
        """
        self._commcell_object = commcell_object
        self._update_response_ = commcell_object._update_response_
        self._services = commcell_object._services
        self._cvpysdk_obj = self._commcell_object._cvpysdk_object
        self._entity_name = entity_name
        self._entity_id = None
        self._display_name = None
        self._entity_type = None
        self._is_enabled = None
        self._entity_key = None
        self._entity_xml = None
        self._category_name = None
        if entity_id is None:
            self._entity_id = self._get_entity_id(entity_name)
        else:
            self._entity_id = entity_id
        self.refresh()
        self._api_modify_regex_entity = self._services['ACTIVATE_ENTITY']

    def _response_not_success(self, response):
        """Helper function to raise an exception when reponse status is not 200 (OK).

            Args:
                response    (object)    --  response class object,

                received upon running an API request, using the `requests` python package

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

    def modify(self, entity_regex, entity_keywords, entity_flag, is_derived=False, parent_entity=None):
        """Modifies the specified regex entity details

                    Args:

                        entity_regex (str)     --  Regex for the entity

                        entity_keywords (str)  --  Keywords for the entity

                        entity_flag (int)      --  Sensitivity flag value for entity
                                                        5-Highly sensitive
                                                        3-Moderate sensitive
                                                        1-Low sensitive

                        is_derived (bool)      --  represents whether it is derived entity or not

                        parent_entity(int)     -- entity id of the parent entity in case of derived entity

                    Returns:
                        None

                    Raises:
                        SDKException:

                                if response is empty

                                if response is not success

                                if unable to modify regex entity in commcell

                                if input entity_keywords & entity_regex is not string

                                if entity_flag value is not in allowed values[1,3,5]


                """
        if not isinstance(entity_regex, basestring) \
                or not isinstance(entity_keywords, basestring):
            raise SDKException('ActivateEntity', '101')
        if entity_flag not in [1, 3, 5]:
            raise SDKException('ActivateEntity', '102', 'Unsupported entity flag value')
        request_json = ActivateEntityConstants.REQUEST_JSON
        request_json['regularExpression'] = "{\"entity_key\":\"" + \
            self._entity_name + "\",\"entity_regex\":\"" + entity_regex + "\"}"
        request_json['flags'] = entity_flag
        request_json['entityName'] = self._entity_name
        request_json['entityXML']['keywords'] = entity_keywords
        if is_derived:
            request_json['regularExpression'] = "{\"entity_key\":\"" + self._entity_name + "\"}"
            request_json['entityType'] = 3
            if isinstance(parent_entity, int):
                request_json['parentEntityId'] = parent_entity
            elif isinstance(parent_entity, basestring):
                request_json['parentEntityId'] = ActivateEntities.get(
                    self._commcell_object, entity_name=parent_entity).entity_id
            else:
                raise SDKException('ActivateEntity', '102', 'Unsupported parent entity id type provided')

        flag, response = self._cvpysdk_obj.make_request(
            'PUT', (self._api_modify_regex_entity % self.entity_id), request_json
        )

        if flag:
            if response.json() and 'entityDetails' in response.json() and 'err' not in response.json():
                return
            raise SDKException('ActivateEntity', '106')
        self._response_not_success(response)

    def _get_entity_id(self, entity_name):
        """ Get regex entity id for given entity name
                Args:

                    entity_name (str)  -- Name of the regex entity

                Returns:

                    int                -- id of the regex entity

        """

        return self._commcell_object.activate_entity.get(entity_name).entity_id

    def _get_entity_properties(self):
        """ Get regex entity properties for given entity name
                Args:

                    None

                Returns:

                    None

        """

        regex_entity_dict = self._commcell_object.activate_entity.get_properties(self._entity_name)
        self._display_name = regex_entity_dict['displayName']
        self._category_name = regex_entity_dict['categoryName']
        self._entity_id = regex_entity_dict['entityId']
        self._is_enabled = regex_entity_dict['enabled']
        self._entity_key = regex_entity_dict['entityKey']
        self._entity_type = regex_entity_dict['entityType']
        self._entity_xml = regex_entity_dict['entityXML']
        return regex_entity_dict

    @property
    def entity_id(self):
        """Returns the value of the regex entity id attribute."""
        return self._entity_id

    @property
    def entity_type(self):
        """Returns the entity type attribute."""
        return self._entity_type

    @property
    def category_name(self):
        """Returns the entity category name attribute."""
        return self._category_name

    @property
    def display_name(self):
        """Returns the entity display name attribute."""
        return self._display_name

    @property
    def is_enabled(self):
        """Returns the entity isenabled attribute."""
        return self._is_enabled

    @property
    def entity_key(self):
        """Returns the entity key attribute."""
        return self._entity_key

    @property
    def entity_xml(self):
        """Returns the entity xml attribute."""
        return self._entity_xml

    def refresh(self):
        """Refresh the regex entity details for associated object"""
        self._get_entity_properties()

Instance variables

var category_name

Returns the entity category name attribute.

Expand source code Browse git
@property
def category_name(self):
    """Returns the entity category name attribute."""
    return self._category_name
var display_name

Returns the entity display name attribute.

Expand source code Browse git
@property
def display_name(self):
    """Returns the entity display name attribute."""
    return self._display_name
var entity_id

Returns the value of the regex entity id attribute.

Expand source code Browse git
@property
def entity_id(self):
    """Returns the value of the regex entity id attribute."""
    return self._entity_id
var entity_key

Returns the entity key attribute.

Expand source code Browse git
@property
def entity_key(self):
    """Returns the entity key attribute."""
    return self._entity_key
var entity_type

Returns the entity type attribute.

Expand source code Browse git
@property
def entity_type(self):
    """Returns the entity type attribute."""
    return self._entity_type
var entity_xml

Returns the entity xml attribute.

Expand source code Browse git
@property
def entity_xml(self):
    """Returns the entity xml attribute."""
    return self._entity_xml
var is_enabled

Returns the entity isenabled attribute.

Expand source code Browse git
@property
def is_enabled(self):
    """Returns the entity isenabled attribute."""
    return self._is_enabled

Methods

def modify(self, entity_regex, entity_keywords, entity_flag, is_derived=False, parent_entity=None)

Modifies the specified regex entity details

Args

entity_regex (str) – Regex for the entity

entity_keywords (str) – Keywords for the entity

entity_flag (int) – Sensitivity flag value for entity 5-Highly sensitive 3-Moderate sensitive 1-Low sensitive

is_derived (bool) – represents whether it is derived entity or not

parent_entity(int) – entity id of the parent entity in case of derived entity

Returns

None

Raises

SDKException:

    if response is empty

    if response is not success

    if unable to modify regex entity in commcell

    if input entity_keywords & entity_regex is not string

    if entity_flag value is not in allowed values[1,3,5]
Expand source code Browse git
def modify(self, entity_regex, entity_keywords, entity_flag, is_derived=False, parent_entity=None):
    """Modifies the specified regex entity details

                Args:

                    entity_regex (str)     --  Regex for the entity

                    entity_keywords (str)  --  Keywords for the entity

                    entity_flag (int)      --  Sensitivity flag value for entity
                                                    5-Highly sensitive
                                                    3-Moderate sensitive
                                                    1-Low sensitive

                    is_derived (bool)      --  represents whether it is derived entity or not

                    parent_entity(int)     -- entity id of the parent entity in case of derived entity

                Returns:
                    None

                Raises:
                    SDKException:

                            if response is empty

                            if response is not success

                            if unable to modify regex entity in commcell

                            if input entity_keywords & entity_regex is not string

                            if entity_flag value is not in allowed values[1,3,5]


            """
    if not isinstance(entity_regex, basestring) \
            or not isinstance(entity_keywords, basestring):
        raise SDKException('ActivateEntity', '101')
    if entity_flag not in [1, 3, 5]:
        raise SDKException('ActivateEntity', '102', 'Unsupported entity flag value')
    request_json = ActivateEntityConstants.REQUEST_JSON
    request_json['regularExpression'] = "{\"entity_key\":\"" + \
        self._entity_name + "\",\"entity_regex\":\"" + entity_regex + "\"}"
    request_json['flags'] = entity_flag
    request_json['entityName'] = self._entity_name
    request_json['entityXML']['keywords'] = entity_keywords
    if is_derived:
        request_json['regularExpression'] = "{\"entity_key\":\"" + self._entity_name + "\"}"
        request_json['entityType'] = 3
        if isinstance(parent_entity, int):
            request_json['parentEntityId'] = parent_entity
        elif isinstance(parent_entity, basestring):
            request_json['parentEntityId'] = ActivateEntities.get(
                self._commcell_object, entity_name=parent_entity).entity_id
        else:
            raise SDKException('ActivateEntity', '102', 'Unsupported parent entity id type provided')

    flag, response = self._cvpysdk_obj.make_request(
        'PUT', (self._api_modify_regex_entity % self.entity_id), request_json
    )

    if flag:
        if response.json() and 'entityDetails' in response.json() and 'err' not in response.json():
            return
        raise SDKException('ActivateEntity', '106')
    self._response_not_success(response)
def refresh(self)

Refresh the regex entity details for associated object

Expand source code Browse git
def refresh(self):
    """Refresh the regex entity details for associated object"""
    self._get_entity_properties()