From 6d8330c0698b4c5ae989d9114e31605cb23779d0 Mon Sep 17 00:00:00 2001 From: Alexander Saprykin Date: Tue, 23 Jun 2015 15:33:56 +0300 Subject: [PATCH] Spec for virtual IP reservation support in Fuel Implements: blueprint vip-reservation Change-Id: Idb6a038a6c0f0ace77b57a68dfc7d678bb2c6e8d --- specs/7.0/vip-reservation.rst | 182 ++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 specs/7.0/vip-reservation.rst diff --git a/specs/7.0/vip-reservation.rst b/specs/7.0/vip-reservation.rst new file mode 100644 index 00000000..dd9e341f --- /dev/null +++ b/specs/7.0/vip-reservation.rst @@ -0,0 +1,182 @@ +====================== +Virtual IP reservation +====================== + +https://blueprints.launchpad.net/fuel/+spec/vip-reservation + +This document is about additional virtual IP (VIP) +reservation during deployment. + +Problem description +=================== + +Some plugins require additional VIP to proper configuration. +For example Zabbix could be configured in way that it expect SNMP traffic +on dedicated VIP. + +In current version VIPs reservation is done based on information from +release field in the database. + +So the plugin developer should have a better way to create extra VIPs +as puppet resource in pre-deployment or post-deployment plugin stage. + +Proposed change +=============== + +Give user a possibility to reserve additional VIPs during deployment process. +This should be possible by providing additional plugin configuration. + +Add support of new configuration file to the plugin. +Configuration file should be named `network_roles.yaml`. + +Plugin developers will provide new network roles configuration. +Network roles description is placed in `network_roles.yaml`. +Network role description includes information on VIPs reservation. + +At the deployment stage Nailgun will reserve VIPs and they +will be accessible in the Puppet manifests via Hiera. + +Deployment flow: None + +Migration script flow: None + +Alternatives +------------ + +Provide REST API to reserve VIPs. This allows 3rd party software to +reserve additional VIPs. + + Cons: + - Authentication from plugin is difficult + - Requires installation of Fuel client or direct access + to the REST API server + + Pros: + - Allows VIP management outside of the plugin + +Data model impact +----------------- + +Network roles data format: + +* Proposed network roles configuration file format: + + .. code-block:: yaml + + - id: "name_of_network_role" + default_mapping: "public" + properties: + subnet: true + gateway: false + vip: + - name: "my_vip_a" + shared: false + + +Nailgun DB tables changes: + +**Plugin** + +`network_roles_metadata` +plugin network roles data taken from `network_roles.yaml` file. + + +REST API impact +--------------- + +None + +Upgrade impact +-------------- + +None + +Security impact +--------------- + +None + +Notifications impact +-------------------- + +None + +Other end user impact +--------------------- + +None + +Other deployer impact +--------------------- + +Performance Impact +------------------ + +None + +Plugin impact +------------- + +* New network roles with VIPs reservation can be described + in `network_roles.yaml` file which is loaded into Nailgun DB + when plugin gets installed or on plugin sync API call. + +* `network_roles.yaml` file format is described in `Data model impact`_. + +Developer impact +---------------- + +Developer that works on Fuel plugins can use new `network_roles.yaml` +to reserve VIPs for the plugin. + +Implementation +============== + +Assignee(s) +----------- + +Primary assignee: + * Alexander Saprykin + +Mandatory design review: + * Igor Kalnitsky + * Aleksey Kasatkin + +QA engineers: + * Egor Kotko + +Work Items +---------- + + - Implement configuration file data loading to the database. + - Implement VIP reservation from plugin network roles metadata. + +Dependencies +============ + +- https://blueprints.launchpad.net/fuel/+spec/templates-for-networking + +Testing +======= + +- Additional unit/integration tests for Nailgun. +- Additional System tests for test environment with plugin installed + and VIPs set using configuration file. +- Regression testing is required. + +Acceptance criteria: + + - Configuration data from `network_roles.yaml` is stored to the database. + - VIPs defined in `network_roles.yaml` are accessible via Hiera. + +Documentation Impact +==================== + +We need to update documentation about VIPs in networks. Plugin documentation +should be updated as well. + +References +========== + +- https://blueprints.launchpad.net/fuel/+spec/vip-reservation +