It is impossible to reassign nodes during upgrade without re-provisioning
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Fuel for OpenStack |
Fix Committed
|
Wishlist
|
Ilya Kharin |
Bug Description
In the 9.0 release there is no possibility to keep some nodes, such as storage or compute nodes, without re-provisioning during the upgrade procedure. Some of such nodes should not be re-provisioned or some in place upgrade procedures can be used to keep them up to date. It can be easily done in the cluster_upgrade extension for Nailgun that already has this functionality but performs re-provisioning during the reassigning by default without an ability to prevent that. Also, some plugins can change names of roles between several releases and the reassigning handler have to provide ability to change names of roles.
Steps to reproduce:
1. Upgrade 6.1 with some plugins to 9.0
2. Install octane and create a clone of the environment using:
fuel2 env clone <env id>
3. Move some node to the new environment:
fuel2 env move node <env id> <node id>
Expected results:
We want just to re-assign the given node with ability to change names of its roles because for example there is no more old roles in the new release.
Actual result:
The given node will be re-assigned to the new environment, then booted into the bootstrap image with old roles and then re-provisioned, if there is no more old roles it will fail.
Workaround:
It's possible to change assignment of node directly in the Nailgun database without any validations and the ability to do it in the deterministic way.
Impact:
The NodeReassignHandler handler of the cluster_upgrade extension should be
changed to accept additional parameters in the request body. Two new options should be added:
reprovision (boolean) - True leads to re-provision of the node (by default)
roles (array of strings) - a list of roles to change default ones if
Changed in fuel: | |
assignee: | nobody → Fuel Library Team (fuel-library) |
importance: | Undecided → Wishlist |
status: | New → Confirmed |
milestone: | none → 9.0 |
tags: | added: area-library |
Changed in fuel: | |
assignee: | Fuel Library Team (fuel-library) → Fuel Python Team (fuel-python) |
tags: |
added: area-python removed: area-library |
Changed in fuel: | |
status: | Confirmed → New |
status: | New → Confirmed |
summary: |
- There is no possible to reassign nodes during upgrade without re- + It is impossible to reassign nodes during upgrade without re- provisioning |
tags: | added: team-upgrades |
Changed in fuel: | |
assignee: | Fuel Python Team (fuel-python) → Ilya Kharin (akscram) |
status: | Confirmed → In Progress |
description: | updated |
description: | updated |
Reviewed: https:/ /review. openstack. org/280067 /git.openstack. org/cgit/ openstack/ fuel-web/ commit/ ?id=c66d903be20 bc9af69079dedf7 5f17f74ee0e3df
Committed: https:/
Submitter: Jenkins
Branch: master
commit c66d903be20bc9a f69079dedf75f17 f74ee0e3df
Author: Ilya Kharin <email address hidden>
Date: Sun Feb 14 23:15:32 2016 -0600
Reassign nodes without reinstallation
In some upgrade scenarios when shadow environments are used some of
nodes should not be reprovisioned during this procedure. It is useful in
combination when control plane nodes are reprovisioned and data plane
nodes are updated in place.
The update_ cluster_ assignment method of the objects.Node class was
changed to accept roles and pending_roles for node during the
reassignment. It allows to specify proper roles by the upgrade
extention.
The NodeReassignHandler handler accepts two additional parameters in the
current roles if empty
request body:
- reprovision = True (default) - allows to skip the reprovision step
- roles = [] (default) - allows to specify new roles or preserve the
Two additional methods were added to NailgunClusterA dapter and aseAdapter respectively.
NailgunRele
Change-Id: Iedb20a904e58f5 b9a86eb47de8d8d 317dc3cc61b major-openstack -environment
Blueprint: upgrade-
Closes-Bug: #1558655