Use proper context in storage key retrieval

This commit is contained in:
Guillaume Tardif 2020-08-14 17:01:35 +02:00
parent 6552a00004
commit 274dc8283f
7 changed files with 27 additions and 25 deletions

View File

@ -209,7 +209,7 @@ func (cs *aciContainerService) Run(ctx context.Context, r containers.ContainerCo
}
logrus.Debugf("Running container %q with name %q\n", r.Image, r.ID)
groupDefinition, err := convert.ToContainerGroup(cs.ctx, project)
groupDefinition, err := convert.ToContainerGroup(ctx, cs.ctx, project)
if err != nil {
return err
}
@ -410,7 +410,7 @@ func (cs *aciComposeService) Up(ctx context.Context, opts cli.ProjectOptions) er
return err
}
logrus.Debugf("Up on project with name %q\n", project.Name)
groupDefinition, err := convert.ToContainerGroup(cs.ctx, *project)
groupDefinition, err := convert.ToContainerGroup(ctx, cs.ctx, *project)
addTag(&groupDefinition, composeContainerTag)
if err != nil {

View File

@ -17,6 +17,7 @@
package convert
import (
"context"
"encoding/base64"
"fmt"
"io/ioutil"
@ -47,7 +48,7 @@ const (
)
// ToContainerGroup converts a compose project into a ACI container group
func ToContainerGroup(aciContext store.AciContext, p types.Project) (containerinstance.ContainerGroup, error) {
func ToContainerGroup(ctx context.Context, aciContext store.AciContext, p types.Project) (containerinstance.ContainerGroup, error) {
project := projectAciHelper(p)
containerGroupName := strings.ToLower(project.Name)
loginService, err := login.NewAzureLoginService()
@ -58,7 +59,7 @@ func ToContainerGroup(aciContext store.AciContext, p types.Project) (containerin
LoginService: *loginService,
AciContext: aciContext,
}
volumesCache, volumesSlice, err := project.getAciFileVolumes(storageHelper)
volumesCache, volumesSlice, err := project.getAciFileVolumes(ctx, storageHelper)
if err != nil {
return containerinstance.ContainerGroup{}, err
}
@ -199,7 +200,7 @@ func (p projectAciHelper) getAciSecretVolumes() ([]containerinstance.Volume, err
return secretVolumes, nil
}
func (p projectAciHelper) getAciFileVolumes(helper login.StorageAccountHelper) (map[string]bool, []containerinstance.Volume, error) {
func (p projectAciHelper) getAciFileVolumes(ctx context.Context, helper login.StorageAccountHelper) (map[string]bool, []containerinstance.Volume, error) {
azureFileVolumesMap := make(map[string]bool, len(p.Volumes))
var azureFileVolumesSlice []containerinstance.Volume
for name, v := range p.Volumes {
@ -212,7 +213,7 @@ func (p projectAciHelper) getAciFileVolumes(helper login.StorageAccountHelper) (
if !ok {
return nil, nil, fmt.Errorf("cannot retrieve account name for Azurefile")
}
accountKey, err := helper.GetAzureStorageAccountKey(accountName)
accountKey, err := helper.GetAzureStorageAccountKey(ctx, accountName)
if err != nil {
return nil, nil, err
}

View File

@ -17,6 +17,7 @@
package convert
import (
"context"
"os"
"testing"
@ -40,7 +41,7 @@ func TestProjectName(t *testing.T) {
project := types.Project{
Name: "TEST",
}
containerGroup, err := ToContainerGroup(convertCtx, project)
containerGroup, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.NilError(t, err)
assert.Equal(t, *containerGroup.Name, "test")
}
@ -117,7 +118,7 @@ func TestComposeContainerGroupToContainerWithDnsSideCarSide(t *testing.T) {
},
}
group, err := ToContainerGroup(convertCtx, project)
group, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.NilError(t, err)
assert.Assert(t, is.Len(*group.Containers, 3))
@ -142,7 +143,7 @@ func TestComposeSingleContainerGroupToContainerNoDnsSideCarSide(t *testing.T) {
},
}
group, err := ToContainerGroup(convertCtx, project)
group, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.NilError(t, err)
assert.Assert(t, is.Len(*group.Containers, 1))
@ -165,7 +166,7 @@ func TestComposeSingleContainerRestartPolicy(t *testing.T) {
},
}
group, err := ToContainerGroup(convertCtx, project)
group, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.NilError(t, err)
assert.Assert(t, is.Len(*group.Containers, 1))
@ -197,7 +198,7 @@ func TestComposeMultiContainerRestartPolicy(t *testing.T) {
},
}
group, err := ToContainerGroup(convertCtx, project)
group, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.NilError(t, err)
assert.Assert(t, is.Len(*group.Containers, 3))
@ -231,7 +232,7 @@ func TestComposeInconsistentMultiContainerRestartPolicy(t *testing.T) {
},
}
_, err := ToContainerGroup(convertCtx, project)
_, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.Error(t, err, "ACI integration does not support specifying different restart policies on containers in the same compose application")
}
@ -248,7 +249,7 @@ func TestLabelsErrorMessage(t *testing.T) {
},
}
_, err := ToContainerGroup(convertCtx, project)
_, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.Error(t, err, "ACI integration does not support labels in compose applications")
}
@ -262,7 +263,7 @@ func TestComposeSingleContainerGroupToContainerDefaultRestartPolicy(t *testing.T
},
}
group, err := ToContainerGroup(convertCtx, project)
group, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.NilError(t, err)
assert.Assert(t, is.Len(*group.Containers, 1))
@ -296,7 +297,7 @@ func TestComposeContainerGroupToContainerMultiplePorts(t *testing.T) {
},
}
group, err := ToContainerGroup(convertCtx, project)
group, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.NilError(t, err)
assert.Assert(t, is.Len(*group.Containers, 3))
@ -335,7 +336,7 @@ func TestComposeContainerGroupToContainerResourceLimits(t *testing.T) {
},
}
group, err := ToContainerGroup(convertCtx, project)
group, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.NilError(t, err)
limits := *((*group.Containers)[0]).Resources.Limits
@ -361,7 +362,7 @@ func TestComposeContainerGroupToContainerResourceLimitsDefaults(t *testing.T) {
},
}
group, err := ToContainerGroup(convertCtx, project)
group, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.NilError(t, err)
limits := *((*group.Containers)[0]).Resources.Limits
@ -385,7 +386,7 @@ func TestComposeContainerGroupToContainerenvVar(t *testing.T) {
},
}
group, err := ToContainerGroup(convertCtx, project)
group, err := ToContainerGroup(context.TODO(), convertCtx, project)
assert.NilError(t, err)
envVars := *((*group.Containers)[0]).EnvironmentVariables

