Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 16 additions & 12 deletions pkg/daemon/daemon.go
Original file line number Diff line number Diff line change
Expand Up @@ -598,7 +598,7 @@ func (dn *Daemon) CheckStateOnBoot() error {
} else {
// currentConfig != desiredConfig, and we're not booting up into the desiredConfig.
// Kick off an update.
if err := dn.triggerUpdateWithMachineConfig(state.desiredConfig); err != nil {
if err := dn.triggerUpdateWithMachineConfig(state.currentConfig, state.desiredConfig); err != nil {
return err
}
}
Expand Down Expand Up @@ -706,7 +706,7 @@ func (dn *Daemon) prepUpdateFromCluster() (bool, error) {
// you want both pulled from the cluster please use executeUpdateFromCluster().
func (dn *Daemon) executeUpdateFromClusterWithMachineConfig(desiredConfig *mcfgv1.MachineConfig) error {
// The desired machine config has changed, trigger update
if err := dn.triggerUpdateWithMachineConfig(desiredConfig); err != nil {
if err := dn.triggerUpdateWithMachineConfig(nil, desiredConfig); err != nil {
return err
}

Expand Down Expand Up @@ -739,21 +739,24 @@ func (dn *Daemon) completeUpdate(desiredConfigName string) error {
return nil
}

// triggerUpdateWithMachineConfig starts the update using the desired config and queries the cluster for
// the current config.
func (dn *Daemon) triggerUpdateWithMachineConfig(desiredConfig *mcfgv1.MachineConfig) error {
// triggerUpdateWithMachineConfig starts the update. It queries the cluster for
// the current and desired config if they weren't passed.
func (dn *Daemon) triggerUpdateWithMachineConfig(currentConfig *mcfgv1.MachineConfig, desiredConfig *mcfgv1.MachineConfig) error {
if err := dn.nodeWriter.SetUpdateWorking(dn.kubeClient.CoreV1().Nodes(), dn.name); err != nil {
return err
}

ccAnnotation, err := getNodeAnnotation(dn.kubeClient.CoreV1().Nodes(), dn.name, CurrentMachineConfigAnnotationKey)
if err != nil {
return err
}
currentConfig, err := getMachineConfig(dn.client.MachineconfigurationV1().MachineConfigs(), ccAnnotation)
if err != nil {
return err
if currentConfig == nil {
ccAnnotation, err := getNodeAnnotation(dn.kubeClient.CoreV1().Nodes(), dn.name, CurrentMachineConfigAnnotationKey)
if err != nil {
return err
}
currentConfig, err = getMachineConfig(dn.client.MachineconfigurationV1().MachineConfigs(), ccAnnotation)
if err != nil {
return err
}
}

if desiredConfig == nil {
dcAnnotation, err := getNodeAnnotation(dn.kubeClient.CoreV1().Nodes(), dn.name, DesiredMachineConfigAnnotationKey)
if err != nil {
Expand All @@ -764,6 +767,7 @@ func (dn *Daemon) triggerUpdateWithMachineConfig(desiredConfig *mcfgv1.MachineCo
return err
}
}

// run the update process. this function doesn't currently return.
return dn.update(currentConfig, desiredConfig)
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/daemon/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func (dn *Daemon) update(oldConfig, newConfig *mcfgv1.MachineConfig) error {
// TODO: Change the logic to be clearer
// We need to skip draining of the node when we are running once
// and there is no cluster.
if dn.onceFrom != "" && !ValidPath(dn.onceFrom) {
if dn.onceFrom == "" {
glog.Info("Update prepared; draining the node")

node, err := dn.kubeClient.CoreV1().Nodes().Get(dn.name, metav1.GetOptions{})
Expand Down