# upgrading nodes
-targets like `nodefcdistro-f20` can be used to change a node's fcdistro
+targets like `nodedistro-f22` can be used to change a node's fcdistro
-----
-usual sequence for testing a node upgrade; we start from a f20 myplc and upgrade the node to f21
+## testing upgrade (one node)
- would be - e.g. from f20 to f21
+testing a node upgrade; we start from a f21 myplc and upgrade the node to f22
+### Init
- f20
- bond ../$(t)*f21
+ f21
+ bond22
rung
- run nodeplain-off nodefcdistro-f21 nodestate-upgrade
- run qemu-kill-mine qemu-start wait-node
+ run nodeplain-off
------
-Or, the other way around, using a f21 myplc, and a f20 bonding node, that we upgrade
+### Upgrade the node (make sure nodeplain is off)
+
+ run nodedistro-f22 nodestate-upgrade
+ run reset-node wait-node
+
+### Reinstall - back to square 1
- f21
- bond ../$(t)*f20
- rung
- rung node qemu-start wait-node
- rung nodefcdistro-f21 nodestate-upgrade
- rung qemu-kill-mine qemu-start wait-node
+ run nodedistro-f21 nodestate-reinstall
+ run reset-node wait-node
+
+### Run bootmanager interactively during upgrade
+To deploy experimental bootmanager code:
+
+* Insert breakpoints in the bootmanager code
+* turn on `BREAKPOINT_MODE = True` in `utils.py`
+* `make sync`
+
+Then
+
+ run nodedistro-f22 nodestate-safeboot
+ run reset-node ssh-node-debug
+ testnodedbg
+
+ cd /tmp/source
+ ./BootManager.py upgrade