func()

in projects/aws/upgrader/upgrade/containerd.go [14:53]


func (u *InPlaceUpgrader) ContainerdUpgrade(ctx context.Context) error {
	cmpDir, err := u.upgradeComponentsBinDir()
	if err != nil {
		return fmt.Errorf("getting upgrade components binary directory: %v", err)
	}

	containerdVersionCmd := []string{"containerd", "--version"}
	out, err := u.ExecCommand(ctx, containerdVersionCmd[0], containerdVersionCmd[1:]...)
	if err != nil {
		return execError(containerdVersionCmd, string(out))
	}
	logger.Info("current version of containerd", "version", string(out))

	cpCmd := []string{"cp", "-rf", fmt.Sprintf("%s/containerd/.", cmpDir), "/"}
	out, err = u.ExecCommand(ctx, cpCmd[0], cpCmd[1:]...)
	if err != nil {
		return execError(cpCmd, string(out))
	}

	version, err := u.ExecCommand(ctx, containerdVersionCmd[0], containerdVersionCmd[1:]...)
	if err != nil {
		return execError(containerdVersionCmd, string(version))
	}

	daemonReloadCmd := []string{"systemctl", "daemon-reload"}
	out, err = u.ExecCommand(ctx, daemonReloadCmd[0], daemonReloadCmd[1:]...)
	if err != nil {
		return execError(daemonReloadCmd, string(out))
	}

	containerdRestartCmd := []string{"systemctl", "restart", "containerd"}
	out, err = u.ExecCommand(ctx, containerdRestartCmd[0], containerdRestartCmd[1:]...)
	if err != nil {
		return execError(containerdRestartCmd, string(out))
	}

	logger.Info("containerd version on the node", "version", string(version))
	logger.Info("containerd upgrade successful!")
	return nil
}