client.go 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. Copyright 2020 Docker, Inc.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. */
  13. package login
  14. import (
  15. "time"
  16. "github.com/Azure/azure-sdk-for-go/profiles/2019-03-01/resources/mgmt/resources"
  17. "github.com/Azure/azure-sdk-for-go/profiles/preview/preview/subscription/mgmt/subscription"
  18. "github.com/Azure/azure-sdk-for-go/services/containerinstance/mgmt/2018-10-01/containerinstance"
  19. "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage"
  20. "github.com/Azure/go-autorest/autorest"
  21. "github.com/pkg/errors"
  22. "github.com/docker/compose-cli/errdefs"
  23. )
  24. const userAgent = "docker-cli"
  25. // NewContainerGroupsClient get client toi manipulate containerGrouos
  26. func NewContainerGroupsClient(subscriptionID string) (containerinstance.ContainerGroupsClient, error) {
  27. containerGroupsClient := containerinstance.NewContainerGroupsClient(subscriptionID)
  28. err := setupClient(&containerGroupsClient.Client)
  29. if err != nil {
  30. return containerinstance.ContainerGroupsClient{}, err
  31. }
  32. containerGroupsClient.PollingDelay = 5 * time.Second
  33. containerGroupsClient.RetryAttempts = 30
  34. containerGroupsClient.RetryDuration = 1 * time.Second
  35. return containerGroupsClient, nil
  36. }
  37. func setupClient(aciClient *autorest.Client) error {
  38. aciClient.UserAgent = userAgent
  39. auth, err := NewAuthorizerFromLogin()
  40. if err != nil {
  41. return err
  42. }
  43. aciClient.Authorizer = auth
  44. return nil
  45. }
  46. // NewStorageAccountsClient get client to manipulate storage accounts
  47. func NewStorageAccountsClient(subscriptionID string) (storage.AccountsClient, error) {
  48. containerGroupsClient := storage.NewAccountsClient(subscriptionID)
  49. err := setupClient(&containerGroupsClient.Client)
  50. if err != nil {
  51. return storage.AccountsClient{}, err
  52. }
  53. containerGroupsClient.PollingDelay = 5 * time.Second
  54. containerGroupsClient.RetryAttempts = 30
  55. containerGroupsClient.RetryDuration = 1 * time.Second
  56. return containerGroupsClient, nil
  57. }
  58. // NewSubscriptionsClient get subscription client
  59. func NewSubscriptionsClient() (subscription.SubscriptionsClient, error) {
  60. subc := subscription.NewSubscriptionsClient()
  61. err := setupClient(&subc.Client)
  62. if err != nil {
  63. return subscription.SubscriptionsClient{}, errors.Wrap(errdefs.ErrLoginRequired, err.Error())
  64. }
  65. return subc, nil
  66. }
  67. // NewGroupsClient get client to manipulate groups
  68. func NewGroupsClient(subscriptionID string) (resources.GroupsClient, error) {
  69. groupsClient := resources.NewGroupsClient(subscriptionID)
  70. err := setupClient(&groupsClient.Client)
  71. if err != nil {
  72. return resources.GroupsClient{}, err
  73. }
  74. return groupsClient, nil
  75. }
  76. // NewContainerClient get client to manipulate containers
  77. func NewContainerClient(subscriptionID string) (containerinstance.ContainerClient, error) {
  78. containerClient := containerinstance.NewContainerClient(subscriptionID)
  79. err := setupClient(&containerClient.Client)
  80. if err != nil {
  81. return containerinstance.ContainerClient{}, err
  82. }
  83. return containerClient, nil
  84. }