Replacing a node's FQDN
Sometimes, a node's FQDN changes, but the node itself remains in the system under a different name. Simply changing the node name in the hosts section will not work because BS_CONTROLLER internally stores the resource bindings to the FQDN:IcPort pairs, where IcPort is the Interconnect port number on which the node operates.
Replacement procedure
- Determine the NodeId of the node to be replaced.
 - Prepare the DefineBox command that describes the cluster resources, in which an element 
EnforcedNodeId: <NodeId>will be added for the resources of the node to be replaced. - Execute this command.
 - Replace the FQDN in the hosts list in 
cluster.yaml. - Perform a rolling restart.
 - Remove the EnforcedNodeId field from DefineBox and replace the Fqdn with the new node name.
 - Execute DefineBox with the new values.
 
Example
Suppose a cluster consisting of three nodes:
config.yaml:
- host: host1.my.sub.net
  node_id: 1
  location: {unit: 12345, data_center: MYDC, rack: r1}
- host: host2.my.sub.net
  node_id: 2
  location: {unit: 23456, data_center: MYDC, rack: r2}
- host: host3.my.sub.net
  node_id: 3
  location: {unit: 34567, data_center: MYDC, rack: r3}
        
    DefineBox looks like this:
DefineBox {
    BoxId: 1
    Host { Key { Fqdn: "host1.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
    Host { Key { Fqdn: "host2.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
    Host { Key { Fqdn: "host3.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
}
        
    Suppose we want to rename host1.my.sub.net to host4.my.sub.net. First, we create a DefineBox as follows:
DefineBox {
    BoxId: 1
    Host { Key { Fqdn: "host1.my.sub.net" IcPort: 19001 } HostConfigId: 1 EnforcedNodeId: 1 }
    Host { Key { Fqdn: "host2.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
    Host { Key { Fqdn: "host3.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
}
        
    Then modify config.yaml:
- host: host4.my.sub.net
  node_id: 1
  location: {unit: 12345, data_center: MYDC, rack: r1}
- host: host2.my.sub.net
  node_id: 2
  location: {unit: 23456, data_center: MYDC, rack: r2}
- host: host3.my.sub.net
  node_id: 3
  location: {unit: 34567, data_center: MYDC, rack: r3}
        
    Next, perform a rolling restart of the cluster.
Finally, perform the second adjusted DefineBox:
DefineBox {
    BoxId: 1
    Host { Key { Fqdn: "host4.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
    Host { Key { Fqdn: "host2.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
    Host { Key { Fqdn: "host3.my.sub.net" IcPort: 19001 } HostConfigId: 1 }
}