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.

100 lines
2.6 KiB

# Copyright (C) 2005-2025 Splunk Inc. All Rights Reserved.
import itsi_py3
import time
from splunk.auth import getCurrentUser
from splunk.util import normalizeBoolean
from splunk import RESTException
from ITOA.storage import itoa_storage
from ITOA.itoa_common import get_current_utc_epoch
class ITSICounter(object):
def __init__(self, session_key, current_user_name=None, collection='itsi_counter',
user='nobody', action_dispatch_config=None, **kwargs): # noqa E128
self.session_key = session_key
self.user = user
self.current_user_name = current_user_name
self.object_type = 'itsi_counter'
self.storage_interface = itoa_storage.ITOAStorage(collection=collection)
def get(self, key, **kwargs):
"""
Get itsi_count object
@type key: basestring
@param key: name of counter
@rtype: dict
@return: return itsi_count schema
"""
try:
result = self.storage_interface.get(
self.session_key,
self.user,
self.object_type,
key,
current_user_name=self.current_user_name
)
return result
except Exception:
return None
def upsert(self, key, count, **kwargs): # noqa E128
"""
Sets itsi_count object
@type key: basestring
@param key: name of counter
@rtype: dict
@return: return itsi_count schema
"""
count_obj = self.get(key)
data = {"_key": key, "value": count}
if count_obj:
result = self.storage_interface.edit(
self.session_key,
self.user,
self.object_type,
key,
data,
current_user_name=self.current_user_name
)
else:
result = self.storage_interface.create(
self.session_key,
self.user,
self.object_type,
data,
current_user_name=self.current_user_name
)
return result
def delete(self, key, **kwargs):
"""
Deletes itsi_count object
@type key: basestring
@param key: name of counter
@rtype: dict
@return:
"""
try:
result = self.storage_interface.delete(
self.session_key,
self.user,
self.object_type,
key,
current_user_name=self.current_user_name
)
return result
except Exception:
return None