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

1"""ForceMerge Singleton"""

2 import click

3 from curator.cli_singletons.object_class import cli_action

4 from curator.cli_singletons.utils import get_width, validate_filter_json

5

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

7@click.option(

8 '--max_num_segments',

9 type=int,

10 required=True,

11 help='Maximum number of segments per shard (minimum of 1)'

12)

13@click.option(

14 '--delay',

15 type=float,

16 help='Time in seconds to delay between operations. Default 0. Maximum 3600'

17)

18@click.option(

19 '--ignore_empty_list',

20 is_flag=True,

21 help='Do not raise exception if there are no actionable indices'

22)

23@click.option(

24 '--allow_ilm_indices/--no-allow_ilm_indices',

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

26 default=False,

27 show_default=True

28)

29@click.option(

30 '--filter_list',

31 callback=validate_filter_json,

32 help='JSON array of filters selecting indices to act on.',

33 required=True)

34@click.pass_context

35 def forcemerge(ctx, max_num_segments, delay, ignore_empty_list, allow_ilm_indices, filter_list):

36 """

37 forceMerge Indices (reduce segment count)

38 """

39 manual_options = {

40 'max_num_segments': max_num_segments,

41 'delay': delay,

42 'allow_ilm_indices': allow_ilm_indices,

43 }

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

45 action = cli_action(

46 ctx.info_name, ctx.obj['config']['client'], manual_options, filter_list, ignore_empty_list)

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