Add snake_case filter
This is intended to be used by tripleo_metrics_qdr and tripleo_collectd. The filter will convert from THTCamelCase to ansible_snake_case Change-Id: Iec74b239cbcebaeb6c5f5736e3696e013b697c76 Co-authored-by: Chris Sibbitt <csibbitt@redhat.com>
This commit is contained in:
parent
49f843384f
commit
db775f7c84
|
@ -51,7 +51,8 @@ class FilterModule(object):
|
|||
'get_filtered_role_resources': self.get_filtered_role_resources,
|
||||
'get_node_capabilities': self.get_node_capabilities,
|
||||
'get_node_profile': self.get_node_profile,
|
||||
'tht_abspath': self.tht_abspath
|
||||
'tht_abspath': self.tht_abspath,
|
||||
'snake_case': self.snake_case,
|
||||
}
|
||||
|
||||
def subsort(self, dict_to_sort, attribute, null_value=0):
|
||||
|
@ -519,6 +520,20 @@ class FilterModule(object):
|
|||
return_list.append({k: v})
|
||||
return return_list
|
||||
|
||||
def snake_case(self, camel_case_string):
|
||||
"""Convert from THTCamelCase to ansible_snake_case
|
||||
This filter will return a snake_case version of the input string.
|
||||
>>> filter_snake_case('CephStorage')
|
||||
'ceph_storage'
|
||||
>>> filter_snake_case('HTTPWorker')
|
||||
'http_worker'
|
||||
>>> filter_snake_case('MetricsQDR')
|
||||
'metrics_qdr'
|
||||
"""
|
||||
camel_case_string = re.sub(r'(.)([A-Z][a-z]+)', r'\1_\2',
|
||||
camel_case_string)
|
||||
return re.sub(r'([a-z0-9])([A-Z])', r'\1_\2', camel_case_string).lower()
|
||||
|
||||
@staticmethod
|
||||
def get_filtered_service_chain(resource_chains, role_chain_resources):
|
||||
"""Returned filtered service chains.
|
||||
|
|
|
@ -1144,6 +1144,19 @@ class TestHelperFilters(tests_base.TestCase):
|
|||
result = self.filters.dict_to_list(data=dict)
|
||||
self.assertEqual(result, expected_list)
|
||||
|
||||
def test_snake_case(self):
|
||||
expected_string = "ceph_storage"
|
||||
result = self.filters.snake_case("CephStorage")
|
||||
self.assertEqual(result, expected_string)
|
||||
|
||||
expected_string = "http_worker"
|
||||
result = self.filters.snake_case("HTTPWorker")
|
||||
self.assertEqual(result, expected_string)
|
||||
|
||||
expected_string = "metrics_qdr"
|
||||
result = self.filters.snake_case("MetricsQdr")
|
||||
self.assertEqual(result, expected_string)
|
||||
|
||||
def test_get_changed_async_task_names_empty(self):
|
||||
result = self.filters.get_changed_async_task_names(data=[])
|
||||
self.assertEqual(result, [])
|
||||
|
|
Loading…
Reference in New Issue