1package security 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 10 "context" 11 "github.com/Azure/go-autorest/autorest" 12 "github.com/Azure/go-autorest/autorest/azure" 13 "github.com/Azure/go-autorest/autorest/validation" 14 "github.com/Azure/go-autorest/tracing" 15 "net/http" 16) 17 18// JitNetworkAccessPoliciesClient is the API spec for Microsoft.Security (Azure Security Center) resource provider 19type JitNetworkAccessPoliciesClient struct { 20 BaseClient 21} 22 23// NewJitNetworkAccessPoliciesClient creates an instance of the JitNetworkAccessPoliciesClient client. 24func NewJitNetworkAccessPoliciesClient(subscriptionID string, ascLocation string) JitNetworkAccessPoliciesClient { 25 return NewJitNetworkAccessPoliciesClientWithBaseURI(DefaultBaseURI, subscriptionID, ascLocation) 26} 27 28// NewJitNetworkAccessPoliciesClientWithBaseURI creates an instance of the JitNetworkAccessPoliciesClient client using 29// a custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign 30// clouds, Azure stack). 31func NewJitNetworkAccessPoliciesClientWithBaseURI(baseURI string, subscriptionID string, ascLocation string) JitNetworkAccessPoliciesClient { 32 return JitNetworkAccessPoliciesClient{NewWithBaseURI(baseURI, subscriptionID, ascLocation)} 33} 34 35// CreateOrUpdate create a policy for protecting resources using Just-in-Time access control 36// Parameters: 37// resourceGroupName - the name of the resource group within the user's subscription. The name is case 38// insensitive. 39// jitNetworkAccessPolicyName - name of a Just-in-Time access configuration policy. 40func (client JitNetworkAccessPoliciesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, jitNetworkAccessPolicyName string, body JitNetworkAccessPolicy) (result JitNetworkAccessPolicy, err error) { 41 if tracing.IsEnabled() { 42 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.CreateOrUpdate") 43 defer func() { 44 sc := -1 45 if result.Response.Response != nil { 46 sc = result.Response.Response.StatusCode 47 } 48 tracing.EndSpan(ctx, sc, err) 49 }() 50 } 51 if err := validation.Validate([]validation.Validation{ 52 {TargetValue: client.SubscriptionID, 53 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.Pattern, Rule: `^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$`, Chain: nil}}}, 54 {TargetValue: resourceGroupName, 55 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 56 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 57 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, 58 {TargetValue: body, 59 Constraints: []validation.Constraint{{Target: "body.JitNetworkAccessPolicyProperties", Name: validation.Null, Rule: true, 60 Chain: []validation.Constraint{{Target: "body.JitNetworkAccessPolicyProperties.VirtualMachines", Name: validation.Null, Rule: true, Chain: nil}}}}}}); err != nil { 61 return result, validation.NewError("security.JitNetworkAccessPoliciesClient", "CreateOrUpdate", err.Error()) 62 } 63 64 req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, jitNetworkAccessPolicyName, body) 65 if err != nil { 66 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "CreateOrUpdate", nil, "Failure preparing request") 67 return 68 } 69 70 resp, err := client.CreateOrUpdateSender(req) 71 if err != nil { 72 result.Response = autorest.Response{Response: resp} 73 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "CreateOrUpdate", resp, "Failure sending request") 74 return 75 } 76 77 result, err = client.CreateOrUpdateResponder(resp) 78 if err != nil { 79 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "CreateOrUpdate", resp, "Failure responding to request") 80 return 81 } 82 83 return 84} 85 86// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 87func (client JitNetworkAccessPoliciesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, jitNetworkAccessPolicyName string, body JitNetworkAccessPolicy) (*http.Request, error) { 88 pathParameters := map[string]interface{}{ 89 "ascLocation": autorest.Encode("path", client.AscLocation), 90 "jitNetworkAccessPolicyName": autorest.Encode("path", jitNetworkAccessPolicyName), 91 "resourceGroupName": autorest.Encode("path", resourceGroupName), 92 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 93 } 94 95 const APIVersion = "2020-01-01" 96 queryParameters := map[string]interface{}{ 97 "api-version": APIVersion, 98 } 99 100 body.ID = nil 101 body.Name = nil 102 body.Type = nil 103 body.Location = nil 104 preparer := autorest.CreatePreparer( 105 autorest.AsContentType("application/json; charset=utf-8"), 106 autorest.AsPut(), 107 autorest.WithBaseURL(client.BaseURI), 108 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies/{jitNetworkAccessPolicyName}", pathParameters), 109 autorest.WithJSON(body), 110 autorest.WithQueryParameters(queryParameters)) 111 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 112} 113 114// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 115// http.Response Body if it receives an error. 116func (client JitNetworkAccessPoliciesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { 117 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 118} 119 120// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 121// closes the http.Response Body. 122func (client JitNetworkAccessPoliciesClient) CreateOrUpdateResponder(resp *http.Response) (result JitNetworkAccessPolicy, err error) { 123 err = autorest.Respond( 124 resp, 125 azure.WithErrorUnlessStatusCode(http.StatusOK), 126 autorest.ByUnmarshallingJSON(&result), 127 autorest.ByClosing()) 128 result.Response = autorest.Response{Response: resp} 129 return 130} 131 132// Delete delete a Just-in-Time access control policy. 133// Parameters: 134// resourceGroupName - the name of the resource group within the user's subscription. The name is case 135// insensitive. 136// jitNetworkAccessPolicyName - name of a Just-in-Time access configuration policy. 137func (client JitNetworkAccessPoliciesClient) Delete(ctx context.Context, resourceGroupName string, jitNetworkAccessPolicyName string) (result autorest.Response, err error) { 138 if tracing.IsEnabled() { 139 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.Delete") 140 defer func() { 141 sc := -1 142 if result.Response != nil { 143 sc = result.Response.StatusCode 144 } 145 tracing.EndSpan(ctx, sc, err) 146 }() 147 } 148 if err := validation.Validate([]validation.Validation{ 149 {TargetValue: client.SubscriptionID, 150 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.Pattern, Rule: `^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$`, Chain: nil}}}, 151 {TargetValue: resourceGroupName, 152 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 153 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 154 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { 155 return result, validation.NewError("security.JitNetworkAccessPoliciesClient", "Delete", err.Error()) 156 } 157 158 req, err := client.DeletePreparer(ctx, resourceGroupName, jitNetworkAccessPolicyName) 159 if err != nil { 160 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "Delete", nil, "Failure preparing request") 161 return 162 } 163 164 resp, err := client.DeleteSender(req) 165 if err != nil { 166 result.Response = resp 167 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "Delete", resp, "Failure sending request") 168 return 169 } 170 171 result, err = client.DeleteResponder(resp) 172 if err != nil { 173 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "Delete", resp, "Failure responding to request") 174 return 175 } 176 177 return 178} 179 180// DeletePreparer prepares the Delete request. 181func (client JitNetworkAccessPoliciesClient) DeletePreparer(ctx context.Context, resourceGroupName string, jitNetworkAccessPolicyName string) (*http.Request, error) { 182 pathParameters := map[string]interface{}{ 183 "ascLocation": autorest.Encode("path", client.AscLocation), 184 "jitNetworkAccessPolicyName": autorest.Encode("path", jitNetworkAccessPolicyName), 185 "resourceGroupName": autorest.Encode("path", resourceGroupName), 186 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 187 } 188 189 const APIVersion = "2020-01-01" 190 queryParameters := map[string]interface{}{ 191 "api-version": APIVersion, 192 } 193 194 preparer := autorest.CreatePreparer( 195 autorest.AsDelete(), 196 autorest.WithBaseURL(client.BaseURI), 197 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies/{jitNetworkAccessPolicyName}", pathParameters), 198 autorest.WithQueryParameters(queryParameters)) 199 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 200} 201 202// DeleteSender sends the Delete request. The method will close the 203// http.Response Body if it receives an error. 204func (client JitNetworkAccessPoliciesClient) DeleteSender(req *http.Request) (*http.Response, error) { 205 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 206} 207 208// DeleteResponder handles the response to the Delete request. The method always 209// closes the http.Response Body. 210func (client JitNetworkAccessPoliciesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 211 err = autorest.Respond( 212 resp, 213 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), 214 autorest.ByClosing()) 215 result.Response = resp 216 return 217} 218 219// Get policies for protecting resources using Just-in-Time access control for the subscription, location 220// Parameters: 221// resourceGroupName - the name of the resource group within the user's subscription. The name is case 222// insensitive. 223// jitNetworkAccessPolicyName - name of a Just-in-Time access configuration policy. 224func (client JitNetworkAccessPoliciesClient) Get(ctx context.Context, resourceGroupName string, jitNetworkAccessPolicyName string) (result JitNetworkAccessPolicy, err error) { 225 if tracing.IsEnabled() { 226 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.Get") 227 defer func() { 228 sc := -1 229 if result.Response.Response != nil { 230 sc = result.Response.Response.StatusCode 231 } 232 tracing.EndSpan(ctx, sc, err) 233 }() 234 } 235 if err := validation.Validate([]validation.Validation{ 236 {TargetValue: client.SubscriptionID, 237 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.Pattern, Rule: `^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$`, Chain: nil}}}, 238 {TargetValue: resourceGroupName, 239 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 240 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 241 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { 242 return result, validation.NewError("security.JitNetworkAccessPoliciesClient", "Get", err.Error()) 243 } 244 245 req, err := client.GetPreparer(ctx, resourceGroupName, jitNetworkAccessPolicyName) 246 if err != nil { 247 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "Get", nil, "Failure preparing request") 248 return 249 } 250 251 resp, err := client.GetSender(req) 252 if err != nil { 253 result.Response = autorest.Response{Response: resp} 254 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "Get", resp, "Failure sending request") 255 return 256 } 257 258 result, err = client.GetResponder(resp) 259 if err != nil { 260 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "Get", resp, "Failure responding to request") 261 return 262 } 263 264 return 265} 266 267// GetPreparer prepares the Get request. 268func (client JitNetworkAccessPoliciesClient) GetPreparer(ctx context.Context, resourceGroupName string, jitNetworkAccessPolicyName string) (*http.Request, error) { 269 pathParameters := map[string]interface{}{ 270 "ascLocation": autorest.Encode("path", client.AscLocation), 271 "jitNetworkAccessPolicyName": autorest.Encode("path", jitNetworkAccessPolicyName), 272 "resourceGroupName": autorest.Encode("path", resourceGroupName), 273 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 274 } 275 276 const APIVersion = "2020-01-01" 277 queryParameters := map[string]interface{}{ 278 "api-version": APIVersion, 279 } 280 281 preparer := autorest.CreatePreparer( 282 autorest.AsGet(), 283 autorest.WithBaseURL(client.BaseURI), 284 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies/{jitNetworkAccessPolicyName}", pathParameters), 285 autorest.WithQueryParameters(queryParameters)) 286 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 287} 288 289// GetSender sends the Get request. The method will close the 290// http.Response Body if it receives an error. 291func (client JitNetworkAccessPoliciesClient) GetSender(req *http.Request) (*http.Response, error) { 292 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 293} 294 295// GetResponder handles the response to the Get request. The method always 296// closes the http.Response Body. 297func (client JitNetworkAccessPoliciesClient) GetResponder(resp *http.Response) (result JitNetworkAccessPolicy, err error) { 298 err = autorest.Respond( 299 resp, 300 azure.WithErrorUnlessStatusCode(http.StatusOK), 301 autorest.ByUnmarshallingJSON(&result), 302 autorest.ByClosing()) 303 result.Response = autorest.Response{Response: resp} 304 return 305} 306 307// Initiate initiate a JIT access from a specific Just-in-Time policy configuration. 308// Parameters: 309// resourceGroupName - the name of the resource group within the user's subscription. The name is case 310// insensitive. 311// jitNetworkAccessPolicyName - name of a Just-in-Time access configuration policy. 312func (client JitNetworkAccessPoliciesClient) Initiate(ctx context.Context, resourceGroupName string, jitNetworkAccessPolicyName string, body JitNetworkAccessPolicyInitiateRequest) (result JitNetworkAccessRequest, err error) { 313 if tracing.IsEnabled() { 314 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.Initiate") 315 defer func() { 316 sc := -1 317 if result.Response.Response != nil { 318 sc = result.Response.Response.StatusCode 319 } 320 tracing.EndSpan(ctx, sc, err) 321 }() 322 } 323 if err := validation.Validate([]validation.Validation{ 324 {TargetValue: client.SubscriptionID, 325 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.Pattern, Rule: `^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$`, Chain: nil}}}, 326 {TargetValue: resourceGroupName, 327 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 328 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 329 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, 330 {TargetValue: body, 331 Constraints: []validation.Constraint{{Target: "body.VirtualMachines", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { 332 return result, validation.NewError("security.JitNetworkAccessPoliciesClient", "Initiate", err.Error()) 333 } 334 335 req, err := client.InitiatePreparer(ctx, resourceGroupName, jitNetworkAccessPolicyName, body) 336 if err != nil { 337 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "Initiate", nil, "Failure preparing request") 338 return 339 } 340 341 resp, err := client.InitiateSender(req) 342 if err != nil { 343 result.Response = autorest.Response{Response: resp} 344 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "Initiate", resp, "Failure sending request") 345 return 346 } 347 348 result, err = client.InitiateResponder(resp) 349 if err != nil { 350 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "Initiate", resp, "Failure responding to request") 351 return 352 } 353 354 return 355} 356 357// InitiatePreparer prepares the Initiate request. 358func (client JitNetworkAccessPoliciesClient) InitiatePreparer(ctx context.Context, resourceGroupName string, jitNetworkAccessPolicyName string, body JitNetworkAccessPolicyInitiateRequest) (*http.Request, error) { 359 pathParameters := map[string]interface{}{ 360 "ascLocation": autorest.Encode("path", client.AscLocation), 361 "jitNetworkAccessPolicyInitiateType": autorest.Encode("path", "initiate"), 362 "jitNetworkAccessPolicyName": autorest.Encode("path", jitNetworkAccessPolicyName), 363 "resourceGroupName": autorest.Encode("path", resourceGroupName), 364 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 365 } 366 367 const APIVersion = "2020-01-01" 368 queryParameters := map[string]interface{}{ 369 "api-version": APIVersion, 370 } 371 372 preparer := autorest.CreatePreparer( 373 autorest.AsContentType("application/json; charset=utf-8"), 374 autorest.AsPost(), 375 autorest.WithBaseURL(client.BaseURI), 376 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies/{jitNetworkAccessPolicyName}/{jitNetworkAccessPolicyInitiateType}", pathParameters), 377 autorest.WithJSON(body), 378 autorest.WithQueryParameters(queryParameters)) 379 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 380} 381 382// InitiateSender sends the Initiate request. The method will close the 383// http.Response Body if it receives an error. 384func (client JitNetworkAccessPoliciesClient) InitiateSender(req *http.Request) (*http.Response, error) { 385 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 386} 387 388// InitiateResponder handles the response to the Initiate request. The method always 389// closes the http.Response Body. 390func (client JitNetworkAccessPoliciesClient) InitiateResponder(resp *http.Response) (result JitNetworkAccessRequest, err error) { 391 err = autorest.Respond( 392 resp, 393 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 394 autorest.ByUnmarshallingJSON(&result), 395 autorest.ByClosing()) 396 result.Response = autorest.Response{Response: resp} 397 return 398} 399 400// List policies for protecting resources using Just-in-Time access control. 401func (client JitNetworkAccessPoliciesClient) List(ctx context.Context) (result JitNetworkAccessPoliciesListPage, err error) { 402 if tracing.IsEnabled() { 403 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.List") 404 defer func() { 405 sc := -1 406 if result.jnapl.Response.Response != nil { 407 sc = result.jnapl.Response.Response.StatusCode 408 } 409 tracing.EndSpan(ctx, sc, err) 410 }() 411 } 412 if err := validation.Validate([]validation.Validation{ 413 {TargetValue: client.SubscriptionID, 414 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.Pattern, Rule: `^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$`, Chain: nil}}}}); err != nil { 415 return result, validation.NewError("security.JitNetworkAccessPoliciesClient", "List", err.Error()) 416 } 417 418 result.fn = client.listNextResults 419 req, err := client.ListPreparer(ctx) 420 if err != nil { 421 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "List", nil, "Failure preparing request") 422 return 423 } 424 425 resp, err := client.ListSender(req) 426 if err != nil { 427 result.jnapl.Response = autorest.Response{Response: resp} 428 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "List", resp, "Failure sending request") 429 return 430 } 431 432 result.jnapl, err = client.ListResponder(resp) 433 if err != nil { 434 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "List", resp, "Failure responding to request") 435 return 436 } 437 if result.jnapl.hasNextLink() && result.jnapl.IsEmpty() { 438 err = result.NextWithContext(ctx) 439 return 440 } 441 442 return 443} 444 445// ListPreparer prepares the List request. 446func (client JitNetworkAccessPoliciesClient) ListPreparer(ctx context.Context) (*http.Request, error) { 447 pathParameters := map[string]interface{}{ 448 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 449 } 450 451 const APIVersion = "2020-01-01" 452 queryParameters := map[string]interface{}{ 453 "api-version": APIVersion, 454 } 455 456 preparer := autorest.CreatePreparer( 457 autorest.AsGet(), 458 autorest.WithBaseURL(client.BaseURI), 459 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Security/jitNetworkAccessPolicies", pathParameters), 460 autorest.WithQueryParameters(queryParameters)) 461 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 462} 463 464// ListSender sends the List request. The method will close the 465// http.Response Body if it receives an error. 466func (client JitNetworkAccessPoliciesClient) ListSender(req *http.Request) (*http.Response, error) { 467 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 468} 469 470// ListResponder handles the response to the List request. The method always 471// closes the http.Response Body. 472func (client JitNetworkAccessPoliciesClient) ListResponder(resp *http.Response) (result JitNetworkAccessPoliciesList, err error) { 473 err = autorest.Respond( 474 resp, 475 azure.WithErrorUnlessStatusCode(http.StatusOK), 476 autorest.ByUnmarshallingJSON(&result), 477 autorest.ByClosing()) 478 result.Response = autorest.Response{Response: resp} 479 return 480} 481 482// listNextResults retrieves the next set of results, if any. 483func (client JitNetworkAccessPoliciesClient) listNextResults(ctx context.Context, lastResults JitNetworkAccessPoliciesList) (result JitNetworkAccessPoliciesList, err error) { 484 req, err := lastResults.jitNetworkAccessPoliciesListPreparer(ctx) 485 if err != nil { 486 return result, autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listNextResults", nil, "Failure preparing next results request") 487 } 488 if req == nil { 489 return 490 } 491 resp, err := client.ListSender(req) 492 if err != nil { 493 result.Response = autorest.Response{Response: resp} 494 return result, autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listNextResults", resp, "Failure sending next results request") 495 } 496 result, err = client.ListResponder(resp) 497 if err != nil { 498 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listNextResults", resp, "Failure responding to next results request") 499 } 500 return 501} 502 503// ListComplete enumerates all values, automatically crossing page boundaries as required. 504func (client JitNetworkAccessPoliciesClient) ListComplete(ctx context.Context) (result JitNetworkAccessPoliciesListIterator, err error) { 505 if tracing.IsEnabled() { 506 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.List") 507 defer func() { 508 sc := -1 509 if result.Response().Response.Response != nil { 510 sc = result.page.Response().Response.Response.StatusCode 511 } 512 tracing.EndSpan(ctx, sc, err) 513 }() 514 } 515 result.page, err = client.List(ctx) 516 return 517} 518 519// ListByRegion policies for protecting resources using Just-in-Time access control for the subscription, location 520func (client JitNetworkAccessPoliciesClient) ListByRegion(ctx context.Context) (result JitNetworkAccessPoliciesListPage, err error) { 521 if tracing.IsEnabled() { 522 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.ListByRegion") 523 defer func() { 524 sc := -1 525 if result.jnapl.Response.Response != nil { 526 sc = result.jnapl.Response.Response.StatusCode 527 } 528 tracing.EndSpan(ctx, sc, err) 529 }() 530 } 531 if err := validation.Validate([]validation.Validation{ 532 {TargetValue: client.SubscriptionID, 533 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.Pattern, Rule: `^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$`, Chain: nil}}}}); err != nil { 534 return result, validation.NewError("security.JitNetworkAccessPoliciesClient", "ListByRegion", err.Error()) 535 } 536 537 result.fn = client.listByRegionNextResults 538 req, err := client.ListByRegionPreparer(ctx) 539 if err != nil { 540 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "ListByRegion", nil, "Failure preparing request") 541 return 542 } 543 544 resp, err := client.ListByRegionSender(req) 545 if err != nil { 546 result.jnapl.Response = autorest.Response{Response: resp} 547 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "ListByRegion", resp, "Failure sending request") 548 return 549 } 550 551 result.jnapl, err = client.ListByRegionResponder(resp) 552 if err != nil { 553 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "ListByRegion", resp, "Failure responding to request") 554 return 555 } 556 if result.jnapl.hasNextLink() && result.jnapl.IsEmpty() { 557 err = result.NextWithContext(ctx) 558 return 559 } 560 561 return 562} 563 564// ListByRegionPreparer prepares the ListByRegion request. 565func (client JitNetworkAccessPoliciesClient) ListByRegionPreparer(ctx context.Context) (*http.Request, error) { 566 pathParameters := map[string]interface{}{ 567 "ascLocation": autorest.Encode("path", client.AscLocation), 568 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 569 } 570 571 const APIVersion = "2020-01-01" 572 queryParameters := map[string]interface{}{ 573 "api-version": APIVersion, 574 } 575 576 preparer := autorest.CreatePreparer( 577 autorest.AsGet(), 578 autorest.WithBaseURL(client.BaseURI), 579 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies", pathParameters), 580 autorest.WithQueryParameters(queryParameters)) 581 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 582} 583 584// ListByRegionSender sends the ListByRegion request. The method will close the 585// http.Response Body if it receives an error. 586func (client JitNetworkAccessPoliciesClient) ListByRegionSender(req *http.Request) (*http.Response, error) { 587 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 588} 589 590// ListByRegionResponder handles the response to the ListByRegion request. The method always 591// closes the http.Response Body. 592func (client JitNetworkAccessPoliciesClient) ListByRegionResponder(resp *http.Response) (result JitNetworkAccessPoliciesList, err error) { 593 err = autorest.Respond( 594 resp, 595 azure.WithErrorUnlessStatusCode(http.StatusOK), 596 autorest.ByUnmarshallingJSON(&result), 597 autorest.ByClosing()) 598 result.Response = autorest.Response{Response: resp} 599 return 600} 601 602// listByRegionNextResults retrieves the next set of results, if any. 603func (client JitNetworkAccessPoliciesClient) listByRegionNextResults(ctx context.Context, lastResults JitNetworkAccessPoliciesList) (result JitNetworkAccessPoliciesList, err error) { 604 req, err := lastResults.jitNetworkAccessPoliciesListPreparer(ctx) 605 if err != nil { 606 return result, autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listByRegionNextResults", nil, "Failure preparing next results request") 607 } 608 if req == nil { 609 return 610 } 611 resp, err := client.ListByRegionSender(req) 612 if err != nil { 613 result.Response = autorest.Response{Response: resp} 614 return result, autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listByRegionNextResults", resp, "Failure sending next results request") 615 } 616 result, err = client.ListByRegionResponder(resp) 617 if err != nil { 618 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listByRegionNextResults", resp, "Failure responding to next results request") 619 } 620 return 621} 622 623// ListByRegionComplete enumerates all values, automatically crossing page boundaries as required. 624func (client JitNetworkAccessPoliciesClient) ListByRegionComplete(ctx context.Context) (result JitNetworkAccessPoliciesListIterator, err error) { 625 if tracing.IsEnabled() { 626 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.ListByRegion") 627 defer func() { 628 sc := -1 629 if result.Response().Response.Response != nil { 630 sc = result.page.Response().Response.Response.StatusCode 631 } 632 tracing.EndSpan(ctx, sc, err) 633 }() 634 } 635 result.page, err = client.ListByRegion(ctx) 636 return 637} 638 639// ListByResourceGroup policies for protecting resources using Just-in-Time access control for the subscription, 640// location 641// Parameters: 642// resourceGroupName - the name of the resource group within the user's subscription. The name is case 643// insensitive. 644func (client JitNetworkAccessPoliciesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result JitNetworkAccessPoliciesListPage, err error) { 645 if tracing.IsEnabled() { 646 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.ListByResourceGroup") 647 defer func() { 648 sc := -1 649 if result.jnapl.Response.Response != nil { 650 sc = result.jnapl.Response.Response.StatusCode 651 } 652 tracing.EndSpan(ctx, sc, err) 653 }() 654 } 655 if err := validation.Validate([]validation.Validation{ 656 {TargetValue: client.SubscriptionID, 657 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.Pattern, Rule: `^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$`, Chain: nil}}}, 658 {TargetValue: resourceGroupName, 659 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 660 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 661 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { 662 return result, validation.NewError("security.JitNetworkAccessPoliciesClient", "ListByResourceGroup", err.Error()) 663 } 664 665 result.fn = client.listByResourceGroupNextResults 666 req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) 667 if err != nil { 668 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "ListByResourceGroup", nil, "Failure preparing request") 669 return 670 } 671 672 resp, err := client.ListByResourceGroupSender(req) 673 if err != nil { 674 result.jnapl.Response = autorest.Response{Response: resp} 675 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "ListByResourceGroup", resp, "Failure sending request") 676 return 677 } 678 679 result.jnapl, err = client.ListByResourceGroupResponder(resp) 680 if err != nil { 681 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "ListByResourceGroup", resp, "Failure responding to request") 682 return 683 } 684 if result.jnapl.hasNextLink() && result.jnapl.IsEmpty() { 685 err = result.NextWithContext(ctx) 686 return 687 } 688 689 return 690} 691 692// ListByResourceGroupPreparer prepares the ListByResourceGroup request. 693func (client JitNetworkAccessPoliciesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { 694 pathParameters := map[string]interface{}{ 695 "resourceGroupName": autorest.Encode("path", resourceGroupName), 696 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 697 } 698 699 const APIVersion = "2020-01-01" 700 queryParameters := map[string]interface{}{ 701 "api-version": APIVersion, 702 } 703 704 preparer := autorest.CreatePreparer( 705 autorest.AsGet(), 706 autorest.WithBaseURL(client.BaseURI), 707 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/jitNetworkAccessPolicies", pathParameters), 708 autorest.WithQueryParameters(queryParameters)) 709 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 710} 711 712// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the 713// http.Response Body if it receives an error. 714func (client JitNetworkAccessPoliciesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { 715 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 716} 717 718// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always 719// closes the http.Response Body. 720func (client JitNetworkAccessPoliciesClient) ListByResourceGroupResponder(resp *http.Response) (result JitNetworkAccessPoliciesList, err error) { 721 err = autorest.Respond( 722 resp, 723 azure.WithErrorUnlessStatusCode(http.StatusOK), 724 autorest.ByUnmarshallingJSON(&result), 725 autorest.ByClosing()) 726 result.Response = autorest.Response{Response: resp} 727 return 728} 729 730// listByResourceGroupNextResults retrieves the next set of results, if any. 731func (client JitNetworkAccessPoliciesClient) listByResourceGroupNextResults(ctx context.Context, lastResults JitNetworkAccessPoliciesList) (result JitNetworkAccessPoliciesList, err error) { 732 req, err := lastResults.jitNetworkAccessPoliciesListPreparer(ctx) 733 if err != nil { 734 return result, autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") 735 } 736 if req == nil { 737 return 738 } 739 resp, err := client.ListByResourceGroupSender(req) 740 if err != nil { 741 result.Response = autorest.Response{Response: resp} 742 return result, autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") 743 } 744 result, err = client.ListByResourceGroupResponder(resp) 745 if err != nil { 746 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") 747 } 748 return 749} 750 751// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. 752func (client JitNetworkAccessPoliciesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result JitNetworkAccessPoliciesListIterator, err error) { 753 if tracing.IsEnabled() { 754 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.ListByResourceGroup") 755 defer func() { 756 sc := -1 757 if result.Response().Response.Response != nil { 758 sc = result.page.Response().Response.Response.StatusCode 759 } 760 tracing.EndSpan(ctx, sc, err) 761 }() 762 } 763 result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) 764 return 765} 766 767// ListByResourceGroupAndRegion policies for protecting resources using Just-in-Time access control for the 768// subscription, location 769// Parameters: 770// resourceGroupName - the name of the resource group within the user's subscription. The name is case 771// insensitive. 772func (client JitNetworkAccessPoliciesClient) ListByResourceGroupAndRegion(ctx context.Context, resourceGroupName string) (result JitNetworkAccessPoliciesListPage, err error) { 773 if tracing.IsEnabled() { 774 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.ListByResourceGroupAndRegion") 775 defer func() { 776 sc := -1 777 if result.jnapl.Response.Response != nil { 778 sc = result.jnapl.Response.Response.StatusCode 779 } 780 tracing.EndSpan(ctx, sc, err) 781 }() 782 } 783 if err := validation.Validate([]validation.Validation{ 784 {TargetValue: client.SubscriptionID, 785 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.Pattern, Rule: `^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$`, Chain: nil}}}, 786 {TargetValue: resourceGroupName, 787 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 788 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 789 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { 790 return result, validation.NewError("security.JitNetworkAccessPoliciesClient", "ListByResourceGroupAndRegion", err.Error()) 791 } 792 793 result.fn = client.listByResourceGroupAndRegionNextResults 794 req, err := client.ListByResourceGroupAndRegionPreparer(ctx, resourceGroupName) 795 if err != nil { 796 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "ListByResourceGroupAndRegion", nil, "Failure preparing request") 797 return 798 } 799 800 resp, err := client.ListByResourceGroupAndRegionSender(req) 801 if err != nil { 802 result.jnapl.Response = autorest.Response{Response: resp} 803 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "ListByResourceGroupAndRegion", resp, "Failure sending request") 804 return 805 } 806 807 result.jnapl, err = client.ListByResourceGroupAndRegionResponder(resp) 808 if err != nil { 809 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "ListByResourceGroupAndRegion", resp, "Failure responding to request") 810 return 811 } 812 if result.jnapl.hasNextLink() && result.jnapl.IsEmpty() { 813 err = result.NextWithContext(ctx) 814 return 815 } 816 817 return 818} 819 820// ListByResourceGroupAndRegionPreparer prepares the ListByResourceGroupAndRegion request. 821func (client JitNetworkAccessPoliciesClient) ListByResourceGroupAndRegionPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { 822 pathParameters := map[string]interface{}{ 823 "ascLocation": autorest.Encode("path", client.AscLocation), 824 "resourceGroupName": autorest.Encode("path", resourceGroupName), 825 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 826 } 827 828 const APIVersion = "2020-01-01" 829 queryParameters := map[string]interface{}{ 830 "api-version": APIVersion, 831 } 832 833 preparer := autorest.CreatePreparer( 834 autorest.AsGet(), 835 autorest.WithBaseURL(client.BaseURI), 836 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies", pathParameters), 837 autorest.WithQueryParameters(queryParameters)) 838 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 839} 840 841// ListByResourceGroupAndRegionSender sends the ListByResourceGroupAndRegion request. The method will close the 842// http.Response Body if it receives an error. 843func (client JitNetworkAccessPoliciesClient) ListByResourceGroupAndRegionSender(req *http.Request) (*http.Response, error) { 844 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 845} 846 847// ListByResourceGroupAndRegionResponder handles the response to the ListByResourceGroupAndRegion request. The method always 848// closes the http.Response Body. 849func (client JitNetworkAccessPoliciesClient) ListByResourceGroupAndRegionResponder(resp *http.Response) (result JitNetworkAccessPoliciesList, err error) { 850 err = autorest.Respond( 851 resp, 852 azure.WithErrorUnlessStatusCode(http.StatusOK), 853 autorest.ByUnmarshallingJSON(&result), 854 autorest.ByClosing()) 855 result.Response = autorest.Response{Response: resp} 856 return 857} 858 859// listByResourceGroupAndRegionNextResults retrieves the next set of results, if any. 860func (client JitNetworkAccessPoliciesClient) listByResourceGroupAndRegionNextResults(ctx context.Context, lastResults JitNetworkAccessPoliciesList) (result JitNetworkAccessPoliciesList, err error) { 861 req, err := lastResults.jitNetworkAccessPoliciesListPreparer(ctx) 862 if err != nil { 863 return result, autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listByResourceGroupAndRegionNextResults", nil, "Failure preparing next results request") 864 } 865 if req == nil { 866 return 867 } 868 resp, err := client.ListByResourceGroupAndRegionSender(req) 869 if err != nil { 870 result.Response = autorest.Response{Response: resp} 871 return result, autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listByResourceGroupAndRegionNextResults", resp, "Failure sending next results request") 872 } 873 result, err = client.ListByResourceGroupAndRegionResponder(resp) 874 if err != nil { 875 err = autorest.NewErrorWithError(err, "security.JitNetworkAccessPoliciesClient", "listByResourceGroupAndRegionNextResults", resp, "Failure responding to next results request") 876 } 877 return 878} 879 880// ListByResourceGroupAndRegionComplete enumerates all values, automatically crossing page boundaries as required. 881func (client JitNetworkAccessPoliciesClient) ListByResourceGroupAndRegionComplete(ctx context.Context, resourceGroupName string) (result JitNetworkAccessPoliciesListIterator, err error) { 882 if tracing.IsEnabled() { 883 ctx = tracing.StartSpan(ctx, fqdn+"/JitNetworkAccessPoliciesClient.ListByResourceGroupAndRegion") 884 defer func() { 885 sc := -1 886 if result.Response().Response.Response != nil { 887 sc = result.page.Response().Response.Response.StatusCode 888 } 889 tracing.EndSpan(ctx, sc, err) 890 }() 891 } 892 result.page, err = client.ListByResourceGroupAndRegion(ctx, resourceGroupName) 893 return 894} 895