Coverage for curator/cli_singletons/snapshot.py: 100%
21 statements
« prev ^ index » next coverage.py v7.3.0, created at 2023-08-16 15:27 -0600
« prev ^ index » next coverage.py v7.3.0, created at 2023-08-16 15:27 -0600
1"""Snapshot Singleton"""
2import click
3from curator.cli_singletons.object_class import cli_action
4from curator.cli_singletons.utils import get_width, validate_filter_json
6@click.command(context_settings=get_width())
7@click.option('--repository', type=str, required=True, help='Snapshot repository')
8@click.option(
9 '--name',
10 type=str,
11 help='Snapshot name',
12 show_default=True,
13 default='curator-%Y%m%d%H%M%S'
14)
15@click.option(
16 '--ignore_unavailable',
17 is_flag=True,
18 show_default=True,
19 help='Ignore unavailable shards/indices.'
20)
21@click.option(
22 '--include_global_state',
23 is_flag=True,
24 show_default=True,
25 help='Store cluster global state with snapshot.'
26)
27@click.option(
28 '--partial',
29 is_flag=True,
30 show_default=True,
31 help='Do not fail if primary shard is unavailable.'
32)
33@click.option(
34 '--wait_for_completion/--no-wait_for_completion',
35 default=True,
36 show_default=True,
37 help='Wait for the snapshot to complete'
38)
39@click.option(
40 '--wait_interval',
41 default=9,
42 type=int,
43 help='Seconds to wait between completion checks.'
44)
45@click.option(
46 '--max_wait',
47 default=-1,
48 type=int,
49 help='Maximum number of seconds to wait_for_completion'
50)
51@click.option(
52 '--skip_repo_fs_check',
53 is_flag=True,
54 show_default=True,
55 help='Skip repository filesystem access validation.'
56)
57@click.option(
58 '--ignore_empty_list',
59 is_flag=True,
60 help='Do not raise exception if there are no actionable indices'
61)
62@click.option(
63 '--allow_ilm_indices/--no-allow_ilm_indices',
64 help='Allow Curator to operate on Index Lifecycle Management monitored indices.',
65 default=False,
66 show_default=True
67)
68@click.option(
69 '--filter_list',
70 callback=validate_filter_json,
71 help='JSON array of filters selecting indices to act on.',
72 required=True
73)
74@click.pass_context
75def snapshot(
76 ctx, repository, name, ignore_unavailable, include_global_state, partial,
77 skip_repo_fs_check, wait_for_completion, wait_interval, max_wait, ignore_empty_list,
78 allow_ilm_indices, filter_list
79 ):
80 """
81 Snapshot Indices
82 """
83 manual_options = {
84 'name': name,
85 'repository': repository,
86 'ignore_unavailable': ignore_unavailable,
87 'include_global_state': include_global_state,
88 'partial': partial,
89 'skip_repo_fs_check': skip_repo_fs_check,
90 'wait_for_completion': wait_for_completion,
91 'max_wait': max_wait,
92 'wait_interval': wait_interval,
93 'allow_ilm_indices': allow_ilm_indices,
94 }
95 # ctx.info_name is the name of the function or name specified in @click.command decorator
96 action = cli_action(
97 ctx.info_name, ctx.obj['config']['client'], manual_options, filter_list, ignore_empty_list)
98 action.do_singleton_action(dry_run=ctx.obj['dry_run'])