sparkles: state api sdk (#262)

*  Add state api

This is related to https://github.com/kairos-io/kairos/issues/34.

Starts to unify the API to retrieve the state in the sdk to have a common place to query system status information.

* 🤖 Add test

* Update go.mod

* ⚙️ Fine-tune detection of partitions

* 🤖 Add more fine-grained tests

* 🎨 Add /dev/ to partition name

* 🤖 Fixup tests

* ⚙️ Remount accessors

*  Add state partition to cloud-init paths

* 📝 Upper case Kairos in motd

* 🎨 Add mounts sdk

* 🎨 Set grub options via SDK

* 🎨 Make it more idiomatic
This commit is contained in:
Ettore Di Giacinto
2022-10-23 20:22:32 +02:00
committed by Itxaka
parent 5c4e29f3d3
commit 5893294c54
3 changed files with 7 additions and 17 deletions

View File

@@ -12,12 +12,12 @@ func (b BundleOption) Run(c config.Config) error {
machine.Mount("COS_PERSISTENT", "/usr/local") //nolint:errcheck machine.Mount("COS_PERSISTENT", "/usr/local") //nolint:errcheck
defer func() { defer func() {
machine.Umount("/usr/local") machine.Umount("/usr/local") //nolint:errcheck
}() }()
machine.Mount("COS_OEM", "/oem") //nolint:errcheck machine.Mount("COS_OEM", "/oem") //nolint:errcheck
defer func() { defer func() {
machine.Umount("/oem") machine.Umount("/oem") //nolint:errcheck
}() }()
opts := c.Install.Bundles.Options() opts := c.Install.Bundles.Options()

View File

@@ -4,25 +4,15 @@ import (
"fmt" "fmt"
config "github.com/kairos-io/kairos/pkg/config" config "github.com/kairos-io/kairos/pkg/config"
"github.com/kairos-io/kairos/pkg/machine" "github.com/kairos-io/kairos/sdk/system"
"github.com/kairos-io/kairos/pkg/utils"
) )
type GrubOptions struct{} type GrubOptions struct{}
func (b GrubOptions) Run(c config.Config) error { func (b GrubOptions) Run(c config.Config) error {
err := system.Apply(system.SetGRUBOptions(c.Install.GrubOptions))
machine.Mount("COS_OEM", "/tmp/oem") //nolint:errcheck if err != nil {
defer func() { fmt.Println(err)
machine.Umount("/tmp/oem")
}()
for k, v := range c.Install.GrubOptions {
out, err := utils.SH(fmt.Sprintf(`grub2-editenv /tmp/oem/grubenv set "%s=%s"`, k, v))
if err != nil {
fmt.Printf("could not set boot option: %s\n", out+err.Error())
return nil // do not error out
}
} }
return nil return nil
} }

View File

@@ -21,7 +21,7 @@ func (k Kcrypt) Run(c config.Config) error {
machine.Mount("COS_OEM", "/oem") //nolint:errcheck machine.Mount("COS_OEM", "/oem") //nolint:errcheck
defer func() { defer func() {
machine.Umount("/oem") machine.Umount("/oem") //nolint:errcheck
}() }()
_ = os.MkdirAll("/oem/system/discovery", 0650) _ = os.MkdirAll("/oem/system/discovery", 0650)