Add test and remove debugging logs

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
This commit is contained in:
Dimitris Karakasilis
2023-09-28 15:08:16 +03:00
parent 968812dfbb
commit c58efaa623
4 changed files with 61 additions and 22 deletions

View File

@@ -3,13 +3,14 @@ package agent
import ( import (
"context" "context"
"fmt" "fmt"
"github.com/jaypipes/ghw/pkg/block"
"github.com/kairos-io/kairos-agent/v2/pkg/constants"
"os" "os"
"path/filepath" "path/filepath"
"github.com/jaypipes/ghw/pkg/block"
"github.com/kairos-io/kairos-agent/v2/pkg/constants"
"github.com/kairos-io/kairos-agent/v2/pkg/config" "github.com/kairos-io/kairos-agent/v2/pkg/config"
"github.com/kairos-io/kairos-agent/v2/pkg/utils/fs" fsutils "github.com/kairos-io/kairos-agent/v2/pkg/utils/fs"
v1mock "github.com/kairos-io/kairos-agent/v2/tests/mocks" v1mock "github.com/kairos-io/kairos-agent/v2/tests/mocks"
"github.com/twpayne/go-vfs" "github.com/twpayne/go-vfs"
"github.com/twpayne/go-vfs/vfst" "github.com/twpayne/go-vfs/vfst"
@@ -196,7 +197,7 @@ var _ = Describe("RunInstall", func() {
It("runs the install", func() { It("runs the install", func() {
Skip("Not ready yet") Skip("Not ready yet")
err = RunInstall(options) err = RunInstall(options, "") // TODO
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
}) })
}) })

View File

@@ -60,6 +60,11 @@ func Upgrade(
return err return err
} }
err = upgradeSpec.Sanitize()
if err != nil {
return err
}
upgradeAction := action.NewUpgradeAction(c, upgradeSpec) upgradeAction := action.NewUpgradeAction(c, upgradeSpec)
err = upgradeAction.Run() err = upgradeAction.Run()
@@ -105,9 +110,9 @@ func determineUpgradeImage(version string) (*v1.ImageSource, error) {
return v1.NewSrcFromURI(fmt.Sprintf("%s:%s", registry, version)) return v1.NewSrcFromURI(fmt.Sprintf("%s:%s", registry, version))
} }
// generateUpgradeConf creates a kairos configuration for `--source` and `--recovery` // generateConfForCLIArgs creates a kairos configuration for `--source` and `--recovery`
// command line arguments. It will be added to the rest of the configurations. // command line arguments. It will be added to the rest of the configurations.
func generateUpgradeConf(source string, upgradeRecovery bool) (string, error) { func generateConfForCLIArgs(source string, upgradeRecovery bool) (string, error) {
upgrade := map[string](map[string]interface{}){ upgrade := map[string](map[string]interface{}){
"upgrade": {}, "upgrade": {},
} }
@@ -193,13 +198,13 @@ func findLatestVersion(preReleases, force bool) (string, error) {
} }
func generateUpgradeSpec(version, source string, force, strictValidations bool, dirs []string, preReleases, upgradeRecovery bool) (*v1.UpgradeSpec, *config.Config, error) { func generateUpgradeSpec(version, source string, force, strictValidations bool, dirs []string, preReleases, upgradeRecovery bool) (*v1.UpgradeSpec, *config.Config, error) {
upgradeConf, err := generateUpgradeConf(source, upgradeRecovery) cliConf, err := generateConfForCLIArgs(source, upgradeRecovery)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
c, err := config.Scan(collector.Directories(dirs...), c, err := config.Scan(collector.Directories(dirs...),
collector.Readers(strings.NewReader(upgradeConf)), collector.Readers(strings.NewReader(cliConf)),
collector.StrictValidation(strictValidations)) collector.StrictValidation(strictValidations))
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
@@ -218,11 +223,5 @@ func generateUpgradeSpec(version, source string, force, strictValidations bool,
return nil, nil, err return nil, nil, err
} }
// Sanitize
err = upgradeSpec.Sanitize()
if err != nil {
return nil, nil, err
}
return upgradeSpec, c, nil return upgradeSpec, c, nil
} }

View File

@@ -0,0 +1,47 @@
package agent
import (
"fmt"
"os"
"path"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("generateUpgradeSpec", func() {
When("there are command line arguments", func() {
var configDir string
var upgradeRecovery bool
BeforeEach(func() {
upgradeRecovery = false
configDir, err := os.MkdirTemp("", "upgrade-test")
Expect(err).ToNot(HaveOccurred())
config := fmt.Sprintf(`upgrade:
recovery: %t
recovery-system:
uri: oci://image-in-conf
`, upgradeRecovery)
configFilePath := path.Join(configDir, "config.yaml")
err = os.WriteFile(configFilePath, []byte(config), os.ModePerm)
Expect(err).ToNot(HaveOccurred())
})
AfterEach(func() {
os.RemoveAll(configDir)
})
It("overrides kairos config yaml values", func() {
spec, _, err := generateUpgradeSpec("", "oci:myimage", false, false,
[]string{}, false, !upgradeRecovery)
Expect(err).ToNot(HaveOccurred())
Expect(spec.Active.Source.String()).To(Equal("oci://myimage:latest"))
Expect(spec.Recovery.Source.String()).To(Equal("oci://myimage:latest"))
Expect(spec.RecoveryUpgrade).To(Equal(!upgradeRecovery))
})
})
})

View File

@@ -544,8 +544,6 @@ func ReadUpgradeSpecFromConfig(c *Config) (*v1.UpgradeSpec, error) {
// ReadSpecFromCloudConfig returns a v1.Spec for the given spec // ReadSpecFromCloudConfig returns a v1.Spec for the given spec
func ReadSpecFromCloudConfig(r *Config, spec string) (v1.Spec, error) { func ReadSpecFromCloudConfig(r *Config, spec string) (v1.Spec, error) {
fmt.Printf("litter.Sdump(r) before = %+v\n", litter.Sdump(r))
var sp v1.Spec var sp v1.Spec
var err error var err error
@@ -563,8 +561,6 @@ func ReadSpecFromCloudConfig(r *Config, spec string) (v1.Spec, error) {
return nil, fmt.Errorf("failed initializing spec: %v", err) return nil, fmt.Errorf("failed initializing spec: %v", err)
} }
fmt.Printf("litter.Sdump(sp) before = %+v\n", litter.Sdump(sp))
// Load the config into viper from the raw cloud config string // Load the config into viper from the raw cloud config string
ccString, err := r.String() ccString, err := r.String()
if err != nil { if err != nil {
@@ -582,10 +578,6 @@ func ReadSpecFromCloudConfig(r *Config, spec string) (v1.Spec, error) {
r.Logger.Warnf("error unmarshalling %s Spec: %s", spec, err) r.Logger.Warnf("error unmarshalling %s Spec: %s", spec, err)
} }
fmt.Println("---------------------------------")
fmt.Printf("litter.Sdump(sp) after = %+v\n", litter.Sdump(sp))
fmt.Println("---------------------------------")
r.Logger.Debugf("Loaded %s spec: %s", spec, litter.Sdump(sp)) r.Logger.Debugf("Loaded %s spec: %s", spec, litter.Sdump(sp))
return sp, nil return sp, nil
} }