Merge pull request #13036 from pmcatominey/azure-backend
backend: convert Azure remote state to a backend
This commit is contained in:
commit
23b783616e
|
@ -10,6 +10,7 @@ import (
|
||||||
backendatlas "github.com/hashicorp/terraform/backend/atlas"
|
backendatlas "github.com/hashicorp/terraform/backend/atlas"
|
||||||
backendlegacy "github.com/hashicorp/terraform/backend/legacy"
|
backendlegacy "github.com/hashicorp/terraform/backend/legacy"
|
||||||
backendlocal "github.com/hashicorp/terraform/backend/local"
|
backendlocal "github.com/hashicorp/terraform/backend/local"
|
||||||
|
backendAzure "github.com/hashicorp/terraform/backend/remote-state/azure"
|
||||||
backendconsul "github.com/hashicorp/terraform/backend/remote-state/consul"
|
backendconsul "github.com/hashicorp/terraform/backend/remote-state/consul"
|
||||||
backendinmem "github.com/hashicorp/terraform/backend/remote-state/inmem"
|
backendinmem "github.com/hashicorp/terraform/backend/remote-state/inmem"
|
||||||
backendS3 "github.com/hashicorp/terraform/backend/remote-state/s3"
|
backendS3 "github.com/hashicorp/terraform/backend/remote-state/s3"
|
||||||
|
@ -34,12 +35,14 @@ func init() {
|
||||||
// Our hardcoded backends. We don't need to acquire a lock here
|
// Our hardcoded backends. We don't need to acquire a lock here
|
||||||
// since init() code is serial and can't spawn goroutines.
|
// since init() code is serial and can't spawn goroutines.
|
||||||
backends = map[string]func() backend.Backend{
|
backends = map[string]func() backend.Backend{
|
||||||
"atlas": func() backend.Backend { return &backendatlas.Backend{} },
|
"atlas": func() backend.Backend { return &backendatlas.Backend{} },
|
||||||
"local": func() backend.Backend { return &backendlocal.Local{} },
|
"local": func() backend.Backend { return &backendlocal.Local{} },
|
||||||
"consul": func() backend.Backend { return backendconsul.New() },
|
"consul": func() backend.Backend { return backendconsul.New() },
|
||||||
"inmem": func() backend.Backend { return backendinmem.New() },
|
"inmem": func() backend.Backend { return backendinmem.New() },
|
||||||
"swift": func() backend.Backend { return backendSwift.New() },
|
"swift": func() backend.Backend { return backendSwift.New() },
|
||||||
"s3": func() backend.Backend { return backendS3.New() },
|
"s3": func() backend.Backend { return backendS3.New() },
|
||||||
|
"azure": func() backend.Backend { return backendAzure.New() },
|
||||||
|
"azurerm": func() backend.Backend { return backendAzure.New() },
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the legacy remote backends that haven't yet been convertd to
|
// Add the legacy remote backends that haven't yet been convertd to
|
||||||
|
|
|
@ -0,0 +1,205 @@
|
||||||
|
package azure
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
armStorage "github.com/Azure/azure-sdk-for-go/arm/storage"
|
||||||
|
"github.com/Azure/azure-sdk-for-go/storage"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/adal"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/hashicorp/terraform/backend"
|
||||||
|
"github.com/hashicorp/terraform/helper/schema"
|
||||||
|
)
|
||||||
|
|
||||||
|
// New creates a new backend for S3 remote state.
|
||||||
|
func New() backend.Backend {
|
||||||
|
s := &schema.Backend{
|
||||||
|
Schema: map[string]*schema.Schema{
|
||||||
|
"storage_account_name": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Required: true,
|
||||||
|
Description: "The name of the storage account.",
|
||||||
|
},
|
||||||
|
|
||||||
|
"container_name": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Required: true,
|
||||||
|
Description: "The container name.",
|
||||||
|
},
|
||||||
|
|
||||||
|
"key": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Required: true,
|
||||||
|
Description: "The blob key.",
|
||||||
|
},
|
||||||
|
|
||||||
|
"environment": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Optional: true,
|
||||||
|
Description: "The Azure cloud environment.",
|
||||||
|
Default: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
"access_key": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Optional: true,
|
||||||
|
Description: "The access key.",
|
||||||
|
DefaultFunc: schema.EnvDefaultFunc("ARM_ACCESS_KEY", ""),
|
||||||
|
},
|
||||||
|
|
||||||
|
"resource_group_name": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Optional: true,
|
||||||
|
Description: "The resource group name.",
|
||||||
|
},
|
||||||
|
|
||||||
|
"arm_subscription_id": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Optional: true,
|
||||||
|
Description: "The Subscription ID.",
|
||||||
|
DefaultFunc: schema.EnvDefaultFunc("ARM_SUBSCRIPTION_ID", ""),
|
||||||
|
},
|
||||||
|
|
||||||
|
"arm_client_id": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Optional: true,
|
||||||
|
Description: "The Client ID.",
|
||||||
|
DefaultFunc: schema.EnvDefaultFunc("ARM_CLIENT_ID", ""),
|
||||||
|
},
|
||||||
|
|
||||||
|
"arm_client_secret": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Optional: true,
|
||||||
|
Description: "The Client Secret.",
|
||||||
|
DefaultFunc: schema.EnvDefaultFunc("ARM_CLIENT_SECRET", ""),
|
||||||
|
},
|
||||||
|
|
||||||
|
"arm_tenant_id": &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Optional: true,
|
||||||
|
Description: "The Tenant ID.",
|
||||||
|
DefaultFunc: schema.EnvDefaultFunc("ARM_TENANT_ID", ""),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
result := &Backend{Backend: s}
|
||||||
|
result.Backend.ConfigureFunc = result.configure
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
type Backend struct {
|
||||||
|
*schema.Backend
|
||||||
|
|
||||||
|
// The fields below are set from configure
|
||||||
|
blobClient storage.BlobStorageClient
|
||||||
|
|
||||||
|
containerName string
|
||||||
|
keyName string
|
||||||
|
leaseID string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Backend) configure(ctx context.Context) error {
|
||||||
|
if b.containerName != "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grab the resource data
|
||||||
|
data := schema.FromContextBackendConfig(ctx)
|
||||||
|
|
||||||
|
b.containerName = data.Get("container_name").(string)
|
||||||
|
b.keyName = data.Get("key").(string)
|
||||||
|
|
||||||
|
blobClient, err := getBlobClient(data)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
b.blobClient = blobClient
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getBlobClient(d *schema.ResourceData) (storage.BlobStorageClient, error) {
|
||||||
|
var client storage.BlobStorageClient
|
||||||
|
|
||||||
|
env, err := getAzureEnvironment(d.Get("environment").(string))
|
||||||
|
if err != nil {
|
||||||
|
return client, err
|
||||||
|
}
|
||||||
|
|
||||||
|
storageAccountName := d.Get("storage_account_name").(string)
|
||||||
|
|
||||||
|
accessKey, err := getAccessKey(d, storageAccountName, env)
|
||||||
|
if err != nil {
|
||||||
|
return client, err
|
||||||
|
}
|
||||||
|
|
||||||
|
storageClient, err := storage.NewClient(storageAccountName, accessKey, env.StorageEndpointSuffix,
|
||||||
|
storage.DefaultAPIVersion, true)
|
||||||
|
if err != nil {
|
||||||
|
return client, fmt.Errorf("Error creating storage client for storage account %q: %s", storageAccountName, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
client = storageClient.GetBlobService()
|
||||||
|
return client, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getAccessKey(d *schema.ResourceData, storageAccountName string, env azure.Environment) (string, error) {
|
||||||
|
if key, ok := d.GetOk("access_key"); ok {
|
||||||
|
return key.(string), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
resourceGroupName, rgOk := d.GetOk("resource_group_name")
|
||||||
|
subscriptionID, subOk := d.GetOk("arm_subscription_id")
|
||||||
|
clientID, clientIDOk := d.GetOk("arm_client_id")
|
||||||
|
clientSecret, clientSecretOK := d.GetOk("arm_client_secret")
|
||||||
|
tenantID, tenantIDOk := d.GetOk("arm_tenant_id")
|
||||||
|
if !rgOk || !subOk || !clientIDOk || !clientSecretOK || !tenantIDOk {
|
||||||
|
return "", fmt.Errorf("resource_group_name and credentials must be provided when access_key is absent")
|
||||||
|
}
|
||||||
|
|
||||||
|
oauthConfig, err := adal.NewOAuthConfig(env.ActiveDirectoryEndpoint, tenantID.(string))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
spt, err := adal.NewServicePrincipalToken(*oauthConfig, clientID.(string), clientSecret.(string), env.ResourceManagerEndpoint)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
accountsClient := armStorage.NewAccountsClientWithBaseURI(env.ResourceManagerEndpoint, subscriptionID.(string))
|
||||||
|
accountsClient.Authorizer = autorest.NewBearerAuthorizer(spt)
|
||||||
|
|
||||||
|
keys, err := accountsClient.ListKeys(resourceGroupName.(string), storageAccountName)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("Error retrieving keys for storage account %q: %s", storageAccountName, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if keys.Keys == nil {
|
||||||
|
return "", fmt.Errorf("Nil key returned for storage account %q", storageAccountName)
|
||||||
|
}
|
||||||
|
|
||||||
|
accessKeys := *keys.Keys
|
||||||
|
return *accessKeys[0].Value, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getAzureEnvironment(environment string) (azure.Environment, error) {
|
||||||
|
if environment == "" {
|
||||||
|
return azure.PublicCloud, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
env, err := azure.EnvironmentFromName(environment)
|
||||||
|
if err != nil {
|
||||||
|
// try again with wrapped value to support readable values like german instead of AZUREGERMANCLOUD
|
||||||
|
var innerErr error
|
||||||
|
env, innerErr = azure.EnvironmentFromName(fmt.Sprintf("AZURE%sCLOUD", environment))
|
||||||
|
if innerErr != nil {
|
||||||
|
return env, fmt.Errorf("invalid 'environment' configuration: %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return env, nil
|
||||||
|
}
|
|
@ -0,0 +1,141 @@
|
||||||
|
package azure
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-sdk-for-go/storage"
|
||||||
|
"github.com/hashicorp/terraform/backend"
|
||||||
|
"github.com/hashicorp/terraform/state"
|
||||||
|
"github.com/hashicorp/terraform/state/remote"
|
||||||
|
"github.com/hashicorp/terraform/terraform"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// This will be used as directory name, the odd looking colon is simply to
|
||||||
|
// reduce the chance of name conflicts with existing objects.
|
||||||
|
keyEnvPrefix = "env:"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (b *Backend) States() ([]string, error) {
|
||||||
|
prefix := b.keyName + keyEnvPrefix
|
||||||
|
params := storage.ListBlobsParameters{
|
||||||
|
Prefix: prefix,
|
||||||
|
}
|
||||||
|
|
||||||
|
container := b.blobClient.GetContainerReference(b.containerName)
|
||||||
|
resp, err := container.ListBlobs(params)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
envs := map[string]struct{}{}
|
||||||
|
for _, obj := range resp.Blobs {
|
||||||
|
key := obj.Name
|
||||||
|
if strings.HasPrefix(key, prefix) {
|
||||||
|
name := strings.TrimPrefix(key, prefix)
|
||||||
|
// we store the state in a key, not a directory
|
||||||
|
if strings.Contains(name, "/") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
envs[name] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result := []string{backend.DefaultStateName}
|
||||||
|
for name := range envs {
|
||||||
|
result = append(result, name)
|
||||||
|
}
|
||||||
|
sort.Strings(result[1:])
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Backend) DeleteState(name string) error {
|
||||||
|
if name == backend.DefaultStateName || name == "" {
|
||||||
|
return fmt.Errorf("can't delete default state")
|
||||||
|
}
|
||||||
|
|
||||||
|
containerReference := b.blobClient.GetContainerReference(b.containerName)
|
||||||
|
blobReference := containerReference.GetBlobReference(b.path(name))
|
||||||
|
options := &storage.DeleteBlobOptions{}
|
||||||
|
|
||||||
|
return blobReference.Delete(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Backend) State(name string) (state.State, error) {
|
||||||
|
client := &RemoteClient{
|
||||||
|
blobClient: b.blobClient,
|
||||||
|
containerName: b.containerName,
|
||||||
|
keyName: b.path(name),
|
||||||
|
}
|
||||||
|
|
||||||
|
stateMgr := &remote.State{Client: client}
|
||||||
|
|
||||||
|
//if this isn't the default state name, we need to create the object so
|
||||||
|
//it's listed by States.
|
||||||
|
if name != backend.DefaultStateName {
|
||||||
|
// take a lock on this state while we write it
|
||||||
|
lockInfo := state.NewLockInfo()
|
||||||
|
lockInfo.Operation = "init"
|
||||||
|
lockId, err := client.Lock(lockInfo)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to lock azure state: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Local helper function so we can call it multiple places
|
||||||
|
lockUnlock := func(parent error) error {
|
||||||
|
if err := stateMgr.Unlock(lockId); err != nil {
|
||||||
|
return fmt.Errorf(strings.TrimSpace(errStateUnlock), lockId, err)
|
||||||
|
}
|
||||||
|
return parent
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grab the value
|
||||||
|
if err := stateMgr.RefreshState(); err != nil {
|
||||||
|
err = lockUnlock(err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we have no state, we have to create an empty state
|
||||||
|
if v := stateMgr.State(); v == nil {
|
||||||
|
if err := stateMgr.WriteState(terraform.NewState()); err != nil {
|
||||||
|
err = lockUnlock(err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err := stateMgr.PersistState(); err != nil {
|
||||||
|
err = lockUnlock(err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unlock, the state should now be initialized
|
||||||
|
if err := lockUnlock(nil); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return stateMgr, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Backend) client() *RemoteClient {
|
||||||
|
return &RemoteClient{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Backend) path(name string) string {
|
||||||
|
if name == backend.DefaultStateName {
|
||||||
|
return b.keyName
|
||||||
|
}
|
||||||
|
|
||||||
|
return b.keyName + keyEnvPrefix + name
|
||||||
|
}
|
||||||
|
|
||||||
|
const errStateUnlock = `
|
||||||
|
Error unlocking Azure state. Lock ID: %s
|
||||||
|
|
||||||
|
Error: %s
|
||||||
|
|
||||||
|
You may have to force-unlock this state in order to use it again.
|
||||||
|
`
|
|
@ -0,0 +1,231 @@
|
||||||
|
package azure
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-sdk-for-go/arm/resources/resources"
|
||||||
|
armStorage "github.com/Azure/azure-sdk-for-go/arm/storage"
|
||||||
|
"github.com/Azure/azure-sdk-for-go/storage"
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/adal"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/hashicorp/terraform/backend"
|
||||||
|
"github.com/hashicorp/terraform/helper/acctest"
|
||||||
|
)
|
||||||
|
|
||||||
|
// verify that we are doing ACC tests or the Azure tests specifically
|
||||||
|
func testACC(t *testing.T) {
|
||||||
|
skip := os.Getenv("TF_ACC") == "" && os.Getenv("TF_AZURE_TEST") == ""
|
||||||
|
if skip {
|
||||||
|
t.Log("azure backend tests require setting TF_ACC or TF_AZURE_TEST")
|
||||||
|
t.Skip()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBackend_impl(t *testing.T) {
|
||||||
|
var _ backend.Backend = new(Backend)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBackendConfig(t *testing.T) {
|
||||||
|
// This test just instantiates the client. Shouldn't make any actual
|
||||||
|
// requests nor incur any costs.
|
||||||
|
|
||||||
|
config := map[string]interface{}{
|
||||||
|
"storage_account_name": "tfaccount",
|
||||||
|
"container_name": "tfcontainer",
|
||||||
|
"key": "state",
|
||||||
|
// Access Key must be Base64
|
||||||
|
"access_key": "QUNDRVNTX0tFWQ0K",
|
||||||
|
}
|
||||||
|
|
||||||
|
b := backend.TestBackendConfig(t, New(), config).(*Backend)
|
||||||
|
|
||||||
|
if b.containerName != "tfcontainer" {
|
||||||
|
t.Fatalf("Incorrect bucketName was populated")
|
||||||
|
}
|
||||||
|
if b.keyName != "state" {
|
||||||
|
t.Fatalf("Incorrect keyName was populated")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBackend(t *testing.T) {
|
||||||
|
testACC(t)
|
||||||
|
|
||||||
|
keyName := "testState"
|
||||||
|
res := setupResources(t, keyName)
|
||||||
|
defer destroyResources(t, res.resourceGroupName)
|
||||||
|
|
||||||
|
b := backend.TestBackendConfig(t, New(), map[string]interface{}{
|
||||||
|
"storage_account_name": res.storageAccountName,
|
||||||
|
"container_name": res.containerName,
|
||||||
|
"key": keyName,
|
||||||
|
"access_key": res.accessKey,
|
||||||
|
}).(*Backend)
|
||||||
|
|
||||||
|
backend.TestBackend(t, b, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBackendLocked(t *testing.T) {
|
||||||
|
testACC(t)
|
||||||
|
|
||||||
|
keyName := "testState"
|
||||||
|
res := setupResources(t, keyName)
|
||||||
|
defer destroyResources(t, res.resourceGroupName)
|
||||||
|
|
||||||
|
b1 := backend.TestBackendConfig(t, New(), map[string]interface{}{
|
||||||
|
"storage_account_name": res.storageAccountName,
|
||||||
|
"container_name": res.containerName,
|
||||||
|
"key": keyName,
|
||||||
|
"access_key": res.accessKey,
|
||||||
|
}).(*Backend)
|
||||||
|
|
||||||
|
b2 := backend.TestBackendConfig(t, New(), map[string]interface{}{
|
||||||
|
"storage_account_name": res.storageAccountName,
|
||||||
|
"container_name": res.containerName,
|
||||||
|
"key": keyName,
|
||||||
|
"access_key": res.accessKey,
|
||||||
|
}).(*Backend)
|
||||||
|
|
||||||
|
backend.TestBackend(t, b1, b2)
|
||||||
|
}
|
||||||
|
|
||||||
|
type testResources struct {
|
||||||
|
resourceGroupName string
|
||||||
|
storageAccountName string
|
||||||
|
containerName string
|
||||||
|
keyName string
|
||||||
|
accessKey string
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupResources(t *testing.T, keyName string) testResources {
|
||||||
|
clients := getTestClient(t)
|
||||||
|
|
||||||
|
ri := acctest.RandInt()
|
||||||
|
rs := acctest.RandString(4)
|
||||||
|
res := testResources{
|
||||||
|
resourceGroupName: fmt.Sprintf("terraform-backend-testing-%d", ri),
|
||||||
|
storageAccountName: fmt.Sprintf("tfbackendtesting%s", rs),
|
||||||
|
containerName: "terraform",
|
||||||
|
keyName: keyName,
|
||||||
|
}
|
||||||
|
|
||||||
|
location := os.Getenv("ARM_LOCATION")
|
||||||
|
if location == "" {
|
||||||
|
location = "westus"
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Logf("creating resource group %s", res.resourceGroupName)
|
||||||
|
_, err := clients.groupsClient.CreateOrUpdate(res.resourceGroupName, resources.Group{Location: &location})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to create test resource group: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Logf("creating storage account %s", res.storageAccountName)
|
||||||
|
_, createError := clients.storageAccountsClient.Create(res.resourceGroupName, res.storageAccountName, armStorage.AccountCreateParameters{
|
||||||
|
Sku: &armStorage.Sku{
|
||||||
|
Name: armStorage.StandardLRS,
|
||||||
|
Tier: armStorage.Standard,
|
||||||
|
},
|
||||||
|
Location: &location,
|
||||||
|
}, make(chan struct{}))
|
||||||
|
createErr := <-createError
|
||||||
|
if createErr != nil {
|
||||||
|
destroyResources(t, res.resourceGroupName)
|
||||||
|
t.Fatalf("failed to create test storage account: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Log("fetching access key for storage account")
|
||||||
|
resp, err := clients.storageAccountsClient.ListKeys(res.resourceGroupName, res.storageAccountName)
|
||||||
|
if err != nil {
|
||||||
|
destroyResources(t, res.resourceGroupName)
|
||||||
|
t.Fatalf("failed to list storage account keys %s:", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
keys := *resp.Keys
|
||||||
|
res.accessKey = *keys[0].Value
|
||||||
|
|
||||||
|
storageClient, err := storage.NewClient(res.storageAccountName, res.accessKey,
|
||||||
|
clients.environment.StorageEndpointSuffix, storage.DefaultAPIVersion, true)
|
||||||
|
if err != nil {
|
||||||
|
destroyResources(t, res.resourceGroupName)
|
||||||
|
t.Fatalf("failed to list storage account keys %s:", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Logf("creating container %s", res.containerName)
|
||||||
|
blobService := storageClient.GetBlobService()
|
||||||
|
container := blobService.GetContainerReference(res.containerName)
|
||||||
|
err = container.Create(&storage.CreateContainerOptions{})
|
||||||
|
if err != nil {
|
||||||
|
destroyResources(t, res.resourceGroupName)
|
||||||
|
t.Fatalf("failed to create storage container: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func destroyResources(t *testing.T, resourceGroupName string) {
|
||||||
|
warning := "WARNING: Failed to delete the test Azure resources. They may incur charges. (error was %s)"
|
||||||
|
|
||||||
|
clients := getTestClient(t)
|
||||||
|
|
||||||
|
t.Log("destroying created resources")
|
||||||
|
|
||||||
|
// destroying is simple as deleting the resource group will destroy everything else
|
||||||
|
_, deleteErr := clients.groupsClient.Delete(resourceGroupName, make(chan struct{}))
|
||||||
|
err := <-deleteErr
|
||||||
|
if err != nil {
|
||||||
|
t.Logf(warning, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Log("Azure resources destroyed")
|
||||||
|
}
|
||||||
|
|
||||||
|
type testClient struct {
|
||||||
|
subscriptionID string
|
||||||
|
tenantID string
|
||||||
|
clientID string
|
||||||
|
clientSecret string
|
||||||
|
environment azure.Environment
|
||||||
|
groupsClient resources.GroupsClient
|
||||||
|
storageAccountsClient armStorage.AccountsClient
|
||||||
|
}
|
||||||
|
|
||||||
|
func getTestClient(t *testing.T) testClient {
|
||||||
|
client := testClient{
|
||||||
|
subscriptionID: os.Getenv("ARM_SUBSCRIPTION_ID"),
|
||||||
|
tenantID: os.Getenv("ARM_TENANT_ID"),
|
||||||
|
clientID: os.Getenv("ARM_CLIENT_ID"),
|
||||||
|
clientSecret: os.Getenv("ARM_CLIENT_SECRET"),
|
||||||
|
}
|
||||||
|
|
||||||
|
if client.subscriptionID == "" || client.tenantID == "" || client.clientID == "" || client.clientSecret == "" {
|
||||||
|
t.Fatal("Azure credentials missing or incomplete")
|
||||||
|
}
|
||||||
|
|
||||||
|
env, err := getAzureEnvironment(os.Getenv("ARM_ENVIRONMENT"))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to detect Azure environment from ARM_ENVIRONMENT value: %s", os.Getenv("ARM_ENVIRONMENT"))
|
||||||
|
}
|
||||||
|
client.environment = env
|
||||||
|
|
||||||
|
oauthConfig, err := adal.NewOAuthConfig(env.ActiveDirectoryEndpoint, client.tenantID)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to get OAuth config: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
spt, err := adal.NewServicePrincipalToken(*oauthConfig, client.clientID, client.clientSecret, env.ResourceManagerEndpoint)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to create Service Principal Token: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
client.groupsClient = resources.NewGroupsClientWithBaseURI(env.ResourceManagerEndpoint, client.subscriptionID)
|
||||||
|
client.groupsClient.Authorizer = autorest.NewBearerAuthorizer(spt)
|
||||||
|
|
||||||
|
client.storageAccountsClient = armStorage.NewAccountsClientWithBaseURI(env.ResourceManagerEndpoint, client.subscriptionID)
|
||||||
|
client.storageAccountsClient.Authorizer = autorest.NewBearerAuthorizer(spt)
|
||||||
|
|
||||||
|
return client
|
||||||
|
}
|
|
@ -0,0 +1,251 @@
|
||||||
|
package azure
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"encoding/base64"
|
||||||
|
"github.com/Azure/azure-sdk-for-go/storage"
|
||||||
|
multierror "github.com/hashicorp/go-multierror"
|
||||||
|
uuid "github.com/hashicorp/go-uuid"
|
||||||
|
"github.com/hashicorp/terraform/state"
|
||||||
|
"github.com/hashicorp/terraform/state/remote"
|
||||||
|
"github.com/hashicorp/terraform/terraform"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
leaseHeader = "x-ms-lease-id"
|
||||||
|
// Must be lower case
|
||||||
|
lockInfoMetaKey = "terraformlockid"
|
||||||
|
)
|
||||||
|
|
||||||
|
type RemoteClient struct {
|
||||||
|
blobClient storage.BlobStorageClient
|
||||||
|
containerName string
|
||||||
|
keyName string
|
||||||
|
leaseID string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *RemoteClient) Get() (*remote.Payload, error) {
|
||||||
|
containerReference := c.blobClient.GetContainerReference(c.containerName)
|
||||||
|
blobReference := containerReference.GetBlobReference(c.keyName)
|
||||||
|
options := &storage.GetBlobOptions{}
|
||||||
|
blob, err := blobReference.Get(options)
|
||||||
|
if err != nil {
|
||||||
|
if storErr, ok := err.(storage.AzureStorageServiceError); ok {
|
||||||
|
if storErr.Code == "BlobNotFound" {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
defer blob.Close()
|
||||||
|
|
||||||
|
buf := bytes.NewBuffer(nil)
|
||||||
|
if _, err := io.Copy(buf, blob); err != nil {
|
||||||
|
return nil, fmt.Errorf("Failed to read remote state: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
payload := &remote.Payload{
|
||||||
|
Data: buf.Bytes(),
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there was no data, then return nil
|
||||||
|
if len(payload.Data) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return payload, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *RemoteClient) Put(data []byte) error {
|
||||||
|
setOptions := &storage.SetBlobPropertiesOptions{}
|
||||||
|
putOptions := &storage.PutBlobOptions{}
|
||||||
|
|
||||||
|
containerReference := c.blobClient.GetContainerReference(c.containerName)
|
||||||
|
blobReference := containerReference.GetBlobReference(c.keyName)
|
||||||
|
|
||||||
|
blobReference.Properties.ContentType = "application/json"
|
||||||
|
blobReference.Properties.ContentLength = int64(len(data))
|
||||||
|
|
||||||
|
if c.leaseID != "" {
|
||||||
|
setOptions.LeaseID = c.leaseID
|
||||||
|
putOptions.LeaseID = c.leaseID
|
||||||
|
}
|
||||||
|
|
||||||
|
reader := bytes.NewReader(data)
|
||||||
|
|
||||||
|
err := blobReference.CreateBlockBlobFromReader(reader, putOptions)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return blobReference.SetProperties(setOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *RemoteClient) Delete() error {
|
||||||
|
containerReference := c.blobClient.GetContainerReference(c.containerName)
|
||||||
|
blobReference := containerReference.GetBlobReference(c.keyName)
|
||||||
|
options := &storage.DeleteBlobOptions{}
|
||||||
|
|
||||||
|
if c.leaseID != "" {
|
||||||
|
options.LeaseID = c.leaseID
|
||||||
|
}
|
||||||
|
|
||||||
|
return blobReference.Delete(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *RemoteClient) Lock(info *state.LockInfo) (string, error) {
|
||||||
|
stateName := fmt.Sprintf("%s/%s", c.containerName, c.keyName)
|
||||||
|
info.Path = stateName
|
||||||
|
|
||||||
|
if info.ID == "" {
|
||||||
|
lockID, err := uuid.GenerateUUID()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
info.ID = lockID
|
||||||
|
}
|
||||||
|
|
||||||
|
getLockInfoErr := func(err error) error {
|
||||||
|
lockInfo, infoErr := c.getLockInfo()
|
||||||
|
if infoErr != nil {
|
||||||
|
err = multierror.Append(err, infoErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &state.LockError{
|
||||||
|
Err: err,
|
||||||
|
Info: lockInfo,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
containerReference := c.blobClient.GetContainerReference(c.containerName)
|
||||||
|
blobReference := containerReference.GetBlobReference(c.keyName)
|
||||||
|
leaseID, err := blobReference.AcquireLease(-1, info.ID, &storage.LeaseOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if storErr, ok := err.(storage.AzureStorageServiceError); ok && storErr.Code != "BlobNotFound" {
|
||||||
|
return "", getLockInfoErr(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// failed to lock as there was no state blob, write empty state
|
||||||
|
stateMgr := &remote.State{Client: c}
|
||||||
|
|
||||||
|
// ensure state is actually empty
|
||||||
|
if err := stateMgr.RefreshState(); err != nil {
|
||||||
|
return "", fmt.Errorf("Failed to refresh state before writing empty state for locking: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Print("[DEBUG] Could not lock as state blob did not exist, creating with empty state")
|
||||||
|
|
||||||
|
if v := stateMgr.State(); v == nil {
|
||||||
|
if err := stateMgr.WriteState(terraform.NewState()); err != nil {
|
||||||
|
return "", fmt.Errorf("Failed to write empty state for locking: %s", err)
|
||||||
|
}
|
||||||
|
if err := stateMgr.PersistState(); err != nil {
|
||||||
|
return "", fmt.Errorf("Failed to persist empty state for locking: %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
leaseID, err = blobReference.AcquireLease(-1, info.ID, &storage.LeaseOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return "", getLockInfoErr(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
info.ID = leaseID
|
||||||
|
c.leaseID = leaseID
|
||||||
|
|
||||||
|
if err := c.writeLockInfo(info); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return info.ID, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *RemoteClient) getLockInfo() (*state.LockInfo, error) {
|
||||||
|
containerReference := c.blobClient.GetContainerReference(c.containerName)
|
||||||
|
blobReference := containerReference.GetBlobReference(c.keyName)
|
||||||
|
err := blobReference.GetMetadata(&storage.GetBlobMetadataOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
raw := blobReference.Metadata[lockInfoMetaKey]
|
||||||
|
if raw == "" {
|
||||||
|
return nil, fmt.Errorf("blob metadata %s was empty", lockInfoMetaKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
data, err := base64.StdEncoding.DecodeString(raw)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
lockInfo := &state.LockInfo{}
|
||||||
|
err = json.Unmarshal(data, lockInfo)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return lockInfo, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// writes info to blob meta data, deletes metadata entry if info is nil
|
||||||
|
func (c *RemoteClient) writeLockInfo(info *state.LockInfo) error {
|
||||||
|
containerReference := c.blobClient.GetContainerReference(c.containerName)
|
||||||
|
blobReference := containerReference.GetBlobReference(c.keyName)
|
||||||
|
err := blobReference.GetMetadata(&storage.GetBlobMetadataOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if info == nil {
|
||||||
|
delete(blobReference.Metadata, lockInfoMetaKey)
|
||||||
|
} else {
|
||||||
|
value := base64.StdEncoding.EncodeToString(info.Marshal())
|
||||||
|
blobReference.Metadata[lockInfoMetaKey] = value
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := &storage.SetBlobMetadataOptions{
|
||||||
|
LeaseID: c.leaseID,
|
||||||
|
}
|
||||||
|
return blobReference.SetMetadata(opts)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *RemoteClient) Unlock(id string) error {
|
||||||
|
lockErr := &state.LockError{}
|
||||||
|
|
||||||
|
lockInfo, err := c.getLockInfo()
|
||||||
|
if err != nil {
|
||||||
|
lockErr.Err = fmt.Errorf("failed to retrieve lock info: %s", err)
|
||||||
|
return lockErr
|
||||||
|
}
|
||||||
|
lockErr.Info = lockInfo
|
||||||
|
|
||||||
|
if lockInfo.ID != id {
|
||||||
|
lockErr.Err = fmt.Errorf("lock id %q does not match existing lock", id)
|
||||||
|
return lockErr
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := c.writeLockInfo(nil); err != nil {
|
||||||
|
lockErr.Err = fmt.Errorf("failed to delete lock info from metadata: %s", err)
|
||||||
|
return lockErr
|
||||||
|
}
|
||||||
|
|
||||||
|
containerReference := c.blobClient.GetContainerReference(c.containerName)
|
||||||
|
blobReference := containerReference.GetBlobReference(c.keyName)
|
||||||
|
err = blobReference.ReleaseLease(id, &storage.LeaseOptions{})
|
||||||
|
if err != nil {
|
||||||
|
lockErr.Err = err
|
||||||
|
return lockErr
|
||||||
|
}
|
||||||
|
|
||||||
|
c.leaseID = ""
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
package azure
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/backend"
|
||||||
|
"github.com/hashicorp/terraform/state/remote"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestRemoteClient_impl(t *testing.T) {
|
||||||
|
var _ remote.Client = new(RemoteClient)
|
||||||
|
var _ remote.ClientLocker = new(RemoteClient)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRemoteClient(t *testing.T) {
|
||||||
|
testACC(t)
|
||||||
|
|
||||||
|
keyName := "testState"
|
||||||
|
res := setupResources(t, keyName)
|
||||||
|
defer destroyResources(t, res.resourceGroupName)
|
||||||
|
|
||||||
|
b := backend.TestBackendConfig(t, New(), map[string]interface{}{
|
||||||
|
"storage_account_name": res.storageAccountName,
|
||||||
|
"container_name": res.containerName,
|
||||||
|
"key": keyName,
|
||||||
|
"access_key": res.accessKey,
|
||||||
|
}).(*Backend)
|
||||||
|
|
||||||
|
state, err := b.State(backend.DefaultStateName)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
remote.TestClient(t, state.(*remote.State).Client)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRemoteClientLocks(t *testing.T) {
|
||||||
|
testACC(t)
|
||||||
|
|
||||||
|
keyName := "testState"
|
||||||
|
res := setupResources(t, keyName)
|
||||||
|
defer destroyResources(t, res.resourceGroupName)
|
||||||
|
|
||||||
|
b1 := backend.TestBackendConfig(t, New(), map[string]interface{}{
|
||||||
|
"storage_account_name": res.storageAccountName,
|
||||||
|
"container_name": res.containerName,
|
||||||
|
"key": keyName,
|
||||||
|
"access_key": res.accessKey,
|
||||||
|
}).(*Backend)
|
||||||
|
|
||||||
|
b2 := backend.TestBackendConfig(t, New(), map[string]interface{}{
|
||||||
|
"storage_account_name": res.storageAccountName,
|
||||||
|
"container_name": res.containerName,
|
||||||
|
"key": keyName,
|
||||||
|
"access_key": res.accessKey,
|
||||||
|
}).(*Backend)
|
||||||
|
|
||||||
|
s1, err := b1.State(backend.DefaultStateName)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
s2, err := b2.State(backend.DefaultStateName)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
remote.TestRemoteLocks(t, s1.(*remote.State).Client, s2.(*remote.State).Client)
|
||||||
|
}
|
|
@ -46,7 +46,6 @@ func NewClient(t string, conf map[string]string) (Client, error) {
|
||||||
// NewClient.
|
// NewClient.
|
||||||
var BuiltinClients = map[string]Factory{
|
var BuiltinClients = map[string]Factory{
|
||||||
"artifactory": artifactoryFactory,
|
"artifactory": artifactoryFactory,
|
||||||
"azure": azureFactory,
|
|
||||||
"etcd": etcdFactory,
|
"etcd": etcdFactory,
|
||||||
"gcs": gcsFactory,
|
"gcs": gcsFactory,
|
||||||
"http": httpFactory,
|
"http": httpFactory,
|
||||||
|
|
53
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/client.go
generated
vendored
Executable file
53
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/client.go
generated
vendored
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
// Package resources implements the Azure ARM Resources service API version
|
||||||
|
// 2016-09-01.
|
||||||
|
//
|
||||||
|
// 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 1.0.1.0
|
||||||
|
// 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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ManagementClient is the base client for Resources.
|
||||||
|
type ManagementClient struct {
|
||||||
|
autorest.Client
|
||||||
|
BaseURI string
|
||||||
|
SubscriptionID string
|
||||||
|
}
|
||||||
|
|
||||||
|
// New creates an instance of the ManagementClient client.
|
||||||
|
func New(subscriptionID string) ManagementClient {
|
||||||
|
return NewWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewWithBaseURI creates an instance of the ManagementClient client.
|
||||||
|
func NewWithBaseURI(baseURI string, subscriptionID string) ManagementClient {
|
||||||
|
return ManagementClient{
|
||||||
|
Client: autorest.NewClientWithUserAgent(UserAgent()),
|
||||||
|
BaseURI: baseURI,
|
||||||
|
SubscriptionID: subscriptionID,
|
||||||
|
}
|
||||||
|
}
|
230
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deploymentoperations.go
generated
vendored
Executable file
230
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deploymentoperations.go
generated
vendored
Executable file
|
@ -0,0 +1,230 @@
|
||||||
|
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 1.0.1.0
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is
|
||||||
|
// regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/validation"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeploymentOperationsClient is the provides operations for working with
|
||||||
|
// resources and resource groups.
|
||||||
|
type DeploymentOperationsClient struct {
|
||||||
|
ManagementClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
func NewDeploymentOperationsClientWithBaseURI(baseURI string, subscriptionID string) DeploymentOperationsClient {
|
||||||
|
return DeploymentOperationsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets a deployments operation.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group. The name is case
|
||||||
|
// insensitive. deploymentName is the name of the deployment. operationID is
|
||||||
|
// the ID of the operation to get.
|
||||||
|
func (client DeploymentOperationsClient) Get(resourceGroupName string, deploymentName string, operationID string) (result DeploymentOperation, err error) {
|
||||||
|
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: `^[-\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.NewErrorWithValidationError(err, "resources.DeploymentOperationsClient", "Get")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetPreparer(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(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 = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group. The name is case
|
||||||
|
// insensitive. deploymentName is the name of the deployment with the operation
|
||||||
|
// to get. top is the number of results to return.
|
||||||
|
func (client DeploymentOperationsClient) List(resourceGroupName string, deploymentName string, top *int32) (result DeploymentOperationsListResult, err error) {
|
||||||
|
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: `^[-\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.NewErrorWithValidationError(err, "resources.DeploymentOperationsClient", "List")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.ListPreparer(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.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, 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(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 = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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(lastResults DeploymentOperationsListResult) (result DeploymentOperationsListResult, err error) {
|
||||||
|
req, err := lastResults.DeploymentOperationsListResultPreparer()
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", 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", "List", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
767
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deployments.go
generated
vendored
Executable file
767
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deployments.go
generated
vendored
Executable file
|
@ -0,0 +1,767 @@
|
||||||
|
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 1.0.1.0
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is
|
||||||
|
// regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/validation"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeploymentsClient is the provides operations for working with resources and
|
||||||
|
// resource groups.
|
||||||
|
type DeploymentsClient struct {
|
||||||
|
ManagementClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
func NewDeploymentsClientWithBaseURI(baseURI string, subscriptionID string) DeploymentsClient {
|
||||||
|
return DeploymentsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group. The name is case
|
||||||
|
// insensitive. deploymentName is the name of the deployment to cancel.
|
||||||
|
func (client DeploymentsClient) Cancel(resourceGroupName string, deploymentName string) (result autorest.Response, err error) {
|
||||||
|
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: `^[-\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.NewErrorWithValidationError(err, "resources.DeploymentsClient", "Cancel")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CancelPreparer(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(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 = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group with the deployment to
|
||||||
|
// check. The name is case insensitive. deploymentName is the name of the
|
||||||
|
// deployment to check.
|
||||||
|
func (client DeploymentsClient) CheckExistence(resourceGroupName string, deploymentName string) (result autorest.Response, err error) {
|
||||||
|
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: `^[-\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.NewErrorWithValidationError(err, "resources.DeploymentsClient", "CheckExistence")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CheckExistencePreparer(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(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 = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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. This method may poll for completion. Polling
|
||||||
|
// can be canceled by passing the cancel channel argument. The channel will be
|
||||||
|
// used to cancel polling and any outstanding HTTP requests.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group to deploy the resources
|
||||||
|
// to. The name is case insensitive. The resource group must already exist.
|
||||||
|
// deploymentName is the name of the deployment. parameters is additional
|
||||||
|
// parameters supplied to the operation.
|
||||||
|
func (client DeploymentsClient) CreateOrUpdate(resourceGroupName string, deploymentName string, parameters Deployment, cancel <-chan struct{}) (<-chan DeploymentExtended, <-chan error) {
|
||||||
|
resultChan := make(chan DeploymentExtended, 1)
|
||||||
|
errChan := make(chan error, 1)
|
||||||
|
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: `^[-\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 {
|
||||||
|
errChan <- validation.NewErrorWithValidationError(err, "resources.DeploymentsClient", "CreateOrUpdate")
|
||||||
|
close(errChan)
|
||||||
|
close(resultChan)
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
var err error
|
||||||
|
var result DeploymentExtended
|
||||||
|
defer func() {
|
||||||
|
resultChan <- result
|
||||||
|
errChan <- err
|
||||||
|
close(resultChan)
|
||||||
|
close(errChan)
|
||||||
|
}()
|
||||||
|
req, err := client.CreateOrUpdatePreparer(resourceGroupName, deploymentName, parameters, cancel)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "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.DeploymentsClient", "CreateOrUpdate", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CreateOrUpdateResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdate", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
||||||
|
func (client DeploymentsClient) CreateOrUpdatePreparer(resourceGroupName string, deploymentName string, parameters Deployment, cancel <-chan struct{}) (*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 = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsJSON(),
|
||||||
|
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{Cancel: cancel})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client,
|
||||||
|
req,
|
||||||
|
azure.DoPollForAsynchronous(client.PollingDelay))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
// This method may poll for completion. Polling can be canceled by passing the
|
||||||
|
// cancel channel argument. The channel will be used to cancel polling and any
|
||||||
|
// outstanding HTTP requests.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group with the deployment to
|
||||||
|
// delete. The name is case insensitive. deploymentName is the name of the
|
||||||
|
// deployment to delete.
|
||||||
|
func (client DeploymentsClient) Delete(resourceGroupName string, deploymentName string, cancel <-chan struct{}) (<-chan autorest.Response, <-chan error) {
|
||||||
|
resultChan := make(chan autorest.Response, 1)
|
||||||
|
errChan := make(chan error, 1)
|
||||||
|
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: `^[-\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 {
|
||||||
|
errChan <- validation.NewErrorWithValidationError(err, "resources.DeploymentsClient", "Delete")
|
||||||
|
close(errChan)
|
||||||
|
close(resultChan)
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
var err error
|
||||||
|
var result autorest.Response
|
||||||
|
defer func() {
|
||||||
|
resultChan <- result
|
||||||
|
errChan <- err
|
||||||
|
close(resultChan)
|
||||||
|
close(errChan)
|
||||||
|
}()
|
||||||
|
req, err := client.DeletePreparer(resourceGroupName, deploymentName, cancel)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Delete", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.DeleteSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Delete", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Delete", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePreparer prepares the Delete request.
|
||||||
|
func (client DeploymentsClient) DeletePreparer(resourceGroupName string, deploymentName string, cancel <-chan struct{}) (*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 = "2016-09-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.Resources/deployments/{deploymentName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{Cancel: cancel})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client,
|
||||||
|
req,
|
||||||
|
azure.DoPollForAsynchronous(client.PollingDelay))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group. The name is case
|
||||||
|
// insensitive. deploymentName is the name of the deployment from which to get
|
||||||
|
// the template.
|
||||||
|
func (client DeploymentsClient) ExportTemplate(resourceGroupName string, deploymentName string) (result DeploymentExportResult, err error) {
|
||||||
|
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: `^[-\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.NewErrorWithValidationError(err, "resources.DeploymentsClient", "ExportTemplate")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.ExportTemplatePreparer(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(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 = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group. The name is case
|
||||||
|
// insensitive. deploymentName is the name of the deployment to get.
|
||||||
|
func (client DeploymentsClient) Get(resourceGroupName string, deploymentName string) (result DeploymentExtended, err error) {
|
||||||
|
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: `^[-\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.NewErrorWithValidationError(err, "resources.DeploymentsClient", "Get")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetPreparer(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(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 = "2016-09-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.Resources/deployments/{deploymentName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
||||||
|
|
||||||
|
// List get all the deployments for a resource group.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group with the deployments to
|
||||||
|
// get. The name is case insensitive. filter is the filter to apply on the
|
||||||
|
// operation. For example, you can use $filter=provisioningState eq '{state}'.
|
||||||
|
// top is the number of results to get. If null is passed, returns all
|
||||||
|
// deployments.
|
||||||
|
func (client DeploymentsClient) List(resourceGroupName string, filter string, top *int32) (result DeploymentListResult, err error) {
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewErrorWithValidationError(err, "resources.DeploymentsClient", "List")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.ListPreparer(resourceGroupName, filter, top)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPreparer prepares the List request.
|
||||||
|
func (client DeploymentsClient) ListPreparer(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 = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSender sends the List request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client DeploymentsClient) ListSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResponder handles the response to the List request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client DeploymentsClient) ListResponder(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
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListNextResults retrieves the next set of results, if any.
|
||||||
|
func (client DeploymentsClient) ListNextResults(lastResults DeploymentListResult) (result DeploymentListResult, err error) {
|
||||||
|
req, err := lastResults.DeploymentListResultPreparer()
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", 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.DeploymentsClient", "List", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate validates whether the specified template is syntactically correct
|
||||||
|
// and will be accepted by Azure Resource Manager..
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group the template will be
|
||||||
|
// deployed to. The name is case insensitive. deploymentName is the name of the
|
||||||
|
// deployment. parameters is parameters to validate.
|
||||||
|
func (client DeploymentsClient) Validate(resourceGroupName string, deploymentName string, parameters Deployment) (result DeploymentValidateResult, err error) {
|
||||||
|
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: `^[-\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.NewErrorWithValidationError(err, "resources.DeploymentsClient", "Validate")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.ValidatePreparer(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(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 = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsJSON(),
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
711
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/groups.go
generated
vendored
Executable file
711
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/groups.go
generated
vendored
Executable file
|
@ -0,0 +1,711 @@
|
||||||
|
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 1.0.1.0
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is
|
||||||
|
// regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/validation"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GroupsClient is the provides operations for working with resources and
|
||||||
|
// resource groups.
|
||||||
|
type GroupsClient struct {
|
||||||
|
ManagementClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
func NewGroupsClientWithBaseURI(baseURI string, subscriptionID string) GroupsClient {
|
||||||
|
return GroupsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistence checks whether a resource group exists.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group to check. The name is
|
||||||
|
// case insensitive.
|
||||||
|
func (client GroupsClient) CheckExistence(resourceGroupName string) (result autorest.Response, err error) {
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewErrorWithValidationError(err, "resources.GroupsClient", "CheckExistence")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CheckExistencePreparer(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(resourceGroupName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 a resource group.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group to create or update.
|
||||||
|
// parameters is parameters supplied to the create or update a resource group.
|
||||||
|
func (client GroupsClient) CreateOrUpdate(resourceGroupName string, parameters Group) (result Group, err error) {
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: parameters,
|
||||||
|
Constraints: []validation.Constraint{{Target: "parameters.Location", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewErrorWithValidationError(err, "resources.GroupsClient", "CreateOrUpdate")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CreateOrUpdatePreparer(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(resourceGroupName string, parameters Group) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsPut(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.StatusCreated, http.StatusOK),
|
||||||
|
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. This method may poll for completion.
|
||||||
|
// Polling can be canceled by passing the cancel channel argument. The channel
|
||||||
|
// will be used to cancel polling and any outstanding HTTP requests.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group to delete. The name is
|
||||||
|
// case insensitive.
|
||||||
|
func (client GroupsClient) Delete(resourceGroupName string, cancel <-chan struct{}) (<-chan autorest.Response, <-chan error) {
|
||||||
|
resultChan := make(chan autorest.Response, 1)
|
||||||
|
errChan := make(chan error, 1)
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
errChan <- validation.NewErrorWithValidationError(err, "resources.GroupsClient", "Delete")
|
||||||
|
close(errChan)
|
||||||
|
close(resultChan)
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
var err error
|
||||||
|
var result autorest.Response
|
||||||
|
defer func() {
|
||||||
|
resultChan <- result
|
||||||
|
errChan <- err
|
||||||
|
close(resultChan)
|
||||||
|
close(errChan)
|
||||||
|
}()
|
||||||
|
req, err := client.DeletePreparer(resourceGroupName, cancel)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Delete", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.DeleteSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Delete", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Delete", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePreparer prepares the Delete request.
|
||||||
|
func (client GroupsClient) DeletePreparer(resourceGroupName string, cancel <-chan struct{}) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{Cancel: cancel})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client,
|
||||||
|
req,
|
||||||
|
azure.DoPollForAsynchronous(client.PollingDelay))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.StatusAccepted, http.StatusOK),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplate captures the specified resource group as a template.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group to export as a template.
|
||||||
|
// parameters is parameters for exporting the template.
|
||||||
|
func (client GroupsClient) ExportTemplate(resourceGroupName string, parameters ExportTemplateRequest) (result GroupExportResult, err error) {
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewErrorWithValidationError(err, "resources.GroupsClient", "ExportTemplate")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.ExportTemplatePreparer(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(resourceGroupName string, parameters ExportTemplateRequest) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsJSON(),
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group to get. The name is case
|
||||||
|
// insensitive.
|
||||||
|
func (client GroupsClient) Get(resourceGroupName string) (result Group, err error) {
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewErrorWithValidationError(err, "resources.GroupsClient", "Get")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetPreparer(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(resourceGroupName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// filter is the filter to apply on the operation. top is the number of results
|
||||||
|
// to return. If null is passed, returns all resource groups.
|
||||||
|
func (client GroupsClient) List(filter string, top *int32) (result GroupListResult, err error) {
|
||||||
|
req, err := client.ListPreparer(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.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, 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(filter string, top *int32) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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(lastResults GroupListResult) (result GroupListResult, err error) {
|
||||||
|
req, err := lastResults.GroupListResultPreparer()
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "List", 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", "List", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "List", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResources get all the resources for a resource group.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the resource group with the resources to get. filter is
|
||||||
|
// the filter to apply on the operation. expand is the $expand query parameter
|
||||||
|
// top is the number of results to return. If null is passed, returns all
|
||||||
|
// resources.
|
||||||
|
func (client GroupsClient) ListResources(resourceGroupName string, filter string, expand string, top *int32) (result ListResult, err error) {
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewErrorWithValidationError(err, "resources.GroupsClient", "ListResources")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.ListResourcesPreparer(resourceGroupName, filter, expand, top)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListResourcesSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResourcesResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResourcesPreparer prepares the ListResources request.
|
||||||
|
func (client GroupsClient) ListResourcesPreparer(resourceGroupName string, filter string, expand string, top *int32) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
if len(filter) > 0 {
|
||||||
|
queryParameters["$filter"] = autorest.Encode("query", filter)
|
||||||
|
}
|
||||||
|
if len(expand) > 0 {
|
||||||
|
queryParameters["$expand"] = autorest.Encode("query", expand)
|
||||||
|
}
|
||||||
|
if top != nil {
|
||||||
|
queryParameters["$top"] = autorest.Encode("query", *top)
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResourcesSender sends the ListResources request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupsClient) ListResourcesSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResourcesResponder handles the response to the ListResources request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupsClient) ListResourcesResponder(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
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResourcesNextResults retrieves the next set of results, if any.
|
||||||
|
func (client GroupsClient) ListResourcesNextResults(lastResults ListResult) (result ListResult, err error) {
|
||||||
|
req, err := lastResults.ListResultPreparer()
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", nil, "Failure preparing next results request")
|
||||||
|
}
|
||||||
|
if req == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListResourcesSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResourcesResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch 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.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group to update. The name is
|
||||||
|
// case insensitive. parameters is parameters supplied to update a resource
|
||||||
|
// group.
|
||||||
|
func (client GroupsClient) Patch(resourceGroupName string, parameters Group) (result Group, err error) {
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewErrorWithValidationError(err, "resources.GroupsClient", "Patch")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.PatchPreparer(resourceGroupName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Patch", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.PatchSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Patch", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.PatchResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Patch", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// PatchPreparer prepares the Patch request.
|
||||||
|
func (client GroupsClient) PatchPreparer(resourceGroupName string, parameters Group) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsPatch(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// PatchSender sends the Patch request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupsClient) PatchSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PatchResponder handles the response to the Patch request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupsClient) PatchResponder(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
|
||||||
|
}
|
457
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/models.go
generated
vendored
Executable file
457
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/models.go
generated
vendored
Executable file
|
@ -0,0 +1,457 @@
|
||||||
|
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 1.0.1.0
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is
|
||||||
|
// regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/date"
|
||||||
|
"github.com/Azure/go-autorest/autorest/to"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeploymentMode enumerates the values for deployment mode.
|
||||||
|
type DeploymentMode string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Complete specifies the complete state for deployment mode.
|
||||||
|
Complete DeploymentMode = "Complete"
|
||||||
|
// Incremental specifies the incremental state for deployment mode.
|
||||||
|
Incremental DeploymentMode = "Incremental"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ResourceIdentityType enumerates the values for resource identity type.
|
||||||
|
type ResourceIdentityType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// SystemAssigned specifies the system assigned state for resource identity
|
||||||
|
// type.
|
||||||
|
SystemAssigned ResourceIdentityType = "SystemAssigned"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AliasPathType is the type of the paths for alias.
|
||||||
|
type AliasPathType struct {
|
||||||
|
Path *string `json:"path,omitempty"`
|
||||||
|
APIVersions *[]string `json:"apiVersions,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AliasType is the alias type.
|
||||||
|
type AliasType struct {
|
||||||
|
Name *string `json:"name,omitempty"`
|
||||||
|
Paths *[]AliasPathType `json:"paths,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// BasicDependency is deployment dependency information.
|
||||||
|
type BasicDependency struct {
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
ResourceType *string `json:"resourceType,omitempty"`
|
||||||
|
ResourceName *string `json:"resourceName,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DebugSetting is
|
||||||
|
type DebugSetting struct {
|
||||||
|
DetailLevel *string `json:"detailLevel,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dependency is deployment dependency information.
|
||||||
|
type Dependency struct {
|
||||||
|
DependsOn *[]BasicDependency `json:"dependsOn,omitempty"`
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
ResourceType *string `json:"resourceType,omitempty"`
|
||||||
|
ResourceName *string `json:"resourceName,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deployment is deployment operation parameters.
|
||||||
|
type Deployment struct {
|
||||||
|
Properties *DeploymentProperties `json:"properties,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentExportResult is the deployment export result.
|
||||||
|
type DeploymentExportResult struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
Template *map[string]interface{} `json:"template,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentExtended is deployment information.
|
||||||
|
type DeploymentExtended struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
Name *string `json:"name,omitempty"`
|
||||||
|
Properties *DeploymentPropertiesExtended `json:"properties,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentExtendedFilter is deployment filter.
|
||||||
|
type DeploymentExtendedFilter struct {
|
||||||
|
ProvisioningState *string `json:"provisioningState,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentListResult is list of deployments.
|
||||||
|
type DeploymentListResult struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
Value *[]DeploymentExtended `json:"value,omitempty"`
|
||||||
|
NextLink *string `json:"nextLink,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentListResultPreparer prepares a request to retrieve the next set of results. It returns
|
||||||
|
// nil if no more results exist.
|
||||||
|
func (client DeploymentListResult) DeploymentListResultPreparer() (*http.Request, error) {
|
||||||
|
if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return autorest.Prepare(&http.Request{},
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(to.String(client.NextLink)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentOperation is deployment operation information.
|
||||||
|
type DeploymentOperation struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
OperationID *string `json:"operationId,omitempty"`
|
||||||
|
Properties *DeploymentOperationProperties `json:"properties,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentOperationProperties is deployment operation properties.
|
||||||
|
type DeploymentOperationProperties struct {
|
||||||
|
ProvisioningState *string `json:"provisioningState,omitempty"`
|
||||||
|
Timestamp *date.Time `json:"timestamp,omitempty"`
|
||||||
|
ServiceRequestID *string `json:"serviceRequestId,omitempty"`
|
||||||
|
StatusCode *string `json:"statusCode,omitempty"`
|
||||||
|
StatusMessage *map[string]interface{} `json:"statusMessage,omitempty"`
|
||||||
|
TargetResource *TargetResource `json:"targetResource,omitempty"`
|
||||||
|
Request *HTTPMessage `json:"request,omitempty"`
|
||||||
|
Response *HTTPMessage `json:"response,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentOperationsListResult is list of deployment operations.
|
||||||
|
type DeploymentOperationsListResult struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
Value *[]DeploymentOperation `json:"value,omitempty"`
|
||||||
|
NextLink *string `json:"nextLink,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentOperationsListResultPreparer prepares a request to retrieve the next set of results. It returns
|
||||||
|
// nil if no more results exist.
|
||||||
|
func (client DeploymentOperationsListResult) DeploymentOperationsListResultPreparer() (*http.Request, error) {
|
||||||
|
if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return autorest.Prepare(&http.Request{},
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(to.String(client.NextLink)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentProperties is deployment properties.
|
||||||
|
type DeploymentProperties struct {
|
||||||
|
Template *map[string]interface{} `json:"template,omitempty"`
|
||||||
|
TemplateLink *TemplateLink `json:"templateLink,omitempty"`
|
||||||
|
Parameters *map[string]interface{} `json:"parameters,omitempty"`
|
||||||
|
ParametersLink *ParametersLink `json:"parametersLink,omitempty"`
|
||||||
|
Mode DeploymentMode `json:"mode,omitempty"`
|
||||||
|
DebugSetting *DebugSetting `json:"debugSetting,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentPropertiesExtended is deployment properties with additional
|
||||||
|
// details.
|
||||||
|
type DeploymentPropertiesExtended struct {
|
||||||
|
ProvisioningState *string `json:"provisioningState,omitempty"`
|
||||||
|
CorrelationID *string `json:"correlationId,omitempty"`
|
||||||
|
Timestamp *date.Time `json:"timestamp,omitempty"`
|
||||||
|
Outputs *map[string]interface{} `json:"outputs,omitempty"`
|
||||||
|
Providers *[]Provider `json:"providers,omitempty"`
|
||||||
|
Dependencies *[]Dependency `json:"dependencies,omitempty"`
|
||||||
|
Template *map[string]interface{} `json:"template,omitempty"`
|
||||||
|
TemplateLink *TemplateLink `json:"templateLink,omitempty"`
|
||||||
|
Parameters *map[string]interface{} `json:"parameters,omitempty"`
|
||||||
|
ParametersLink *ParametersLink `json:"parametersLink,omitempty"`
|
||||||
|
Mode DeploymentMode `json:"mode,omitempty"`
|
||||||
|
DebugSetting *DebugSetting `json:"debugSetting,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeploymentValidateResult is information from validate template deployment
|
||||||
|
// response.
|
||||||
|
type DeploymentValidateResult struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
Error *ManagementErrorWithDetails `json:"error,omitempty"`
|
||||||
|
Properties *DeploymentPropertiesExtended `json:"properties,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExportTemplateRequest is export resource group template request parameters.
|
||||||
|
type ExportTemplateRequest struct {
|
||||||
|
ResourcesProperty *[]string `json:"resources,omitempty"`
|
||||||
|
Options *string `json:"options,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GenericResource is resource information.
|
||||||
|
type GenericResource struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
Name *string `json:"name,omitempty"`
|
||||||
|
Type *string `json:"type,omitempty"`
|
||||||
|
Location *string `json:"location,omitempty"`
|
||||||
|
Tags *map[string]*string `json:"tags,omitempty"`
|
||||||
|
Plan *Plan `json:"plan,omitempty"`
|
||||||
|
Properties *map[string]interface{} `json:"properties,omitempty"`
|
||||||
|
Kind *string `json:"kind,omitempty"`
|
||||||
|
ManagedBy *string `json:"managedBy,omitempty"`
|
||||||
|
Sku *Sku `json:"sku,omitempty"`
|
||||||
|
Identity *Identity `json:"identity,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GenericResourceFilter is resource filter.
|
||||||
|
type GenericResourceFilter struct {
|
||||||
|
ResourceType *string `json:"resourceType,omitempty"`
|
||||||
|
Tagname *string `json:"tagname,omitempty"`
|
||||||
|
Tagvalue *string `json:"tagvalue,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Group is resource group information.
|
||||||
|
type Group struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
Name *string `json:"name,omitempty"`
|
||||||
|
Properties *GroupProperties `json:"properties,omitempty"`
|
||||||
|
Location *string `json:"location,omitempty"`
|
||||||
|
ManagedBy *string `json:"managedBy,omitempty"`
|
||||||
|
Tags *map[string]*string `json:"tags,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GroupExportResult is
|
||||||
|
type GroupExportResult struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
Template *map[string]interface{} `json:"template,omitempty"`
|
||||||
|
Error *ManagementErrorWithDetails `json:"error,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GroupFilter is resource group filter.
|
||||||
|
type GroupFilter struct {
|
||||||
|
TagName *string `json:"tagName,omitempty"`
|
||||||
|
TagValue *string `json:"tagValue,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GroupListResult is list of resource groups.
|
||||||
|
type GroupListResult struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
Value *[]Group `json:"value,omitempty"`
|
||||||
|
NextLink *string `json:"nextLink,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GroupListResultPreparer prepares a request to retrieve the next set of results. It returns
|
||||||
|
// nil if no more results exist.
|
||||||
|
func (client GroupListResult) GroupListResultPreparer() (*http.Request, error) {
|
||||||
|
if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return autorest.Prepare(&http.Request{},
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(to.String(client.NextLink)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GroupProperties is the resource group properties.
|
||||||
|
type GroupProperties struct {
|
||||||
|
ProvisioningState *string `json:"provisioningState,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HTTPMessage is
|
||||||
|
type HTTPMessage struct {
|
||||||
|
Content *map[string]interface{} `json:"content,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Identity is identity for the resource.
|
||||||
|
type Identity struct {
|
||||||
|
PrincipalID *string `json:"principalId,omitempty"`
|
||||||
|
TenantID *string `json:"tenantId,omitempty"`
|
||||||
|
Type ResourceIdentityType `json:"type,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResult is list of resource groups.
|
||||||
|
type ListResult struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
Value *[]GenericResource `json:"value,omitempty"`
|
||||||
|
NextLink *string `json:"nextLink,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResultPreparer prepares a request to retrieve the next set of results. It returns
|
||||||
|
// nil if no more results exist.
|
||||||
|
func (client ListResult) ListResultPreparer() (*http.Request, error) {
|
||||||
|
if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return autorest.Prepare(&http.Request{},
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(to.String(client.NextLink)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ManagementErrorWithDetails is
|
||||||
|
type ManagementErrorWithDetails struct {
|
||||||
|
Code *string `json:"code,omitempty"`
|
||||||
|
Message *string `json:"message,omitempty"`
|
||||||
|
Target *string `json:"target,omitempty"`
|
||||||
|
Details *[]ManagementErrorWithDetails `json:"details,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveInfo is parameters of move resources.
|
||||||
|
type MoveInfo struct {
|
||||||
|
ResourcesProperty *[]string `json:"resources,omitempty"`
|
||||||
|
TargetResourceGroup *string `json:"targetResourceGroup,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ParametersLink is entity representing the reference to the deployment
|
||||||
|
// paramaters.
|
||||||
|
type ParametersLink struct {
|
||||||
|
URI *string `json:"uri,omitempty"`
|
||||||
|
ContentVersion *string `json:"contentVersion,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Plan is plan for the resource.
|
||||||
|
type Plan struct {
|
||||||
|
Name *string `json:"name,omitempty"`
|
||||||
|
Publisher *string `json:"publisher,omitempty"`
|
||||||
|
Product *string `json:"product,omitempty"`
|
||||||
|
PromotionCode *string `json:"promotionCode,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Provider is resource provider information.
|
||||||
|
type Provider struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
Namespace *string `json:"namespace,omitempty"`
|
||||||
|
RegistrationState *string `json:"registrationState,omitempty"`
|
||||||
|
ResourceTypes *[]ProviderResourceType `json:"resourceTypes,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProviderListResult is list of resource providers.
|
||||||
|
type ProviderListResult struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
Value *[]Provider `json:"value,omitempty"`
|
||||||
|
NextLink *string `json:"nextLink,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProviderListResultPreparer prepares a request to retrieve the next set of results. It returns
|
||||||
|
// nil if no more results exist.
|
||||||
|
func (client ProviderListResult) ProviderListResultPreparer() (*http.Request, error) {
|
||||||
|
if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return autorest.Prepare(&http.Request{},
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(to.String(client.NextLink)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProviderOperationDisplayProperties is resource provider operation's display
|
||||||
|
// properties.
|
||||||
|
type ProviderOperationDisplayProperties struct {
|
||||||
|
Publisher *string `json:"publisher,omitempty"`
|
||||||
|
Provider *string `json:"provider,omitempty"`
|
||||||
|
Resource *string `json:"resource,omitempty"`
|
||||||
|
Operation *string `json:"operation,omitempty"`
|
||||||
|
Description *string `json:"description,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProviderResourceType is resource type managed by the resource provider.
|
||||||
|
type ProviderResourceType struct {
|
||||||
|
ResourceType *string `json:"resourceType,omitempty"`
|
||||||
|
Locations *[]string `json:"locations,omitempty"`
|
||||||
|
Aliases *[]AliasType `json:"aliases,omitempty"`
|
||||||
|
APIVersions *[]string `json:"apiVersions,omitempty"`
|
||||||
|
Properties *map[string]*string `json:"properties,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resource is
|
||||||
|
type Resource struct {
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
Name *string `json:"name,omitempty"`
|
||||||
|
Type *string `json:"type,omitempty"`
|
||||||
|
Location *string `json:"location,omitempty"`
|
||||||
|
Tags *map[string]*string `json:"tags,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sku is sKU for the resource.
|
||||||
|
type Sku struct {
|
||||||
|
Name *string `json:"name,omitempty"`
|
||||||
|
Tier *string `json:"tier,omitempty"`
|
||||||
|
Size *string `json:"size,omitempty"`
|
||||||
|
Family *string `json:"family,omitempty"`
|
||||||
|
Model *string `json:"model,omitempty"`
|
||||||
|
Capacity *int32 `json:"capacity,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SubResource is
|
||||||
|
type SubResource struct {
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TagCount is tag count.
|
||||||
|
type TagCount struct {
|
||||||
|
Type *string `json:"type,omitempty"`
|
||||||
|
Value *int32 `json:"value,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TagDetails is tag details.
|
||||||
|
type TagDetails struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
TagName *string `json:"tagName,omitempty"`
|
||||||
|
Count *TagCount `json:"count,omitempty"`
|
||||||
|
Values *[]TagValue `json:"values,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TagsListResult is list of subscription tags.
|
||||||
|
type TagsListResult struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
Value *[]TagDetails `json:"value,omitempty"`
|
||||||
|
NextLink *string `json:"nextLink,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TagsListResultPreparer prepares a request to retrieve the next set of results. It returns
|
||||||
|
// nil if no more results exist.
|
||||||
|
func (client TagsListResult) TagsListResultPreparer() (*http.Request, error) {
|
||||||
|
if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return autorest.Prepare(&http.Request{},
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(to.String(client.NextLink)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TagValue is tag information.
|
||||||
|
type TagValue struct {
|
||||||
|
autorest.Response `json:"-"`
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
TagValue *string `json:"tagValue,omitempty"`
|
||||||
|
Count *TagCount `json:"count,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TargetResource is target resource.
|
||||||
|
type TargetResource struct {
|
||||||
|
ID *string `json:"id,omitempty"`
|
||||||
|
ResourceName *string `json:"resourceName,omitempty"`
|
||||||
|
ResourceType *string `json:"resourceType,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TemplateLink is entity representing the reference to the template.
|
||||||
|
type TemplateLink struct {
|
||||||
|
URI *string `json:"uri,omitempty"`
|
||||||
|
ContentVersion *string `json:"contentVersion,omitempty"`
|
||||||
|
}
|
338
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/providers.go
generated
vendored
Executable file
338
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/providers.go
generated
vendored
Executable file
|
@ -0,0 +1,338 @@
|
||||||
|
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 1.0.1.0
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is
|
||||||
|
// regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProvidersClient is the provides operations for working with resources and
|
||||||
|
// resource groups.
|
||||||
|
type ProvidersClient struct {
|
||||||
|
ManagementClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
func NewProvidersClientWithBaseURI(baseURI string, subscriptionID string) ProvidersClient {
|
||||||
|
return ProvidersClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets the specified resource provider.
|
||||||
|
//
|
||||||
|
// resourceProviderNamespace is the namespace of the resource provider. expand
|
||||||
|
// is the $expand query parameter. For example, to include property aliases in
|
||||||
|
// response, use $expand=resourceTypes/aliases.
|
||||||
|
func (client ProvidersClient) Get(resourceProviderNamespace string, expand string) (result Provider, err error) {
|
||||||
|
req, err := client.GetPreparer(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(resourceProviderNamespace string, expand string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// top is the number of results to return. If null is passed returns all
|
||||||
|
// deployments. expand is 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(top *int32, expand string) (result ProviderListResult, err error) {
|
||||||
|
req, err := client.ListPreparer(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.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, 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(top *int32, expand string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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(lastResults ProviderListResult) (result ProviderListResult, err error) {
|
||||||
|
req, err := lastResults.ProviderListResultPreparer()
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", 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", "List", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Register registers a subscription with a resource provider.
|
||||||
|
//
|
||||||
|
// resourceProviderNamespace is the namespace of the resource provider to
|
||||||
|
// register.
|
||||||
|
func (client ProvidersClient) Register(resourceProviderNamespace string) (result Provider, err error) {
|
||||||
|
req, err := client.RegisterPreparer(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(resourceProviderNamespace string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// resourceProviderNamespace is the namespace of the resource provider to
|
||||||
|
// unregister.
|
||||||
|
func (client ProvidersClient) Unregister(resourceProviderNamespace string) (result Provider, err error) {
|
||||||
|
req, err := client.UnregisterPreparer(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(resourceProviderNamespace string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
898
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/resourcesgroup.go
generated
vendored
Executable file
898
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/resourcesgroup.go
generated
vendored
Executable file
|
@ -0,0 +1,898 @@
|
||||||
|
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 1.0.1.0
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is
|
||||||
|
// regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"github.com/Azure/go-autorest/autorest/validation"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GroupClient is the provides operations for working with resources and
|
||||||
|
// resource groups.
|
||||||
|
type GroupClient struct {
|
||||||
|
ManagementClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewGroupClient creates an instance of the GroupClient client.
|
||||||
|
func NewGroupClient(subscriptionID string) GroupClient {
|
||||||
|
return NewGroupClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewGroupClientWithBaseURI creates an instance of the GroupClient client.
|
||||||
|
func NewGroupClientWithBaseURI(baseURI string, subscriptionID string) GroupClient {
|
||||||
|
return GroupClient{NewWithBaseURI(baseURI, subscriptionID)}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistence checks whether a resource exists.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group containing the resource
|
||||||
|
// to check. The name is case insensitive. resourceProviderNamespace is the
|
||||||
|
// resource provider of the resource to check. parentResourcePath is the parent
|
||||||
|
// resource identity. resourceType is the resource type. resourceName is the
|
||||||
|
// name of the resource to check whether it exists.
|
||||||
|
func (client GroupClient) CheckExistence(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string) (result autorest.Response, err error) {
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewErrorWithValidationError(err, "resources.GroupClient", "CheckExistence")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.CheckExistencePreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "CheckExistence", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.CheckExistenceSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "CheckExistence", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CheckExistenceResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "CheckExistence", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistencePreparer prepares the CheckExistence request.
|
||||||
|
func (client GroupClient) CheckExistencePreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"parentResourcePath": parentResourcePath,
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace),
|
||||||
|
"resourceType": resourceType,
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsHead(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistenceSender sends the CheckExistence request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupClient) CheckExistenceSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistenceResponder handles the response to the CheckExistence request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupClient) 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
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistenceByID checks by ID whether a resource exists.
|
||||||
|
//
|
||||||
|
// resourceID is the fully qualified ID of the resource, including the resource
|
||||||
|
// name and resource type. Use the format,
|
||||||
|
// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}
|
||||||
|
func (client GroupClient) CheckExistenceByID(resourceID string) (result autorest.Response, err error) {
|
||||||
|
req, err := client.CheckExistenceByIDPreparer(resourceID)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "CheckExistenceByID", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.CheckExistenceByIDSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "CheckExistenceByID", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CheckExistenceByIDResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "CheckExistenceByID", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistenceByIDPreparer prepares the CheckExistenceByID request.
|
||||||
|
func (client GroupClient) CheckExistenceByIDPreparer(resourceID string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceId": resourceID,
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsHead(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/{resourceId}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistenceByIDSender sends the CheckExistenceByID request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupClient) CheckExistenceByIDSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckExistenceByIDResponder handles the response to the CheckExistenceByID request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupClient) CheckExistenceByIDResponder(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 a resource. This method may poll for completion.
|
||||||
|
// Polling can be canceled by passing the cancel channel argument. The channel
|
||||||
|
// will be used to cancel polling and any outstanding HTTP requests.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group for the resource. The
|
||||||
|
// name is case insensitive. resourceProviderNamespace is the namespace of the
|
||||||
|
// resource provider. parentResourcePath is the parent resource identity.
|
||||||
|
// resourceType is the resource type of the resource to create. resourceName is
|
||||||
|
// the name of the resource to create. parameters is parameters for creating or
|
||||||
|
// updating the resource.
|
||||||
|
func (client GroupClient) CreateOrUpdate(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, parameters GenericResource, cancel <-chan struct{}) (<-chan GenericResource, <-chan error) {
|
||||||
|
resultChan := make(chan GenericResource, 1)
|
||||||
|
errChan := make(chan error, 1)
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}},
|
||||||
|
{TargetValue: parameters,
|
||||||
|
Constraints: []validation.Constraint{{Target: "parameters.Kind", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Kind", Name: validation.Pattern, Rule: `^[-\w\._,\(\)]+$`, Chain: nil}}}}}}); err != nil {
|
||||||
|
errChan <- validation.NewErrorWithValidationError(err, "resources.GroupClient", "CreateOrUpdate")
|
||||||
|
close(errChan)
|
||||||
|
close(resultChan)
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
var err error
|
||||||
|
var result GenericResource
|
||||||
|
defer func() {
|
||||||
|
resultChan <- result
|
||||||
|
errChan <- err
|
||||||
|
close(resultChan)
|
||||||
|
close(errChan)
|
||||||
|
}()
|
||||||
|
req, err := client.CreateOrUpdatePreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, parameters, cancel)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "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.GroupClient", "CreateOrUpdate", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CreateOrUpdateResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "CreateOrUpdate", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
||||||
|
func (client GroupClient) CreateOrUpdatePreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, parameters GenericResource, cancel <-chan struct{}) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"parentResourcePath": parentResourcePath,
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace),
|
||||||
|
"resourceType": resourceType,
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsPut(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{Cancel: cancel})
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client,
|
||||||
|
req,
|
||||||
|
azure.DoPollForAsynchronous(client.PollingDelay))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupClient) CreateOrUpdateResponder(resp *http.Response) (result GenericResource, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK, http.StatusAccepted),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateByID create a resource by ID. This method may poll for
|
||||||
|
// completion. Polling can be canceled by passing the cancel channel argument.
|
||||||
|
// The channel will be used to cancel polling and any outstanding HTTP
|
||||||
|
// requests.
|
||||||
|
//
|
||||||
|
// resourceID is the fully qualified ID of the resource, including the resource
|
||||||
|
// name and resource type. Use the format,
|
||||||
|
// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}
|
||||||
|
// parameters is create or update resource parameters.
|
||||||
|
func (client GroupClient) CreateOrUpdateByID(resourceID string, parameters GenericResource, cancel <-chan struct{}) (<-chan GenericResource, <-chan error) {
|
||||||
|
resultChan := make(chan GenericResource, 1)
|
||||||
|
errChan := make(chan error, 1)
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: parameters,
|
||||||
|
Constraints: []validation.Constraint{{Target: "parameters.Kind", Name: validation.Null, Rule: false,
|
||||||
|
Chain: []validation.Constraint{{Target: "parameters.Kind", Name: validation.Pattern, Rule: `^[-\w\._,\(\)]+$`, Chain: nil}}}}}}); err != nil {
|
||||||
|
errChan <- validation.NewErrorWithValidationError(err, "resources.GroupClient", "CreateOrUpdateByID")
|
||||||
|
close(errChan)
|
||||||
|
close(resultChan)
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
var err error
|
||||||
|
var result GenericResource
|
||||||
|
defer func() {
|
||||||
|
resultChan <- result
|
||||||
|
errChan <- err
|
||||||
|
close(resultChan)
|
||||||
|
close(errChan)
|
||||||
|
}()
|
||||||
|
req, err := client.CreateOrUpdateByIDPreparer(resourceID, parameters, cancel)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "CreateOrUpdateByID", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.CreateOrUpdateByIDSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "CreateOrUpdateByID", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.CreateOrUpdateByIDResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "CreateOrUpdateByID", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateByIDPreparer prepares the CreateOrUpdateByID request.
|
||||||
|
func (client GroupClient) CreateOrUpdateByIDPreparer(resourceID string, parameters GenericResource, cancel <-chan struct{}) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceId": resourceID,
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsPut(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/{resourceId}", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{Cancel: cancel})
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateByIDSender sends the CreateOrUpdateByID request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupClient) CreateOrUpdateByIDSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client,
|
||||||
|
req,
|
||||||
|
azure.DoPollForAsynchronous(client.PollingDelay))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrUpdateByIDResponder handles the response to the CreateOrUpdateByID request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupClient) CreateOrUpdateByIDResponder(resp *http.Response) (result GenericResource, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK, http.StatusAccepted),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete deletes a resource. This method may poll for completion. Polling can
|
||||||
|
// be canceled by passing the cancel channel argument. The channel will be used
|
||||||
|
// to cancel polling and any outstanding HTTP requests.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group that contains the
|
||||||
|
// resource to delete. The name is case insensitive. resourceProviderNamespace
|
||||||
|
// is the namespace of the resource provider. parentResourcePath is the parent
|
||||||
|
// resource identity. resourceType is the resource type. resourceName is the
|
||||||
|
// name of the resource to delete.
|
||||||
|
func (client GroupClient) Delete(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, cancel <-chan struct{}) (<-chan autorest.Response, <-chan error) {
|
||||||
|
resultChan := make(chan autorest.Response, 1)
|
||||||
|
errChan := make(chan error, 1)
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
errChan <- validation.NewErrorWithValidationError(err, "resources.GroupClient", "Delete")
|
||||||
|
close(errChan)
|
||||||
|
close(resultChan)
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
var err error
|
||||||
|
var result autorest.Response
|
||||||
|
defer func() {
|
||||||
|
resultChan <- result
|
||||||
|
errChan <- err
|
||||||
|
close(resultChan)
|
||||||
|
close(errChan)
|
||||||
|
}()
|
||||||
|
req, err := client.DeletePreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, cancel)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "Delete", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.DeleteSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "Delete", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "Delete", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePreparer prepares the Delete request.
|
||||||
|
func (client GroupClient) DeletePreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, cancel <-chan struct{}) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"parentResourcePath": parentResourcePath,
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace),
|
||||||
|
"resourceType": resourceType,
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsDelete(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{Cancel: cancel})
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSender sends the Delete request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupClient) DeleteSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client,
|
||||||
|
req,
|
||||||
|
azure.DoPollForAsynchronous(client.PollingDelay))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteResponder handles the response to the Delete request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusAccepted),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteByID deletes a resource by ID. This method may poll for completion.
|
||||||
|
// Polling can be canceled by passing the cancel channel argument. The channel
|
||||||
|
// will be used to cancel polling and any outstanding HTTP requests.
|
||||||
|
//
|
||||||
|
// resourceID is the fully qualified ID of the resource, including the resource
|
||||||
|
// name and resource type. Use the format,
|
||||||
|
// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}
|
||||||
|
func (client GroupClient) DeleteByID(resourceID string, cancel <-chan struct{}) (<-chan autorest.Response, <-chan error) {
|
||||||
|
resultChan := make(chan autorest.Response, 1)
|
||||||
|
errChan := make(chan error, 1)
|
||||||
|
go func() {
|
||||||
|
var err error
|
||||||
|
var result autorest.Response
|
||||||
|
defer func() {
|
||||||
|
resultChan <- result
|
||||||
|
errChan <- err
|
||||||
|
close(resultChan)
|
||||||
|
close(errChan)
|
||||||
|
}()
|
||||||
|
req, err := client.DeleteByIDPreparer(resourceID, cancel)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "DeleteByID", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.DeleteByIDSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "DeleteByID", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.DeleteByIDResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "DeleteByID", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteByIDPreparer prepares the DeleteByID request.
|
||||||
|
func (client GroupClient) DeleteByIDPreparer(resourceID string, cancel <-chan struct{}) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceId": resourceID,
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsDelete(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/{resourceId}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{Cancel: cancel})
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteByIDSender sends the DeleteByID request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupClient) DeleteByIDSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client,
|
||||||
|
req,
|
||||||
|
azure.DoPollForAsynchronous(client.PollingDelay))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteByIDResponder handles the response to the DeleteByID request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupClient) DeleteByIDResponder(resp *http.Response) (result autorest.Response, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusAccepted),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = resp
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets a resource.
|
||||||
|
//
|
||||||
|
// resourceGroupName is the name of the resource group containing the resource
|
||||||
|
// to get. The name is case insensitive. resourceProviderNamespace is the
|
||||||
|
// namespace of the resource provider. parentResourcePath is the parent
|
||||||
|
// resource identity. resourceType is the resource type of the resource.
|
||||||
|
// resourceName is the name of the resource to get.
|
||||||
|
func (client GroupClient) Get(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string) (result GenericResource, err error) {
|
||||||
|
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: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
return result, validation.NewErrorWithValidationError(err, "resources.GroupClient", "Get")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := client.GetPreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "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.GroupClient", "Get", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "Get", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPreparer prepares the Get request.
|
||||||
|
func (client GroupClient) GetPreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"parentResourcePath": parentResourcePath,
|
||||||
|
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
||||||
|
"resourceName": autorest.Encode("path", resourceName),
|
||||||
|
"resourceProviderNamespace": autorest.Encode("path", resourceProviderNamespace),
|
||||||
|
"resourceType": resourceType,
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSender sends the Get request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupClient) GetSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResponder handles the response to the Get request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupClient) GetResponder(resp *http.Response) (result GenericResource, err error) {
|
||||||
|
err = autorest.Respond(
|
||||||
|
resp,
|
||||||
|
client.ByInspecting(),
|
||||||
|
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
||||||
|
autorest.ByUnmarshallingJSON(&result),
|
||||||
|
autorest.ByClosing())
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByID gets a resource by ID.
|
||||||
|
//
|
||||||
|
// resourceID is the fully qualified ID of the resource, including the resource
|
||||||
|
// name and resource type. Use the format,
|
||||||
|
// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}
|
||||||
|
func (client GroupClient) GetByID(resourceID string) (result GenericResource, err error) {
|
||||||
|
req, err := client.GetByIDPreparer(resourceID)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "GetByID", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.GetByIDSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "GetByID", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.GetByIDResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "GetByID", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByIDPreparer prepares the GetByID request.
|
||||||
|
func (client GroupClient) GetByIDPreparer(resourceID string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"resourceId": resourceID,
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/{resourceId}", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByIDSender sends the GetByID request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupClient) GetByIDSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByIDResponder handles the response to the GetByID request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupClient) GetByIDResponder(resp *http.Response) (result GenericResource, 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 get all the resources in a subscription.
|
||||||
|
//
|
||||||
|
// filter is the filter to apply on the operation. expand is the $expand query
|
||||||
|
// parameter. top is the number of results to return. If null is passed,
|
||||||
|
// returns all resource groups.
|
||||||
|
func (client GroupClient) List(filter string, expand string, top *int32) (result ListResult, err error) {
|
||||||
|
req, err := client.ListPreparer(filter, expand, top)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "List", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPreparer prepares the List request.
|
||||||
|
func (client GroupClient) ListPreparer(filter string, expand string, top *int32) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
if len(filter) > 0 {
|
||||||
|
queryParameters["$filter"] = autorest.Encode("query", filter)
|
||||||
|
}
|
||||||
|
if len(expand) > 0 {
|
||||||
|
queryParameters["$expand"] = autorest.Encode("query", expand)
|
||||||
|
}
|
||||||
|
if top != nil {
|
||||||
|
queryParameters["$top"] = autorest.Encode("query", *top)
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsGet(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resources", pathParameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSender sends the List request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupClient) ListSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListResponder handles the response to the List request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupClient) 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 GroupClient) ListNextResults(lastResults ListResult) (result ListResult, err error) {
|
||||||
|
req, err := lastResults.ListResultPreparer()
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.GroupClient", "List", 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.GroupClient", "List", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "List", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveResources the resources to move must be in the same source resource
|
||||||
|
// group. The target resource group may be in a different subscription. When
|
||||||
|
// moving resources, both the source group and the target group are locked for
|
||||||
|
// the duration of the operation. Write and delete operations are blocked on
|
||||||
|
// the groups until the move completes. This method may poll for completion.
|
||||||
|
// Polling can be canceled by passing the cancel channel argument. The channel
|
||||||
|
// will be used to cancel polling and any outstanding HTTP requests.
|
||||||
|
//
|
||||||
|
// sourceResourceGroupName is the name of the resource group containing the
|
||||||
|
// rsources to move. parameters is parameters for moving resources.
|
||||||
|
func (client GroupClient) MoveResources(sourceResourceGroupName string, parameters MoveInfo, cancel <-chan struct{}) (<-chan autorest.Response, <-chan error) {
|
||||||
|
resultChan := make(chan autorest.Response, 1)
|
||||||
|
errChan := make(chan error, 1)
|
||||||
|
if err := validation.Validate([]validation.Validation{
|
||||||
|
{TargetValue: sourceResourceGroupName,
|
||||||
|
Constraints: []validation.Constraint{{Target: "sourceResourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil},
|
||||||
|
{Target: "sourceResourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil},
|
||||||
|
{Target: "sourceResourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil {
|
||||||
|
errChan <- validation.NewErrorWithValidationError(err, "resources.GroupClient", "MoveResources")
|
||||||
|
close(errChan)
|
||||||
|
close(resultChan)
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
var err error
|
||||||
|
var result autorest.Response
|
||||||
|
defer func() {
|
||||||
|
resultChan <- result
|
||||||
|
errChan <- err
|
||||||
|
close(resultChan)
|
||||||
|
close(errChan)
|
||||||
|
}()
|
||||||
|
req, err := client.MoveResourcesPreparer(sourceResourceGroupName, parameters, cancel)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "MoveResources", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.MoveResourcesSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = resp
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "MoveResources", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.MoveResourcesResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.GroupClient", "MoveResources", resp, "Failure responding to request")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return resultChan, errChan
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveResourcesPreparer prepares the MoveResources request.
|
||||||
|
func (client GroupClient) MoveResourcesPreparer(sourceResourceGroupName string, parameters MoveInfo, cancel <-chan struct{}) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"sourceResourceGroupName": autorest.Encode("path", sourceResourceGroupName),
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
queryParameters := map[string]interface{}{
|
||||||
|
"api-version": APIVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
preparer := autorest.CreatePreparer(
|
||||||
|
autorest.AsJSON(),
|
||||||
|
autorest.AsPost(),
|
||||||
|
autorest.WithBaseURL(client.BaseURI),
|
||||||
|
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources", pathParameters),
|
||||||
|
autorest.WithJSON(parameters),
|
||||||
|
autorest.WithQueryParameters(queryParameters))
|
||||||
|
return preparer.Prepare(&http.Request{Cancel: cancel})
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveResourcesSender sends the MoveResources request. The method will close the
|
||||||
|
// http.Response Body if it receives an error.
|
||||||
|
func (client GroupClient) MoveResourcesSender(req *http.Request) (*http.Response, error) {
|
||||||
|
return autorest.SendWithSender(client,
|
||||||
|
req,
|
||||||
|
azure.DoPollForAsynchronous(client.PollingDelay))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveResourcesResponder handles the response to the MoveResources request. The method always
|
||||||
|
// closes the http.Response Body.
|
||||||
|
func (client GroupClient) MoveResourcesResponder(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
|
||||||
|
}
|
387
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/tags.go
generated
vendored
Executable file
387
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/tags.go
generated
vendored
Executable file
|
@ -0,0 +1,387 @@
|
||||||
|
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 1.0.1.0
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is
|
||||||
|
// regenerated.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/Azure/go-autorest/autorest"
|
||||||
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TagsClient is the provides operations for working with resources and
|
||||||
|
// resource groups.
|
||||||
|
type TagsClient struct {
|
||||||
|
ManagementClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
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.
|
||||||
|
//
|
||||||
|
// tagName is the name of the tag to create.
|
||||||
|
func (client TagsClient) CreateOrUpdate(tagName string) (result TagDetails, err error) {
|
||||||
|
req, err := client.CreateOrUpdatePreparer(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(tagName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
"tagName": autorest.Encode("path", tagName),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// tagName is the name of the tag. tagValue is the value of the tag to create.
|
||||||
|
func (client TagsClient) CreateOrUpdateValue(tagName string, tagValue string) (result TagValue, err error) {
|
||||||
|
req, err := client.CreateOrUpdateValuePreparer(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(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 = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// tagName is the name of the tag.
|
||||||
|
func (client TagsClient) Delete(tagName string) (result autorest.Response, err error) {
|
||||||
|
req, err := client.DeletePreparer(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(tagName string) (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
"tagName": autorest.Encode("path", tagName),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// tagName is the name of the tag. tagValue is the value of the tag to delete.
|
||||||
|
func (client TagsClient) DeleteValue(tagName string, tagValue string) (result autorest.Response, err error) {
|
||||||
|
req, err := client.DeleteValuePreparer(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(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 = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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() (result TagsListResult, err error) {
|
||||||
|
req, err := client.ListPreparer()
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", nil, "Failure preparing request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.ListSender(req)
|
||||||
|
if err != nil {
|
||||||
|
result.Response = autorest.Response{Response: resp}
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", resp, "Failure sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result, 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() (*http.Request, error) {
|
||||||
|
pathParameters := map[string]interface{}{
|
||||||
|
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
||||||
|
}
|
||||||
|
|
||||||
|
const APIVersion = "2016-09-01"
|
||||||
|
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{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 autorest.SendWithSender(client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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(lastResults TagsListResult) (result TagsListResult, err error) {
|
||||||
|
req, err := lastResults.TagsListResultPreparer()
|
||||||
|
if err != nil {
|
||||||
|
return result, autorest.NewErrorWithError(err, "resources.TagsClient", "List", 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", "List", resp, "Failure sending next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err = client.ListResponder(resp)
|
||||||
|
if err != nil {
|
||||||
|
err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", resp, "Failure responding to next results request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
29
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/version.go
generated
vendored
Executable file
29
vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/version.go
generated
vendored
Executable file
|
@ -0,0 +1,29 @@
|
||||||
|
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 1.0.1.0
|
||||||
|
// 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/v10.0.2-beta arm-resources/2016-09-01"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Version returns the semantic version (see http://semver.org) of the client.
|
||||||
|
func Version() string {
|
||||||
|
return "v10.0.2-beta"
|
||||||
|
}
|
|
@ -0,0 +1,133 @@
|
||||||
|
/*
|
||||||
|
Package to provides helpers to ease working with pointer values of marshalled structures.
|
||||||
|
*/
|
||||||
|
package to
|
||||||
|
|
||||||
|
// String returns a string value for the passed string pointer. It returns the empty string if the
|
||||||
|
// pointer is nil.
|
||||||
|
func String(s *string) string {
|
||||||
|
if s != nil {
|
||||||
|
return *s
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// StringPtr returns a pointer to the passed string.
|
||||||
|
func StringPtr(s string) *string {
|
||||||
|
return &s
|
||||||
|
}
|
||||||
|
|
||||||
|
// StringSlice returns a string slice value for the passed string slice pointer. It returns a nil
|
||||||
|
// slice if the pointer is nil.
|
||||||
|
func StringSlice(s *[]string) []string {
|
||||||
|
if s != nil {
|
||||||
|
return *s
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// StringSlicePtr returns a pointer to the passed string slice.
|
||||||
|
func StringSlicePtr(s []string) *[]string {
|
||||||
|
return &s
|
||||||
|
}
|
||||||
|
|
||||||
|
// StringMap returns a map of strings built from the map of string pointers. The empty string is
|
||||||
|
// used for nil pointers.
|
||||||
|
func StringMap(msp map[string]*string) map[string]string {
|
||||||
|
ms := make(map[string]string, len(msp))
|
||||||
|
for k, sp := range msp {
|
||||||
|
if sp != nil {
|
||||||
|
ms[k] = *sp
|
||||||
|
} else {
|
||||||
|
ms[k] = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
|
||||||
|
// StringMapPtr returns a pointer to a map of string pointers built from the passed map of strings.
|
||||||
|
func StringMapPtr(ms map[string]string) *map[string]*string {
|
||||||
|
msp := make(map[string]*string, len(ms))
|
||||||
|
for k, s := range ms {
|
||||||
|
msp[k] = StringPtr(s)
|
||||||
|
}
|
||||||
|
return &msp
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bool returns a bool value for the passed bool pointer. It returns false if the pointer is nil.
|
||||||
|
func Bool(b *bool) bool {
|
||||||
|
if b != nil {
|
||||||
|
return *b
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// BoolPtr returns a pointer to the passed bool.
|
||||||
|
func BoolPtr(b bool) *bool {
|
||||||
|
return &b
|
||||||
|
}
|
||||||
|
|
||||||
|
// Int returns an int value for the passed int pointer. It returns 0 if the pointer is nil.
|
||||||
|
func Int(i *int) int {
|
||||||
|
if i != nil {
|
||||||
|
return *i
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// IntPtr returns a pointer to the passed int.
|
||||||
|
func IntPtr(i int) *int {
|
||||||
|
return &i
|
||||||
|
}
|
||||||
|
|
||||||
|
// Int32 returns an int value for the passed int pointer. It returns 0 if the pointer is nil.
|
||||||
|
func Int32(i *int32) int32 {
|
||||||
|
if i != nil {
|
||||||
|
return *i
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Int32Ptr returns a pointer to the passed int32.
|
||||||
|
func Int32Ptr(i int32) *int32 {
|
||||||
|
return &i
|
||||||
|
}
|
||||||
|
|
||||||
|
// Int64 returns an int value for the passed int pointer. It returns 0 if the pointer is nil.
|
||||||
|
func Int64(i *int64) int64 {
|
||||||
|
if i != nil {
|
||||||
|
return *i
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Int64Ptr returns a pointer to the passed int64.
|
||||||
|
func Int64Ptr(i int64) *int64 {
|
||||||
|
return &i
|
||||||
|
}
|
||||||
|
|
||||||
|
// Float32 returns an int value for the passed int pointer. It returns 0.0 if the pointer is nil.
|
||||||
|
func Float32(i *float32) float32 {
|
||||||
|
if i != nil {
|
||||||
|
return *i
|
||||||
|
}
|
||||||
|
return 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Float32Ptr returns a pointer to the passed float32.
|
||||||
|
func Float32Ptr(i float32) *float32 {
|
||||||
|
return &i
|
||||||
|
}
|
||||||
|
|
||||||
|
// Float64 returns an int value for the passed int pointer. It returns 0.0 if the pointer is nil.
|
||||||
|
func Float64(i *float64) float64 {
|
||||||
|
if i != nil {
|
||||||
|
return *i
|
||||||
|
}
|
||||||
|
return 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Float64Ptr returns a pointer to the passed float64.
|
||||||
|
func Float64Ptr(i float64) *float64 {
|
||||||
|
return &i
|
||||||
|
}
|
|
@ -14,6 +14,12 @@
|
||||||
"revision": "81b7822b1e798e8f17bf64b59512a5be4097e966",
|
"revision": "81b7822b1e798e8f17bf64b59512a5be4097e966",
|
||||||
"revisionTime": "2017-01-18T16:13:56Z"
|
"revisionTime": "2017-01-18T16:13:56Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"checksumSHA1": "iJ8ZV+uhUAtNn91pkKjfIY0z+44=",
|
||||||
|
"path": "github.com/Azure/azure-sdk-for-go/arm/resources/resources",
|
||||||
|
"revision": "5841475edc7c8725d79885d635aa8956f97fdf0e",
|
||||||
|
"revisionTime": "2017-05-10T22:14:13Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "QiYT2buD7yqmgxfl/ESn8yJmQTY=",
|
"checksumSHA1": "QiYT2buD7yqmgxfl/ESn8yJmQTY=",
|
||||||
"path": "github.com/Azure/azure-sdk-for-go/arm/storage",
|
"path": "github.com/Azure/azure-sdk-for-go/arm/storage",
|
||||||
|
@ -66,6 +72,14 @@
|
||||||
"version": "v8.0.0",
|
"version": "v8.0.0",
|
||||||
"versionExact": "v8.0.0"
|
"versionExact": "v8.0.0"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"checksumSHA1": "Ev8qCsbFjDlMlX0N2tYAhYQFpUc=",
|
||||||
|
"path": "github.com/Azure/go-autorest/autorest/to",
|
||||||
|
"revision": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d",
|
||||||
|
"revisionTime": "2017-04-28T17:52:31Z",
|
||||||
|
"version": "v8.0.0",
|
||||||
|
"versionExact": "v8.0.0"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "oBixceM+55gdk47iff8DSEIh3po=",
|
"checksumSHA1": "oBixceM+55gdk47iff8DSEIh3po=",
|
||||||
"comment": "v8.0.0",
|
"comment": "v8.0.0",
|
||||||
|
|
|
@ -8,7 +8,7 @@ description: |-
|
||||||
|
|
||||||
# azure
|
# azure
|
||||||
|
|
||||||
**Kind: Standard (with no locking)**
|
**Kind: Standard (with state locking)**
|
||||||
|
|
||||||
Stores the state as a given key in a given bucket on [Microsoft Azure Storage](https://azure.microsoft.com/en-us/documentation/articles/storage-introduction/).
|
Stores the state as a given key in a given bucket on [Microsoft Azure Storage](https://azure.microsoft.com/en-us/documentation/articles/storage-introduction/).
|
||||||
|
|
||||||
|
@ -47,11 +47,17 @@ The following configuration options are supported:
|
||||||
* `storage_account_name` - (Required) The name of the storage account
|
* `storage_account_name` - (Required) The name of the storage account
|
||||||
* `container_name` - (Required) The name of the container to use within the storage account
|
* `container_name` - (Required) The name of the container to use within the storage account
|
||||||
* `key` - (Required) The key where to place/look for state file inside the container
|
* `key` - (Required) The key where to place/look for state file inside the container
|
||||||
* `access_key` / `ARM_ACCESS_KEY` - (Required) Storage account access key
|
* `access_key` / `ARM_ACCESS_KEY` - (Optional) Storage account access key
|
||||||
* `lease_id` / `ARM_LEASE_ID` - (Optional) If set, will be used when writing to storage blob.
|
|
||||||
* `resource_group_name` - (Optional) The name of the resource group for the storage account. Required if `access_key` isn't specified.
|
|
||||||
* `environment` / `ARM_ENVIRONMENT` - (Optional) The cloud environment to use. Supported values are:
|
* `environment` / `ARM_ENVIRONMENT` - (Optional) The cloud environment to use. Supported values are:
|
||||||
* `public` (default)
|
* `public` (default)
|
||||||
* `usgovernment`
|
* `usgovernment`
|
||||||
* `german`
|
* `german`
|
||||||
* `china`
|
* `china`
|
||||||
|
|
||||||
|
The following configuration options must be supplied if `access_key` is not.
|
||||||
|
|
||||||
|
* `resource_group_name` - The resource group which contains the storage account.
|
||||||
|
* `subscription_id` / `ARM_SUBSCRIPTION_ID` - The Azure Subscription ID.
|
||||||
|
* `client_id` / `ARM_CLIENT_ID` - The Azure Client ID.
|
||||||
|
* `client_secret` / `ARM_CLIENT_SECRET` - The Azure Client Secret.
|
||||||
|
* `tenant_id` / `ARM_TENANT_ID` - The Azure Tenant ID.
|
||||||
|
|
Loading…
Reference in New Issue