diff --git a/stacklight_tests/base_test.py b/stacklight_tests/base_test.py index 321afef..39c74d3 100644 --- a/stacklight_tests/base_test.py +++ b/stacklight_tests/base_test.py @@ -63,21 +63,6 @@ class PluginApi(object): 'slave-09': self.settings.role_name, } - def create_cluster(self, name=None, settings=None): - """Create a cluster. - - :param name: name of the cluster (default: class's name). - :type name: str - :param settings: optional dict containing the cluster's configuration. - :type settings: dict - :returns: the cluster's id - :rtype: str - """ - return self.env.fuel_web.create_cluster( - name=self.__class__.__name__, - settings=settings, - mode='ha_compact') - @abc.abstractmethod def get_plugin_settings(self): """Return a dict with the default plugin's settings. diff --git a/stacklight_tests/elasticsearch_kibana/api.py b/stacklight_tests/elasticsearch_kibana/api.py index bb55280..0d7c020 100644 --- a/stacklight_tests/elasticsearch_kibana/api.py +++ b/stacklight_tests/elasticsearch_kibana/api.py @@ -26,9 +26,11 @@ class ElasticsearchPluginApi(base_test.PluginApi): def prepare_plugin(self): self.helpers.prepare_plugin(self.settings.plugin_path) - def activate_plugin(self): + def activate_plugin(self, options=None): + if options is None: + options = self.settings.default_options self.helpers.activate_plugin( - self.settings.name, self.settings.version, self.settings.options) + self.settings.name, self.settings.version, options) def get_plugin_vip(self): return self.helpers.get_plugin_vip(self.settings.vip_name) @@ -40,12 +42,12 @@ class ElasticsearchPluginApi(base_test.PluginApi): return "http://{}:9200/".format(self.get_plugin_vip()) def check_plugin_online(self): - logger.debug("Check that Elasticsearch is ready") + logger.info("Check that Elasticsearch is ready") msg = "Elasticsearch responded with {0}, expected {1}" self.checkers.check_http_get_response( self.get_elasticsearch_url(), msg=msg) - logger.debug("Check that Kibana is running") + logger.info("Check that Kibana is running") msg = "Kibana responded with {0}, expected {1}" self.checkers.check_http_get_response(self.get_kibana_url(), msg=msg) diff --git a/stacklight_tests/elasticsearch_kibana/plugin_settings.py b/stacklight_tests/elasticsearch_kibana/plugin_settings.py index 6982aaa..bee9662 100644 --- a/stacklight_tests/elasticsearch_kibana/plugin_settings.py +++ b/stacklight_tests/elasticsearch_kibana/plugin_settings.py @@ -22,4 +22,5 @@ vip_name = 'es_vip_mgmt' plugin_path = settings.ELASTICSEARCH_KIBANA_PLUGIN_PATH version = helpers.get_plugin_version(plugin_path) -options = {} +default_options = {} +toolchain_options = {} diff --git a/stacklight_tests/elasticsearch_kibana/test_smoke_bvt.py b/stacklight_tests/elasticsearch_kibana/test_smoke_bvt.py index aa736c8..4cffd57 100644 --- a/stacklight_tests/elasticsearch_kibana/test_smoke_bvt.py +++ b/stacklight_tests/elasticsearch_kibana/test_smoke_bvt.py @@ -41,7 +41,7 @@ class TestElasticsearchPlugin(api.ElasticsearchPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() @@ -71,7 +71,7 @@ class TestElasticsearchPlugin(api.ElasticsearchPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() @@ -109,7 +109,7 @@ class TestElasticsearchPlugin(api.ElasticsearchPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() diff --git a/stacklight_tests/helpers/helpers.py b/stacklight_tests/helpers/helpers.py index 6c7e859..968ffb3 100644 --- a/stacklight_tests/helpers/helpers.py +++ b/stacklight_tests/helpers/helpers.py @@ -92,6 +92,23 @@ class PluginHelper(object): self.fuel_web.client.list_cluster_nodes(self.cluster_id) if node["status"] == "ready"] + def create_cluster(self, name=None, settings=None): + """Create a cluster. + + :param name: name of the cluster. + :type name: str + :param settings: optional dict containing the cluster's configuration. + :type settings: dict + :returns: the cluster's id + :rtype: str + """ + if not name: + name = self.__class__.__name__ + return self.env.fuel_web.create_cluster( + name=name, + settings=settings, + mode='ha_compact') + def deploy_cluster(self, nodes_roles): """Method to deploy cluster with provided node roles.""" self.fuel_web.update_nodes(self.cluster_id, nodes_roles) diff --git a/stacklight_tests/influxdb_grafana/api.py b/stacklight_tests/influxdb_grafana/api.py index b5c00a8..3f1100b 100644 --- a/stacklight_tests/influxdb_grafana/api.py +++ b/stacklight_tests/influxdb_grafana/api.py @@ -28,9 +28,11 @@ class InfluxdbPluginApi(base_test.PluginApi): def prepare_plugin(self): self.helpers.prepare_plugin(self.settings.plugin_path) - def activate_plugin(self): + def activate_plugin(self, options=None): + if options is None: + options = self.settings.default_options self.helpers.activate_plugin( - self.settings.name, self.settings.version, self.settings.options) + self.settings.name, self.settings.version, options) def get_plugin_vip(self): return self.helpers.get_plugin_vip(self.settings.vip_name) @@ -53,37 +55,37 @@ class InfluxdbPluginApi(base_test.PluginApi): params={"db": db, "u": user, "p": password, "q": query}) def check_plugin_online(self): - logger.debug("Check that the InfluxDB server replies to ping requests") + logger.info("Check that the InfluxDB server replies to ping requests") self.checkers.check_http_get_response( url=self.get_influxdb_url('ping'), expected_code=204) - logger.debug("Check that the InfluxDB API requires authentication") + logger.info("Check that the InfluxDB API requires authentication") self.do_influxdb_query("show measurements", user=plugin_settings.influxdb_user, password='rogue', expected_code=401) - logger.debug("Check that the InfluxDB user is authorized") + logger.info("Check that the InfluxDB user is authorized") self.do_influxdb_query("show measurements") - logger.debug("Check that the InfluxDB user doesn't have admin rights") + logger.info("Check that the InfluxDB user doesn't have admin rights") self.do_influxdb_query("show servers", expected_code=401) - logger.debug("Check that the InfluxDB root user has admin rights") + logger.info("Check that the InfluxDB root user has admin rights") self.do_influxdb_query("show servers", user=plugin_settings.influxdb_rootuser, password=plugin_settings.influxdb_rootpass) - logger.debug("Check that the Grafana UI server is running") + logger.info("Check that the Grafana UI server is running") self.checkers.check_http_get_response( self.get_grafana_url('login')) - logger.debug("Check that the Grafana user is authorized") + logger.info("Check that the Grafana user is authorized") self.checkers.check_http_get_response( self.get_grafana_url('api/org'), auth=(plugin_settings.grafana_user, plugin_settings.grafana_pass)) - logger.debug("Check that the Grafana API requires authentication") + logger.info("Check that the Grafana API requires authentication") self.checkers.check_http_get_response( self.get_grafana_url('api/org'), auth=(plugin_settings.grafana_user, 'rogue'), expected_code=401) diff --git a/stacklight_tests/influxdb_grafana/plugin_settings.py b/stacklight_tests/influxdb_grafana/plugin_settings.py index e5c3b09..72661c6 100644 --- a/stacklight_tests/influxdb_grafana/plugin_settings.py +++ b/stacklight_tests/influxdb_grafana/plugin_settings.py @@ -36,7 +36,7 @@ mysql_dbname = 'grafanalma' mysql_user = 'grafanalma' mysql_pass = 'mysqlpass' -options = { +default_options = { 'influxdb_rootpass/value': influxdb_rootpass, 'influxdb_username/value': influxdb_user, 'influxdb_userpass/value': influxdb_pass, @@ -47,3 +47,5 @@ options = { 'mysql_username/value': mysql_user, 'mysql_password/value': mysql_pass, } + +toolchain_options = default_options diff --git a/stacklight_tests/influxdb_grafana/test_smoke_bvt.py b/stacklight_tests/influxdb_grafana/test_smoke_bvt.py index 510b6b1..58ce0d8 100644 --- a/stacklight_tests/influxdb_grafana/test_smoke_bvt.py +++ b/stacklight_tests/influxdb_grafana/test_smoke_bvt.py @@ -41,7 +41,7 @@ class TestInfluxdbPlugin(api.InfluxdbPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() @@ -71,7 +71,7 @@ class TestInfluxdbPlugin(api.InfluxdbPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() @@ -109,7 +109,7 @@ class TestInfluxdbPlugin(api.InfluxdbPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() diff --git a/stacklight_tests/lma_collector/api.py b/stacklight_tests/lma_collector/api.py index 43c4234..58a8f65 100644 --- a/stacklight_tests/lma_collector/api.py +++ b/stacklight_tests/lma_collector/api.py @@ -24,9 +24,11 @@ class LMACollectorPluginApi(base_test.PluginApi): def prepare_plugin(self): self.helpers.prepare_plugin(self.settings.plugin_path) - def activate_plugin(self): + def activate_plugin(self, options=None): + if options is None: + options = self.settings.default_options self.helpers.activate_plugin( - self.settings.name, self.settings.version, self.settings.options) + self.settings.name, self.settings.version, options) def get_plugin_vip(self): pass diff --git a/stacklight_tests/lma_collector/plugin_settings.py b/stacklight_tests/lma_collector/plugin_settings.py index 76e401c..32bf526 100644 --- a/stacklight_tests/lma_collector/plugin_settings.py +++ b/stacklight_tests/lma_collector/plugin_settings.py @@ -22,7 +22,7 @@ role_name = [] # NOTE(rpromyshlennikov): there is no role name plugin_path = settings.LMA_COLLECTOR_PLUGIN_PATH version = helpers.get_plugin_version(plugin_path) -options = { +default_options = { 'environment_label/value': 'deploy_lma_toolchain', 'elasticsearch_mode/value': 'remote', 'influxdb_mode/value': 'remote', @@ -30,3 +30,10 @@ options = { 'elasticsearch_address/value': '127.0.0.1', 'influxdb_address/value': '127.0.0.1' } + +toolchain_options = { + 'environment_label/value': 'deploy_lma_toolchain', + 'elasticsearch_mode/value': 'local', + 'influxdb_mode/value': 'local', + 'alerting_mode/value': 'local' +} diff --git a/stacklight_tests/lma_collector/test_smoke_bvt.py b/stacklight_tests/lma_collector/test_smoke_bvt.py index 9919c0d..44df78c 100644 --- a/stacklight_tests/lma_collector/test_smoke_bvt.py +++ b/stacklight_tests/lma_collector/test_smoke_bvt.py @@ -40,7 +40,7 @@ class TestLMACollectorPlugin(api.LMACollectorPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() @@ -70,7 +70,7 @@ class TestLMACollectorPlugin(api.LMACollectorPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() diff --git a/stacklight_tests/lma_infrastructure_alerting/api.py b/stacklight_tests/lma_infrastructure_alerting/api.py index f2be1fc..00ff04c 100644 --- a/stacklight_tests/lma_infrastructure_alerting/api.py +++ b/stacklight_tests/lma_infrastructure_alerting/api.py @@ -31,9 +31,11 @@ class InfraAlertingPluginApi(base_test.PluginApi): def prepare_plugin(self): self.helpers.prepare_plugin(self.settings.plugin_path) - def activate_plugin(self): + def activate_plugin(self, options=None): + if options is None: + options = self.settings.default_options self.helpers.activate_plugin( - self.settings.name, self.settings.version, self.settings.options) + self.settings.name, self.settings.version, options) def get_plugin_vip(self): return self.helpers.get_plugin_vip(self.settings.vip_name) diff --git a/stacklight_tests/lma_infrastructure_alerting/plugin_settings.py b/stacklight_tests/lma_infrastructure_alerting/plugin_settings.py index 074ebed..42f36f4 100644 --- a/stacklight_tests/lma_infrastructure_alerting/plugin_settings.py +++ b/stacklight_tests/lma_infrastructure_alerting/plugin_settings.py @@ -27,9 +27,11 @@ send_to = 'root@localhost' send_from = 'nagios@localhost' smtp_host = '127.0.0.1' -options = { +default_options = { 'nagios_password/value': nagios_password, 'send_to/value': send_to, 'send_from/value': send_from, 'smtp_host/value': smtp_host, } + +toolchain_options = default_options diff --git a/stacklight_tests/lma_infrastructure_alerting/test_smoke_bvt.py b/stacklight_tests/lma_infrastructure_alerting/test_smoke_bvt.py index 58a3be2..3c649dd 100644 --- a/stacklight_tests/lma_infrastructure_alerting/test_smoke_bvt.py +++ b/stacklight_tests/lma_infrastructure_alerting/test_smoke_bvt.py @@ -41,7 +41,7 @@ class TestLMAInfraAlertingPlugin(api.InfraAlertingPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() @@ -73,7 +73,7 @@ class TestLMAInfraAlertingPlugin(api.InfraAlertingPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() @@ -121,7 +121,7 @@ class TestLMAInfraAlertingPlugin(api.InfraAlertingPluginApi): self.prepare_plugin() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() diff --git a/stacklight_tests/lma_infrastructure_alerting/test_system.py b/stacklight_tests/lma_infrastructure_alerting/test_system.py index 5086696..7823a76 100644 --- a/stacklight_tests/lma_infrastructure_alerting/test_system.py +++ b/stacklight_tests/lma_infrastructure_alerting/test_system.py @@ -193,7 +193,7 @@ class TestLMAInfraAlertingPluginSystem(api.InfraAlertingPluginApi): self.helpers.fuel_createmirror() - self.create_cluster() + self.helpers.create_cluster(name=self.__class__.__name__) self.activate_plugin() diff --git a/stacklight_tests/run_tests.py b/stacklight_tests/run_tests.py index c28d0df..a7f9ed5 100644 --- a/stacklight_tests/run_tests.py +++ b/stacklight_tests/run_tests.py @@ -47,11 +47,11 @@ def import_tests(): from stacklight_tests.influxdb_grafana import test_smoke_bvt # noqa from stacklight_tests.influxdb_grafana import test_system # noqa from stacklight_tests.lma_collector import test_smoke_bvt # noqa - from stacklight_tests.lma_infrastructure_alerting import ( # noqa test_smoke_bvt) from stacklight_tests.lma_infrastructure_alerting import ( # noqa test_system) + from stacklight_tests.toolchain import test_smoke_bvt # noqa def run_tests(): diff --git a/stacklight_tests/toolchain/api.py b/stacklight_tests/toolchain/api.py new file mode 100644 index 0000000..b73d62e --- /dev/null +++ b/stacklight_tests/toolchain/api.py @@ -0,0 +1,62 @@ +# Copyright 2016 Mirantis, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +from fuelweb_test import logger +from fuelweb_test.tests import base_test_case + +from stacklight_tests.elasticsearch_kibana import api as elasticsearch_api +from stacklight_tests.helpers import checkers +from stacklight_tests.helpers import helpers +from stacklight_tests.helpers import remote_ops +from stacklight_tests.helpers import ui_tester +from stacklight_tests.influxdb_grafana import api as influx_api +from stacklight_tests.lma_collector import api as collector_api +from stacklight_tests.lma_infrastructure_alerting import ( + api as infrastructure_alerting_api) +from stacklight_tests.toolchain import toolchain_settings + + +class ToolchainApi(object): + def __init__(self): + self.test = base_test_case.TestBasic() + self.env = self.test.env + self.settings = toolchain_settings + self.helpers = helpers.PluginHelper(self.env) + self.checkers = checkers + self.remote_ops = remote_ops + self.ui_tester = ui_tester + self.plugins = [ + elasticsearch_api.ElasticsearchPluginApi(), + influx_api.InfluxdbPluginApi(), + collector_api.LMACollectorPluginApi(), + infrastructure_alerting_api.InfraAlertingPluginApi()] + + def __getattr__(self, item): + return getattr(self.test, item) + + def prepare_plugins(self): + for plugin in self.plugins: + plugin.prepare_plugin() + + def activate_plugins(self): + msg = "Activate {} plugin" + for plugin in self.plugins: + logger.info(msg.format(plugin.get_plugin_settings().name)) + plugin.activate_plugin( + options=plugin.get_plugin_settings().toolchain_options) + + def check_plugins_online(self): + msg = "Check {} plugin" + for plugin in self.plugins: + logger.info(msg.format(plugin.get_plugin_settings().name)) + plugin.check_plugin_online() diff --git a/stacklight_tests/toolchain/base_test.py b/stacklight_tests/toolchain/base_test.py deleted file mode 100644 index 0c424cd..0000000 --- a/stacklight_tests/toolchain/base_test.py +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 2016 Mirantis, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from stacklight_tests import base_test -from stacklight_tests.influxdb_grafana import api as influx_grafana_api -from stacklight_tests.lma_collector import api as lma_collector_api - - -class ToolchainApi(base_test.PluginApi): - def __init__(self): - super(ToolchainApi, self).__init__() - self.plugins = [influx_grafana_api.InfluxdbPluginApi(), - lma_collector_api.LMACollectorPluginApi()] - - def get_plugin_settings(self): - pass - - def prepare_plugin(self): - for plugin in self.plugins: - plugin.prepare_plugin() - - def activate_plugin(self): - for plugin in self.plugins: - plugin.activate_plugin() - - def get_plugin_vip(self): - pass - - def check_plugin_online(self): - for plugin in self.plugins: - plugin.check_plugin_online() diff --git a/stacklight_tests/toolchain/plugin_settings.py b/stacklight_tests/toolchain/plugin_settings.py deleted file mode 100644 index 1583210..0000000 --- a/stacklight_tests/toolchain/plugin_settings.py +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2016 Mirantis, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from stacklight_tests.influxdb_grafana import ( - plugin_settings as influxdb_grafana_settings) -from stacklight_tests.lma_collector import ( - plugin_settings as lma_collector_settings) - -name = 'toolchain' -version = '0.9.0' - -role_name = list(set( - influxdb_grafana_settings.role_name + - lma_collector_settings.role_name -)) diff --git a/stacklight_tests/toolchain/test_smoke_bvt.py b/stacklight_tests/toolchain/test_smoke_bvt.py new file mode 100644 index 0000000..c2ae6dc --- /dev/null +++ b/stacklight_tests/toolchain/test_smoke_bvt.py @@ -0,0 +1,120 @@ +# Copyright 2016 Mirantis, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from fuelweb_test.helpers.decorators import log_snapshot_after_test +from proboscis import test + +from stacklight_tests.toolchain import api + + +@test(groups=["plugins"]) +class TestToolchain(api.ToolchainApi): + """Class for smoke testing the LMA Toolchain plugins.""" + + @test(depends_on_groups=['prepare_slaves_3'], + groups=["install_toolchain", "install", "toolchain", "smoke"]) + @log_snapshot_after_test + def install_toolchain(self): + """Install the LMA Toolchain plugins and check it exists + + Scenario: + 1. Upload the LMA Toolchain plugins to the master node + 2. Install the plugins + 3. Create a cluster + 4. Check that the plugins can be enabled + + Duration 20m + """ + self.env.revert_snapshot("ready_with_3_slaves") + + self.prepare_plugins() + + self.helpers.create_cluster(name=self.__class__.__name__) + + self.activate_plugins() + + @test(depends_on_groups=['prepare_slaves_3'], + groups=["deploy_toolchain", "deploy", "toolchain", "smoke"]) + @log_snapshot_after_test + def deploy_toolchain(self): + """Deploy a cluster with the LMA Toolchain plugins + + Scenario: + 1. Upload the LMA Toolchain plugins to the master node + 2. Install the plugins + 3. Create the cluster + 4. Add 1 node with controller role + 5. Add 1 node with compute and cinder roles + 6. Add 1 node with plugin roles + 7. Deploy the cluster + 8. Check that LMA Toolchain plugins are running + 9. Run OSTF + + Duration 60m + Snapshot deploy_toolchain + """ + self.check_run("deploy_toolchain") + self.env.revert_snapshot("ready_with_3_slaves") + + self.prepare_plugins() + + self.helpers.create_cluster(name=self.__class__.__name__) + + self.activate_plugins() + + self.helpers.deploy_cluster(self.settings.base_nodes) + + self.check_plugins_online() + + self.helpers.run_ostf() + + self.env.make_snapshot("deploy_toolchain", is_make=True) + + @test(depends_on_groups=['prepare_slaves_9'], + groups=["deploy_ha_toolchain", "deploy", "deploy_ha", "toolchain", + "smoke"]) + @log_snapshot_after_test + def deploy_ha_toolchain(self): + """Deploy a cluster with the LMA Toolchain plugins in HA mode + + Scenario: + 1. Upload the LMA Toolchain plugins to the master node + 2. Install the plugins + 3. Create the cluster + 4. Add 3 nodes with controller role + 5. Add 3 nodes with compute and cinder roles + 6. Add 3 nodes with plugin roles + 7. Deploy the cluster + 8. Check that LMA Toolchain plugins are running + 9. Run OSTF + + Duration 120m + Snapshot deploy_ha_toolchain + """ + self.check_run("deploy_ha_toolchain") + self.env.revert_snapshot("ready_with_9_slaves") + + self.prepare_plugins() + + self.helpers.create_cluster(name=self.__class__.__name__) + + self.activate_plugins() + + self.helpers.deploy_cluster(self.settings.full_ha_nodes) + + self.check_plugins_online() + + self.helpers.run_ostf() + + self.env.make_snapshot("deploy_ha_toolchain", is_make=True) diff --git a/stacklight_tests/toolchain/toolchain_settings.py b/stacklight_tests/toolchain/toolchain_settings.py new file mode 100644 index 0000000..5fa25f8 --- /dev/null +++ b/stacklight_tests/toolchain/toolchain_settings.py @@ -0,0 +1,46 @@ +# Copyright 2016 Mirantis, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +from stacklight_tests.elasticsearch_kibana import ( + plugin_settings as elasticsearch_settings) +from stacklight_tests.influxdb_grafana import ( + plugin_settings as influxdb_settings) +from stacklight_tests.lma_collector import ( + plugin_settings as collector_settings) +from stacklight_tests.lma_infrastructure_alerting import ( + plugin_settings as infrastructure_alerting_settings) + +name = 'toolchain' + +stacklight_roles = (elasticsearch_settings.role_name + + influxdb_settings.role_name + + collector_settings.role_name + + infrastructure_alerting_settings.role_name) + +base_nodes = { + 'slave-01': ['controller'], + 'slave-02': ['compute', 'cinder'], + 'slave-03': stacklight_roles +} + +full_ha_nodes = { + 'slave-01': ['controller'], + 'slave-02': ['controller'], + 'slave-03': ['controller'], + 'slave-04': ['compute', 'cinder'], + 'slave-05': ['compute', 'cinder'], + 'slave-06': ['compute', 'cinder'], + 'slave-07': stacklight_roles, + 'slave-08': stacklight_roles, + 'slave-09': stacklight_roles +}