Monasca UI ======================== .. image:: https://governance.openstack.org/tc/badges/monasca-ui.svg :target: https://governance.openstack.org/tc/reference/tags/index.html monasca-ui ========== Monasca UI is implemented as a Horizon plugin that adds panels to Horizon. It is installed into devstack by the monasca-api plugin. Devstack Deployment Set Up ========================== - ``cd /opt/stack/horizon`` - Install Openstack upper-constraints requirements ``pip install -c https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt -r requirements.txt`` - Clone monasca-ui: ``git clone https://opendev.org/openstack/monasca-ui.git`` - Add ``git+https://opendev.org/openstack/monasca-ui.git`` to ``requirements.txt``. - Install monasca-ui required packages ``pip install -r requirements.txt`` (monasca-client packages will be installed.) - Edit ``openstack_dashboard/settings.py`` to include the following two lines: - ``import monitoring.enabled`` - ``monitoring.enabled,`` (Add this line to the ``settings_utils.update_dashboards`` list.) - Link monasca into Horizon: :: ln -sf $(pwd)/../monasca-ui/monitoring/enabled/_50_admin_add_monitoring_panel.py \ $(pwd)/openstack_dashboard/enabled/_50_admin_add_monitoring_panel.py ln -sf $(pwd)/../monasca-ui/monitoring/conf/monitoring_policy.yaml \ $(pwd)/openstack_dashboard/conf/monitoring_policy.yaml ln -sfF $(pwd)/../monasca-ui/monitoring $(pwd)/monitoring - Collect static files, run tests :: python manage.py collectstatic --noinput python manage.py compress ./run_tests.sh - Restart apache service ``service apache2 restart`` Development Environment Set Up ============================== Get the Code ------------ :: git clone https://opendev.org/openstack/monasca-ui.git # clone monasca-ui git clone https://opendev.org/openstack/horizon.git # clone horizon git clone https://github.com/monasca/grafana.git # clone grafana git clone https://github.com/openstack/monasca-grafana-datasource.git # clone grafana plugins Set up Horizon -------------- Since Monasca UI is a Horizon plugin, the first step is to get their development environment set up. :: cd horizon ./run_tests.sh cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py Pro Tip: Make sure you have Horizon running correctly before proceeding. For more details visit: https://docs.openstack.org/horizon/latest/#setup Set up Monasca-UI ----------------- - Edit ``openstack_dashboard/local/local_settings.py`` to modify the ``OPENSTACK_HOST`` IP address to point to devstack. - Add ``monasca-client`` to ``requirements.txt``. Get the latest version from: https://pypi.org/project/python-monascaclient - Link monasca into Horizon: :: ln -sf $(pwd)/../monasca-ui/monitoring/enabled/_50_admin_add_monitoring_panel.py \ $(pwd)/openstack_dashboard/enabled/_50_admin_add_monitoring_panel.py ln -sf $(pwd)/../monasca-ui/monitoring/conf/monitoring_policy.yaml \ $(pwd)/openstack_dashboard/conf/monitoring_policy.yaml ln -sfF $(pwd)/../monasca-ui/monitoring $(pwd)/monitoring ./run_tests #load monasca-client into virtualenv Set up Grafana 4.1 ------------------ - The grafana4 branch of grafana is stable, as is master in monasca-grafana-datasource. - Copy ``monasca-grafana-datasource/`` into ``grafana/plugins/monasca-grafana-datasource/``. - Use the grafana docs to build and deploy grafana: - https://grafana.com/docs/project/building_from_source/ - https://grafana.com/docs/installation/configuration/ - Copy ``monasca-ui/grafana-dashboards/*`` to ``/public/dashboards/`` in your grafana deployment. - Set ``GRAFANA_URL`` in the Horizon settings. Start Server ------------ :: ./run_tests.sh --runserver Style checks ------------ To check if the code follows python coding style, run the following command from the root directory of this project: :: $ tox -e pep8 Coverage checks --------------- To measure the code coverage, run the following command from the root directory of this project: :: $ tox -e cover Unit tests ---------- To run all the unit test cases, run the following command from the root directory of this project: :: $ tox -e py36