Skip to content

Commit b85b2d9

Browse files
authored
Merge pull request #1966 from FabianKramm/master
refactor: improve context handling
2 parents b97a0e4 + 035a289 commit b85b2d9

43 files changed

Lines changed: 388 additions & 225 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cmd/cleanup/images.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Deletes all locally created docker images from docker
4141
// RunCleanupImages executes the cleanup images command logic
4242
func (cmd *imagesCmd) RunCleanupImages(f factory.Factory, cobraCmd *cobra.Command, args []string) error {
4343
// Set config root
44+
ctx := context.Background()
4445
log := f.GetLog()
4546
configLoader, err := f.NewConfigLoader(cmd.ConfigPath)
4647
if err != nil {
@@ -65,13 +66,13 @@ func (cmd *imagesCmd) RunCleanupImages(f factory.Factory, cobraCmd *cobra.Comman
6566
}
6667

6768
// Create docker client
68-
client, err := docker.NewClientWithMinikube(kubeContext, true, log)
69+
client, err := docker.NewClientWithMinikube(ctx, kubeContext, true, log)
6970
if err != nil {
7071
return err
7172
}
7273

7374
// Load config
74-
configInterface, err := configLoader.Load(context.Background(), nil, cmd.ToConfigOptions(), log)
75+
configInterface, err := configLoader.Load(ctx, nil, cmd.ToConfigOptions(), log)
7576
if err != nil {
7677
return err
7778
}
@@ -82,7 +83,7 @@ func (cmd *imagesCmd) RunCleanupImages(f factory.Factory, cobraCmd *cobra.Comman
8283
return nil
8384
}
8485

85-
_, err = client.Ping(context.Background())
86+
_, err = client.Ping(ctx)
8687
if err != nil {
8788
return errors.Errorf("Docker seems to be not running: %v", err)
8889
}
@@ -91,7 +92,7 @@ func (cmd *imagesCmd) RunCleanupImages(f factory.Factory, cobraCmd *cobra.Comman
9192
for _, imageConfig := range config.Images {
9293
log.Info("Deleting local image " + imageConfig.Image + "...")
9394

94-
response, err := client.DeleteImageByName(imageConfig.Image, log)
95+
response, err := client.DeleteImageByName(ctx, imageConfig.Image, log)
9596
if err != nil {
9697
return err
9798
}
@@ -109,7 +110,7 @@ func (cmd *imagesCmd) RunCleanupImages(f factory.Factory, cobraCmd *cobra.Comman
109110

110111
// Cleanup dangling images aswell
111112
for {
112-
response, err := client.DeleteImageByFilter(filters.NewArgs(filters.Arg("dangling", "true")), log)
113+
response, err := client.DeleteImageByFilter(ctx, filters.NewArgs(filters.Arg("dangling", "true")), log)
113114
if err != nil {
114115
return err
115116
}

cmd/init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ func (cmd *InitCmd) Run(f factory.Factory) error {
375375
}
376376
}
377377

378-
err = configureManager.AddImage(imageName, image, projectNamespace+"/"+projectName, cmd.Dockerfile, languageHandler)
378+
err = configureManager.AddImage(imageName, image, projectNamespace+"/"+projectName, cmd.Dockerfile)
379379
if err != nil {
380380
if err.Error() != "" {
381381
cmd.log.Errorf("Error: %s", err.Error())

e2e/tests/build/build.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ var _ = DevSpaceDescribe("build", func() {
5757
framework.ExpectNoError(err)
5858

5959
// create devspace docker client to access docker APIs
60-
devspaceDockerClient, err := docker.NewClient(log)
60+
devspaceDockerClient, err := docker.NewClient(context.TODO(), log)
6161
framework.ExpectNoError(err)
6262

6363
dockerClient := devspaceDockerClient.DockerAPIClient()
@@ -93,7 +93,7 @@ var _ = DevSpaceDescribe("build", func() {
9393
framework.ExpectNoError(err)
9494

9595
// create devspace docker client to access docker APIs
96-
devspaceDockerClient, err := docker.NewClient(log)
96+
devspaceDockerClient, err := docker.NewClient(context.TODO(), log)
9797
framework.ExpectNoError(err)
9898

9999
dockerClient := devspaceDockerClient.DockerAPIClient()
@@ -143,7 +143,7 @@ var _ = DevSpaceDescribe("build", func() {
143143
framework.ExpectNoError(err)
144144

145145
// create devspace docker client to access docker APIs
146-
devspaceDockerClient, err := docker.NewClient(log)
146+
devspaceDockerClient, err := docker.NewClient(context.TODO(), log)
147147
framework.ExpectNoError(err)
148148

149149
dockerClient := devspaceDockerClient.DockerAPIClient()
@@ -177,7 +177,7 @@ var _ = DevSpaceDescribe("build", func() {
177177
framework.ExpectNoError(err)
178178

179179
// create devspace docker client to access docker APIs
180-
devspaceDockerClient, err := docker.NewClient(log)
180+
devspaceDockerClient, err := docker.NewClient(context.TODO(), log)
181181
framework.ExpectNoError(err)
182182

183183
dockerClient := devspaceDockerClient.DockerAPIClient()
@@ -241,7 +241,7 @@ var _ = DevSpaceDescribe("build", func() {
241241
framework.ExpectNoError(err)
242242

243243
// create devspace docker client to access docker APIs
244-
devspaceDockerClient, err := docker.NewClient(log)
244+
devspaceDockerClient, err := docker.NewClient(context.TODO(), log)
245245
framework.ExpectNoError(err)
246246

247247
dockerClient := devspaceDockerClient.DockerAPIClient()
@@ -305,7 +305,7 @@ var _ = DevSpaceDescribe("build", func() {
305305
framework.ExpectNoError(err)
306306

307307
// create devspace docker client to access docker APIs
308-
devspaceDockerClient, err := docker.NewClient(log)
308+
devspaceDockerClient, err := docker.NewClient(context.TODO(), log)
309309
framework.ExpectNoError(err)
310310

311311
dockerClient := devspaceDockerClient.DockerAPIClient()

pkg/devspace/build/builder/buildkit/buildkit.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func (b *Builder) ShouldRebuild(ctx *devspacecontext.Context, forceRebuild bool)
6767
// Check if image is present in local repository
6868
if !rebuild && err == nil && b.helper.ImageConf.BuildKit.InCluster == nil {
6969
if b.skipPushOnLocalKubernetes && ctx.KubeClient != nil && kubectl.IsLocalKubernetes(ctx.KubeClient.CurrentContext()) {
70-
dockerClient, err := dockerpkg.NewClientWithMinikube(ctx.KubeClient.CurrentContext(), b.helper.ImageConf.BuildKit.PreferMinikube == nil || *b.helper.ImageConf.BuildKit.PreferMinikube, ctx.Log)
70+
dockerClient, err := dockerpkg.NewClientWithMinikube(ctx.Context, ctx.KubeClient.CurrentContext(), b.helper.ImageConf.BuildKit.PreferMinikube == nil || *b.helper.ImageConf.BuildKit.PreferMinikube, ctx.Log)
7171
if err != nil {
7272
return false, err
7373
}
@@ -201,7 +201,7 @@ func buildWithCLI(ctx context.Context, dir string, context io.Reader, writer io.
201201
err error
202202
)
203203
if useMinikubeDocker {
204-
minikubeEnv, err = dockerpkg.GetMinikubeEnvironment()
204+
minikubeEnv, err = dockerpkg.GetMinikubeEnvironment(ctx)
205205
if err != nil {
206206
return fmt.Errorf("error retrieving minikube environment with 'minikube docker-env --shell none'. Try setting the option preferMinikube to false: %v", err)
207207
}

pkg/devspace/build/builder/docker/docker.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func (b *Builder) BuildImage(ctx *devspacecontext.Context, contextPath, dockerfi
112112
// Authenticate
113113
if !b.skipPush && !b.helper.ImageConf.SkipPush {
114114
ctx.Log.Info("Authenticating (" + displayRegistryURL + ")...")
115-
_, err = b.Authenticate()
115+
_, err = b.Authenticate(ctx.Context)
116116
if err != nil {
117117
return errors.Errorf("Error during image registry authentication: %v", err)
118118
}
@@ -173,7 +173,7 @@ func (b *Builder) BuildImage(ctx *devspacecontext.Context, contextPath, dockerfi
173173
// Check if we skip push
174174
if !b.skipPush && !b.helper.ImageConf.SkipPush {
175175
for _, tag := range buildOptions.Tags {
176-
err = b.pushImage(writer, tag)
176+
err = b.pushImage(ctx.Context, writer, tag)
177177
if err != nil {
178178
return errors.Errorf("error during image push: %v", err)
179179
}
@@ -188,13 +188,13 @@ func (b *Builder) BuildImage(ctx *devspacecontext.Context, contextPath, dockerfi
188188
}
189189

190190
// Authenticate authenticates the client with a remote registry
191-
func (b *Builder) Authenticate() (*types.AuthConfig, error) {
191+
func (b *Builder) Authenticate(ctx context.Context) (*types.AuthConfig, error) {
192192
registryURL, err := pullsecrets.GetRegistryFromImageName(b.helper.ImageName + ":" + b.helper.ImageTags[0])
193193
if err != nil {
194194
return nil, err
195195
}
196196

197-
b.authConfig, err = b.client.Login(registryURL, "", "", true, false, false)
197+
b.authConfig, err = b.client.Login(ctx, registryURL, "", "", true, false, false)
198198
if err != nil {
199199
return nil, err
200200
}
@@ -203,7 +203,7 @@ func (b *Builder) Authenticate() (*types.AuthConfig, error) {
203203
}
204204

205205
// pushImage pushes an image to the specified registry
206-
func (b *Builder) pushImage(writer io.Writer, imageName string) error {
206+
func (b *Builder) pushImage(ctx context.Context, writer io.Writer, imageName string) error {
207207
ref, err := reference.ParseNormalizedNamed(imageName)
208208
if err != nil {
209209
return err
@@ -214,7 +214,7 @@ func (b *Builder) pushImage(writer io.Writer, imageName string) error {
214214
return err
215215
}
216216

217-
out, err := b.client.ImagePush(context.Background(), reference.FamiliarString(ref), types.ImagePushOptions{
217+
out, err := b.client.ImagePush(ctx, reference.FamiliarString(ref), types.ImagePushOptions{
218218
RegistryAuth: encodedAuth,
219219
})
220220
if err != nil {

pkg/devspace/build/builder/helper/helper.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package helper
22

33
import (
4-
"context"
54
"github.com/docker/cli/cli/command/image/build"
65
"github.com/docker/docker/api/types"
76
"github.com/docker/docker/pkg/archive"
@@ -206,7 +205,7 @@ func (b *BuildHelper) IsImageAvailableLocally(ctx *devspacecontext.Context, dock
206205
imageCache, _ := ctx.Config.LocalCache().GetImageCache(b.ImageConfigName)
207206
imageName := imageCache.ImageName + ":" + imageCache.Tag
208207
dockerAPIClient := dockerClient.DockerAPIClient()
209-
imageList, err := dockerAPIClient.ImageList(context.Background(), types.ImageListOptions{})
208+
imageList, err := dockerAPIClient.ImageList(ctx.Context, types.ImageListOptions{})
210209
if err != nil {
211210
return false, err
212211
}

pkg/devspace/build/create_builder.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package build
22

33
import (
4-
"context"
54
"github.com/loft-sh/devspace/pkg/devspace/build/builder"
65
"github.com/loft-sh/devspace/pkg/devspace/build/builder/buildkit"
76
"github.com/loft-sh/devspace/pkg/devspace/build/builder/custom"
@@ -59,13 +58,13 @@ func (c *controller) createBuilder(ctx *devspacecontext.Context, imageConfigName
5958
kubeContext = ctx.KubeClient.CurrentContext()
6059
}
6160

62-
dockerClient, err := dockerclient.NewClientWithMinikube(kubeContext, preferMinikube, ctx.Log)
61+
dockerClient, err := dockerclient.NewClientWithMinikube(ctx.Context, kubeContext, preferMinikube, ctx.Log)
6362
if err != nil {
6463
return nil, errors.Errorf("Error creating docker client: %v", err)
6564
}
6665

6766
// Check if docker daemon is running
68-
_, err = dockerClient.Ping(context.Background())
67+
_, err = dockerClient.Ping(ctx.Context)
6968
if err != nil {
7069
if imageConf.Docker != nil && imageConf.Docker.DisableFallback != nil && *imageConf.Docker.DisableFallback {
7170
return nil, errors.Errorf("Couldn't reach docker daemon: %v. Is the docker daemon running?", err)
@@ -89,7 +88,7 @@ func (c *controller) createBuilder(ctx *devspacecontext.Context, imageConfigName
8988
return nil, err
9089
}
9190

92-
dockerClient, err := dockerclient.NewClient(ctx.Log)
91+
dockerClient, err := dockerclient.NewClient(ctx.Context, ctx.Log)
9392
if err == nil {
9493
if imageConf.Kaniko != nil && imageConf.Kaniko.Namespace != "" && ctx.KubeClient.Namespace() != imageConf.Kaniko.Namespace {
9594
err = pullsecrets.NewClient().EnsurePullSecret(ctx, dockerClient, imageConf.Kaniko.Namespace, registryURL)

pkg/devspace/config/loader/loader.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ func (l *configLoader) LoadWithParser(ctx context.Context, localCache localcache
172172
return nil, err
173173
}
174174

175-
err = l.ensureRequires(parsedConfig, log)
175+
err = l.ensureRequires(ctx, parsedConfig, log)
176176
if err != nil {
177177
return nil, errors.Wrap(err, "require versions")
178178
}
@@ -191,7 +191,7 @@ func (l *configLoader) LoadWithParser(ctx context.Context, localCache localcache
191191
return c, nil
192192
}
193193

194-
func (l *configLoader) ensureRequires(config *latest.Config, log log.Logger) error {
194+
func (l *configLoader) ensureRequires(ctx context.Context, config *latest.Config, log log.Logger) error {
195195
if config == nil {
196196
return nil
197197
}
@@ -259,7 +259,7 @@ func (l *configLoader) ensureRequires(config *latest.Config, log log.Logger) err
259259
return errors.Wrapf(err, "parsing require.commands[%d].version", index)
260260
}
261261

262-
out, err := command.Output(context.TODO(), filepath.Dir(l.absConfigPath), c.Name, versionArgs...)
262+
out, err := command.Output(ctx, filepath.Dir(l.absConfigPath), c.Name, versionArgs...)
263263
if err != nil {
264264
return fmt.Errorf("cannot run command '%s' (%v), however it is required by the config. Please make sure you have correctly installed '%s' with version %s", c.Name, err, c.Name, c.Version)
265265
}

pkg/devspace/config/versions/latest/schema.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1328,7 +1328,7 @@ type CommandConfig struct {
13281328
// the command was interrupted which will set the env variable COMMAND_INTERRUPT
13291329
// to true as well as when the command errored which will set the error string to
13301330
// COMMAND_ERROR.
1331-
After string `yaml:"after" json:"after"`
1331+
After string `yaml:"after,omitempty" json:"after,omitempty"`
13321332

13331333
// DisableReplace signals DevSpace to not replace the default command. E.g.
13341334
// dev does not replace devspace dev.

pkg/devspace/config/versions/versions.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func ParseProfile(ctx context.Context, basePath string, data map[string]interfac
6060
activatedProfiles := []string{}
6161
if !disableProfileActivation {
6262
var err error
63-
activatedProfiles, err = getActivatedProfiles(data, resolver, log)
63+
activatedProfiles, err = getActivatedProfiles(ctx, data, resolver, log)
6464
if err != nil {
6565
return nil, err
6666
}
@@ -305,7 +305,7 @@ func getProfiles(ctx context.Context, basePath string, data map[string]interface
305305
return errors.Errorf("Couldn't find profile '%s'", profile)
306306
}
307307

308-
func getActivatedProfiles(data map[string]interface{}, resolver variable.Resolver, log log.Logger) ([]string, error) {
308+
func getActivatedProfiles(ctx context.Context, data map[string]interface{}, resolver variable.Resolver, log log.Logger) ([]string, error) {
309309
activatedProfiles := []string{}
310310

311311
// Check if there are profiles
@@ -331,7 +331,7 @@ func getActivatedProfiles(data map[string]interface{}, resolver variable.Resolve
331331
return activatedProfiles, errors.Wrap(err, "error activating profile with env")
332332
}
333333

334-
activatedByVars, err := matchVars(activation.Vars, resolver)
334+
activatedByVars, err := matchVars(ctx, activation.Vars, resolver)
335335
if err != nil {
336336
return activatedProfiles, errors.Wrap(err, "error activating profile with vars")
337337
}
@@ -360,9 +360,9 @@ func matchEnvironment(env map[string]string) (bool, error) {
360360
return true, nil
361361
}
362362

363-
func matchVars(activationVars map[string]string, resolver variable.Resolver) (bool, error) {
363+
func matchVars(ctx context.Context, activationVars map[string]string, resolver variable.Resolver) (bool, error) {
364364
for k, v := range activationVars {
365-
value, err := resolveVariableValue(k, resolver)
365+
value, err := resolveVariableValue(ctx, k, resolver)
366366
if err != nil {
367367
return false, err
368368
}
@@ -393,8 +393,8 @@ func sanitizeMatchExpression(expression string) string {
393393
return exp
394394
}
395395

396-
func resolveVariableValue(name string, resolver variable.Resolver) (string, error) {
397-
val, err := resolver.FillVariables(context.TODO(), "${"+name+"}")
396+
func resolveVariableValue(ctx context.Context, name string, resolver variable.Resolver) (string, error) {
397+
val, err := resolver.FillVariables(ctx, "${"+name+"}")
398398
if err != nil {
399399
return "", err
400400
}

0 commit comments

Comments
 (0)