Skip to content

Commit c849af4

Browse files
authored
The app push minor fixes (#2640)
1 parent 742c68e commit c849af4

File tree

8 files changed

+48
-24
lines changed

8 files changed

+48
-24
lines changed

internal/cmd/app/push.go

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88

99
"github.com/kyma-project/cli.v3/internal/clierror"
1010
"github.com/kyma-project/cli.v3/internal/cmdcommon"
11-
"github.com/kyma-project/cli.v3/internal/cmdcommon/env"
11+
"github.com/kyma-project/cli.v3/internal/cmdcommon/envs"
1212
"github.com/kyma-project/cli.v3/internal/cmdcommon/types"
1313
"github.com/kyma-project/cli.v3/internal/dockerfile"
1414
"github.com/kyma-project/cli.v3/internal/flags"
@@ -124,7 +124,8 @@ func NewAppPushCMD(kymaConfig *cmdcommon.KymaConfig) *cobra.Command {
124124
// k8s flags
125125
cmd.Flags().StringVarP(&config.namespace, "namespace", "n", "default", "Namespace where the app is deployed")
126126
cmd.Flags().Var(&config.containerPort, "container-port", "Port on which the application is exposed")
127-
cmd.Flags().Var(&config.istioInject, "istio-inject", "Enables Istio for the app")
127+
istioInjectFlag := cmd.Flags().VarPF(&config.istioInject, "istio-inject", "", "Enables Istio for the app")
128+
istioInjectFlag.NoOptDefVal = "true" // default value when flag is provided without value
128129
cmd.Flags().BoolVar(&config.expose, "expose", false, "Creates an APIRule for the app")
129130
cmd.Flags().StringArrayVar(&config.mountSecrets, "mount-secret", []string{}, "Mounts Secret content to the "+resources.SecretMountPathPrefix+"<SECRET_NAME> path")
130131
cmd.Flags().StringArrayVar(&config.mountConfigmaps, "mount-config", []string{}, "Mounts ConfigMap content to the "+resources.ConfigmapMountPathPrefix+"<CONFIGMAP_NAME> path")
@@ -250,23 +251,29 @@ func runAppPush(cfg *appPushConfig) clierror.Error {
250251
}
251252

252253
func createDeployment(cfg *appPushConfig, client kube.Client, image, imagePullSecret string) clierror.Error {
253-
fileEnvs, err := env.BuildEnvsFromFile(cfg.fileEnvs)
254+
configmapEnvs, err := envs.BuildFromConfigmap(cfg.Ctx, client, cfg.namespace, cfg.configmapEnvs)
254255
if err != nil {
255-
return clierror.Wrap(err, clierror.New("failed to build envs from file"))
256+
return clierror.Wrap(err, clierror.New("failed to build envs from configmap"))
256257
}
257258

258-
secretEnvs, err := env.BuildEnvsFromSecret(cfg.Ctx, client, cfg.namespace, cfg.secretEnvs)
259+
secretEnvs, err := envs.BuildFromSecret(cfg.Ctx, client, cfg.namespace, cfg.secretEnvs)
259260
if err != nil {
260261
return clierror.Wrap(err, clierror.New("failed to build envs from secret"))
261262
}
262263

263-
configmapEnvs, err := env.BuildEnvsFromConfigmap(cfg.Ctx, client, cfg.namespace, cfg.configmapEnvs)
264+
fileEnvs, err := envs.BuildFromFile(cfg.fileEnvs)
264265
if err != nil {
265-
return clierror.Wrap(err, clierror.New("failed to build envs from configmap"))
266+
return clierror.Wrap(err, clierror.New("failed to build envs from file"))
266267
}
267268

268-
envs := append(fileEnvs, secretEnvs...)
269-
envs = append(envs, configmapEnvs...)
269+
plainEnvs := envs.Build(cfg.envs)
270+
271+
// append envs in order to have correct precedence
272+
// plain envs > file envs > secret envs > configmap envs
273+
envs := configmapEnvs
274+
envs = append(envs, secretEnvs...)
275+
envs = append(envs, fileEnvs...)
276+
envs = append(envs, plainEnvs...)
270277

271278
err = resources.CreateDeployment(cfg.Ctx, client, resources.CreateDeploymentOpts{
272279
Name: cfg.name,
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package env
1+
package envs
22

33
import (
44
"context"
@@ -10,7 +10,7 @@ import (
1010
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1111
)
1212

13-
func BuildEnvsFromConfigmap(ctx context.Context, client kube.Client, namespace string, envs types.SourcedEnvArray) ([]corev1.EnvVar, error) {
13+
func BuildFromConfigmap(ctx context.Context, client kube.Client, namespace string, envs types.SourcedEnvArray) ([]corev1.EnvVar, error) {
1414
var result []corev1.EnvVar
1515
for _, e := range envs.Values {
1616
if e.Location == "" {
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
package env_test
1+
package envs
22

33
import (
44
"context"
55
"testing"
66

7-
"github.com/kyma-project/cli.v3/internal/cmdcommon/env"
87
"github.com/kyma-project/cli.v3/internal/cmdcommon/types"
98
"github.com/kyma-project/cli.v3/internal/cmdcommon/types/sourced"
109
"github.com/kyma-project/cli.v3/internal/kube"
@@ -198,7 +197,7 @@ func TestBuildEnvsFromConfigmap(t *testing.T) {
198197
}
199198
for _, tt := range tests {
200199
t.Run(tt.name, func(t *testing.T) {
201-
got, gotErr := env.BuildEnvsFromConfigmap(context.Background(), tt.client, tt.namespace, tt.envs)
200+
got, gotErr := BuildFromConfigmap(context.Background(), tt.client, tt.namespace, tt.envs)
202201
if tt.wantErr != "" {
203202
require.ErrorContains(t, gotErr, tt.wantErr)
204203
}

internal/cmdcommon/envs/env.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package envs
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/kyma-project/cli.v3/internal/cmdcommon/types"
7+
corev1 "k8s.io/api/core/v1"
8+
)
9+
10+
func Build(envs types.Map) []corev1.EnvVar {
11+
var result []corev1.EnvVar
12+
for k, v := range envs.Values {
13+
result = append(result, corev1.EnvVar{
14+
Name: k,
15+
Value: fmt.Sprintf("%v", v),
16+
})
17+
}
18+
19+
return result
20+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package env
1+
package envs
22

33
import (
44
"fmt"
@@ -8,7 +8,7 @@ import (
88
corev1 "k8s.io/api/core/v1"
99
)
1010

11-
func BuildEnvsFromFile(envs types.SourcedEnvArray) ([]corev1.EnvVar, error) {
11+
func BuildFromFile(envs types.SourcedEnvArray) ([]corev1.EnvVar, error) {
1212
var result []corev1.EnvVar
1313
for _, e := range envs.Values {
1414
if e.Location == "" {
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
package env_test
1+
package envs
22

33
import (
44
"errors"
55
"os"
66
"syscall"
77
"testing"
88

9-
"github.com/kyma-project/cli.v3/internal/cmdcommon/env"
109
"github.com/kyma-project/cli.v3/internal/cmdcommon/types"
1110
"github.com/kyma-project/cli.v3/internal/cmdcommon/types/sourced"
1211
"github.com/stretchr/testify/require"
@@ -131,7 +130,7 @@ func TestBuildEnvsFromFile(t *testing.T) {
131130
}
132131
for _, tt := range tests {
133132
t.Run(tt.name, func(t *testing.T) {
134-
got, gotErr := env.BuildEnvsFromFile(tt.envs)
133+
got, gotErr := BuildFromFile(tt.envs)
135134
require.Equal(t, tt.wantErr, gotErr)
136135
require.ElementsMatch(t, tt.want, got)
137136
})
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package env
1+
package envs
22

33
import (
44
"context"
@@ -10,7 +10,7 @@ import (
1010
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1111
)
1212

13-
func BuildEnvsFromSecret(ctx context.Context, client kube.Client, namespace string, envs types.SourcedEnvArray) ([]corev1.EnvVar, error) {
13+
func BuildFromSecret(ctx context.Context, client kube.Client, namespace string, envs types.SourcedEnvArray) ([]corev1.EnvVar, error) {
1414
var result []corev1.EnvVar
1515
for _, e := range envs.Values {
1616
if e.Location == "" {
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
package env_test
1+
package envs
22

33
import (
44
"context"
55
"testing"
66

7-
"github.com/kyma-project/cli.v3/internal/cmdcommon/env"
87
"github.com/kyma-project/cli.v3/internal/cmdcommon/types"
98
"github.com/kyma-project/cli.v3/internal/cmdcommon/types/sourced"
109
"github.com/kyma-project/cli.v3/internal/kube"
@@ -197,7 +196,7 @@ func TestBuildEnvsFromSecret(t *testing.T) {
197196
}
198197
for _, tt := range tests {
199198
t.Run(tt.name, func(t *testing.T) {
200-
got, gotErr := env.BuildEnvsFromSecret(context.Background(), tt.client, tt.namespace, tt.envs)
199+
got, gotErr := BuildFromSecret(context.Background(), tt.client, tt.namespace, tt.envs)
201200
if tt.wantErr != "" {
202201
require.ErrorContains(t, gotErr, tt.wantErr)
203202
}

0 commit comments

Comments
 (0)