Module cvpysdk.index_pools
File for performing index pool related operations on the commcell
IndexPools and IndexPool are 2 classes defined in this file
IndexPools: Class for representing all the index pools associated with the commcell
IndexPool: Class for a instance of a single index pool of the commcell
IndexPools
__init__() -- initialize object of IndexPools class associated with
the commcell
__str() -- returns all the Index pools of the commcell
__repr__() -- returns the string to represent the instance
__getitem__() -- returns the details of index pool for given pool name
_get_all_index_pools() -- gets detail of all index pools using REST API call
_response_not_success() -- raise exception when response is not 200
get() -- return an IndexPool object for given pool name
has_pool() -- returns whether the index pool is present or not in
the commcell
add() -- creates a new Index pool to the commcell
delete() -- deletes the index pool associated to commcell
refresh() -- refresh the index pools details associated with commcell
Indexpools Attributes
**all_index_pools** -- returns the dictionary consisting of all the index
pools associated with the commcell and there details
IndexPool
__init__() -- initialize object of IndexPool class
__repr__() -- returns the string to represent the instance
_response_not_success() -- raise exception when response is not 200
modify_node() -- modify/add a node to the index pool
node_info() -- returns a dict consisting details of node present in the pool
refresh() -- refresh the index pool details associated with commcell
Indexpool Attributes
**pool_id** -- returns the pseudo client id for index pool cloud
**cloud_id** -- returns the cloud id for index pool
**node_names** -- returns a list of names of all the nodes present in pool
**hac_cluster** -- returns the hac cluster name
**pool_name** -- returns the client name for index pool
Expand source code Browse git
# --------------------------------------------------------------------------
# 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 performing index pool related operations on the commcell
IndexPools and IndexPool are 2 classes defined in this file
IndexPools: Class for representing all the index pools associated with the commcell
IndexPool: Class for a instance of a single index pool of the commcell
IndexPools
============
__init__() -- initialize object of IndexPools class associated with
the commcell
__str() -- returns all the Index pools of the commcell
__repr__() -- returns the string to represent the instance
__getitem__() -- returns the details of index pool for given pool name
_get_all_index_pools() -- gets detail of all index pools using REST API call
_response_not_success() -- raise exception when response is not 200
get() -- return an IndexPool object for given pool name
has_pool() -- returns whether the index pool is present or not in
the commcell
add() -- creates a new Index pool to the commcell
delete() -- deletes the index pool associated to commcell
refresh() -- refresh the index pools details associated with commcell
IndexPools Attributes
-----------------------
**all_index_pools** -- returns the dictionary consisting of all the index
pools associated with the commcell and there details
IndexPool
=========
__init__() -- initialize object of IndexPool class
__repr__() -- returns the string to represent the instance
_response_not_success() -- raise exception when response is not 200
modify_node() -- modify/add a node to the index pool
node_info() -- returns a dict consisting details of node present in the pool
refresh() -- refresh the index pool details associated with commcell
IndexPool Attributes
----------------------
**pool_id** -- returns the pseudo client id for index pool cloud
**cloud_id** -- returns the cloud id for index pool
**node_names** -- returns a list of names of all the nodes present in pool
**hac_cluster** -- returns the hac cluster name
**pool_name** -- returns the client name for index pool
"""
from copy import deepcopy
from .exception import SDKException
from .datacube.constants import IndexServerConstants
class IndexPools(object):
"""Class for representing all the Index pools associated with the commcell"""
def __init__(self, commcell_object):
"""Initialize object of the IndexPools class
Args:
commcell_object (object) -- instance of the Commcell class
Returns:
object - instance of IndexPools class
"""
self._commcell_object = commcell_object
self._cvpysdk_object = commcell_object._cvpysdk_object
self._services = commcell_object._services
self._update_response_ = commcell_object._update_response_
self._all_index_pools = None
self.refresh()
def __str__(self):
"""Representation string consisting of all Index pools of the commcell.
Returns:
str - string of all the index pools associated with the commcell
"""
representation_string = '{:^5}\t{:^20}\n\n'.format('S. No.', 'Index pool Name')
index = 1
for pool_name in self.all_index_pools:
representation_string += '{:^5}\t{:^20}\n'.format(
index, pool_name)
index += 1
return representation_string
def __repr__(self):
"""Representation string for the instance of the IndexPools class."""
return "IndexPools class instance for Commcell: '{0}'".format(
self._commcell_object.commserv_name
)
def __getitem__(self, value):
"""Returns the details of index pool for given index pool name
Args:
value (str) -- name of index pool
Returns:
dict - details of the index pool
Raises:
Index pool not found
"""
value = value.lower()
if value in self.all_index_pools:
return {"pool_name": value, "pool_id": self.all_index_pools[value]}
raise SDKException('IndexPools', '102')
def _get_all_index_pools(self):
"""Method to get details of all the index pools present in commcell
Raises:
SDKException:
Response was not success
Response was empty
"""
flag, response = self._cvpysdk_object.make_request('GET', self._services['GET_ALL_CLIENTS'])
if flag:
if response.json() and 'clientProperties' in response.json():
for dictionary in response.json()['clientProperties']:
if dictionary['clientProps']['clusterType'] == 14:
temp_name = dictionary['client']['clientEntity']['clientName'].lower()
temp_id = int(dictionary['client']['clientEntity']['clientId'])
self._all_index_pools[temp_name] = temp_id
else:
raise SDKException('Response', '102')
else:
raise SDKException('Response', '101', self._update_response_(response.text))
def _response_not_success(self, response):
"""Helper method to raise exception when response is not 200 (ok)
Args:
response (object) - response object
Raises:
SDKException:
Response was not success
"""
raise SDKException(
'Response',
'101',
self._update_response_(
response.text))
def refresh(self):
"""Refreshes the properties of IndexPools class"""
self._commcell_object.clients.refresh()
self._all_index_pools = {}
self._get_all_index_pools()
@property
def all_index_pools(self):
"""Returns a dict consisting details of all index pools
Returns:
dict - dictionary consisting details for all index pools
Sample:
{
<pool_name_1> : <pool_id_1>,
<pool_name_2> : <pool_id_2>
}
"""
return self._all_index_pools
def get(self, pool_name):
"""Returns the IndexPool class object with given pool_name
Args:
pool_name (int/str) -- Index pool name present in commcell
Returns:
object - instance of IndexPool class
Raises:
SDKExecption:
Data type of the input(s) is not valid
Index pool not found
"""
if isinstance(pool_name, int):
for index_pool_name in self.all_index_pools:
if self.all_index_pools[index_pool_name] == pool_name:
return IndexPool(self._commcell_object, index_pool_name)
elif isinstance(pool_name, str):
if pool_name.lower() in self.all_index_pools:
return IndexPool(self._commcell_object, pool_name.lower())
else:
raise SDKException('IndexPools', '101')
raise SDKException('IndexPools', '102')
def has_pool(self, pool_name):
"""Returns whether a index pool is present in the commcell or not
Args:
pool_name (str) -- Index pool name
Returns:
bool - True if index pool with given pool_name is present else False
"""
return pool_name.lower() in self.all_index_pools
def add(self, pool_name, node_names, hac_name):
"""Creates a new Index pool within the commcell
Args:
pool_name (str) -- Name for the index pool
node_names (list) -- List of strings of all the index pool node names
hac_name (str) -- Name of the HAC cluster to be used while creating pool
Raises:
SDKExecption:
Data type of the input(s) is not valid.
Response was not success.
Response was empty.
Returns:
object - Returns a object of class IndexPool
"""
if not (isinstance(pool_name, str) and isinstance(node_names, list)
and isinstance(hac_name, str)):
raise SDKException('IndexPools', '101')
req_json = deepcopy(IndexServerConstants.REQUEST_JSON)
del req_json['solrCloudInfo']
del req_json['cloudMetaInfos']
req_json['type'] = 9
req_json['cloudInfoEntity'] = {
"cloudName": pool_name,
"cloudDisplayName": pool_name
}
req_json['solrCloudPoolInfo'] = {
'zookerEntity': {
"_type_": 28,
"clientGroupId": int(self._commcell_object.hac_clusters.get(hac_name).cluster_id),
"clientGroupName": hac_name,
"flags": {
"include": False
}
}
}
for node_name in node_names:
node_obj = self._commcell_object.clients.get(node_name)
node_data = {
"opType": IndexServerConstants.OPERATION_ADD,
"nodeClientEntity": {
"hostName": node_obj.client_hostname,
"clientId": int(node_obj.client_id),
"clientName": node_obj.client_name,
"_type_": 3
},
"nodeMetaInfos": [
{
"name": "ISENABLED",
"value": "false"
},
{
"name": "JVMMAXMEMORY",
"value": "8191"
},
{
"name": "PORTNO",
"value": "20000"
},
{
"name": "URL",
"value": ""
},
{
"name": "INDEXLOCATION",
"value": "NA"
}
]
}
req_json['cloudNodes'].append(node_data)
flag, response = self._cvpysdk_object.make_request(
'POST', self._services['CLOUD_CREATE'], req_json
)
if flag:
if response.json() and 'genericResp' in response.json():
if response.json()['genericResp'] == {} and \
'cloudId' in response.json():
self.refresh()
return IndexPool(self._commcell_object, pool_name)
o_str = 'Failed to create index pool. Error: "{0}"'.format(
response.json()['genericResp'])
raise SDKException('Response', '102', o_str)
raise SDKException('Response', '102')
self._response_not_success(response)
def delete(self, pool_name):
"""Deletes an existing index pool cloud from commcell
Args:
pool_name (str) -- Index pool cloud name
Returns:
None
Raises:
SDKExecption:
Data type of the input(s) is not valid.
Response was not success.
Response was empty.
"""
if not isinstance(pool_name, str):
raise SDKException('IndexPools', '101')
client = self.get(pool_name)
cloud_id = client.cloud_id
req_json = IndexServerConstants.REQUEST_JSON.copy()
req_json["opType"] = IndexServerConstants.OPERATION_DELETE
req_json['cloudInfoEntity']['cloudId'] = cloud_id
flag, response = self._cvpysdk_object.make_request(
'POST', self._services['CLOUD_DELETE'], req_json
)
if flag:
if response.json() and 'genericResp' in response.json() \
and 'errorCode' not in response.json()['genericResp']:
self.refresh()
return
if response.json() and 'genericResp' in response.json():
raise SDKException(
'Response', '102', response.json()['genericResp'].get(
'errorMessage', ''))
raise SDKException('Response', '102')
self._response_not_success(response)
class IndexPool(object):
"""Class for performing index pool operations on a specific index pool"""
def __init__(self, commcell_obj, pool_name, pool_id=None):
"""Initializes the IndexPool class instance
Args:
commcell_obj (object) -- Instance of class Commcell
pool_name (str) -- Index pool name
pool_id (int) -- Index pool client id
default:
None
Returns:
object - instance of the IndexPool class
"""
self.commcell = commcell_obj
self._pool_name = pool_name
self._pool_id = pool_id
self.pool_client = None
self.pool_properties = None
self.pool_nodes = None
self.refresh()
def __repr__(self):
"""Representation string for the instance of the IndexPool class."""
return "IndexPool class instance for Commcell: '{0}'".format(
self.commcell.commserv_name
)
def _response_not_success(self, response):
"""Helper method to raise exception when response is not 200 (ok)
Raises:
SDKException:
Response was not success
"""
raise SDKException(
'Response',
'101',
self.commcell._update_response_(
response.text))
def refresh(self):
"""Refreshes properties of IndexPool class"""
self.commcell.clients.refresh()
if not self.commcell.clients.has_client(self.pool_name):
raise SDKException('IndexPools', '102')
self.pool_client = self.commcell.clients.get(self.pool_name)
self._pool_id = self.pool_client.client_id
self.pool_properties = self.pool_client.\
properties['pseudoClientInfo']['distributedClusterInstanceProperties']['clusterConfig']['cloudInfo']
self.pool_nodes = self.pool_properties['cloudNodes']
def node_info(self, node_name):
"""Returns the index pool node information
Args:
node_name (str) -- index pool node name
Returns:
dict - dictionary consisting details of index pool node
Raises:
SDKException:
Index pool node not found
"""
for node_info in self.pool_nodes:
if node_info['nodeClientEntity']['clientName'].lower() == node_name.lower():
return node_info
raise SDKException('IndexPools', '103')
def modify_node(self, node_name,
operation_type=IndexServerConstants.OPERATION_EDIT,
node_params=None):
"""Method to modify the pool node details
Args:
node_name (str) -- index pool node name
operation_type (int) -- operation type (1, 2, 3)
1 - Adds a new node
2 - Removes existing node
3 - Edits the existing node (default)
node_params (list) -- list of all the properties for the index pool node
for example:
[{
"name": <property_name>,
"value": <property_value>
},
]
Raises:
SDKException:
Response was not success.
Response was empty.
"""
req_json = {
'cloudId': self.cloud_id,
'type': 9,
'nodes': [{
'status': 1,
'opType': operation_type,
'nodeClientEntity': {
'clientId': int(self.commcell.clients[node_name]['id']),
'clientName': node_name
},
'nodeMetaInfos': []
}]
}
if node_params:
req_json['nodes'][0]['nodeMetaInfos'] = node_params
flag, response = self.commcell._cvpysdk_object.make_request(
'POST', self.commcell._services['CLOUD_NODE_UPDATE'],
req_json
)
if flag:
if response.json() is not None:
if 'errorCode' not in response.json():
self.refresh()
return
self._response_not_success(response)
@property
def pool_id(self):
"""Returns the index pool client id"""
return self._pool_id
@property
def cloud_id(self):
"""Returns the index pool cloud id"""
return self.pool_properties['cloudInfoEntity']['cloudId']
@property
def pool_name(self):
"""Returns index pool name"""
return self._pool_name
@property
def node_names(self):
"""Returns a list of index pool node names"""
result = []
for node_info in self.pool_nodes:
result.append(node_info['nodeClientEntity']['clientName'])
return result
@property
def hac_cluster(self):
"""Returns the hac cluster name assigned to the index pool"""
return self.pool_properties['solrCloudPoolInfo']['zookerEntity']['clientGroupName']
Classes
class IndexPool (commcell_obj, pool_name, pool_id=None)
-
Class for performing index pool operations on a specific index pool
Initializes the IndexPool class instance
Args
commcell_obj (object) – Instance of class Commcell pool_name (str) – Index pool name pool_id (int) – Index pool client id default: None
Returns
object - instance of the IndexPool class
Expand source code Browse git
class IndexPool(object): """Class for performing index pool operations on a specific index pool""" def __init__(self, commcell_obj, pool_name, pool_id=None): """Initializes the IndexPool class instance Args: commcell_obj (object) -- Instance of class Commcell pool_name (str) -- Index pool name pool_id (int) -- Index pool client id default: None Returns: object - instance of the IndexPool class """ self.commcell = commcell_obj self._pool_name = pool_name self._pool_id = pool_id self.pool_client = None self.pool_properties = None self.pool_nodes = None self.refresh() def __repr__(self): """Representation string for the instance of the IndexPool class.""" return "IndexPool class instance for Commcell: '{0}'".format( self.commcell.commserv_name ) def _response_not_success(self, response): """Helper method to raise exception when response is not 200 (ok) Raises: SDKException: Response was not success """ raise SDKException( 'Response', '101', self.commcell._update_response_( response.text)) def refresh(self): """Refreshes properties of IndexPool class""" self.commcell.clients.refresh() if not self.commcell.clients.has_client(self.pool_name): raise SDKException('IndexPools', '102') self.pool_client = self.commcell.clients.get(self.pool_name) self._pool_id = self.pool_client.client_id self.pool_properties = self.pool_client.\ properties['pseudoClientInfo']['distributedClusterInstanceProperties']['clusterConfig']['cloudInfo'] self.pool_nodes = self.pool_properties['cloudNodes'] def node_info(self, node_name): """Returns the index pool node information Args: node_name (str) -- index pool node name Returns: dict - dictionary consisting details of index pool node Raises: SDKException: Index pool node not found """ for node_info in self.pool_nodes: if node_info['nodeClientEntity']['clientName'].lower() == node_name.lower(): return node_info raise SDKException('IndexPools', '103') def modify_node(self, node_name, operation_type=IndexServerConstants.OPERATION_EDIT, node_params=None): """Method to modify the pool node details Args: node_name (str) -- index pool node name operation_type (int) -- operation type (1, 2, 3) 1 - Adds a new node 2 - Removes existing node 3 - Edits the existing node (default) node_params (list) -- list of all the properties for the index pool node for example: [{ "name": <property_name>, "value": <property_value> }, ] Raises: SDKException: Response was not success. Response was empty. """ req_json = { 'cloudId': self.cloud_id, 'type': 9, 'nodes': [{ 'status': 1, 'opType': operation_type, 'nodeClientEntity': { 'clientId': int(self.commcell.clients[node_name]['id']), 'clientName': node_name }, 'nodeMetaInfos': [] }] } if node_params: req_json['nodes'][0]['nodeMetaInfos'] = node_params flag, response = self.commcell._cvpysdk_object.make_request( 'POST', self.commcell._services['CLOUD_NODE_UPDATE'], req_json ) if flag: if response.json() is not None: if 'errorCode' not in response.json(): self.refresh() return self._response_not_success(response) @property def pool_id(self): """Returns the index pool client id""" return self._pool_id @property def cloud_id(self): """Returns the index pool cloud id""" return self.pool_properties['cloudInfoEntity']['cloudId'] @property def pool_name(self): """Returns index pool name""" return self._pool_name @property def node_names(self): """Returns a list of index pool node names""" result = [] for node_info in self.pool_nodes: result.append(node_info['nodeClientEntity']['clientName']) return result @property def hac_cluster(self): """Returns the hac cluster name assigned to the index pool""" return self.pool_properties['solrCloudPoolInfo']['zookerEntity']['clientGroupName']
Instance variables
var cloud_id
-
Returns the index pool cloud id
Expand source code Browse git
@property def cloud_id(self): """Returns the index pool cloud id""" return self.pool_properties['cloudInfoEntity']['cloudId']
var hac_cluster
-
Returns the hac cluster name assigned to the index pool
Expand source code Browse git
@property def hac_cluster(self): """Returns the hac cluster name assigned to the index pool""" return self.pool_properties['solrCloudPoolInfo']['zookerEntity']['clientGroupName']
var node_names
-
Returns a list of index pool node names
Expand source code Browse git
@property def node_names(self): """Returns a list of index pool node names""" result = [] for node_info in self.pool_nodes: result.append(node_info['nodeClientEntity']['clientName']) return result
var pool_id
-
Returns the index pool client id
Expand source code Browse git
@property def pool_id(self): """Returns the index pool client id""" return self._pool_id
var pool_name
-
Returns index pool name
Expand source code Browse git
@property def pool_name(self): """Returns index pool name""" return self._pool_name
Methods
def modify_node(self, node_name, operation_type=3, node_params=None)
-
Method to modify the pool node details
Args
node_name (str) – index pool node name operation_type (int) – operation type (1, 2, 3) 1 - Adds a new node 2 - Removes existing node 3 - Edits the existing node (default) node_params (list) – list of all the properties for the index pool node for example: [{ "name":
, "value": }, ] Raises
SDKException: Response was not success. Response was empty.
Expand source code Browse git
def modify_node(self, node_name, operation_type=IndexServerConstants.OPERATION_EDIT, node_params=None): """Method to modify the pool node details Args: node_name (str) -- index pool node name operation_type (int) -- operation type (1, 2, 3) 1 - Adds a new node 2 - Removes existing node 3 - Edits the existing node (default) node_params (list) -- list of all the properties for the index pool node for example: [{ "name": <property_name>, "value": <property_value> }, ] Raises: SDKException: Response was not success. Response was empty. """ req_json = { 'cloudId': self.cloud_id, 'type': 9, 'nodes': [{ 'status': 1, 'opType': operation_type, 'nodeClientEntity': { 'clientId': int(self.commcell.clients[node_name]['id']), 'clientName': node_name }, 'nodeMetaInfos': [] }] } if node_params: req_json['nodes'][0]['nodeMetaInfos'] = node_params flag, response = self.commcell._cvpysdk_object.make_request( 'POST', self.commcell._services['CLOUD_NODE_UPDATE'], req_json ) if flag: if response.json() is not None: if 'errorCode' not in response.json(): self.refresh() return self._response_not_success(response)
def node_info(self, node_name)
-
Returns the index pool node information
Args
node_name (str) – index pool node name
Returns
dict - dictionary consisting details of index pool node
Raises
SDKException: Index pool node not found
Expand source code Browse git
def node_info(self, node_name): """Returns the index pool node information Args: node_name (str) -- index pool node name Returns: dict - dictionary consisting details of index pool node Raises: SDKException: Index pool node not found """ for node_info in self.pool_nodes: if node_info['nodeClientEntity']['clientName'].lower() == node_name.lower(): return node_info raise SDKException('IndexPools', '103')
def refresh(self)
-
Refreshes properties of IndexPool class
Expand source code Browse git
def refresh(self): """Refreshes properties of IndexPool class""" self.commcell.clients.refresh() if not self.commcell.clients.has_client(self.pool_name): raise SDKException('IndexPools', '102') self.pool_client = self.commcell.clients.get(self.pool_name) self._pool_id = self.pool_client.client_id self.pool_properties = self.pool_client.\ properties['pseudoClientInfo']['distributedClusterInstanceProperties']['clusterConfig']['cloudInfo'] self.pool_nodes = self.pool_properties['cloudNodes']
class IndexPools (commcell_object)
-
Class for representing all the Index pools associated with the commcell
Initialize object of the IndexPools class
Args
commcell_object (object) – instance of the Commcell class
Returns
object - instance of IndexPools class
Expand source code Browse git
class IndexPools(object): """Class for representing all the Index pools associated with the commcell""" def __init__(self, commcell_object): """Initialize object of the IndexPools class Args: commcell_object (object) -- instance of the Commcell class Returns: object - instance of IndexPools class """ self._commcell_object = commcell_object self._cvpysdk_object = commcell_object._cvpysdk_object self._services = commcell_object._services self._update_response_ = commcell_object._update_response_ self._all_index_pools = None self.refresh() def __str__(self): """Representation string consisting of all Index pools of the commcell. Returns: str - string of all the index pools associated with the commcell """ representation_string = '{:^5}\t{:^20}\n\n'.format('S. No.', 'Index pool Name') index = 1 for pool_name in self.all_index_pools: representation_string += '{:^5}\t{:^20}\n'.format( index, pool_name) index += 1 return representation_string def __repr__(self): """Representation string for the instance of the IndexPools class.""" return "IndexPools class instance for Commcell: '{0}'".format( self._commcell_object.commserv_name ) def __getitem__(self, value): """Returns the details of index pool for given index pool name Args: value (str) -- name of index pool Returns: dict - details of the index pool Raises: Index pool not found """ value = value.lower() if value in self.all_index_pools: return {"pool_name": value, "pool_id": self.all_index_pools[value]} raise SDKException('IndexPools', '102') def _get_all_index_pools(self): """Method to get details of all the index pools present in commcell Raises: SDKException: Response was not success Response was empty """ flag, response = self._cvpysdk_object.make_request('GET', self._services['GET_ALL_CLIENTS']) if flag: if response.json() and 'clientProperties' in response.json(): for dictionary in response.json()['clientProperties']: if dictionary['clientProps']['clusterType'] == 14: temp_name = dictionary['client']['clientEntity']['clientName'].lower() temp_id = int(dictionary['client']['clientEntity']['clientId']) self._all_index_pools[temp_name] = temp_id else: raise SDKException('Response', '102') else: raise SDKException('Response', '101', self._update_response_(response.text)) def _response_not_success(self, response): """Helper method to raise exception when response is not 200 (ok) Args: response (object) - response object Raises: SDKException: Response was not success """ raise SDKException( 'Response', '101', self._update_response_( response.text)) def refresh(self): """Refreshes the properties of IndexPools class""" self._commcell_object.clients.refresh() self._all_index_pools = {} self._get_all_index_pools() @property def all_index_pools(self): """Returns a dict consisting details of all index pools Returns: dict - dictionary consisting details for all index pools Sample: { <pool_name_1> : <pool_id_1>, <pool_name_2> : <pool_id_2> } """ return self._all_index_pools def get(self, pool_name): """Returns the IndexPool class object with given pool_name Args: pool_name (int/str) -- Index pool name present in commcell Returns: object - instance of IndexPool class Raises: SDKExecption: Data type of the input(s) is not valid Index pool not found """ if isinstance(pool_name, int): for index_pool_name in self.all_index_pools: if self.all_index_pools[index_pool_name] == pool_name: return IndexPool(self._commcell_object, index_pool_name) elif isinstance(pool_name, str): if pool_name.lower() in self.all_index_pools: return IndexPool(self._commcell_object, pool_name.lower()) else: raise SDKException('IndexPools', '101') raise SDKException('IndexPools', '102') def has_pool(self, pool_name): """Returns whether a index pool is present in the commcell or not Args: pool_name (str) -- Index pool name Returns: bool - True if index pool with given pool_name is present else False """ return pool_name.lower() in self.all_index_pools def add(self, pool_name, node_names, hac_name): """Creates a new Index pool within the commcell Args: pool_name (str) -- Name for the index pool node_names (list) -- List of strings of all the index pool node names hac_name (str) -- Name of the HAC cluster to be used while creating pool Raises: SDKExecption: Data type of the input(s) is not valid. Response was not success. Response was empty. Returns: object - Returns a object of class IndexPool """ if not (isinstance(pool_name, str) and isinstance(node_names, list) and isinstance(hac_name, str)): raise SDKException('IndexPools', '101') req_json = deepcopy(IndexServerConstants.REQUEST_JSON) del req_json['solrCloudInfo'] del req_json['cloudMetaInfos'] req_json['type'] = 9 req_json['cloudInfoEntity'] = { "cloudName": pool_name, "cloudDisplayName": pool_name } req_json['solrCloudPoolInfo'] = { 'zookerEntity': { "_type_": 28, "clientGroupId": int(self._commcell_object.hac_clusters.get(hac_name).cluster_id), "clientGroupName": hac_name, "flags": { "include": False } } } for node_name in node_names: node_obj = self._commcell_object.clients.get(node_name) node_data = { "opType": IndexServerConstants.OPERATION_ADD, "nodeClientEntity": { "hostName": node_obj.client_hostname, "clientId": int(node_obj.client_id), "clientName": node_obj.client_name, "_type_": 3 }, "nodeMetaInfos": [ { "name": "ISENABLED", "value": "false" }, { "name": "JVMMAXMEMORY", "value": "8191" }, { "name": "PORTNO", "value": "20000" }, { "name": "URL", "value": "" }, { "name": "INDEXLOCATION", "value": "NA" } ] } req_json['cloudNodes'].append(node_data) flag, response = self._cvpysdk_object.make_request( 'POST', self._services['CLOUD_CREATE'], req_json ) if flag: if response.json() and 'genericResp' in response.json(): if response.json()['genericResp'] == {} and \ 'cloudId' in response.json(): self.refresh() return IndexPool(self._commcell_object, pool_name) o_str = 'Failed to create index pool. Error: "{0}"'.format( response.json()['genericResp']) raise SDKException('Response', '102', o_str) raise SDKException('Response', '102') self._response_not_success(response) def delete(self, pool_name): """Deletes an existing index pool cloud from commcell Args: pool_name (str) -- Index pool cloud name Returns: None Raises: SDKExecption: Data type of the input(s) is not valid. Response was not success. Response was empty. """ if not isinstance(pool_name, str): raise SDKException('IndexPools', '101') client = self.get(pool_name) cloud_id = client.cloud_id req_json = IndexServerConstants.REQUEST_JSON.copy() req_json["opType"] = IndexServerConstants.OPERATION_DELETE req_json['cloudInfoEntity']['cloudId'] = cloud_id flag, response = self._cvpysdk_object.make_request( 'POST', self._services['CLOUD_DELETE'], req_json ) if flag: if response.json() and 'genericResp' in response.json() \ and 'errorCode' not in response.json()['genericResp']: self.refresh() return if response.json() and 'genericResp' in response.json(): raise SDKException( 'Response', '102', response.json()['genericResp'].get( 'errorMessage', '')) raise SDKException('Response', '102') self._response_not_success(response)
Instance variables
var all_index_pools
-
Returns a dict consisting details of all index pools
Returns
dict - dictionary consisting details for all index pools Sample: {
: , : } Expand source code Browse git
@property def all_index_pools(self): """Returns a dict consisting details of all index pools Returns: dict - dictionary consisting details for all index pools Sample: { <pool_name_1> : <pool_id_1>, <pool_name_2> : <pool_id_2> } """ return self._all_index_pools
Methods
def add(self, pool_name, node_names, hac_name)
-
Creates a new Index pool within the commcell
Args
pool_name (str) – Name for the index pool node_names (list) – List of strings of all the index pool node names hac_name (str) – Name of the HAC cluster to be used while creating pool
Raises
SDKExecption: Data type of the input(s) is not valid.
Response was not success. Response was empty.
Returns
object - Returns a object of class IndexPool
Expand source code Browse git
def add(self, pool_name, node_names, hac_name): """Creates a new Index pool within the commcell Args: pool_name (str) -- Name for the index pool node_names (list) -- List of strings of all the index pool node names hac_name (str) -- Name of the HAC cluster to be used while creating pool Raises: SDKExecption: Data type of the input(s) is not valid. Response was not success. Response was empty. Returns: object - Returns a object of class IndexPool """ if not (isinstance(pool_name, str) and isinstance(node_names, list) and isinstance(hac_name, str)): raise SDKException('IndexPools', '101') req_json = deepcopy(IndexServerConstants.REQUEST_JSON) del req_json['solrCloudInfo'] del req_json['cloudMetaInfos'] req_json['type'] = 9 req_json['cloudInfoEntity'] = { "cloudName": pool_name, "cloudDisplayName": pool_name } req_json['solrCloudPoolInfo'] = { 'zookerEntity': { "_type_": 28, "clientGroupId": int(self._commcell_object.hac_clusters.get(hac_name).cluster_id), "clientGroupName": hac_name, "flags": { "include": False } } } for node_name in node_names: node_obj = self._commcell_object.clients.get(node_name) node_data = { "opType": IndexServerConstants.OPERATION_ADD, "nodeClientEntity": { "hostName": node_obj.client_hostname, "clientId": int(node_obj.client_id), "clientName": node_obj.client_name, "_type_": 3 }, "nodeMetaInfos": [ { "name": "ISENABLED", "value": "false" }, { "name": "JVMMAXMEMORY", "value": "8191" }, { "name": "PORTNO", "value": "20000" }, { "name": "URL", "value": "" }, { "name": "INDEXLOCATION", "value": "NA" } ] } req_json['cloudNodes'].append(node_data) flag, response = self._cvpysdk_object.make_request( 'POST', self._services['CLOUD_CREATE'], req_json ) if flag: if response.json() and 'genericResp' in response.json(): if response.json()['genericResp'] == {} and \ 'cloudId' in response.json(): self.refresh() return IndexPool(self._commcell_object, pool_name) o_str = 'Failed to create index pool. Error: "{0}"'.format( response.json()['genericResp']) raise SDKException('Response', '102', o_str) raise SDKException('Response', '102') self._response_not_success(response)
def delete(self, pool_name)
-
Deletes an existing index pool cloud from commcell
Args
pool_name (str) – Index pool cloud name
Returns
None
Raises
SDKExecption: Data type of the input(s) is not valid.
Response was not success. Response was empty.
Expand source code Browse git
def delete(self, pool_name): """Deletes an existing index pool cloud from commcell Args: pool_name (str) -- Index pool cloud name Returns: None Raises: SDKExecption: Data type of the input(s) is not valid. Response was not success. Response was empty. """ if not isinstance(pool_name, str): raise SDKException('IndexPools', '101') client = self.get(pool_name) cloud_id = client.cloud_id req_json = IndexServerConstants.REQUEST_JSON.copy() req_json["opType"] = IndexServerConstants.OPERATION_DELETE req_json['cloudInfoEntity']['cloudId'] = cloud_id flag, response = self._cvpysdk_object.make_request( 'POST', self._services['CLOUD_DELETE'], req_json ) if flag: if response.json() and 'genericResp' in response.json() \ and 'errorCode' not in response.json()['genericResp']: self.refresh() return if response.json() and 'genericResp' in response.json(): raise SDKException( 'Response', '102', response.json()['genericResp'].get( 'errorMessage', '')) raise SDKException('Response', '102') self._response_not_success(response)
def get(self, pool_name)
-
Returns the IndexPool class object with given pool_name
Args
pool_name (int/str) – Index pool name present in commcell
Returns
object - instance of IndexPool class
Raises
SDKExecption: Data type of the input(s) is not valid
Index pool not found
Expand source code Browse git
def get(self, pool_name): """Returns the IndexPool class object with given pool_name Args: pool_name (int/str) -- Index pool name present in commcell Returns: object - instance of IndexPool class Raises: SDKExecption: Data type of the input(s) is not valid Index pool not found """ if isinstance(pool_name, int): for index_pool_name in self.all_index_pools: if self.all_index_pools[index_pool_name] == pool_name: return IndexPool(self._commcell_object, index_pool_name) elif isinstance(pool_name, str): if pool_name.lower() in self.all_index_pools: return IndexPool(self._commcell_object, pool_name.lower()) else: raise SDKException('IndexPools', '101') raise SDKException('IndexPools', '102')
def has_pool(self, pool_name)
-
Returns whether a index pool is present in the commcell or not
Args
pool_name (str) – Index pool name
Returns
bool - True if index pool with given pool_name is present else False
Expand source code Browse git
def has_pool(self, pool_name): """Returns whether a index pool is present in the commcell or not Args: pool_name (str) -- Index pool name Returns: bool - True if index pool with given pool_name is present else False """ return pool_name.lower() in self.all_index_pools
def refresh(self)
-
Refreshes the properties of IndexPools class
Expand source code Browse git
def refresh(self): """Refreshes the properties of IndexPools class""" self._commcell_object.clients.refresh() self._all_index_pools = {} self._get_all_index_pools()