Spec for Calamari plugin for Fuel

Calamari is a web-based monitoring and management tool for Ceph.

Implements: blueprint fuel-plugin-calamari

Change-Id: Icd05ce5838cac3372a39e3b249958a922914e851
This commit is contained in:
amartellone 2015-05-07 09:19:51 +02:00 committed by Dmytro Iurchenko
parent 8fcc8c99b9
commit 8d4873c9df
2 changed files with 247 additions and 1 deletions

246
specs/7.0/calamari.rst Normal file
View File

@ -0,0 +1,246 @@
.. -*- coding: utf-8 -*-
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
===================
Calamari: a Ceph UI
===================
Include the URL of your launchpad blueprint:
https://blueprints.launchpad.net/fuel/+spec/fuel-plugin-calamari
We would like to develop a plugin to install Calamari in the next release of
Fuel (7.0). Calamari is a management and monitoring service for Ceph.
Calamari is composed by monitoring agents, a server-side and a client-side
components.
In more depth Calamari consists of three major components:
- Data collection agents running on each Ceph Storage Cluster host.
- The REST API running on one host (also called calamari server).
- The Calamari web application running on one host (also called calamari
client).
Problem description
===================
In this section we describe the main steps that a user should perform for
installing Calamari. We suppose that:
- Ceph OSD is selected by User.
- Calamari agent will be installed on the Ceph OSD nodes.
- Calamari server and Calamari web application (GUI) will be installed on a
new base-os node.
Calamari installation
---------------------
- Actor: User
- Pre-Conditions: the User has already created a new environment and he has
configured a Ceph cluster.
- Post-Conditions: Calamari is correctly working.
Flow:
- The User assigns base-os role to an unallocated node.
- The User renames this node as Calamari
- The User configures in Settings tab the Ceph section.
- The User configures in Settings tab the Calamari section.
- The User deploys the environment.
Proposed change
===============
We would like develop a new Fuel plugin in order to install Calamari [1]_.
Our proposal considers the following aspects:
- Install Calamari server (REST API) and client (web application) on a new node
with the base-os role.
- The plugin installs also the required agents on each Ceph OSD node. The
collected information will be pushed to Calamari server.
- The communication among agents and server will use the OpenStack management
network.
- There will be a configuration switch to make the REST API and web application
of Calamari available on the public interface (if the base-os support this
already).
- No load balance for HA in the first implementation. This topic will be
explored in the future.
Planned improvements
--------------------
- Possibility to install Calamari on a controller node.
- Configure Calamari to use Keystone as the authentication backend.
- User session sharing between Calamari and the OpenStack dashboard.
Alternatives
------------
None. The aim is to provide monitoring and management for Ceph. There are
more general monitoring solution like Zabbix [2]_, LMA collector [3]_ and
Elasticsearch-Kibana [4]_ plugins.
Data model impact
-----------------
None
REST API impact
---------------
None
Upgrade impact
--------------
None.
Security impact
---------------
The default admin user name and password for the web interface will be
configured in the setting tab of the Fuel UI.
In the Fuel UI will be possible to allow the deploy of the REST API and web
application on the public network.
Notifications impact
--------------------
There will be a deployment successful message displaying the text pointing to
the URL of the web application.
We can also add some info to the `Post Deployment Dashboard
<https://review.openstack.org/#/c/180181/>`_ once it is implemented.
Other end user impact
---------------------
None
Performance Impact
------------------
None
Other deployer impact
---------------------
In the source tree of calamari there are Vagrantfile and scripts to build the
packages for Ubuntu 14.04, Centos and RHEL.
There is a `guide on building packages
<http://calamari.readthedocs.org/en/latest/development/building_packages.html>`_.
Developer impact
----------------
None
Infrastructure impact
---------------------
The agent impact on Ceph servers and on the network should be negligible.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
Alessandro Martellone <amartellone@create-net.org>
Other contributors:
Daniele Pizzolli <dpizzolli@create-net.org>
Work Items
----------
Task name: Calamari installation recipe
Task description: write a puppet module in order to install Calamari server
and configure properly all nodes to monitor.
Assignees: Alessandro Martellone, Daniele Pizzolli.
Task name: include the latest version of Calamari package
Task description: include in the plugin repositories the required packages.
Assignees: Dmytro Iurchenko, Alessandro Martellone,
Daniele Pizzolli.
Dependencies
============
- Fuel 6.1 or higher.
- Base-os node role.
Nice to have, but not essential:
- `Post Deployment Dashboard <https://review.openstack.org/#/c/180181/>`_
- `Role as a plugin <https://review.openstack.org/#/c/143690/>`_
Testing
=======
Acceptance criteria:
- Diamond [5]_ and salt-minion services are installed and running on
all OSD and Controller nodes.
- Salt-master is installed and running on the node named 'calamari' and
salt-keys command lists all OSD and Controller node hosts in
'Accepted Keys' section.
- Calamari REST API is available on the node named 'calamari' [6]_.
- User can authenticate via REST API [7]_.
- The cluster description provided by Calamari REST API [8]_ is correct.
- Calamari UI is available on 'calamari' node on HTTP default port.
Documentation Impact
====================
None. It will be a Fuel plugin with its own documentation.
References
==========
.. [1] http://calamari.readthedocs.org/en/latest/operations/server_install.html
.. [2] https://docs.mirantis.com/fuel-dev/develop/addition_examples.html
.. [3] https://github.com/stackforge/fuel-plugin-lma-collector
.. [4] https://github.com/stackforge/fuel-plugin-elasticsearch-kibana
.. [5] https://github.com/ceph/Diamond
.. [6] http://ceph.com/calamari/docs/calamari_rest/index.html
.. [7] http://ceph.com/calamari/docs/calamari_rest/authentication.html
.. [8] http://ceph.com/calamari/docs/calamari_rest/resources/resources.html#clusterviewset

View File

@ -69,7 +69,7 @@ class TestTitles(testtools.TestCase):
if "http://" in line or "https://" in line:
continue
self.assertTrue(
len(line) < 80,
len(line.decode("utf-8")) < 80,
msg="%s:%d: Line limited to a maximum of 79 characters." %
(tpl, i+1))