1CURATOR(1) Elasticsearch Curator CURATOR(1)
2
3
4
6 curator - Elasticsearch Curator Documentation
7
8 The Elasticsearch Curator Python API helps you manage your indices and
9 snapshots.
10
11 NOTE:
12 This documentation is for the Elasticsearch Curator Python API.
13 Documentation for the Elasticsearch Curator CLI -- which uses this
14 API and is installed as an entry_point as part of the package -- is
15 available in the Elastic guide.
16
18 The Elasticsearch Curator Python API is compatible with Elasticsearch
19 versions 2.x through 5.0, and supports Python versions 2.6 and later.
20
22 import elasticsearch
23 import curator
24
25 client = elasticsearch.Elasticsearch()
26
27 ilo = curator.IndexList(client)
28 ilo.filter_by_regex(kind='prefix', value='logstash-')
29 ilo.filter_by_age(source='name', direction='older', timestring='%Y.%m.%d', unit='days', unit_count=30)
30 delete_indices = curator.DeleteIndices(ilo)
31 delete_indices.do_action()
32
33 TIP:
34 See more examples in the Examples page.
35
37 The API methods fall into the following categories:
38
39 · Object Classes build and filter index list or snapshot list objects.
40
41 · Action Classes act on object classes.
42
43 · Utilities are helper methods.
44
45 Logging
46 The Elasticsearch Curator Python API uses the standard logging library
47 from Python. It inherits two loggers from elasticsearch-py: elastic‐
48 search and elasticsearch.trace. Clients use the elasticsearch logger to
49 log standard activity, depending on the log level. The elastic‐
50 search.trace logger logs requests to the server in JSON format as
51 pretty-printed curl commands that you can execute from the command
52 line. The elasticsearch.trace logger is not inherited from the base
53 logger and must be activated separately.
54
56 Object Classes
57 · IndexList
58
59 · SnapshotList
60
61 IndexList
62 class curator.indexlist.IndexList(client)
63
64 all_indices = None
65 Instance variable. All indices in the cluster at
66 instance creation time. Type: list()
67
68 client = None
69 An Elasticsearch Client object Also accessible as an
70 instance variable.
71
72 empty_list_check()
73 Raise exception if indices is empty
74
75 filter_allocated(key=None, value=None, alloca‐
76 tion_type='require', exclude=True)
77 Match indices that have the routing allocation rule of
78 key=value from indices
79
80 Parameters
81
82 · key -- The allocation attribute to check for
83
84 · value -- The value to check for
85
86 · allocation_type -- Type of allocation to apply
87
88 · exclude -- If exclude is True, this filter will
89 remove matching indices from indices. If exclude
90 is False, then only matching indices will be
91 kept in indices. Default is True
92
93 filter_by_age(source='name', direction=None, timestring=None,
94 unit=None, unit_count=None, field=None,
95 stats_result='min_value', epoch=None, exclude=False)
96 Match indices by relative age calculations.
97
98 Parameters
99
100 · source -- Source of index age. Can be one of
101 'name', 'creation_date', or 'field_stats'
102
103 · direction -- Time to filter, either older or
104 younger
105
106 · timestring -- An strftime string to match the
107 datestamp in an index name. Only used for index
108 filtering by name.
109
110 · unit -- One of seconds, minutes, hours, days,
111 weeks, months, or years.
112
113 · unit_count -- The number of unit``s.
114 ``unit_count * unit will be calculated out to
115 the relative number of seconds.
116
117 · field -- A timestamp field name. Only used for
118 field_stats based calculations.
119
120 · stats_result -- Either min_value or max_value.
121 Only used in conjunction with
122 source`=``field_stats` to choose whether to ref‐
123 erence the minimum or maximum result value.
124
125 · epoch -- An epoch timestamp used in conjunction
126 with unit and unit_count to establish a point of
127 reference for calculations. If not provided,
128 the current time will be used.
129
130 · exclude -- If exclude is True, this filter will
131 remove matching indices from indices. If exclude
132 is False, then only matching indices will be
133 kept in indices. Default is False
134
135 filter_by_alias(aliases=None, exclude=False)
136 Match indices which are associated with the alias identi‐
137 fied by name
138
139 Parameters
140
141 · aliases (list) -- A list of alias names.
142
143 · exclude -- If exclude is True, this filter will
144 remove matching indices from indices. If exclude
145 is False, then only matching indices will be
146 kept in indices. Default is False
147
148 filter_by_count(count=None, reverse=True, use_age=False,
149 source='creation_date', timestring=None, field=None,
150 stats_result='min_value', exclude=True)
151 Remove indices from the actionable list beyond the number
152 count, sorted reverse-alphabetically by default. If you
153 set reverse to False, it will be sorted alphabetically.
154
155 The default is usually what you will want. If only one
156 kind of index is provided--for example, indices matching
157 logstash-%Y.%m.%d--then reverse alphabetical sorting will
158 mean the oldest will remain in the list, because lower
159 numbers in the dates mean older indices.
160
161 By setting reverse to False, then index3 will be deleted
162 before index2, which will be deleted before index1
163
164 use_age allows ordering indices by age. Age is determined
165 by the index creation date by default, but you can spec‐
166 ify an source of name, max_value, or min_value. The name
167 source requires the timestring argument.
168
169 Parameters
170
171 · count -- Filter indices beyond count.
172
173 · reverse -- The filtering direction. (default:
174 True).
175
176 · use_age -- Sort indices by age. source is
177 required in this case.
178
179 · source -- Source of index age. Can be one of
180 name, creation_date, or field_stats. Default:
181 creation_date
182
183 · timestring -- An strftime string to match the
184 datestamp in an index name. Only used if source
185 name is selected.
186
187 · field -- A timestamp field name. Only used if
188 source field_stats is selected.
189
190 · stats_result -- Either min_value or max_value.
191 Only used if source field_stats is selected. It
192 determines whether to reference the minimum or
193 maximum value of field in each index.
194
195 · exclude -- If exclude is True, this filter will
196 remove matching indices from indices. If exclude
197 is False, then only matching indices will be
198 kept in indices. Default is True
199
200 filter_by_regex(kind=None, value=None, exclude=False)
201 Match indices by regular expression (pattern).
202
203 Parameters
204
205 · kind -- Can be one of: suffix, prefix, regex, or
206 timestring. This option defines what kind of
207 filter you will be building.
208
209 · value -- Depends on kind. It is the strftime
210 string if kind is timestring. It's used to build
211 the regular expression for other kinds.
212
213 · exclude -- If exclude is True, this filter will
214 remove matching indices from indices. If exclude
215 is False, then only matching indices will be
216 kept in indices. Default is False
217
218 filter_by_space(disk_space=None, reverse=True, use_age=False,
219 source='creation_date', timestring=None, field=None,
220 stats_result='min_value', exclude=False)
221 Remove indices from the actionable list based on space
222 consumed, sorted reverse-alphabetically by default. If
223 you set reverse to False, it will be sorted alphabeti‐
224 cally.
225
226 The default is usually what you will want. If only one
227 kind of index is provided--for example, indices matching
228 logstash-%Y.%m.%d--then reverse alphabetical sorting will
229 mean the oldest will remain in the list, because lower
230 numbers in the dates mean older indices.
231
232 By setting reverse to False, then index3 will be deleted
233 before index2, which will be deleted before index1
234
235 use_age allows ordering indices by age. Age is determined
236 by the index creation date by default, but you can spec‐
237 ify an source of name, max_value, or min_value. The name
238 source requires the timestring argument.
239
240 Parameters
241
242 · disk_space -- Filter indices over n gigabytes
243
244 · reverse -- The filtering direction. (default:
245 True). Ignored if use_age is True
246
247 · use_age -- Sort indices by age. source is
248 required in this case.
249
250 · source -- Source of index age. Can be one of
251 name, creation_date, or field_stats. Default:
252 creation_date
253
254 · timestring -- An strftime string to match the
255 datestamp in an index name. Only used if source
256 name is selected.
257
258 · field -- A timestamp field name. Only used if
259 source field_stats is selected.
260
261 · stats_result -- Either min_value or max_value.
262 Only used if source field_stats is selected. It
263 determines whether to reference the minimum or
264 maximum value of field in each index.
265
266 · exclude -- If exclude is True, this filter will
267 remove matching indices from indices. If exclude
268 is False, then only matching indices will be
269 kept in indices. Default is False
270
271 filter_closed(exclude=True)
272 Filter out closed indices from indices
273
274 Parameters
275 exclude -- If exclude is True, this filter will
276 remove matching indices from indices. If exclude
277 is False, then only matching indices will be kept
278 in indices. Default is True
279
280 filter_forceMerged(max_num_segments=None, exclude=True)
281 Match any index which has max_num_segments per shard or
282 fewer in the actionable list.
283
284 Parameters
285
286 · max_num_segments -- Cutoff number of segments
287 per shard.
288
289 · exclude -- If exclude is True, this filter will
290 remove matching indices from indices. If exclude
291 is False, then only matching indices will be
292 kept in indices. Default is True
293
294 filter_kibana(exclude=True)
295 Match any index named .kibana, kibana-int, .mar‐
296 vel-kibana, or .marvel-es-data in indices.
297
298 Parameters
299 exclude -- If exclude is True, this filter will
300 remove matching indices from indices. If exclude
301 is False, then only matching indices will be kept
302 in indices. Default is True
303
304 filter_opened(exclude=True)
305 Filter out opened indices from indices
306
307 Parameters
308 exclude -- If exclude is True, this filter will
309 remove matching indices from indices. If exclude
310 is False, then only matching indices will be kept
311 in indices. Default is True
312
313 index_info = None
314 Instance variable. Information extracted from indices,
315 such as segment count, age, etc. Populated at instance
316 creation time, and by other private helper methods, as
317 needed. Type: dict()
318
319 indices = None
320 Instance variable. The running list of indices which
321 will be used by an Action class. Populated at instance
322 creation time. Type: list()
323
324 iterate_filters(filter_dict)
325 Iterate over the filters defined in config and execute
326 them.
327
328 Parameters
329 filter_dict -- The configuration dictionary
330
331 NOTE:
332 filter_dict should be a dictionary with the following
333 form:
334
335 { 'filters' : [
336 {
337 'filtertype': 'the_filter_type',
338 'key1' : 'value1',
339 ...
340 'keyN' : 'valueN'
341 }
342 ]
343 }
344
345 working_list()
346 Return the current value of indices as copy-by-value to
347 prevent list stomping during iterations
348
349 SnapshotList
350 class curator.snapshotlist.SnapshotList(client, repository=None)
351
352 client = None
353 An Elasticsearch Client object. Also accessible as an
354 instance variable.
355
356 empty_list_check()
357 Raise exception if snapshots is empty
358
359 filter_by_age(source='creation_date', direction=None,
360 timestring=None, unit=None, unit_count=None, epoch=None,
361 exclude=False)
362 Remove snapshots from snapshots by relative age calcula‐
363 tions.
364
365 Parameters
366
367 · source -- Source of snapshot age. Can be 'name',
368 or 'creation_date'.
369
370 · direction -- Time to filter, either older or
371 younger
372
373 · timestring -- An strftime string to match the
374 datestamp in an snapshot name. Only used for
375 snapshot filtering by name.
376
377 · unit -- One of seconds, minutes, hours, days,
378 weeks, months, or years.
379
380 · unit_count -- The number of unit``s.
381 ``unit_count * unit will be calculated out to
382 the relative number of seconds.
383
384 · epoch -- An epoch timestamp used in conjunction
385 with unit and unit_count to establish a point of
386 reference for calculations. If not provided,
387 the current time will be used.
388
389 · exclude -- If exclude is True, this filter will
390 remove matching snapshots from snapshots. If
391 exclude is False, then only matching snapshots
392 will be kept in snapshots. Default is False
393
394 filter_by_count(count=None, reverse=True, use_age=False,
395 source='creation_date', timestring=None, exclude=True)
396 Remove snapshots from the actionable list beyond the num‐
397 ber count, sorted reverse-alphabetically by default. If
398 you set reverse to False, it will be sorted alphabeti‐
399 cally.
400
401 The default is usually what you will want. If only one
402 kind of snapshot is provided--for example, snapshots
403 matching curator-%Y%m%d%H%M%S-- then reverse alphabetical
404 sorting will mean the oldest will remain in the list,
405 because lower numbers in the dates mean older snapshots.
406
407 By setting reverse to False, then snapshot3 will be acted
408 on before snapshot2, which will be acted on before snap‐
409 shot1
410
411 use_age allows ordering snapshots by age. Age is deter‐
412 mined by the snapshot creation date (as identified by
413 start_time_in_millis) by default, but you can also spec‐
414 ify a source of name. The name source requires the
415 timestring argument.
416
417 Parameters
418
419 · count -- Filter snapshots beyond count.
420
421 · reverse -- The filtering direction. (default:
422 True).
423
424 · use_age -- Sort snapshots by age. source is
425 required in this case.
426
427 · source -- Source of snapshot age. Can be one of
428 name, or creation_date. Default: creation_date
429
430 · timestring -- An strftime string to match the
431 datestamp in a snapshot name. Only used if
432 source name is selected.
433
434 · exclude -- If exclude is True, this filter will
435 remove matching snapshots from snapshots. If
436 exclude is False, then only matching snapshots
437 will be kept in snapshots. Default is True
438
439 filter_by_regex(kind=None, value=None, exclude=False)
440 Filter out snapshots not matching the pattern, or in the
441 case of exclude, filter those matching the pattern.
442
443 Parameters
444
445 · kind -- Can be one of: suffix, prefix, regex, or
446 timestring. This option defines what kind of
447 filter you will be building.
448
449 · value -- Depends on kind. It is the strftime
450 string if kind is timestring. It's used to build
451 the regular expression for other kinds.
452
453 · exclude -- If exclude is True, this filter will
454 remove matching snapshots from snapshots. If
455 exclude is False, then only matching snapshots
456 will be kept in snapshots. Default is False
457
458 filter_by_state(state=None, exclude=False)
459 Filter out snapshots not matching state, or in the case
460 of exclude, filter those matching state.
461
462 Parameters
463
464 · state -- The snapshot state to filter for. Must
465 be one of SUCCESS, PARTIAL, FAILED, or
466 IN_PROGRESS.
467
468 · exclude -- If exclude is True, this filter will
469 remove matching snapshots from snapshots. If
470 exclude is False, then only matching snapshots
471 will be kept in snapshots. Default is False
472
473 iterate_filters(config)
474 Iterate over the filters defined in config and execute
475 them.
476
477 Parameters
478 config -- A dictionary of filters, as extracted
479 from the YAML configuration file.
480
481 NOTE:
482 config should be a dictionary with the following form:
483
484 { 'filters' : [
485 {
486 'filtertype': 'the_filter_type',
487 'key1' : 'value1',
488 ...
489 'keyN' : 'valueN'
490 }
491 ]
492 }
493
494 most_recent()
495 Return the most recent snapshot based on
496 start_time_in_millis.
497
498 repository = None
499 An Elasticsearch repository. Also accessible as an
500 instance variable.
501
502 snapshot_info = None
503 Instance variable. Information extracted from snapshots,
504 such as age, etc. Populated by internal method
505 __get_snapshots at instance creation time. Type: dict()
506
507 snapshots = None
508 Instance variable. The running list of snapshots which
509 will be used by an Action class. Populated by internal
510 methods __get_snapshots at instance creation time. Type:
511 list()
512
513 working_list()
514 Return the current value of snapshots as copy-by-value to
515 prevent list stomping during iterations
516
517 Action Classes
518 SEE ALSO:
519 It is important to note that each action has a do_action() method,
520 which accepts no arguments. This is the means by which all actions
521 are executed.
522
523 · Alias
524
525 · Allocation
526
527 · Close
528
529 · ClusterRouting
530
531 · DeleteIndices
532
533 · DeleteSnapshots
534
535 · ForceMerge
536
537 · Open
538
539 · Replicas
540
541 · Snapshot
542
543 Alias
544 class curator.actions.Alias(name=None, extra_settings={})
545 Define the Alias object.
546
547 Parameters
548
549 · name -- The alias name
550
551 · extra_settings (dict, representing the settings.) --
552 Extra settings, including filters and routing. For more
553 information see
554 https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html
555
556 actions = None
557 The list of actions to perform. Populated by
558 curator.actions.Alias.add and
559 curator.actions.Alias.remove
560
561 add(ilo)
562 Create add statements for each index in ilo for alias,
563 then append them to actions. Add any extras that may be
564 there.
565
566 Parameters
567 ilo -- A curator.indexlist.IndexList object
568
569 body() Return a body string suitable for use with the
570 update_aliases API call.
571
572 client = None
573 Instance variable. The Elasticsearch Client object
574 derived from ilo
575
576 do_action()
577 Run the API call update_aliases with the results of
578 body()
579
580 do_dry_run()
581 Log what the output would be, but take no action.
582
583 extra_settings = None
584 Instance variable. Any extra things to add to the alias,
585 like filters, or routing.
586
587 name = None
588 Instance variable The strftime parsed version of name.
589
590 remove(ilo)
591 Create remove statements for each index in ilo for alias,
592 then append them to actions.
593
594 Parameters
595 ilo -- A curator.indexlist.IndexList object
596
597 Allocation
598 class curator.actions.Allocation(ilo, key=None, value=None, alloca‐
599 tion_type='require', wait_for_completion=False, timeout=30)
600
601 Parameters
602
603 · ilo -- A curator.indexlist.IndexList object
604
605 · key -- An arbitrary metadata attribute key. Must match
606 the key assigned to at least some of your nodes to have
607 any effect.
608
609 · value -- An arbitrary metadata attribute value. Must
610 correspond to values associated with key assigned to at
611 least some of your nodes to have any effect.
612
613 · allocation_type -- Type of allocation to apply. Default
614 is require
615
616 · wait_for_completion (bool) -- Wait (or not) for the
617 operation to complete before returning. (default:
618 False)
619
620 · timeout -- Number of seconds to wait_for_completion
621
622 NOTE:
623 See:
624 https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-allocation-filtering.html
625
626 client = None
627 Instance variable. The Elasticsearch Client object
628 derived from ilo
629
630 do_action()
631 Change allocation settings for indices in
632 index_list.indices with the settings in body.
633
634 do_dry_run()
635 Log what the output would be, but take no action.
636
637 index_list = None
638 Instance variable. Internal reference to ilo
639
640 timeout = None
641 Instance variable. How long in seconds to wait_for_com‐
642 pletion before returning with an exception
643
644 wfc = None
645 Instance variable. Internal reference to wait_for_com‐
646 pletion
647
648 Close
649 class curator.actions.Close(ilo, delete_aliases=False)
650
651 Parameters
652
653 · ilo -- A curator.indexlist.IndexList object
654
655 · delete_aliases (bool) -- If True, will delete any asso‐
656 ciated aliases before closing indices.
657
658 client = None
659 Instance variable. The Elasticsearch Client object
660 derived from ilo
661
662 delete_aliases = None
663 Instance variable. Internal reference to delete_aliases
664
665 do_action()
666 Close open indices in index_list.indices
667
668 do_dry_run()
669 Log what the output would be, but take no action.
670
671 index_list = None
672 Instance variable. Internal reference to ilo
673
674 ClusterRouting
675 class curator.actions.ClusterRouting(client, routing_type=None, set‐
676 ting=None, value=None, wait_for_completion=False, timeout=30)
677 For now, the cluster routing settings are hardcoded to be tran‐
678 sient
679
680 Parameters
681
682 · client -- An elasticsearch.Elasticsearch client object
683
684 · routing_type -- Type of routing to apply. Either allo‐
685 cation or rebalance
686
687 · setting -- Currently, the only acceptable value for
688 setting is enable. This is here in case that changes.
689
690 · value -- Used only if setting is enable. Semi-dependent
691 on routing_type. Acceptable values for allocation and
692 rebalance are all, primaries, and none (string, not
693 NoneType). If routing_type is allocation, this can
694 also be new_primaries, and if rebalance, it can be
695 replicas.
696
697 · wait_for_completion (bool) -- Wait (or not) for the
698 operation to complete before returning. (default:
699 False)
700
701 · timeout -- Number of seconds to wait_for_completion
702
703 client = None
704 Instance variable. An elasticsearch.Elasticsearch client
705 object
706
707 do_action()
708 Change cluster routing settings with the settings in
709 body.
710
711 do_dry_run()
712 Log what the output would be, but take no action.
713
714 timeout = None
715 Instance variable. How long in seconds to wait_for_com‐
716 pletion before returning with an exception
717
718 wfc = None
719 Instance variable. Internal reference to wait_for_com‐
720 pletion
721
722 DeleteIndices
723 class curator.actions.DeleteIndices(ilo, master_timeout=30)
724
725 Parameters
726
727 · ilo -- A curator.indexlist.IndexList object
728
729 · master_timeout -- Number of seconds to wait for master
730 node response
731
732 client = None
733 Instance variable. The Elasticsearch Client object
734 derived from ilo
735
736 do_action()
737 Delete indices in index_list.indices
738
739 do_dry_run()
740 Log what the output would be, but take no action.
741
742 index_list = None
743 Instance variable. Internal reference to ilo
744
745 master_timeout = None
746 Instance variable. String value of master_timeout + 's',
747 for seconds.
748
749 DeleteSnapshots
750 class curator.actions.DeleteSnapshots(slo, retry_interval=120,
751 retry_count=3)
752
753 Parameters
754
755 · slo -- A curator.snapshotlist.SnapshotList object
756
757 · retry_interval -- Number of seconds to delay betwen
758 retries. Default: 120 (seconds)
759
760 · retry_count -- Number of attempts to make. Default: 3
761
762 client = None
763 Instance variable. The Elasticsearch Client object
764 derived from slo
765
766 do_action()
767 Delete snapshots in slo Retry up to retry_count times,
768 pausing retry_interval seconds between retries.
769
770 do_dry_run()
771 Log what the output would be, but take no action.
772
773 repository = None
774 Instance variable. The repository name derived from slo
775
776 retry_count = None
777 Instance variable. Internally accessible copy of
778 retry_count
779
780 retry_interval = None
781 Instance variable. Internally accessible copy of
782 retry_interval
783
784 snapshot_list = None
785 Instance variable. Internal reference to slo
786
787 ForceMerge
788 class curator.actions.ForceMerge(ilo, max_num_segments=None, delay=0)
789
790 Parameters
791
792 · ilo -- A curator.indexlist.IndexList object
793
794 · max_num_segments -- Number of segments per shard to
795 forceMerge
796
797 · delay -- Number of seconds to delay between forceMerge
798 operations
799
800 client = None
801 Instance variable. The Elasticsearch Client object
802 derived from ilo
803
804 delay = None
805 Instance variable. Internally accessible copy of delay
806
807 do_action()
808 forcemerge indices in index_list.indices
809
810 do_dry_run()
811 Log what the output would be, but take no action.
812
813 index_list = None
814 Instance variable. Internal reference to ilo
815
816 max_num_segments = None
817 Instance variable. Internally accessible copy of
818 max_num_segments
819
820 Open
821 class curator.actions.Open(ilo)
822
823 Parameters
824 ilo -- A curator.indexlist.IndexList object
825
826 client = None
827 Instance variable. The Elasticsearch Client object
828 derived from ilo
829
830 do_action()
831 Open closed indices in index_list.indices
832
833 do_dry_run()
834 Log what the output would be, but take no action.
835
836 index_list = None
837 Instance variable. Internal reference to ilo
838
839 Replicas
840 class curator.actions.Replicas(ilo, count=None, wait_for_comple‐
841 tion=False, timeout=30)
842
843 Parameters
844
845 · ilo -- A curator.indexlist.IndexList object
846
847 · count -- The count of replicas per shard
848
849 · wait_for_completion (bool) -- Wait (or not) for the
850 operation to complete before returning. (default:
851 False)
852
853 client = None
854 Instance variable. The Elasticsearch Client object
855 derived from ilo
856
857 count = None
858 Instance variable. Internally accessible copy of count
859
860 do_action()
861 Update the replica count of indices in index_list.indices
862
863 do_dry_run()
864 Log what the output would be, but take no action.
865
866 index_list = None
867 Instance variable. Internal reference to ilo
868
869 timeout = None
870 Instance variable. How long in seconds to wait_for_com‐
871 pletion before returning with an exception
872
873 wfc = None
874 Instance variable. Internal reference to wait_for_com‐
875 pletion
876
877 Snapshot
878 class curator.actions.Snapshot(ilo, repository=None, name=None,
879 ignore_unavailable=False, include_global_state=True, partial=False,
880 wait_for_completion=True, skip_repo_fs_check=False)
881
882 Parameters
883
884 · ilo -- A curator.indexlist.IndexList object
885
886 · repository -- The Elasticsearch snapshot repository to
887 use
888
889 · name -- What to name the snapshot.
890
891 · wait_for_completion (bool) -- Wait (or not) for the
892 operation to complete before returning. (default:
893 True)
894
895 · ignore_unavailable (bool) -- Ignore unavailable
896 shards/indices. (default: False)
897
898 · include_global_state (bool) -- Store cluster global
899 state with snapshot. (default: True)
900
901 · partial (bool) -- Do not fail if primary shard is
902 unavailable. (default: False)
903
904 · skip_repo_fs_check (bool) -- Do not validate write
905 access to repository on all cluster nodes before pro‐
906 ceeding. (default: False). Useful for shared filesys‐
907 tems where intermittent timeouts can affect validation,
908 but won't likely affect snapshot success.
909
910 body = None
911 Instance variable. Populated at instance creation time
912 by calling curator.utils.create_snapshot_body with
913 ilo.indices and the provided arguments: ignore_unavail‐
914 able, include_global_state, partial
915
916 client = None
917 Instance variable. The Elasticsearch Client object
918 derived from ilo
919
920 do_action()
921 Snapshot indices in index_list.indices, with options
922 passed.
923
924 do_dry_run()
925 Log what the output would be, but take no action.
926
927 get_state()
928 Get the state of the snapshot
929
930 index_list = None
931 Instance variable. Internal reference to ilo
932
933 name = None
934 Instance variable. The parsed version of name
935
936 report_state()
937 Log the state of the snapshot
938
939 repository = None
940 Instance variable. Internally accessible copy of reposi‐
941 tory
942
943 skip_repo_fs_check = None
944 Instance variable. Internally accessible copy of
945 skip_repo_fs_check
946
947 wait_for_completion = None
948 Instance variable. Internally accessible copy of
949 wait_for_completion
950
951 Restore
952 class curator.actions.Restore(slo, name=None, indices=None,
953 include_aliases=False, ignore_unavailable=False,
954 include_global_state=True, partial=False, rename_pattern=None,
955 rename_replacement=None, extra_settings={}, wait_for_completion=True,
956 skip_repo_fs_check=False)
957
958 Parameters
959
960 · slo -- A curator.snapshotlist.SnapshotList object
961
962 · name (str) -- Name of the snapshot to restore. If no
963 name is provided, it will restore the most recent snap‐
964 shot by age.
965
966 · indices (list) -- A list of indices to restore. If no
967 indices are provided, it will restore all indices in
968 the snapshot.
969
970 · include_aliases (bool) -- If set to True, restore
971 aliases with the indices. (default: False)
972
973 · ignore_unavailable (bool) -- Ignore unavailable
974 shards/indices. (default: False)
975
976 · include_global_state (bool) -- Store cluster global
977 state with snapshot. (default: True)
978
979 · partial (bool) -- Do not fail if primary shard is
980 unavailable. (default: False)
981
982 · rename_pattern (str) -- A regular expression pattern
983 with one or more captures, e.g. index_(.+)
984
985 · rename_replacement (str) -- A target index name pattern
986 with $# numbered references to the captures in
987 rename_pattern, e.g. restored_index_$1
988
989 · extra_settings (dict, representing the settings.) --
990 Extra settings, including shard count and settings to
991 omit. For more information see
992 https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html#_changing_index_settings_during_restore
993
994 · wait_for_completion (bool) -- Wait (or not) for the
995 operation to complete before returning. (default:
996 True)
997
998 · skip_repo_fs_check (bool) -- Do not validate write
999 access to repository on all cluster nodes before pro‐
1000 ceeding. (default: False). Useful for shared filesys‐
1001 tems where intermittent timeouts can affect validation,
1002 but won't likely affect snapshot success.
1003
1004 body = None
1005 Instance variable. Populated at instance creation time
1006 from the other options
1007
1008 client = None
1009 Instance variable. The Elasticsearch Client object
1010 derived from slo
1011
1012 do_action()
1013 Restore indices with options passed.
1014
1015 do_dry_run()
1016 Log what the output would be, but take no action.
1017
1018 name = None
1019 Instance variable. Will use a provided snapshot name, or
1020 the most recent snapshot in slo
1021
1022 py_rename_replacement = None
1023 Also an instance variable version of rename_replacement
1024 but with Java regex group designations of $# converted to
1025 Python's \\# style.
1026
1027 rename_pattern = None
1028 Instance variable version of rename_pattern
1029
1030 rename_replacement = None
1031 Instance variable version of rename_replacement
1032
1033 report_state()
1034 Log the state of the restore This should only be done if
1035 wait_for_completion is True, and only after completing
1036 the restore.
1037
1038 repository = None
1039 Instance variable. repository derived from slo
1040
1041 skip_repo_fs_check = None
1042 Instance variable. Internally accessible copy of
1043 skip_repo_fs_check
1044
1045 snapshot_list = None
1046 Instance variable. Internal reference to slo
1047
1048 Filter Methods
1049 · IndexList
1050
1051 · SnapshotList
1052
1053 IndexList
1054 IndexList.filter_allocated(key=None, value=None, alloca‐
1055 tion_type='require', exclude=True)
1056 Match indices that have the routing allocation rule of key=value
1057 from indices
1058
1059 Parameters
1060
1061 · key -- The allocation attribute to check for
1062
1063 · value -- The value to check for
1064
1065 · allocation_type -- Type of allocation to apply
1066
1067 · exclude -- If exclude is True, this filter will remove
1068 matching indices from indices. If exclude is False,
1069 then only matching indices will be kept in indices.
1070 Default is True
1071
1072 IndexList.filter_by_age(source='name', direction=None, timestring=None,
1073 unit=None, unit_count=None, field=None, stats_result='min_value',
1074 epoch=None, exclude=False)
1075 Match indices by relative age calculations.
1076
1077 Parameters
1078
1079 · source -- Source of index age. Can be one of 'name',
1080 'creation_date', or 'field_stats'
1081
1082 · direction -- Time to filter, either older or younger
1083
1084 · timestring -- An strftime string to match the datestamp
1085 in an index name. Only used for index filtering by
1086 name.
1087
1088 · unit -- One of seconds, minutes, hours, days, weeks,
1089 months, or years.
1090
1091 · unit_count -- The number of unit``s. ``unit_count *
1092 unit will be calculated out to the relative number of
1093 seconds.
1094
1095 · field -- A timestamp field name. Only used for
1096 field_stats based calculations.
1097
1098 · stats_result -- Either min_value or max_value. Only
1099 used in conjunction with source`=``field_stats` to
1100 choose whether to reference the minimum or maximum
1101 result value.
1102
1103 · epoch -- An epoch timestamp used in conjunction with
1104 unit and unit_count to establish a point of reference
1105 for calculations. If not provided, the current time
1106 will be used.
1107
1108 · exclude -- If exclude is True, this filter will remove
1109 matching indices from indices. If exclude is False,
1110 then only matching indices will be kept in indices.
1111 Default is False
1112
1113 IndexList.filter_by_regex(kind=None, value=None, exclude=False)
1114 Match indices by regular expression (pattern).
1115
1116 Parameters
1117
1118 · kind -- Can be one of: suffix, prefix, regex, or
1119 timestring. This option defines what kind of filter you
1120 will be building.
1121
1122 · value -- Depends on kind. It is the strftime string if
1123 kind is timestring. It's used to build the regular
1124 expression for other kinds.
1125
1126 · exclude -- If exclude is True, this filter will remove
1127 matching indices from indices. If exclude is False,
1128 then only matching indices will be kept in indices.
1129 Default is False
1130
1131 IndexList.filter_by_space(disk_space=None, reverse=True, use_age=False,
1132 source='creation_date', timestring=None, field=None,
1133 stats_result='min_value', exclude=False)
1134 Remove indices from the actionable list based on space consumed,
1135 sorted reverse-alphabetically by default. If you set reverse to
1136 False, it will be sorted alphabetically.
1137
1138 The default is usually what you will want. If only one kind of
1139 index is provided--for example, indices matching
1140 logstash-%Y.%m.%d--then reverse alphabetical sorting will mean
1141 the oldest will remain in the list, because lower numbers in the
1142 dates mean older indices.
1143
1144 By setting reverse to False, then index3 will be deleted before
1145 index2, which will be deleted before index1
1146
1147 use_age allows ordering indices by age. Age is determined by the
1148 index creation date by default, but you can specify an source of
1149 name, max_value, or min_value. The name source requires the
1150 timestring argument.
1151
1152 Parameters
1153
1154 · disk_space -- Filter indices over n gigabytes
1155
1156 · reverse -- The filtering direction. (default: True).
1157 Ignored if use_age is True
1158
1159 · use_age -- Sort indices by age. source is required in
1160 this case.
1161
1162 · source -- Source of index age. Can be one of name, cre‐
1163 ation_date, or field_stats. Default: creation_date
1164
1165 · timestring -- An strftime string to match the datestamp
1166 in an index name. Only used if source name is selected.
1167
1168 · field -- A timestamp field name. Only used if source
1169 field_stats is selected.
1170
1171 · stats_result -- Either min_value or max_value. Only
1172 used if source field_stats is selected. It determines
1173 whether to reference the minimum or maximum value of
1174 field in each index.
1175
1176 · exclude -- If exclude is True, this filter will remove
1177 matching indices from indices. If exclude is False,
1178 then only matching indices will be kept in indices.
1179 Default is False
1180
1181 IndexList.filter_closed(exclude=True)
1182 Filter out closed indices from indices
1183
1184 Parameters
1185 exclude -- If exclude is True, this filter will remove
1186 matching indices from indices. If exclude is False, then
1187 only matching indices will be kept in indices. Default
1188 is True
1189
1190 IndexList.filter_forceMerged(max_num_segments=None, exclude=True)
1191 Match any index which has max_num_segments per shard or fewer in
1192 the actionable list.
1193
1194 Parameters
1195
1196 · max_num_segments -- Cutoff number of segments per
1197 shard.
1198
1199 · exclude -- If exclude is True, this filter will remove
1200 matching indices from indices. If exclude is False,
1201 then only matching indices will be kept in indices.
1202 Default is True
1203
1204 IndexList.filter_kibana(exclude=True)
1205 Match any index named .kibana, kibana-int, .marvel-kibana, or
1206 .marvel-es-data in indices.
1207
1208 Parameters
1209 exclude -- If exclude is True, this filter will remove
1210 matching indices from indices. If exclude is False, then
1211 only matching indices will be kept in indices. Default
1212 is True
1213
1214 IndexList.filter_opened(exclude=True)
1215 Filter out opened indices from indices
1216
1217 Parameters
1218 exclude -- If exclude is True, this filter will remove
1219 matching indices from indices. If exclude is False, then
1220 only matching indices will be kept in indices. Default
1221 is True
1222
1223 IndexList.filter_none()
1224
1225 IndexList.filter_by_alias(aliases=None, exclude=False)
1226 Match indices which are associated with the alias identified by
1227 name
1228
1229 Parameters
1230
1231 · aliases (list) -- A list of alias names.
1232
1233 · exclude -- If exclude is True, this filter will remove
1234 matching indices from indices. If exclude is False,
1235 then only matching indices will be kept in indices.
1236 Default is False
1237
1238 IndexList.filter_by_count(count=None, reverse=True, use_age=False,
1239 source='creation_date', timestring=None, field=None,
1240 stats_result='min_value', exclude=True)
1241 Remove indices from the actionable list beyond the number count,
1242 sorted reverse-alphabetically by default. If you set reverse to
1243 False, it will be sorted alphabetically.
1244
1245 The default is usually what you will want. If only one kind of
1246 index is provided--for example, indices matching
1247 logstash-%Y.%m.%d--then reverse alphabetical sorting will mean
1248 the oldest will remain in the list, because lower numbers in the
1249 dates mean older indices.
1250
1251 By setting reverse to False, then index3 will be deleted before
1252 index2, which will be deleted before index1
1253
1254 use_age allows ordering indices by age. Age is determined by the
1255 index creation date by default, but you can specify an source of
1256 name, max_value, or min_value. The name source requires the
1257 timestring argument.
1258
1259 Parameters
1260
1261 · count -- Filter indices beyond count.
1262
1263 · reverse -- The filtering direction. (default: True).
1264
1265 · use_age -- Sort indices by age. source is required in
1266 this case.
1267
1268 · source -- Source of index age. Can be one of name, cre‐
1269 ation_date, or field_stats. Default: creation_date
1270
1271 · timestring -- An strftime string to match the datestamp
1272 in an index name. Only used if source name is selected.
1273
1274 · field -- A timestamp field name. Only used if source
1275 field_stats is selected.
1276
1277 · stats_result -- Either min_value or max_value. Only
1278 used if source field_stats is selected. It determines
1279 whether to reference the minimum or maximum value of
1280 field in each index.
1281
1282 · exclude -- If exclude is True, this filter will remove
1283 matching indices from indices. If exclude is False,
1284 then only matching indices will be kept in indices.
1285 Default is True
1286
1287 SnapshotList
1288 SnapshotList.filter_by_age(source='creation_date', direction=None,
1289 timestring=None, unit=None, unit_count=None, epoch=None, exclude=False)
1290 Remove snapshots from snapshots by relative age calculations.
1291
1292 Parameters
1293
1294 · source -- Source of snapshot age. Can be 'name', or
1295 'creation_date'.
1296
1297 · direction -- Time to filter, either older or younger
1298
1299 · timestring -- An strftime string to match the datestamp
1300 in an snapshot name. Only used for snapshot filtering
1301 by name.
1302
1303 · unit -- One of seconds, minutes, hours, days, weeks,
1304 months, or years.
1305
1306 · unit_count -- The number of unit``s. ``unit_count *
1307 unit will be calculated out to the relative number of
1308 seconds.
1309
1310 · epoch -- An epoch timestamp used in conjunction with
1311 unit and unit_count to establish a point of reference
1312 for calculations. If not provided, the current time
1313 will be used.
1314
1315 · exclude -- If exclude is True, this filter will remove
1316 matching snapshots from snapshots. If exclude is False,
1317 then only matching snapshots will be kept in snapshots.
1318 Default is False
1319
1320 SnapshotList.filter_by_regex(kind=None, value=None, exclude=False)
1321 Filter out snapshots not matching the pattern, or in the case of
1322 exclude, filter those matching the pattern.
1323
1324 Parameters
1325
1326 · kind -- Can be one of: suffix, prefix, regex, or
1327 timestring. This option defines what kind of filter you
1328 will be building.
1329
1330 · value -- Depends on kind. It is the strftime string if
1331 kind is timestring. It's used to build the regular
1332 expression for other kinds.
1333
1334 · exclude -- If exclude is True, this filter will remove
1335 matching snapshots from snapshots. If exclude is False,
1336 then only matching snapshots will be kept in snapshots.
1337 Default is False
1338
1339 SnapshotList.filter_by_state(state=None, exclude=False)
1340 Filter out snapshots not matching state, or in the case of
1341 exclude, filter those matching state.
1342
1343 Parameters
1344
1345 · state -- The snapshot state to filter for. Must be one
1346 of SUCCESS, PARTIAL, FAILED, or IN_PROGRESS.
1347
1348 · exclude -- If exclude is True, this filter will remove
1349 matching snapshots from snapshots. If exclude is False,
1350 then only matching snapshots will be kept in snapshots.
1351 Default is False
1352
1353 SnapshotList.filter_none()
1354
1355 SnapshotList.filter_by_count(count=None, reverse=True, use_age=False,
1356 source='creation_date', timestring=None, exclude=True)
1357 Remove snapshots from the actionable list beyond the number
1358 count, sorted reverse-alphabetically by default. If you set
1359 reverse to False, it will be sorted alphabetically.
1360
1361 The default is usually what you will want. If only one kind of
1362 snapshot is provided--for example, snapshots matching cura‐
1363 tor-%Y%m%d%H%M%S-- then reverse alphabetical sorting will mean
1364 the oldest will remain in the list, because lower numbers in the
1365 dates mean older snapshots.
1366
1367 By setting reverse to False, then snapshot3 will be acted on
1368 before snapshot2, which will be acted on before snapshot1
1369
1370 use_age allows ordering snapshots by age. Age is determined by
1371 the snapshot creation date (as identified by start_time_in_mil‐
1372 lis) by default, but you can also specify a source of name. The
1373 name source requires the timestring argument.
1374
1375 Parameters
1376
1377 · count -- Filter snapshots beyond count.
1378
1379 · reverse -- The filtering direction. (default: True).
1380
1381 · use_age -- Sort snapshots by age. source is required
1382 in this case.
1383
1384 · source -- Source of snapshot age. Can be one of name,
1385 or creation_date. Default: creation_date
1386
1387 · timestring -- An strftime string to match the datestamp
1388 in a snapshot name. Only used if source name is
1389 selected.
1390
1391 · exclude -- If exclude is True, this filter will remove
1392 matching snapshots from snapshots. If exclude is False,
1393 then only matching snapshots will be kept in snapshots.
1394 Default is True
1395
1396 Utility & Helper Methods
1397 class curator.utils.TimestringSearch(timestring)
1398 An object to allow repetitive search against a string, searchme,
1399 without having to repeatedly recreate the regex.
1400
1401 Parameters
1402 timestring -- An strftime pattern
1403
1404 get_epoch(searchme)
1405 Return the epoch timestamp extracted from the timestring
1406 appearing in searchme.
1407
1408 Parameters
1409 searchme -- A string to be searched for a date
1410 pattern that matches timestring
1411
1412 Return type
1413 int
1414
1415 curator.utils.byte_size(num, suffix='B')
1416 Return a formatted string indicating the size in bytes, with the
1417 proper unit, e.g. KB, MB, GB, TB, etc.
1418
1419 Parameters
1420
1421 · num -- The number of byte
1422
1423 · suffix -- An arbitrary suffix, like Bytes
1424
1425 Return type
1426 float
1427
1428 curator.utils.check_csv(value)
1429 Some of the curator methods should not operate against multiple
1430 indices at once. This method can be used to check if a list or
1431 csv has been sent.
1432
1433 Parameters
1434 value -- The value to test, if list or csv string
1435
1436 Return type
1437 bool
1438
1439 curator.utils.check_master(client, master_only=False)
1440 Check if connected client is the elected master node of the
1441 cluster. If not, cleanly exit with a log message.
1442
1443 Parameters
1444 client -- An elasticsearch.Elasticsearch client object
1445
1446 Return type
1447 None
1448
1449 curator.utils.check_version(client)
1450 Verify version is within acceptable range. Raise an exception
1451 if it is not.
1452
1453 Parameters
1454 client -- An elasticsearch.Elasticsearch client object
1455
1456 Return type
1457 None
1458
1459 curator.utils.chunk_index_list(indices)
1460 This utility chunks very large index lists into 3KB chunks It
1461 measures the size as a csv string, then converts back into a
1462 list for the return value.
1463
1464 Parameters
1465 indices -- A list of indices to act on.
1466
1467 Return type
1468 list
1469
1470 curator.utils.create_repo_body(repo_type=None, compress=True,
1471 chunk_size=None, max_restore_bytes_per_sec=None, max_snap‐
1472 shot_bytes_per_sec=None, location=None, bucket=None, region=None,
1473 base_path=None, access_key=None, secret_key=None, **kwargs)
1474 Build the 'body' portion for use in creating a repository.
1475
1476 Parameters
1477
1478 · repo_type -- The type of repository (presently only fs
1479 and s3)
1480
1481 · compress -- Turn on compression of the snapshot files.
1482 Compression is applied only to metadata files (index
1483 mapping and settings). Data files are not compressed.
1484 (Default: True)
1485
1486 · chunk_size -- The chunk size can be specified in bytes
1487 or by using size value notation, i.e. 1g, 10m, 5k.
1488 Defaults to null (unlimited chunk size).
1489
1490 · max_restore_bytes_per_sec -- Throttles per node restore
1491 rate. Defaults to 20mb per second.
1492
1493 · max_snapshot_bytes_per_sec -- Throttles per node snap‐
1494 shot rate. Defaults to 20mb per second.
1495
1496 · location -- Location of the snapshots. Required.
1497
1498 · bucket -- S3 only. The name of the bucket to be used
1499 for snapshots. Required.
1500
1501 · region -- S3 only. The region where bucket is located.
1502 Defaults to US Standard
1503
1504 · base_path -- S3 only. Specifies the path within bucket
1505 to repository data. Defaults to value of reposito‐
1506 ries.s3.base_path or to root directory if not set.
1507
1508 · access_key -- S3 only. The access key to use for
1509 authentication. Defaults to value of
1510 cloud.aws.access_key.
1511
1512 · secret_key -- S3 only. The secret key to use for
1513 authentication. Defaults to value of
1514 cloud.aws.secret_key.
1515
1516 Returns
1517 A dictionary suitable for creating a repository from the
1518 provided arguments.
1519
1520 Return type
1521 dict
1522
1523 curator.utils.create_repository(client, **kwargs)
1524 Create repository with repository and body settings
1525
1526 Parameters
1527
1528 · client -- An elasticsearch.Elasticsearch client object
1529
1530 · repo_type -- The type of repository (presently only fs
1531 and s3)
1532
1533 · compress -- Turn on compression of the snapshot files.
1534 Compression is applied only to metadata files (index
1535 mapping and settings). Data files are not compressed.
1536 (Default: True)
1537
1538 · chunk_size -- The chunk size can be specified in bytes
1539 or by using size value notation, i.e. 1g, 10m, 5k.
1540 Defaults to null (unlimited chunk size).
1541
1542 · max_restore_bytes_per_sec -- Throttles per node restore
1543 rate. Defaults to 20mb per second.
1544
1545 · max_snapshot_bytes_per_sec -- Throttles per node snap‐
1546 shot rate. Defaults to 20mb per second.
1547
1548 · location -- Location of the snapshots. Required.
1549
1550 · bucket -- S3 only. The name of the bucket to be used
1551 for snapshots. Required.
1552
1553 · region -- S3 only. The region where bucket is located.
1554 Defaults to US Standard
1555
1556 · base_path -- S3 only. Specifies the path within bucket
1557 to repository data. Defaults to value of reposito‐
1558 ries.s3.base_path or to root directory if not set.
1559
1560 · access_key -- S3 only. The access key to use for
1561 authentication. Defaults to value of
1562 cloud.aws.access_key.
1563
1564 · secret_key -- S3 only. The secret key to use for
1565 authentication. Defaults to value of
1566 cloud.aws.secret_key.
1567
1568 Returns
1569 A boolean value indicating success or failure.
1570
1571 Return type
1572 bool
1573
1574 curator.utils.create_snapshot_body(indices, ignore_unavailable=False,
1575 include_global_state=True, partial=False)
1576 Create the request body for creating a snapshot from the pro‐
1577 vided arguments.
1578
1579 Parameters
1580
1581 · indices -- A single index, or list of indices to snap‐
1582 shot.
1583
1584 · ignore_unavailable (bool) -- Ignore unavailable
1585 shards/indices. (default: False)
1586
1587 · include_global_state (bool) -- Store cluster global
1588 state with snapshot. (default: True)
1589
1590 · partial (bool) -- Do not fail if primary shard is
1591 unavailable. (default: False)
1592
1593 Return type
1594 dict
1595
1596 curator.utils.ensure_list(indices)
1597 Return a list, even if indices is a single value
1598
1599 Parameters
1600 indices -- A list of indices to act upon
1601
1602 Return type
1603 list
1604
1605 curator.utils.fix_epoch(epoch)
1606 Fix value of epoch to be epoch, which should be 10 or fewer dig‐
1607 its long.
1608
1609 Parameters
1610 epoch -- An epoch timestamp, in epoch + milliseconds, or
1611 microsecond, or even nanoseconds.
1612
1613 Return type
1614 int
1615
1616 curator.utils.get_client(**kwargs)
1617 NOTE: AWS IAM parameters aws_key, aws_secret_key, and aws_region
1618 are provided for future compatibility, should AWS ES support the
1619 /_cluster/state/metadata endpoint. So long as this endpoint
1620 does not function in AWS ES, the client will not be able to use
1621 curator.indexlist.IndexList, which is the backbone of Curator 4
1622
1623 Return an elasticsearch.Elasticsearch client object using the
1624 provided parameters. Any of the keyword arguments the elastic‐
1625 search.Elasticsearch client object can receive are valid, such
1626 as:
1627
1628 Parameters
1629
1630 · hosts (list) -- A list of one or more Elasticsearch
1631 client hostnames or IP addresses to connect to. Can
1632 send a single host.
1633
1634 · port (int) -- The Elasticsearch client port to connect
1635 to.
1636
1637 · url_prefix (str) -- Optional url prefix, if needed to
1638 reach the Elasticsearch API (i.e., it's not at the root
1639 level)
1640
1641 · use_ssl (bool) -- Whether to connect to the client via
1642 SSL/TLS
1643
1644 · certificate -- Path to SSL/TLS certificate
1645
1646 · client_cert -- Path to SSL/TLS client certificate (pub‐
1647 lic key)
1648
1649 · client_key -- Path to SSL/TLS private key
1650
1651 · aws_key -- AWS IAM Access Key (Only used if the
1652 requests-aws4auth python module is installed)
1653
1654 · aws_secret_key -- AWS IAM Secret Access Key (Only used
1655 if the requests-aws4auth python module is installed)
1656
1657 · aws_region -- AWS Region (Only used if the
1658 requests-aws4auth python module is installed)
1659
1660 · ssl_no_validate (bool) -- If True, do not validate the
1661 certificate chain. This is an insecure option and you
1662 will see warnings in the log output.
1663
1664 · http_auth (str) -- Authentication credentials in
1665 user:pass format.
1666
1667 · timeout (int) -- Number of seconds before the client
1668 will timeout.
1669
1670 · master_only (bool) -- If True, the client will only
1671 connect if the endpoint is the elected master node of
1672 the cluster. This option does not work if `hosts` has
1673 more than one value. It will raise an Exception in
1674 that case.
1675
1676 Return type
1677 elasticsearch.Elasticsearch
1678
1679 curator.utils.get_date_regex(timestring)
1680 Return a regex string based on a provided strftime timestring.
1681
1682 Parameters
1683 timestring -- An strftime pattern
1684
1685 Return type
1686 str
1687
1688 curator.utils.get_datetime(index_timestamp, timestring)
1689 Return the datetime extracted from the index name, which is the
1690 index creation time.
1691
1692 Parameters
1693
1694 · index_timestamp -- The timestamp extracted from an
1695 index name
1696
1697 · timestring -- An strftime pattern
1698
1699 Return type
1700 datetime.datetime
1701
1702 curator.utils.get_indices(client)
1703 Get the current list of indices from the cluster.
1704
1705 Parameters
1706 client -- An elasticsearch.Elasticsearch client object
1707
1708 Return type
1709 list
1710
1711 curator.utils.get_point_of_reference(unit, count, epoch=None)
1712 Get a point-of-reference timestamp in epoch + milliseconds by
1713 deriving from a unit and a count, and an optional reference
1714 timestamp, epoch
1715
1716 Parameters
1717
1718 · unit -- One of seconds, minutes, hours, days, weeks,
1719 months, or years.
1720
1721 · unit_count -- The number of units. unit_count * unit
1722 will be calculated out to the relative number of sec‐
1723 onds.
1724
1725 · epoch -- An epoch timestamp used in conjunction with
1726 unit and unit_count to establish a point of reference
1727 for calculations.
1728
1729 Return type
1730 int
1731
1732 curator.utils.get_repository(client, repository='')
1733 Return configuration information for the indicated repository.
1734
1735 Parameters
1736
1737 · client -- An elasticsearch.Elasticsearch client object
1738
1739 · repository -- The Elasticsearch snapshot repository to
1740 use
1741
1742 Return type
1743 dict
1744
1745 curator.utils.get_snapshot(client, repository=None, snapshot='')
1746 Return information about a snapshot (or a comma-separated list
1747 of snapshots) If no snapshot specified, it will return all snap‐
1748 shots. If none exist, an empty dictionary will be returned.
1749
1750 Parameters
1751
1752 · client -- An elasticsearch.Elasticsearch client object
1753
1754 · repository -- The Elasticsearch snapshot repository to
1755 use
1756
1757 · snapshot -- The snapshot name, or a comma-separated
1758 list of snapshots
1759
1760 Return type
1761 dict
1762
1763 curator.utils.get_snapshot_data(client, repository=None)
1764 Get _all snapshots from repository and return a list.
1765
1766 Parameters
1767
1768 · client -- An elasticsearch.Elasticsearch client object
1769
1770 · repository -- The Elasticsearch snapshot repository to
1771 use
1772
1773 Return type
1774 list
1775
1776 curator.utils.get_version(client)
1777 Return the ES version number as a tuple. Omits trailing tags
1778 like -dev, or Beta
1779
1780 Parameters
1781 client -- An elasticsearch.Elasticsearch client object
1782
1783 Return type
1784 tuple
1785
1786 curator.utils.get_yaml(path)
1787 Read the file identified by path and import its YAML contents.
1788
1789 Parameters
1790 path -- The path to a YAML configuration file.
1791
1792 Return type
1793 dict
1794
1795 curator.utils.is_master_node(client)
1796 Return True if the connected client node is the elected master
1797 node in the Elasticsearch cluster, otherwise return False.
1798
1799 Parameters
1800 client -- An elasticsearch.Elasticsearch client object
1801
1802 Return type
1803 bool
1804
1805 curator.utils.override_timeout(timeout, action)
1806 Override the default timeout for forcemerge, snapshot, and
1807 sync_flush operations if the default value of 30 is provided.
1808
1809 Parameters
1810
1811 · timeout -- Number of seconds before the client will
1812 timeout.
1813
1814 · action -- The action to be performed.
1815
1816 curator.utils.parse_date_pattern(name)
1817 Scan and parse name for time.strftime() strings, replacing them
1818 with the associated value when found, but otherwise returning
1819 lowercase values, as uppercase snapshot names are not allowed.
1820
1821 The time.strftime() identifiers that Curator currently recog‐
1822 nizes as acceptable include:
1823
1824 · Y: A 4 digit year
1825
1826 · y: A 2 digit year
1827
1828 · m: The 2 digit month
1829
1830 · W: The 2 digit week of the year
1831
1832 · d: The 2 digit day of the month
1833
1834 · H: The 2 digit hour of the day, in 24 hour notation
1835
1836 · M: The 2 digit minute of the hour
1837
1838 · S: The 2 digit number of second of the minute
1839
1840 · j: The 3 digit day of the year
1841
1842 Parameters
1843 name -- A name, which can contain time.strftime() strings
1844
1845 curator.utils.prune_nones(mydict)
1846 Remove keys from mydict whose values are None
1847
1848 Parameters
1849 mydict -- The dictionary to act on
1850
1851 Return type
1852 dict
1853
1854 curator.utils.read_file(myfile)
1855 Read a file and return the resulting data.
1856
1857 Parameters
1858 myfile -- A file to read.
1859
1860 Return type
1861 str
1862
1863 curator.utils.report_failure(exception)
1864 Raise a FailedExecution exception and include the original error
1865 message.
1866
1867 Parameters
1868 exception -- The upstream exception.
1869
1870 Return type
1871 None
1872
1873 curator.utils.repository_exists(client, repository=None)
1874 Verify the existence of a repository
1875
1876 Parameters
1877
1878 · client -- An elasticsearch.Elasticsearch client object
1879
1880 · repository -- The Elasticsearch snapshot repository to
1881 use
1882
1883 Return type
1884 bool
1885
1886 curator.utils.safe_to_snap(client, repository=None, retry_interval=120,
1887 retry_count=3)
1888 Ensure there are no snapshots in progress. Pause and retry
1889 accordingly
1890
1891 Parameters
1892
1893 · client -- An elasticsearch.Elasticsearch client object
1894
1895 · repository -- The Elasticsearch snapshot repository to
1896 use
1897
1898 · retry_interval -- Number of seconds to delay betwen
1899 retries. Default: 120 (seconds)
1900
1901 · retry_count -- Number of attempts to make. Default: 3
1902
1903 Return type
1904 bool
1905
1906 curator.utils.show_dry_run(ilo, action, **kwargs)
1907 Log dry run output with the action which would have been exe‐
1908 cuted.
1909
1910 Parameters
1911
1912 · ilo -- A curator.indexlist.IndexList
1913
1914 · action -- The action to be performed.
1915
1916 · kwargs -- Any other args to show in the log output
1917
1918 curator.utils.snapshot_in_progress(client, repository=None, snap‐
1919 shot=None)
1920 Determine whether the provided snapshot in repository is
1921 IN_PROGRESS. If no value is provided for snapshot, then check
1922 all of them. Return snapshot if it is found to be in progress,
1923 or False
1924
1925 Parameters
1926
1927 · client -- An elasticsearch.Elasticsearch client object
1928
1929 · repository -- The Elasticsearch snapshot repository to
1930 use
1931
1932 · snapshot -- The snapshot name
1933
1934 curator.utils.snapshot_running(client)
1935 Return True if a snapshot is in progress, and False if not
1936
1937 Parameters
1938 client -- An elasticsearch.Elasticsearch client object
1939
1940 Return type
1941 bool
1942
1943 curator.utils.test_client_options(config)
1944 Test whether a SSL/TLS files exist. Will raise an exception if
1945 the files cannot be read.
1946
1947 Parameters
1948 config -- A client configuration file data dictionary
1949
1950 Return type
1951 None
1952
1953 curator.utils.test_repo_fs(client, repository=None)
1954 Test whether all nodes have write access to the repository
1955
1956 Parameters
1957
1958 · client -- An elasticsearch.Elasticsearch client object
1959
1960 · repository -- The Elasticsearch snapshot repository to
1961 use
1962
1963 curator.utils.to_csv(indices)
1964 Return a csv string from a list of indices, or a single value if
1965 only one value is present
1966
1967 Parameters
1968 indices -- A list of indices to act on, or a single
1969 value, which could be in the format of a csv string
1970 already.
1971
1972 Return type
1973 str
1974
1975 curator.utils.validate_actions(data)
1976 Validate an Action configuration dictionary, as imported from
1977 actions.yml, for example.
1978
1979 The method returns a validated and sanitized configuration dic‐
1980 tionary.
1981
1982 Parameters
1983 data -- The configuration dictionary
1984
1985 Return type
1986 dict
1987
1988 curator.utils.validate_filters(action, filters)
1989 Validate that the filters are appropriate for the action type,
1990 e.g. no index filters applied to a snapshot list.
1991
1992 Parameters
1993
1994 · action -- An action name
1995
1996 · filters -- A list of filters to test.
1997
1998 curator.utils.verify_client_object(test)
1999 Test if test is a proper elasticsearch.Elasticsearch client
2000 object and raise an exception if it is not.
2001
2002 Parameters
2003 test -- The variable or object to test
2004
2005 Return type
2006 None
2007
2008 curator.utils.verify_index_list(test)
2009 Test if test is a proper curator.indexlist.IndexList object and
2010 raise an exception if it is not.
2011
2012 Parameters
2013 test -- The variable or object to test
2014
2015 Return type
2016 None
2017
2018 curator.utils.verify_snapshot_list(test)
2019 Test if test is a proper curator.snapshotlist.SnapshotList
2020 object and raise an exception if it is not.
2021
2022 Parameters
2023 test -- The variable or object to test
2024
2025 Return type
2026 None
2027
2028 class curator.SchemaCheck(config, schema, test_what, location)
2029 Validate config with the provided voluptuous schema. test_what
2030 and location are for reporting the results, in case of failure.
2031 If validation is successful, the method returns config as valid.
2032
2033 Parameters
2034
2035 · config (dict) -- A configuration dictionary.
2036
2037 · schema (voluptuous.Schema) -- A voluptuous schema defi‐
2038 nition
2039
2040 · test_what (str) -- which configuration block is being
2041 validated
2042
2043 · location (str) -- An string to report which configura‐
2044 tion sub-block is being tested.
2045
2046 Examples
2047 Each of these examples presupposes that the requisite modules have been
2048 imported and an instance of the Elasticsearch client object has been
2049 created:
2050
2051 import elasticsearch
2052 import curator
2053
2054 client = elasticsearch.Elasticsearch()
2055
2056 Filter indices by prefix
2057 ilo = curator.IndexList(client)
2058 ilo.filter_by_regex(kind='prefix', value='logstash-')
2059
2060 The contents of ilo.indices would then only be indices matching the
2061 prefix.
2062
2063 Filter indices by suffix
2064 ilo = curator.IndexList(client)
2065 ilo.filter_by_regex(kind='suffix', value='-prod')
2066
2067 The contents of ilo.indices would then only be indices matching the
2068 suffix.
2069
2070 Filter indices by age (name)
2071 This example will match indices with the following criteria:
2072
2073 · Have a date string of %Y.%m.%d
2074
2075 · Use days as the unit of time measurement
2076
2077 · Filter indices older than 5 days
2078
2079 ilo = curator.IndexList(client)
2080 ilo.filter_by_age(source='name', direction='older', timestring='%Y.%m.%d',
2081 unit='days', unit_count=5
2082 )
2083
2084 The contents of ilo.indices would then only be indices matching these
2085 criteria.
2086
2087 Filter indices by age (creation_date)
2088 This example will match indices with the following criteria:
2089
2090 · Use months as the unit of time measurement
2091
2092 · Filter indices where the index creation date is older than 2 months
2093 from this moment.
2094
2095 ilo = curator.IndexList(client)
2096 ilo.filter_by_age(source='creation_date', direction='older',
2097 unit='months', unit_count=2
2098 )
2099
2100 The contents of ilo.indices would then only be indices matching these
2101 criteria.
2102
2103 Filter indices by age (field_stats)
2104 This example will match indices with the following criteria:
2105
2106 · Use days as the unit of time measurement
2107
2108 · Filter indices where the timestamp field's min_value is a date older
2109 than 3 weeks from this moment.
2110
2111 ilo = curator.IndexList(client)
2112 ilo.filter_by_age(source='field_stats', direction='older',
2113 unit='weeks', unit_count=3, field='timestamp', stats_result='min_value'
2114 )
2115
2116 The contents of ilo.indices would then only be indices matching these
2117 criteria.
2118
2119 Changelog
2120 4.2.5 (22 December 2016)
2121 General
2122
2123 · Add and increment test versions for Travis CI. #839 (untergeek)
2124
2125 · Make filter_list optional in snapshot, show_snapshot and
2126 show_indices singleton actions. #853 (alexef)
2127
2128 Bug Fixes
2129
2130 · Fix cli integration test when different host/port are specified.
2131 Reported in #843 (untergeek)
2132
2133 · Catch empty list condition during filter iteration in singleton
2134 actions. Reported in #848 (untergeek)
2135
2136 Documentation
2137
2138 · Add docs regarding how filters are ANDed together, and how to do
2139 an OR with the regex pattern filter type. Requested in #842
2140 (untergeek)
2141
2142 · Fix typo in Click version in docs. #850 (breml)
2143
2144 · Where applicable, replace [source,text] with [source,yaml] for
2145 better formatting in the resulting docs.
2146
2147 4.2.4 (7 December 2016)
2148 Bug Fixes
2149
2150 · --wait_for_completion should be True by default for Snapshot sin‐
2151 gleton action. Reported in #829 (untergeek)
2152
2153 · Increase version_max to 5.1.99. Prematurely reported in #832
2154 (untergeek)
2155
2156 · Make the '.security' index visible for snapshots so long as proper
2157 credentials are used. Reported in #826 (untergeek)
2158
2159 4.2.3.post1 (22 November 2016)
2160 This fix is only going in for pip-based installs. There are no other
2161 code changes.
2162
2163 Bug Fixes
2164
2165 · Fixed incorrect assumption of PyPI picking up dependency for cer‐
2166 tifi. It is still a dependency, but should not affect pip
2167 installs with an error any more. Reported in #821 (untergeek)
2168
2169 4.2.3 (21 November 2016)
2170 4.2.2 was pulled immediately after release after it was discovered that
2171 the Windows binary distributions were still not including the cer‐
2172 tifi-provided certificates. This has now been remedied.
2173
2174 General
2175
2176 · certifi is now officially a requirement.
2177
2178 · setup.py now forcibly includes the certifi certificate PEM file in
2179 the "frozen" distributions (i.e., the compiled versions). The
2180 get_client method was updated to reflect this and catch it for
2181 both the Linux and Windows binary distributions. This should
2182 finally put to rest #810
2183
2184 4.2.2 (21 November 2016)
2185 Bug Fixes
2186
2187 · The certifi-provided certificates were not propagating to the com‐
2188 piled RPM/DEB packages. This has been corrected. Reported in
2189 #810 (untergeek)
2190
2191 General
2192
2193 · Added missing --ignore_empty_list option to singleton actions.
2194 Requested in #812 (untergeek)
2195
2196 Documentation
2197
2198 · Add a FAQ entry regarding the click module's need for Unicode when
2199 using Python 3. Kind of a bug fix too, as the entry_points were
2200 altered to catch this omission and report a potential solution on
2201 the command-line. Reported in #814 (untergeek)
2202
2203 · Change the "Command-Line" documentation header to be "Running
2204 Curator"
2205
2206 4.2.1 (8 November 2016)
2207 Bug Fixes
2208
2209 · In the course of package release testing, an undesirable scenario
2210 was caught where boolean flags default values for curator_cli were
2211 improperly overriding values from a yaml config file.
2212
2213 General
2214
2215 · Adding in direct download URLs for the RPM, DEB, tarball and zip
2216 packages.
2217
2218 4.2.0 (4 November 2016)
2219 New Features
2220
2221 · Shard routing allocation enable/disable. This will allow you to
2222 disable shard allocation routing before performing one or more
2223 actions, and then re-enable after it is complete. Requested in
2224 #446 (untergeek)
2225
2226 · Curator 3.x-style command-line. This is now curator_cli, to dif‐
2227 ferentiate between the current binary. Not all actions are avail‐
2228 able, but the most commonly used ones are. With the addition in
2229 4.1.0 of schema and configuration validation, there's even a way
2230 to still do filter chaining on the command-line! Requested in
2231 #767, and by many other users (untergeek)
2232
2233 General
2234
2235 · Update testing to the most recent versions.
2236
2237 · Lock elasticsearch-py module version at >= 2.4.0 and <= 3.0.0.
2238 There are API changes in the 5.0 release that cause tests to fail.
2239
2240 Bug Fixes
2241
2242 · Guarantee that binary packages are built from the latest Python +
2243 libraries. This ensures that SSL/TLS will work without warning
2244 messages about insecure connections, unless they actually are
2245 insecure. Reported in #780, though the reported problem isn't what
2246 was fixed. The fix is needed based on what was discovered while
2247 troubleshooting the problem. (untergeek)
2248
2249 4.1.2 (6 October 2016)
2250 This release does not actually add any new code to Curator, but instead
2251 improves documentation and includes new linux binary packages.
2252
2253 General
2254
2255 · New Curator binary packages for common Linux systems! These will
2256 be found in the same repositories that the python-based packages
2257 are in, but have no dependencies. All necessary libraries/modules
2258 are bundled with the binary, so everything should work out of the
2259 box. This feature doesn't change any other behavior, so it's not
2260 a major release.
2261
2262 These binaries have been tested in:
2263
2264 · CentOS 6 & 7
2265
2266 · Ubuntu 12.04, 14.04, 16.04
2267
2268 · Debian 8
2269
2270 They do not work in Debian 7 (library mismatch). They may work in
2271 other systems, but that is untested.
2272
2273 The script used is in the unix_packages directory. The Vagrant‐
2274 files for the various build systems are in the Vagrant directory.
2275
2276 Bug Fixes
2277
2278 · The only bug that can be called a bug is actually a stray .exe
2279 suffix in the binary package creation section (cx_freeze) of set‐
2280 up.py. The Windows binaries should have .exe extensions, but not
2281 unix variants.
2282
2283 · Elasticsearch 5.0.0-beta1 testing revealed that a document ID is
2284 required during document creation in tests. This has been fixed,
2285 and a redundant bit of code in the forcemerge integration test was
2286 removed.
2287
2288 Documentation
2289
2290 · The documentation has been updated and improved. Examples and
2291 installation are now top-level events, with the sub-sections each
2292 having their own link. They also now show how to install and use
2293 the binary packages, and the section on installation from source
2294 has been improved. The missing section on installing the volup‐
2295 tuous schema verification module has been written and included.
2296 #776 (untergeek)
2297
2298 4.1.1 (27 September 2016)
2299 Bug Fixes
2300
2301 · String-based booleans are now properly coerced. This fixes an
2302 issue where True/False were used in environment variables, but not
2303 recognized. #765 (untergeek)
2304
2305 · Fix missing count method in __map_method in SnapshotList. Reported
2306 in #766 (untergeek)
2307
2308 General
2309
2310 · Update es_repo_mgr to use the same client/logging YAML config
2311 file. Requested in #752 (untergeek)
2312
2313 Schema Validation
2314
2315 · Cases where source was not defined in a filter (but should have
2316 been) were informing users that a timestring field was there that
2317 shouldn't have been. This edge case has been corrected.
2318
2319 Documentation
2320
2321 · Added notifications and FAQ entry to explain that AWS ES is not
2322 supported.
2323
2324 4.1.0 (6 September 2016)
2325 New Features
2326
2327 · Configuration and Action file schema validation. Requested in
2328 #674 (untergeek)
2329
2330 · Alias filtertype! With this filter, you can select indices based
2331 on whether they are part of an alias. Merged in #748 (untergeek)
2332
2333 · Count filtertype! With this filter, you can now configure Curator
2334 to only keep the most recent _n_ indices (or snapshots!). Merged
2335 in #749 (untergeek)
2336
2337 · Experimental! Use environment variables in your YAML configuration
2338 files. This was a popular request, #697. (untergeek)
2339
2340 General
2341
2342 · New requirement! voluptuous Python schema validation module
2343
2344 · Requirement version bump: Now requires elasticsearch-py 2.4.0
2345
2346 Bug Fixes
2347
2348 · delete_aliases option in close action no longer results in an
2349 error if not all selected indices have an alias. Add test to con‐
2350 firm expected behavior. Reported in #736 (untergeek)
2351
2352 Documentation
2353
2354 · Add information to FAQ regarding indices created before Elastic‐
2355 search 1.4. Merged in #747
2356
2357 4.0.6 (15 August 2016)
2358 Bug Fixes
2359
2360 · Update old calls used with ES 1.x to reflect changes in 2.x+. This
2361 was necessary to work with Elasticsearch 5.0.0-alpha5. Fixed in
2362 #728 (untergeek)
2363
2364 Doc Fixes
2365
2366 · Add section detailing that the value of a value filter element
2367 should be encapsulated in single quotes. Reported in #726.
2368 (untergeek)
2369
2370 4.0.5 (3 August 2016)
2371 Bug Fixes
2372
2373 · Fix incorrect variable name for AWS Region reported in #679
2374 (basex)
2375
2376 · Fix filter_by_space() to not fail when index age metadata is not
2377 present. Indices without the appropriate age metadata will
2378 instead be excluded, with a debug-level message. Reported in #724
2379 (untergeek)
2380
2381 Doc Fixes
2382
2383 · Fix documentation for the space filter and the source filter ele‐
2384 ment.
2385
2386 4.0.4 (1 August 2016)
2387 Bug Fixes
2388
2389 · Fix incorrect variable name in Allocation action. #706 (lukewaite)
2390
2391 · Incorrect error message in create_snapshot_body reported in #711
2392 (untergeek)
2393
2394 · Test for empty index list object should happen in action initial‐
2395 ization for snapshot action. Discovered in #711. (untergeek)
2396
2397 Doc Fixes
2398
2399 · Add menus to asciidoc chapters #704 (untergeek)
2400
2401 · Add pyyaml dependency #710 (dtrv)
2402
2403 4.0.3 (22 July 2016)
2404 General
2405
2406 · 4.0.2 didn't work for pip installs due to an omission in the MANI‐
2407 FEST.in file. This came up during release testing, but before the
2408 release was fully published. As the release was never fully pub‐
2409 lished, this should not have actually affected anyone.
2410
2411 Bug Fixes
2412
2413 · These are the same as 4.0.2, but it was never fully released.
2414
2415 · All default settings are now values returned from functions
2416 instead of constants. This was resulting in settings getting
2417 stomped on. New test addresses the original complaint. This
2418 removes the need for deepcopy. See issue #687 (untergeek)
2419
2420 · Fix host vs. hosts issue in get_client() rather than the non-func‐
2421 tional function in repomgrcli.py.
2422
2423 · Update versions being tested.
2424
2425 · Community contributed doc fixes.
2426
2427 · Reduced logging verbosity by making most messages debug level.
2428 #684 (untergeek)
2429
2430 · Fixed log whitelist behavior (and switched to blacklisting
2431 instead). Default behavior will now filter traffic from the elas‐
2432 ticsearch and urllib3 modules.
2433
2434 · Fix Travis CI testing to accept some skipped tests, as needed.
2435 #695 (untergeek)
2436
2437 · Fix missing empty index test in snapshot action. #682 (sherzberg)
2438
2439 4.0.2 (22 July 2016)
2440 Bug Fixes
2441
2442 · All default settings are now values returned from functions
2443 instead of constants. This was resulting in settings getting
2444 stomped on. New test addresses the original complaint. This
2445 removes the need for deepcopy. See issue #687 (untergeek)
2446
2447 · Fix host vs. hosts issue in get_client() rather than the non-func‐
2448 tional function in repomgrcli.py.
2449
2450 · Update versions being tested.
2451
2452 · Community contributed doc fixes.
2453
2454 · Reduced logging verbosity by making most messages debug level.
2455 #684 (untergeek)
2456
2457 · Fixed log whitelist behavior (and switched to blacklisting
2458 instead). Default behavior will now filter traffic from the elas‐
2459 ticsearch and urllib3 modules.
2460
2461 · Fix Travis CI testing to accept some skipped tests, as needed.
2462 #695 (untergeek)
2463
2464 · Fix missing empty index test in snapshot action. #682 (sherzberg)
2465
2466 4.0.1 (1 July 2016)
2467 Bug Fixes
2468
2469 · Coerce Logstash/JSON logformat type timestamp value to always use
2470 UTC. #661 (untergeek)
2471
2472 · Catch and remove indices from the actionable list if they do not
2473 have a creation_date field in settings. This field was introduced
2474 in ES v1.4, so that indicates a rather old index. #663 (untergeek)
2475
2476 · Replace missing state filter for snapshotlist. #665 (untergeek)
2477
2478 · Restore es_repo_mgr as a stopgap until other CLI scripts are
2479 added. It will remain undocumented for now, as I am debating
2480 whether to make repository creation its own action in the API.
2481 #668 (untergeek)
2482
2483 · Fix dry run results for snapshot action. #673 (untergeek)
2484
2485 4.0.0 (24 June 2016)
2486 It's official! Curator 4.0.0 is released!
2487
2488 Breaking Changes
2489
2490 · New and improved API!
2491
2492 · Command-line changes. No more command-line args, except for
2493 --config, --actions, and --dry-run:
2494
2495 · --config points to a YAML client and logging configuration
2496 file. The default location is ~/.curator/curator.yml
2497
2498 · --actions arg points to a YAML action configuration file
2499
2500 · --dry-run will simulate the action(s) which would have taken
2501 place, but not actually make any changes to the cluster or
2502 its indices.
2503
2504 New Features
2505
2506 · Snapshot restore is here!
2507
2508 · YAML configuration files. Now a single file can define an entire
2509 batch of commands, each with their own filters, to be performed in
2510 sequence.
2511
2512 · Sort by index age not only by index name (as with previous ver‐
2513 sions of Curator), but also by index creation_date, or by calcula‐
2514 tions from the Field Stats API on a timestamp field.
2515
2516 · Atomically add/remove indices from aliases! This is possible by
2517 way of the new IndexList class and YAML configuration files.
2518
2519 · State of indices pulled and stored in IndexList instance. Fewer
2520 API calls required to serially test for open/close, size_in_bytes,
2521 etc.
2522
2523 · Filter by space now allows sorting by age!
2524
2525 · Experimental! Use AWS IAM credentials to sign requests to Elastic‐
2526 search. This requires the end user to manually install the
2527 requests_aws4auth python module.
2528
2529 · Optionally delete aliases from indices before closing.
2530
2531 · An empty index or snapshot list no longer results in an error if
2532 you set ignore_empty_list to True. If True it will still log that
2533 the action was not performed, but will continue to the next
2534 action. If 'False' it will log an ERROR and exit with code 1.
2535
2536 API
2537
2538 · Updated API documentation
2539
2540 · Class: IndexList. This pulls all indices at instantiation, and you
2541 apply filters, which are class methods. You can iterate over as
2542 many filters as you like, in fact, due to the YAML config file.
2543
2544 · Class: SnapshotList. This pulls all snapshots from the given
2545 repository at instantiation, and you apply filters, which are
2546 class methods. You can iterate over as many filters as you like,
2547 in fact, due to the YAML config file.
2548
2549 · Add wait_for_completion to Allocation and Replicas actions. These
2550 will use the client timeout, as set by default or timeout_over‐
2551 ride, to determine how long to wait for timeout. These are han‐
2552 dled in batches of indices for now.
2553
2554 · Allow timeout_override option for all actions. This allows for
2555 different timeout values per action.
2556
2557 · Improve API by giving each action its own do_dry_run() method.
2558
2559 General
2560
2561 · Updated use documentation for Elastic main site.
2562
2563 · Include example files for --config and --actions.
2564
2565 4.0.0b2 (16 June 2016)
2566 Second beta release of the 4.0 branch
2567
2568 New Feature
2569
2570 · An empty index or snapshot list no longer results in an error if
2571 you set ignore_empty_list to True. If True it will still log that
2572 the action was not performed, but will continue to the next
2573 action. If 'False' it will log an ERROR and exit with code 1.
2574 (untergeek)
2575
2576 4.0.0b1 (13 June 2016)
2577 First beta release of the 4.0 branch!
2578
2579 The release notes will be rehashing the new features in 4.0, rather
2580 than the bug fixes done during the alphas.
2581
2582 Breaking Changes
2583
2584 · New and improved API!
2585
2586 · Command-line changes. No more command-line args, except for
2587 --config, --actions, and --dry-run:
2588
2589 · --config points to a YAML client and logging configuration
2590 file. The default location is ~/.curator/curator.yml
2591
2592 · --actions arg points to a YAML action configuration file
2593
2594 · --dry-run will simulate the action(s) which would have taken
2595 place, but not actually make any changes to the cluster or
2596 its indices.
2597
2598 New Features
2599
2600 · Snapshot restore is here!
2601
2602 · YAML configuration files. Now a single file can define an entire
2603 batch of commands, each with their own filters, to be performed in
2604 sequence.
2605
2606 · Sort by index age not only by index name (as with previous ver‐
2607 sions of Curator), but also by index creation_date, or by calcula‐
2608 tions from the Field Stats API on a timestamp field.
2609
2610 · Atomically add/remove indices from aliases! This is possible by
2611 way of the new IndexList class and YAML configuration files.
2612
2613 · State of indices pulled and stored in IndexList instance. Fewer
2614 API calls required to serially test for open/close, size_in_bytes,
2615 etc.
2616
2617 · Filter by space now allows sorting by age!
2618
2619 · Experimental! Use AWS IAM credentials to sign requests to Elastic‐
2620 search. This requires the end user to manually install the
2621 requests_aws4auth python module.
2622
2623 · Optionally delete aliases from indices before closing.
2624
2625 API
2626
2627 · Updated API documentation
2628
2629 · Class: IndexList. This pulls all indices at instantiation, and you
2630 apply filters, which are class methods. You can iterate over as
2631 many filters as you like, in fact, due to the YAML config file.
2632
2633 · Class: SnapshotList. This pulls all snapshots from the given
2634 repository at instantiation, and you apply filters, which are
2635 class methods. You can iterate over as many filters as you like,
2636 in fact, due to the YAML config file.
2637
2638 · Add wait_for_completion to Allocation and Replicas actions. These
2639 will use the client timeout, as set by default or timeout_over‐
2640 ride, to determine how long to wait for timeout. These are han‐
2641 dled in batches of indices for now.
2642
2643 · Allow timeout_override option for all actions. This allows for
2644 different timeout values per action.
2645
2646 · Improve API by giving each action its own do_dry_run() method.
2647
2648 General
2649
2650 · Updated use documentation for Elastic main site.
2651
2652 · Include example files for --config and --actions.
2653
2654 4.0.0a10 (10 June 2016)
2655 New Features
2656
2657 · Snapshot restore is here!
2658
2659 · Optionally delete aliases from indices before closing. Fixes #644
2660 (untergeek)
2661
2662 General
2663
2664 · Add wait_for_completion to Allocation and Replicas actions. These
2665 will use the client timeout, as set by default or timeout_over‐
2666 ride, to determine how long to wait for timeout. These are han‐
2667 dled in batches of indices for now.
2668
2669 · Allow timeout_override option for all actions. This allows for
2670 different timeout values per action.
2671
2672 Bug Fixes
2673
2674 · Disallow use of master_only if multiple hosts are used. Fixes #615
2675 (untergeek)
2676
2677 · Fix an issue where arguments weren't being properly passed and
2678 populated.
2679
2680 · ForceMerge replaced Optimize in ES 2.1.0.
2681
2682 · Fix prune_nones to work with Python 2.6. Fixes #619 (untergeek)
2683
2684 · Fix TimestringSearch to work with Python 2.6. Fixes #622
2685 (untergeek)
2686
2687 · Add language classifiers to setup.py. Fixes #640 (untergeek)
2688
2689 · Changed references to readthedocs.org to be readthedocs.io.
2690
2691 4.0.0a9 (27 Apr 2016)
2692 General
2693
2694 · Changed create_index API to use kwarg extra_settings instead of
2695 body
2696
2697 · Normalized Alias action to use name instead of alias. This sim‐
2698 plifies documentation by reducing the number of option elements.
2699
2700 · Streamlined some code
2701
2702 · Made exclude a filter element setting for all filters. Updated all
2703 examples to show this.
2704
2705 · Improved documentation
2706
2707 New Features
2708
2709 · Alias action can now accept extra_settings to allow adding fil‐
2710 ters, and/or routing.
2711
2712 4.0.0a8 (26 Apr 2016)
2713 Bug Fixes
2714
2715 · Fix to use optimize with versions of Elasticsearch < 5.0
2716
2717 · Fix missing setting in testvars
2718
2719 4.0.0a7 (25 Apr 2016)
2720 Bug Fixes
2721
2722 · Fix AWS4Auth error.
2723
2724 4.0.0a6 (25 Apr 2016)
2725 General
2726
2727 · Documentation updates.
2728
2729 · Improve API by giving each action its own do_dry_run() method.
2730
2731 Bug Fixes
2732
2733 · Do not escape characters other than . and - in timestrings. Fixes
2734 #602 (untergeek)
2735
2736 ** New Features**
2737
2738 · Added CreateIndex action.
2739
2740 4.0.0a4 (21 Apr 2016)
2741 Bug Fixes
2742
2743 · Require pyyaml 3.10 or better.
2744
2745 · In the case that no options are in an action, apply the defaults.
2746
2747 4.0.0a3 (21 Apr 2016)
2748 It's time for Curator 4.0 alpha!
2749
2750 Breaking Changes
2751
2752 · New API! (again?!)
2753
2754 · Command-line changes. No more command-line args, except for
2755 --config, --actions, and --dry-run:
2756
2757 · --config points to a YAML client and logging configuration
2758 file. The default location is ~/.curator/curator.yml
2759
2760 · --actions arg points to a YAML action configuration file
2761
2762 · --dry-run will simulate the action(s) which would have taken
2763 place, but not actually make any changes to the cluster or
2764 its indices.
2765
2766 General
2767
2768 · Updated API documentation
2769
2770 · Updated use documentation for Elastic main site.
2771
2772 · Include example files for --config and --actions.
2773
2774 New Features
2775
2776 · Sort by index age not only by index name (as with previous ver‐
2777 sions of Curator), but also by index creation_date, or by calcula‐
2778 tions from the Field Stats API on a timestamp field.
2779
2780 · Class: IndexList. This pulls all indices at instantiation, and you
2781 apply filters, which are class methods. You can iterate over as
2782 many filters as you like, in fact, due to the YAML config file.
2783
2784 · Class: SnapshotList. This pulls all snapshots from the given
2785 repository at instantiation, and you apply filters, which are
2786 class methods. You can iterate over as many filters as you like,
2787 in fact, due to the YAML config file.
2788
2789 · YAML configuration files. Now a single file can define an entire
2790 batch of commands, each with their own filters, to be performed in
2791 sequence.
2792
2793 · Atomically add/remove indices from aliases! This is possible by
2794 way of the new IndexList class and YAML configuration files.
2795
2796 · State of indices pulled and stored in IndexList instance. Fewer
2797 API calls required to serially test for open/close, size_in_bytes,
2798 etc.
2799
2800 · Filter by space now allows sorting by age!
2801
2802 · Experimental! Use AWS IAM credentials to sign requests to Elastic‐
2803 search. This requires the end user to manually install the
2804 requests_aws4auth python module.
2805
2806 3.5.1 (21 March 2016)
2807 Bug fixes
2808
2809 · Add more logging information to snapshot delete method #582
2810 (untergeek)
2811
2812 · Improve default timeout, logging, and exception handling for seal
2813 command #583 (untergeek)
2814
2815 · Fix use of default snapshot name. #584 (untergeek)
2816
2817 3.5.0 (16 March 2016)
2818 General
2819
2820 · Add support for the --client-cert and --client-key command line
2821 parameters and client_cert and client_key parameters to the
2822 get_client() call. #520 (richm)
2823
2824 Bug fixes
2825
2826 · Disallow users from creating snapshots with upper-case letters,
2827 which is not permitted by Elasticsearch. #562 (untergeek)
2828
2829 · Remove print() command from setup.py as it causes issues with com‐
2830 mand- line retrieval of --url, etc. #568 (thib-ack)
2831
2832 · Remove unnecessary argument from build_filter() #530 (zzugg)
2833
2834 · Allow day of year filter to be made up with 1, 2 or 3 digits #578
2835 (petitout)
2836
2837 3.4.1 (10 February 2016)
2838 General
2839
2840 · Update license copyright to 2016
2841
2842 · Use slim python version with Docker #527 (xaka)
2843
2844 · Changed --master-only exit code to 0 when connected to non-master
2845 node #540 (wkruse)
2846
2847 · Add cx_Freeze capability to setup.py, plus a binary_release.py
2848 script to simplify binary package creation. #554 (untergeek)
2849
2850 · Set Elastic as author. #555 (untergeek)
2851
2852 · Put repository creation methods into API and document them.
2853 Requested in #550 (untergeek)
2854
2855 Bug fixes
2856
2857 · Fix sphinx documentation build error #506 (hydrapolic)
2858
2859 · Ensure snapshots are found before iterating #507 (garyelephant)
2860
2861 · Fix a doc inconsistency #509 (pmoust)
2862
2863 · Fix a typo in show documentation #513 (pbamba)
2864
2865 · Default to trying the cluster state for checking whether indices
2866 are closed, and then fall back to using the _cat API (for Amazon
2867 ES instances). #519 (untergeek)
2868
2869 · Improve logging to show time delay between optimize runs, if
2870 selected. #525 (untergeek)
2871
2872 · Allow elasticsearch-py module versions through 2.3.0 (a presump‐
2873 tion at this point) #524 (untergeek)
2874
2875 · Improve logging in snapshot api method to reveal when a repository
2876 appears to be missing. Reported in #551 (untergeek)
2877
2878 · Test that --timestring has the correct variable for --time-unit.
2879 Reported in #544 (untergeek)
2880
2881 · Allocation will exit with exit_code 0 now when there are no
2882 indices to work on. Reported in #531 (untergeek)
2883
2884 3.4.0 (28 October 2015)
2885 General
2886
2887 · API change in elasticsearch-py 1.7.0 prevented alias operations.
2888 Fixed in #486 (HonzaKral)
2889
2890 · During index selection you can now select only closed indices with
2891 --closed-only. Does not impact --all-indices Reported in #476.
2892 Fixed in #487 (Basster)
2893
2894 · API Changes in Elasticsearch 2.0.0 required some refactoring. All
2895 tests pass for ES versions 1.0.3 through 2.0.0-rc1. Fixed in #488
2896 (untergeek)
2897
2898 · es_repo_mgr now has access to the same SSL options from #462. #489
2899 (untergeek)
2900
2901 · Logging improvements requested in #475. (untergeek)
2902
2903 · Added --quiet flag. #494 (untergeek)
2904
2905 · Fixed index_closed to work with AWS Elasticsearch. #499 (univerio)
2906
2907 · Acceptable versions of Elasticsearch-py module are 1.8.0 up to
2908 2.1.0 (untergeek)
2909
2910 3.3.0 (31 August 2015)
2911 Announcement
2912
2913 · Curator is tested in Jenkins. Each commit to the master branch is
2914 tested with both Python versions 2.7.6 and 3.4.0 against each of
2915 the following Elasticsearch versions: * 1.7_nightly * 1.6_nightly
2916 * 1.7.0 * 1.6.1 * 1.5.1 * 1.4.4 * 1.3.9 * 1.2.4 * 1.1.2 * 1.0.3
2917
2918 · If you are using a version different from this, your results may
2919 vary.
2920
2921 General
2922
2923 · Allocation type can now also be include or exclude, in addition to
2924 the the existing default require type. Add --type to the alloca‐
2925 tion command to specify the type. #443 (steffo)
2926
2927 · Bump elasticsearch python module dependency to 1.6.0+ to enable
2928 synced_flush API call. Reported in #447 (untergeek)
2929
2930 · Add SSL features, --ssl-no-validate and certificate to provide
2931 other ways to validate SSL connections to Elasticsearch. #436
2932 (untergeek)
2933
2934 Bug fixes
2935
2936 · Delete by space was only reporting space used by primary shards.
2937 Fixed to show all space consumed. Reported in #455 (untergeek)
2938
2939 · Update exit codes and messages for snapshot selection. Reported
2940 in #452 (untergeek)
2941
2942 · Fix potential int/float casting issues. Reported in #465
2943 (untergeek)
2944
2945 3.2.3 (16 July 2015)
2946 Bug fix
2947
2948 · In order to address customer and community issues with bulk
2949 deletes, the master_timeout is now invoked for delete operations.
2950 This should address 503s with 30s timeouts in the debug log, even
2951 when --timeout is set to a much higher value. The master_timeout
2952 is tied to the --timeout flag value, but will not exceed 300 sec‐
2953 onds. #420 (untergeek)
2954
2955 General
2956
2957 · Mixing it up a bit here by putting General second! The only other
2958 changes are that logging has been improved for deletes so you
2959 won't need to have the --debug flag to see if you have error codes
2960 >= 400, and some code documentation improvements.
2961
2962 3.2.2 (13 July 2015)
2963 General
2964
2965 · This is a very minor change. The mock library recently removed
2966 support for Python 2.6. As many Curator users are using RHEL/Cen‐
2967 tOS 6, which is pinned to Python 2.6, this requires the mock ver‐
2968 sion referenced by Curator to also be pinned to a supported ver‐
2969 sion (mock==1.0.1).
2970
2971 3.2.1 (10 July 2015)
2972 General
2973
2974 · Added delete verification & retry (fixed at 3x) to potentially
2975 cover an edge case in #420 (untergeek)
2976
2977 · Since GitHub allows rST (reStructuredText) README documents, and
2978 that's what PyPI wants also, the README has been rebuilt in rST.
2979 (untergeek)
2980
2981 Bug fixes
2982
2983 · If closing indices with ES 1.6+, and all indices are closed,
2984 ensure that the seal command does not try to seal all indices.
2985 Reported in #426 (untergeek)
2986
2987 · Capture AttributeError when sealing indices if a non-TransportEr‐
2988 ror occurs. Reported in #429 (untergeek)
2989
2990 3.2.0 (25 June 2015)
2991 New!
2992
2993 · Added support to manually seal, or perform a [synced flush](‐
2994 http://www.elastic.co/guide/en/elasticsearch/reference/cur‐
2995 rent/indices-synced-flush.html) on indices with the seal command.
2996 #394 (untergeek)
2997
2998 · Added experimental support for SSL certificate validation. In
2999 order for this to work, you must install the certifi python mod‐
3000 ule: pip install certifi This feature should automatically work if
3001 the certifi module is installed. Please report any issues.
3002
3003 General
3004
3005 · Changed logging to go to stdout rather than stderr. Reopened #121
3006 and figured they were right. This is better. (untergeek)
3007
3008 · Exit code 99 was unpopular. It has been removed. Reported in #371
3009 and #391 (untergeek)
3010
3011 · Add --skip-repo-validation flag for snapshots. Do not validate
3012 write access to repository on all cluster nodes before proceeding.
3013 Useful for shared filesystems where intermittent timeouts can
3014 affect validation, but won't likely affect snapshot success.
3015 Requested in #396 (untergeek)
3016
3017 · An alias no longer needs to be pre-existent in order to use the
3018 alias command. #317 (untergeek)
3019
3020 · es_repo_mgr now passes through upstream errors in the event a
3021 repository fails to be created. Requested in #405 (untergeek)
3022
3023 Bug fixes
3024
3025 · In rare cases, * wildcard would not expand. Replaced with _all.
3026 Reported in #399 (untergeek)
3027
3028 · Beginning with Elasticsearch 1.6, closed indices cannot have their
3029 replica count altered. Attempting to do so results in this error:
3030 org.elasticsearch.ElasticsearchIllegalArgumentException: Can't
3031 update [index.number_of_replicas] on closed indices [[test_index]]
3032 - can leave index in an unopenable state As a result, the
3033 change_replicas method has been updated to prune closed indices.
3034 This change will apply to all versions of Elasticsearch. Reported
3035 in #400 (untergeek)
3036
3037 · Fixed es_repo_mgr repository creation verification error. Reported
3038 in #389 (untergeek)
3039
3040 3.1.0 (21 May 2015)
3041 General
3042
3043 · If wait_for_completion is true, snapshot success is now tested and
3044 logged. Reported in #253 (untergeek)
3045
3046 · Log & return false if a snapshot is already in progress
3047 (untergeek)
3048
3049 · Logs individual deletes per index, even though they happen in
3050 batch mode. Also log individual snapshot deletions. Reported in
3051 #372 (untergeek)
3052
3053 · Moved chunk_index_list from cli to api utils as it's now also used
3054 by filter.py
3055
3056 · Added a warning and 10 second timer countdown if you use
3057 --timestring to filter indices, but do not use --older-than or
3058 --newer-than in conjunction with it. This is to address #348,
3059 which behavior isn't a bug, but prevents accidental action against
3060 all of your time-series indices. The warning and timer are not
3061 displayed for show and --dry-run operations.
3062
3063 · Added tests for es_repo_mgr in #350
3064
3065 · Doc fixes
3066
3067 Bug fixes
3068
3069 · delete-by-space needed the same fix used for #245. Fixed in #353
3070 (untergeek)
3071
3072 · Increase default client timeout for es_repo_mgr as node discovery
3073 and availability checks for S3 repositories can take a bit. Fixed
3074 in #352 (untergeek)
3075
3076 · If an index is closed, indicate in show and --dry-run output.
3077 Reported in #327. (untergeek)
3078
3079 · Fix issue where CLI parameters were not being passed to the
3080 es_repo_mgr create sub-command. Reported in #337. (feltnerm)
3081
3082 3.0.3 (27 Mar 2015)
3083 Announcement
3084
3085 This is a bug fix release. #319 and #320 are affecting a few users, so
3086 this release is being expedited.
3087
3088 Test count: 228 Code coverage: 99%
3089
3090 General
3091
3092 · Documentation for the CLI converted to Asciidoc and moved to
3093 http://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html
3094
3095 · Improved logging, and refactored a few methods to help with this.
3096
3097 · Dry-run output is now more like v2, with the index or snapshot in
3098 the log line, along with the command. Several tests needed refac‐
3099 toring with this change, along with a bit of documentation.
3100
3101 Bug fixes
3102
3103 · Fix links to repository in setup.py. Reported in #318 (untergeek)
3104
3105 · No more --delay with optimized indices. Reported in #319
3106 (untergeek)
3107
3108 · --request_timeout not working as expected. Reinstate the version
3109 2 timeout override feature to prevent default timeouts for opti‐
3110 mize and snapshot operations. Reported in #320 (untergeek)
3111
3112 · Reduce index count to 200 for test.integration.test_cli_com‐
3113 mands.TestCLISnapshot.test_cli_snapshot_huge_list in order to
3114 reduce or eliminate Jenkins CI test timeouts. Reported in #324
3115 (untergeek)
3116
3117 · --dry-run no longer calls show, but will show output in the log,
3118 as in v2. This was a recurring complaint. See #328 (untergeek)
3119
3120 3.0.2 (23 Mar 2015)
3121 Announcement
3122
3123 This is a bug fix release. #307 and #309 were big enough to warrant an
3124 expedited release.
3125
3126 Bug fixes
3127
3128 · Purge unneeded constants, and clean up config options for snap‐
3129 shot. Reported in #303 (untergeek)
3130
3131 · Don't split large index list if performing snapshots. Reported in
3132 #307 (untergeek)
3133
3134 · Act correctly if a zero value for --older-than or --newer-than is
3135 provided. #309 (untergeek)
3136
3137 3.0.1 (16 Mar 2015)
3138 Announcement
3139
3140 The regex_iterate method was horribly named. It has been renamed to
3141 apply_filter. Methods have been added to allow API users to build a
3142 filtered list of indices similarly to how the CLI does. This was an
3143 oversight. Props to @SegFaultAX for pointing this out.
3144
3145 General
3146
3147 · In conjunction with the rebrand to Elastic, URLs and documentation
3148 were updated.
3149
3150 · Renamed horribly named regex_iterate method to apply_filter #298
3151 (untergeek)
3152
3153 · Added build_filter method to mimic CLI calls. #298 (untergeek)
3154
3155 · Added Examples page in the API documentation. #298 (untergeek)
3156
3157 Bug fixes
3158
3159 · Refactored to show --dry-run info for --disk-space calls. Reported
3160 in #290 (untergeek)
3161
3162 · Added list chunking so acting on huge lists of indices won't
3163 result in a URL bigger than 4096 bytes (Elasticsearch's default
3164 limit.) Reported in
3165 https://github.com/elastic/curator/issues/245#issuecomment-77916081
3166
3167 · Refactored to_csv() method to be simpler.
3168
3169 · Added and removed tests according to changes. Code coverage still
3170 at 99%
3171
3172 3.0.0 (9 March 2015)
3173 Release Notes
3174
3175 The full release of Curator 3.0 is out! Check out all of the changes
3176 here!
3177
3178 Note: This release is _not_ reverse compatible with any previous ver‐
3179 sion.
3180
3181 Because 3.0 is a major point release, there have been some major
3182 changes to both the API as well as the CLI arguments and structure.
3183
3184 Be sure to read the updated command-line specific docs in the [wiki](‐
3185 https://github.com/elasticsearch/curator/wiki) and change your com‐
3186 mand-line arguments accordingly.
3187
3188 The API docs are still at http://curator.readthedocs.io. Be sure to
3189 read the latest docs, or select the docs for 3.0.0.
3190
3191 General
3192
3193 · Breaking changes to the API. Because this is a major point revi‐
3194 sion, changes to the API have been made which are non-reverse com‐
3195 patible. Before upgrading, be sure to update your scripts and
3196 test them thoroughly.
3197
3198 · Python 3 support Somewhere along the line, Curator would no longer
3199 work with curator. All tests now pass for both Python2 and
3200 Python3, with 99% code coverage in both environments.
3201
3202 · New CLI library. Using Click now. http://click.pocoo.org/3/ This
3203 change is especially important as it allows very easy CLI integra‐
3204 tion testing.
3205
3206 · Pipelined filtering! You can now use --older-than & --newer-than
3207 in the same command! You can also provide your own regex via the
3208 --regex parameter. You can use multiple instances of the
3209 --exclude flag.
3210
3211 · Manually include indices! With the --index paramter, you can add
3212 an index to the working list. You can provide multiple instances
3213 of the --index parameter as well!
3214
3215 · Tests! So many tests now. Test coverage of the API methods is at
3216 100% now, and at 99% for the CLI methods. This doesn't mean that
3217 all of the tests are perfect, or that I haven't missed some sce‐
3218 narios. It does mean, however, that it will be much easier to
3219 write tests if something turns up missed. It also means that any
3220 new functionality will now need to have tests.
3221
3222 · Iteration changes Methods now only iterate through each index when
3223 appropriate! In fact, the only commands that iterate are alias
3224 and optimize. The bloom command will iterate, but only if you
3225 have added the --delay flag with a value greater than zero.
3226
3227 · Improved packaging! Methods have been moved into categories of
3228 api and cli, and further broken out into individual modules to
3229 help them be easier to find and read.
3230
3231 · Check for allocation before potentially re-applying an allocation
3232 rule. #273 (ferki)
3233
3234 · Assigning replica count and routing allocation rules _can_ be done
3235 to closed indices. #283 (ferki)
3236
3237 Bug fixes
3238
3239 · Don't accidentally delete .kibana index. #261 (malagoli)
3240
3241 · Fix segment count for empty indices. #265 (untergeek)
3242
3243 · Change bloom filter cutoff Elasticsearch version to 1.4. Reported
3244 in #267 (untergeek)
3245
3246 3.0.0rc1 (5 March 2015)
3247 Release Notes
3248
3249 RC1 is here! I'm re-releasing the Changes from all betas here, minus
3250 the intra-beta code fixes. Barring any show stoppers, the official
3251 release will be soon.
3252
3253 General
3254
3255 · Breaking changes to the API. Because this is a major point revi‐
3256 sion, changes to the API have been made which are non-reverse com‐
3257 patible. Before upgrading, be sure to update your scripts and
3258 test them thoroughly.
3259
3260 · Python 3 support Somewhere along the line, Curator would no longer
3261 work with curator. All tests now pass for both Python2 and
3262 Python3, with 99% code coverage in both environments.
3263
3264 · New CLI library. Using Click now. http://click.pocoo.org/3/ This
3265 change is especially important as it allows very easy CLI integra‐
3266 tion testing.
3267
3268 · Pipelined filtering! You can now use --older-than & --newer-than
3269 in the same command! You can also provide your own regex via the
3270 --regex parameter. You can use multiple instances of the
3271 --exclude flag.
3272
3273 · Manually include indices! With the --index paramter, you can add
3274 an index to the working list. You can provide multiple instances
3275 of the --index parameter as well!
3276
3277 · Tests! So many tests now. Test coverage of the API methods is at
3278 100% now, and at 99% for the CLI methods. This doesn't mean that
3279 all of the tests are perfect, or that I haven't missed some sce‐
3280 narios. It does mean, however, that it will be much easier to
3281 write tests if something turns up missed. It also means that any
3282 new functionality will now need to have tests.
3283
3284 · Methods now only iterate through each index when appropriate!
3285
3286 · Improved packaging! Hopefully the entry_point issues some users
3287 have had will be addressed by this. Methods have been moved into
3288 categories of api and cli, and further broken out into individual
3289 modules to help them be easier to find and read.
3290
3291 · Check for allocation before potentially re-applying an allocation
3292 rule. #273 (ferki)
3293
3294 · Assigning replica count and routing allocation rules _can_ be done
3295 to closed indices. #283 (ferki)
3296
3297 Bug fixes
3298
3299 · Don't accidentally delete .kibana index. #261 (malagoli)
3300
3301 · Fix segment count for empty indices. #265 (untergeek)
3302
3303 · Change bloom filter cutoff Elasticsearch version to 1.4. Reported
3304 in #267 (untergeek)
3305
3306 3.0.0b4 (5 March 2015)
3307 Notes
3308
3309 Integration testing! Because I finally figured out how to use the
3310 Click Testing API, I now have a good collection of command-line simula‐
3311 tions, complete with a real back-end. This testing found a few bugs
3312 (this is why testing exists, right?), and fixed a few of them.
3313
3314 Bug fixes
3315
3316 · HUGE! curator show snapshots would _delete_ snapshots. This is
3317 fixed.
3318
3319 · Return values are now being sent from the commands.
3320
3321 · scripttest is no longer necessary (click.Test works!)
3322
3323 · Calling get_snapshot without a snapshot name returns all snapshots
3324
3325 3.0.0b3 (4 March 2015)
3326 Bug fixes
3327
3328 · setup.py was lacking the new packages "curator.api" and "cura‐
3329 tor.cli" The package works now.
3330
3331 · Python3 suggested I had to normalize the beta tag to just b3, so
3332 that's also changed.
3333
3334 · Cleaned out superfluous imports and logger references from the
3335 __init__.py files.
3336
3337 3.0.0-beta2 (3 March 2015)
3338 Bug fixes
3339
3340 · Python3 issues resolved. Tests now pass on both Python2 and
3341 Python3
3342
3343 3.0.0-beta1 (3 March 2015)
3344 General
3345
3346 · Breaking changes to the API. Because this is a major point revi‐
3347 sion, changes to the API have been made which are non-reverse com‐
3348 patible. Before upgrading, be sure to update your scripts and
3349 test them thoroughly.
3350
3351 · New CLI library. Using Click now. http://click.pocoo.org/3/
3352
3353 · Pipelined filtering! You can now use --older-than & --newer-than
3354 in the same command! You can also provide your own regex via the
3355 --regex parameter. You can use multiple instances of the
3356 --exclude flag.
3357
3358 · Manually include indices! With the --index paramter, you can add
3359 an index to the working list. You can provide multiple instances
3360 of the --index parameter as well!
3361
3362 · Tests! So many tests now. Unit test coverage of the API methods
3363 is at 100% now. This doesn't mean that all of the tests are per‐
3364 fect, or that I haven't missed some scenarios. It does mean that
3365 any new functionality will need to also have tests, now.
3366
3367 · Methods now only iterate through each index when appropriate!
3368
3369 · Improved packaging! Hopefully the entry_point issues some users
3370 have had will be addressed by this. Methods have been moved into
3371 categories of api and cli, and further broken out into individual
3372 modules to help them be easier to find and read.
3373
3374 · Check for allocation before potentially re-applying an allocation
3375 rule. #273 (ferki)
3376
3377 Bug fixes
3378
3379 · Don't accidentally delete .kibana index. #261 (malagoli)
3380
3381 · Fix segment count for empty indices. #265 (untergeek)
3382
3383 · Change bloom filter cutoff Elasticsearch version to 1.4. Reported
3384 in #267 (untergeek)
3385
3386 2.1.2 (22 January 2015)
3387 Bug fixes
3388
3389 · Do not try to set replica count if count matches provided argu‐
3390 ment. #247 (bobrik)
3391
3392 · Fix JSON logging (Logstash format). #250 (magnusbaeck)
3393
3394 · Fix bug in filter_by_space() which would match all indices if the
3395 provided patterns found no matches. Reported in #254 (untergeek)
3396
3397 2.1.1 (30 December 2014)
3398 Bug fixes
3399
3400 · Renamed unnecessarily redundant --replicas to --count in args for
3401 curator_script.py
3402
3403 2.1.0 (30 December 2014)
3404 General
3405
3406 · Snapshot name now appears in log output or STDOUT. #178
3407 (untergeek)
3408
3409 · Replicas! You can now change the replica count of indices.
3410 Requested in #175 (untergeek)
3411
3412 · Delay option added to Bloom Filter functionality. #206 (untergeek)
3413
3414 · Add 2-digit years as acceptable pattern (y vs. Y). Reported in
3415 #209 (untergeek)
3416
3417 · Add Docker container definition #226 (christianvozar)
3418
3419 · Allow the use of 0 with --older-than, --most-recent and
3420 --delete-older-than. See #208. #211 (bobrik)
3421
3422 Bug fixes
3423
3424 · Edge case where 1.4.0.Beta1-SNAPSHOT would break version check.
3425 Reported in #183 (untergeek)
3426
3427 · Typo fixed. #193 (ferki)
3428
3429 · Type fixed. #204 (gheppner)
3430
3431 · Shows proper error in the event of concurrent snapshots. #177
3432 (untergeek)
3433
3434 · Fixes erroneous index display of _, a, l, l when --all-indices
3435 selected. Reported in #222 (untergeek)
3436
3437 · Use json.dumps() to escape exceptions. Reported in #210
3438 (untergeek)
3439
3440 · Check if index is closed before adding to alias. Reported in #214
3441 (bt5e)
3442
3443 · No longer force-install argparse if pre-installed #216 (whyscream)
3444
3445 · Bloom filters have been removed from Elasticsearch 1.5.0. Update
3446 methods and tests to act accordingly. #233 (untergeek)
3447
3448 2.0.2 (8 October 2014)
3449 Bug fixes
3450
3451 · Snapshot name not displayed in log or STDOUT #185 (untergeek)
3452
3453 · Variable name collision in delete_snapshot() #186 (untergeek)
3454
3455 2.0.1 (1 October 2014)
3456 Bug fix
3457
3458 · Override default timeout when snapshotting --all-indices #179
3459 (untergeek)
3460
3461 2.0.0 (25 September 2014)
3462 General
3463
3464 · New! Separation of Elasticsearch Curator Python API and cura‐
3465 tor_script.py (untergeek)
3466
3467 · New! --delay after optimize to allow cluster to quiesce #131
3468 (untergeek)
3469
3470 · New! --suffix option in addition to --prefix #136 (untergeek)
3471
3472 · New! Support for wildcards in prefix & suffix #136 (untergeek)
3473
3474 · Complete refactor of snapshots. Now supporting incrementals!
3475 (untergeek)
3476
3477 Bug fix
3478
3479 · Incorrect error msg if no indices sent to create_snapshot
3480 (untergeek)
3481
3482 · Correct for API change coming in ES 1.4 #168 (untergeek)
3483
3484 · Missing " in Logstash log format #143 (cassianoleal)
3485
3486 · Change non-master node test to exit code 0, log as INFO. #145
3487 (untergeek)
3488
3489 · months option missing from validate_timestring() (untergeek)
3490
3491 1.2.2 (29 July 2014)
3492 Bug fix
3493
3494 · Updated README.md to briefly explain what curator does #117
3495 (untergeek)
3496
3497 · Fixed es_repo_mgr logging whitelist #119 (untergeek)
3498
3499 · Fixed absent months time-unit #120 (untergeek)
3500
3501 · Filter out .marvel-kibana when prefix is .marvel- #120 (untergeek)
3502
3503 · Clean up arg parsing code where redundancy exists #123 (untergeek)
3504
3505 · Properly divide debug from non-debug logging #125 (untergeek)
3506
3507 · Fixed show command bug caused by changes to command structure #126
3508 (michaelweiser)
3509
3510 1.2.1 (24 July 2014)
3511 Bug fix
3512
3513 · Fixed the new logging when called by curator entrypoint.
3514
3515 1.2.0 (24 July 2014)
3516 General
3517
3518 · New! Allow user-specified date patterns: --timestring #111
3519 (untergeek)
3520
3521 · New! Curate weekly indices (must use week of year) #111
3522 (untergeek)
3523
3524 · New! Log output in logstash format --logformat logstash #111
3525 (untergeek)
3526
3527 · Updated! Cleaner default logs (debug still shows everything)
3528 (untergeek)
3529
3530 · Improved! Dry runs are more visible in log output (untergeek)
3531
3532 Errata
3533
3534 · The --separator option was removed in lieu of user-specified date
3535 patterns.
3536
3537 · Default --timestring for days: %Y.%m.%d (Same as before)
3538
3539 · Default --timestring for hours: %Y.%m.%d.%H (Same as before)
3540
3541 · Default --timestring for weeks: %Y.%W
3542
3543 1.1.3 (18 July 2014)
3544 Bug fix
3545
3546 · Prefix not passed in get_object_list() #106 (untergeek)
3547
3548 · Use os.devnull instead of /dev/null for Windows #102 (untergeek)
3549
3550 · The http auth feature was erroneously omitted #100 (bbuchacher)
3551
3552 1.1.2 (13 June 2014)
3553 Bug fix
3554
3555 · This was a showstopper bug for anyone using RHEL/CentOS with a
3556 Python 2.6 dependency for yum
3557
3558 · Python 2.6 does not like format calls without an index. #96 via
3559 #95 (untergeek)
3560
3561 · We won't talk about what happened to 1.1.1. No really. I hate
3562 git today :(
3563
3564 1.1.0 (12 June 2014)
3565 General
3566
3567 · Updated! New command structure
3568
3569 · New! Snapshot to fs or s3 #82 (untergeek)
3570
3571 · New! Add/Remove indices to alias #82 via #86 (cschellenger)
3572
3573 · New! --exclude-pattern #80 (ekamil)
3574
3575 · New! (sort of) Restored --log-level support #73 (xavier-calland)
3576
3577 · New! show command-line options #82 via #68 (untergeek)
3578
3579 · New! Shard Allocation Routing #82 via #62 (nickethier)
3580
3581 Bug fix
3582
3583 · Fix --max_num_segments not being passed correctly #74 (untergeek)
3584
3585 · Change BUILD_NUMBER to CURATOR_BUILD_NUMBER in setup.py #60
3586 (mohabusama)
3587
3588 · Fix off-by-one error in time calculations #66 (untergeek)
3589
3590 · Fix testing with python3 #92 (untergeek)
3591
3592 Errata
3593
3594 · Removed optparse compatibility. Now requires argparse.
3595
3596 1.0.0 (25 Mar 2014)
3597 General
3598
3599 · compatible with elasticsearch-py 1.0 and Elasticsearch 1.0 (honza‐
3600 kral)
3601
3602 · Lots of tests! (honzakral)
3603
3604 · Streamline code for 1.0 ES versions (honzakral)
3605
3606 Bug fix
3607
3608 · Fix find_expired_indices() to not skip closed indices (honzakral)
3609
3610 0.6.2 (18 Feb 2014)
3611 General
3612
3613 · Documentation fixes #38 (dharrigan)
3614
3615 · Add support for HTTPS URI scheme and optparse compatibility for
3616 Python 2.6 (gelim)
3617
3618 · Add elasticsearch module version checking for future compatibility
3619 checks (untergeek)
3620
3621 0.6.1 (08 Feb 2014)
3622 General
3623
3624 · Added tarball versioning to setup.py (untergeek)
3625
3626 Bug fix
3627
3628 · Fix long_description by including README.md in MANIFEST.in
3629 (untergeek)
3630
3631 · Incorrect version number in curator.py (untergeek)
3632
3633 0.6.0 (08 Feb 2014)
3634 General
3635
3636 · Restructured repository to a be a proper python package. (arieb)
3637
3638 · Added setup.py file. (arieb)
3639
3640 · Removed the deprecated file logstash_index_cleaner.py (arieb)
3641
3642 · Updated README.md to fit the new package, most importantly the
3643 usage and installation. (arieb)
3644
3645 · Fixes and package push to PyPI (untergeek)
3646
3647 0.5.2 (26 Jan 2014)
3648 General
3649
3650 · Fix boolean logic determining hours or days for time selection
3651 (untergeek)
3652
3653 0.5.1 (20 Jan 2014)
3654 General
3655
3656 · Fix can_bloom to compare numbers (HonzaKral)
3657
3658 · Switched find_expired_indices() to use datetime and timedelta
3659
3660 · Do not try and catch unrecoverable exceptions. (HonzaKral)
3661
3662 · Future proofing the use of the elasticsearch client (i.e. work
3663 with version 1.0+ of Elasticsearch) (HonzaKral) Needs more test‐
3664 ing, but should work.
3665
3666 · Add tests for these scenarios (HonzaKral)
3667
3668 0.5.0 (17 Jan 2014)
3669 General
3670
3671 · Deprecated logstash_index_cleaner.py Use new curator.py instead
3672 (untergeek)
3673
3674 · new script change: curator.py (untergeek)
3675
3676 · new add index optimization (Lucene forceMerge) to reduce segments
3677 and therefore memory usage. (untergeek)
3678
3679 · update refactor of args and several functions to streamline opera‐
3680 tion and make it more readable (untergeek)
3681
3682 · update refactor further to clean up and allow immediate (and
3683 future) portability (HonzaKral)
3684
3685 0.4.0
3686 General
3687
3688 · First version logged in CHANGELOG
3689
3690 · new --disable-bloom-days feature requires 0.90.9+
3691
3692 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules-codec.html#bloom-postings
3693
3694 This can save a lot of heap space on cold indexes (i.e. not
3695 actively indexing documents)
3696
3698 Copyright (c) 2012–2016 Elasticsearch <http://www.elastic.co>
3699
3700 Licensed under the Apache License, Version 2.0 (the "License"); you may
3701 not use this file except in compliance with the License. You may
3702 obtain a copy of the License at
3703 http://www.apache.org/licenses/LICENSE-2.0
3704
3705 Unless required by applicable law or agreed to in writing, software
3706 distributed under the License is distributed on an "AS IS" BASIS, WITH‐
3707 OUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3708 See the License for the specific language governing permissions and
3709 limitations under the License.
3710
3712 · genindex
3713
3714 · search
3715
3717 Aaron Mildenstein
3718
3720 2011-2016, Elasticsearch
3721
3722
3723
3724
37254.2 Jul 13, 2018 CURATOR(1)