in pkg/node/manager/manager.go [169:225]
func (m *manager) AddNode(nodeName string) error {
m.lock.Lock()
defer m.lock.Unlock()
k8sNode, err := m.wrapper.K8sAPI.GetNode(nodeName)
if err != nil {
return fmt.Errorf("failed to add node %s, doesn't exist in cache anymore", nodeName)
}
log := m.Log.WithValues("node name", k8sNode.Name, "request", "add")
var newNode node.Node
var nodeFound bool
_, nodeFound = m.dataStore[k8sNode.Name]
if nodeFound {
log.Info("node is already processed, not processing add event again")
return nil
}
if err = m.CreateCNINodeIfNotExisting(k8sNode); err != nil {
m.Log.Error(err, "Failed to create CNINode for k8sNode", "NodeName", k8sNode.Name)
return err
}
shouldManage, err := m.isSelectedForManagement(k8sNode)
if err != nil {
return err
}
var op AsyncOperation
if shouldManage {
newNode = node.NewManagedNode(m.Log, k8sNode.Name, GetNodeInstanceID(k8sNode),
GetNodeOS(k8sNode), m.wrapper.K8sAPI, m.wrapper.EC2API)
err := m.updateSubnetIfUsingENIConfig(newNode, k8sNode)
if err != nil {
return err
}
m.dataStore[k8sNode.Name] = newNode
log.Info("node added as a managed node")
op = Init
} else {
newNode = node.NewUnManagedNode(m.Log, k8sNode.Name, GetNodeInstanceID(k8sNode),
GetNodeOS(k8sNode))
m.dataStore[k8sNode.Name] = newNode
log.V(1).Info("node added as an un-managed node")
return nil
}
m.worker.SubmitJob(AsyncOperationJob{
op: op,
node: newNode,
nodeName: nodeName,
})
return nil
}