Skip to content

Commit fe6b5ba

Browse files
committed
update support for accelerated_fields of kvstore
1 parent 418a174 commit fe6b5ba

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

splunklib/client.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3709,24 +3709,31 @@ class KVStoreCollections(Collection):
37093709
def __init__(self, service):
37103710
Collection.__init__(self, service, 'storage/collections/config', item=KVStoreCollection)
37113711

3712-
def create(self, name, indexes = {}, fields = {}, **kwargs):
3712+
def __getitem__(self, item):
3713+
res = Collection.__getitem__(self, item)
3714+
for k, v in res.content.items():
3715+
if "accelerated_fields" in k:
3716+
res.content[k] = json.loads(v)
3717+
return res
3718+
3719+
def create(self, name, accelerated_fields={}, fields={}, **kwargs):
37133720
"""Creates a KV Store Collection.
37143721
37153722
:param name: name of collection to create
37163723
:type name: ``string``
3717-
:param indexes: dictionary of index definitions
3718-
:type indexes: ``dict``
3724+
:param accelerated_fields: dictionary of accelerated_fields definitions
3725+
:type accelerated_fields: ``dict``
37193726
:param fields: dictionary of field definitions
37203727
:type fields: ``dict``
37213728
:param kwargs: a dictionary of additional parameters specifying indexes and field definitions
37223729
:type kwargs: ``dict``
37233730
37243731
:return: Result of POST request
37253732
"""
3726-
for k, v in six.iteritems(indexes):
3733+
for k, v in six.iteritems(accelerated_fields):
37273734
if isinstance(v, dict):
37283735
v = json.dumps(v)
3729-
kwargs['index.' + k] = v
3736+
kwargs['accelerated_fields.' + k] = v
37303737
for k, v in six.iteritems(fields):
37313738
kwargs['field.' + k] = v
37323739
return self.post(name=name, **kwargs)
@@ -3740,18 +3747,20 @@ def data(self):
37403747
"""
37413748
return KVStoreCollectionData(self)
37423749

3743-
def update_index(self, name, value):
3750+
def update_accelerated_field(self, name, value):
37443751
"""Changes the definition of a KV Store index.
37453752
3746-
:param name: name of index to change
3753+
:param name: name of accelerated_fields to change
37473754
:type name: ``string``
3748-
:param value: new index definition
3749-
:type value: ``dict`` or ``string``
3755+
:param value: new accelerated_fields definition
3756+
:type value: ``dict``
37503757
37513758
:return: Result of POST request
37523759
"""
37533760
kwargs = {}
3754-
kwargs['index.' + name] = value if isinstance(value, six.string_types) else json.dumps(value)
3761+
if isinstance(value, dict):
3762+
value = json.dumps(value)
3763+
kwargs['accelerated_fields.' + name] = value
37553764
return self.post(**kwargs)
37563765

37573766
def update_field(self, name, value):

tests/test_kvstore_conf.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,26 @@ def test_create_delete_collection(self):
4242
self.confs['test'].delete()
4343
self.assertTrue(not 'test' in self.confs)
4444

45+
def test_create_fields(self):
46+
self.confs.create('test', accelerated_fields={'ind1':{'a':1}}, fields={'a':'number1'})
47+
self.assertEqual(self.confs['test']['field.a'], 'number1')
48+
self.assertEqual(self.confs['test']['accelerated_fields.ind1'], {"a": 1})
49+
self.confs['test'].delete()
50+
4551
def test_update_collection(self):
4652
self.confs.create('test')
4753
self.confs['test'].post(**{'accelerated_fields.ind1': '{"a": 1}', 'field.a': 'number'})
4854
self.assertEqual(self.confs['test']['field.a'], 'number')
4955
self.assertEqual(self.confs['test']['accelerated_fields.ind1'], '{"a": 1}')
5056
self.confs['test'].delete()
5157

58+
def test_update_accelerated_fields(self):
59+
self.confs.create('test', accelerated_fields={'ind1':{'a':1}})
60+
self.assertEqual(self.confs['test']['accelerated_fields.ind1'], {'a': 1})
61+
# update accelerated_field value
62+
self.confs['test'].update_accelerated_field('ind1', {'a': -1})
63+
self.assertEqual(self.confs['test']['accelerated_fields.ind1'], {'a': -1})
64+
self.confs['test'].delete()
5265

5366
def test_update_fields(self):
5467
self.confs.create('test')

0 commit comments

Comments
 (0)