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

1"""Allocation 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('--key', type=str, required=True, help='Node identification tag')

8@click.option('--value', type=str, default=None, help='Value associated with --key')

9@click.option('--allocation_type', type=click.Choice(['require', 'include', 'exclude']))

10@click.option(

11 '--wait_for_completion/--no-wait_for_completion',

12 default=False,

13 help='Wait for the allocation to complete',

14 show_default=True

15)

16@click.option(

17 '--max_wait',

18 default=-1,

19 type=int,

20 help='Maximum number of seconds to wait_for_completion',

21 show_default=True

22)

23@click.option(

24 '--wait_interval',

25 default=9,

26 type=int,

27 help='Seconds to wait between completion checks.',

28 show_default=True

29)

30@click.option(

31 '--ignore_empty_list',

32 is_flag=True,

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

34)

35@click.option(

36 '--allow_ilm_indices/--no-allow_ilm_indices',

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

38 default=False,

39 show_default=True

40)

41@click.option(

42 '--filter_list',

43 callback=validate_filter_json,

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

45 required=True

46)

47@click.pass_context

48 def allocation(

49 ctx,

50 key,

51 value,

52 allocation_type,

53 wait_for_completion,

54 max_wait,

55 wait_interval,

56 ignore_empty_list,

57 allow_ilm_indices,

58 filter_list

59 ):

60 """

61 Shard Routing Allocation

62 """

63 manual_options = {

64 'key': key,

65 'value': value,

66 'allocation_type': allocation_type,

67 'wait_for_completion': wait_for_completion,

68 'max_wait': max_wait,

69 'wait_interval': wait_interval,

70 'allow_ilm_indices': allow_ilm_indices,

71 }

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

73 action = cli_action(

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

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