Configurable hostnames for physical nodes

Implements: blueprint node-naming
Change-Id: I08febdbc80bf64baac7e1926b255df0825a6a548
This commit is contained in:
Michael Polenchuk 2015-06-09 12:43:42 +03:00 committed by iponomarev
parent b4b03b8730
commit e9e8478a40

View File

@ -0,0 +1,198 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
==========================================
Configurable hostnames for physical nodes
==========================================
https://blueprints.launchpad.net/fuel/+spec/node-naming
Configure the hostnames of the slave nodes that Fuel will deploy based on
custom naming convention.
Problem description
===================
The name that is visible in the UI/CLI/API for the node is NOT what is applied
as the hostname when the node is deployed. The hostname is dynamically
generated (i.e. node-1 .. node-n).
New mechanism should has possibility changing hostname before provision
process to enable customers to access the device for updates, security checks,
etc. and prevent confusion.
Proposed change
===============
This spec proposes to extend UI, fuel-cli and nailgun API as well in
order to use custom hostnames prior provisioning stage.
* New field 'setup hostname' should be added to the UI node settings part
* New field should has ability to forbid to rename node after provisioning
* Extend node essence with new hostname field in nailgun API
extend nailgun node validation API
based on custom naming convention checks
* Extend fuel-cli to support to set up hostname
for example::
fuel node --node-id 15 --set-hostname node-3
Alternatives
------------
None
Data model impact
-----------------
Node model will include hostname field in nailgun
REST API impact
---------------
NodeValidator should be extended to handle incorrect node's hostname format and
duplicates of hostnames within a cluster as well.
In case when hostname is not set for node hostname will generated by standard
method (node-1...etc)
Upgrade impact
--------------
After upgrade to 7.0 version hostname field will be updated to current
generated node hostname:
In this case will used standard hostname generation method (node-$ID)
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
End user gets ``--set-hostname`` additional option via CLI, that not required
for changes. Deployed env can work properly with default values.
End user gets new optional field in UI node settings.
Where hostname can be changed
Performance Impact
------------------
None
Plugin impact
-------------
None
Other deployer impact
---------------------
None
Developer impact
----------------
None
Infrastructure impact
---------------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
Ivan Ponomarev
Developer:
Artur Svechnikov
QA:
Dmirtry Kruglov
Design Review:
Evgeny Li
Work Items
----------
* Forbid to change node hostname after provisioning
* Extend Fuel UI node settings to add new field hostname
* Extend fuel-cli to use ``--set-hostname`` option
* Modify NodeValidation API of Nailgun
* Modify nailgun node object, node db model
* Modify Upgrade process to add node hostname field
* Modify Nailgun unit tests to test functional of hostname logic
* Write a documentation
Dependencies
============
None
Testing
=======
* Acceptance criteria:
- Admin user can specify a custom hostname to be applied as the hostname
for a node, via Fuel CLI or Fuel UI
- Admin user can set custom hostname only before the node provisioning
- If a custom node hostname is not provided, the default mechanism of
autogenerating node hostnames (i.e. 'node-1', etc.) is used
- Custom node hostname is validated to have the proper hostname format
and not to duplicate existing hostnames in the cluster
- On upgrade to MOS 7.0 the new hostname attribute is filled in the default
mechanism of autogenerating node hostnames (i.e. 'node-1', etc.)
**Automated testing scenario**
Set custom node hostname for a node via CLI:
1. Set a new hostname for a node via Fuel CLI
2. Provision and deploy the node
3. Run Network check
4. Connect remotely to the node and verify that the new hostname is applied
5. Run OSTF tests set
**Manual testing scenario**
Set custom node hostname for a node via Fuel UI:
1. Set a new hostname for a node via Fuel UI
2. Deploy the changes
3. Run Network check
4. Connect remotely to the node and verify that the new hostname is applied
5. Run OSTF tests set
Documentation Impact
====================
* A note should be added to Fuel Deployment Guide to describe the possibility
to specify custom node hostname.
References
==========
None