fixup! update

This commit is contained in:
Adrian Stobbe 2023-07-17 12:10:10 +02:00
parent 3e0f872f41
commit b361055138
7 changed files with 24 additions and 10 deletions

View File

@ -110,8 +110,11 @@ func (u *upgradeApplyCmd) upgradeApply(cmd *cobra.Command, fileHandler file.Hand
if err := u.upgradeAttestConfigIfDiff(cmd, conf.GetAttestationConfig(), flags); err != nil {
return fmt.Errorf("upgrading measurements: %w", err)
}
migrateIAM := getIAMMigrateCmd(cmd, u.upgrader.GetTerraformUpgrader(), conf, flags, u.upgrader.GetUpgradeID())
tfClient, err := u.upgrader.GetTerraformUpgrader(cmd.Context(), constants.TerraformIAMUpgradeWorkingDir)
if err != nil {
return fmt.Errorf("getting terraform client: %w", err)
}
migrateIAM := getIAMMigrateCmd(cmd, tfClient, conf, flags, u.upgrader.GetUpgradeID())
if err := u.executeMigration(cmd, fileHandler, migrateIAM, flags); err != nil {
return fmt.Errorf("executing IAM migration: %w", err)
}
@ -232,6 +235,7 @@ func getIAMMigrateCmd(cmd *cobra.Command, tfClient *terraform.Client, conf *conf
}
func (u *upgradeApplyCmd) executeMigration(cmd *cobra.Command, file file.Handler, migrateCmd terraform.MigrationCmd, flags upgradeApplyFlags) error {
u.log.Debugf("Executing %s", migrateCmd.String())
hasDiff, err := migrateCmd.Plan(cmd.Context()) // u.upgrader.PlanTerraformMigrations(cmd.Context(), opts)
if err != nil {
return fmt.Errorf("planning terraform migrations: %w", err)
@ -253,7 +257,6 @@ func (u *upgradeApplyCmd) executeMigration(cmd *cobra.Command, file file.Handler
}
}
u.log.Debugf("Applying Terraform %s migrations", migrateCmd.String())
// .ApplyMigration()
err := migrateCmd.Apply(cmd.Context(), file) // u.upgrader.ApplyTerraformMigrations(cmd.Context(), file, opts)
if err != nil {
return fmt.Errorf("applying terraform migrations: %w", err)
@ -506,7 +509,7 @@ type cloudUpgrader interface {
CheckTerraformMigrations(fileHandler file.Handler) error
CleanUpTerraformMigrations(fileHandler file.Handler) error
AddManualStateMigration(migration terraform.StateMigration)
GetTerraformUpgrader() *terraform.Client
GetTerraformUpgrader(ctx context.Context, terraformDir string) (*terraform.Client, error)
GetUpgradeID() string
}

View File

@ -153,8 +153,12 @@ func NewUpgrader(ctx context.Context, outWriter io.Writer, log debugLog, upgrade
return u, nil
}
func (u *Upgrader) GetTerraformUpgrader() *terraform.Client {
return u.tfClient
func (u *Upgrader) GetTerraformUpgrader(ctx context.Context, terraformDir string) (*terraform.Client, error) {
tfClient, err := terraform.New(ctx, filepath.Join(constants.UpgradeDir, u.upgradeID, terraformDir))
if err != nil {
return nil, fmt.Errorf("setting up terraform client: %w", err)
}
return tfClient, nil
}
func (u *Upgrader) GetUpgradeID() string {

View File

@ -95,6 +95,7 @@ go_library(
go_test(
name = "terraform_test",
srcs = [
"iammigrate_test.go",
"loader_test.go",
"terraform_test.go",
"variables_test.go",

View File

@ -54,11 +54,12 @@ func (c *IAMMigrateCmd) String() string {
}
func (c *IAMMigrateCmd) Plan(ctx context.Context) (bool, error) {
templateDir := filepath.Join("terraform", "iam", strings.ToLower(c.csp.String()))
err := c.tf.PrepareIAMUpgradeWorkspace(
filepath.Join("terraform", "iam", strings.ToLower(c.csp.String())),
templateDir,
constants.TerraformIAMWorkingDir,
filepath.Join(constants.UpgradeDir, c.upgradeID, constants.TerraformIAMUpgradeWorkingDir),
filepath.Join(constants.UpgradeDir, c.upgradeID, constants.TerraformUpgradeBackupDir), // TODO: use IAM backup dir
filepath.Join(constants.UpgradeDir, c.upgradeID, constants.TerraformIAMUpgradeBackupDir), // TODO: use IAM backup dir
)
if err != nil {
return false, fmt.Errorf("preparing terraform workspace: %w", err)
@ -66,7 +67,7 @@ func (c *IAMMigrateCmd) Plan(ctx context.Context) (bool, error) {
hasDiff, err := c.tf.Plan(ctx, c.logLevel, constants.TerraformUpgradePlanFile)
if err != nil {
return false, fmt.Errorf("terraform plan: %w", err)
return false, fmt.Errorf("terraform plan 1: %w", err)
}
if hasDiff {

View File

@ -70,6 +70,10 @@ func TestIAMMigrate(t *testing.T) {
res, err = fs.Stat(filepath.Join(constants.UpgradeDir, upgradeID, constants.TerraformIAMUpgradeWorkingDir))
assert.Error(t, err)
assert.Nil(t, res)
res, err = fs.Stat(filepath.Join(constants.UpgradeDir, upgradeID, constants.TerraformUpgradeBackupDir))
assert.Error(t, err)
assert.Nil(t, res)
}
type tfClientStub struct {

View File

@ -8,7 +8,6 @@ go_library(
deps = [
"//cli/internal/terraform",
"//cli/internal/upgrade",
"//internal/cloud/cloudprovider",
"//internal/constants",
],
)

View File

@ -158,6 +158,8 @@ const (
TerraformIAMUpgradeWorkingDir = "terraform-iam"
// TerraformUpgradeBackupDir is the directory name being used to backup the pre-upgrade state in an upgrade.
TerraformUpgradeBackupDir = "terraform-backup"
// TerraformIAMUpgradeBackupDir is the directory name being used to backup the pre-upgrade state of iam in an upgrade.
TerraformIAMUpgradeBackupDir = "terraform-iam-backup"
// TerraformMigrationOutputFile is the file name of the output file created by a successful Terraform migration.
TerraformMigrationOutputFile = "terraform-migration-output.json"
// UpgradeDir is the name of the directory being used for cluster upgrades.