Add upgrade check about old computes
Report a warning during upgrade checks if there are computes older than the previous major nova release in the system. So if code is upgraded to Wallaby and the upgrade check was run before the restart of the services with W code then the check warns for Ussuri computes in the system. Change-Id: I873b0c1e6e695ae88241bbf75ac9f80ecc6f5664
This commit is contained in:
parent
aa7c6f8769
commit
3b8257cd23
|
@ -143,6 +143,10 @@ Upgrade
|
|||
|
||||
* Checks for the policy files is not JSON-formatted.
|
||||
|
||||
**23.0.0 (Wallaby)**
|
||||
|
||||
* Checks for computes older than the previous major release
|
||||
|
||||
See Also
|
||||
========
|
||||
|
||||
|
|
|
@ -131,3 +131,7 @@ Verify operation of the Compute service.
|
|||
| Result: Success |
|
||||
| Details: None |
|
||||
+--------------------------------------------------------------------+
|
||||
| Check: Older than N-1 computes |
|
||||
| Result: Success |
|
||||
| Details: None |
|
||||
+--------------------------------------------------------------------+
|
||||
|
|
|
@ -427,6 +427,16 @@ class UpgradeCommands(upgradecheck.UpgradeCommands):
|
|||
status = upgradecheck.Result(upgradecheck.Code.FAILURE, msg)
|
||||
return status
|
||||
|
||||
def _check_old_computes(self):
|
||||
# warn if there are computes in the system older than the previous
|
||||
# major release
|
||||
try:
|
||||
utils.raise_if_old_compute()
|
||||
except exception.TooOldComputeService as e:
|
||||
return upgradecheck.Result(upgradecheck.Code.WARNING, str(e))
|
||||
|
||||
return upgradecheck.Result(upgradecheck.Code.SUCCESS)
|
||||
|
||||
# The format of the check functions is to return an upgradecheck.Result
|
||||
# object with the appropriate upgradecheck.Code and details set. If the
|
||||
# check hits warnings or failures then those should be stored in the
|
||||
|
@ -447,6 +457,8 @@ class UpgradeCommands(upgradecheck.UpgradeCommands):
|
|||
(_('Policy Scope-based Defaults'), _check_policy),
|
||||
# Added in Victoria
|
||||
(_('Policy File JSON to YAML Migration'), _check_policy_json),
|
||||
# Added in Wallaby
|
||||
(_('Older than N-1 computes'), _check_old_computes)
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -44,6 +44,7 @@ from nova import exception
|
|||
# NOTE(mriedem): We only use objects as a convenience to populate the database
|
||||
# in the tests, we don't use them in the actual CLI.
|
||||
from nova import objects
|
||||
from nova.objects import service
|
||||
from nova import policy
|
||||
from nova import test
|
||||
from nova.tests import fixtures as nova_fixtures
|
||||
|
@ -667,3 +668,32 @@ class TestUpgradeCheckPolicyJSON(test.NoDBTestCase):
|
|||
jsonutils.dump(self.data, fh)
|
||||
self.assertEqual(upgradecheck.Code.FAILURE,
|
||||
self.cmd._check_policy_json().code)
|
||||
|
||||
|
||||
class TestUpgradeCheckOldCompute(test.NoDBTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestUpgradeCheckOldCompute, self).setUp()
|
||||
self.cmd = status.UpgradeCommands()
|
||||
|
||||
def test_no_compute(self):
|
||||
self.assertEqual(
|
||||
upgradecheck.Code.SUCCESS, self.cmd._check_old_computes().code)
|
||||
|
||||
def test_only_new_compute(self):
|
||||
last_supported_version = service.SERVICE_VERSION_ALIASES[
|
||||
service.OLDEST_SUPPORTED_SERVICE_VERSION]
|
||||
with mock.patch(
|
||||
"nova.objects.service.get_minimum_version_all_cells",
|
||||
return_value=last_supported_version):
|
||||
self.assertEqual(
|
||||
upgradecheck.Code.SUCCESS, self.cmd._check_old_computes().code)
|
||||
|
||||
def test_old_compute(self):
|
||||
too_old = service.SERVICE_VERSION_ALIASES[
|
||||
service.OLDEST_SUPPORTED_SERVICE_VERSION] - 1
|
||||
with mock.patch(
|
||||
"nova.objects.service.get_minimum_version_all_cells",
|
||||
return_value=too_old):
|
||||
result = self.cmd._check_old_computes()
|
||||
self.assertEqual(upgradecheck.Code.WARNING, result.code)
|
||||
|
|
Loading…
Reference in New Issue