From 328a9202cf019bab61a970b02ec04604edb72ac3 Mon Sep 17 00:00:00 2001 From: Stamatis Katsaounis Date: Mon, 10 Feb 2020 11:37:46 +0200 Subject: [PATCH] Basic functional test for Bionic Ussuri and Docs changes This patch adds a bare minimum bundle.yaml for deploying watcher-dashboard charm and running a noop basic test. In addition, it changes the initial information to point to upstream after the official release of charm-watcher-dashboard. It also adds the appropriate repo configuration and conforms to the new removed packages mechanism. Change-Id: I0a44436c4d292aaaa7ce37a3792c205056b37f17 Signed-off-by: Stamatis Katsaounis --- .gitreview | 4 ++ .zuul.yaml | 5 ++ src/HACKING.md | 7 +-- src/README.md | 17 +++++-- src/layer.yaml | 2 +- src/metadata.yaml | 2 +- src/reactive/watcher_dashboard_handlers.py | 6 ++- src/tests/bundles/bionic-ussuri.yaml | 51 +++++++++++++++++++ src/tests/tests.yaml | 9 ++++ ...t_lib_charm_openstack_watcher_dashboard.py | 22 -------- unit_tests/test_watcher_dashboard_handlers.py | 8 +++ 11 files changed, 101 insertions(+), 32 deletions(-) create mode 100644 .gitreview create mode 100644 .zuul.yaml create mode 100644 src/tests/bundles/bionic-ussuri.yaml create mode 100644 src/tests/tests.yaml delete mode 100644 unit_tests/test_lib_charm_openstack_watcher_dashboard.py diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..a49fbb1 --- /dev/null +++ b/.gitreview @@ -0,0 +1,4 @@ +[gerrit] +host=review.opendev.org +port=29418 +project=openstack/charm-watcher-dashboard.git diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 0000000..b3037e9 --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,5 @@ +- project: + templates: + - python35-charm-jobs + - openstack-python3-ussuri-jobs + - openstack-cover-jobs diff --git a/src/HACKING.md b/src/HACKING.md index bda192d..1d10789 100644 --- a/src/HACKING.md +++ b/src/HACKING.md @@ -1,6 +1,7 @@ # Overview -This charm is developed by Stamatis Katsaounis and it is based on the official -OpenStack Charms project. +This charm is developed as part of the OpenStack Charms project, and as such you +should refer to the [OpenStack Charm Development Guide](https://github.com/openstack/charm-guide) for details on how +to contribute to this charm. -You can find its source code here: . +You can find its source code here: . diff --git a/src/README.md b/src/README.md index 83626c9..322cb4b 100644 --- a/src/README.md +++ b/src/README.md @@ -2,6 +2,8 @@ This subordinate charm provides the Watcher Dashboard plugin for use with the OpenStack Dashboard. +OpenStack Ussuri or later is required. + # Usage Example minimal deploy: @@ -13,9 +15,9 @@ Example minimal deploy: # Bugs -Please report bugs on [GitHub](https://github.com/grnet/charm-watcher-dashboard/issues). +Please report bugs on [Launchpad][lp-bugs-charm-watcher-dashboard]. -For general questions please refer to the OpenStack [Charm Guide](https://docs.openstack.org/charm-guide/latest/). +For general questions please refer to the OpenStack [Charm Guide][cg]. # Contact Information @@ -24,6 +26,13 @@ know that, so include that information here: ## OpenStack Watcher -- [Watcher](https://wiki.openstack.org/wiki/Watcher) -- [Watcher Bugs](https://launchpad.net/watcher) +- [Watcher][wiki-watcher] +- [Watcher Bugs][lp-bugs-watcher] - Watcher IRC on freenode at #openstack-watcher + + + +[cg]: https://docs.openstack.org/charm-guide +[lp-bugs-charm-watcher-dashboard]: https://bugs.launchpad.net/charm-watcher-dashboard/+filebug +[lp-bugs-watcher]: https://launchpad.net/watcher +[wiki-watcher]: https://wiki.openstack.org/wiki/Watcher diff --git a/src/layer.yaml b/src/layer.yaml index f0442b9..4595439 100644 --- a/src/layer.yaml +++ b/src/layer.yaml @@ -1,7 +1,7 @@ includes: - layer:openstack - interface:dashboard-plugin -repo: https://github.com/grnet/charm-watcher-dashboard +repo: https://github.com/openstack/charm-watcher-dashboard options: basic: use_venv: True diff --git a/src/metadata.yaml b/src/metadata.yaml index 71ab6e1..9fee9d1 100644 --- a/src/metadata.yaml +++ b/src/metadata.yaml @@ -1,7 +1,7 @@ name: watcher-dashboard display-name: Watcher Dashboard summary: OpenStack resource optimization Dashboard -maintainer: Stamatis Katsaounis +maintainer: OpenStack Charmers description: | This is the dashboard for the OpenStack resource optimization service, Watcher. diff --git a/src/reactive/watcher_dashboard_handlers.py b/src/reactive/watcher_dashboard_handlers.py index afcbea2..73246dc 100644 --- a/src/reactive/watcher_dashboard_handlers.py +++ b/src/reactive/watcher_dashboard_handlers.py @@ -31,6 +31,10 @@ charm.use_defaults( def dashboard_available(): """Relation to OpenStack Dashboard principal charm complete. """ - # config and restart is handled by package install, just update our status with charm.provide_charm_instance() as watcher_dashboard_charm: + dashboard_relation = reactive.endpoint_from_flag('dashboard.available') + dashboard_relation.publish_plugin_info( + "", None, + conflicting_packages=watcher_dashboard_charm.purge_packages, + install_packages=watcher_dashboard_charm.packages) watcher_dashboard_charm.assess_status() diff --git a/src/tests/bundles/bionic-ussuri.yaml b/src/tests/bundles/bionic-ussuri.yaml new file mode 100644 index 0000000..18283be --- /dev/null +++ b/src/tests/bundles/bionic-ussuri.yaml @@ -0,0 +1,51 @@ +series: bionic +relations: +- - mysql:shared-db + - keystone:shared-db +- - mysql:shared-db + - openstack-dashboard:shared-db +- - mysql:shared-db + - watcher:shared-db +- - keystone:identity-service + - watcher:identity-service +- - keystone:identity-service + - openstack-dashboard:identity-service +- - openstack-dashboard:dashboard-plugin + - watcher-dashboard:dashboard +- - rabbitmq-server:amqp + - watcher:amqp +applications: + keystone: + charm: cs:~openstack-charmers-next/keystone + num_units: 1 + options: + openstack-origin: cloud:bionic-ussuri/proposed + mysql: + constraints: mem=3072M + charm: cs:~openstack-charmers-next/percona-cluster + num_units: 1 + openstack-dashboard: + series: bionic + charm: cs:~openstack-charmers-next/openstack-dashboard + num_units: 1 + options: + openstack-origin: cloud:bionic-ussuri/proposed + rabbitmq-server: + charm: cs:~openstack-charmers-next/rabbitmq-server + num_units: 1 + watcher: + series: bionic + charm: cs:~openstack-charmers-next/watcher + num_units: 1 + options: + openstack-origin: cloud:bionic-ussuri/proposed + datasources: gnocchi + planner: weight + planner-config: > + { + "weights": "change_node_power_state:9,change_nova_service_state:50,migrate:30,nop:70,resize:20,sleep:40,turn_host_to_acpi_s3_state:10,volume_migrate:60", + "parallelization": "change_node_power_state:2,change_nova_service_state:1,migrate:2,nop:1,resize:2,sleep:1,turn_host_to_acpi_s3_state:2,volume_migrate:2" + } + watcher-dashboard: + series: bionic + charm: ../../../watcher-dashboard diff --git a/src/tests/tests.yaml b/src/tests/tests.yaml new file mode 100644 index 0000000..2a0f56a --- /dev/null +++ b/src/tests/tests.yaml @@ -0,0 +1,9 @@ +charm_name: watcher-dashboard +gate_bundles: +- bionic-ussuri +smoke_bundles: +- bionic-ussuri +configure: +- zaza.charm_tests.noop.setup.basic_setup +tests: +- zaza.charm_tests.noop.tests.NoopTest diff --git a/unit_tests/test_lib_charm_openstack_watcher_dashboard.py b/unit_tests/test_lib_charm_openstack_watcher_dashboard.py deleted file mode 100644 index f640a2e..0000000 --- a/unit_tests/test_lib_charm_openstack_watcher_dashboard.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2020 GRNET SA -# -# 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 __future__ import absolute_import -from __future__ import print_function - -import charms_openstack.test_utils as test_utils - - -class TestWatcherDashboardHandlers(test_utils.PatchHelper): - pass diff --git a/unit_tests/test_watcher_dashboard_handlers.py b/unit_tests/test_watcher_dashboard_handlers.py index ce01d31..4c7f0d7 100644 --- a/unit_tests/test_watcher_dashboard_handlers.py +++ b/unit_tests/test_watcher_dashboard_handlers.py @@ -51,7 +51,15 @@ class TestWatcherDashboardHandlers(test_utils.PatchHelper): self.provide_charm_instance().__enter__.return_value = \ self.watcher_dashboard_charm self.provide_charm_instance().__exit__.return_value = None + self.patch('charms.reactive.endpoint_from_flag') def test_dashboard_available(self): + mock_flag = mock.Mock() + self.endpoint_from_flag.return_value = mock_flag + self.watcher_dashboard_charm.purge_packages = ['n1'] + self.watcher_dashboard_charm.packages = ['p1', 'p2'] handlers.dashboard_available() self.watcher_dashboard_charm.assess_status.assert_called_once_with() + mock_flag.publish_plugin_info.assert_called_once_with( + "", None, conflicting_packages=['n1'], + install_packages=['p1', 'p2'])