package policy // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. // // Code generated by Microsoft (R) AutoRest Code Generator. // Changes may cause incorrect behavior and will be lost if the code is regenerated. import ( "context" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/azure" "github.com/Azure/go-autorest/autorest/validation" "github.com/Azure/go-autorest/tracing" "net/http" ) // AssignmentsClient is the client for the Assignments methods of the Policy service. type AssignmentsClient struct { BaseClient } // NewAssignmentsClient creates an instance of the AssignmentsClient client. func NewAssignmentsClient(subscriptionID string) AssignmentsClient { return NewAssignmentsClientWithBaseURI(DefaultBaseURI, subscriptionID) } // NewAssignmentsClientWithBaseURI creates an instance of the AssignmentsClient client using a custom endpoint. Use // this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). func NewAssignmentsClientWithBaseURI(baseURI string, subscriptionID string) AssignmentsClient { return AssignmentsClient{NewWithBaseURI(baseURI, subscriptionID)} } // Create this operation creates or updates a policy assignment with the given scope and name. Policy assignments apply // to all resources contained within their scope. For example, when you assign a policy at resource group scope, that // policy applies to all resources in the group. // Parameters: // scope - the scope of the policy assignment. Valid scopes are: management group (format: // '/providers/Microsoft.Management/managementGroups/{managementGroup}'), subscription (format: // '/subscriptions/{subscriptionId}'), resource group (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or resource (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}' // policyAssignmentName - the name of the policy assignment. // parameters - parameters for the policy assignment. func (client AssignmentsClient) Create(ctx context.Context, scope string, policyAssignmentName string, parameters Assignment) (result Assignment, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.Create") defer func() { sc := -1 if result.Response.Response != nil { sc = result.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } req, err := client.CreatePreparer(ctx, scope, policyAssignmentName, parameters) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Create", nil, "Failure preparing request") return } resp, err := client.CreateSender(req) if err != nil { result.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Create", resp, "Failure sending request") return } result, err = client.CreateResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Create", resp, "Failure responding to request") return } return } // CreatePreparer prepares the Create request. func (client AssignmentsClient) CreatePreparer(ctx context.Context, scope string, policyAssignmentName string, parameters Assignment) (*http.Request, error) { pathParameters := map[string]interface{}{ "policyAssignmentName": autorest.Encode("path", policyAssignmentName), "scope": scope, } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } parameters.ID = nil parameters.Type = nil parameters.Name = nil parameters.SystemData = nil preparer := autorest.CreatePreparer( autorest.AsContentType("application/json; charset=utf-8"), autorest.AsPut(), autorest.WithBaseURL(client.BaseURI), autorest.WithPathParameters("/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}", pathParameters), autorest.WithJSON(parameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // CreateSender sends the Create request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) CreateSender(req *http.Request) (*http.Response, error) { return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // CreateResponder handles the response to the Create request. The method always // closes the http.Response Body. func (client AssignmentsClient) CreateResponder(resp *http.Response) (result Assignment, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return } // CreateByID this operation creates or updates the policy assignment with the given ID. Policy assignments made on a // scope apply to all resources contained in that scope. For example, when you assign a policy to a resource group that // policy applies to all resources in the group. Policy assignment IDs have this format: // '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'. Valid scopes are: management // group (format: '/providers/Microsoft.Management/managementGroups/{managementGroup}'), subscription (format: // '/subscriptions/{subscriptionId}'), resource group (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or resource (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'. // Parameters: // policyAssignmentID - the ID of the policy assignment to create. Use the format // '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'. // parameters - parameters for policy assignment. func (client AssignmentsClient) CreateByID(ctx context.Context, policyAssignmentID string, parameters Assignment) (result Assignment, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.CreateByID") defer func() { sc := -1 if result.Response.Response != nil { sc = result.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } req, err := client.CreateByIDPreparer(ctx, policyAssignmentID, parameters) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "CreateByID", nil, "Failure preparing request") return } resp, err := client.CreateByIDSender(req) if err != nil { result.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "CreateByID", resp, "Failure sending request") return } result, err = client.CreateByIDResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "CreateByID", resp, "Failure responding to request") return } return } // CreateByIDPreparer prepares the CreateByID request. func (client AssignmentsClient) CreateByIDPreparer(ctx context.Context, policyAssignmentID string, parameters Assignment) (*http.Request, error) { pathParameters := map[string]interface{}{ "policyAssignmentId": policyAssignmentID, } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } parameters.ID = nil parameters.Type = nil parameters.Name = nil parameters.SystemData = nil preparer := autorest.CreatePreparer( autorest.AsContentType("application/json; charset=utf-8"), autorest.AsPut(), autorest.WithBaseURL(client.BaseURI), autorest.WithPathParameters("/{policyAssignmentId}", pathParameters), autorest.WithJSON(parameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // CreateByIDSender sends the CreateByID request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) CreateByIDSender(req *http.Request) (*http.Response, error) { return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // CreateByIDResponder handles the response to the CreateByID request. The method always // closes the http.Response Body. func (client AssignmentsClient) CreateByIDResponder(resp *http.Response) (result Assignment, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return } // Delete this operation deletes a policy assignment, given its name and the scope it was created in. The scope of a // policy assignment is the part of its ID preceding // '/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'. // Parameters: // scope - the scope of the policy assignment. Valid scopes are: management group (format: // '/providers/Microsoft.Management/managementGroups/{managementGroup}'), subscription (format: // '/subscriptions/{subscriptionId}'), resource group (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or resource (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}' // policyAssignmentName - the name of the policy assignment to delete. func (client AssignmentsClient) Delete(ctx context.Context, scope string, policyAssignmentName string) (result Assignment, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.Delete") defer func() { sc := -1 if result.Response.Response != nil { sc = result.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } req, err := client.DeletePreparer(ctx, scope, policyAssignmentName) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Delete", nil, "Failure preparing request") return } resp, err := client.DeleteSender(req) if err != nil { result.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Delete", resp, "Failure sending request") return } result, err = client.DeleteResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Delete", resp, "Failure responding to request") return } return } // DeletePreparer prepares the Delete request. func (client AssignmentsClient) DeletePreparer(ctx context.Context, scope string, policyAssignmentName string) (*http.Request, error) { pathParameters := map[string]interface{}{ "policyAssignmentName": autorest.Encode("path", policyAssignmentName), "scope": scope, } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } preparer := autorest.CreatePreparer( autorest.AsDelete(), autorest.WithBaseURL(client.BaseURI), autorest.WithPathParameters("/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}", pathParameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // DeleteSender sends the Delete request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) DeleteSender(req *http.Request) (*http.Response, error) { return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // DeleteResponder handles the response to the Delete request. The method always // closes the http.Response Body. func (client AssignmentsClient) DeleteResponder(resp *http.Response) (result Assignment, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return } // DeleteByID this operation deletes the policy with the given ID. Policy assignment IDs have this format: // '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'. Valid formats for {scope} are: // '/providers/Microsoft.Management/managementGroups/{managementGroup}' (management group), // '/subscriptions/{subscriptionId}' (subscription), // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' (resource group), or // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}' // (resource). // Parameters: // policyAssignmentID - the ID of the policy assignment to delete. Use the format // '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'. func (client AssignmentsClient) DeleteByID(ctx context.Context, policyAssignmentID string) (result Assignment, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.DeleteByID") defer func() { sc := -1 if result.Response.Response != nil { sc = result.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } req, err := client.DeleteByIDPreparer(ctx, policyAssignmentID) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "DeleteByID", nil, "Failure preparing request") return } resp, err := client.DeleteByIDSender(req) if err != nil { result.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "DeleteByID", resp, "Failure sending request") return } result, err = client.DeleteByIDResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "DeleteByID", resp, "Failure responding to request") return } return } // DeleteByIDPreparer prepares the DeleteByID request. func (client AssignmentsClient) DeleteByIDPreparer(ctx context.Context, policyAssignmentID string) (*http.Request, error) { pathParameters := map[string]interface{}{ "policyAssignmentId": policyAssignmentID, } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } preparer := autorest.CreatePreparer( autorest.AsDelete(), autorest.WithBaseURL(client.BaseURI), autorest.WithPathParameters("/{policyAssignmentId}", pathParameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // DeleteByIDSender sends the DeleteByID request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) DeleteByIDSender(req *http.Request) (*http.Response, error) { return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // DeleteByIDResponder handles the response to the DeleteByID request. The method always // closes the http.Response Body. func (client AssignmentsClient) DeleteByIDResponder(resp *http.Response) (result Assignment, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return } // Get this operation retrieves a single policy assignment, given its name and the scope it was created at. // Parameters: // scope - the scope of the policy assignment. Valid scopes are: management group (format: // '/providers/Microsoft.Management/managementGroups/{managementGroup}'), subscription (format: // '/subscriptions/{subscriptionId}'), resource group (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or resource (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}' // policyAssignmentName - the name of the policy assignment to get. func (client AssignmentsClient) Get(ctx context.Context, scope string, policyAssignmentName string) (result Assignment, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.Get") defer func() { sc := -1 if result.Response.Response != nil { sc = result.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } req, err := client.GetPreparer(ctx, scope, policyAssignmentName) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Get", nil, "Failure preparing request") return } resp, err := client.GetSender(req) if err != nil { result.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Get", resp, "Failure sending request") return } result, err = client.GetResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Get", resp, "Failure responding to request") return } return } // GetPreparer prepares the Get request. func (client AssignmentsClient) GetPreparer(ctx context.Context, scope string, policyAssignmentName string) (*http.Request, error) { pathParameters := map[string]interface{}{ "policyAssignmentName": autorest.Encode("path", policyAssignmentName), "scope": scope, } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } preparer := autorest.CreatePreparer( autorest.AsGet(), autorest.WithBaseURL(client.BaseURI), autorest.WithPathParameters("/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}", pathParameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // GetSender sends the Get request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) GetSender(req *http.Request) (*http.Response, error) { return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // GetResponder handles the response to the Get request. The method always // closes the http.Response Body. func (client AssignmentsClient) GetResponder(resp *http.Response) (result Assignment, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return } // GetByID the operation retrieves the policy assignment with the given ID. Policy assignment IDs have this format: // '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'. Valid scopes are: management // group (format: '/providers/Microsoft.Management/managementGroups/{managementGroup}'), subscription (format: // '/subscriptions/{subscriptionId}'), resource group (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or resource (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'. // Parameters: // policyAssignmentID - the ID of the policy assignment to get. Use the format // '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'. func (client AssignmentsClient) GetByID(ctx context.Context, policyAssignmentID string) (result Assignment, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.GetByID") defer func() { sc := -1 if result.Response.Response != nil { sc = result.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } req, err := client.GetByIDPreparer(ctx, policyAssignmentID) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "GetByID", nil, "Failure preparing request") return } resp, err := client.GetByIDSender(req) if err != nil { result.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "GetByID", resp, "Failure sending request") return } result, err = client.GetByIDResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "GetByID", resp, "Failure responding to request") return } return } // GetByIDPreparer prepares the GetByID request. func (client AssignmentsClient) GetByIDPreparer(ctx context.Context, policyAssignmentID string) (*http.Request, error) { pathParameters := map[string]interface{}{ "policyAssignmentId": policyAssignmentID, } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } preparer := autorest.CreatePreparer( autorest.AsGet(), autorest.WithBaseURL(client.BaseURI), autorest.WithPathParameters("/{policyAssignmentId}", pathParameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // GetByIDSender sends the GetByID request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) GetByIDSender(req *http.Request) (*http.Response, error) { return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // GetByIDResponder handles the response to the GetByID request. The method always // closes the http.Response Body. func (client AssignmentsClient) GetByIDResponder(resp *http.Response) (result Assignment, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return } // List this operation retrieves the list of all policy assignments associated with the given subscription that match // the optional given $filter. Valid values for $filter are: 'atScope()', 'atExactScope()' or 'policyDefinitionId eq // '{value}”. If $filter is not provided, the unfiltered list includes all policy assignments associated with the // subscription, including those that apply directly or from management groups that contain the given subscription, as // well as any applied to objects contained within the subscription. If $filter=atScope() is provided, the returned // list includes all policy assignments that apply to the subscription, which is everything in the unfiltered list // except those applied to objects contained within the subscription. If $filter=atExactScope() is provided, the // returned list only includes all policy assignments that at the subscription. If $filter=policyDefinitionId eq // '{value}' is provided, the returned list includes all policy assignments of the policy definition whose id is // {value}. // Parameters: // filter - the filter to apply on the operation. Valid values for $filter are: 'atScope()', 'atExactScope()' // or 'policyDefinitionId eq '{value}”. If $filter is not provided, no filtering is performed. If // $filter=atScope() is provided, the returned list only includes all policy assignments that apply to the // scope, which is everything in the unfiltered list except those applied to sub scopes contained within the // given scope. If $filter=atExactScope() is provided, the returned list only includes all policy assignments // that at the given scope. If $filter=policyDefinitionId eq '{value}' is provided, the returned list includes // all policy assignments of the policy definition whose id is {value}. // top - maximum number of records to return. When the $top filter is not provided, it will return 500 records. func (client AssignmentsClient) List(ctx context.Context, filter string, top *int32) (result AssignmentListResultPage, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.List") defer func() { sc := -1 if result.alr.Response.Response != nil { sc = result.alr.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } if err := validation.Validate([]validation.Validation{ {TargetValue: top, Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMaximum, Rule: int64(1000), Chain: nil}, {Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}, }}}}}); err != nil { return result, validation.NewError("policy.AssignmentsClient", "List", err.Error()) } result.fn = client.listNextResults req, err := client.ListPreparer(ctx, filter, top) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "List", nil, "Failure preparing request") return } resp, err := client.ListSender(req) if err != nil { result.alr.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "List", resp, "Failure sending request") return } result.alr, err = client.ListResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "List", resp, "Failure responding to request") return } if result.alr.hasNextLink() && result.alr.IsEmpty() { err = result.NextWithContext(ctx) return } return } // ListPreparer prepares the List request. func (client AssignmentsClient) ListPreparer(ctx context.Context, filter string, top *int32) (*http.Request, error) { pathParameters := map[string]interface{}{ "subscriptionId": autorest.Encode("path", client.SubscriptionID), } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } if len(filter) > 0 { queryParameters["$filter"] = filter } if top != nil { queryParameters["$top"] = autorest.Encode("query", *top) } preparer := autorest.CreatePreparer( autorest.AsGet(), autorest.WithBaseURL(client.BaseURI), autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments", pathParameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // ListSender sends the List request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) ListSender(req *http.Request) (*http.Response, error) { return client.Send(req, azure.DoRetryWithRegistration(client.Client)) } // ListResponder handles the response to the List request. The method always // closes the http.Response Body. func (client AssignmentsClient) ListResponder(resp *http.Response) (result AssignmentListResult, err error) { err = autorest.Respond( resp, 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 AssignmentsClient) listNextResults(ctx context.Context, lastResults AssignmentListResult) (result AssignmentListResult, err error) { req, err := lastResults.assignmentListResultPreparer(ctx) if err != nil { return result, autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listNextResults", nil, "Failure preparing next results request") } if req == nil { return } resp, err := client.ListSender(req) if err != nil { result.Response = autorest.Response{Response: resp} return result, autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listNextResults", resp, "Failure sending next results request") } result, err = client.ListResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listNextResults", resp, "Failure responding to next results request") } return } // ListComplete enumerates all values, automatically crossing page boundaries as required. func (client AssignmentsClient) ListComplete(ctx context.Context, filter string, top *int32) (result AssignmentListResultIterator, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.List") defer func() { sc := -1 if result.Response().Response.Response != nil { sc = result.page.Response().Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } result.page, err = client.List(ctx, filter, top) return } // ListForManagementGroup this operation retrieves the list of all policy assignments applicable to the management // group that match the given $filter. Valid values for $filter are: 'atScope()', 'atExactScope()' or // 'policyDefinitionId eq '{value}”. If $filter=atScope() is provided, the returned list includes all policy // assignments that are assigned to the management group or the management group's ancestors. If $filter=atExactScope() // is provided, the returned list only includes all policy assignments that at the management group. If // $filter=policyDefinitionId eq '{value}' is provided, the returned list includes all policy assignments of the policy // definition whose id is {value} that apply to the management group. // Parameters: // managementGroupID - the ID of the management group. // filter - the filter to apply on the operation. Valid values for $filter are: 'atScope()', 'atExactScope()' // or 'policyDefinitionId eq '{value}”. If $filter is not provided, no filtering is performed. If // $filter=atScope() is provided, the returned list only includes all policy assignments that apply to the // scope, which is everything in the unfiltered list except those applied to sub scopes contained within the // given scope. If $filter=atExactScope() is provided, the returned list only includes all policy assignments // that at the given scope. If $filter=policyDefinitionId eq '{value}' is provided, the returned list includes // all policy assignments of the policy definition whose id is {value}. // top - maximum number of records to return. When the $top filter is not provided, it will return 500 records. func (client AssignmentsClient) ListForManagementGroup(ctx context.Context, managementGroupID string, filter string, top *int32) (result AssignmentListResultPage, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.ListForManagementGroup") defer func() { sc := -1 if result.alr.Response.Response != nil { sc = result.alr.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } if err := validation.Validate([]validation.Validation{ {TargetValue: top, Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMaximum, Rule: int64(1000), Chain: nil}, {Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}, }}}}}); err != nil { return result, validation.NewError("policy.AssignmentsClient", "ListForManagementGroup", err.Error()) } result.fn = client.listForManagementGroupNextResults req, err := client.ListForManagementGroupPreparer(ctx, managementGroupID, filter, top) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "ListForManagementGroup", nil, "Failure preparing request") return } resp, err := client.ListForManagementGroupSender(req) if err != nil { result.alr.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "ListForManagementGroup", resp, "Failure sending request") return } result.alr, err = client.ListForManagementGroupResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "ListForManagementGroup", resp, "Failure responding to request") return } if result.alr.hasNextLink() && result.alr.IsEmpty() { err = result.NextWithContext(ctx) return } return } // ListForManagementGroupPreparer prepares the ListForManagementGroup request. func (client AssignmentsClient) ListForManagementGroupPreparer(ctx context.Context, managementGroupID string, filter string, top *int32) (*http.Request, error) { pathParameters := map[string]interface{}{ "managementGroupId": autorest.Encode("path", managementGroupID), } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } if len(filter) > 0 { queryParameters["$filter"] = filter } if top != nil { queryParameters["$top"] = autorest.Encode("query", *top) } preparer := autorest.CreatePreparer( autorest.AsGet(), autorest.WithBaseURL(client.BaseURI), autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Authorization/policyAssignments", pathParameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // ListForManagementGroupSender sends the ListForManagementGroup request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) ListForManagementGroupSender(req *http.Request) (*http.Response, error) { return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // ListForManagementGroupResponder handles the response to the ListForManagementGroup request. The method always // closes the http.Response Body. func (client AssignmentsClient) ListForManagementGroupResponder(resp *http.Response) (result AssignmentListResult, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return } // listForManagementGroupNextResults retrieves the next set of results, if any. func (client AssignmentsClient) listForManagementGroupNextResults(ctx context.Context, lastResults AssignmentListResult) (result AssignmentListResult, err error) { req, err := lastResults.assignmentListResultPreparer(ctx) if err != nil { return result, autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listForManagementGroupNextResults", nil, "Failure preparing next results request") } if req == nil { return } resp, err := client.ListForManagementGroupSender(req) if err != nil { result.Response = autorest.Response{Response: resp} return result, autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listForManagementGroupNextResults", resp, "Failure sending next results request") } result, err = client.ListForManagementGroupResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listForManagementGroupNextResults", resp, "Failure responding to next results request") } return } // ListForManagementGroupComplete enumerates all values, automatically crossing page boundaries as required. func (client AssignmentsClient) ListForManagementGroupComplete(ctx context.Context, managementGroupID string, filter string, top *int32) (result AssignmentListResultIterator, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.ListForManagementGroup") defer func() { sc := -1 if result.Response().Response.Response != nil { sc = result.page.Response().Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } result.page, err = client.ListForManagementGroup(ctx, managementGroupID, filter, top) return } // ListForResource this operation retrieves the list of all policy assignments associated with the specified resource // in the given resource group and subscription that match the optional given $filter. Valid values for $filter are: // 'atScope()', 'atExactScope()' or 'policyDefinitionId eq '{value}”. If $filter is not provided, the unfiltered list // includes all policy assignments associated with the resource, including those that apply directly or from all // containing scopes, as well as any applied to resources contained within the resource. If $filter=atScope() is // provided, the returned list includes all policy assignments that apply to the resource, which is everything in the // unfiltered list except those applied to resources contained within the resource. If $filter=atExactScope() is // provided, the returned list only includes all policy assignments that at the resource level. If // $filter=policyDefinitionId eq '{value}' is provided, the returned list includes all policy assignments of the policy // definition whose id is {value} that apply to the resource. Three parameters plus the resource name are used to // identify a specific resource. If the resource is not part of a parent resource (the more common case), the parent // resource path should not be provided (or provided as ”). For example a web app could be specified as // ({resourceProviderNamespace} == 'Microsoft.Web', {parentResourcePath} == ”, {resourceType} == 'sites', // {resourceName} == 'MyWebApp'). If the resource is part of a parent resource, then all parameters should be provided. // For example a virtual machine DNS name could be specified as ({resourceProviderNamespace} == 'Microsoft.Compute', // {parentResourcePath} == 'virtualMachines/MyVirtualMachine', {resourceType} == 'domainNames', {resourceName} == // 'MyComputerName'). A convenient alternative to providing the namespace and type name separately is to provide both // in the {resourceType} parameter, format: ({resourceProviderNamespace} == ”, {parentResourcePath} == ”, // {resourceType} == 'Microsoft.Web/sites', {resourceName} == 'MyWebApp'). // Parameters: // resourceGroupName - the name of the resource group containing the resource. // resourceProviderNamespace - the namespace of the resource provider. For example, the namespace of a virtual // machine is Microsoft.Compute (from Microsoft.Compute/virtualMachines) // parentResourcePath - the parent resource path. Use empty string if there is none. // resourceType - the resource type name. For example the type name of a web app is 'sites' (from // Microsoft.Web/sites). // resourceName - the name of the resource. // filter - the filter to apply on the operation. Valid values for $filter are: 'atScope()', 'atExactScope()' // or 'policyDefinitionId eq '{value}”. If $filter is not provided, no filtering is performed. If // $filter=atScope() is provided, the returned list only includes all policy assignments that apply to the // scope, which is everything in the unfiltered list except those applied to sub scopes contained within the // given scope. If $filter=atExactScope() is provided, the returned list only includes all policy assignments // that at the given scope. If $filter=policyDefinitionId eq '{value}' is provided, the returned list includes // all policy assignments of the policy definition whose id is {value}. // top - maximum number of records to return. When the $top filter is not provided, it will return 500 records. func (client AssignmentsClient) ListForResource(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, filter string, top *int32) (result AssignmentListResultPage, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.ListForResource") defer func() { sc := -1 if result.alr.Response.Response != nil { sc = result.alr.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } if err := validation.Validate([]validation.Validation{ {TargetValue: resourceGroupName, Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, {TargetValue: top, Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMaximum, Rule: int64(1000), Chain: nil}, {Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}, }}}}}); err != nil { return result, validation.NewError("policy.AssignmentsClient", "ListForResource", err.Error()) } result.fn = client.listForResourceNextResults req, err := client.ListForResourcePreparer(ctx, resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, filter, top) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "ListForResource", nil, "Failure preparing request") return } resp, err := client.ListForResourceSender(req) if err != nil { result.alr.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "ListForResource", resp, "Failure sending request") return } result.alr, err = client.ListForResourceResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "ListForResource", resp, "Failure responding to request") return } if result.alr.hasNextLink() && result.alr.IsEmpty() { err = result.NextWithContext(ctx) return } return } // ListForResourcePreparer prepares the ListForResource request. func (client AssignmentsClient) ListForResourcePreparer(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, filter string, top *int32) (*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 = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } if len(filter) > 0 { queryParameters["$filter"] = 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/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}/providers/Microsoft.Authorization/policyAssignments", pathParameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // ListForResourceSender sends the ListForResource request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) ListForResourceSender(req *http.Request) (*http.Response, error) { return client.Send(req, azure.DoRetryWithRegistration(client.Client)) } // ListForResourceResponder handles the response to the ListForResource request. The method always // closes the http.Response Body. func (client AssignmentsClient) ListForResourceResponder(resp *http.Response) (result AssignmentListResult, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return } // listForResourceNextResults retrieves the next set of results, if any. func (client AssignmentsClient) listForResourceNextResults(ctx context.Context, lastResults AssignmentListResult) (result AssignmentListResult, err error) { req, err := lastResults.assignmentListResultPreparer(ctx) if err != nil { return result, autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listForResourceNextResults", nil, "Failure preparing next results request") } if req == nil { return } resp, err := client.ListForResourceSender(req) if err != nil { result.Response = autorest.Response{Response: resp} return result, autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listForResourceNextResults", resp, "Failure sending next results request") } result, err = client.ListForResourceResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listForResourceNextResults", resp, "Failure responding to next results request") } return } // ListForResourceComplete enumerates all values, automatically crossing page boundaries as required. func (client AssignmentsClient) ListForResourceComplete(ctx context.Context, resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, filter string, top *int32) (result AssignmentListResultIterator, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.ListForResource") defer func() { sc := -1 if result.Response().Response.Response != nil { sc = result.page.Response().Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } result.page, err = client.ListForResource(ctx, resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, filter, top) return } // ListForResourceGroup this operation retrieves the list of all policy assignments associated with the given resource // group in the given subscription that match the optional given $filter. Valid values for $filter are: 'atScope()', // 'atExactScope()' or 'policyDefinitionId eq '{value}”. If $filter is not provided, the unfiltered list includes all // policy assignments associated with the resource group, including those that apply directly or apply from containing // scopes, as well as any applied to resources contained within the resource group. If $filter=atScope() is provided, // the returned list includes all policy assignments that apply to the resource group, which is everything in the // unfiltered list except those applied to resources contained within the resource group. If $filter=atExactScope() is // provided, the returned list only includes all policy assignments that at the resource group. If // $filter=policyDefinitionId eq '{value}' is provided, the returned list includes all policy assignments of the policy // definition whose id is {value} that apply to the resource group. // Parameters: // resourceGroupName - the name of the resource group that contains policy assignments. // filter - the filter to apply on the operation. Valid values for $filter are: 'atScope()', 'atExactScope()' // or 'policyDefinitionId eq '{value}”. If $filter is not provided, no filtering is performed. If // $filter=atScope() is provided, the returned list only includes all policy assignments that apply to the // scope, which is everything in the unfiltered list except those applied to sub scopes contained within the // given scope. If $filter=atExactScope() is provided, the returned list only includes all policy assignments // that at the given scope. If $filter=policyDefinitionId eq '{value}' is provided, the returned list includes // all policy assignments of the policy definition whose id is {value}. // top - maximum number of records to return. When the $top filter is not provided, it will return 500 records. func (client AssignmentsClient) ListForResourceGroup(ctx context.Context, resourceGroupName string, filter string, top *int32) (result AssignmentListResultPage, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.ListForResourceGroup") defer func() { sc := -1 if result.alr.Response.Response != nil { sc = result.alr.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } if err := validation.Validate([]validation.Validation{ {TargetValue: resourceGroupName, Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\p{L}\._\(\)\w]+$`, Chain: nil}}}, {TargetValue: top, Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMaximum, Rule: int64(1000), Chain: nil}, {Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}, }}}}}); err != nil { return result, validation.NewError("policy.AssignmentsClient", "ListForResourceGroup", err.Error()) } result.fn = client.listForResourceGroupNextResults req, err := client.ListForResourceGroupPreparer(ctx, resourceGroupName, filter, top) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "ListForResourceGroup", nil, "Failure preparing request") return } resp, err := client.ListForResourceGroupSender(req) if err != nil { result.alr.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "ListForResourceGroup", resp, "Failure sending request") return } result.alr, err = client.ListForResourceGroupResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "ListForResourceGroup", resp, "Failure responding to request") return } if result.alr.hasNextLink() && result.alr.IsEmpty() { err = result.NextWithContext(ctx) return } return } // ListForResourceGroupPreparer prepares the ListForResourceGroup request. func (client AssignmentsClient) ListForResourceGroupPreparer(ctx context.Context, resourceGroupName string, filter string, top *int32) (*http.Request, error) { pathParameters := map[string]interface{}{ "resourceGroupName": autorest.Encode("path", resourceGroupName), "subscriptionId": autorest.Encode("path", client.SubscriptionID), } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } if len(filter) > 0 { queryParameters["$filter"] = 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.Authorization/policyAssignments", pathParameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // ListForResourceGroupSender sends the ListForResourceGroup request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) ListForResourceGroupSender(req *http.Request) (*http.Response, error) { return client.Send(req, azure.DoRetryWithRegistration(client.Client)) } // ListForResourceGroupResponder handles the response to the ListForResourceGroup request. The method always // closes the http.Response Body. func (client AssignmentsClient) ListForResourceGroupResponder(resp *http.Response) (result AssignmentListResult, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return } // listForResourceGroupNextResults retrieves the next set of results, if any. func (client AssignmentsClient) listForResourceGroupNextResults(ctx context.Context, lastResults AssignmentListResult) (result AssignmentListResult, err error) { req, err := lastResults.assignmentListResultPreparer(ctx) if err != nil { return result, autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listForResourceGroupNextResults", nil, "Failure preparing next results request") } if req == nil { return } resp, err := client.ListForResourceGroupSender(req) if err != nil { result.Response = autorest.Response{Response: resp} return result, autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listForResourceGroupNextResults", resp, "Failure sending next results request") } result, err = client.ListForResourceGroupResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "listForResourceGroupNextResults", resp, "Failure responding to next results request") } return } // ListForResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. func (client AssignmentsClient) ListForResourceGroupComplete(ctx context.Context, resourceGroupName string, filter string, top *int32) (result AssignmentListResultIterator, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.ListForResourceGroup") defer func() { sc := -1 if result.Response().Response.Response != nil { sc = result.page.Response().Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } result.page, err = client.ListForResourceGroup(ctx, resourceGroupName, filter, top) return } // Update this operation updates a policy assignment with the given scope and name. Policy assignments apply to all // resources contained within their scope. For example, when you assign a policy at resource group scope, that policy // applies to all resources in the group. // Parameters: // scope - the scope of the policy assignment. Valid scopes are: management group (format: // '/providers/Microsoft.Management/managementGroups/{managementGroup}'), subscription (format: // '/subscriptions/{subscriptionId}'), resource group (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or resource (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}' // policyAssignmentName - the name of the policy assignment. // parameters - parameters for policy assignment patch request. func (client AssignmentsClient) Update(ctx context.Context, scope string, policyAssignmentName string, parameters AssignmentUpdate) (result Assignment, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.Update") defer func() { sc := -1 if result.Response.Response != nil { sc = result.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } req, err := client.UpdatePreparer(ctx, scope, policyAssignmentName, parameters) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Update", nil, "Failure preparing request") return } resp, err := client.UpdateSender(req) if err != nil { result.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Update", resp, "Failure sending request") return } result, err = client.UpdateResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "Update", resp, "Failure responding to request") return } return } // UpdatePreparer prepares the Update request. func (client AssignmentsClient) UpdatePreparer(ctx context.Context, scope string, policyAssignmentName string, parameters AssignmentUpdate) (*http.Request, error) { pathParameters := map[string]interface{}{ "policyAssignmentName": autorest.Encode("path", policyAssignmentName), "scope": scope, } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } preparer := autorest.CreatePreparer( autorest.AsContentType("application/json; charset=utf-8"), autorest.AsPatch(), autorest.WithBaseURL(client.BaseURI), autorest.WithPathParameters("/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}", pathParameters), autorest.WithJSON(parameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // UpdateSender sends the Update request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) UpdateSender(req *http.Request) (*http.Response, error) { return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // UpdateResponder handles the response to the Update request. The method always // closes the http.Response Body. func (client AssignmentsClient) UpdateResponder(resp *http.Response) (result Assignment, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return } // UpdateByID this operation updates the policy assignment with the given ID. Policy assignments made on a scope apply // to all resources contained in that scope. For example, when you assign a policy to a resource group that policy // applies to all resources in the group. Policy assignment IDs have this format: // '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'. Valid scopes are: management // group (format: '/providers/Microsoft.Management/managementGroups/{managementGroup}'), subscription (format: // '/subscriptions/{subscriptionId}'), resource group (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or resource (format: // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'. // Parameters: // policyAssignmentID - the ID of the policy assignment to update. Use the format // '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'. // parameters - parameters for policy assignment patch request. func (client AssignmentsClient) UpdateByID(ctx context.Context, policyAssignmentID string, parameters AssignmentUpdate) (result Assignment, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AssignmentsClient.UpdateByID") defer func() { sc := -1 if result.Response.Response != nil { sc = result.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } req, err := client.UpdateByIDPreparer(ctx, policyAssignmentID, parameters) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "UpdateByID", nil, "Failure preparing request") return } resp, err := client.UpdateByIDSender(req) if err != nil { result.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "UpdateByID", resp, "Failure sending request") return } result, err = client.UpdateByIDResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "policy.AssignmentsClient", "UpdateByID", resp, "Failure responding to request") return } return } // UpdateByIDPreparer prepares the UpdateByID request. func (client AssignmentsClient) UpdateByIDPreparer(ctx context.Context, policyAssignmentID string, parameters AssignmentUpdate) (*http.Request, error) { pathParameters := map[string]interface{}{ "policyAssignmentId": policyAssignmentID, } const APIVersion = "2021-06-01" queryParameters := map[string]interface{}{ "api-version": APIVersion, } preparer := autorest.CreatePreparer( autorest.AsContentType("application/json; charset=utf-8"), autorest.AsPatch(), autorest.WithBaseURL(client.BaseURI), autorest.WithPathParameters("/{policyAssignmentId}", pathParameters), autorest.WithJSON(parameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // UpdateByIDSender sends the UpdateByID request. The method will close the // http.Response Body if it receives an error. func (client AssignmentsClient) UpdateByIDSender(req *http.Request) (*http.Response, error) { return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // UpdateByIDResponder handles the response to the UpdateByID request. The method always // closes the http.Response Body. func (client AssignmentsClient) UpdateByIDResponder(resp *http.Response) (result Assignment, err error) { err = autorest.Respond( resp, azure.WithErrorUnlessStatusCode(http.StatusOK), autorest.ByUnmarshallingJSON(&result), autorest.ByClosing()) result.Response = autorest.Response{Response: resp} return }