summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-04-26 15:51:48 +0000
committerGerrit Code Review <review@openstack.org>2021-04-26 15:51:48 +0000
commit6e91dbb2d590fc1706243922c0ed71f6c2fcdf73 (patch)
treed4b066a5dcbf3b7ad9ba5525ab59fdd18cc0c54f
parent758775c07bc66db3ee6602ecaec53173e89c5acb (diff)
parentbb5e4cbeb973c6341bf51eea2ebe5d38366167e8 (diff)
downloadoslo-config-6e91dbb2d590fc1706243922c0ed71f6c2fcdf73.tar.gz
Merge "Adding the missing HostDomain config option"8.6.0
-rw-r--r--oslo_config/cfg.py22
-rw-r--r--oslo_config/tests/test_generator.py27
-rw-r--r--oslo_config/types.py7
-rw-r--r--releasenotes/notes/add-missing-config-option-9ee1992eea750200.yaml5
4 files changed, 61 insertions, 0 deletions
diff --git a/oslo_config/cfg.py b/oslo_config/cfg.py
index 39a9878..35f0cfb 100644
--- a/oslo_config/cfg.py
+++ b/oslo_config/cfg.py
@@ -1175,6 +1175,28 @@ class HostAddressOpt(Opt):
**kwargs)
+class HostDomainOpt(Opt):
+
+ r"""Option for either an IP or a hostname.
+
+ Like HostAddress with the support of _ character.
+
+ Option with ``type`` :class:`oslo_config.types.HostDomain`
+
+ :param name: the option's name
+ :param version: one of either ``4``, ``6``, or ``None`` to specify
+ either version.
+ :param \*\*kwargs: arbitrary keyword arguments passed to :class:`Opt`
+
+ .. versionadded:: 8.6
+ """
+
+ def __init__(self, name, version=None, **kwargs):
+ super(HostDomainOpt, self).__init__(name,
+ type=types.HostDomain(version),
+ **kwargs)
+
+
class URIOpt(Opt):
r"""Opt with URI type
diff --git a/oslo_config/tests/test_generator.py b/oslo_config/tests/test_generator.py
index d75b4d8..6f95176 100644
--- a/oslo_config/tests/test_generator.py
+++ b/oslo_config/tests/test_generator.py
@@ -1872,5 +1872,32 @@ class HostAddressTestCase(base.BaseTestCase):
self.assertEqual(expected, result)
+class HostDomainTestCase(base.BaseTestCase):
+
+ opts = [cfg.HostDomainOpt('foo', help='foo option', default='0.0.0.0')]
+
+ def test_host_domain(self):
+
+ config = [("namespace", [("alpha", self.opts)])]
+ groups = generator._get_groups(config)
+
+ out = io.StringIO()
+ formatter = build_formatter(out)
+ generator._output_opts(formatter, 'alpha', groups.pop('alpha'))
+ result = out.getvalue()
+
+ expected = textwrap.dedent('''
+ [alpha]
+
+ #
+ # From namespace
+ #
+
+ # foo option (host domain value)
+ #foo = 0.0.0.0
+ ''').lstrip()
+ self.assertEqual(expected, result)
+
+
GeneratorTestCase.generate_scenarios()
MachineReadableGeneratorTestCase.generate_scenarios()
diff --git a/oslo_config/types.py b/oslo_config/types.py
index 72242cb..8ebc6e6 100644
--- a/oslo_config/types.py
+++ b/oslo_config/types.py
@@ -871,6 +871,13 @@ class HostDomain(HostAddress):
# DOMAIN_REGEX is HOSTNAME_REGEX with the _ character added
DOMAIN_REGEX = '(?!-)[A-Z0-9-_]{1,63}(?<!-)$'
+ def __init__(self, version=None, type_name='host domain value'):
+ """Check for valid version in case an IP address is provided
+
+ """
+
+ super(HostDomain, self).__init__(type_name=type_name)
+
def __call__(self, value):
"""Checks if is a valid IP/hostname.
diff --git a/releasenotes/notes/add-missing-config-option-9ee1992eea750200.yaml b/releasenotes/notes/add-missing-config-option-9ee1992eea750200.yaml
new file mode 100644
index 0000000..e6b1fc8
--- /dev/null
+++ b/releasenotes/notes/add-missing-config-option-9ee1992eea750200.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Adding the missing ``HostDomain`` config option. Previously this available
+ type couldn't been imported because no related config option was defined.