diff --git a/zaza/openstack/charm_tests/status/tests.py b/zaza/openstack/charm_tests/status/tests.py new file mode 100644 index 0000000..30db3d6 --- /dev/null +++ b/zaza/openstack/charm_tests/status/tests.py @@ -0,0 +1,40 @@ +# Copyright 2023 Canonical Ltd. +# +# 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. + +"""Code for running status tests.""" + +import logging +import subprocess +import unittest + +import zaza +import zaza.openstack.charm_tests.test_utils as test_utils + +class ProposedPackageReport(test_utils.OpenStackBaseTest): + """Proposed packages report status test class.""" + + def test_100_report_proposed_packages(self): + """Report proposed packages installed on each unit.""" + + machines = [] + cmd = 'apt list --installed' + for application in zaza.model.get_status().applications: + for unit in zaza.model.get_units(application): + installed = zaza.model.run_on_unit(unit.entity_id, cmd) + proposed = [] + for pkg in installed['Stdout'].split('\n'): + if 'proposed' in pkg: + proposed.append(pkg) + logging.info("\n\nProposed packages installed on {}:\n{}".format( + unit.entity_id, "\n".join(proposed)))