import sys
import yaml
+import six
+
LOGGER = logging.getLogger(__name__)
def get_openstack_version(cloud):
""" Detect OpenStack version via Nova API microversion
- It follows MicroversionHistory_.
+ It follows `MicroversionHistory
+ <https://docs.openstack.org/nova/latest/reference/api-microversion-history.html>`_.
Returns:
- OpenStack release
- Unknown on operation error
-
- .. _MicroversionHistory:
- https://docs.openstack.org/nova/latest/reference/api-microversion-history.html
"""
version = get_nova_version(cloud)
try:
assert version
- if version > (2, 60):
- osversion = "Rocky or newer"
+ if version > (2, 65):
+ osversion = "Master"
+ elif version > (2, 60):
+ osversion = "Rocky"
elif version > (2, 53):
osversion = "Queens"
elif version > (2, 42):
except AssertionError:
LOGGER.exception("Cannot detect OpenStack version")
return "Unknown"
+
+
+def convert_dict_to_ini(value):
+ "Convert dict to oslo.conf input"
+ assert isinstance(value, dict)
+ return ",".join("{}:{}".format(
+ key, val) for (key, val) in six.iteritems(value))
+
+
+def convert_list_to_ini(value):
+ "Convert list to oslo.conf input"
+ assert isinstance(value, list)
+ return ",".join("{}".format(val) for val in value)
+
+
+def convert_ini_to_dict(value):
+ "Convert oslo.conf input to dict"
+ assert isinstance(value, str)
+ try:
+ return {k: v for k, v in (x.split(':') for x in value.split(','))}
+ except ValueError:
+ return {}
+
+
+def convert_ini_to_list(value):
+ "Convert list to oslo.conf input"
+ assert isinstance(value, str)
+ if not value:
+ return []
+ return [x for x in value.split(',')]