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