Merge "Plugin developer can specify major version in release dependencies"
This commit is contained in:
commit
43aec17cad
@ -110,12 +110,25 @@ class ClusterAttributesPluginBase(object):
|
||||
# plugin writer should be able to specify ha in release['mode']
|
||||
# and know nothing about ha_compact
|
||||
mode_compat = any(mode in cluster.mode for mode in release['mode'])
|
||||
release_version_compat = (
|
||||
cluster.release.version == release['version'])
|
||||
release_version_compat = self._is_release_version_compatible(
|
||||
cluster.release.version, release['version'])
|
||||
if all((os_compat, mode_compat, release_version_compat)):
|
||||
return True
|
||||
return False
|
||||
|
||||
def _is_release_version_compatible(self, rel_version, plugin_rel_version):
|
||||
"""Checks if release version is compatible with
|
||||
plugin version.
|
||||
|
||||
:param str rel_version: release version
|
||||
:param str plugin_rel_version: plugin release version
|
||||
:returns: True if compatible, Fals if not
|
||||
"""
|
||||
rel_os, rel_fuel = rel_version.split('-')
|
||||
plugin_os, plugin_rel = plugin_rel_version.split('-')
|
||||
|
||||
return rel_os.startswith(plugin_os) and rel_fuel.startswith(plugin_rel)
|
||||
|
||||
def update_metadata(self, attributes):
|
||||
"""Overwrights only default values in metadata.
|
||||
Plugin should be able to provide UI "native" conditions
|
||||
|
@ -169,50 +169,60 @@ class TestClusterCompatiblityValidation(base.BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestClusterCompatiblityValidation, self).setUp()
|
||||
self.plugin = Plugin.create(self.env.get_default_plugin_metadata())
|
||||
self.plugin = Plugin.create(self.env.get_default_plugin_metadata(
|
||||
releases=[{
|
||||
'version': '2014.2-6.0',
|
||||
'os': 'ubuntu',
|
||||
'mode': ['ha']}]))
|
||||
self.attr_plugin = attr_plugin.ClusterAttributesPluginV1(self.plugin)
|
||||
|
||||
def get_cluster(self, os, mode, version):
|
||||
def cluster_mock(self, os, mode, version):
|
||||
release = mock.Mock(operating_system=os, version=version)
|
||||
cluster = mock.Mock(mode=mode, release=release)
|
||||
return cluster
|
||||
|
||||
def validate_with_cluster(self, **kwargs):
|
||||
cluster = self.cluster_mock(**kwargs)
|
||||
return self.attr_plugin.validate_cluster_compatibility(cluster)
|
||||
|
||||
def test_validation_ubuntu_ha(self):
|
||||
cluster = self.get_cluster(
|
||||
self.assertTrue(self.validate_with_cluster(
|
||||
os='Ubuntu',
|
||||
mode='ha_compact',
|
||||
version='2014.2-6.0')
|
||||
validated = self.attr_plugin.validate_cluster_compatibility(cluster)
|
||||
self.assertTrue(validated)
|
||||
|
||||
def test_validation_centos_multinode(self):
|
||||
cluster = self.get_cluster(
|
||||
os='Centos',
|
||||
mode='multinode',
|
||||
version='2014.2-6.0')
|
||||
validated = self.attr_plugin.validate_cluster_compatibility(cluster)
|
||||
self.assertTrue(validated)
|
||||
|
||||
def test_not_existent_os(self):
|
||||
cluster = self.get_cluster(
|
||||
os='Fedora',
|
||||
mode='multinode',
|
||||
version='2014.2-6.0')
|
||||
validated = self.attr_plugin.validate_cluster_compatibility(cluster)
|
||||
self.assertFalse(validated)
|
||||
version='2014.2-6.0'))
|
||||
|
||||
def test_plugin_provided_ha_compact(self):
|
||||
cluster = self.get_cluster(
|
||||
self.assertTrue(self.validate_with_cluster(
|
||||
os='Ubuntu',
|
||||
mode='ha_compact',
|
||||
version='2014.2-6.0')
|
||||
validated = self.attr_plugin.validate_cluster_compatibility(cluster)
|
||||
self.assertTrue(validated)
|
||||
version='2014.2-6.0'))
|
||||
|
||||
def test_version_mismatch(self):
|
||||
cluster = self.get_cluster(
|
||||
def test_not_existent_os(self):
|
||||
self.assertFalse(self.validate_with_cluster(
|
||||
os='Centos',
|
||||
mode='multinode',
|
||||
version='2014.2-6.0'))
|
||||
|
||||
def test_version_fuel_mismatch(self):
|
||||
self.assertFalse(self.validate_with_cluster(
|
||||
os='Ubuntu',
|
||||
mode='ha_compact',
|
||||
version='2014.2.1-6.0')
|
||||
validated = self.attr_plugin.validate_cluster_compatibility(cluster)
|
||||
self.assertFalse(validated)
|
||||
version='2014.2-6.1'))
|
||||
|
||||
def test_version_os_mismatch(self):
|
||||
self.assertFalse(self.validate_with_cluster(
|
||||
os='Ubuntu',
|
||||
mode='ha_compact',
|
||||
version='2014.3-6.1'))
|
||||
|
||||
def test_validation_centos_multinode(self):
|
||||
self.assertFalse(self.validate_with_cluster(
|
||||
os='Ubuntu',
|
||||
mode='multinode',
|
||||
version='2014.2-6.0'))
|
||||
|
||||
def test_validation_centos_different_minor_version(self):
|
||||
self.assertTrue(self.validate_with_cluster(
|
||||
os='Ubuntu',
|
||||
mode='ha_compact',
|
||||
version='2014.2.99-6.0.99'))
|
||||
|
Loading…
Reference in New Issue
Block a user