diff --git a/aci/backend.go b/aci/backend.go index f977c59d3..005bc763d 100644 --- a/aci/backend.go +++ b/aci/backend.go @@ -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 { diff --git a/aci/convert/convert.go b/aci/convert/convert.go index f5153f1ae..ae8528c22 100644 --- a/aci/convert/convert.go +++ b/aci/convert/convert.go @@ -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 } diff --git a/aci/convert/convert_test.go b/aci/convert/convert_test.go index 2667e8756..60c6b1650 100644 --- a/aci/convert/convert_test.go +++ b/aci/convert/convert_test.go @@ -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 diff --git a/aci/login/StorageAccountHelper.go b/aci/login/StorageAccountHelper.go index 8b1d9dfdc..42f7a23f0 100644 --- a/aci/login/StorageAccountHelper.go +++ b/aci/login/StorageAccountHelper.go @@ -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)) } diff --git a/aci/login/clientsetup.go b/aci/login/client.go similarity index 97% rename from aci/login/clientsetup.go rename to aci/login/client.go index edd72bf6a..afaad6c30 100644 --- a/aci/login/clientsetup.go +++ b/aci/login/client.go @@ -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 diff --git a/aci/resource_group.go b/aci/resource_group.go index 8d3bb6c3c..3776e348d 100644 --- a/aci/resource_group.go +++ b/aci/resource_group.go @@ -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 diff --git a/tests/composefiles/aci-demo/aci_demo_port_secrets_volumes.yaml b/tests/composefiles/aci-demo/aci_demo_port_secrets_volumes.yaml index 31f982ed2..eb4f1b25b 100644 --- a/tests/composefiles/aci-demo/aci_demo_port_secrets_volumes.yaml +++ b/tests/composefiles/aci-demo/aci_demo_port_secrets_volumes.yaml @@ -22,4 +22,4 @@ volumes: driver: azure_file driver_opts: share_name: minecraft-volume - storage_account_name: minecraftdocker \ No newline at end of file + storage_account_name: minecraftdocker