def setUp(self): super(TestNailgunReceiver, self).setUp() self.cluster = self.env.create( status=consts.CLUSTER_STATUSES.operational, nodes_kwargs=[{ 'roles': ['controller'], 'status': consts.NODE_STATUSES.ready }]) for i in range(2): meta = self.env.get_default_plugin_metadata( name='name{0}'.format(i), title='title{0}'.format(i), description='description{0}'.format(i)) self.plugin = Plugin.create(meta) self.cluster.plugins.append(self.plugin) ClusterPlugins.set_attributes(self.cluster.id, self.plugin.id, enabled=True) self.task = self.env.create_task(name=consts.TASK_NAMES.deployment, status=consts.TASK_STATUSES.ready, cluster_id=self.cluster.id)
def setUp(self): super(TestNailgunReceiver, self).setUp() self.env.create( status=consts.CLUSTER_STATUSES.operational, nodes_kwargs=[ {'roles': ['controller'], 'status': consts.NODE_STATUSES.ready}]) self.cluster = self.env.clusters[0] for i in range(2): meta = self.env.get_default_plugin_metadata( name='name{0}'.format(i), title='title{0}'.format(i), description='description{0}'.format(i)) self.plugin = Plugin.create(meta) self.cluster.plugins.append(self.plugin) ClusterPlugins.set_attributes(self.cluster.id, self.plugin.id, enabled=True) self.task = self.env.create_task( name=consts.TASK_NAMES.deployment, status=consts.TASK_STATUSES.ready, cluster_id=self.cluster.id)
def test_is_plugin_used(self): self._create_test_plugins() cluster = self._create_test_cluster() plugin = ClusterPlugins.get_connected_plugins(cluster).first() self.assertFalse(ClusterPlugins.is_plugin_used(plugin.id)) ClusterPlugins.set_attributes(cluster.id, plugin.id, enabled=True) self.assertTrue(ClusterPlugins.is_plugin_used(plugin.id))
def test_get_enabled(self): self._create_test_plugins() cluster = self._create_test_cluster() plugin = ClusterPlugins.get_connected_plugins(cluster).first() ClusterPlugins.set_attributes(cluster.id, plugin.id, enabled=True) enabled_plugin = ClusterPlugins.get_enabled(cluster.id).first() self.assertEqual(plugin.id, enabled_plugin.id)
def test_get_enabled(self): self._create_test_plugins() cluster = self._create_test_cluster() plugin_id = ClusterPlugins.get_connected_plugins(cluster.id)[0][0] ClusterPlugins.set_attributes(cluster.id, plugin_id, enabled=True) enabled_plugin = ClusterPlugins.get_enabled(cluster.id)[0].id self.assertEqual(enabled_plugin, plugin_id)
def test_get_enabled_plugins(self): plugin_a = self._create_plugin(**self._compat_meta) plugin_b = self._create_plugin(**self._compat_meta) ClusterPlugins.set_attributes( self.cluster.id, plugin_a.id, enabled=True) compat_plugins = ClusterPlugins.get_compatible_plugins(self.cluster) self.assertItemsEqual(compat_plugins, [plugin_a, plugin_b]) enabled_plugins = ClusterPlugins.get_enabled(self.cluster.id) self.assertItemsEqual(enabled_plugins, [plugin_a])
def test_set_plugin_attributes(self): meta = base.reflect_db_metadata() self._create_test_plugins() cluster = self._create_test_cluster() plugin = ClusterPlugins.get_connected_plugins(cluster).first() ClusterPlugins.set_attributes(cluster.id, plugin.id, enabled=True) columns = meta.tables['cluster_plugins'].c enabled = self.db.execute( sa.select([columns.enabled ]).where(columns.cluster_id == cluster.id).where( columns.plugin_id == plugin.id)).fetchone() self.assertTrue(enabled[0])
def test_set_plugin_attributes(self): meta = base.reflect_db_metadata() self._create_test_plugins() cluster = self._create_test_cluster() plugin = ClusterPlugins.get_connected_plugins(cluster).first() ClusterPlugins.set_attributes(cluster.id, plugin.id, enabled=True) columns = meta.tables['cluster_plugins'].c enabled = self.db.execute( sa.select([columns.enabled]) .where(columns.cluster_id == cluster.id) .where(columns.plugin_id == plugin.id) ).fetchone() self.assertTrue(enabled[0])
def test_get_connected_for_specific_plugins(self): plugin_ids = self._create_test_plugins() cluster = self._create_test_cluster() number_of_connected_plugins =\ ClusterPlugins.get_connected_plugins( cluster, plugin_ids[1:]).count() self.assertEqual(4, number_of_connected_plugins)
def test_get_connected_clusters(self): plugin_id = self._create_test_plugins()[0] for _ in range(2): self._create_test_cluster() number_of_connected_clusters =\ ClusterPlugins.get_connected_clusters(plugin_id).count() self.assertEqual(2, number_of_connected_clusters)
def test_get_connected_clusters(self): plugin_id = self._create_test_plugins()[0] for _ in range(2): self._create_test_cluster() connected_clusters =\ ClusterPlugins.get_connected_clusters(plugin_id).all() self.assertEqual(len(connected_clusters), 2)
def test_get_compatible_plugins_for_new_cluster(self): plugin_a = self._create_plugin(**self._compat_meta) plugin_b = self._create_plugin(**self._compat_meta) self._create_plugin(**self._uncompat_meta) cluster = self.env.create( cluster_kwargs={ 'release_id': self.cluster.release.id, 'mode': consts.CLUSTER_MODES.ha_compact, }) compat_plugins = ClusterPlugins.get_compatible_plugins(cluster) self.assertItemsEqual(compat_plugins, [plugin_a, plugin_b])
def test_enable_plugins_by_component(self): self.env.create_plugin( name='plugin_with_test_storage', package_version='4.0.0', fuel_version=['8.0'], releases=[{ 'repository_path': 'repositories/ubuntu', 'version': '2015.1-8.3', 'os': 'ubuntu', 'mode': ['ha'], 'deployment_scripts_path': 'deployment_scripts/' }], components_metadata=self.env.get_default_components( name='storage:test_storage')) plugin = self.env.create_plugin( version='1.0.0', name='plugin_with_test_storage', package_version='4.0.0', fuel_version=['8.0'], releases=[{ 'repository_path': 'repositories/ubuntu', 'version': '2015.1-8.3', 'os': 'ubuntu', 'mode': ['ha'], 'deployment_scripts_path': 'deployment_scripts/' }], components_metadata=self.env.get_default_components( name='storage:test_storage')) cluster = self.env.create( release_kwargs={ 'operating_system': consts.RELEASE_OS.ubuntu, 'version': '2015.1-8.3' }, cluster_kwargs={ 'mode': consts.CLUSTER_MODES.ha_compact, 'api': False, 'components': ['hypervisor:test_hypervisor', 'storage:test_storage'] }) enabled_plugins = ClusterPlugins.get_enabled(cluster.id) self.assertItemsEqual([plugin], enabled_plugins)
def test_enable_plugins_by_component(self): self.env.create_plugin( name='plugin_with_test_storage', package_version='4.0.0', fuel_version=['8.0'], releases=[{ 'repository_path': 'repositories/ubuntu', 'version': '2015.1-8.3', 'os': 'ubuntu', 'mode': ['ha'], 'deployment_scripts_path': 'deployment_scripts/'}], components_metadata=self.env.get_default_components( name='storage:test_storage')) plugin = self.env.create_plugin( version='1.0.0', name='plugin_with_test_storage', package_version='4.0.0', fuel_version=['8.0'], releases=[{ 'repository_path': 'repositories/ubuntu', 'version': '2015.1-8.3', 'os': 'ubuntu', 'mode': ['ha'], 'deployment_scripts_path': 'deployment_scripts/'}], components_metadata=self.env.get_default_components( name='storage:test_storage')) cluster = self.env.create( release_kwargs={ 'operating_system': consts.RELEASE_OS.ubuntu, 'version': '2015.1-8.3'}, cluster_kwargs={ 'mode': consts.CLUSTER_MODES.ha_compact, 'api': False, 'components': [ 'hypervisor:test_hypervisor', 'storage:test_storage']}) enabled_plugins = ClusterPlugins.get_enabled(cluster.id) self.assertItemsEqual([plugin], enabled_plugins)
def test_get_all_connected_plugins(self): self._create_test_plugins() cluster = self._create_test_cluster() number_of_connected_plugins =\ ClusterPlugins.get_connected_plugins(cluster).count() self.assertEqual(5, number_of_connected_plugins)
def test_get_connected_plugins_data(self): self._create_test_plugins() cluster = self._create_test_cluster() number_of_connected_plugins_data_items =\ ClusterPlugins.get_connected_plugins_data(cluster.id).count() self.assertEqual(5, number_of_connected_plugins_data_items)
def validate_delete(cls, data, instance): if ClusterPlugins.is_plugin_used(instance.id): raise errors.CannotDelete( "Can't delete plugin which is enabled " "for some environment." )
def validate_with_cluster(self, **kwargs): cluster = self.cluster_mock(**kwargs) return ClusterPlugins.is_compatible(cluster, self.plugin)
def test_get_compatible_plugins(self): plugin_a = self._create_plugin(**self._compat_meta) self._create_plugin(**self._uncompat_meta) compat_plugins = ClusterPlugins.get_compatible_plugins(self.cluster) self.assertItemsEqual(compat_plugins, [plugin_a])
def test_get_connected_plugins(self): self._create_test_plugins() cluster = self._create_test_cluster() connected_plugins =\ ClusterPlugins.get_connected_plugins(cluster.id).all() self.assertEqual(len(connected_plugins), 5)
def validate_delete(cls, data, instance): if ClusterPlugins.is_plugin_used(instance.id): raise errors.CannotDelete("Can't delete plugin which is enabled " "for some environment.")
def validate_with_cluster(self, **kwargs): cluster = self.cluster_mock(**kwargs) return ClusterPlugins.validate_compatibility(cluster, self.plugin)