in curator/helpers/getters.py [0:0]
def get_tier_preference(client, target_tier='data_frozen'):
"""Do the tier preference thing in reverse order from coldest to hottest
Based on the value of ``target_tier``, build out the list to use.
:param client: A client connection object
:param target_tier: The target data tier, e.g. data_warm.
:type client: :py:class:`~.elasticsearch.Elasticsearch`
:type target_tier: str
:returns: A suitable tier preference string in csv format
:rtype: str
"""
tiermap = {
'data_content': 0,
'data_hot': 1,
'data_warm': 2,
'data_cold': 3,
'data_frozen': 4,
}
tiers = get_data_tiers(client)
test_list = []
for tier in ['data_hot', 'data_warm', 'data_cold', 'data_frozen']:
if tier in tiers and tiermap[tier] <= tiermap[target_tier]:
test_list.insert(0, tier)
if target_tier == 'data_frozen':
# We're migrating to frozen here. If a frozen tier exists, frozen searchable
# snapshot mounts should only ever go to the frozen tier.
if 'data_frozen' in tiers and tiers['data_frozen']:
return 'data_frozen'
# If there are no nodes with the 'data_frozen' role...
preflist = []
for key in test_list:
# This ordering ensures that colder tiers are prioritized
if key in tiers and tiers[key]:
preflist.append(key)
# If all of these are false, then we have no data tiers and must use 'data_content'
if not preflist:
return 'data_content'
# This will join from coldest to hottest as csv string,
# e.g. 'data_cold,data_warm,data_hot'
return ','.join(preflist)