Disallow to change operating system during upgrade

Changing of an operating system for clouds nodes is not supported and is
not tested at all. That's why this additional validation was added.

Change-Id: Ibf6db17f783879eff88e2366dfdb0a2871e2aa0a
This commit is contained in:
Ilya Kharin 2016-08-23 01:04:21 +03:00
parent d94df3e42b
commit 7cf3fe9b3a
3 changed files with 18 additions and 0 deletions

View File

@ -100,6 +100,10 @@ class NailgunReleaseAdapter(object):
uid, fail_if_not_found=fail_if_not_found)
return release
@property
def operating_system(self):
return self.release.operating_system
@property
def is_deployable(self):
return objects.Release.is_deployable(self.release)

View File

@ -58,6 +58,14 @@ class TestClusterUpgradeValidator(tests_base.BaseCloneClusterTest):
self.validator.validate_release_upgrade(self.dst_release,
self.src_release)
def test_validate_release_upgrade_to_different_os(self):
self.dst_release.operating_system = consts.RELEASE_OS.centos
msg = "^Changing of operating system is not possible during upgrade " \
"\(from {0} to {1}\).$".format("Ubuntu", "CentOS")
with self.assertRaisesRegexp(errors.InvalidData, msg):
self.validator.validate_release_upgrade(self.src_release,
self.dst_release)
def test_validate_cluster_name(self):
self.validator.validate_cluster_name("cluster-42")

View File

@ -62,6 +62,12 @@ class ClusterUpgradeValidator(base.BasicValidator):
"this release is equal or lower than the release of the "
"original cluster.".format(new_release.id),
log_message=True)
if orig_release.operating_system != new_release.operating_system:
raise errors.InvalidData(
"Changing of operating system is not possible during upgrade "
"(from {0} to {1}).".format(orig_release.operating_system,
new_release.operating_system),
log_message=True)
@classmethod
def validate_cluster_name(cls, cluster_name):