diff options
author | Zuul <zuul@review.opendev.org> | 2021-04-26 15:51:48 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2021-04-26 15:51:48 +0000 |
commit | 6e91dbb2d590fc1706243922c0ed71f6c2fcdf73 (patch) | |
tree | d4b066a5dcbf3b7ad9ba5525ab59fdd18cc0c54f | |
parent | 758775c07bc66db3ee6602ecaec53173e89c5acb (diff) | |
parent | bb5e4cbeb973c6341bf51eea2ebe5d38366167e8 (diff) | |
download | oslo-config-6e91dbb2d590fc1706243922c0ed71f6c2fcdf73.tar.gz |
Merge "Adding the missing HostDomain config option"8.6.0
-rw-r--r-- | oslo_config/cfg.py | 22 | ||||
-rw-r--r-- | oslo_config/tests/test_generator.py | 27 | ||||
-rw-r--r-- | oslo_config/types.py | 7 | ||||
-rw-r--r-- | releasenotes/notes/add-missing-config-option-9ee1992eea750200.yaml | 5 |
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. |