Curator API returns None


(Tomer Leibovich) #1

Hi there,

I'm attempting to write a python code that will perform the actions that I'm currently doing in the curator-cli. The goal is to have Lambda that will perform several actions that are related but not restricted to ELK and Curator.

Some actions I was able to perform while others are not clear as to why they aren't working.
For example, snapshots are successful, but any indices actions fails.

Using this code:

client = elasticsearch.Elasticsearch()
ilo = curator.IndexList(client)
print(ilo)

This will print all the indices, but if I'll do:

ilo = curator.IndexList(client).filter_by_regex(kind='prefix', value='kubernetes-')
curator.Replicas(ilo,count='2').do_action()

It will fail with:
TypeError: Not an IndexList object. Type: <type 'NoneType'>.

Any idea?


(Aaron Mildenstein) #2

You cannot do it this way. The object has to first be instantiated.

ilo = curator.IndexList(client)
ilo.filter_by_regex(kind='prefix', value='Kubernetes-')
curator.Replicas(ilo, count=2).do_action()

The above should work. 3 steps instead of 2. If it doesn't, then do the same with the Replicas object. Instantiate first, then do_action().


(Aaron Mildenstein) #3

I should probably point out that you got that result because you're assigning the
output of an object method (filter_by_regex) to ilo, rather than making ilo an object by instantiating it on its own. Because of this, you cannot pass ilo to curator.Replicas, because it's not actually an IndexList object.


(Tomer Leibovich) #4

Thanks, it worked out.

So, if using the filter, how can I retrieve and print the index list that was filtered out?


(Aaron Mildenstein) #5

Once you have an IndexList object, the working list is always stored in the indices instance variable (it's in the documentation, but the methods and variables are, unfortunately, listed alphabetically, so it's down the page pretty far).

ilo = curator.IndexList(client)
print(ilo.indices) # Prints all discovered indices (the current working list)
ilo.filter_by_regex(kind='prefix', value='kubernetes-') 
print(ilo.indices) # Prints the current working list (post-filter)

(system) #6

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.