diff options
| author | Derek Higgins <derekh@redhat.com> | 2016-12-16 13:28:11 +0000 |
|---|---|---|
| committer | Derek Higgins <derekh@redhat.com> | 2017-01-19 15:24:11 +0000 |
| commit | b4e41e2dd2c6072fc2d5017ea1b9fad275e815e4 (patch) | |
| tree | 3091549de77c4d8a002d021d16ddcbb2254dd3ff /ironic_python_agent | |
| parent | 51ab461af85ab15fe321f84303a1151697b1e6eb (diff) | |
| download | ironic-python-agent-b4e41e2dd2c6072fc2d5017ea1b9fad275e815e4.tar.gz | |
Agent: Listen for connections on both IPv4 and IPv6 ports
Allow connections if deploying over a IPv6 network.
Change-Id: Ied2f6be4aa4d1a70524df1df3506e596f6926e5b
Closes-Bug: #1650539
Diffstat (limited to 'ironic_python_agent')
| -rw-r--r-- | ironic_python_agent/agent.py | 5 | ||||
| -rw-r--r-- | ironic_python_agent/api/config.py | 4 | ||||
| -rw-r--r-- | ironic_python_agent/config.py | 5 | ||||
| -rw-r--r-- | ironic_python_agent/netutils.py | 6 | ||||
| -rw-r--r-- | ironic_python_agent/tests/functional/base.py | 4 |
5 files changed, 21 insertions, 3 deletions
diff --git a/ironic_python_agent/agent.py b/ironic_python_agent/agent.py index 281c4803..e9b7ce24 100644 --- a/ironic_python_agent/agent.py +++ b/ironic_python_agent/agent.py @@ -23,6 +23,7 @@ import time from oslo_concurrency import processutils from oslo_config import cfg from oslo_log import log +from oslo_utils import netutils import pkg_resources from six.moves.urllib import parse as urlparse from stevedore import extension @@ -365,6 +366,10 @@ class IronicPythonAgent(base.ExecuteCommandMixin): LOG.error('Neither ipa-api-url nor inspection_callback_url' 'found, please check your pxe append parameters.') + if netutils.is_ipv6_enabled(): + # Listens to both IP versions, assuming IPV6_V6ONLY isn't enabled, + # (the default behaviour in linux) + simple_server.WSGIServer.address_family = socket.AF_INET6 wsgi = simple_server.make_server( self.listen_address.hostname, self.listen_address.port, diff --git a/ironic_python_agent/api/config.py b/ironic_python_agent/api/config.py index 0b5ee634..8dc06247 100644 --- a/ironic_python_agent/api/config.py +++ b/ironic_python_agent/api/config.py @@ -12,11 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. +from ironic_python_agent import netutils + # Server Specific Configurations # See https://pecan.readthedocs.org/en/latest/configuration.html#server-configuration # noqa server = { 'port': '9999', - 'host': '0.0.0.0' + 'host': netutils.get_wildcard_address() } # Pecan Application Configurations diff --git a/ironic_python_agent/config.py b/ironic_python_agent/config.py index 2fccb3a2..8ba97212 100644 --- a/ironic_python_agent/config.py +++ b/ironic_python_agent/config.py @@ -15,6 +15,7 @@ from oslo_config import cfg from ironic_python_agent import inspector +from ironic_python_agent import netutils from ironic_python_agent import utils CONF = cfg.CONF @@ -31,7 +32,9 @@ cli_opts = [ 'The value must start with either http:// or https://.'), cfg.StrOpt('listen_host', - default=APARAMS.get('ipa-listen-host', '0.0.0.0'), + default=APARAMS.get('ipa-listen-host', + netutils.get_wildcard_address()), + sample_default='::', deprecated_name='listen-host', help='The IP address to listen on. ' 'Can be supplied as "ipa-listen-host" kernel parameter.'), diff --git a/ironic_python_agent/netutils.py b/ironic_python_agent/netutils.py index 4d482b69..45b85a5d 100644 --- a/ironic_python_agent/netutils.py +++ b/ironic_python_agent/netutils.py @@ -220,3 +220,9 @@ def wrap_ipv6(ip): if netutils.is_valid_ipv6(ip): return "[%s]" % ip return ip + + +def get_wildcard_address(): + if netutils.is_ipv6_enabled(): + return "::" + return "0.0.0.0" diff --git a/ironic_python_agent/tests/functional/base.py b/ironic_python_agent/tests/functional/base.py index 066500a5..66fd3207 100644 --- a/ironic_python_agent/tests/functional/base.py +++ b/ironic_python_agent/tests/functional/base.py @@ -24,6 +24,7 @@ from ironic_python_agent import agent # NOTE(lucasagomes): This import is needed so we can register the # configuration options prior to IPA prior to starting the service from ironic_python_agent import config # noqa +from ironic_python_agent import netutils class FunctionalBase(test_base.BaseTestCase): @@ -40,7 +41,8 @@ class FunctionalBase(test_base.BaseTestCase): self.agent = agent.IronicPythonAgent( api_url='http://127.0.0.1:6835', advertise_address=agent.Host('localhost', 9999), - listen_address=agent.Host('0.0.0.0', int(self.test_port)), + listen_address=agent.Host(netutils.get_wildcard_address(), + int(self.test_port)), ip_lookup_attempts=3, ip_lookup_sleep=10, network_interface=None, |
