I'm trying to modify a saved search's permissions using the python SDK and I'm running into problems. Basically I'm not sure how to actually do it or if it's even possible. I can see these settings just fine:
try: service = initSplunk() # Returns a client.connect object except: print "Couldn't get a connection" exit(1) for saved_search in service.saved_searches: access = saved_search.access print"[%s]" % saved_search.name for key in access: print " %s = %s" % (key , access[key])
If I run this bit of code on my local splunk install, it prints out the access settings for my one saved search "test_search":
[test_search] can_change_perms = 1 sharing = user can_share_global = 1 app = webtest modifiable = 1 can_list = 1 can_share_user = 1 can_share_app = 1 perms = None removable = 1 can_write = 1 owner = admin
The problem is, saved_search.access is a splunklib.data.Record which doesn't seem to have any sort of update function. If I try to use saved_search.update, it doesn't recognize "access". I'm not sure if I'm just using the wrong key words here or if this is impossible to do.
Thanks for the assistance!
Finally, I could accomplish it in Java. Probably will help you to accomplish it in Python.
Java Sample code:
SavedSearch savedSearch = service.getSavedSearches().get("my only saved search"); String aclPath = savedSearch.getPath().toString().concat("/acl"); Args args = new Args(); args2.add("owner", "their_user"); args2.add("sharing","app"); args2.add("perms.read", "where_user,queue_user"); args2.add("perms.write", "who_user, which_user"); ResponseMessage rms=service.post(savedSearch.getPath()+"/acl", args2);
Works for me !