WIP: Initial stab at secrets/configs/images
This commit is contained in:
		| @ -22,6 +22,7 @@ import ( | |||||||
| 	"coopcloud.tech/abra/pkg/upstream/stack" | 	"coopcloud.tech/abra/pkg/upstream/stack" | ||||||
| 	dockerClient "github.com/docker/docker/client" | 	dockerClient "github.com/docker/docker/client" | ||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
|  | 	"github.com/docker/docker/api/types" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // translators: `abra app deploy` aliases. use a comma separated list of aliases with | // translators: `abra app deploy` aliases. use a comma separated list of aliases with | ||||||
| @ -191,15 +192,49 @@ checkout as-is. Recipe commit hashes are also supported as values for | |||||||
| 			deployedVersion = deployMeta.Version | 			deployedVersion = deployMeta.Version | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		filters, err := app.Filters(false, false) | ||||||
|  | 		if err != nil { | ||||||
|  | 			log.Fatal(err) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		secretList, err := cl.SecretList(context.Background(), types.SecretListOptions{Filters: filters}) | ||||||
|  | 		if err != nil { | ||||||
|  | 			log.Fatal(err) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		var secretStrings []string | ||||||
|  | 		for _, cont := range secretList { | ||||||
|  | 			secretStrings = append(secretStrings, cont.Spec.Name) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		configList, err := cl.ConfigList(context.Background(), types.ConfigListOptions{Filters: filters}) | ||||||
|  | 		if err != nil { | ||||||
|  | 			log.Fatal(err) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		var configStrings []string | ||||||
|  | 		for _, config := range configList { | ||||||
|  | 			configStrings = append(configStrings, config.Spec.Name) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		var imageStrings []string | ||||||
|  | 		for _, service := range compose.Services { | ||||||
|  | 			imageStrings = append(imageStrings, service.Image) | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		if err := internal.DeployOverview( | 		if err := internal.DeployOverview( | ||||||
| 			app, | 			app, | ||||||
| 			deployedVersion, | 			deployedVersion, | ||||||
| 			toDeployVersion, | 			toDeployVersion, | ||||||
| 			"", | 			"", | ||||||
| 			deployWarnMessages, | 			deployWarnMessages, | ||||||
|  | 			strings.Join(secretStrings, "\n"), | ||||||
|  | 			strings.Join(configStrings, "\n"), | ||||||
|  | 			strings.Join(imageStrings, "\n"), | ||||||
| 		); err != nil { | 		); err != nil { | ||||||
| 			log.Fatal(err) | 			log.Fatal(err) | ||||||
| 		} | 		} | ||||||
|  | 		return | ||||||
|  |  | ||||||
| 		stack.WaitTimeout, err = appPkg.GetTimeoutFromLabel(compose, stackName) | 		stack.WaitTimeout, err = appPkg.GetTimeoutFromLabel(compose, stackName) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| package app | package app | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"context" | ||||||
| 	"errors" | 	"errors" | ||||||
| 	"strings" | 	"strings" | ||||||
|  |  | ||||||
| @ -19,6 +20,7 @@ import ( | |||||||
| 	"coopcloud.tech/abra/pkg/client" | 	"coopcloud.tech/abra/pkg/client" | ||||||
| 	"coopcloud.tech/abra/pkg/log" | 	"coopcloud.tech/abra/pkg/log" | ||||||
| 	"github.com/AlecAivazis/survey/v2" | 	"github.com/AlecAivazis/survey/v2" | ||||||
|  | 	"github.com/docker/docker/api/types" | ||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @ -190,6 +192,36 @@ beforehand. See "abra app backup" for more.`), | |||||||
| 		} | 		} | ||||||
| 		appPkg.SetUpdateLabel(compose, stackName, app.Env) | 		appPkg.SetUpdateLabel(compose, stackName, app.Env) | ||||||
|  |  | ||||||
|  | 		filters, err := app.Filters(false, false) | ||||||
|  | 		if err != nil { | ||||||
|  | 			log.Fatal(err) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		secretList, err := cl.SecretList(context.Background(), types.SecretListOptions{Filters: filters}) | ||||||
|  | 		if err != nil { | ||||||
|  | 			log.Fatal(err) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		var secretStrings []string | ||||||
|  | 		for _, cont := range secretList { | ||||||
|  | 			secretStrings = append(secretStrings, cont.Spec.Name) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		configList, err := cl.ConfigList(context.Background(), types.ConfigListOptions{Filters: filters}) | ||||||
|  | 		if err != nil { | ||||||
|  | 			log.Fatal(err) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		var configStrings []string | ||||||
|  | 		for _, config := range configList { | ||||||
|  | 			configStrings = append(configStrings, config.Spec.Name) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		var imageStrings []string | ||||||
|  | 		for _, service := range compose.Services { | ||||||
|  | 			imageStrings = append(imageStrings, service.Image) | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		// NOTE(d1): no release notes implemeneted for rolling back | 		// NOTE(d1): no release notes implemeneted for rolling back | ||||||
| 		if err := internal.DeployOverview( | 		if err := internal.DeployOverview( | ||||||
| 			app, | 			app, | ||||||
| @ -197,6 +229,9 @@ beforehand. See "abra app backup" for more.`), | |||||||
| 			chosenDowngrade, | 			chosenDowngrade, | ||||||
| 			"", | 			"", | ||||||
| 			downgradeWarnMessages, | 			downgradeWarnMessages, | ||||||
|  | 			strings.Join(secretStrings, "\n"), | ||||||
|  | 			strings.Join(configStrings, "\n"), | ||||||
|  | 			strings.Join(imageStrings, "\n"), | ||||||
| 		); err != nil { | 		); err != nil { | ||||||
| 			log.Fatal(err) | 			log.Fatal(err) | ||||||
| 		} | 		} | ||||||
|  | |||||||
| @ -71,6 +71,9 @@ Passing "--prune/-p" does not remove those volumes.`), | |||||||
| 			config.NO_DOMAIN_DEFAULT, | 			config.NO_DOMAIN_DEFAULT, | ||||||
| 			"", | 			"", | ||||||
| 			nil, | 			nil, | ||||||
|  | 			"", | ||||||
|  | 			"", | ||||||
|  | 			"", | ||||||
| 		); err != nil { | 		); err != nil { | ||||||
| 			log.Fatal(err) | 			log.Fatal(err) | ||||||
| 		} | 		} | ||||||
|  | |||||||
| @ -21,6 +21,7 @@ import ( | |||||||
| 	stack "coopcloud.tech/abra/pkg/upstream/stack" | 	stack "coopcloud.tech/abra/pkg/upstream/stack" | ||||||
| 	"coopcloud.tech/tagcmp" | 	"coopcloud.tech/tagcmp" | ||||||
| 	"github.com/AlecAivazis/survey/v2" | 	"github.com/AlecAivazis/survey/v2" | ||||||
|  | 	"github.com/docker/docker/api/types" | ||||||
| 	dockerClient "github.com/docker/docker/client" | 	dockerClient "github.com/docker/docker/client" | ||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
| ) | ) | ||||||
| @ -216,6 +217,36 @@ beforehand. See "abra app backup" for more.`), | |||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		filters, err := app.Filters(false, false) | ||||||
|  | 		if err != nil { | ||||||
|  | 			log.Fatal(err) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		secretList, err := cl.SecretList(context.Background(), types.SecretListOptions{Filters: filters}) | ||||||
|  | 		if err != nil { | ||||||
|  | 			log.Fatal(err) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		var secretStrings []string | ||||||
|  | 		for _, cont := range secretList { | ||||||
|  | 			secretStrings = append(secretStrings, cont.Spec.Name) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		configList, err := cl.ConfigList(context.Background(), types.ConfigListOptions{Filters: filters}) | ||||||
|  | 		if err != nil { | ||||||
|  | 			log.Fatal(err) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		var configStrings []string | ||||||
|  | 		for _, config := range configList { | ||||||
|  | 			configStrings = append(configStrings, config.Spec.Name) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		var imageStrings []string | ||||||
|  | 		for _, service := range compose.Services { | ||||||
|  | 			imageStrings = append(imageStrings, service.Image) | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		if showReleaseNotes { | 		if showReleaseNotes { | ||||||
| 			fmt.Print(upgradeReleaseNotes) | 			fmt.Print(upgradeReleaseNotes) | ||||||
| 			return | 			return | ||||||
| @ -234,6 +265,9 @@ beforehand. See "abra app backup" for more.`), | |||||||
| 			chosenUpgrade, | 			chosenUpgrade, | ||||||
| 			upgradeReleaseNotes, | 			upgradeReleaseNotes, | ||||||
| 			upgradeWarnMessages, | 			upgradeWarnMessages, | ||||||
|  | 			strings.Join(secretStrings, "\n"), | ||||||
|  | 			strings.Join(configStrings, "\n"), | ||||||
|  | 			strings.Join(imageStrings, "\n"), | ||||||
| 		); err != nil { | 		); err != nil { | ||||||
| 			log.Fatal(err) | 			log.Fatal(err) | ||||||
| 		} | 		} | ||||||
|  | |||||||
| @ -50,6 +50,9 @@ func DeployOverview( | |||||||
| 	toDeployVersion string, | 	toDeployVersion string, | ||||||
| 	releaseNotes string, | 	releaseNotes string, | ||||||
| 	warnMessages []string, | 	warnMessages []string, | ||||||
|  | 	secrets string, | ||||||
|  | 	configs string, | ||||||
|  | 	images string, | ||||||
| ) error { | ) error { | ||||||
| 	deployConfig := "compose.yml" | 	deployConfig := "compose.yml" | ||||||
| 	if composeFiles, ok := app.Env["COMPOSE_FILE"]; ok { | 	if composeFiles, ok := app.Env["COMPOSE_FILE"]; ok { | ||||||
| @ -80,6 +83,10 @@ func DeployOverview( | |||||||
| 		{i18n.G("CURRENT DEPLOYMENT"), formatter.BoldDirtyDefault(deployedVersion)}, | 		{i18n.G("CURRENT DEPLOYMENT"), formatter.BoldDirtyDefault(deployedVersion)}, | ||||||
| 		{i18n.G("ENV VERSION"), formatter.BoldDirtyDefault(envVersion)}, | 		{i18n.G("ENV VERSION"), formatter.BoldDirtyDefault(envVersion)}, | ||||||
| 		{i18n.G("NEW DEPLOYMENT"), formatter.BoldDirtyDefault(toDeployVersion)}, | 		{i18n.G("NEW DEPLOYMENT"), formatter.BoldDirtyDefault(toDeployVersion)}, | ||||||
|  | 		{"", ""}, | ||||||
|  | 		{i18n.G("SECRETS"), secrets}, | ||||||
|  | 		{i18n.G("CONFIGS"), configs}, | ||||||
|  | 		{i18n.G("IMAGES"), images}, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	deployType := getDeployType(deployedVersion, toDeployVersion) | 	deployType := getDeployType(deployedVersion, toDeployVersion) | ||||||
|  | |||||||
| @ -280,7 +280,7 @@ type secretStatus struct { | |||||||
| type secretStatuses []secretStatus | type secretStatuses []secretStatus | ||||||
|  |  | ||||||
| // PollSecretsStatus checks status of secrets by comparing the local recipe | // PollSecretsStatus checks status of secrets by comparing the local recipe | ||||||
| // config and deploymend server state. | // config and deployed server state. | ||||||
| func PollSecretsStatus(cl *dockerClient.Client, app appPkg.App) (secretStatuses, error) { | func PollSecretsStatus(cl *dockerClient.Client, app appPkg.App) (secretStatuses, error) { | ||||||
| 	var secStats secretStatuses | 	var secStats secretStatuses | ||||||
|  |  | ||||||
| @ -306,7 +306,7 @@ func PollSecretsStatus(cl *dockerClient.Client, app appPkg.App) (secretStatuses, | |||||||
|  |  | ||||||
| 	remoteSecretNames := make(map[string]bool) | 	remoteSecretNames := make(map[string]bool) | ||||||
| 	for _, cont := range secretList { | 	for _, cont := range secretList { | ||||||
| 		remoteSecretNames[cont.Spec.Annotations.Name] = true | 		remoteSecretNames[cont.Spec.Name] = true | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	for secretName, val := range secretsConfig { | 	for secretName, val := range secretsConfig { | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user