initialize: only restart networkd once per config
Regression introduced by 9fcf338bf3.
Networkd was erroneously being restarted once per network unit. It
should only restart once for the entire config.
			
			
This commit is contained in:
		| @@ -313,6 +313,7 @@ func processUnits(units []system.Unit, root string, um system.UnitManager) error | ||||
| 	} | ||||
| 	actions := make([]action, 0, len(units)) | ||||
| 	reload := false | ||||
| 	restartNetworkd := false | ||||
| 	for _, unit := range units { | ||||
| 		dst := unit.Destination(root) | ||||
| 		if unit.Content != "" { | ||||
| @@ -349,7 +350,7 @@ func processUnits(units []system.Unit, root string, um system.UnitManager) error | ||||
| 		} | ||||
|  | ||||
| 		if unit.Group() == "network" { | ||||
| 			actions = append(actions, action{"systemd-networkd.service", "restart"}) | ||||
| 			restartNetworkd = true | ||||
| 		} else if unit.Command != "" { | ||||
| 			actions = append(actions, action{unit.Name, unit.Command}) | ||||
| 		} | ||||
| @@ -361,6 +362,10 @@ func processUnits(units []system.Unit, root string, um system.UnitManager) error | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if restartNetworkd { | ||||
| 		actions = append(actions, action{"systemd-networkd.service", "restart"}) | ||||
| 	} | ||||
|  | ||||
| 	for _, action := range actions { | ||||
| 		log.Printf("Calling unit command '%s %s'", action.command, action.unit) | ||||
| 		res, err := um.RunUnitCommand(action.command, action.unit) | ||||
|   | ||||
| @@ -384,10 +384,15 @@ type TestUnitManager struct { | ||||
| 	enabled  []string | ||||
| 	masked   []string | ||||
| 	unmasked []string | ||||
| 	commands map[string]string | ||||
| 	commands []UnitAction | ||||
| 	reload   bool | ||||
| } | ||||
|  | ||||
| type UnitAction struct { | ||||
| 	unit    string | ||||
| 	command string | ||||
| } | ||||
|  | ||||
| func (tum *TestUnitManager) PlaceUnit(unit *system.Unit, dst string) error { | ||||
| 	tum.placed = append(tum.placed, unit.Name) | ||||
| 	return nil | ||||
| @@ -397,8 +402,7 @@ func (tum *TestUnitManager) EnableUnitFile(unit string, runtime bool) error { | ||||
| 	return nil | ||||
| } | ||||
| func (tum *TestUnitManager) RunUnitCommand(command, unit string) (string, error) { | ||||
| 	tum.commands = make(map[string]string) | ||||
| 	tum.commands[unit] = command | ||||
| 	tum.commands = append(tum.commands, UnitAction{unit, command}) | ||||
| 	return "", nil | ||||
| } | ||||
| func (tum *TestUnitManager) DaemonReload() error { | ||||
| @@ -438,7 +442,7 @@ func TestProcessUnits(t *testing.T) { | ||||
| 	if err := processUnits(units, "", tum); err != nil { | ||||
| 		t.Fatalf("unexpected error calling processUnits: %v", err) | ||||
| 	} | ||||
| 	if _, ok := tum.commands["systemd-networkd.service"]; !ok { | ||||
| 	if len(tum.commands) != 1 || (tum.commands[0] != UnitAction{"systemd-networkd.service", "restart"}) { | ||||
| 		t.Errorf("expected systemd-networkd.service to be reloaded!") | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user