External MongoDB Support

https://blueprints.launchpad.net/fuel/+spec/external-mongodb-support

Be ably to use external specific MongoDB as ceilometer backend.

Problem description

A detailed description of the problem:

  • Currently we’re providing MongoDB from the box, although, it might be a situation when some specific MongoDB installation is needed. That’s why we need to give possibility of external MongoDB providing not to implement all possible DB settings inside Fuel itself.

Proposed change

External MongoDB support can be implemented by adding checkbox and textboxes to Fuel UI for specifying such parameters as:

  • db_username
  • db_user_password
  • db_name
  • mongodb_hosts

Also we shouldn’t allow to deploy cluster with mongo role and even choose mongo role on node if external mongo is enabled.

Alternatives

Add posibility to specify connection to database but it’s difficult to validate connection string instead of validating separated parameters.

Data model impact

None

REST API impact

None

Upgrade impact

This is needed in changes in puppet scripts and fuel UI. In Fuel Web UI we need to add one checkbox to choose external MongoDB to use and four textboxes for separated MongoDB parameters such as: db_username, db_user_password, db_name, db_hosts_ips. Pick Mongo role on node should be forbidden if external mongo is chosen. In puppet scripts we should use this parameters to set connection string to MongoDB for ceilometer in ceilometer.conf.

Security impact

None

Notifications impact

None

Other end user impact

Users will interact with this feauture through Fuel Web UI.

Performance Impact

None

Other deployer impact

  • Is this a change that takes immediate effect after its merged, or is it something that has to be explicitly enabled?

    This should be enabled by using Fuel Web UI.

Developer impact

Discuss things that will affect other developers working on Fuel, such as:

  • There will be an impact on ceilometer that have to be enabled and it’s checkbox should present (and should be checked) on Fuel Web UI.

Implementation

Assignee(s)

Primary assignee:
iberezovskiy
Other contributors:
dbelova

Work Items

  • Edit Fuel Web UI by adding checkbox and textboxes for MongoDB auth parameters (iberezovskiy)
  • Validate user input (iberezovskiy)
  • Forbid to choose mongo role (iberezovskiy)
  • Edit puppet scripts to use these parameters (iberezovskiy)
  • Write a documentation (dbelova)

Dependencies

None

Testing

Testing approach:

  • Nailgun tests should be passed
  • Environment with ceilometer and external mongo should be successfully deployed

Documentation Impact

A note should be added to Fuel User Guide to describe the possibility to specify external MongoDB to use.

References

None