Skip to content

Commit

Permalink
Merge pull request #237 from kairos-io/after-install-hooks
Browse files Browse the repository at this point in the history
fix(after-install): run after-install hook after partitions are encrypted
  • Loading branch information
mudler authored Feb 27, 2024
2 parents 2e9c85e + 958ae93 commit 694add8
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
9 changes: 7 additions & 2 deletions internal/agent/hooks/hook.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ var AfterInstall = []Interface{
&GrubOptions{}, // Set custom GRUB options
&BundlePostInstall{},
&CustomMounts{},
&Kcrypt{},
&Lifecycle{}, // Handles poweroff/reboot by config options
}

Expand All @@ -31,10 +30,16 @@ var FirstBoot = []Interface{
}

// AfterUkiInstall sets which Hooks to run after uki runs the install action
var AfterUkiInstall = []Interface{
var AfterUkiInstall = []Interface{}

var UKIEncryptionHooks = []Interface{
&KcryptUKI{},
}

var EncryptionHooks = []Interface{
&Kcrypt{},
}

func Run(c config.Config, spec v1.Spec, hooks ...Interface) error {
for _, h := range hooks {
if err := h.Run(c, spec); err != nil {
Expand Down
12 changes: 9 additions & 3 deletions pkg/action/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,14 @@ package action

import (
"fmt"
hook "github.com/kairos-io/kairos-agent/v2/internal/agent/hooks"
"github.com/kairos-io/kairos-agent/v2/pkg/config"
events "github.com/kairos-io/kairos-sdk/bus"
"path/filepath"
"strings"
"time"

hook "github.com/kairos-io/kairos-agent/v2/internal/agent/hooks"
"github.com/kairos-io/kairos-agent/v2/pkg/config"
events "github.com/kairos-io/kairos-sdk/bus"

cnst "github.com/kairos-io/kairos-agent/v2/pkg/constants"
"github.com/kairos-io/kairos-agent/v2/pkg/elemental"
v1 "github.com/kairos-io/kairos-agent/v2/pkg/types/v1"
Expand Down Expand Up @@ -252,6 +253,11 @@ func (i InstallAction) Run() (err error) {
return err
}

err = hook.Run(*i.cfg, i.spec, hook.EncryptionHooks...)
if err != nil {
return err
}

err = i.installHook(cnst.AfterInstallHook, false)
if err != nil {
return err
Expand Down
5 changes: 5 additions & 0 deletions pkg/uki/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,11 @@ func (i *InstallAction) Run() (err error) {
return fmt.Errorf("removing artifact set with role %s: %w", UnassignedArtifactRole, err)
}

err = hook.Run(*i.cfg, i.spec, hook.UKIEncryptionHooks...)
if err != nil {
return err
}

// after install hook happens after install (this is for compatibility with normal install, so users can reuse their configs)
err = Hook(i.cfg, constants.AfterInstallHook)
if err != nil {
Expand Down

0 comments on commit 694add8

Please sign in to comment.