in internal/onetime/configureinstance/configurex4.go [45:102]
func (c *ConfigureInstance) configureX4(ctx context.Context) (bool, error) {
log.CtxLogger(ctx).Info("Continuing with general X4 configurations.")
rebootSystemdSystem, err := c.checkAndRegenerateLines(ctx, "/etc/systemd/system.conf", systemConf)
if err != nil {
return false, err
}
rebootSystemdLogin, err := c.removeLines(ctx, "/etc/systemd/logind.conf", logindConf)
if err != nil {
return false, err
}
rebootModprobe, err := c.checkAndRegenerateFile(ctx, "/etc/modprobe.d/google-x4.conf", modprobeConf)
if err != nil {
return false, err
}
if rebootModprobe && c.Apply {
log.CtxLogger(ctx).Info("Regenerating modprobe by running 'usr/bin/dracut --force'.")
if res := c.ExecuteFunc(ctx, commandlineexecutor.Params{Executable: "usr/bin/dracut", ArgsToSplit: "--force", Timeout: c.TimeoutSec}); res.ExitCode != 0 {
return false, fmt.Errorf("'usr/bin/dracut --force' failed, code: %d, stderr: %s", res.ExitCode, res.StdErr)
}
}
if c.HyperThreading == hyperThreadingOff {
log.CtxLogger(ctx).Infow("Hyper threading disabled, appending 'nosmt' to 'GRUB_CMDLINE_LINUX_DEFAULT'.", "machineType", c.MachineType, "hyperThreading", c.HyperThreading)
grubLinuxDefault = strings.TrimSuffix(grubLinuxDefault, `"`) + ` nosmt"`
}
rebootGrub, err := c.checkAndRegenerateLines(ctx, "/etc/default/grub", []string{grubLinuxDefault})
if err != nil {
return false, err
}
if c.HyperThreading == hyperThreadingOn {
log.CtxLogger(ctx).Infow("Hyper threading enabled, ensuring 'nosmt' is removed from 'GRUB_CMDLINE_LINUX_DEFAULT'.", "machineType", c.MachineType, "hyperThreading", c.HyperThreading)
removeNosmt, err := c.removeValues(ctx, "/etc/default/grub", []string{"GRUB_CMDLINE_LINUX_DEFAULT=nosmt"})
if err != nil {
return false, err
}
rebootGrub = rebootGrub || removeNosmt
}
if rebootGrub {
if c.Check {
log.CtxLogger(ctx).Info("Run 'configureinstance -apply' to regenerate grub.")
} else {
log.CtxLogger(ctx).Info("Regenerating grub by running 'grub2-mkconfig'.")
if res := c.ExecuteFunc(ctx, commandlineexecutor.Params{Executable: "grub2-mkconfig", ArgsToSplit: "-o /boot/grub2/grub.cfg", Timeout: c.TimeoutSec}); res.ExitCode != 0 {
return false, fmt.Errorf("'grub2-mkconfig -o /boot/grub2/grub.cfg' failed, code: %d, stderr: %s", res.ExitCode, res.StdErr)
}
}
}
log.CtxLogger(ctx).Info("General X4 configurations complete.")
rebootSLES, err := c.configureX4SLES(ctx)
if err != nil {
return false, fmt.Errorf("general X4 configurations completed, OS specific configurations failed: %v", err)
}
rebootRHEL, err := c.configureX4RHEL(ctx)
if err != nil {
return false, fmt.Errorf("general X4 configurations completed, OS specific configurations failed: %v", err)
}
return rebootSLES || rebootRHEL || rebootSystemdSystem || rebootSystemdLogin || rebootModprobe || rebootGrub, nil
}