Coverage for curator/cli_singletons/rollover.py: 100%

1"""Index Rollover Singleton"""

2 import click

3 from curator.cli_singletons.object_class import cli_action

4 from curator.cli_singletons.utils import get_width, json_to_dict, validate_filter_json

5

6@click.command(context_settings=get_width())

7@click.option('--name', type=str, help='Alias name', required=True)

8@click.option('--max_age', type=str, help='max_age condition value (see documentation)')

9@click.option('--max_docs', type=str, help='max_docs condition value (see documentation)')

10@click.option('--max_size', type=str, help='max_size condition value (see documentation)')

11@click.option(

12 '--extra_settings',

13 type=str,

14 help='JSON version of extra_settings (see documentation)',

15 callback=json_to_dict

16)

17@click.option(

18 '--new_index',

19 type=str,

20 help='Optional new index name (see documentation)'

21)

22@click.option(

23 '--wait_for_active_shards',

24 type=int,

25 default=1,

26 show_default=True,

27 help='Wait for number of shards to be active before returning'

28)

29@click.option(

30 '--allow_ilm_indices/--no-allow_ilm_indices',

31 help='Allow Curator to operate on Index Lifecycle Management monitored indices.',

32 default=False,

33 show_default=True

34)

35@click.pass_context

36 def rollover(

37 ctx, name, max_age, max_docs, max_size, extra_settings, new_index, wait_for_active_shards,

38 allow_ilm_indices

39 ):

40 """

41 Rollover Index associated with Alias

42 """

43 conditions = {}

44 for cond in ['max_age', 'max_docs', 'max_size']:

45 if eval(cond) is not None:

46 conditions[cond] = eval(cond)

47 manual_options = {

48 'name': name,

49 'conditions': conditions,

50 'allow_ilm_indices': allow_ilm_indices,

51 }

52 # ctx.info_name is the name of the function or name specified in @click.command decorator

53 action = cli_action(

54 ctx.info_name, ctx.obj['config']['client'], manual_options, [], True,

55 extra_settings=extra_settings,

56 new_index=new_index,

57 wait_for_active_shards=wait_for_active_shards

58 )

59 action.do_singleton_action(dry_run=ctx.obj['dry_run'])