Merge pull request #220 from docker/aci_user_agent

set Aci user agent to allow metrics on usage from docker cli
This commit is contained in:
Guillaume Tardif 2020-06-16 09:44:41 +02:00 committed by GitHub
commit 2b4e2cb322
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 17 deletions

View File

@ -21,6 +21,8 @@ import (
"github.com/docker/api/context/store" "github.com/docker/api/context/store"
) )
const aciDockerUserAgent = "docker-cli"
func createACIContainers(ctx context.Context, aciContext store.AciContext, groupDefinition containerinstance.ContainerGroup) error { func createACIContainers(ctx context.Context, aciContext store.AciContext, groupDefinition containerinstance.ContainerGroup) error {
containerGroupsClient, err := getContainerGroupsClient(aciContext.SubscriptionID) containerGroupsClient, err := getContainerGroupsClient(aciContext.SubscriptionID)
if err != nil { if err != nil {
@ -241,24 +243,32 @@ func getACIContainerLogs(ctx context.Context, aciContext store.AciContext, conta
} }
func getContainerGroupsClient(subscriptionID string) (containerinstance.ContainerGroupsClient, error) { func getContainerGroupsClient(subscriptionID string) (containerinstance.ContainerGroupsClient, error) {
auth, err := login.NewAuthorizerFromLogin() containerGroupsClient := containerinstance.NewContainerGroupsClient(subscriptionID)
err := setupClient(&containerGroupsClient.Client)
if err != nil { if err != nil {
return containerinstance.ContainerGroupsClient{}, err return containerinstance.ContainerGroupsClient{}, err
} }
containerGroupsClient := containerinstance.NewContainerGroupsClient(subscriptionID)
containerGroupsClient.Authorizer = auth
containerGroupsClient.PollingDelay = 5 * time.Second containerGroupsClient.PollingDelay = 5 * time.Second
containerGroupsClient.RetryAttempts = 30 containerGroupsClient.RetryAttempts = 30
containerGroupsClient.RetryDuration = 1 * time.Second containerGroupsClient.RetryDuration = 1 * time.Second
return containerGroupsClient, nil return containerGroupsClient, nil
} }
func getContainerClient(subscriptionID string) (containerinstance.ContainerClient, error) { func setupClient(aciClient *autorest.Client) error {
aciClient.UserAgent = aciDockerUserAgent
auth, err := login.NewAuthorizerFromLogin() auth, err := login.NewAuthorizerFromLogin()
if err != nil {
return err
}
aciClient.Authorizer = auth
return nil
}
func getContainerClient(subscriptionID string) (containerinstance.ContainerClient, error) {
containerClient := containerinstance.NewContainerClient(subscriptionID)
err := setupClient(&containerClient.Client)
if err != nil { if err != nil {
return containerinstance.ContainerClient{}, err return containerinstance.ContainerClient{}, err
} }
containerClient := containerinstance.NewContainerClient(subscriptionID)
containerClient.Authorizer = auth
return containerClient, nil return containerClient, nil
} }

View File

@ -7,7 +7,6 @@ import (
"github.com/Azure/azure-sdk-for-go/profiles/preview/preview/subscription/mgmt/subscription" "github.com/Azure/azure-sdk-for-go/profiles/preview/preview/subscription/mgmt/subscription"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/docker/api/azure/login"
"github.com/docker/api/errdefs" "github.com/docker/api/errdefs"
) )
@ -30,13 +29,20 @@ func NewACIResourceGroupHelper() ACIResourceGroupHelper {
// GetGroup get a resource group from its name // GetGroup get a resource group from its name
func (mgt aciResourceGroupHelperImpl) GetGroup(ctx context.Context, subscriptionID string, groupName string) (resources.Group, error) { func (mgt aciResourceGroupHelperImpl) GetGroup(ctx context.Context, subscriptionID string, groupName string) (resources.Group, error) {
gc := getGroupsClient(subscriptionID) gc, err := getGroupsClient(subscriptionID)
if err != nil {
return resources.Group{}, err
}
return gc.Get(ctx, groupName) return gc.Get(ctx, groupName)
} }
// ListGroups list resource groups // ListGroups list resource groups
func (mgt aciResourceGroupHelperImpl) ListGroups(ctx context.Context, subscriptionID string) ([]resources.Group, error) { func (mgt aciResourceGroupHelperImpl) ListGroups(ctx context.Context, subscriptionID string) ([]resources.Group, error) {
gc := getGroupsClient(subscriptionID) gc, err := getGroupsClient(subscriptionID)
if err != nil {
return nil, err
}
groupResponse, err := gc.List(ctx, "", nil) groupResponse, err := gc.List(ctx, "", nil)
if err != nil { if err != nil {
return nil, err return nil, err
@ -48,13 +54,20 @@ func (mgt aciResourceGroupHelperImpl) ListGroups(ctx context.Context, subscripti
// CreateOrUpdate create or update a resource group // CreateOrUpdate create or update a resource group
func (mgt aciResourceGroupHelperImpl) CreateOrUpdate(ctx context.Context, subscriptionID string, resourceGroupName string, parameters resources.Group) (result resources.Group, err error) { func (mgt aciResourceGroupHelperImpl) CreateOrUpdate(ctx context.Context, subscriptionID string, resourceGroupName string, parameters resources.Group) (result resources.Group, err error) {
gc := getGroupsClient(subscriptionID) gc, err := getGroupsClient(subscriptionID)
if err != nil {
return resources.Group{}, err
}
return gc.CreateOrUpdate(ctx, resourceGroupName, parameters) return gc.CreateOrUpdate(ctx, resourceGroupName, parameters)
} }
// Delete deletes a resource group // Delete deletes a resource group
func (mgt aciResourceGroupHelperImpl) Delete(ctx context.Context, subscriptionID string, resourceGroupName string) (err error) { func (mgt aciResourceGroupHelperImpl) Delete(ctx context.Context, subscriptionID string, resourceGroupName string) (err error) {
gc := getGroupsClient(subscriptionID) gc, err := getGroupsClient(subscriptionID)
if err != nil {
return err
}
future, err := gc.Delete(ctx, resourceGroupName) future, err := gc.Delete(ctx, resourceGroupName)
if err != nil { if err != nil {
return err return err
@ -89,17 +102,18 @@ func (mgt aciResourceGroupHelperImpl) GetSubscriptionIDs(ctx context.Context) ([
func getSubscriptionsClient() (subscription.SubscriptionsClient, error) { func getSubscriptionsClient() (subscription.SubscriptionsClient, error) {
subc := subscription.NewSubscriptionsClient() subc := subscription.NewSubscriptionsClient()
authorizer, err := login.NewAuthorizerFromLogin() err := setupClient(&subc.Client)
if err != nil { if err != nil {
return subscription.SubscriptionsClient{}, errors.Wrap(errdefs.ErrLoginFailed, err.Error()) return subscription.SubscriptionsClient{}, errors.Wrap(errdefs.ErrLoginFailed, err.Error())
} }
subc.Authorizer = authorizer
return subc, nil return subc, nil
} }
func getGroupsClient(subscriptionID string) resources.GroupsClient { func getGroupsClient(subscriptionID string) (resources.GroupsClient, error) {
groupsClient := resources.NewGroupsClient(subscriptionID) groupsClient := resources.NewGroupsClient(subscriptionID)
authorizer, _ := login.NewAuthorizerFromLogin() err := setupClient(&groupsClient.Client)
groupsClient.Authorizer = authorizer if err != nil {
return groupsClient return resources.GroupsClient{}, err
}
return groupsClient, nil
} }