diff options
Diffstat (limited to 'ironic_python_agent')
| -rw-r--r-- | ironic_python_agent/agent.py | 13 | ||||
| -rw-r--r-- | ironic_python_agent/cmd/agent.py | 6 | ||||
| -rw-r--r-- | ironic_python_agent/tests/functional/base.py | 4 | ||||
| -rw-r--r-- | ironic_python_agent/tests/unit/test_agent.py | 43 |
4 files changed, 37 insertions, 29 deletions
diff --git a/ironic_python_agent/agent.py b/ironic_python_agent/agent.py index bbf1e71c..c9519f54 100644 --- a/ironic_python_agent/agent.py +++ b/ironic_python_agent/agent.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import collections import os import random import select @@ -48,6 +49,8 @@ NETWORK_WAIT_RETRY = 5 cfg.CONF.import_group('metrics', 'ironic_lib.metrics_utils') cfg.CONF.import_group('metrics_statsd', 'ironic_lib.metrics_statsd') +Host = collections.namedtuple('Host', ['hostname', 'port']) + def _time(): """Wraps time.time() for simpler testing.""" @@ -222,7 +225,7 @@ class IronicPythonAgent(base.ExecuteCommandMixin): :raises: LookupAgentIPError if an IP address could not be found """ - if self.advertise_address[0] is not None: + if self.advertise_address.hostname is not None: return found_ip = None @@ -247,8 +250,8 @@ class IronicPythonAgent(base.ExecuteCommandMixin): time.sleep(self.ip_lookup_sleep) if found_ip: - self.advertise_address = (found_ip, - self.advertise_address[1]) + self.advertise_address = Host(hostname=found_ip, + port=self.advertise_address.port) else: raise errors.LookupAgentIPError('Agent could not find a valid IP ' 'address.') @@ -354,8 +357,8 @@ class IronicPythonAgent(base.ExecuteCommandMixin): setattr(cfg.CONF.metrics_statsd, opt, val) wsgi = simple_server.make_server( - self.listen_address[0], - self.listen_address[1], + self.listen_address.hostname, + self.listen_address.port, self.api, server_class=simple_server.WSGIServer) diff --git a/ironic_python_agent/cmd/agent.py b/ironic_python_agent/cmd/agent.py index 0761460e..318c3882 100644 --- a/ironic_python_agent/cmd/agent.py +++ b/ironic_python_agent/cmd/agent.py @@ -35,8 +35,10 @@ def run(): CONF.set_override('debug', ipa_debug) log.setup(CONF, 'ironic-python-agent') agent.IronicPythonAgent(CONF.api_url, - (CONF.advertise_host, CONF.advertise_port), - (CONF.listen_host, CONF.listen_port), + agent.Host(hostname=CONF.advertise_host, + port=CONF.advertise_port), + agent.Host(hostname=CONF.listen_host, + port=CONF.listen_port), CONF.ip_lookup_attempts, CONF.ip_lookup_sleep, CONF.network_interface, diff --git a/ironic_python_agent/tests/functional/base.py b/ironic_python_agent/tests/functional/base.py index 5267eb62..ab57bb11 100644 --- a/ironic_python_agent/tests/functional/base.py +++ b/ironic_python_agent/tests/functional/base.py @@ -39,8 +39,8 @@ class FunctionalBase(test_base.BaseTestCase): self.agent = agent.IronicPythonAgent( api_url='http://127.0.0.1:6835', - advertise_address='localhost', - listen_address=('0.0.0.0', int(self.test_port)), + advertise_address=agent.Host('localhost', 9999), + listen_address=agent.Host('0.0.0.0', int(self.test_port)), ip_lookup_attempts=3, ip_lookup_sleep=10, network_interface=None, diff --git a/ironic_python_agent/tests/unit/test_agent.py b/ironic_python_agent/tests/unit/test_agent.py index 9ae01e86..b008d633 100644 --- a/ironic_python_agent/tests/unit/test_agent.py +++ b/ironic_python_agent/tests/unit/test_agent.py @@ -137,8 +137,8 @@ class TestBaseAgent(test_base.BaseTestCase): self.agent = agent.IronicPythonAgent('https://fake_api.example.' 'org:8081/', - ('203.0.113.1', 9990), - ('192.0.2.1', 9999), + agent.Host('203.0.113.1', 9990), + agent.Host('192.0.2.1', 9999), 3, 10, 'eth0', @@ -192,10 +192,10 @@ class TestBaseAgent(test_base.BaseTestCase): } self.agent.run() - listen_addr = ('192.0.2.1', 9999) + listen_addr = agent.Host('192.0.2.1', 9999) wsgi_server_cls.assert_called_once_with( - listen_addr[0], - listen_addr[1], + listen_addr.hostname, + listen_addr.port, self.agent.api, server_class=simple_server.WSGIServer) wsgi_server.serve_forever.assert_called_once_with() @@ -232,10 +232,10 @@ class TestBaseAgent(test_base.BaseTestCase): } self.agent.run() - listen_addr = ('192.0.2.1', 9999) + listen_addr = agent.Host('192.0.2.1', 9999) wsgi_server_cls.assert_called_once_with( - listen_addr[0], - listen_addr[1], + listen_addr.hostname, + listen_addr.port, self.agent.api, server_class=simple_server.WSGIServer) wsgi_server.serve_forever.assert_called_once_with() @@ -296,10 +296,10 @@ class TestBaseAgent(test_base.BaseTestCase): } self.agent.run() - listen_addr = ('192.0.2.1', 9999) + listen_addr = agent.Host('192.0.2.1', 9999) wsgi_server_cls.assert_called_once_with( - listen_addr[0], - listen_addr[1], + listen_addr.hostname, + listen_addr.port, self.agent.api, server_class=simple_server.WSGIServer) wsgi_server.serve_forever.assert_called_once_with() @@ -378,8 +378,10 @@ class TestAgentStandalone(test_base.BaseTestCase): super(TestAgentStandalone, self).setUp() self.agent = agent.IronicPythonAgent('https://fake_api.example.' 'org:8081/', - ('203.0.113.1', 9990), - ('192.0.2.1', 9999), + agent.Host(hostname='203.0.113.1', + port=9990), + agent.Host(hostname='192.0.2.1', + port=9999), 3, 10, 'eth0', @@ -406,10 +408,10 @@ class TestAgentStandalone(test_base.BaseTestCase): } self.agent.run() - listen_addr = ('192.0.2.1', 9999) + listen_addr = agent.Host('192.0.2.1', 9999) wsgi_server_cls.assert_called_once_with( - listen_addr[0], - listen_addr[1], + listen_addr.hostname, + listen_addr.port, self.agent.api, server_class=simple_server.WSGIServer) wsgi_server.serve_forever.assert_called_once_with() @@ -429,8 +431,8 @@ class TestAdvertiseAddress(test_base.BaseTestCase): self.agent = agent.IronicPythonAgent( api_url='https://fake_api.example.org:8081/', - advertise_address=(None, 9990), - listen_address=('0.0.0.0', 9999), + advertise_address=agent.Host(None, 9990), + listen_address=agent.Host('0.0.0.0', 9999), ip_lookup_attempts=5, ip_lookup_sleep=10, network_interface=None, @@ -440,7 +442,7 @@ class TestAdvertiseAddress(test_base.BaseTestCase): standalone=False) def test_advertise_address_provided(self, mock_exec, mock_gethostbyname): - self.agent.advertise_address = ('1.2.3.4', 9990) + self.agent.advertise_address = agent.Host('1.2.3.4', 9990) self.agent.set_agent_advertise_addr() @@ -457,7 +459,8 @@ class TestAdvertiseAddress(test_base.BaseTestCase): self.agent.set_agent_advertise_addr() - self.assertEqual(('1.2.3.4', 9990), self.agent.advertise_address) + self.assertEqual(agent.Host('1.2.3.4', 9990), + self.agent.advertise_address) mock_get_ipv4.assert_called_once_with(mock.ANY, 'em1') self.assertFalse(mock_exec.called) self.assertFalse(mock_gethostbyname.called) |
