Merge "Add upgrade check about old computes" into stable/victoria

This commit is contained in:
Zuul 2021-01-13 19:15:33 +00:00 committed by Gerrit Code Review
commit f3ee20fb02
4 changed files with 48 additions and 0 deletions

View File

@ -142,6 +142,8 @@ Upgrade
**22.0.0 (Victoria)**
* Checks for the policy files is not JSON-formatted.
* Checks for computes older than the previous major release. This check was
backported from 23.0.0 (Wallaby).
See Also
========

View File

@ -131,3 +131,7 @@ Verify operation of the Compute service.
| Result: Success |
| Details: None |
+--------------------------------------------------------------------+
| Check: Older than N-1 computes |
| Result: Success |
| Details: None |
+--------------------------------------------------------------------+

View File

@ -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),
# Backported from Wallaby
(_('Older than N-1 computes'), _check_old_computes)
)

View File

@ -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)