You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
2.5 KiB

# Copyright (C) 2005-2024 Splunk Inc. All Rights Reserved.
import itsi_py3
from itsi_py3 import _
from ITOA.itoa_object import ItoaObject, CRUDMethodTypes
from ITOA.itoa_common import normalize_num_field, is_valid_str, is_valid_num
from ITOA.setup_logging import logger
class ItsiEventManagementState(ItoaObject):
'''
Implements ITSI event management state to store settings for event management view
'''
log_prefix = '[ITSI Event Management State] '
collection_name = 'itsi_event_management'
def __init__(self, session_key, current_user_name):
super(ItsiEventManagementState, self).__init__(
session_key,
current_user_name,
'event_management_state',
collection_name=self.collection_name,
title_validation_required=True
)
def do_additional_setup(self, owner, objects, req_source='unknown', method=CRUDMethodTypes.METHOD_UPSERT, transaction_id=None, skip_local_failure=False):
# Do validations for data consistency
for json_data in objects:
# Assume json_data is valid
normalize_num_field(json_data, 'fetchLimit')
normalize_num_field(json_data, 'realTimeRefreshRate')
str_types = ['earliest']
for str_type in str_types:
# 'earliest' time can be relative string or epoch number, is_valid_str returns False for '' (empty string)
if not is_valid_str(json_data.get(str_type)) and not is_valid_num(json_data.get(str_type)):
# If earliest is set to '' (empty string) and latest is set to a valid value, then user may have chosen a "Before" time range
if isinstance(json_data.get(str_type), itsi_py3.string_type) and not json_data.get(str_type) and (
is_valid_str(json_data.get('latest')) or is_valid_num(json_data.get('latest'))):
pass
else:
self.raise_error_bad_validation(
logger,
_('An invalid value is specified for {0}. Specify a valid value.').format(str_type)
)
if not 'filterCollection' in json_data:
json_data['filterCollection'] = []
if not isinstance(json_data['filterCollection'], list):
self.raise_error_bad_validation(
logger,
_('Invalid filterCollection list specified. Specify a valid filterCollection list.')
)