From c02c330f5cded920a79368111768a8253b66f4e0 Mon Sep 17 00:00:00 2001 From: Pedro Guimaraes Date: Wed, 24 Mar 2021 15:41:49 +0100 Subject: [PATCH] Adjusted format for pep8 and added tox.ini unit tests with stestr --- requirements-dev.txt | 1 + src/charm.py | 29 +++++++++++++++++++---------- tests/test_charm.py | 25 ++++++++++++++----------- 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 4697c74..d9c2fcf 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,3 +2,4 @@ nose==1.3.7 coverage flake8 +stestr>=2.2.0 diff --git a/src/charm.py b/src/charm.py index 9cecf5b..af0fbb8 100755 --- a/src/charm.py +++ b/src/charm.py @@ -8,6 +8,7 @@ import logging from ops.charm import CharmBase from ops.main import main from ops.framework import StoredState +from ops.model import MaintenanceStatus, ActiveStatus from charmhelpers.fetch.ubuntu import apt_install, apt_purge @@ -35,7 +36,6 @@ def CinderThreeParContext(charm_config, service): } - class CharmCinderThreeParCharm(CharmBase): """Charm the service.""" @@ -63,30 +63,39 @@ class CharmCinderThreeParCharm(CharmBase): return self.framework.model.get_relation(rel_name).units def _on_install(self, _): - self.unit.status = ops.model.MaintenanceStatus( + self.unit.status = MaintenanceStatus( "Installing packages") apt_install(['python3-3parclient']) try: - apt_purge(['python3-certifi', 'python3-urllib3', 'python3-requests']) + apt_purge(['python3-certifi', + 'python3-urllib3', + 'python3-requests']) except Exception as e: - logger.debug("Tried removing packages on install and failed with {}, ignoring".format(str(e))) - self.unit.status = ops.model.ActiveStatus("Unit is ready") + logger.debug("Tried removing packages on install and failed " + "with {}, ignoring".format(str(e))) + self.unit.status = ActiveStatus("Unit is ready") def _on_config_changed_or_upgrade(self, event): svc_name = self.framework.model.app.name charm_config = self.framework.model.config r = self.framework.model.relations.get('storage-backend')[0] for u in self._rel_get_remote_units('storage-backend'): - r.data[self.unit]['backend_name'] = charm_config['volume-backend-name'] or svc_name - r.data[self.unit]['subordinate_configuration'] = json.dumps(CinderThreeParContext(charm_config, svc_name)) + r.data[self.unit]['backend_name'] = \ + charm_config['volume-backend-name'] or svc_name + r.data[self.unit]['subordinate_configuration'] = \ + json.dumps(CinderThreeParContext(charm_config, svc_name)) def _on_render_storage_backend(self, event): svc_name = self.framework.model.app.name charm_config = self.framework.model.config - data = self.framework.model.relations.get(event.relation.name)[0].data +# relations = self.framework.model.relations +# data = relations.get(event.relation.name)[0].data data = event.relation.data - data[self.unit]['backend_name'] = charm_config['volume-backend-name'] or svc_name - data[self.unit]['subordinate_configuration'] = json.dumps(CinderThreeParContext(charm_config, svc_name)) + data[self.unit]['backend_name'] = \ + charm_config['volume-backend-name'] or svc_name + data[self.unit]['subordinate_configuration'] = \ + json.dumps(CinderThreeParContext(charm_config, svc_name)) + if __name__ == "__main__": main(CharmCinderThreeParCharm) diff --git a/tests/test_charm.py b/tests/test_charm.py index 19dd8cf..db07892 100644 --- a/tests/test_charm.py +++ b/tests/test_charm.py @@ -2,13 +2,12 @@ # See LICENSE file for licensing details. import unittest -from unittest.mock import Mock -import ops.model -import ops.testing -from charm import CharmCinderThreeParCharm +from ops.model import Relation +from ops.testing import Harness +from src.charm import CharmCinderThreeParCharm -TEST_3PAR_CINDER_BACKEND = '\ +TEST_3PAR_CONFIG = '\ {"cinder": \ {"/etc/cinder/cinder.conf": \ {"sections": \ @@ -21,15 +20,18 @@ TEST_3PAR_CINDER_BACKEND = '\ ["hpe3par_api_url", "test.url"], \ ["hpe3par_cpg", ""], \ ["volume-backend-name", "charm-cinder-three-par"], \ -["volume_driver", "cinder.volume.drivers.hpe.hpe_3par_fc.HPE3PARFCDriver"]]}}}}' +["volume_driver", \ +"cinder.volume.drivers.hpe.hpe_3par_fc.HPE3PARFCDriver"]]}}}}' + class TestCharm(unittest.TestCase): def setUp(self): - self.harness = ops.testing.Harness(CharmCinderThreeParCharm) + self.harness = Harness(CharmCinderThreeParCharm) self.addCleanup(self.harness.cleanup) self.harness.begin() self.model = self.harness.model - self.storage_backend = self.harness.add_relation('storage-backend', 'cinder') + self.storage_backend = \ + self.harness.add_relation('storage-backend', 'cinder') self.harness.add_relation_unit(self.storage_backend, 'cinder/0') def test_config_changed(self): @@ -40,6 +42,7 @@ class TestCharm(unittest.TestCase): "hpe3par-api-url": "test.url" }) rel = self.model.get_relation('storage-backend', 0) - self.assertIsInstance(rel, ops.model.Relation) - self.assertEqual(rel.data[self.model.unit], {'backend_name': 'charm-cinder-three-par', 'subordinate_configuration': TEST_3PAR_CINDER_BACKEND}) - + self.assertIsInstance(rel, Relation) + self.assertEqual(rel.data[self.model.unit], + {'backend_name': 'charm-cinder-three-par', + 'subordinate_configuration': TEST_3PAR_CONFIG})