# Copyright (C) 2005-2024 Splunk Inc. All Rights Reserved. from ITOA.itoa_object import ItoaObject from ITOA.setup_logging import logger class ItsiKpiEntityThreshold(ItoaObject): ''' Implements ITSI KPI Entity Threshold for Entity level Adaptive Thresholding ''' log_prefix = '[ITSI KPI Entity Threshold] ' collection_name = 'itsi_entity_thresholds' # TODO: Make this object Securable def __init__(self, session_key, current_user_name): super(ItsiKpiEntityThreshold, self).__init__( session_key, current_user_name, 'kpi_entity_threshold', collection_name=self.collection_name, is_securable_object=False, title_validation_required=False) def do_object_validation(self, owner, objects, validate_name=True, dupname_tag=None, transaction_id=None, skip_local_failure=False, ignore_same_key=False): super(ItsiKpiEntityThreshold, self).do_object_validation(owner, objects, validate_name, dupname_tag, transaction_id=transaction_id) for json_data in objects: if not (json_data.get('kpi_id', None) and json_data.get('entity_title', None)): self.raise_error_bad_validation(logger, 'KPI Id and Entity Title are required for the object_type: {}.'.format(self.object_type)) json_data["entity_key"] = json_data.get('entity_key', 'N/A') # TODO: Update super delete_bulk method for performance improment def delete_bulk( self, owner, filter_data=None, req_source='unknown', transaction_id=None ): """ Overwrites ItoaObject.delete_bulk() to remove dependency checks and only remove objects Deletes objects matching criteria, if no filtering specified, deletes all objects of this object type @type owner: string @param owner: user who is performing this operation @type filter_data: dictionary @param filter_data: json filter constructed to filter data. Follows mongodb syntax @type req_source: string @param req_source: identified source initiating the operation @return: none, throws exceptions on errors """ # Delete all the filtered objects self.storage_interface.delete_all( self.session_key, owner, self.object_type, filter_data=filter_data, current_user_name=self.current_user_name ) logger.debug( 'Objects of type %s deleted, request source: %s' % (self.object_type, req_source))