Coverage for curator/validators/options.py: 100%
13 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
1from voluptuous import Schema
2from curator.defaults import option_defaults
4## Methods for building the schema
5def action_specific(action):
6 options = {
7 'alias' : [
8 option_defaults.name(action),
9 option_defaults.warn_if_no_indices(),
10 option_defaults.extra_settings(),
11 ],
12 'allocation' : [
13 option_defaults.key(),
14 option_defaults.value(),
15 option_defaults.allocation_type(),
16 option_defaults.wait_for_completion(action),
17 option_defaults.wait_interval(action),
18 option_defaults.max_wait(action),
19 ],
20 'close' : [
21 option_defaults.delete_aliases(),
22 option_defaults.skip_flush(),
23 option_defaults.ignore_sync_failures(),
24 ],
25 'cluster_routing' : [
26 option_defaults.routing_type(),
27 option_defaults.cluster_routing_setting(),
28 option_defaults.cluster_routing_value(),
29 option_defaults.wait_for_completion(action),
30 option_defaults.wait_interval(action),
31 option_defaults.max_wait(action),
32 ],
33 'create_index' : [
34 option_defaults.name(action),
35 option_defaults.ignore_existing(),
36 option_defaults.extra_settings(),
37 ],
38 'delete_indices' : [],
39 'delete_snapshots' : [
40 option_defaults.repository(),
41 option_defaults.retry_interval(),
42 option_defaults.retry_count(),
43 ],
44 'forcemerge' : [
45 option_defaults.delay(),
46 option_defaults.max_num_segments(),
47 ],
48 'freeze': [],
49 'index_settings' : [
50 option_defaults.index_settings(),
51 option_defaults.ignore_unavailable(),
52 option_defaults.preserve_existing(),
53 ],
54 'open' : [],
55 'reindex' : [
56 option_defaults.request_body(),
57 option_defaults.refresh(),
58 option_defaults.requests_per_second(),
59 option_defaults.slices(),
60 option_defaults.timeout(action),
61 option_defaults.wait_for_active_shards(action),
62 option_defaults.wait_for_completion(action),
63 option_defaults.wait_interval(action),
64 option_defaults.max_wait(action),
65 option_defaults.remote_certificate(),
66 option_defaults.remote_client_cert(),
67 option_defaults.remote_client_key(),
68 option_defaults.remote_aws_key(),
69 option_defaults.remote_aws_secret_key(),
70 option_defaults.remote_aws_region(),
71 option_defaults.remote_filters(),
72 option_defaults.remote_url_prefix(),
73 option_defaults.remote_ssl_no_validate(),
74 option_defaults.migration_prefix(),
75 option_defaults.migration_suffix(),
76 ],
77 'replicas' : [
78 option_defaults.count(),
79 option_defaults.wait_for_completion(action),
80 option_defaults.wait_interval(action),
81 option_defaults.max_wait(action),
82 ],
83 'rollover' : [
84 option_defaults.name(action),
85 option_defaults.new_index(),
86 option_defaults.conditions(),
87 option_defaults.extra_settings(),
88 option_defaults.wait_for_active_shards(action),
89 ],
90 'restore' : [
91 option_defaults.repository(),
92 option_defaults.name(action),
93 option_defaults.indices(),
94 option_defaults.ignore_unavailable(),
95 option_defaults.include_aliases(),
96 option_defaults.include_global_state(action),
97 option_defaults.partial(),
98 option_defaults.rename_pattern(),
99 option_defaults.rename_replacement(),
100 option_defaults.extra_settings(),
101 option_defaults.wait_for_completion(action),
102 option_defaults.wait_interval(action),
103 option_defaults.max_wait(action),
104 option_defaults.skip_repo_fs_check(),
105 ],
106 'snapshot' : [
107 option_defaults.repository(),
108 option_defaults.name(action),
109 option_defaults.ignore_unavailable(),
110 option_defaults.include_global_state(action),
111 option_defaults.partial(),
112 option_defaults.wait_for_completion(action),
113 option_defaults.wait_interval(action),
114 option_defaults.max_wait(action),
115 option_defaults.skip_repo_fs_check(),
116 ],
117 'shrink' : [
118 option_defaults.shrink_node(),
119 option_defaults.node_filters(),
120 option_defaults.number_of_shards(),
121 option_defaults.number_of_replicas(),
122 option_defaults.shrink_prefix(),
123 option_defaults.shrink_suffix(),
124 option_defaults.copy_aliases(),
125 option_defaults.delete_after(),
126 option_defaults.post_allocation(),
127 option_defaults.wait_for_active_shards(action),
128 option_defaults.extra_settings(),
129 option_defaults.wait_for_completion(action),
130 option_defaults.wait_for_rebalance(),
131 option_defaults.wait_interval(action),
132 option_defaults.max_wait(action),
133 ],
134 'unfreeze': [],
135 }
136 return options[action]
138def get_schema(action):
139 # Appending the options dictionary seems to be the best way, since the
140 # "Required" and "Optional" elements are hashes themselves.
141 options = {}
142 defaults = [
143 option_defaults.allow_ilm_indices(),
144 option_defaults.continue_if_exception(),
145 option_defaults.disable_action(),
146 option_defaults.ignore_empty_list(),
147 option_defaults.timeout_override(action),
148 ]
149 for each in defaults:
150 options.update(each)
151 for each in action_specific(action):
152 options.update(each)
153 return Schema(options)