View File

@ -16,12 +16,12 @@ type StorageAccountHelper struct {
}
// GetAzureStorageAccountKey retrieves the storage account ket from the current azure login
func (helper StorageAccountHelper) GetAzureStorageAccountKey(accountName string) (string, error) {
func (helper StorageAccountHelper) GetAzureStorageAccountKey(ctx context.Context, accountName string) (string, error) {
client, err := GetStorageAccountsClient(helper.AciContext.SubscriptionID)
if err != nil {
return "", err
}
result, err := client.ListKeys(context.TODO(), helper.AciContext.ResourceGroup, accountName, "")
result, err := client.ListKeys(ctx, helper.AciContext.ResourceGroup, accountName, "")
if err != nil {
return "", errors.Wrap(err, fmt.Sprintf("could not access storage account acountKeys for %s, using the azure login", accountName))
}

View File

@ -13,7 +13,7 @@ import (
"github.com/docker/api/errdefs"
)
const aciDockerUserAgent = "docker-cli"
const userAgent = "docker-cli"
// GetContainerGroupsClient get client toi manipulate containerGrouos
func GetContainerGroupsClient(subscriptionID string) (containerinstance.ContainerGroupsClient, error) {
@ -29,7 +29,7 @@ func GetContainerGroupsClient(subscriptionID string) (containerinstance.Containe
}
func setupClient(aciClient *autorest.Client) error {
aciClient.UserAgent = aciDockerUserAgent
aciClient.UserAgent = userAgent
auth, err := NewAuthorizerFromLogin()
if err != nil {
return err

View File

@ -19,11 +19,11 @@ package aci
import (
"context"
"github.com/docker/api/aci/login"
"github.com/Azure/azure-sdk-for-go/profiles/2019-03-01/resources/mgmt/resources"
"github.com/Azure/azure-sdk-for-go/profiles/preview/preview/subscription/mgmt/subscription"
"github.com/pkg/errors"
"github.com/docker/api/aci/login"
)
// ResourceGroupHelper interface to manage resource groups and subscription IDs