diff --git a/splunklib/client.py b/splunklib/client.py index a9ae396a..21d27a6e 100644 --- a/splunklib/client.py +++ b/splunklib/client.py @@ -403,6 +403,7 @@ class Service(_BaseService): def __init__(self, **kwargs): super(Service, self).__init__(**kwargs) self._splunk_version = None + self._kvstore_owner = None @property def apps(self): @@ -675,12 +676,34 @@ def splunk_version(self): self._splunk_version = tuple([int(p) for p in self.info['version'].split('.')]) return self._splunk_version + @property + def kvstore_owner(self): + """Returns the KVStore owner for this instance of Splunk. + + By default is the kvstore owner is not set, it will return "nobody" + :return: A string with the KVStore owner. + """ + if self._kvstore_owner is None: + self._kvstore_owner = "nobody" + return self._kvstore_owner + + @kvstore_owner.setter + def kvstore_owner(self, value): + """ + kvstore is refreshed, when the owner value is changed + """ + self._kvstore_owner = value + self.kvstore + @property def kvstore(self): """Returns the collection of KV Store collections. + sets the owner for the namespace, before retrieving the KVStore Collection + :return: A :class:`KVStoreCollections` collection of :class:`KVStoreCollection` entities. """ + self.namespace['owner'] = self.kvstore_owner return KVStoreCollections(self) @property diff --git a/tests/test_kvstore_batch.py b/tests/test_kvstore_batch.py index 14806a69..d32b665e 100755 --- a/tests/test_kvstore_batch.py +++ b/tests/test_kvstore_batch.py @@ -26,7 +26,7 @@ class KVStoreBatchTestCase(testlib.SDKTestCase): def setUp(self): super(KVStoreBatchTestCase, self).setUp() - self.service.namespace['owner'] = 'nobody' + #self.service.namespace['owner'] = 'nobody' self.service.namespace['app'] = 'search' confs = self.service.kvstore if ('test' in confs): diff --git a/tests/test_kvstore_conf.py b/tests/test_kvstore_conf.py index a587712e..a2453728 100755 --- a/tests/test_kvstore_conf.py +++ b/tests/test_kvstore_conf.py @@ -25,16 +25,16 @@ class KVStoreConfTestCase(testlib.SDKTestCase): def setUp(self): super(KVStoreConfTestCase, self).setUp() - self.service.namespace['owner'] = 'nobody' + #self.service.namespace['owner'] = 'nobody' self.service.namespace['app'] = 'search' self.confs = self.service.kvstore if ('test' in self.confs): self.confs['test'].delete() def test_owner_restriction(self): - self.service.namespace['owner'] = 'admin' + self.service.kvstore_owner = 'admin' self.assertRaises(client.HTTPError, lambda: self.confs.list()) - self.service.namespace['owner'] = 'nobody' + self.service.kvstore_owner = 'nobody' def test_create_delete_collection(self): self.confs.create('test') diff --git a/tests/test_kvstore_data.py b/tests/test_kvstore_data.py index 1551f1c6..6ddeae68 100755 --- a/tests/test_kvstore_data.py +++ b/tests/test_kvstore_data.py @@ -27,7 +27,7 @@ class KVStoreDataTestCase(testlib.SDKTestCase): def setUp(self): super(KVStoreDataTestCase, self).setUp() - self.service.namespace['owner'] = 'nobody' + #self.service.namespace['owner'] = 'nobody' self.service.namespace['app'] = 'search' self.confs = self.service.kvstore if ('test' in self.confs):