Add mock clients for container service client and deployment client.
This commit is contained in:
parent
677e8d6871
commit
9a37d1d92c
@ -63,6 +63,8 @@ go_library(
|
|||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/auth:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/auth:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/cache:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/cache:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/deploymentclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/diskclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/diskclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/diskclient/mockdiskclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/diskclient/mockdiskclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/fileclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/fileclient:go_default_library",
|
||||||
|
@ -63,6 +63,11 @@ import (
|
|||||||
"k8s.io/legacy-cloud-providers/azure/clients/vmssvmclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/vmssvmclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/retry"
|
"k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
|
|
||||||
|
// ensure the newly added package from azure-sdk-for-go is in vendor/
|
||||||
|
_ "k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient"
|
||||||
|
// ensure the newly added package from azure-sdk-for-go is in vendor/
|
||||||
|
_ "k8s.io/legacy-cloud-providers/azure/clients/deploymentclient"
|
||||||
|
|
||||||
"sigs.k8s.io/yaml"
|
"sigs.k8s.io/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@ filegroup(
|
|||||||
srcs = [
|
srcs = [
|
||||||
":package-srcs",
|
":package-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:all-srcs",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient:all-srcs",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/deploymentclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/diskclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/diskclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/fileclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/fileclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/interfaceclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/interfaceclient:all-srcs",
|
||||||
|
@ -0,0 +1,60 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"azure_containerserviceclient.go",
|
||||||
|
"doc.go",
|
||||||
|
"interface.go",
|
||||||
|
],
|
||||||
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient",
|
||||||
|
importpath = "k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/metrics:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
||||||
|
"//vendor/k8s.io/klog/v2:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient/mockcontainerserviceclient:all-srcs",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
|
go_test(
|
||||||
|
name = "go_default_test",
|
||||||
|
srcs = ["azure_containerserviceclient_test.go"],
|
||||||
|
embed = [":go_default_library"],
|
||||||
|
deps = [
|
||||||
|
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient/mockarmclient:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
||||||
|
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
||||||
|
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
@ -0,0 +1,412 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package containerserviceclient
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/to"
|
||||||
|
|
||||||
|
"k8s.io/client-go/util/flowcontrol"
|
||||||
|
"k8s.io/klog/v2"
|
||||||
|
azclients "k8s.io/legacy-cloud-providers/azure/clients"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/clients/armclient"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/metrics"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ Interface = &Client{}
|
||||||
|
|
||||||
|
// Client implements ContainerService client Interface.
|
||||||
|
type Client struct {
|
||||||
|
armClient armclient.Interface
|
||||||
|
subscriptionID string
|
||||||
|
|
||||||
|
// Rate limiting configures.
|
||||||
|
rateLimiterReader flowcontrol.RateLimiter
|
||||||
|
rateLimiterWriter flowcontrol.RateLimiter
|
||||||
|
|
||||||
|
// ARM throttling configures.
|
||||||
|
RetryAfterReader time.Time
|
||||||
|
RetryAfterWriter time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
// New creates a new ContainerServiceClient client with ratelimiting.
|
||||||
|
func New(config *azclients.ClientConfig) *Client {
|
||||||
|
baseURI := config.ResourceManagerEndpoint
|
||||||
|
authorizer := config.Authorizer
|
||||||
|
armClient := armclient.New(authorizer, baseURI, "", APIVersion, config.Location, config.Backoff)
|
||||||
|
rateLimiterReader, rateLimiterWriter := azclients.NewRateLimiter(config.RateLimitConfig)
|
||||||
|
|
||||||
|
klog.V(2).Infof("Azure ContainerServiceClient (read ops) using rate limit config: QPS=%g, bucket=%d",
|
||||||
|
config.RateLimitConfig.CloudProviderRateLimitQPS,
|
||||||
|
config.RateLimitConfig.CloudProviderRateLimitBucket)
|
||||||
|
klog.V(2).Infof("Azure ContainerServiceClient (write ops) using rate limit config: QPS=%g, bucket=%d",
|
||||||
|
config.RateLimitConfig.CloudProviderRateLimitQPSWrite,
|
||||||
|
config.RateLimitConfig.CloudProviderRateLimitBucketWrite)
|
||||||
|
|
||||||
|
client := &Client{
|
||||||
|
armClient: armClient,
|
||||||
|
rateLimiterReader: rateLimiterReader,
|
||||||
|
rateLimiterWriter: rateLimiterWriter,
|
||||||
|
subscriptionID: config.SubscriptionID,
|
||||||
|
}
|
||||||
|
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets a ManagedCluster.
|
||||||
|
func (c *Client) Get(ctx context.Context, resourceGroupName string, managedClusterName string) (containerservice.ManagedCluster, *retry.Error) {
|
||||||
|
mc := metrics.NewMetricContext("managed_clusters", "get", resourceGroupName, c.subscriptionID, "")
|
||||||
|
|
||||||
|
// Report errors if the client is rate limited.
|
||||||
|
if !c.rateLimiterReader.TryAccept() {
|
||||||
|
mc.RateLimitedCount()
|
||||||
|
return containerservice.ManagedCluster{}, retry.GetRateLimitError(false, "GetManagedCluster")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report errors if the client is throttled.
|
||||||
|
if c.RetryAfterReader.After(time.Now()) {
|
||||||
|
mc.ThrottledCount()
|
||||||
|
rerr := retry.GetThrottlingError("GetManagedCluster", "client throttled", c.RetryAfterReader)
|
||||||
|
return containerservice.ManagedCluster{}, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
result, rerr := c.getManagedCluster(ctx, resourceGroupName, managedClusterName)
|
||||||
|
mc.Observe(rerr.Error())
|
||||||
|
if rerr != nil {
|
||||||
|
if rerr.IsThrottled() {
|
||||||
|
// Update RetryAfterReader so that no more requests would be sent until RetryAfter expires.
|
||||||
|
c.RetryAfterReader = rerr.RetryAfter
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// getManagedCluster gets a ManagedCluster.
|
||||||
|
func (c *Client) getManagedCluster(ctx context.Context, resourceGroupName string, managedClusterName string) (containerservice.ManagedCluster, *retry.Error) {
|
||||||
|
resourceID := armclient.GetResourceID(
|
||||||
|
c.subscriptionID,
|
||||||
|
resourceGroupName,
|
||||||
|
"Microsoft.ContainerService/managedClusters",
|
||||||
|
managedClusterName,
|
||||||
|
)
|
||||||
|
result := containerservice.ManagedCluster{}
|
||||||
|
|
||||||
|
response, rerr := c.armClient.GetResource(ctx, resourceID, "")
|
||||||
|
defer c.armClient.CloseResponse(ctx, response)
|
||||||
|
if rerr != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "managedcluster.get.request", resourceID, rerr.Error())
|
||||||
|
return result, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
err := autorest.Respond(
|
||||||
|
response,
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result))
|
||||||
|
if err != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "managedcluster.get.respond", resourceID, err)
|
||||||
|
return result, retry.GetError(response, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Response = autorest.Response{Response: response}
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets a list of ManagedClusters in the resource group.
|
||||||
|
func (c *Client) List(ctx context.Context, resourceGroupName string) ([]containerservice.ManagedCluster, *retry.Error) {
|
||||||
|
mc := metrics.NewMetricContext("managed_clusters", "list", resourceGroupName, c.subscriptionID, "")
|
||||||
|
|
||||||
|
// Report errors if the client is rate limited.
|
||||||
|
if !c.rateLimiterReader.TryAccept() {
|
||||||
|
mc.RateLimitedCount()
|
||||||
|
return nil, retry.GetRateLimitError(false, "ListManagedCluster")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report errors if the client is throttled.
|
||||||
|
if c.RetryAfterReader.After(time.Now()) {
|
||||||
|
mc.ThrottledCount()
|
||||||
|
rerr := retry.GetThrottlingError("ListManagedCluster", "client throttled", c.RetryAfterReader)
|
||||||
|
return nil, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
result, rerr := c.listManagedCluster(ctx, resourceGroupName)
|
||||||
|
mc.Observe(rerr.Error())
|
||||||
|
if rerr != nil {
|
||||||
|
if rerr.IsThrottled() {
|
||||||
|
// Update RetryAfterReader so that no more requests would be sent until RetryAfter expires.
|
||||||
|
c.RetryAfterReader = rerr.RetryAfter
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// listManagedCluster gets a list of ManagedClusters in the resource group.
|
||||||
|
func (c *Client) listManagedCluster(ctx context.Context, resourceGroupName string) ([]containerservice.ManagedCluster, *retry.Error) {
|
||||||
|
resourceID := fmt.Sprintf("/subscriptions/%s/resourceGroups/%s/providers/Microsoft.ContainerService/managedClusters",
|
||||||
|
autorest.Encode("path", c.subscriptionID),
|
||||||
|
autorest.Encode("path", resourceGroupName))
|
||||||
|
result := make([]containerservice.ManagedCluster, 0)
|
||||||
|
page := &ManagedClusterResultPage{}
|
||||||
|
page.fn = c.listNextResults
|
||||||
|
|
||||||
|
resp, rerr := c.armClient.GetResource(ctx, resourceID, "")
|
||||||
|
defer c.armClient.CloseResponse(ctx, resp)
|
||||||
|
if rerr != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "managedcluster.list.request", resourceID, rerr.Error())
|
||||||
|
return result, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
page.mclr, err = c.listResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "managedcluster.list.respond", resourceID, err)
|
||||||
|
return result, retry.GetError(resp, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for page.NotDone() {
|
||||||
|
result = append(result, *page.Response().Value...)
|
||||||
|
if err = page.NextWithContext(ctx); err != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "managedcluster.list.next", resourceID, err)
|
||||||
|
return result, retry.GetError(page.Response().Response.Response, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) listResponder(resp *http.Response) (result containerservice.ManagedClusterListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
autorest.ByIgnoring(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result))
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// managedClusterListResultPreparer prepares a request to retrieve the next set of results.
|
||||||
|
// It returns nil if no more results exist.
|
||||||
|
func (c *Client) managedClusterListResultPreparer(ctx context.Context, mclr containerservice.ManagedClusterListResult) (*http.Request, error) {
|
||||||
|
if mclr.NextLink == nil || len(to.String(mclr.NextLink)) < 1 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
decorators := []autorest.PrepareDecorator{
|
||||||
|
autorest.WithBaseURL(to.String(mclr.NextLink)),
|
||||||
|
}
|
||||||
|
return c.armClient.PrepareGetRequest(ctx, decorators...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// listNextResults retrieves the next set of results, if any.
|
||||||
|
func (c *Client) listNextResults(ctx context.Context, lastResults containerservice.ManagedClusterListResult) (result containerservice.ManagedClusterListResult, err error) {
|
||||||
|
req, err := c.managedClusterListResultPreparer(ctx, lastResults)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "managedclusterclient", "listNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, rerr := c.armClient.Send(ctx, req)
|
||||||
|
defer c.armClient.CloseResponse(ctx, resp)
|
||||||
|
if rerr != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(rerr.Error(), "managedclusterclient", "listNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = c.listResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "managedclusterclient", "listNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ManagedClusterResultPage contains a page of ManagedCluster values.
|
||||||
|
type ManagedClusterResultPage struct {
|
||||||
|
fn func(context.Context, containerservice.ManagedClusterListResult) (containerservice.ManagedClusterListResult, error)
|
||||||
|
mclr containerservice.ManagedClusterListResult
|
||||||
|
}
|
||||||
|
|
||||||
|
// NextWithContext advances to the next page of values. If there was an error making
|
||||||
|
// the request the page does not advance and the error is returned.
|
||||||
|
func (page *ManagedClusterResultPage) NextWithContext(ctx context.Context) (err error) {
|
||||||
|
next, err := page.fn(ctx, page.mclr)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
page.mclr = next
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next advances to the next page of values. If there was an error making
|
||||||
|
// the request the page does not advance and the error is returned.
|
||||||
|
// Deprecated: Use NextWithContext() instead.
|
||||||
|
func (page *ManagedClusterResultPage) Next() error {
|
||||||
|
return page.NextWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotDone returns true if the page enumeration should be started or is not yet complete.
|
||||||
|
func (page ManagedClusterResultPage) NotDone() bool {
|
||||||
|
return !page.mclr.IsEmpty()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Response returns the raw server response from the last page request.
|
||||||
|
func (page ManagedClusterResultPage) Response() containerservice.ManagedClusterListResult {
|
||||||
|
return page.mclr
|
||||||
|
}
|
||||||
|
|
||||||
|
// Values returns the slice of values for the current page or nil if there are no values.
|
||||||
|
func (page ManagedClusterResultPage) Values() []containerservice.ManagedCluster {
|
||||||
|
if page.mclr.IsEmpty() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return *page.mclr.Value
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate creates or updates a ManagedCluster.
|
||||||
|
func (c *Client) CreateOrUpdate(ctx context.Context, resourceGroupName string, managedClusterName string, parameters containerservice.ManagedCluster, etag string) *retry.Error {
|
||||||
|
mc := metrics.NewMetricContext("managed_clusters", "create_or_update", resourceGroupName, c.subscriptionID, "")
|
||||||
|
|
||||||
|
// Report errors if the client is rate limited.
|
||||||
|
if !c.rateLimiterWriter.TryAccept() {
|
||||||
|
mc.RateLimitedCount()
|
||||||
|
return retry.GetRateLimitError(true, "CreateOrUpdateManagedCluster")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report errors if the client is throttled.
|
||||||
|
if c.RetryAfterWriter.After(time.Now()) {
|
||||||
|
mc.ThrottledCount()
|
||||||
|
rerr := retry.GetThrottlingError("CreateOrUpdateManagedCluster", "client throttled", c.RetryAfterWriter)
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
rerr := c.createOrUpdateManagedCluster(ctx, resourceGroupName, managedClusterName, parameters, etag)
|
||||||
|
mc.Observe(rerr.Error())
|
||||||
|
if rerr != nil {
|
||||||
|
if rerr.IsThrottled() {
|
||||||
|
// Update RetryAfterReader so that no more requests would be sent until RetryAfter expires.
|
||||||
|
c.RetryAfterWriter = rerr.RetryAfter
|
||||||
|
}
|
||||||
|
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// createOrUpdateManagedCluster creates or updates a ManagedCluster.
|
||||||
|
func (c *Client) createOrUpdateManagedCluster(ctx context.Context, resourceGroupName string, managedClusterName string, parameters containerservice.ManagedCluster, etag string) *retry.Error {
|
||||||
|
resourceID := armclient.GetResourceID(
|
||||||
|
c.subscriptionID,
|
||||||
|
resourceGroupName,
|
||||||
|
"Microsoft.ContainerService/managedClusters",
|
||||||
|
managedClusterName,
|
||||||
|
)
|
||||||
|
decorators := []autorest.PrepareDecorator{
|
||||||
|
autorest.WithPathParameters("{resourceID}", map[string]interface{}{"resourceID": resourceID}),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
}
|
||||||
|
if etag != "" {
|
||||||
|
decorators = append(decorators, autorest.WithHeader("If-Match", autorest.String(etag)))
|
||||||
|
}
|
||||||
|
|
||||||
|
response, rerr := c.armClient.PutResourceWithDecorators(ctx, resourceID, parameters, decorators)
|
||||||
|
defer c.armClient.CloseResponse(ctx, response)
|
||||||
|
if rerr != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "managedCluster.put.request", resourceID, rerr.Error())
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
if response != nil && response.StatusCode != http.StatusNoContent {
|
||||||
|
_, rerr = c.createOrUpdateResponder(response)
|
||||||
|
if rerr != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "managedCluster.put.respond", resourceID, rerr.Error())
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) createOrUpdateResponder(resp *http.Response) (*containerservice.ManagedCluster, *retry.Error) {
|
||||||
|
result := &containerservice.ManagedCluster{}
|
||||||
|
err := autorest.Respond(
|
||||||
|
resp,
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
||||||
|
autorest.ByUnmarshallingJSON(&result))
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, retry.GetError(resp, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete deletes a ManagedCluster by name.
|
||||||
|
func (c *Client) Delete(ctx context.Context, resourceGroupName string, managedClusterName string) *retry.Error {
|
||||||
|
mc := metrics.NewMetricContext("managed_clusters", "delete", resourceGroupName, c.subscriptionID, "")
|
||||||
|
|
||||||
|
// Report errors if the client is rate limited.
|
||||||
|
if !c.rateLimiterWriter.TryAccept() {
|
||||||
|
mc.RateLimitedCount()
|
||||||
|
return retry.GetRateLimitError(true, "DeleteManagedCluster")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report errors if the client is throttled.
|
||||||
|
if c.RetryAfterWriter.After(time.Now()) {
|
||||||
|
mc.ThrottledCount()
|
||||||
|
rerr := retry.GetThrottlingError("DeleteManagedCluster", "client throttled", c.RetryAfterWriter)
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
rerr := c.deleteManagedCluster(ctx, resourceGroupName, managedClusterName)
|
||||||
|
mc.Observe(rerr.Error())
|
||||||
|
if rerr != nil {
|
||||||
|
if rerr.IsThrottled() {
|
||||||
|
// Update RetryAfterReader so that no more requests would be sent until RetryAfter expires.
|
||||||
|
c.RetryAfterWriter = rerr.RetryAfter
|
||||||
|
}
|
||||||
|
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// deleteManagedCluster deletes a ManagedCluster by name.
|
||||||
|
func (c *Client) deleteManagedCluster(ctx context.Context, resourceGroupName string, managedClusterName string) *retry.Error {
|
||||||
|
resourceID := armclient.GetResourceID(
|
||||||
|
c.subscriptionID,
|
||||||
|
resourceGroupName,
|
||||||
|
"Microsoft.ContainerService/managedClusters",
|
||||||
|
managedClusterName,
|
||||||
|
)
|
||||||
|
|
||||||
|
return c.armClient.DeleteResource(ctx, resourceID, "")
|
||||||
|
}
|
@ -0,0 +1,602 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package containerserviceclient
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/to"
|
||||||
|
"github.com/golang/mock/gomock"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
"k8s.io/client-go/util/flowcontrol"
|
||||||
|
azclients "k8s.io/legacy-cloud-providers/azure/clients"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/clients/armclient"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/clients/armclient/mockarmclient"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 2065-01-24 05:20:00 +0000 UTC
|
||||||
|
func getFutureTime() time.Time {
|
||||||
|
return time.Unix(3000000000, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTestManagedClusterClient(armClient armclient.Interface) *Client {
|
||||||
|
rateLimiterReader, rateLimiterWriter := azclients.NewRateLimiter(&azclients.RateLimitConfig{})
|
||||||
|
return &Client{
|
||||||
|
armClient: armClient,
|
||||||
|
subscriptionID: "subscriptionID",
|
||||||
|
rateLimiterReader: rateLimiterReader,
|
||||||
|
rateLimiterWriter: rateLimiterWriter,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTestManagedClusterClientWithNeverRateLimiter(armClient armclient.Interface) *Client {
|
||||||
|
rateLimiterReader := flowcontrol.NewFakeNeverRateLimiter()
|
||||||
|
rateLimiterWriter := flowcontrol.NewFakeNeverRateLimiter()
|
||||||
|
return &Client{
|
||||||
|
armClient: armClient,
|
||||||
|
subscriptionID: "subscriptionID",
|
||||||
|
rateLimiterReader: rateLimiterReader,
|
||||||
|
rateLimiterWriter: rateLimiterWriter,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTestManagedClusterClientWithRetryAfterReader(armClient armclient.Interface) *Client {
|
||||||
|
rateLimiterReader := flowcontrol.NewFakeAlwaysRateLimiter()
|
||||||
|
rateLimiterWriter := flowcontrol.NewFakeAlwaysRateLimiter()
|
||||||
|
return &Client{
|
||||||
|
armClient: armClient,
|
||||||
|
subscriptionID: "subscriptionID",
|
||||||
|
rateLimiterReader: rateLimiterReader,
|
||||||
|
rateLimiterWriter: rateLimiterWriter,
|
||||||
|
RetryAfterReader: getFutureTime(),
|
||||||
|
RetryAfterWriter: getFutureTime(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTestManagedCluster(name string) containerservice.ManagedCluster {
|
||||||
|
return containerservice.ManagedCluster{
|
||||||
|
ID: to.StringPtr(fmt.Sprintf("/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters/%s", name)),
|
||||||
|
Name: to.StringPtr(name),
|
||||||
|
Location: to.StringPtr("eastus"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestNew(t *testing.T) {
|
||||||
|
config := &azclients.ClientConfig{
|
||||||
|
SubscriptionID: "sub",
|
||||||
|
ResourceManagerEndpoint: "endpoint",
|
||||||
|
Location: "eastus",
|
||||||
|
RateLimitConfig: &azclients.RateLimitConfig{
|
||||||
|
CloudProviderRateLimit: true,
|
||||||
|
CloudProviderRateLimitQPS: 0.5,
|
||||||
|
CloudProviderRateLimitBucket: 1,
|
||||||
|
CloudProviderRateLimitQPSWrite: 0.5,
|
||||||
|
CloudProviderRateLimitBucketWrite: 1,
|
||||||
|
},
|
||||||
|
Backoff: &retry.Backoff{Steps: 1},
|
||||||
|
}
|
||||||
|
|
||||||
|
mcClient := New(config)
|
||||||
|
assert.Equal(t, "sub", mcClient.subscriptionID)
|
||||||
|
assert.NotEmpty(t, mcClient.rateLimiterReader)
|
||||||
|
assert.NotEmpty(t, mcClient.rateLimiterWriter)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGet(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters/cluster"
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusOK,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(response, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
expected := containerservice.ManagedCluster{}
|
||||||
|
expected.Response = autorest.Response{Response: response}
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
result, rerr := mcClient.Get(context.TODO(), "rg", "cluster")
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
assert.Nil(t, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetNeverRateLimiter(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
mcGetErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider rate limited(%s) for operation %q", "read", "GetManagedCluster"),
|
||||||
|
Retriable: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClientWithNeverRateLimiter(armClient)
|
||||||
|
expected := containerservice.ManagedCluster{}
|
||||||
|
result, rerr := mcClient.Get(context.TODO(), "rg", "cluster")
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
assert.Equal(t, mcGetErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetRetryAfterReader(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
mcGetErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider throttled for operation %s with reason %q", "GetManagedCluster", "client throttled"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: getFutureTime(),
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClientWithRetryAfterReader(armClient)
|
||||||
|
expected := containerservice.ManagedCluster{}
|
||||||
|
result, rerr := mcClient.Get(context.TODO(), "rg", "cluster")
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
assert.Equal(t, mcGetErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetThrottle(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters/cluster"
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusTooManyRequests,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
throttleErr := &retry.Error{
|
||||||
|
HTTPStatusCode: http.StatusTooManyRequests,
|
||||||
|
RawError: fmt.Errorf("error"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: time.Unix(100, 0),
|
||||||
|
}
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(response, throttleErr).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
result, rerr := mcClient.Get(context.TODO(), "rg", "cluster")
|
||||||
|
assert.Empty(t, result)
|
||||||
|
assert.Equal(t, throttleErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetNotFound(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters/cluster"
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusNotFound,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(response, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
expected := containerservice.ManagedCluster{Response: autorest.Response{}}
|
||||||
|
result, rerr := mcClient.Get(context.TODO(), "rg", "cluster")
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, http.StatusNotFound, rerr.HTTPStatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetInternalError(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters/cluster"
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusInternalServerError,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(response, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
expected := containerservice.ManagedCluster{Response: autorest.Response{}}
|
||||||
|
result, rerr := mcClient.Get(context.TODO(), "rg", "cluster")
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, http.StatusInternalServerError, rerr.HTTPStatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestList(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters"
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
mcList := []containerservice.ManagedCluster{getTestManagedCluster("cluster"), getTestManagedCluster("cluster1"), getTestManagedCluster("cluster2")}
|
||||||
|
responseBody, err := json.Marshal(containerservice.ManagedClusterListResult{Value: &mcList})
|
||||||
|
assert.Nil(t, err)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(
|
||||||
|
&http.Response{
|
||||||
|
StatusCode: http.StatusOK,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader(responseBody)),
|
||||||
|
}, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
result, rerr := mcClient.List(context.TODO(), "rg")
|
||||||
|
assert.Nil(t, rerr)
|
||||||
|
assert.Equal(t, 3, len(result))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListNextResultsMultiPages(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
prepareErr error
|
||||||
|
sendErr *retry.Error
|
||||||
|
statusCode int
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
prepareErr: nil,
|
||||||
|
sendErr: nil,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prepareErr: fmt.Errorf("error"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
sendErr: &retry.Error{RawError: fmt.Errorf("error")},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
lastResult := containerservice.ManagedClusterListResult{
|
||||||
|
NextLink: to.StringPtr("next"),
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
req := &http.Request{
|
||||||
|
Method: "GET",
|
||||||
|
}
|
||||||
|
armClient.EXPECT().PrepareGetRequest(gomock.Any(), gomock.Any()).Return(req, test.prepareErr)
|
||||||
|
if test.prepareErr == nil {
|
||||||
|
armClient.EXPECT().Send(gomock.Any(), req).Return(&http.Response{
|
||||||
|
StatusCode: http.StatusOK,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte(`{"foo":"bar"}`))),
|
||||||
|
}, test.sendErr)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any())
|
||||||
|
}
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
result, err := mcClient.listNextResults(context.TODO(), lastResult)
|
||||||
|
if test.prepareErr != nil || test.sendErr != nil {
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
} else {
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
if test.prepareErr != nil {
|
||||||
|
assert.Empty(t, result)
|
||||||
|
} else {
|
||||||
|
assert.NotEmpty(t, result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListNextResultsMultiPagesWithListResponderError(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
test := struct {
|
||||||
|
prepareErr error
|
||||||
|
sendErr *retry.Error
|
||||||
|
}{
|
||||||
|
prepareErr: nil,
|
||||||
|
sendErr: nil,
|
||||||
|
}
|
||||||
|
|
||||||
|
lastResult := containerservice.ManagedClusterListResult{
|
||||||
|
NextLink: to.StringPtr("next"),
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
req := &http.Request{
|
||||||
|
Method: "GET",
|
||||||
|
}
|
||||||
|
armClient.EXPECT().PrepareGetRequest(gomock.Any(), gomock.Any()).Return(req, test.prepareErr)
|
||||||
|
if test.prepareErr == nil {
|
||||||
|
armClient.EXPECT().Send(gomock.Any(), req).Return(&http.Response{
|
||||||
|
StatusCode: http.StatusNotFound,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte(`{"foo":"bar"}`))),
|
||||||
|
}, test.sendErr)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any())
|
||||||
|
}
|
||||||
|
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusNotFound,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewBuffer([]byte(`{"foo":"bar"}`))),
|
||||||
|
}
|
||||||
|
expected := containerservice.ManagedClusterListResult{}
|
||||||
|
expected.Response = autorest.Response{Response: response}
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
result, err := mcClient.listNextResults(context.TODO(), lastResult)
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListWithListResponderError(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters"
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
mcList := []containerservice.ManagedCluster{getTestManagedCluster("cluster"), getTestManagedCluster("cluster1"), getTestManagedCluster("cluster2")}
|
||||||
|
responseBody, err := json.Marshal(containerservice.ManagedClusterListResult{Value: &mcList})
|
||||||
|
assert.Nil(t, err)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(
|
||||||
|
&http.Response{
|
||||||
|
StatusCode: http.StatusNotFound,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader(responseBody)),
|
||||||
|
}, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
result, rerr := mcClient.List(context.TODO(), "rg")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, 0, len(result))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListNeverRateLimiter(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
mcListErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider rate limited(%s) for operation %q", "read", "ListManagedCluster"),
|
||||||
|
Retriable: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
mcClient := getTestManagedClusterClientWithNeverRateLimiter(armClient)
|
||||||
|
result, rerr := mcClient.List(context.TODO(), "rg")
|
||||||
|
assert.Equal(t, 0, len(result))
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, mcListErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListRetryAfterReader(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
mcListErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider throttled for operation %s with reason %q", "ListManagedCluster", "client throttled"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: getFutureTime(),
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
mcClient := getTestManagedClusterClientWithRetryAfterReader(armClient)
|
||||||
|
result, rerr := mcClient.List(context.TODO(), "rg")
|
||||||
|
assert.Equal(t, 0, len(result))
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, mcListErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListThrottle(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters"
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusTooManyRequests,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
throttleErr := &retry.Error{
|
||||||
|
HTTPStatusCode: http.StatusTooManyRequests,
|
||||||
|
RawError: fmt.Errorf("error"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: time.Unix(100, 0),
|
||||||
|
}
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(response, throttleErr).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
result, rerr := mcClient.List(context.TODO(), "rg")
|
||||||
|
assert.Empty(t, result)
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, throttleErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateOrUpdate(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
mc := getTestManagedCluster("cluster")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusOK,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte(""))),
|
||||||
|
}
|
||||||
|
armClient.EXPECT().PutResourceWithDecorators(gomock.Any(), to.String(mc.ID), mc, gomock.Any()).Return(response, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
rerr := mcClient.CreateOrUpdate(context.TODO(), "rg", "cluster", mc, "*")
|
||||||
|
assert.Nil(t, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateOrUpdateWithCreateOrUpdateResponderError(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
mc := getTestManagedCluster("cluster")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusNotFound,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte(""))),
|
||||||
|
}
|
||||||
|
armClient.EXPECT().PutResourceWithDecorators(gomock.Any(), to.String(mc.ID), mc, gomock.Any()).Return(response, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
rerr := mcClient.CreateOrUpdate(context.TODO(), "rg", "cluster", mc, "")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateOrUpdateNeverRateLimiter(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
mcCreateOrUpdateErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider rate limited(%s) for operation %q", "write", "CreateOrUpdateManagedCluster"),
|
||||||
|
Retriable: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClientWithNeverRateLimiter(armClient)
|
||||||
|
mc := getTestManagedCluster("cluster")
|
||||||
|
rerr := mcClient.CreateOrUpdate(context.TODO(), "rg", "cluster", mc, "")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, mcCreateOrUpdateErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateOrUpdateRetryAfterReader(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
mcCreateOrUpdateErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider throttled for operation %s with reason %q", "CreateOrUpdateManagedCluster", "client throttled"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: getFutureTime(),
|
||||||
|
}
|
||||||
|
|
||||||
|
mc := getTestManagedCluster("cluster")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClientWithRetryAfterReader(armClient)
|
||||||
|
rerr := mcClient.CreateOrUpdate(context.TODO(), "rg", "cluster", mc, "")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, mcCreateOrUpdateErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateOrUpdateThrottle(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusTooManyRequests,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
throttleErr := &retry.Error{
|
||||||
|
HTTPStatusCode: http.StatusTooManyRequests,
|
||||||
|
RawError: fmt.Errorf("error"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: time.Unix(100, 0),
|
||||||
|
}
|
||||||
|
|
||||||
|
mc := getTestManagedCluster("cluster")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().PutResourceWithDecorators(gomock.Any(), to.String(mc.ID), mc, gomock.Any()).Return(response, throttleErr).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
rerr := mcClient.CreateOrUpdate(context.TODO(), "rg", "cluster", mc, "")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, throttleErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDelete(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
mc := getTestManagedCluster("cluster")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().DeleteResource(gomock.Any(), to.String(mc.ID), "").Return(nil).Times(1)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
rerr := mcClient.Delete(context.TODO(), "rg", "cluster")
|
||||||
|
assert.Nil(t, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteNeverRateLimiter(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
mcDeleteErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider rate limited(%s) for operation %q", "write", "DeleteManagedCluster"),
|
||||||
|
Retriable: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClientWithNeverRateLimiter(armClient)
|
||||||
|
rerr := mcClient.Delete(context.TODO(), "rg", "cluster")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, mcDeleteErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteRetryAfterReader(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
mcDeleteErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider throttled for operation %s with reason %q", "DeleteManagedCluster", "client throttled"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: getFutureTime(),
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClientWithRetryAfterReader(armClient)
|
||||||
|
rerr := mcClient.Delete(context.TODO(), "rg", "cluster")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, mcDeleteErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteThrottle(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
throttleErr := &retry.Error{
|
||||||
|
HTTPStatusCode: http.StatusTooManyRequests,
|
||||||
|
RawError: fmt.Errorf("error"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: time.Unix(100, 0),
|
||||||
|
}
|
||||||
|
|
||||||
|
mc := getTestManagedCluster("cluster")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().DeleteResource(gomock.Any(), to.String(mc.ID), "").Return(throttleErr).Times(1)
|
||||||
|
|
||||||
|
mcClient := getTestManagedClusterClient(armClient)
|
||||||
|
rerr := mcClient.Delete(context.TODO(), "rg", "cluster")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, throttleErr, rerr)
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Package containerserviceclient implements the client for azure container service.
|
||||||
|
package containerserviceclient // import "k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient"
|
@ -0,0 +1,42 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package containerserviceclient
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// APIVersion is the API version for containerservice.
|
||||||
|
APIVersion = "2020-04-01"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Interface is the client interface for ContainerService.
|
||||||
|
// Don't forget to run the following command to generate the mock client:
|
||||||
|
// mockgen -source=$GOPATH/src/k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient/interface.go -package=mockcontainerserviceclient Interface > $GOPATH/src/k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient/mockcontainerserviceclient/interface.go
|
||||||
|
type Interface interface {
|
||||||
|
CreateOrUpdate(ctx context.Context, resourceGroupName string, managedClusterName string, parameters containerservice.ManagedCluster, etag string) *retry.Error
|
||||||
|
Delete(ctx context.Context, resourceGroupName string, managedClusterName string) *retry.Error
|
||||||
|
Get(ctx context.Context, resourceGroupName string, managedClusterName string) (containerservice.ManagedCluster, *retry.Error)
|
||||||
|
List(ctx context.Context, resourceGroupName string) ([]containerservice.ManagedCluster, *retry.Error)
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"doc.go",
|
||||||
|
"interface.go",
|
||||||
|
],
|
||||||
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient/mockcontainerserviceclient",
|
||||||
|
importpath = "k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient/mockcontainerserviceclient",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice:go_default_library",
|
||||||
|
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
@ -0,0 +1,20 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Package mockcontainerserviceclient implements the mock client for azure container service.
|
||||||
|
package mockcontainerserviceclient // import "k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient/mockcontainerserviceclient"
|
@ -0,0 +1,109 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mockcontainerserviceclient
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "context"
|
||||||
|
reflect "reflect"
|
||||||
|
|
||||||
|
containerservice "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice"
|
||||||
|
gomock "github.com/golang/mock/gomock"
|
||||||
|
retry "k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
|
)
|
||||||
|
|
||||||
|
// MockInterface is a mock of Interface interface
|
||||||
|
type MockInterface struct {
|
||||||
|
ctrl *gomock.Controller
|
||||||
|
recorder *MockInterfaceMockRecorder
|
||||||
|
}
|
||||||
|
|
||||||
|
// MockInterfaceMockRecorder is the mock recorder for MockInterface
|
||||||
|
type MockInterfaceMockRecorder struct {
|
||||||
|
mock *MockInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewMockInterface creates a new mock instance
|
||||||
|
func NewMockInterface(ctrl *gomock.Controller) *MockInterface {
|
||||||
|
mock := &MockInterface{ctrl: ctrl}
|
||||||
|
mock.recorder = &MockInterfaceMockRecorder{mock}
|
||||||
|
return mock
|
||||||
|
}
|
||||||
|
|
||||||
|
// EXPECT returns an object that allows the caller to indicate expected use
|
||||||
|
func (m *MockInterface) EXPECT() *MockInterfaceMockRecorder {
|
||||||
|
return m.recorder
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate mocks base method
|
||||||
|
func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, managedClusterName string, parameters containerservice.ManagedCluster, etag string) *retry.Error {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "CreateOrUpdate", ctx, resourceGroupName, managedClusterName, parameters, etag)
|
||||||
|
ret0, _ := ret[0].(*retry.Error)
|
||||||
|
return ret0
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate indicates an expected call of CreateOrUpdate
|
||||||
|
func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, managedClusterName, parameters, etag interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, managedClusterName, parameters, etag)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete mocks base method
|
||||||
|
func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, managedClusterName string) *retry.Error {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "Delete", ctx, resourceGroupName, managedClusterName)
|
||||||
|
ret0, _ := ret[0].(*retry.Error)
|
||||||
|
return ret0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete indicates an expected call of Delete
|
||||||
|
func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, managedClusterName interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, managedClusterName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get mocks base method
|
||||||
|
func (m *MockInterface) Get(ctx context.Context, resourceGroupName, managedClusterName string) (containerservice.ManagedCluster, *retry.Error) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "Get", ctx, resourceGroupName, managedClusterName)
|
||||||
|
ret0, _ := ret[0].(containerservice.ManagedCluster)
|
||||||
|
ret1, _ := ret[1].(*retry.Error)
|
||||||
|
return ret0, ret1
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get indicates an expected call of Get
|
||||||
|
func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, managedClusterName interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, managedClusterName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// List mocks base method
|
||||||
|
func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]containerservice.ManagedCluster, *retry.Error) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "List", ctx, resourceGroupName)
|
||||||
|
ret0, _ := ret[0].([]containerservice.ManagedCluster)
|
||||||
|
ret1, _ := ret[1].(*retry.Error)
|
||||||
|
return ret0, ret1
|
||||||
|
}
|
||||||
|
|
||||||
|
// List indicates an expected call of List
|
||||||
|
func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"azure_deploymentclient.go",
|
||||||
|
"doc.go",
|
||||||
|
"interface.go",
|
||||||
|
],
|
||||||
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/legacy-cloud-providers/azure/clients/deploymentclient",
|
||||||
|
importpath = "k8s.io/legacy-cloud-providers/azure/clients/deploymentclient",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/metrics:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
||||||
|
"//vendor/k8s.io/klog/v2:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [
|
||||||
|
":package-srcs",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/deploymentclient/mockdeploymentclient:all-srcs",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
|
go_test(
|
||||||
|
name = "go_default_test",
|
||||||
|
srcs = ["azure_deploymentclient_test.go"],
|
||||||
|
embed = [":go_default_library"],
|
||||||
|
deps = [
|
||||||
|
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient/mockarmclient:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
||||||
|
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
||||||
|
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
@ -0,0 +1,452 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package deploymentclient
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/to"
|
||||||
|
|
||||||
|
"k8s.io/client-go/util/flowcontrol"
|
||||||
|
"k8s.io/klog/v2"
|
||||||
|
azclients "k8s.io/legacy-cloud-providers/azure/clients"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/clients/armclient"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/metrics"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ Interface = &Client{}
|
||||||
|
|
||||||
|
// Client implements ContainerService client Interface.
|
||||||
|
type Client struct {
|
||||||
|
armClient armclient.Interface
|
||||||
|
subscriptionID string
|
||||||
|
|
||||||
|
// Rate limiting configures.
|
||||||
|
rateLimiterReader flowcontrol.RateLimiter
|
||||||
|
rateLimiterWriter flowcontrol.RateLimiter
|
||||||
|
|
||||||
|
// ARM throttling configures.
|
||||||
|
RetryAfterReader time.Time
|
||||||
|
RetryAfterWriter time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
// New creates a new ContainerServiceClient client with ratelimiting.
|
||||||
|
func New(config *azclients.ClientConfig) *Client {
|
||||||
|
baseURI := config.ResourceManagerEndpoint
|
||||||
|
authorizer := config.Authorizer
|
||||||
|
armClient := armclient.New(authorizer, baseURI, "", APIVersion, config.Location, config.Backoff)
|
||||||
|
rateLimiterReader, rateLimiterWriter := azclients.NewRateLimiter(config.RateLimitConfig)
|
||||||
|
|
||||||
|
klog.V(2).Infof("Azure DeploymentClient (read ops) using rate limit config: QPS=%g, bucket=%d",
|
||||||
|
config.RateLimitConfig.CloudProviderRateLimitQPS,
|
||||||
|
config.RateLimitConfig.CloudProviderRateLimitBucket)
|
||||||
|
klog.V(2).Infof("Azure DeploymentClient (write ops) using rate limit config: QPS=%g, bucket=%d",
|
||||||
|
config.RateLimitConfig.CloudProviderRateLimitQPSWrite,
|
||||||
|
config.RateLimitConfig.CloudProviderRateLimitBucketWrite)
|
||||||
|
|
||||||
|
client := &Client{
|
||||||
|
armClient: armClient,
|
||||||
|
rateLimiterReader: rateLimiterReader,
|
||||||
|
rateLimiterWriter: rateLimiterWriter,
|
||||||
|
subscriptionID: config.SubscriptionID,
|
||||||
|
}
|
||||||
|
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets a deployment
|
||||||
|
func (c *Client) Get(ctx context.Context, resourceGroupName string, deploymentName string) (resources.DeploymentExtended, *retry.Error) {
|
||||||
|
mc := metrics.NewMetricContext("deployments", "get", resourceGroupName, c.subscriptionID, "")
|
||||||
|
|
||||||
|
// Report errors if the client is rate limited.
|
||||||
|
if !c.rateLimiterReader.TryAccept() {
|
||||||
|
mc.RateLimitedCount()
|
||||||
|
return resources.DeploymentExtended{}, retry.GetRateLimitError(false, "GetDeployment")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report errors if the client is throttled.
|
||||||
|
if c.RetryAfterReader.After(time.Now()) {
|
||||||
|
mc.ThrottledCount()
|
||||||
|
rerr := retry.GetThrottlingError("GetDeployment", "client throttled", c.RetryAfterReader)
|
||||||
|
return resources.DeploymentExtended{}, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
result, rerr := c.getDeployment(ctx, resourceGroupName, deploymentName)
|
||||||
|
mc.Observe(rerr.Error())
|
||||||
|
if rerr != nil {
|
||||||
|
if rerr.IsThrottled() {
|
||||||
|
// Update RetryAfterReader so that no more requests would be sent until RetryAfter expires.
|
||||||
|
c.RetryAfterReader = rerr.RetryAfter
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// getDeployment gets a deployment.
|
||||||
|
func (c *Client) getDeployment(ctx context.Context, resourceGroupName string, deploymentName string) (resources.DeploymentExtended, *retry.Error) {
|
||||||
|
resourceID := armclient.GetResourceID(
|
||||||
|
c.subscriptionID,
|
||||||
|
resourceGroupName,
|
||||||
|
"Microsoft.Resources/deployments",
|
||||||
|
deploymentName,
|
||||||
|
)
|
||||||
|
result := resources.DeploymentExtended{}
|
||||||
|
|
||||||
|
response, rerr := c.armClient.GetResource(ctx, resourceID, "")
|
||||||
|
defer c.armClient.CloseResponse(ctx, response)
|
||||||
|
if rerr != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "deployment.get.request", resourceID, rerr.Error())
|
||||||
|
return result, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
err := autorest.Respond(
|
||||||
|
response,
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result))
|
||||||
|
if err != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "deployment.get.respond", resourceID, err)
|
||||||
|
return result, retry.GetError(response, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Response = autorest.Response{Response: response}
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets a list of deployments in the resource group.
|
||||||
|
func (c *Client) List(ctx context.Context, resourceGroupName string) ([]resources.DeploymentExtended, *retry.Error) {
|
||||||
|
mc := metrics.NewMetricContext("deployments", "list", resourceGroupName, c.subscriptionID, "")
|
||||||
|
|
||||||
|
// Report errors if the client is rate limited.
|
||||||
|
if !c.rateLimiterReader.TryAccept() {
|
||||||
|
mc.RateLimitedCount()
|
||||||
|
return nil, retry.GetRateLimitError(false, "ListDeployment")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report errors if the client is throttled.
|
||||||
|
if c.RetryAfterReader.After(time.Now()) {
|
||||||
|
mc.ThrottledCount()
|
||||||
|
rerr := retry.GetThrottlingError("ListDeployment", "client throttled", c.RetryAfterReader)
|
||||||
|
return nil, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
result, rerr := c.listDeployment(ctx, resourceGroupName)
|
||||||
|
mc.Observe(rerr.Error())
|
||||||
|
if rerr != nil {
|
||||||
|
if rerr.IsThrottled() {
|
||||||
|
// Update RetryAfterReader so that no more requests would be sent until RetryAfter expires.
|
||||||
|
c.RetryAfterReader = rerr.RetryAfter
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// listDeployment gets a list of deployments in the resource group.
|
||||||
|
func (c *Client) listDeployment(ctx context.Context, resourceGroupName string) ([]resources.DeploymentExtended, *retry.Error) {
|
||||||
|
resourceID := fmt.Sprintf("/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Resources/deployments",
|
||||||
|
autorest.Encode("path", c.subscriptionID),
|
||||||
|
autorest.Encode("path", resourceGroupName))
|
||||||
|
result := make([]resources.DeploymentExtended, 0)
|
||||||
|
page := &DeploymentResultPage{}
|
||||||
|
page.fn = c.listNextResults
|
||||||
|
|
||||||
|
resp, rerr := c.armClient.GetResource(ctx, resourceID, "")
|
||||||
|
defer c.armClient.CloseResponse(ctx, resp)
|
||||||
|
if rerr != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "deployment.list.request", resourceID, rerr.Error())
|
||||||
|
return result, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
page.dplr, err = c.listResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "deployment.list.respond", resourceID, err)
|
||||||
|
return result, retry.GetError(resp, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for page.NotDone() {
|
||||||
|
result = append(result, *page.Response().Value...)
|
||||||
|
if err = page.NextWithContext(ctx); err != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "deployment.list.next", resourceID, err)
|
||||||
|
return result, retry.GetError(page.Response().Response.Response, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) listResponder(resp *http.Response) (result resources.DeploymentListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
autorest.ByIgnoring(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result))
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// deploymentListResultPreparer prepares a request to retrieve the next set of results.
|
||||||
|
// It returns nil if no more results exist.
|
||||||
|
func (c *Client) deploymentListResultPreparer(ctx context.Context, dplr resources.DeploymentListResult) (*http.Request, error) {
|
||||||
|
if dplr.NextLink == nil || len(to.String(dplr.NextLink)) < 1 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
decorators := []autorest.PrepareDecorator{
|
||||||
|
autorest.WithBaseURL(to.String(dplr.NextLink)),
|
||||||
|
}
|
||||||
|
return c.armClient.PrepareGetRequest(ctx, decorators...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// listNextResults retrieves the next set of results, if any.
|
||||||
|
func (c *Client) listNextResults(ctx context.Context, lastResults resources.DeploymentListResult) (result resources.DeploymentListResult, err error) {
|
||||||
|
req, err := c.deploymentListResultPreparer(ctx, lastResults)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "deploymentclient", "listNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, rerr := c.armClient.Send(ctx, req)
|
||||||
|
defer c.armClient.CloseResponse(ctx, resp)
|
||||||
|
if rerr != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(rerr.Error(), "deploymentclient", "listNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = c.listResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "deploymentclient", "listNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentResultPage contains a page of deployments values.
|
||||||
|
type DeploymentResultPage struct {
|
||||||
|
fn func(context.Context, resources.DeploymentListResult) (resources.DeploymentListResult, error)
|
||||||
|
dplr resources.DeploymentListResult
|
||||||
|
}
|
||||||
|
|
||||||
|
// NextWithContext advances to the next page of values. If there was an error making
|
||||||
|
// the request the page does not advance and the error is returned.
|
||||||
|
func (page *DeploymentResultPage) NextWithContext(ctx context.Context) (err error) {
|
||||||
|
next, err := page.fn(ctx, page.dplr)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
page.dplr = next
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next advances to the next page of values. If there was an error making
|
||||||
|
// the request the page does not advance and the error is returned.
|
||||||
|
// Deprecated: Use NextWithContext() instead.
|
||||||
|
func (page *DeploymentResultPage) Next() error {
|
||||||
|
return page.NextWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotDone returns true if the page enumeration should be started or is not yet complete.
|
||||||
|
func (page DeploymentResultPage) NotDone() bool {
|
||||||
|
return !page.dplr.IsEmpty()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Response returns the raw server response from the last page request.
|
||||||
|
func (page DeploymentResultPage) Response() resources.DeploymentListResult {
|
||||||
|
return page.dplr
|
||||||
|
}
|
||||||
|
|
||||||
|
// Values returns the slice of values for the current page or nil if there are no values.
|
||||||
|
func (page DeploymentResultPage) Values() []resources.DeploymentExtended {
|
||||||
|
if page.dplr.IsEmpty() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return *page.dplr.Value
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate creates or updates a deployment.
|
||||||
|
func (c *Client) CreateOrUpdate(ctx context.Context, resourceGroupName string, deploymentName string, parameters resources.Deployment, etag string) *retry.Error {
|
||||||
|
mc := metrics.NewMetricContext("deployments", "create_or_update", resourceGroupName, c.subscriptionID, "")
|
||||||
|
|
||||||
|
// Report errors if the client is rate limited.
|
||||||
|
if !c.rateLimiterWriter.TryAccept() {
|
||||||
|
mc.RateLimitedCount()
|
||||||
|
return retry.GetRateLimitError(true, "CreateOrUpdateDeployment")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report errors if the client is throttled.
|
||||||
|
if c.RetryAfterWriter.After(time.Now()) {
|
||||||
|
mc.ThrottledCount()
|
||||||
|
rerr := retry.GetThrottlingError("CreateOrUpdateDeployment", "client throttled", c.RetryAfterWriter)
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
rerr := c.createOrUpdateDeployment(ctx, resourceGroupName, deploymentName, parameters, etag)
|
||||||
|
mc.Observe(rerr.Error())
|
||||||
|
if rerr != nil {
|
||||||
|
if rerr.IsThrottled() {
|
||||||
|
// Update RetryAfterReader so that no more requests would be sent until RetryAfter expires.
|
||||||
|
c.RetryAfterWriter = rerr.RetryAfter
|
||||||
|
}
|
||||||
|
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) createOrUpdateDeployment(ctx context.Context, resourceGroupName string, deploymentName string, parameters resources.Deployment, etag string) *retry.Error {
|
||||||
|
resourceID := armclient.GetResourceID(
|
||||||
|
c.subscriptionID,
|
||||||
|
resourceGroupName,
|
||||||
|
"Microsoft.Resources/deployments",
|
||||||
|
deploymentName,
|
||||||
|
)
|
||||||
|
decorators := []autorest.PrepareDecorator{
|
||||||
|
autorest.WithPathParameters("{resourceID}", map[string]interface{}{"resourceID": resourceID}),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
}
|
||||||
|
if etag != "" {
|
||||||
|
decorators = append(decorators, autorest.WithHeader("If-Match", autorest.String(etag)))
|
||||||
|
}
|
||||||
|
|
||||||
|
response, rerr := c.armClient.PutResourceWithDecorators(ctx, resourceID, parameters, decorators)
|
||||||
|
defer c.armClient.CloseResponse(ctx, response)
|
||||||
|
if rerr != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "deployment.put.request", resourceID, rerr.Error())
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
if response != nil && response.StatusCode != http.StatusNoContent {
|
||||||
|
_, rerr = c.createOrUpdateResponder(response)
|
||||||
|
if rerr != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "deployment.put.respond", resourceID, rerr.Error())
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) createOrUpdateResponder(resp *http.Response) (*resources.DeploymentExtended, *retry.Error) {
|
||||||
|
result := &resources.DeploymentExtended{}
|
||||||
|
err := autorest.Respond(
|
||||||
|
resp,
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
||||||
|
autorest.ByUnmarshallingJSON(&result))
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, retry.GetError(resp, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete deletes a deployment by name.
|
||||||
|
func (c *Client) Delete(ctx context.Context, resourceGroupName string, deploymentName string) *retry.Error {
|
||||||
|
mc := metrics.NewMetricContext("deployments", "delete", resourceGroupName, c.subscriptionID, "")
|
||||||
|
|
||||||
|
// Report errors if the client is rate limited.
|
||||||
|
if !c.rateLimiterWriter.TryAccept() {
|
||||||
|
mc.RateLimitedCount()
|
||||||
|
return retry.GetRateLimitError(true, "DeleteDeployment")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report errors if the client is throttled.
|
||||||
|
if c.RetryAfterWriter.After(time.Now()) {
|
||||||
|
mc.ThrottledCount()
|
||||||
|
rerr := retry.GetThrottlingError("DeleteDeployment", "client throttled", c.RetryAfterWriter)
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
rerr := c.deleteDeployment(ctx, resourceGroupName, deploymentName)
|
||||||
|
mc.Observe(rerr.Error())
|
||||||
|
if rerr != nil {
|
||||||
|
if rerr.IsThrottled() {
|
||||||
|
// Update RetryAfterReader so that no more requests would be sent until RetryAfter expires.
|
||||||
|
c.RetryAfterWriter = rerr.RetryAfter
|
||||||
|
}
|
||||||
|
|
||||||
|
return rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// deleteDeployment deletes a deployment by name.
|
||||||
|
func (c *Client) deleteDeployment(ctx context.Context, resourceGroupName string, deploymentName string) *retry.Error {
|
||||||
|
resourceID := armclient.GetResourceID(
|
||||||
|
c.subscriptionID,
|
||||||
|
resourceGroupName,
|
||||||
|
"Microsoft.Resources/deployments",
|
||||||
|
deploymentName,
|
||||||
|
)
|
||||||
|
|
||||||
|
return c.armClient.DeleteResource(ctx, resourceID, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplate exports the template used for specified deployment
|
||||||
|
func (c *Client) ExportTemplate(ctx context.Context, resourceGroupName string, deploymentName string) (result resources.DeploymentExportResult, rerr *retry.Error) {
|
||||||
|
mc := metrics.NewMetricContext("deployments", "export_template", resourceGroupName, c.subscriptionID, "")
|
||||||
|
|
||||||
|
// Report errors if the client is rate limited.
|
||||||
|
if !c.rateLimiterWriter.TryAccept() {
|
||||||
|
mc.RateLimitedCount()
|
||||||
|
return resources.DeploymentExportResult{}, retry.GetRateLimitError(true, "ExportTemplateDeployment")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report errors if the client is throttled.
|
||||||
|
if c.RetryAfterWriter.After(time.Now()) {
|
||||||
|
mc.ThrottledCount()
|
||||||
|
rerr := retry.GetThrottlingError("CreateOrUpdateDeployment", "client throttled", c.RetryAfterWriter)
|
||||||
|
return resources.DeploymentExportResult{}, rerr
|
||||||
|
}
|
||||||
|
|
||||||
|
resourceID := fmt.Sprintf("/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Resources/deployments/%s/exportTemplate",
|
||||||
|
autorest.Encode("path", c.subscriptionID),
|
||||||
|
autorest.Encode("path", resourceGroupName),
|
||||||
|
autorest.Encode("path", deploymentName))
|
||||||
|
response, rerr := c.armClient.PostResource(ctx, resourceID, "exportTemplate", struct{}{})
|
||||||
|
defer c.armClient.CloseResponse(ctx, response)
|
||||||
|
if rerr != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "deployment.exportTemplate.request", resourceID, rerr.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err := autorest.Respond(
|
||||||
|
response,
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result))
|
||||||
|
if err != nil {
|
||||||
|
klog.V(5).Infof("Received error in %s: resourceID: %s, error: %s", "deployment.exportTemplate.respond", resourceID, err)
|
||||||
|
return result, retry.GetError(response, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Response = autorest.Response{Response: response}
|
||||||
|
return
|
||||||
|
}
|
@ -0,0 +1,604 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package deploymentclient
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/to"
|
||||||
|
"github.com/golang/mock/gomock"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
"k8s.io/client-go/util/flowcontrol"
|
||||||
|
azclients "k8s.io/legacy-cloud-providers/azure/clients"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/clients/armclient"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/clients/armclient/mockarmclient"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 2065-01-24 05:20:00 +0000 UTC
|
||||||
|
func getFutureTime() time.Time {
|
||||||
|
return time.Unix(3000000000, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTestDeploymentClient(armClient armclient.Interface) *Client {
|
||||||
|
rateLimiterReader, rateLimiterWriter := azclients.NewRateLimiter(&azclients.RateLimitConfig{})
|
||||||
|
return &Client{
|
||||||
|
armClient: armClient,
|
||||||
|
subscriptionID: "subscriptionID",
|
||||||
|
rateLimiterReader: rateLimiterReader,
|
||||||
|
rateLimiterWriter: rateLimiterWriter,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTestDeploymentClientWithNeverRateLimiter(armClient armclient.Interface) *Client {
|
||||||
|
rateLimiterReader := flowcontrol.NewFakeNeverRateLimiter()
|
||||||
|
rateLimiterWriter := flowcontrol.NewFakeNeverRateLimiter()
|
||||||
|
return &Client{
|
||||||
|
armClient: armClient,
|
||||||
|
subscriptionID: "subscriptionID",
|
||||||
|
rateLimiterReader: rateLimiterReader,
|
||||||
|
rateLimiterWriter: rateLimiterWriter,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTestDeploymentClientWithRetryAfterReader(armClient armclient.Interface) *Client {
|
||||||
|
rateLimiterReader := flowcontrol.NewFakeAlwaysRateLimiter()
|
||||||
|
rateLimiterWriter := flowcontrol.NewFakeAlwaysRateLimiter()
|
||||||
|
return &Client{
|
||||||
|
armClient: armClient,
|
||||||
|
subscriptionID: "subscriptionID",
|
||||||
|
rateLimiterReader: rateLimiterReader,
|
||||||
|
rateLimiterWriter: rateLimiterWriter,
|
||||||
|
RetryAfterReader: getFutureTime(),
|
||||||
|
RetryAfterWriter: getFutureTime(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTestDeploymentExtended(name string) resources.DeploymentExtended {
|
||||||
|
return resources.DeploymentExtended{
|
||||||
|
ID: to.StringPtr(fmt.Sprintf("/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.Resources/deployments/%s", name)),
|
||||||
|
Name: to.StringPtr(name),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestNew(t *testing.T) {
|
||||||
|
config := &azclients.ClientConfig{
|
||||||
|
SubscriptionID: "sub",
|
||||||
|
ResourceManagerEndpoint: "endpoint",
|
||||||
|
Location: "eastus",
|
||||||
|
RateLimitConfig: &azclients.RateLimitConfig{
|
||||||
|
CloudProviderRateLimit: true,
|
||||||
|
CloudProviderRateLimitQPS: 0.5,
|
||||||
|
CloudProviderRateLimitBucket: 1,
|
||||||
|
CloudProviderRateLimitQPSWrite: 0.5,
|
||||||
|
CloudProviderRateLimitBucketWrite: 1,
|
||||||
|
},
|
||||||
|
Backoff: &retry.Backoff{Steps: 1},
|
||||||
|
}
|
||||||
|
dpClient := New(config)
|
||||||
|
assert.Equal(t, "sub", dpClient.subscriptionID)
|
||||||
|
assert.NotEmpty(t, dpClient.rateLimiterReader)
|
||||||
|
assert.NotEmpty(t, dpClient.rateLimiterWriter)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGet(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.Resources/deployments/dep"
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusOK,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(response, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
expected := resources.DeploymentExtended{}
|
||||||
|
expected.Response = autorest.Response{Response: response}
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
result, rerr := dpClient.Get(context.TODO(), "rg", "dep")
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
assert.Nil(t, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetNeverRateLimiter(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dpGetErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider rate limited(%s) for operation %q", "read", "GetDeployment"),
|
||||||
|
Retriable: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClientWithNeverRateLimiter(armClient)
|
||||||
|
expected := resources.DeploymentExtended{}
|
||||||
|
result, rerr := dpClient.Get(context.TODO(), "rg", "dep")
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
assert.Equal(t, dpGetErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetRetryAfterReader(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dpGetErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider throttled for operation %s with reason %q", "GetDeployment", "client throttled"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: getFutureTime(),
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClientWithRetryAfterReader(armClient)
|
||||||
|
expected := resources.DeploymentExtended{}
|
||||||
|
result, rerr := dpClient.Get(context.TODO(), "rg", "dep")
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
assert.Equal(t, dpGetErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetThrottle(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.Resources/deployments/dep"
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusTooManyRequests,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
throttleErr := &retry.Error{
|
||||||
|
HTTPStatusCode: http.StatusTooManyRequests,
|
||||||
|
RawError: fmt.Errorf("error"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: time.Unix(100, 0),
|
||||||
|
}
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(response, throttleErr).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
result, rerr := dpClient.Get(context.TODO(), "rg", "dep")
|
||||||
|
assert.Empty(t, result)
|
||||||
|
assert.Equal(t, throttleErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetNotFound(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.Resources/deployments/dep"
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusNotFound,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(response, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
expected := resources.DeploymentExtended{Response: autorest.Response{}}
|
||||||
|
result, rerr := dpClient.Get(context.TODO(), "rg", "dep")
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, http.StatusNotFound, rerr.HTTPStatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetInternalError(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.Resources/deployments/dep"
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusInternalServerError,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(response, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
expected := resources.DeploymentExtended{Response: autorest.Response{}}
|
||||||
|
result, rerr := dpClient.Get(context.TODO(), "rg", "dep")
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, http.StatusInternalServerError, rerr.HTTPStatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestList(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.Resources/deployments"
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
dpList := []resources.DeploymentExtended{getTestDeploymentExtended("dep"), getTestDeploymentExtended("dep1"), getTestDeploymentExtended("dep2")}
|
||||||
|
responseBody, err := json.Marshal(resources.DeploymentListResult{Value: &dpList})
|
||||||
|
assert.Nil(t, err)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(
|
||||||
|
&http.Response{
|
||||||
|
StatusCode: http.StatusOK,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader(responseBody)),
|
||||||
|
}, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
result, rerr := dpClient.List(context.TODO(), "rg")
|
||||||
|
assert.Nil(t, rerr)
|
||||||
|
assert.Equal(t, 3, len(result))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListNextResultsMultiPages(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
prepareErr error
|
||||||
|
sendErr *retry.Error
|
||||||
|
statusCode int
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
prepareErr: nil,
|
||||||
|
sendErr: nil,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prepareErr: fmt.Errorf("error"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
sendErr: &retry.Error{RawError: fmt.Errorf("error")},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
lastResult := resources.DeploymentListResult{
|
||||||
|
NextLink: to.StringPtr("next"),
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
req := &http.Request{
|
||||||
|
Method: "GET",
|
||||||
|
}
|
||||||
|
armClient.EXPECT().PrepareGetRequest(gomock.Any(), gomock.Any()).Return(req, test.prepareErr)
|
||||||
|
if test.prepareErr == nil {
|
||||||
|
armClient.EXPECT().Send(gomock.Any(), req).Return(&http.Response{
|
||||||
|
StatusCode: http.StatusOK,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte(`{"foo":"bar"}`))),
|
||||||
|
}, test.sendErr)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any())
|
||||||
|
}
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
result, err := dpClient.listNextResults(context.TODO(), lastResult)
|
||||||
|
if test.prepareErr != nil || test.sendErr != nil {
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
} else {
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
if test.prepareErr != nil {
|
||||||
|
assert.Empty(t, result)
|
||||||
|
} else {
|
||||||
|
assert.NotEmpty(t, result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListNextResultsMultiPagesWithListResponderError(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
test := struct {
|
||||||
|
prepareErr error
|
||||||
|
sendErr *retry.Error
|
||||||
|
}{
|
||||||
|
prepareErr: nil,
|
||||||
|
sendErr: nil,
|
||||||
|
}
|
||||||
|
|
||||||
|
lastResult := resources.DeploymentListResult{
|
||||||
|
NextLink: to.StringPtr("next"),
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
req := &http.Request{
|
||||||
|
Method: "GET",
|
||||||
|
}
|
||||||
|
armClient.EXPECT().PrepareGetRequest(gomock.Any(), gomock.Any()).Return(req, test.prepareErr)
|
||||||
|
if test.prepareErr == nil {
|
||||||
|
armClient.EXPECT().Send(gomock.Any(), req).Return(&http.Response{
|
||||||
|
StatusCode: http.StatusNotFound,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte(`{"foo":"bar"}`))),
|
||||||
|
}, test.sendErr)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any())
|
||||||
|
}
|
||||||
|
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusNotFound,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewBuffer([]byte(`{"foo":"bar"}`))),
|
||||||
|
}
|
||||||
|
expected := resources.DeploymentListResult{}
|
||||||
|
expected.Response = autorest.Response{Response: response}
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
result, err := dpClient.listNextResults(context.TODO(), lastResult)
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
assert.Equal(t, expected, result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListWithListResponderError(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.Resources/deployments"
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
dpList := []resources.DeploymentExtended{getTestDeploymentExtended("dep"), getTestDeploymentExtended("dep1"), getTestDeploymentExtended("dep2")}
|
||||||
|
responseBody, err := json.Marshal(resources.DeploymentListResult{Value: &dpList})
|
||||||
|
assert.Nil(t, err)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(
|
||||||
|
&http.Response{
|
||||||
|
StatusCode: http.StatusNotFound,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader(responseBody)),
|
||||||
|
}, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
result, rerr := dpClient.List(context.TODO(), "rg")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, 0, len(result))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListNeverRateLimiter(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dpListErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider rate limited(%s) for operation %q", "read", "ListDeployment"),
|
||||||
|
Retriable: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
dpClient := getTestDeploymentClientWithNeverRateLimiter(armClient)
|
||||||
|
result, rerr := dpClient.List(context.TODO(), "rg")
|
||||||
|
assert.Equal(t, 0, len(result))
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, dpListErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListRetryAfterReader(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dpListErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider throttled for operation %s with reason %q", "ListDeployment", "client throttled"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: getFutureTime(),
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
dpClient := getTestDeploymentClientWithRetryAfterReader(armClient)
|
||||||
|
result, rerr := dpClient.List(context.TODO(), "rg")
|
||||||
|
assert.Equal(t, 0, len(result))
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, dpListErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListThrottle(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
resourceID := "/subscriptions/subscriptionID/resourceGroups/rg/providers/Microsoft.Resources/deployments"
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusTooManyRequests,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
throttleErr := &retry.Error{
|
||||||
|
HTTPStatusCode: http.StatusTooManyRequests,
|
||||||
|
RawError: fmt.Errorf("error"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: time.Unix(100, 0),
|
||||||
|
}
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().GetResource(gomock.Any(), resourceID, "").Return(response, throttleErr).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
result, rerr := dpClient.List(context.TODO(), "rg")
|
||||||
|
assert.Empty(t, result)
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, throttleErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateOrUpdate(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dp := resources.Deployment{}
|
||||||
|
dpExtended := getTestDeploymentExtended("dep")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusOK,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte(""))),
|
||||||
|
}
|
||||||
|
armClient.EXPECT().PutResourceWithDecorators(gomock.Any(), to.String(dpExtended.ID), dp, gomock.Any()).Return(response, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
rerr := dpClient.CreateOrUpdate(context.TODO(), "rg", "dep", dp, "*")
|
||||||
|
assert.Nil(t, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateOrUpdateWithCreateOrUpdateResponderError(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dp := resources.Deployment{}
|
||||||
|
dpExtended := getTestDeploymentExtended("dep")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusNotFound,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte(""))),
|
||||||
|
}
|
||||||
|
armClient.EXPECT().PutResourceWithDecorators(gomock.Any(), to.String(dpExtended.ID), dp, gomock.Any()).Return(response, nil).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
rerr := dpClient.CreateOrUpdate(context.TODO(), "rg", "dep", dp, "")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateOrUpdateNeverRateLimiter(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dpCreateOrUpdateErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider rate limited(%s) for operation %q", "write", "CreateOrUpdateDeployment"),
|
||||||
|
Retriable: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClientWithNeverRateLimiter(armClient)
|
||||||
|
dp := resources.Deployment{}
|
||||||
|
rerr := dpClient.CreateOrUpdate(context.TODO(), "rg", "dep", dp, "")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, dpCreateOrUpdateErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateOrUpdateRetryAfterReader(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dpCreateOrUpdateErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider throttled for operation %s with reason %q", "CreateOrUpdateDeployment", "client throttled"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: getFutureTime(),
|
||||||
|
}
|
||||||
|
|
||||||
|
dp := resources.Deployment{}
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
mcClient := getTestDeploymentClientWithRetryAfterReader(armClient)
|
||||||
|
rerr := mcClient.CreateOrUpdate(context.TODO(), "rg", "dep", dp, "")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, dpCreateOrUpdateErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateOrUpdateThrottle(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
response := &http.Response{
|
||||||
|
StatusCode: http.StatusTooManyRequests,
|
||||||
|
Body: ioutil.NopCloser(bytes.NewReader([]byte("{}"))),
|
||||||
|
}
|
||||||
|
throttleErr := &retry.Error{
|
||||||
|
HTTPStatusCode: http.StatusTooManyRequests,
|
||||||
|
RawError: fmt.Errorf("error"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: time.Unix(100, 0),
|
||||||
|
}
|
||||||
|
|
||||||
|
dp := resources.Deployment{}
|
||||||
|
dpExtended := getTestDeploymentExtended("dep")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().PutResourceWithDecorators(gomock.Any(), to.String(dpExtended.ID), dp, gomock.Any()).Return(response, throttleErr).Times(1)
|
||||||
|
armClient.EXPECT().CloseResponse(gomock.Any(), gomock.Any()).Times(1)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
rerr := dpClient.CreateOrUpdate(context.TODO(), "rg", "dep", dp, "")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, throttleErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDelete(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dp := getTestDeploymentExtended("dep")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().DeleteResource(gomock.Any(), to.String(dp.ID), "").Return(nil).Times(1)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
rerr := dpClient.Delete(context.TODO(), "rg", "dep")
|
||||||
|
assert.Nil(t, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteNeverRateLimiter(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dpDeleteErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider rate limited(%s) for operation %q", "write", "DeleteDeployment"),
|
||||||
|
Retriable: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClientWithNeverRateLimiter(armClient)
|
||||||
|
rerr := dpClient.Delete(context.TODO(), "rg", "dep")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, dpDeleteErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteRetryAfterReader(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
dpDeleteErr := &retry.Error{
|
||||||
|
RawError: fmt.Errorf("azure cloud provider throttled for operation %s with reason %q", "DeleteDeployment", "client throttled"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: getFutureTime(),
|
||||||
|
}
|
||||||
|
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClientWithRetryAfterReader(armClient)
|
||||||
|
rerr := dpClient.Delete(context.TODO(), "rg", "dep")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, dpDeleteErr, rerr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteThrottle(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
defer ctrl.Finish()
|
||||||
|
|
||||||
|
throttleErr := &retry.Error{
|
||||||
|
HTTPStatusCode: http.StatusTooManyRequests,
|
||||||
|
RawError: fmt.Errorf("error"),
|
||||||
|
Retriable: true,
|
||||||
|
RetryAfter: time.Unix(100, 0),
|
||||||
|
}
|
||||||
|
|
||||||
|
dp := getTestDeploymentExtended("dep")
|
||||||
|
armClient := mockarmclient.NewMockInterface(ctrl)
|
||||||
|
armClient.EXPECT().DeleteResource(gomock.Any(), to.String(dp.ID), "").Return(throttleErr).Times(1)
|
||||||
|
|
||||||
|
dpClient := getTestDeploymentClient(armClient)
|
||||||
|
rerr := dpClient.Delete(context.TODO(), "rg", "dep")
|
||||||
|
assert.NotNil(t, rerr)
|
||||||
|
assert.Equal(t, throttleErr, rerr)
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Package deploymentclient implements the client for azure deployments.
|
||||||
|
package deploymentclient // import "k8s.io/legacy-cloud-providers/azure/clients/deploymentclient"
|
@ -0,0 +1,42 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package deploymentclient
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// APIVersion is the API version for resources.
|
||||||
|
APIVersion = "2017-05-10"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Interface is the client interface for Deployments.
|
||||||
|
// Don't forget to run the following command to generate the mock client:
|
||||||
|
// mockgen -source=$GOPATH/src/k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers/azure/clients/deploymentclient/interface.go -package=mockdeploymentclient Interface > $GOPATH/src/k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers/azure/clients/deploymentclient/mockdeploymentclient/interface.go
|
||||||
|
type Interface interface {
|
||||||
|
Get(ctx context.Context, resourceGroupName string, deploymentName string) (resources.DeploymentExtended, *retry.Error)
|
||||||
|
List(ctx context.Context, resourceGroupName string) ([]resources.DeploymentExtended, *retry.Error)
|
||||||
|
ExportTemplate(ctx context.Context, resourceGroupName string, deploymentName string) (result resources.DeploymentExportResult, rerr *retry.Error)
|
||||||
|
CreateOrUpdate(ctx context.Context, resourceGroupName string, managedClusterName string, parameters resources.Deployment, etag string) *retry.Error
|
||||||
|
Delete(ctx context.Context, resourceGroupName string, deploymentName string) *retry.Error
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"doc.go",
|
||||||
|
"interface.go",
|
||||||
|
],
|
||||||
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/legacy-cloud-providers/azure/clients/deploymentclient/mockdeploymentclient",
|
||||||
|
importpath = "k8s.io/legacy-cloud-providers/azure/clients/deploymentclient/mockdeploymentclient",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources:go_default_library",
|
||||||
|
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
@ -0,0 +1,20 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Package mockdeploymentclient implements the mock client for azure deployments.
|
||||||
|
package mockdeploymentclient // import "k8s.io/legacy-cloud-providers/azure/clients/deploymentclient/mockdeploymentclient"
|
@ -0,0 +1,124 @@
|
|||||||
|
// +build !providerless
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mockdeploymentclient
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "context"
|
||||||
|
reflect "reflect"
|
||||||
|
|
||||||
|
resources "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources"
|
||||||
|
gomock "github.com/golang/mock/gomock"
|
||||||
|
retry "k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
|
)
|
||||||
|
|
||||||
|
// MockInterface is a mock of Interface interface
|
||||||
|
type MockInterface struct {
|
||||||
|
ctrl *gomock.Controller
|
||||||
|
recorder *MockInterfaceMockRecorder
|
||||||
|
}
|
||||||
|
|
||||||
|
// MockInterfaceMockRecorder is the mock recorder for MockInterface
|
||||||
|
type MockInterfaceMockRecorder struct {
|
||||||
|
mock *MockInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewMockInterface creates a new mock instance
|
||||||
|
func NewMockInterface(ctrl *gomock.Controller) *MockInterface {
|
||||||
|
mock := &MockInterface{ctrl: ctrl}
|
||||||
|
mock.recorder = &MockInterfaceMockRecorder{mock}
|
||||||
|
return mock
|
||||||
|
}
|
||||||
|
|
||||||
|
// EXPECT returns an object that allows the caller to indicate expected use
|
||||||
|
func (m *MockInterface) EXPECT() *MockInterfaceMockRecorder {
|
||||||
|
return m.recorder
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get mocks base method
|
||||||
|
func (m *MockInterface) Get(ctx context.Context, resourceGroupName, deploymentName string) (resources.DeploymentExtended, *retry.Error) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "Get", ctx, resourceGroupName, deploymentName)
|
||||||
|
ret0, _ := ret[0].(resources.DeploymentExtended)
|
||||||
|
ret1, _ := ret[1].(*retry.Error)
|
||||||
|
return ret0, ret1
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get indicates an expected call of Get
|
||||||
|
func (mr *MockInterfaceMockRecorder) Get(ctx, resourceGroupName, deploymentName interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInterface)(nil).Get), ctx, resourceGroupName, deploymentName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// List mocks base method
|
||||||
|
func (m *MockInterface) List(ctx context.Context, resourceGroupName string) ([]resources.DeploymentExtended, *retry.Error) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "List", ctx, resourceGroupName)
|
||||||
|
ret0, _ := ret[0].([]resources.DeploymentExtended)
|
||||||
|
ret1, _ := ret[1].(*retry.Error)
|
||||||
|
return ret0, ret1
|
||||||
|
}
|
||||||
|
|
||||||
|
// List indicates an expected call of List
|
||||||
|
func (mr *MockInterfaceMockRecorder) List(ctx, resourceGroupName interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockInterface)(nil).List), ctx, resourceGroupName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplate mocks base method
|
||||||
|
func (m *MockInterface) ExportTemplate(ctx context.Context, resourceGroupName, deploymentName string) (resources.DeploymentExportResult, *retry.Error) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "ExportTemplate", ctx, resourceGroupName, deploymentName)
|
||||||
|
ret0, _ := ret[0].(resources.DeploymentExportResult)
|
||||||
|
ret1, _ := ret[1].(*retry.Error)
|
||||||
|
return ret0, ret1
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplate indicates an expected call of ExportTemplate
|
||||||
|
func (mr *MockInterfaceMockRecorder) ExportTemplate(ctx, resourceGroupName, deploymentName interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportTemplate", reflect.TypeOf((*MockInterface)(nil).ExportTemplate), ctx, resourceGroupName, deploymentName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate mocks base method
|
||||||
|
func (m *MockInterface) CreateOrUpdate(ctx context.Context, resourceGroupName, managedClusterName string, parameters resources.Deployment, etag string) *retry.Error {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "CreateOrUpdate", ctx, resourceGroupName, managedClusterName, parameters, etag)
|
||||||
|
ret0, _ := ret[0].(*retry.Error)
|
||||||
|
return ret0
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate indicates an expected call of CreateOrUpdate
|
||||||
|
func (mr *MockInterfaceMockRecorder) CreateOrUpdate(ctx, resourceGroupName, managedClusterName, parameters, etag interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOrUpdate", reflect.TypeOf((*MockInterface)(nil).CreateOrUpdate), ctx, resourceGroupName, managedClusterName, parameters, etag)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete mocks base method
|
||||||
|
func (m *MockInterface) Delete(ctx context.Context, resourceGroupName, deploymentName string) *retry.Error {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
ret := m.ctrl.Call(m, "Delete", ctx, resourceGroupName, deploymentName)
|
||||||
|
ret0, _ := ret[0].(*retry.Error)
|
||||||
|
return ret0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete indicates an expected call of Delete
|
||||||
|
func (mr *MockInterfaceMockRecorder) Delete(ctx, resourceGroupName, deploymentName interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInterface)(nil).Delete), ctx, resourceGroupName, deploymentName)
|
||||||
|
}
|
@ -309,7 +309,7 @@ func (c *Client) Delete(ctx context.Context, resourceGroupName string, networkSe
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// deleteNSG deletes a PublicIPAddress by name.
|
// deleteNSG deletes a SecurityGroup by name.
|
||||||
func (c *Client) deleteNSG(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) *retry.Error {
|
func (c *Client) deleteNSG(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) *retry.Error {
|
||||||
resourceID := armclient.GetResourceID(
|
resourceID := armclient.GetResourceID(
|
||||||
c.subscriptionID,
|
c.subscriptionID,
|
||||||
|
2
vendor/BUILD
vendored
2
vendor/BUILD
vendored
@ -13,7 +13,9 @@ filegroup(
|
|||||||
"//vendor/cloud.google.com/go/compute/metadata:all-srcs",
|
"//vendor/cloud.google.com/go/compute/metadata:all-srcs",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-12-01/compute:all-srcs",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-12-01/compute:all-srcs",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2019-05-01/containerregistry:all-srcs",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2019-05-01/containerregistry:all-srcs",
|
||||||
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice:all-srcs",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network:all-srcs",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network:all-srcs",
|
||||||
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources:all-srcs",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage:all-srcs",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage:all-srcs",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/storage:all-srcs",
|
"//vendor/github.com/Azure/azure-sdk-for-go/storage:all-srcs",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/version:all-srcs",
|
"//vendor/github.com/Azure/azure-sdk-for-go/version:all-srcs",
|
||||||
|
40
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/BUILD
generated
vendored
Normal file
40
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/BUILD
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"agentpools.go",
|
||||||
|
"client.go",
|
||||||
|
"containerservices.go",
|
||||||
|
"managedclusters.go",
|
||||||
|
"models.go",
|
||||||
|
"openshiftmanagedclusters.go",
|
||||||
|
"operations.go",
|
||||||
|
"version.go",
|
||||||
|
],
|
||||||
|
importmap = "k8s.io/kubernetes/vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice",
|
||||||
|
importpath = "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/github.com/Azure/azure-sdk-for-go/version:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/validation:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/tracing:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
609
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/agentpools.go
generated
vendored
Normal file
609
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/agentpools.go
generated
vendored
Normal file
@ -0,0 +1,609 @@
|
|||||||
|
package containerservice
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/validation"
|
||||||
|
"github.com/Azure/go-autorest/tracing"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AgentPoolsClient is the the Container Service Client.
|
||||||
|
type AgentPoolsClient struct {
|
||||||
|
BaseClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewAgentPoolsClient creates an instance of the AgentPoolsClient client.
|
||||||
|
func NewAgentPoolsClient(subscriptionID string) AgentPoolsClient {
|
||||||
|
return NewAgentPoolsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewAgentPoolsClientWithBaseURI creates an instance of the AgentPoolsClient client using a custom endpoint. Use this
|
||||||
|
// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
|
||||||
|
func NewAgentPoolsClientWithBaseURI(baseURI string, subscriptionID string) AgentPoolsClient {
|
||||||
|
return AgentPoolsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate creates or updates an agent pool in the specified managed cluster.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// resourceName - the name of the managed cluster resource.
|
||||||
|
// agentPoolName - the name of the agent pool.
|
||||||
|
// parameters - parameters supplied to the Create or Update an agent pool operation.
|
||||||
|
func (client AgentPoolsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, resourceName string, agentPoolName string, parameters AgentPool) (result AgentPoolsCreateOrUpdateFuture, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolsClient.CreateOrUpdate")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response() != nil {
|
||||||
|
sc = result.Response().StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
|
||||||
|
{TargetValue: resourceName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceName", Name: validation.MaxLength, Rule: 63, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9]$|^[a-zA-Z0-9][-_a-zA-Z0-9]{0,61}[a-zA-Z0-9]$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.AgentPoolsClient", "CreateOrUpdate", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, resourceName, agentPoolName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "CreateOrUpdate", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CreateOrUpdateSender(req)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
||||||
|
func (client AgentPoolsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, resourceName string, agentPoolName string, parameters AgentPool) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"agentPoolName": autorest.Encode("path", agentPoolName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2020-04-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsContentType("application/json; charset=utf-8"),
|
||||||
|
autorest.AsPut(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools/{agentPoolName}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client AgentPoolsClient) CreateOrUpdateSender(req *http.Request) (future AgentPoolsCreateOrUpdateFuture, err error) {
|
||||||
|
var resp *http.Response
|
||||||
|
resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
future.Future, err = azure.NewFutureFromResponse(resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client AgentPoolsClient) CreateOrUpdateResponder(resp *http.Response) (result AgentPool, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete deletes the agent pool in the specified managed cluster.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// resourceName - the name of the managed cluster resource.
|
||||||
|
// agentPoolName - the name of the agent pool.
|
||||||
|
func (client AgentPoolsClient) Delete(ctx context.Context, resourceGroupName string, resourceName string, agentPoolName string) (result AgentPoolsDeleteFuture, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolsClient.Delete")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response() != nil {
|
||||||
|
sc = result.Response().StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
|
||||||
|
{TargetValue: resourceName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceName", Name: validation.MaxLength, Rule: 63, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9]$|^[a-zA-Z0-9][-_a-zA-Z0-9]{0,61}[a-zA-Z0-9]$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.AgentPoolsClient", "Delete", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.DeletePreparer(ctx, resourceGroupName, resourceName, agentPoolName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "Delete", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteSender(req)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "Delete", result.Response(), "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePreparer prepares the Delete request.
|
||||||
|
func (client AgentPoolsClient) DeletePreparer(ctx context.Context, resourceGroupName string, resourceName string, agentPoolName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"agentPoolName": autorest.Encode("path", agentPoolName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2020-04-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsDelete(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools/{agentPoolName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSender sends the Delete request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client AgentPoolsClient) DeleteSender(req *http.Request) (future AgentPoolsDeleteFuture, err error) {
|
||||||
|
var resp *http.Response
|
||||||
|
resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
future.Future, err = azure.NewFutureFromResponse(resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteResponder handles the response to the Delete request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client AgentPoolsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets the details of the agent pool by managed cluster and resource group.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// resourceName - the name of the managed cluster resource.
|
||||||
|
// agentPoolName - the name of the agent pool.
|
||||||
|
func (client AgentPoolsClient) Get(ctx context.Context, resourceGroupName string, resourceName string, agentPoolName string) (result AgentPool, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolsClient.Get")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
|
||||||
|
{TargetValue: resourceName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceName", Name: validation.MaxLength, Rule: 63, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9]$|^[a-zA-Z0-9][-_a-zA-Z0-9]{0,61}[a-zA-Z0-9]$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.AgentPoolsClient", "Get", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetPreparer(ctx, resourceGroupName, resourceName, agentPoolName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "Get", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.GetSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "Get", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "Get", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPreparer prepares the Get request.
|
||||||
|
func (client AgentPoolsClient) GetPreparer(ctx context.Context, resourceGroupName string, resourceName string, agentPoolName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"agentPoolName": autorest.Encode("path", agentPoolName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2020-04-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools/{agentPoolName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSender sends the Get request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client AgentPoolsClient) GetSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResponder handles the response to the Get request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client AgentPoolsClient) GetResponder(resp *http.Response) (result AgentPool, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAvailableAgentPoolVersions gets a list of supported versions for the specified agent pool.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// resourceName - the name of the managed cluster resource.
|
||||||
|
func (client AgentPoolsClient) GetAvailableAgentPoolVersions(ctx context.Context, resourceGroupName string, resourceName string) (result AgentPoolAvailableVersions, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolsClient.GetAvailableAgentPoolVersions")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
|
||||||
|
{TargetValue: resourceName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceName", Name: validation.MaxLength, Rule: 63, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9]$|^[a-zA-Z0-9][-_a-zA-Z0-9]{0,61}[a-zA-Z0-9]$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.AgentPoolsClient", "GetAvailableAgentPoolVersions", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetAvailableAgentPoolVersionsPreparer(ctx, resourceGroupName, resourceName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "GetAvailableAgentPoolVersions", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.GetAvailableAgentPoolVersionsSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "GetAvailableAgentPoolVersions", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetAvailableAgentPoolVersionsResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "GetAvailableAgentPoolVersions", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAvailableAgentPoolVersionsPreparer prepares the GetAvailableAgentPoolVersions request.
|
||||||
|
func (client AgentPoolsClient) GetAvailableAgentPoolVersionsPreparer(ctx context.Context, resourceGroupName string, resourceName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2020-04-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/availableAgentPoolVersions", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAvailableAgentPoolVersionsSender sends the GetAvailableAgentPoolVersions request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client AgentPoolsClient) GetAvailableAgentPoolVersionsSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAvailableAgentPoolVersionsResponder handles the response to the GetAvailableAgentPoolVersions request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client AgentPoolsClient) GetAvailableAgentPoolVersionsResponder(resp *http.Response) (result AgentPoolAvailableVersions, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUpgradeProfile gets the details of the upgrade profile for an agent pool with a specified resource group and
|
||||||
|
// managed cluster name.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// resourceName - the name of the managed cluster resource.
|
||||||
|
// agentPoolName - the name of the agent pool.
|
||||||
|
func (client AgentPoolsClient) GetUpgradeProfile(ctx context.Context, resourceGroupName string, resourceName string, agentPoolName string) (result AgentPoolUpgradeProfile, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolsClient.GetUpgradeProfile")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
|
||||||
|
{TargetValue: resourceName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceName", Name: validation.MaxLength, Rule: 63, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9]$|^[a-zA-Z0-9][-_a-zA-Z0-9]{0,61}[a-zA-Z0-9]$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.AgentPoolsClient", "GetUpgradeProfile", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetUpgradeProfilePreparer(ctx, resourceGroupName, resourceName, agentPoolName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "GetUpgradeProfile", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.GetUpgradeProfileSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "GetUpgradeProfile", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetUpgradeProfileResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "GetUpgradeProfile", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUpgradeProfilePreparer prepares the GetUpgradeProfile request.
|
||||||
|
func (client AgentPoolsClient) GetUpgradeProfilePreparer(ctx context.Context, resourceGroupName string, resourceName string, agentPoolName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"agentPoolName": autorest.Encode("path", agentPoolName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2020-04-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools/{agentPoolName}/upgradeProfiles/default", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUpgradeProfileSender sends the GetUpgradeProfile request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client AgentPoolsClient) GetUpgradeProfileSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetUpgradeProfileResponder handles the response to the GetUpgradeProfile request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client AgentPoolsClient) GetUpgradeProfileResponder(resp *http.Response) (result AgentPoolUpgradeProfile, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets a list of agent pools in the specified managed cluster. The operation returns properties of each agent
|
||||||
|
// pool.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// resourceName - the name of the managed cluster resource.
|
||||||
|
func (client AgentPoolsClient) List(ctx context.Context, resourceGroupName string, resourceName string) (result AgentPoolListResultPage, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolsClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.aplr.Response.Response != nil {
|
||||||
|
sc = result.aplr.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
|
||||||
|
{TargetValue: resourceName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceName", Name: validation.MaxLength, Rule: 63, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceName", Name: validation.Pattern, Rule: `^[a-zA-Z0-9]$|^[a-zA-Z0-9][-_a-zA-Z0-9]{0,61}[a-zA-Z0-9]$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.AgentPoolsClient", "List", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
result.fn = client.listNextResults
|
||||||
|
req, err := client.ListPreparer(ctx, resourceGroupName, resourceName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.aplr.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result.aplr, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "List", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPreparer prepares the List request.
|
||||||
|
func (client AgentPoolsClient) ListPreparer(ctx context.Context, resourceGroupName string, resourceName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2020-04-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSender sends the List request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client AgentPoolsClient) ListSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResponder handles the response to the List request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client AgentPoolsClient) ListResponder(resp *http.Response) (result AgentPoolListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// listNextResults retrieves the next set of results, if any.
|
||||||
|
func (client AgentPoolsClient) listNextResults(ctx context.Context, lastResults AgentPoolListResult) (result AgentPoolListResult, err error) {
|
||||||
|
req, err := lastResults.agentPoolListResultPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "listNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "listNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.AgentPoolsClient", "listNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
||||||
|
func (client AgentPoolsClient) ListComplete(ctx context.Context, resourceGroupName string, resourceName string) (result AgentPoolListResultIterator, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/AgentPoolsClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response().Response.Response != nil {
|
||||||
|
sc = result.page.Response().Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.page, err = client.List(ctx, resourceGroupName, resourceName)
|
||||||
|
return
|
||||||
|
}
|
52
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/client.go
generated
vendored
Normal file
52
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/client.go
generated
vendored
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// Package containerservice implements the Azure ARM Containerservice service API version .
|
||||||
|
//
|
||||||
|
// The Container Service Client.
|
||||||
|
package containerservice
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// DefaultBaseURI is the default URI used for the service Containerservice
|
||||||
|
DefaultBaseURI = "https://management.azure.com"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BaseClient is the base client for Containerservice.
|
||||||
|
type BaseClient struct {
|
||||||
|
autorest.Client
|
||||||
|
BaseURI string
|
||||||
|
SubscriptionID string
|
||||||
|
}
|
||||||
|
|
||||||
|
// New creates an instance of the BaseClient client.
|
||||||
|
func New(subscriptionID string) BaseClient {
|
||||||
|
return NewWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewWithBaseURI creates an instance of the BaseClient client using a custom endpoint. Use this when interacting with
|
||||||
|
// an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
|
||||||
|
func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient {
|
||||||
|
return BaseClient{
|
||||||
|
Client: autorest.NewClientWithUserAgent(UserAgent()),
|
||||||
|
BaseURI: baseURI,
|
||||||
|
SubscriptionID: subscriptionID,
|
||||||
|
}
|
||||||
|
}
|
618
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/containerservices.go
generated
vendored
Normal file
618
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/containerservices.go
generated
vendored
Normal file
@ -0,0 +1,618 @@
|
|||||||
|
package containerservice
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/validation"
|
||||||
|
"github.com/Azure/go-autorest/tracing"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ContainerServicesClient is the the Container Service Client.
|
||||||
|
type ContainerServicesClient struct {
|
||||||
|
BaseClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewContainerServicesClient creates an instance of the ContainerServicesClient client.
|
||||||
|
func NewContainerServicesClient(subscriptionID string) ContainerServicesClient {
|
||||||
|
return NewContainerServicesClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewContainerServicesClientWithBaseURI creates an instance of the ContainerServicesClient client using a custom
|
||||||
|
// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure
|
||||||
|
// stack).
|
||||||
|
func NewContainerServicesClientWithBaseURI(baseURI string, subscriptionID string) ContainerServicesClient {
|
||||||
|
return ContainerServicesClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate creates or updates a container service with the specified configuration of orchestrator, masters, and
|
||||||
|
// agents.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// containerServiceName - the name of the container service in the specified subscription and resource group.
|
||||||
|
// parameters - parameters supplied to the Create or Update a Container Service operation.
|
||||||
|
func (client ContainerServicesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, containerServiceName string, parameters ContainerService) (result ContainerServicesCreateOrUpdateFutureType, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ContainerServicesClient.CreateOrUpdate")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response() != nil {
|
||||||
|
sc = result.Response().StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: parameters,
|
||||||
|
Constraints: []validation.Constraint{{Target: "parameters.Properties", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.OrchestratorProfile", Name: validation.Null, Rule: true, Chain: nil},
|
||||||
|
{Target: "parameters.Properties.CustomProfile", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.CustomProfile.Orchestrator", Name: validation.Null, Rule: true, Chain: nil}}},
|
||||||
|
{Target: "parameters.Properties.ServicePrincipalProfile", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.ServicePrincipalProfile.ClientID", Name: validation.Null, Rule: true, Chain: nil},
|
||||||
|
{Target: "parameters.Properties.ServicePrincipalProfile.KeyVaultSecretRef", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.ServicePrincipalProfile.KeyVaultSecretRef.VaultID", Name: validation.Null, Rule: true, Chain: nil},
|
||||||
|
{Target: "parameters.Properties.ServicePrincipalProfile.KeyVaultSecretRef.SecretName", Name: validation.Null, Rule: true, Chain: nil},
|
||||||
|
}},
|
||||||
|
}},
|
||||||
|
{Target: "parameters.Properties.MasterProfile", Name: validation.Null, Rule: true,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.MasterProfile.DNSPrefix", Name: validation.Null, Rule: true, Chain: nil}}},
|
||||||
|
{Target: "parameters.Properties.WindowsProfile", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.WindowsProfile.AdminUsername", Name: validation.Null, Rule: true,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.WindowsProfile.AdminUsername", Name: validation.Pattern, Rule: `^[a-zA-Z0-9]+([._]?[a-zA-Z0-9]+)*$`, Chain: nil}}},
|
||||||
|
{Target: "parameters.Properties.WindowsProfile.AdminPassword", Name: validation.Null, Rule: true, Chain: nil},
|
||||||
|
}},
|
||||||
|
{Target: "parameters.Properties.LinuxProfile", Name: validation.Null, Rule: true,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.LinuxProfile.AdminUsername", Name: validation.Null, Rule: true,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.LinuxProfile.AdminUsername", Name: validation.Pattern, Rule: `^[A-Za-z][-A-Za-z0-9_]*$`, Chain: nil}}},
|
||||||
|
{Target: "parameters.Properties.LinuxProfile.SSH", Name: validation.Null, Rule: true,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.LinuxProfile.SSH.PublicKeys", Name: validation.Null, Rule: true, Chain: nil}}},
|
||||||
|
}},
|
||||||
|
{Target: "parameters.Properties.DiagnosticsProfile", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.DiagnosticsProfile.VMDiagnostics", Name: validation.Null, Rule: true,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.DiagnosticsProfile.VMDiagnostics.Enabled", Name: validation.Null, Rule: true, Chain: nil}}},
|
||||||
|
}},
|
||||||
|
}}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.ContainerServicesClient", "CreateOrUpdate", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, containerServiceName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "CreateOrUpdate", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CreateOrUpdateSender(req)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
||||||
|
func (client ContainerServicesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, containerServiceName string, parameters ContainerService) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"containerServiceName": autorest.Encode("path", containerServiceName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-07-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsContentType("application/json; charset=utf-8"),
|
||||||
|
autorest.AsPut(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices/{containerServiceName}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client ContainerServicesClient) CreateOrUpdateSender(req *http.Request) (future ContainerServicesCreateOrUpdateFutureType, err error) {
|
||||||
|
var resp *http.Response
|
||||||
|
resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
future.Future, err = azure.NewFutureFromResponse(resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client ContainerServicesClient) CreateOrUpdateResponder(resp *http.Response) (result ContainerService, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete deletes the specified container service in the specified subscription and resource group. The operation does
|
||||||
|
// not delete other resources created as part of creating a container service, including storage accounts, VMs, and
|
||||||
|
// availability sets. All the other resources created with the container service are part of the same resource group
|
||||||
|
// and can be deleted individually.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// containerServiceName - the name of the container service in the specified subscription and resource group.
|
||||||
|
func (client ContainerServicesClient) Delete(ctx context.Context, resourceGroupName string, containerServiceName string) (result ContainerServicesDeleteFutureType, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ContainerServicesClient.Delete")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response() != nil {
|
||||||
|
sc = result.Response().StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.DeletePreparer(ctx, resourceGroupName, containerServiceName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "Delete", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteSender(req)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "Delete", result.Response(), "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePreparer prepares the Delete request.
|
||||||
|
func (client ContainerServicesClient) DeletePreparer(ctx context.Context, resourceGroupName string, containerServiceName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"containerServiceName": autorest.Encode("path", containerServiceName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-07-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsDelete(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices/{containerServiceName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSender sends the Delete request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client ContainerServicesClient) DeleteSender(req *http.Request) (future ContainerServicesDeleteFutureType, err error) {
|
||||||
|
var resp *http.Response
|
||||||
|
resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
future.Future, err = azure.NewFutureFromResponse(resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteResponder handles the response to the Delete request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client ContainerServicesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets the properties of the specified container service in the specified subscription and resource group. The
|
||||||
|
// operation returns the properties including state, orchestrator, number of masters and agents, and FQDNs of masters
|
||||||
|
// and agents.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// containerServiceName - the name of the container service in the specified subscription and resource group.
|
||||||
|
func (client ContainerServicesClient) Get(ctx context.Context, resourceGroupName string, containerServiceName string) (result ContainerService, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ContainerServicesClient.Get")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.GetPreparer(ctx, resourceGroupName, containerServiceName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "Get", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.GetSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "Get", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "Get", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPreparer prepares the Get request.
|
||||||
|
func (client ContainerServicesClient) GetPreparer(ctx context.Context, resourceGroupName string, containerServiceName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"containerServiceName": autorest.Encode("path", containerServiceName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-07-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices/{containerServiceName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSender sends the Get request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client ContainerServicesClient) GetSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResponder handles the response to the Get request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client ContainerServicesClient) GetResponder(resp *http.Response) (result ContainerService, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets a list of container services in the specified subscription. The operation returns properties of each
|
||||||
|
// container service including state, orchestrator, number of masters and agents, and FQDNs of masters and agents.
|
||||||
|
func (client ContainerServicesClient) List(ctx context.Context) (result ListResultPage, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ContainerServicesClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.lr.Response.Response != nil {
|
||||||
|
sc = result.lr.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.fn = client.listNextResults
|
||||||
|
req, err := client.ListPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.lr.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result.lr, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "List", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPreparer prepares the List request.
|
||||||
|
func (client ContainerServicesClient) ListPreparer(ctx context.Context) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-07-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/containerServices", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSender sends the List request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client ContainerServicesClient) ListSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResponder handles the response to the List request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client ContainerServicesClient) ListResponder(resp *http.Response) (result ListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// listNextResults retrieves the next set of results, if any.
|
||||||
|
func (client ContainerServicesClient) listNextResults(ctx context.Context, lastResults ListResult) (result ListResult, err error) {
|
||||||
|
req, err := lastResults.listResultPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "listNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "listNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "listNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
||||||
|
func (client ContainerServicesClient) ListComplete(ctx context.Context) (result ListResultIterator, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ContainerServicesClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response().Response.Response != nil {
|
||||||
|
sc = result.page.Response().Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.page, err = client.List(ctx)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroup gets a list of container services in the specified subscription and resource group. The
|
||||||
|
// operation returns properties of each container service including state, orchestrator, number of masters and agents,
|
||||||
|
// and FQDNs of masters and agents.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
func (client ContainerServicesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ListResultPage, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ContainerServicesClient.ListByResourceGroup")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.lr.Response.Response != nil {
|
||||||
|
sc = result.lr.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.fn = client.listByResourceGroupNextResults
|
||||||
|
req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "ListByResourceGroup", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListByResourceGroupSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.lr.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "ListByResourceGroup", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result.lr, err = client.ListByResourceGroupResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "ListByResourceGroup", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
|
||||||
|
func (client ContainerServicesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-07-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client ContainerServicesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client ContainerServicesClient) ListByResourceGroupResponder(resp *http.Response) (result ListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// listByResourceGroupNextResults retrieves the next set of results, if any.
|
||||||
|
func (client ContainerServicesClient) listByResourceGroupNextResults(ctx context.Context, lastResults ListResult) (result ListResult, err error) {
|
||||||
|
req, err := lastResults.listResultPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := client.ListByResourceGroupSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
result, err = client.ListByResourceGroupResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
|
||||||
|
func (client ContainerServicesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ListResultIterator, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ContainerServicesClient.ListByResourceGroup")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response().Response.Response != nil {
|
||||||
|
sc = result.page.Response().Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.page, err = client.ListByResourceGroup(ctx, resourceGroupName)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListOrchestrators gets a list of supported orchestrators in the specified subscription. The operation returns
|
||||||
|
// properties of each orchestrator including version, available upgrades and whether that version or upgrades are in
|
||||||
|
// preview.
|
||||||
|
// Parameters:
|
||||||
|
// location - the name of a supported Azure region.
|
||||||
|
// resourceType - resource type for which the list of orchestrators needs to be returned
|
||||||
|
func (client ContainerServicesClient) ListOrchestrators(ctx context.Context, location string, resourceType string) (result OrchestratorVersionProfileListResult, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ContainerServicesClient.ListOrchestrators")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.ListOrchestratorsPreparer(ctx, location, resourceType)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "ListOrchestrators", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListOrchestratorsSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "ListOrchestrators", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListOrchestratorsResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.ContainerServicesClient", "ListOrchestrators", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListOrchestratorsPreparer prepares the ListOrchestrators request.
|
||||||
|
func (client ContainerServicesClient) ListOrchestratorsPreparer(ctx context.Context, location string, resourceType string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"location": autorest.Encode("path", location),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2019-08-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
if len(resourceType) > 0 {
|
||||||
|
queryParameters["resource-type"] = autorest.Encode("query", resourceType)
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/locations/{location}/orchestrators", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListOrchestratorsSender sends the ListOrchestrators request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client ContainerServicesClient) ListOrchestratorsSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListOrchestratorsResponder handles the response to the ListOrchestrators request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client ContainerServicesClient) ListOrchestratorsResponder(resp *http.Response) (result OrchestratorVersionProfileListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
1367
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/managedclusters.go
generated
vendored
Normal file
1367
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/managedclusters.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3669
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/models.go
generated
vendored
Normal file
3669
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/models.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
613
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/openshiftmanagedclusters.go
generated
vendored
Normal file
613
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/openshiftmanagedclusters.go
generated
vendored
Normal file
@ -0,0 +1,613 @@
|
|||||||
|
package containerservice
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/validation"
|
||||||
|
"github.com/Azure/go-autorest/tracing"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// OpenShiftManagedClustersClient is the the Container Service Client.
|
||||||
|
type OpenShiftManagedClustersClient struct {
|
||||||
|
BaseClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewOpenShiftManagedClustersClient creates an instance of the OpenShiftManagedClustersClient client.
|
||||||
|
func NewOpenShiftManagedClustersClient(subscriptionID string) OpenShiftManagedClustersClient {
|
||||||
|
return NewOpenShiftManagedClustersClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewOpenShiftManagedClustersClientWithBaseURI creates an instance of the OpenShiftManagedClustersClient client using
|
||||||
|
// a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign
|
||||||
|
// clouds, Azure stack).
|
||||||
|
func NewOpenShiftManagedClustersClientWithBaseURI(baseURI string, subscriptionID string) OpenShiftManagedClustersClient {
|
||||||
|
return OpenShiftManagedClustersClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate creates or updates a OpenShift managed cluster with the specified configuration for agents and
|
||||||
|
// OpenShift version.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// resourceName - the name of the OpenShift managed cluster resource.
|
||||||
|
// parameters - parameters supplied to the Create or Update an OpenShift Managed Cluster operation.
|
||||||
|
func (client OpenShiftManagedClustersClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, resourceName string, parameters OpenShiftManagedCluster) (result OpenShiftManagedClustersCreateOrUpdateFuture, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/OpenShiftManagedClustersClient.CreateOrUpdate")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response() != nil {
|
||||||
|
sc = result.Response().StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}},
|
||||||
|
{TargetValue: parameters,
|
||||||
|
Constraints: []validation.Constraint{{Target: "parameters.OpenShiftManagedClusterProperties", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.OpenShiftManagedClusterProperties.OpenShiftVersion", Name: validation.Null, Rule: true, Chain: nil},
|
||||||
|
{Target: "parameters.OpenShiftManagedClusterProperties.MasterPoolProfile", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.OpenShiftManagedClusterProperties.MasterPoolProfile.Count", Name: validation.Null, Rule: true, Chain: nil}}},
|
||||||
|
}}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.OpenShiftManagedClustersClient", "CreateOrUpdate", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, resourceName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "CreateOrUpdate", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CreateOrUpdateSender(req)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
||||||
|
func (client OpenShiftManagedClustersClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, resourceName string, parameters OpenShiftManagedCluster) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2019-04-30"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsContentType("application/json; charset=utf-8"),
|
||||||
|
autorest.AsPut(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/openShiftManagedClusters/{resourceName}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client OpenShiftManagedClustersClient) CreateOrUpdateSender(req *http.Request) (future OpenShiftManagedClustersCreateOrUpdateFuture, err error) {
|
||||||
|
var resp *http.Response
|
||||||
|
resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
future.Future, err = azure.NewFutureFromResponse(resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client OpenShiftManagedClustersClient) CreateOrUpdateResponder(resp *http.Response) (result OpenShiftManagedCluster, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete deletes the OpenShift managed cluster with a specified resource group and name.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// resourceName - the name of the OpenShift managed cluster resource.
|
||||||
|
func (client OpenShiftManagedClustersClient) Delete(ctx context.Context, resourceGroupName string, resourceName string) (result OpenShiftManagedClustersDeleteFuture, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/OpenShiftManagedClustersClient.Delete")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response() != nil {
|
||||||
|
sc = result.Response().StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.OpenShiftManagedClustersClient", "Delete", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.DeletePreparer(ctx, resourceGroupName, resourceName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "Delete", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteSender(req)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "Delete", result.Response(), "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePreparer prepares the Delete request.
|
||||||
|
func (client OpenShiftManagedClustersClient) DeletePreparer(ctx context.Context, resourceGroupName string, resourceName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2019-04-30"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsDelete(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/openShiftManagedClusters/{resourceName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSender sends the Delete request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client OpenShiftManagedClustersClient) DeleteSender(req *http.Request) (future OpenShiftManagedClustersDeleteFuture, err error) {
|
||||||
|
var resp *http.Response
|
||||||
|
resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
future.Future, err = azure.NewFutureFromResponse(resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteResponder handles the response to the Delete request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client OpenShiftManagedClustersClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets the details of the managed OpenShift cluster with a specified resource group and name.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// resourceName - the name of the OpenShift managed cluster resource.
|
||||||
|
func (client OpenShiftManagedClustersClient) Get(ctx context.Context, resourceGroupName string, resourceName string) (result OpenShiftManagedCluster, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/OpenShiftManagedClustersClient.Get")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.OpenShiftManagedClustersClient", "Get", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetPreparer(ctx, resourceGroupName, resourceName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "Get", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.GetSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "Get", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "Get", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPreparer prepares the Get request.
|
||||||
|
func (client OpenShiftManagedClustersClient) GetPreparer(ctx context.Context, resourceGroupName string, resourceName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2019-04-30"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/openShiftManagedClusters/{resourceName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSender sends the Get request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client OpenShiftManagedClustersClient) GetSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResponder handles the response to the Get request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client OpenShiftManagedClustersClient) GetResponder(resp *http.Response) (result OpenShiftManagedCluster, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets a list of OpenShift managed clusters in the specified subscription. The operation returns properties of
|
||||||
|
// each OpenShift managed cluster.
|
||||||
|
func (client OpenShiftManagedClustersClient) List(ctx context.Context) (result OpenShiftManagedClusterListResultPage, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/OpenShiftManagedClustersClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.osmclr.Response.Response != nil {
|
||||||
|
sc = result.osmclr.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.fn = client.listNextResults
|
||||||
|
req, err := client.ListPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.osmclr.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result.osmclr, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "List", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPreparer prepares the List request.
|
||||||
|
func (client OpenShiftManagedClustersClient) ListPreparer(ctx context.Context) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2019-04-30"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/openShiftManagedClusters", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSender sends the List request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client OpenShiftManagedClustersClient) ListSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResponder handles the response to the List request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client OpenShiftManagedClustersClient) ListResponder(resp *http.Response) (result OpenShiftManagedClusterListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// listNextResults retrieves the next set of results, if any.
|
||||||
|
func (client OpenShiftManagedClustersClient) listNextResults(ctx context.Context, lastResults OpenShiftManagedClusterListResult) (result OpenShiftManagedClusterListResult, err error) {
|
||||||
|
req, err := lastResults.openShiftManagedClusterListResultPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "listNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "listNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "listNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
||||||
|
func (client OpenShiftManagedClustersClient) ListComplete(ctx context.Context) (result OpenShiftManagedClusterListResultIterator, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/OpenShiftManagedClustersClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response().Response.Response != nil {
|
||||||
|
sc = result.page.Response().Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.page, err = client.List(ctx)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroup lists OpenShift managed clusters in the specified subscription and resource group. The operation
|
||||||
|
// returns properties of each OpenShift managed cluster.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
func (client OpenShiftManagedClustersClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result OpenShiftManagedClusterListResultPage, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/OpenShiftManagedClustersClient.ListByResourceGroup")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.osmclr.Response.Response != nil {
|
||||||
|
sc = result.osmclr.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.OpenShiftManagedClustersClient", "ListByResourceGroup", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
result.fn = client.listByResourceGroupNextResults
|
||||||
|
req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "ListByResourceGroup", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListByResourceGroupSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.osmclr.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "ListByResourceGroup", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result.osmclr, err = client.ListByResourceGroupResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "ListByResourceGroup", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
|
||||||
|
func (client OpenShiftManagedClustersClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2019-04-30"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/openShiftManagedClusters", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client OpenShiftManagedClustersClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client OpenShiftManagedClustersClient) ListByResourceGroupResponder(resp *http.Response) (result OpenShiftManagedClusterListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// listByResourceGroupNextResults retrieves the next set of results, if any.
|
||||||
|
func (client OpenShiftManagedClustersClient) listByResourceGroupNextResults(ctx context.Context, lastResults OpenShiftManagedClusterListResult) (result OpenShiftManagedClusterListResult, err error) {
|
||||||
|
req, err := lastResults.openShiftManagedClusterListResultPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := client.ListByResourceGroupSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
result, err = client.ListByResourceGroupResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
|
||||||
|
func (client OpenShiftManagedClustersClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result OpenShiftManagedClusterListResultIterator, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/OpenShiftManagedClustersClient.ListByResourceGroup")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response().Response.Response != nil {
|
||||||
|
sc = result.page.Response().Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.page, err = client.ListByResourceGroup(ctx, resourceGroupName)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateTags updates an OpenShift managed cluster with the specified tags.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group.
|
||||||
|
// resourceName - the name of the OpenShift managed cluster resource.
|
||||||
|
// parameters - parameters supplied to the Update OpenShift Managed Cluster Tags operation.
|
||||||
|
func (client OpenShiftManagedClustersClient) UpdateTags(ctx context.Context, resourceGroupName string, resourceName string, parameters TagsObject) (result OpenShiftManagedClustersUpdateTagsFuture, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/OpenShiftManagedClustersClient.UpdateTags")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response() != nil {
|
||||||
|
sc = result.Response().StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("containerservice.OpenShiftManagedClustersClient", "UpdateTags", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.UpdateTagsPreparer(ctx, resourceGroupName, resourceName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "UpdateTags", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.UpdateTagsSender(req)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OpenShiftManagedClustersClient", "UpdateTags", result.Response(), "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateTagsPreparer prepares the UpdateTags request.
|
||||||
|
func (client OpenShiftManagedClustersClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, resourceName string, parameters TagsObject) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2019-04-30"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsContentType("application/json; charset=utf-8"),
|
||||||
|
autorest.AsPatch(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/openShiftManagedClusters/{resourceName}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateTagsSender sends the UpdateTags request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client OpenShiftManagedClustersClient) UpdateTagsSender(req *http.Request) (future OpenShiftManagedClustersUpdateTagsFuture, err error) {
|
||||||
|
var resp *http.Response
|
||||||
|
resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
future.Future, err = azure.NewFutureFromResponse(resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateTagsResponder handles the response to the UpdateTags request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client OpenShiftManagedClustersClient) UpdateTagsResponder(resp *http.Response) (result OpenShiftManagedCluster, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
109
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/operations.go
generated
vendored
Normal file
109
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/operations.go
generated
vendored
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
package containerservice
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/tracing"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// OperationsClient is the the Container Service Client.
|
||||||
|
type OperationsClient struct {
|
||||||
|
BaseClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewOperationsClient creates an instance of the OperationsClient client.
|
||||||
|
func NewOperationsClient(subscriptionID string) OperationsClient {
|
||||||
|
return NewOperationsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewOperationsClientWithBaseURI creates an instance of the OperationsClient client using a custom endpoint. Use this
|
||||||
|
// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
|
||||||
|
func NewOperationsClientWithBaseURI(baseURI string, subscriptionID string) OperationsClient {
|
||||||
|
return OperationsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets a list of compute operations.
|
||||||
|
func (client OperationsClient) List(ctx context.Context) (result OperationListResult, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/OperationsClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.ListPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OperationsClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OperationsClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "containerservice.OperationsClient", "List", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPreparer prepares the List request.
|
||||||
|
func (client OperationsClient) ListPreparer(ctx context.Context) (*http.Request, error) {
|
||||||
|
const APIVersion = "2020-04-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPath("/providers/Microsoft.ContainerService/operations"),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSender sends the List request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client OperationsClient) ListSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResponder handles the response to the List request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client OperationsClient) ListResponder(resp *http.Response) (result OperationListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
30
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/version.go
generated
vendored
Normal file
30
vendor/github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice/version.go
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package containerservice
|
||||||
|
|
||||||
|
import "github.com/Azure/azure-sdk-for-go/version"
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
// UserAgent returns the UserAgent string to use when sending http.Requests.
|
||||||
|
func UserAgent() string {
|
||||||
|
return "Azure-SDK-For-Go/" + Version() + " containerservice/2020-04-01"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Version returns the semantic version (see http://semver.org) of the client.
|
||||||
|
func Version() string {
|
||||||
|
return version.Number
|
||||||
|
}
|
42
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/BUILD
generated
vendored
Normal file
42
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/BUILD
generated
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"client.go",
|
||||||
|
"deploymentoperations.go",
|
||||||
|
"deployments.go",
|
||||||
|
"groups.go",
|
||||||
|
"models.go",
|
||||||
|
"providers.go",
|
||||||
|
"resources.go",
|
||||||
|
"tags.go",
|
||||||
|
"version.go",
|
||||||
|
],
|
||||||
|
importmap = "k8s.io/kubernetes/vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources",
|
||||||
|
importpath = "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/github.com/Azure/azure-sdk-for-go/version:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/date:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/validation:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/tracing:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
52
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/client.go
generated
vendored
Normal file
52
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/client.go
generated
vendored
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// Package resources implements the Azure ARM Resources service API version 2017-05-10.
|
||||||
|
//
|
||||||
|
// Provides operations for working with resources and resource groups.
|
||||||
|
package resources
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// DefaultBaseURI is the default URI used for the service Resources
|
||||||
|
DefaultBaseURI = "https://management.azure.com"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BaseClient is the base client for Resources.
|
||||||
|
type BaseClient struct {
|
||||||
|
autorest.Client
|
||||||
|
BaseURI string
|
||||||
|
SubscriptionID string
|
||||||
|
}
|
||||||
|
|
||||||
|
// New creates an instance of the BaseClient client.
|
||||||
|
func New(subscriptionID string) BaseClient {
|
||||||
|
return NewWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewWithBaseURI creates an instance of the BaseClient client using a custom endpoint. Use this when interacting with
|
||||||
|
// an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
|
||||||
|
func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient {
|
||||||
|
return BaseClient{
|
||||||
|
Client: autorest.NewClientWithUserAgent(UserAgent()),
|
||||||
|
BaseURI: baseURI,
|
||||||
|
SubscriptionID: subscriptionID,
|
||||||
|
}
|
||||||
|
}
|
264
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/deploymentoperations.go
generated
vendored
Normal file
264
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/deploymentoperations.go
generated
vendored
Normal file
@ -0,0 +1,264 @@
|
|||||||
|
package resources
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/validation"
|
||||||
|
"github.com/Azure/go-autorest/tracing"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeploymentOperationsClient is the provides operations for working with resources and resource groups.
|
||||||
|
type DeploymentOperationsClient struct {
|
||||||
|
BaseClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDeploymentOperationsClient creates an instance of the DeploymentOperationsClient client.
|
||||||
|
func NewDeploymentOperationsClient(subscriptionID string) DeploymentOperationsClient {
|
||||||
|
return NewDeploymentOperationsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDeploymentOperationsClientWithBaseURI creates an instance of the DeploymentOperationsClient client using a custom
|
||||||
|
// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure
|
||||||
|
// stack).
|
||||||
|
func NewDeploymentOperationsClientWithBaseURI(baseURI string, subscriptionID string) DeploymentOperationsClient {
|
||||||
|
return DeploymentOperationsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets a deployments operation.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group. The name is case insensitive.
|
||||||
|
// deploymentName - the name of the deployment.
|
||||||
|
// operationID - the ID of the operation to get.
|
||||||
|
func (client DeploymentOperationsClient) Get(ctx context.Context, resourceGroupName string, deploymentName string, operationID string) (result DeploymentOperation, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.Get")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: deploymentName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.DeploymentOperationsClient", "Get", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetPreparer(ctx, resourceGroupName, deploymentName, operationID)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "Get", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.GetSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "Get", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "Get", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPreparer prepares the Get request.
|
||||||
|
func (client DeploymentOperationsClient) GetPreparer(ctx context.Context, resourceGroupName string, deploymentName string, operationID string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"deploymentName": autorest.Encode("path", deploymentName),
|
||||||
|
"operationId": autorest.Encode("path", operationID),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSender sends the Get request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentOperationsClient) GetSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResponder handles the response to the Get request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentOperationsClient) GetResponder(resp *http.Response) (result DeploymentOperation, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets all deployments operations for a deployment.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group. The name is case insensitive.
|
||||||
|
// deploymentName - the name of the deployment with the operation to get.
|
||||||
|
// top - the number of results to return.
|
||||||
|
func (client DeploymentOperationsClient) List(ctx context.Context, resourceGroupName string, deploymentName string, top *int32) (result DeploymentOperationsListResultPage, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.dolr.Response.Response != nil {
|
||||||
|
sc = result.dolr.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: deploymentName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.DeploymentOperationsClient", "List", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
result.fn = client.listNextResults
|
||||||
|
req, err := client.ListPreparer(ctx, resourceGroupName, deploymentName, top)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.dolr.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result.dolr, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPreparer prepares the List request.
|
||||||
|
func (client DeploymentOperationsClient) ListPreparer(ctx context.Context, resourceGroupName string, deploymentName string, top *int32) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"deploymentName": autorest.Encode("path", deploymentName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
if top != nil {
|
||||||
|
queryParameters["$top"] = autorest.Encode("query", *top)
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSender sends the List request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentOperationsClient) ListSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResponder handles the response to the List request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentOperationsClient) ListResponder(resp *http.Response) (result DeploymentOperationsListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// listNextResults retrieves the next set of results, if any.
|
||||||
|
func (client DeploymentOperationsClient) listNextResults(ctx context.Context, lastResults DeploymentOperationsListResult) (result DeploymentOperationsListResult, err error) {
|
||||||
|
req, err := lastResults.deploymentOperationsListResultPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "listNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
||||||
|
func (client DeploymentOperationsClient) ListComplete(ctx context.Context, resourceGroupName string, deploymentName string, top *int32) (result DeploymentOperationsListResultIterator, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentOperationsClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response().Response.Response != nil {
|
||||||
|
sc = result.page.Response().Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.page, err = client.List(ctx, resourceGroupName, deploymentName, top)
|
||||||
|
return
|
||||||
|
}
|
890
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/deployments.go
generated
vendored
Normal file
890
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/deployments.go
generated
vendored
Normal file
@ -0,0 +1,890 @@
|
|||||||
|
package resources
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/validation"
|
||||||
|
"github.com/Azure/go-autorest/tracing"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeploymentsClient is the provides operations for working with resources and resource groups.
|
||||||
|
type DeploymentsClient struct {
|
||||||
|
BaseClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDeploymentsClient creates an instance of the DeploymentsClient client.
|
||||||
|
func NewDeploymentsClient(subscriptionID string) DeploymentsClient {
|
||||||
|
return NewDeploymentsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDeploymentsClientWithBaseURI creates an instance of the DeploymentsClient client using a custom endpoint. Use
|
||||||
|
// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
|
||||||
|
func NewDeploymentsClientWithBaseURI(baseURI string, subscriptionID string) DeploymentsClient {
|
||||||
|
return DeploymentsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CalculateTemplateHash calculate the hash of the given template.
|
||||||
|
// Parameters:
|
||||||
|
// templateParameter - the template provided to calculate hash.
|
||||||
|
func (client DeploymentsClient) CalculateTemplateHash(ctx context.Context, templateParameter interface{}) (result TemplateHashResult, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CalculateTemplateHash")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.CalculateTemplateHashPreparer(ctx, templateParameter)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CalculateTemplateHash", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.CalculateTemplateHashSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CalculateTemplateHash", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CalculateTemplateHashResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CalculateTemplateHash", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CalculateTemplateHashPreparer prepares the CalculateTemplateHash request.
|
||||||
|
func (client DeploymentsClient) CalculateTemplateHashPreparer(ctx context.Context, templateParameter interface{}) (*http.Request, error) {
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsContentType("application/json; charset=utf-8"),
|
||||||
|
autorest.AsPost(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPath("/providers/Microsoft.Resources/calculateTemplateHash"),
|
||||||
|
autorest.WithJSON(templateParameter),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CalculateTemplateHashSender sends the CalculateTemplateHash request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentsClient) CalculateTemplateHashSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CalculateTemplateHashResponder handles the response to the CalculateTemplateHash request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentsClient) CalculateTemplateHashResponder(resp *http.Response) (result TemplateHashResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cancel you can cancel a deployment only if the provisioningState is Accepted or Running. After the deployment is
|
||||||
|
// canceled, the provisioningState is set to Canceled. Canceling a template deployment stops the currently running
|
||||||
|
// template deployment and leaves the resource group partially deployed.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group. The name is case insensitive.
|
||||||
|
// deploymentName - the name of the deployment to cancel.
|
||||||
|
func (client DeploymentsClient) Cancel(ctx context.Context, resourceGroupName string, deploymentName string) (result autorest.Response, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.Cancel")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response != nil {
|
||||||
|
sc = result.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: deploymentName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.DeploymentsClient", "Cancel", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CancelPreparer(ctx, resourceGroupName, deploymentName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Cancel", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.CancelSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Cancel", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CancelResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Cancel", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CancelPreparer prepares the Cancel request.
|
||||||
|
func (client DeploymentsClient) CancelPreparer(ctx context.Context, resourceGroupName string, deploymentName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"deploymentName": autorest.Encode("path", deploymentName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsPost(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CancelSender sends the Cancel request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentsClient) CancelSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CancelResponder handles the response to the Cancel request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentsClient) CancelResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistence checks whether the deployment exists.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group with the deployment to check. The name is case
|
||||||
|
// insensitive.
|
||||||
|
// deploymentName - the name of the deployment to check.
|
||||||
|
func (client DeploymentsClient) CheckExistence(ctx context.Context, resourceGroupName string, deploymentName string) (result autorest.Response, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CheckExistence")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response != nil {
|
||||||
|
sc = result.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: deploymentName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.DeploymentsClient", "CheckExistence", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CheckExistencePreparer(ctx, resourceGroupName, deploymentName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistence", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.CheckExistenceSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistence", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CheckExistenceResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistence", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistencePreparer prepares the CheckExistence request.
|
||||||
|
func (client DeploymentsClient) CheckExistencePreparer(ctx context.Context, resourceGroupName string, deploymentName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"deploymentName": autorest.Encode("path", deploymentName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsHead(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistenceSender sends the CheckExistence request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentsClient) CheckExistenceSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistenceResponder handles the response to the CheckExistence request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentsClient) CheckExistenceResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate you can provide the template and parameters directly in the request or link to JSON files.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group to deploy the resources to. The name is case insensitive.
|
||||||
|
// The resource group must already exist.
|
||||||
|
// deploymentName - the name of the deployment.
|
||||||
|
// parameters - additional parameters supplied to the operation.
|
||||||
|
func (client DeploymentsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, deploymentName string, parameters Deployment) (result DeploymentsCreateOrUpdateFuture, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.CreateOrUpdate")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response() != nil {
|
||||||
|
sc = result.Response().StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: deploymentName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: parameters,
|
||||||
|
Constraints: []validation.Constraint{{Target: "parameters.Properties", Name: validation.Null, Rule: true,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink.URI", Name: validation.Null, Rule: true, Chain: nil}}},
|
||||||
|
{Target: "parameters.Properties.ParametersLink", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.ParametersLink.URI", Name: validation.Null, Rule: true, Chain: nil}}},
|
||||||
|
}}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.DeploymentsClient", "CreateOrUpdate", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, deploymentName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdate", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CreateOrUpdateSender(req)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
||||||
|
func (client DeploymentsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, deploymentName string, parameters Deployment) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"deploymentName": autorest.Encode("path", deploymentName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsContentType("application/json; charset=utf-8"),
|
||||||
|
autorest.AsPut(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentsClient) CreateOrUpdateSender(req *http.Request) (future DeploymentsCreateOrUpdateFuture, err error) {
|
||||||
|
var resp *http.Response
|
||||||
|
resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
future.Future, err = azure.NewFutureFromResponse(resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentsClient) CreateOrUpdateResponder(resp *http.Response) (result DeploymentExtended, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete a template deployment that is currently running cannot be deleted. Deleting a template deployment removes the
|
||||||
|
// associated deployment operations. Deleting a template deployment does not affect the state of the resource group.
|
||||||
|
// This is an asynchronous operation that returns a status of 202 until the template deployment is successfully
|
||||||
|
// deleted. The Location response header contains the URI that is used to obtain the status of the process. While the
|
||||||
|
// process is running, a call to the URI in the Location header returns a status of 202. When the process finishes, the
|
||||||
|
// URI in the Location header returns a status of 204 on success. If the asynchronous request failed, the URI in the
|
||||||
|
// Location header returns an error-level status code.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group with the deployment to delete. The name is case
|
||||||
|
// insensitive.
|
||||||
|
// deploymentName - the name of the deployment to delete.
|
||||||
|
func (client DeploymentsClient) Delete(ctx context.Context, resourceGroupName string, deploymentName string) (result DeploymentsDeleteFuture, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.Delete")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response() != nil {
|
||||||
|
sc = result.Response().StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: deploymentName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.DeploymentsClient", "Delete", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.DeletePreparer(ctx, resourceGroupName, deploymentName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Delete", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteSender(req)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Delete", result.Response(), "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePreparer prepares the Delete request.
|
||||||
|
func (client DeploymentsClient) DeletePreparer(ctx context.Context, resourceGroupName string, deploymentName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"deploymentName": autorest.Encode("path", deploymentName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsDelete(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSender sends the Delete request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentsClient) DeleteSender(req *http.Request) (future DeploymentsDeleteFuture, err error) {
|
||||||
|
var resp *http.Response
|
||||||
|
resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
future.Future, err = azure.NewFutureFromResponse(resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteResponder handles the response to the Delete request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplate exports the template used for specified deployment.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group. The name is case insensitive.
|
||||||
|
// deploymentName - the name of the deployment from which to get the template.
|
||||||
|
func (client DeploymentsClient) ExportTemplate(ctx context.Context, resourceGroupName string, deploymentName string) (result DeploymentExportResult, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ExportTemplate")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: deploymentName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.DeploymentsClient", "ExportTemplate", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.ExportTemplatePreparer(ctx, resourceGroupName, deploymentName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplate", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ExportTemplateSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplate", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ExportTemplateResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ExportTemplate", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplatePreparer prepares the ExportTemplate request.
|
||||||
|
func (client DeploymentsClient) ExportTemplatePreparer(ctx context.Context, resourceGroupName string, deploymentName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"deploymentName": autorest.Encode("path", deploymentName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsPost(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplateSender sends the ExportTemplate request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentsClient) ExportTemplateSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplateResponder handles the response to the ExportTemplate request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentsClient) ExportTemplateResponder(resp *http.Response) (result DeploymentExportResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets a deployment.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group. The name is case insensitive.
|
||||||
|
// deploymentName - the name of the deployment to get.
|
||||||
|
func (client DeploymentsClient) Get(ctx context.Context, resourceGroupName string, deploymentName string) (result DeploymentExtended, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.Get")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: deploymentName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.DeploymentsClient", "Get", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetPreparer(ctx, resourceGroupName, deploymentName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Get", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.GetSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Get", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Get", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPreparer prepares the Get request.
|
||||||
|
func (client DeploymentsClient) GetPreparer(ctx context.Context, resourceGroupName string, deploymentName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"deploymentName": autorest.Encode("path", deploymentName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSender sends the Get request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentsClient) GetSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResponder handles the response to the Get request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentsClient) GetResponder(resp *http.Response) (result DeploymentExtended, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroup get all the deployments for a resource group.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group with the deployments to get. The name is case
|
||||||
|
// insensitive.
|
||||||
|
// filter - the filter to apply on the operation. For example, you can use $filter=provisioningState eq
|
||||||
|
// '{state}'.
|
||||||
|
// top - the number of results to get. If null is passed, returns all deployments.
|
||||||
|
func (client DeploymentsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string, filter string, top *int32) (result DeploymentListResultPage, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ListByResourceGroup")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.dlr.Response.Response != nil {
|
||||||
|
sc = result.dlr.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.DeploymentsClient", "ListByResourceGroup", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
result.fn = client.listByResourceGroupNextResults
|
||||||
|
req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName, filter, top)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListByResourceGroup", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListByResourceGroupSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.dlr.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListByResourceGroup", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result.dlr, err = client.ListByResourceGroupResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "ListByResourceGroup", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
|
||||||
|
func (client DeploymentsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string, filter string, top *int32) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
if len(filter) > 0 {
|
||||||
|
queryParameters["$filter"] = autorest.Encode("query", filter)
|
||||||
|
}
|
||||||
|
if top != nil {
|
||||||
|
queryParameters["$top"] = autorest.Encode("query", *top)
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentsClient) ListByResourceGroupResponder(resp *http.Response) (result DeploymentListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// listByResourceGroupNextResults retrieves the next set of results, if any.
|
||||||
|
func (client DeploymentsClient) listByResourceGroupNextResults(ctx context.Context, lastResults DeploymentListResult) (result DeploymentListResult, err error) {
|
||||||
|
req, err := lastResults.deploymentListResultPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := client.ListByResourceGroupSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
result, err = client.ListByResourceGroupResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
|
||||||
|
func (client DeploymentsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string, filter string, top *int32) (result DeploymentListResultIterator, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.ListByResourceGroup")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response().Response.Response != nil {
|
||||||
|
sc = result.page.Response().Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.page, err = client.ListByResourceGroup(ctx, resourceGroupName, filter, top)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate validates whether the specified template is syntactically correct and will be accepted by Azure Resource
|
||||||
|
// Manager..
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group the template will be deployed to. The name is case
|
||||||
|
// insensitive.
|
||||||
|
// deploymentName - the name of the deployment.
|
||||||
|
// parameters - parameters to validate.
|
||||||
|
func (client DeploymentsClient) Validate(ctx context.Context, resourceGroupName string, deploymentName string, parameters Deployment) (result DeploymentValidateResult, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentsClient.Validate")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: deploymentName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "deploymentName", Name: validation.MaxLength, Rule: 64, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "deploymentName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: parameters,
|
||||||
|
Constraints: []validation.Constraint{{Target: "parameters.Properties", Name: validation.Null, Rule: true,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.TemplateLink.URI", Name: validation.Null, Rule: true, Chain: nil}}},
|
||||||
|
{Target: "parameters.Properties.ParametersLink", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Properties.ParametersLink.URI", Name: validation.Null, Rule: true, Chain: nil}}},
|
||||||
|
}}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.DeploymentsClient", "Validate", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.ValidatePreparer(ctx, resourceGroupName, deploymentName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Validate", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ValidateSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Validate", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ValidateResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Validate", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValidatePreparer prepares the Validate request.
|
||||||
|
func (client DeploymentsClient) ValidatePreparer(ctx context.Context, resourceGroupName string, deploymentName string, parameters Deployment) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"deploymentName": autorest.Encode("path", deploymentName),
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsContentType("application/json; charset=utf-8"),
|
||||||
|
autorest.AsPost(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValidateSender sends the Validate request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentsClient) ValidateSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValidateResponder handles the response to the Validate request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentsClient) ValidateResponder(resp *http.Response) (result DeploymentValidateResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusBadRequest),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
665
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/groups.go
generated
vendored
Normal file
665
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/groups.go
generated
vendored
Normal file
@ -0,0 +1,665 @@
|
|||||||
|
package resources
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/validation"
|
||||||
|
"github.com/Azure/go-autorest/tracing"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GroupsClient is the provides operations for working with resources and resource groups.
|
||||||
|
type GroupsClient struct {
|
||||||
|
BaseClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewGroupsClient creates an instance of the GroupsClient client.
|
||||||
|
func NewGroupsClient(subscriptionID string) GroupsClient {
|
||||||
|
return NewGroupsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewGroupsClientWithBaseURI creates an instance of the GroupsClient client using a custom endpoint. Use this when
|
||||||
|
// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
|
||||||
|
func NewGroupsClientWithBaseURI(baseURI string, subscriptionID string) GroupsClient {
|
||||||
|
return GroupsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistence checks whether a resource group exists.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group to check. The name is case insensitive.
|
||||||
|
func (client GroupsClient) CheckExistence(ctx context.Context, resourceGroupName string) (result autorest.Response, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.CheckExistence")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response != nil {
|
||||||
|
sc = result.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.GroupsClient", "CheckExistence", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CheckExistencePreparer(ctx, resourceGroupName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CheckExistence", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.CheckExistenceSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CheckExistence", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CheckExistenceResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CheckExistence", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistencePreparer prepares the CheckExistence request.
|
||||||
|
func (client GroupsClient) CheckExistencePreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsHead(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistenceSender sends the CheckExistence request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupsClient) CheckExistenceSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistenceResponder handles the response to the CheckExistence request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupsClient) CheckExistenceResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate creates or updates a resource group.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group to create or update.
|
||||||
|
// parameters - parameters supplied to the create or update a resource group.
|
||||||
|
func (client GroupsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, parameters Group) (result Group, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.CreateOrUpdate")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: parameters,
|
||||||
|
Constraints: []validation.Constraint{{Target: "parameters.Location", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.GroupsClient", "CreateOrUpdate", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CreateOrUpdate", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.CreateOrUpdateSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CreateOrUpdate", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CreateOrUpdateResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CreateOrUpdate", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
||||||
|
func (client GroupsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, parameters Group) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
parameters.ID = nil
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsContentType("application/json; charset=utf-8"),
|
||||||
|
autorest.AsPut(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupsClient) CreateOrUpdateResponder(resp *http.Response) (result Group, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete when you delete a resource group, all of its resources are also deleted. Deleting a resource group deletes
|
||||||
|
// all of its template deployments and currently stored operations.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group to delete. The name is case insensitive.
|
||||||
|
func (client GroupsClient) Delete(ctx context.Context, resourceGroupName string) (result GroupsDeleteFuture, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.Delete")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response() != nil {
|
||||||
|
sc = result.Response().StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.GroupsClient", "Delete", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.DeletePreparer(ctx, resourceGroupName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Delete", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteSender(req)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Delete", result.Response(), "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePreparer prepares the Delete request.
|
||||||
|
func (client GroupsClient) DeletePreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsDelete(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSender sends the Delete request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupsClient) DeleteSender(req *http.Request) (future GroupsDeleteFuture, err error) {
|
||||||
|
var resp *http.Response
|
||||||
|
resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
future.Future, err = azure.NewFutureFromResponse(resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteResponder handles the response to the Delete request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplate captures the specified resource group as a template.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group to export as a template.
|
||||||
|
// parameters - parameters for exporting the template.
|
||||||
|
func (client GroupsClient) ExportTemplate(ctx context.Context, resourceGroupName string, parameters ExportTemplateRequest) (result GroupExportResult, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.ExportTemplate")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.GroupsClient", "ExportTemplate", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.ExportTemplatePreparer(ctx, resourceGroupName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ExportTemplate", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ExportTemplateSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ExportTemplate", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ExportTemplateResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ExportTemplate", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplatePreparer prepares the ExportTemplate request.
|
||||||
|
func (client GroupsClient) ExportTemplatePreparer(ctx context.Context, resourceGroupName string, parameters ExportTemplateRequest) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsContentType("application/json; charset=utf-8"),
|
||||||
|
autorest.AsPost(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplateSender sends the ExportTemplate request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupsClient) ExportTemplateSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplateResponder handles the response to the ExportTemplate request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupsClient) ExportTemplateResponder(resp *http.Response) (result GroupExportResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets a resource group.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group to get. The name is case insensitive.
|
||||||
|
func (client GroupsClient) Get(ctx context.Context, resourceGroupName string) (result Group, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.Get")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.GroupsClient", "Get", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetPreparer(ctx, resourceGroupName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Get", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.GetSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Get", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Get", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPreparer prepares the Get request.
|
||||||
|
func (client GroupsClient) GetPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSender sends the Get request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupsClient) GetSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResponder handles the response to the Get request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupsClient) GetResponder(resp *http.Response) (result Group, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets all the resource groups for a subscription.
|
||||||
|
// Parameters:
|
||||||
|
// filter - the filter to apply on the operation.
|
||||||
|
// top - the number of results to return. If null is passed, returns all resource groups.
|
||||||
|
func (client GroupsClient) List(ctx context.Context, filter string, top *int32) (result GroupListResultPage, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.glr.Response.Response != nil {
|
||||||
|
sc = result.glr.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.fn = client.listNextResults
|
||||||
|
req, err := client.ListPreparer(ctx, filter, top)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.glr.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result.glr, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "List", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPreparer prepares the List request.
|
||||||
|
func (client GroupsClient) ListPreparer(ctx context.Context, filter string, top *int32) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
if len(filter) > 0 {
|
||||||
|
queryParameters["$filter"] = autorest.Encode("query", filter)
|
||||||
|
}
|
||||||
|
if top != nil {
|
||||||
|
queryParameters["$top"] = autorest.Encode("query", *top)
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSender sends the List request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupsClient) ListSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResponder handles the response to the List request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupsClient) ListResponder(resp *http.Response) (result GroupListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// listNextResults retrieves the next set of results, if any.
|
||||||
|
func (client GroupsClient) listNextResults(ctx context.Context, lastResults GroupListResult) (result GroupListResult, err error) {
|
||||||
|
req, err := lastResults.groupListResultPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "listNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "listNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "listNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
||||||
|
func (client GroupsClient) ListComplete(ctx context.Context, filter string, top *int32) (result GroupListResultIterator, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response().Response.Response != nil {
|
||||||
|
sc = result.page.Response().Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.page, err = client.List(ctx, filter, top)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update resource groups can be updated through a simple PATCH operation to a group address. The format of the request
|
||||||
|
// is the same as that for creating a resource group. If a field is unspecified, the current value is retained.
|
||||||
|
// Parameters:
|
||||||
|
// resourceGroupName - the name of the resource group to update. The name is case insensitive.
|
||||||
|
// parameters - parameters supplied to update a resource group.
|
||||||
|
func (client GroupsClient) Update(ctx context.Context, resourceGroupName string, parameters GroupPatchable) (result Group, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/GroupsClient.Update")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: resourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewError("resources.GroupsClient", "Update", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.UpdatePreparer(ctx, resourceGroupName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Update", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.UpdateSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Update", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.UpdateResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Update", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdatePreparer prepares the Update request.
|
||||||
|
func (client GroupsClient) UpdatePreparer(ctx context.Context, resourceGroupName string, parameters GroupPatchable) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsContentType("application/json; charset=utf-8"),
|
||||||
|
autorest.AsPatch(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSender sends the Update request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupsClient) UpdateSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateResponder handles the response to the Update request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupsClient) UpdateResponder(resp *http.Response) (result Group, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
1854
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/models.go
generated
vendored
Normal file
1854
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/models.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
389
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/providers.go
generated
vendored
Normal file
389
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/providers.go
generated
vendored
Normal file
@ -0,0 +1,389 @@
|
|||||||
|
package resources
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/tracing"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProvidersClient is the provides operations for working with resources and resource groups.
|
||||||
|
type ProvidersClient struct {
|
||||||
|
BaseClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewProvidersClient creates an instance of the ProvidersClient client.
|
||||||
|
func NewProvidersClient(subscriptionID string) ProvidersClient {
|
||||||
|
return NewProvidersClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewProvidersClientWithBaseURI creates an instance of the ProvidersClient client using a custom endpoint. Use this
|
||||||
|
// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
|
||||||
|
func NewProvidersClientWithBaseURI(baseURI string, subscriptionID string) ProvidersClient {
|
||||||
|
return ProvidersClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets the specified resource provider.
|
||||||
|
// Parameters:
|
||||||
|
// resourceProviderNamespace - the namespace of the resource provider.
|
||||||
|
// expand - the $expand query parameter. For example, to include property aliases in response, use
|
||||||
|
// $expand=resourceTypes/aliases.
|
||||||
|
func (client ProvidersClient) Get(ctx context.Context, resourceProviderNamespace string, expand string) (result Provider, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ProvidersClient.Get")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.GetPreparer(ctx, resourceProviderNamespace, expand)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Get", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.GetSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Get", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Get", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPreparer prepares the Get request.
|
||||||
|
func (client ProvidersClient) GetPreparer(ctx context.Context, resourceProviderNamespace string, expand string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
if len(expand) > 0 {
|
||||||
|
queryParameters["$expand"] = autorest.Encode("query", expand)
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSender sends the Get request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client ProvidersClient) GetSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResponder handles the response to the Get request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client ProvidersClient) GetResponder(resp *http.Response) (result Provider, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets all resource providers for a subscription.
|
||||||
|
// Parameters:
|
||||||
|
// top - the number of results to return. If null is passed returns all deployments.
|
||||||
|
// expand - the properties to include in the results. For example, use &$expand=metadata in the query string to
|
||||||
|
// retrieve resource provider metadata. To include property aliases in response, use
|
||||||
|
// $expand=resourceTypes/aliases.
|
||||||
|
func (client ProvidersClient) List(ctx context.Context, top *int32, expand string) (result ProviderListResultPage, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ProvidersClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.plr.Response.Response != nil {
|
||||||
|
sc = result.plr.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.fn = client.listNextResults
|
||||||
|
req, err := client.ListPreparer(ctx, top, expand)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.plr.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result.plr, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPreparer prepares the List request.
|
||||||
|
func (client ProvidersClient) ListPreparer(ctx context.Context, top *int32, expand string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
if top != nil {
|
||||||
|
queryParameters["$top"] = autorest.Encode("query", *top)
|
||||||
|
}
|
||||||
|
if len(expand) > 0 {
|
||||||
|
queryParameters["$expand"] = autorest.Encode("query", expand)
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSender sends the List request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client ProvidersClient) ListSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResponder handles the response to the List request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client ProvidersClient) ListResponder(resp *http.Response) (result ProviderListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// listNextResults retrieves the next set of results, if any.
|
||||||
|
func (client ProvidersClient) listNextResults(ctx context.Context, lastResults ProviderListResult) (result ProviderListResult, err error) {
|
||||||
|
req, err := lastResults.providerListResultPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "listNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "listNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "listNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
||||||
|
func (client ProvidersClient) ListComplete(ctx context.Context, top *int32, expand string) (result ProviderListResultIterator, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ProvidersClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response().Response.Response != nil {
|
||||||
|
sc = result.page.Response().Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.page, err = client.List(ctx, top, expand)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Register registers a subscription with a resource provider.
|
||||||
|
// Parameters:
|
||||||
|
// resourceProviderNamespace - the namespace of the resource provider to register.
|
||||||
|
func (client ProvidersClient) Register(ctx context.Context, resourceProviderNamespace string) (result Provider, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ProvidersClient.Register")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.RegisterPreparer(ctx, resourceProviderNamespace)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Register", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.RegisterSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Register", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.RegisterResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Register", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterPreparer prepares the Register request.
|
||||||
|
func (client ProvidersClient) RegisterPreparer(ctx context.Context, resourceProviderNamespace string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsPost(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterSender sends the Register request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client ProvidersClient) RegisterSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterResponder handles the response to the Register request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client ProvidersClient) RegisterResponder(resp *http.Response) (result Provider, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unregister unregisters a subscription from a resource provider.
|
||||||
|
// Parameters:
|
||||||
|
// resourceProviderNamespace - the namespace of the resource provider to unregister.
|
||||||
|
func (client ProvidersClient) Unregister(ctx context.Context, resourceProviderNamespace string) (result Provider, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/ProvidersClient.Unregister")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.UnregisterPreparer(ctx, resourceProviderNamespace)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Unregister", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.UnregisterSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Unregister", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.UnregisterResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Unregister", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnregisterPreparer prepares the Unregister request.
|
||||||
|
func (client ProvidersClient) UnregisterPreparer(ctx context.Context, resourceProviderNamespace string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsPost(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnregisterSender sends the Unregister request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client ProvidersClient) UnregisterSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnregisterResponder handles the response to the Unregister request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client ProvidersClient) UnregisterResponder(resp *http.Response) (result Provider, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
1319
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/resources.go
generated
vendored
Normal file
1319
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/resources.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
450
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/tags.go
generated
vendored
Normal file
450
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/tags.go
generated
vendored
Normal file
@ -0,0 +1,450 @@
|
|||||||
|
package resources
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/tracing"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TagsClient is the provides operations for working with resources and resource groups.
|
||||||
|
type TagsClient struct {
|
||||||
|
BaseClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewTagsClient creates an instance of the TagsClient client.
|
||||||
|
func NewTagsClient(subscriptionID string) TagsClient {
|
||||||
|
return NewTagsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewTagsClientWithBaseURI creates an instance of the TagsClient client using a custom endpoint. Use this when
|
||||||
|
// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
|
||||||
|
func NewTagsClientWithBaseURI(baseURI string, subscriptionID string) TagsClient {
|
||||||
|
return TagsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdate the tag name can have a maximum of 512 characters and is case insensitive. Tag names created by Azure
|
||||||
|
// have prefixes of microsoft, azure, or windows. You cannot create tags with one of these prefixes.
|
||||||
|
// Parameters:
|
||||||
|
// tagName - the name of the tag to create.
|
||||||
|
func (client TagsClient) CreateOrUpdate(ctx context.Context, tagName string) (result TagDetails, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.CreateOrUpdate")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.CreateOrUpdatePreparer(ctx, tagName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdate", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.CreateOrUpdateSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdate", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CreateOrUpdateResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdate", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
||||||
|
func (client TagsClient) CreateOrUpdatePreparer(ctx context.Context, tagName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
"tagName": autorest.Encode("path", tagName),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsPut(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/tagNames/{tagName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client TagsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client TagsClient) CreateOrUpdateResponder(resp *http.Response) (result TagDetails, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateValue creates a tag value. The name of the tag must already exist.
|
||||||
|
// Parameters:
|
||||||
|
// tagName - the name of the tag.
|
||||||
|
// tagValue - the value of the tag to create.
|
||||||
|
func (client TagsClient) CreateOrUpdateValue(ctx context.Context, tagName string, tagValue string) (result TagValue, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.CreateOrUpdateValue")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response.Response != nil {
|
||||||
|
sc = result.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.CreateOrUpdateValuePreparer(ctx, tagName, tagValue)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdateValue", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.CreateOrUpdateValueSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdateValue", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CreateOrUpdateValueResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdateValue", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateValuePreparer prepares the CreateOrUpdateValue request.
|
||||||
|
func (client TagsClient) CreateOrUpdateValuePreparer(ctx context.Context, tagName string, tagValue string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
"tagName": autorest.Encode("path", tagName),
|
||||||
|
"tagValue": autorest.Encode("path", tagValue),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsPut(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateValueSender sends the CreateOrUpdateValue request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client TagsClient) CreateOrUpdateValueSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateValueResponder handles the response to the CreateOrUpdateValue request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client TagsClient) CreateOrUpdateValueResponder(resp *http.Response) (result TagValue, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete you must remove all values from a resource tag before you can delete it.
|
||||||
|
// Parameters:
|
||||||
|
// tagName - the name of the tag.
|
||||||
|
func (client TagsClient) Delete(ctx context.Context, tagName string) (result autorest.Response, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.Delete")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response != nil {
|
||||||
|
sc = result.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.DeletePreparer(ctx, tagName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "Delete", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.DeleteSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "Delete", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "Delete", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePreparer prepares the Delete request.
|
||||||
|
func (client TagsClient) DeletePreparer(ctx context.Context, tagName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
"tagName": autorest.Encode("path", tagName),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsDelete(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/tagNames/{tagName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSender sends the Delete request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client TagsClient) DeleteSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteResponder handles the response to the Delete request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client TagsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteValue deletes a tag value.
|
||||||
|
// Parameters:
|
||||||
|
// tagName - the name of the tag.
|
||||||
|
// tagValue - the value of the tag to delete.
|
||||||
|
func (client TagsClient) DeleteValue(ctx context.Context, tagName string, tagValue string) (result autorest.Response, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.DeleteValue")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response != nil {
|
||||||
|
sc = result.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
req, err := client.DeleteValuePreparer(ctx, tagName, tagValue)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "DeleteValue", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.DeleteValueSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "DeleteValue", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteValueResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "DeleteValue", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteValuePreparer prepares the DeleteValue request.
|
||||||
|
func (client TagsClient) DeleteValuePreparer(ctx context.Context, tagName string, tagValue string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
"tagName": autorest.Encode("path", tagName),
|
||||||
|
"tagValue": autorest.Encode("path", tagValue),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsDelete(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteValueSender sends the DeleteValue request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client TagsClient) DeleteValueSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteValueResponder handles the response to the DeleteValue request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client TagsClient) DeleteValueResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List gets the names and values of all resource tags that are defined in a subscription.
|
||||||
|
func (client TagsClient) List(ctx context.Context) (result TagsListResultPage, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.tlr.Response.Response != nil {
|
||||||
|
sc = result.tlr.Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.fn = client.listNextResults
|
||||||
|
req, err := client.ListPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.tlr.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result.tlr, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPreparer prepares the List request.
|
||||||
|
func (client TagsClient) ListPreparer(ctx context.Context) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2017-05-10"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/tagNames", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSender sends the List request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client TagsClient) ListSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return client.Send(req, azure.DoRetryWithRegistration(client.Client))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResponder handles the response to the List request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client TagsClient) ListResponder(resp *http.Response) (result TagsListResult, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// listNextResults retrieves the next set of results, if any.
|
||||||
|
func (client TagsClient) listNextResults(ctx context.Context, lastResults TagsListResult) (result TagsListResult, err error) {
|
||||||
|
req, err := lastResults.tagsListResultPreparer(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.TagsClient", "listNextResults", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.TagsClient", "listNextResults", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "listNextResults", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
||||||
|
func (client TagsClient) ListComplete(ctx context.Context) (result TagsListResultIterator, err error) {
|
||||||
|
if tracing.IsEnabled() {
|
||||||
|
ctx = tracing.StartSpan(ctx, fqdn+"/TagsClient.List")
|
||||||
|
defer func() {
|
||||||
|
sc := -1
|
||||||
|
if result.Response().Response.Response != nil {
|
||||||
|
sc = result.page.Response().Response.Response.StatusCode
|
||||||
|
}
|
||||||
|
tracing.EndSpan(ctx, sc, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
result.page, err = client.List(ctx)
|
||||||
|
return
|
||||||
|
}
|
30
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/version.go
generated
vendored
Normal file
30
vendor/github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources/version.go
generated
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package resources
|
||||||
|
|
||||||
|
import "github.com/Azure/azure-sdk-for-go/version"
|
||||||
|
|
||||||
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
//
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
|
// UserAgent returns the UserAgent string to use when sending http.Requests.
|
||||||
|
func UserAgent() string {
|
||||||
|
return "Azure-SDK-For-Go/" + Version() + " resources/2017-05-10"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Version returns the semantic version (see http://semver.org) of the client.
|
||||||
|
func Version() string {
|
||||||
|
return version.Number
|
||||||
|
}
|
4
vendor/modules.txt
vendored
4
vendor/modules.txt
vendored
@ -5,7 +5,9 @@ cloud.google.com/go/compute/metadata
|
|||||||
# github.com/Azure/azure-sdk-for-go v43.0.0+incompatible => github.com/Azure/azure-sdk-for-go v43.0.0+incompatible
|
# github.com/Azure/azure-sdk-for-go v43.0.0+incompatible => github.com/Azure/azure-sdk-for-go v43.0.0+incompatible
|
||||||
github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-12-01/compute
|
github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-12-01/compute
|
||||||
github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2019-05-01/containerregistry
|
github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2019-05-01/containerregistry
|
||||||
|
github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-04-01/containerservice
|
||||||
github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network
|
github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network
|
||||||
|
github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources
|
||||||
github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage
|
github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage
|
||||||
github.com/Azure/azure-sdk-for-go/storage
|
github.com/Azure/azure-sdk-for-go/storage
|
||||||
github.com/Azure/azure-sdk-for-go/version
|
github.com/Azure/azure-sdk-for-go/version
|
||||||
@ -1857,6 +1859,8 @@ k8s.io/legacy-cloud-providers/azure/auth
|
|||||||
k8s.io/legacy-cloud-providers/azure/cache
|
k8s.io/legacy-cloud-providers/azure/cache
|
||||||
k8s.io/legacy-cloud-providers/azure/clients
|
k8s.io/legacy-cloud-providers/azure/clients
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/armclient
|
k8s.io/legacy-cloud-providers/azure/clients/armclient
|
||||||
|
k8s.io/legacy-cloud-providers/azure/clients/containerserviceclient
|
||||||
|
k8s.io/legacy-cloud-providers/azure/clients/deploymentclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/diskclient
|
k8s.io/legacy-cloud-providers/azure/clients/diskclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/diskclient/mockdiskclient
|
k8s.io/legacy-cloud-providers/azure/clients/diskclient/mockdiskclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/fileclient
|
k8s.io/legacy-cloud-providers/azure/clients/fileclient
|
||||||
|
Loading…
Reference in New Issue
Block a user