browbeat/ansible/install/filter_plugins/browbeat_install_filters.py

64 lines
2.1 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import re
def dict_remove(the_dict, item):
"""Remove an item from a dictionary."""
del the_dict[item]
return the_dict
def hosts_to_dictionary(arg):
"""Changes list format of hosts to dictionary format. The key of the dictionary is the index
of the host. The index is defined by the host's suffix, example: overcloud-controller-10 is 10.
If there is no suffix, I use an incremented value above 1000000."""
dictionary = {}
nonindex = 1000000
for item in arg:
if item[(len(item)-1)].isdigit():
dictionary[int(re.sub('.*[^0-9][^0-9]*', '', item))] = item
else:
nonindex += 1
dictionary[nonindex] = item
return dictionary
def ini_value(key_value):
"""Strips key= from key=value from ini configuration data"""
equals_idx = key_value.index('=') + 1
return key_value[equals_idx:]
def to_grafana_refid(number):
"""Convert a number to a string starting at character a and incrementing. This only accounts
for a to zz, anything greater than zz is probably too much to graph anyway."""
character1 = ''
idx = -1
while number > 25:
idx = idx + 1
number -= 26
else:
if idx != -1:
character1 = chr(idx + 65)
return character1 + chr(number + 65)
class FilterModule(object):
def filters(self):
return {
'dict_remove': dict_remove,
'ini_value': ini_value,
'hosts_to_dictionary': hosts_to_dictionary,
'to_grafana_refid': to_grafana_refid,
}