Merge "Minor agent version code cleanup"
This commit is contained in:
commit
2121bd466e
|
@ -3120,7 +3120,12 @@ class ConductorManager(base_manager.BaseConductorManager):
|
|||
LOG.debug('RPC heartbeat called for node %s', node_id)
|
||||
|
||||
if agent_version is None:
|
||||
agent_version = '3.0.0'
|
||||
LOG.error('Node %s transmitted no version information which '
|
||||
'indicates the agent is incompatible with the ironic '
|
||||
'services and must be upgraded.', node_id)
|
||||
raise exception.InvalidParameterValue(
|
||||
_('Agent did not transmit a version, and a version is '
|
||||
'required. Please update the agent being used.'))
|
||||
|
||||
# NOTE(dtantsur): we acquire a shared lock to begin with, drivers are
|
||||
# free to promote it to an exclusive one.
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
import contextlib
|
||||
import crypt
|
||||
import datetime
|
||||
from distutils.version import StrictVersion
|
||||
import functools
|
||||
import os
|
||||
import secrets
|
||||
|
@ -1173,17 +1172,6 @@ def is_agent_token_valid(node, token):
|
|||
return known_token == token
|
||||
|
||||
|
||||
def is_agent_token_supported(agent_version):
|
||||
# NOTE(TheJulia): This is hoped that 6.x supports
|
||||
# agent token capabilities and realistically needs to be updated
|
||||
# once that version of IPA is out there in some shape or form.
|
||||
# This allows us to gracefully allow older agent's that were
|
||||
# launched via pre-generated agent_tokens, to still work
|
||||
# and could likely be removed at some point down the road.
|
||||
version = str(agent_version).replace('.dev', 'b', 1)
|
||||
return StrictVersion(version) > StrictVersion('6.1.0')
|
||||
|
||||
|
||||
def is_agent_token_pregenerated(node):
|
||||
"""Determines if the token was generated for out of band configuration.
|
||||
|
||||
|
|
|
@ -7243,10 +7243,15 @@ class DoNodeAdoptionTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
|
|||
|
||||
mock_spawn.side_effect = self._fake_spawn
|
||||
|
||||
self.service.heartbeat(self.context, node.uuid, 'http://callback',
|
||||
agent_token='magic')
|
||||
mock_heartbeat.assert_called_with(mock.ANY, mock.ANY,
|
||||
'http://callback', '3.0.0', None)
|
||||
exc = self.assertRaises(
|
||||
messaging.rpc.ExpectedException,
|
||||
self.service.heartbeat,
|
||||
self.context, node.uuid, 'http://callback',
|
||||
agent_token='magic')
|
||||
expected_string = ('Agent did not transmit a version, and a version '
|
||||
'is required. Please update the agent being used.')
|
||||
self.assertEqual(exception.InvalidParameterValue, exc.exc_info[0])
|
||||
self.assertEqual(expected_string, str(exc.exc_info[1]))
|
||||
|
||||
@mock.patch('ironic.drivers.modules.fake.FakeDeploy.heartbeat',
|
||||
autospec=True)
|
||||
|
@ -7315,9 +7320,9 @@ class DoNodeAdoptionTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
|
|||
mock_spawn.side_effect = self._fake_spawn
|
||||
|
||||
self.service.heartbeat(self.context, node.uuid, 'http://callback',
|
||||
agent_token='a secret')
|
||||
'6.1.0', agent_token='a secret')
|
||||
mock_heartbeat.assert_called_with(mock.ANY, mock.ANY,
|
||||
'http://callback', '3.0.0', None)
|
||||
'http://callback', '6.1.0', None)
|
||||
|
||||
@mock.patch('ironic.drivers.modules.fake.FakeDeploy.heartbeat',
|
||||
autospec=True)
|
||||
|
@ -7339,9 +7344,9 @@ class DoNodeAdoptionTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
|
|||
mock_spawn.side_effect = self._fake_spawn
|
||||
|
||||
self.service.heartbeat(self.context, node.uuid, 'http://callback',
|
||||
agent_token='a secret')
|
||||
'6.1.0', agent_token='a secret')
|
||||
mock_heartbeat.assert_called_with(mock.ANY, mock.ANY,
|
||||
'http://callback', '3.0.0', None)
|
||||
'http://callback', '6.1.0', None)
|
||||
|
||||
@mock.patch('ironic.drivers.modules.fake.FakeDeploy.heartbeat',
|
||||
autospec=True)
|
||||
|
@ -7442,7 +7447,8 @@ class DoNodeAdoptionTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
|
|||
exc = self.assertRaises(messaging.rpc.ExpectedException,
|
||||
self.service.heartbeat, self.context,
|
||||
node.uuid, 'http://callback',
|
||||
agent_token='a secret')
|
||||
agent_token='a secret',
|
||||
agent_version='3.0.0')
|
||||
self.assertEqual(exception.InvalidParameterValue, exc.exc_info[0])
|
||||
self.assertIn('TLS is required', str(exc.exc_info[1]))
|
||||
self.assertFalse(mock_heartbeat.called)
|
||||
|
@ -7469,9 +7475,10 @@ class DoNodeAdoptionTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
|
|||
|
||||
mock_spawn.side_effect = self._fake_spawn
|
||||
self.service.heartbeat(self.context, node.uuid, 'http://callback',
|
||||
agent_token='a secret', agent_verify_ca='abcd')
|
||||
agent_version='6.1.0', agent_token='a secret',
|
||||
agent_verify_ca='abcd')
|
||||
mock_heartbeat.assert_called_with(
|
||||
mock.ANY, mock.ANY, 'http://callback', '3.0.0',
|
||||
mock.ANY, mock.ANY, 'http://callback', '6.1.0',
|
||||
'/path/to/crt')
|
||||
|
||||
|
||||
|
|
|
@ -2087,14 +2087,6 @@ class AgentTokenUtilsTestCase(tests_base.TestCase):
|
|||
conductor_utils.add_secret_token(self.node)
|
||||
self.assertTrue(conductor_utils.is_agent_token_present(self.node))
|
||||
|
||||
def test_is_agent_token_supported(self):
|
||||
self.assertTrue(
|
||||
conductor_utils.is_agent_token_supported('6.1.1.dev39'))
|
||||
self.assertTrue(
|
||||
conductor_utils.is_agent_token_supported('6.2.1'))
|
||||
self.assertFalse(
|
||||
conductor_utils.is_agent_token_supported('6.0.0'))
|
||||
|
||||
|
||||
class GetAttachedVifTestCase(db_base.DbTestCase):
|
||||
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
other:
|
||||
- |
|
||||
The ironic conductor internal logic has been updated to return an error if
|
||||
no agent version has been submitted during a heartbeat. This is because
|
||||
versions have been transmitted by the agents for quite some time and
|
||||
support for the default use of agent token forces all agents to be
|
||||
updated. As such redundant code been removed and tests updated accordingly.
|
Loading…
Reference in New Issue