1package siterecovery 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/tracing" 14 "net/http" 15) 16 17// ReplicationPoliciesClient is the client for the ReplicationPolicies methods of the Siterecovery service. 18type ReplicationPoliciesClient struct { 19 BaseClient 20} 21 22// NewReplicationPoliciesClient creates an instance of the ReplicationPoliciesClient client. 23func NewReplicationPoliciesClient(subscriptionID string, resourceGroupName string, resourceName string) ReplicationPoliciesClient { 24 return NewReplicationPoliciesClientWithBaseURI(DefaultBaseURI, subscriptionID, resourceGroupName, resourceName) 25} 26 27// NewReplicationPoliciesClientWithBaseURI creates an instance of the ReplicationPoliciesClient client using a custom 28// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure 29// stack). 30func NewReplicationPoliciesClientWithBaseURI(baseURI string, subscriptionID string, resourceGroupName string, resourceName string) ReplicationPoliciesClient { 31 return ReplicationPoliciesClient{NewWithBaseURI(baseURI, subscriptionID, resourceGroupName, resourceName)} 32} 33 34// Create the operation to create a replication policy 35// Parameters: 36// policyName - replication policy name 37// input - create policy input 38func (client ReplicationPoliciesClient) Create(ctx context.Context, policyName string, input CreatePolicyInput) (result ReplicationPoliciesCreateFuture, err error) { 39 if tracing.IsEnabled() { 40 ctx = tracing.StartSpan(ctx, fqdn+"/ReplicationPoliciesClient.Create") 41 defer func() { 42 sc := -1 43 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 44 sc = result.FutureAPI.Response().StatusCode 45 } 46 tracing.EndSpan(ctx, sc, err) 47 }() 48 } 49 req, err := client.CreatePreparer(ctx, policyName, input) 50 if err != nil { 51 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "Create", nil, "Failure preparing request") 52 return 53 } 54 55 result, err = client.CreateSender(req) 56 if err != nil { 57 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "Create", nil, "Failure sending request") 58 return 59 } 60 61 return 62} 63 64// CreatePreparer prepares the Create request. 65func (client ReplicationPoliciesClient) CreatePreparer(ctx context.Context, policyName string, input CreatePolicyInput) (*http.Request, error) { 66 pathParameters := map[string]interface{}{ 67 "policyName": autorest.Encode("path", policyName), 68 "resourceGroupName": autorest.Encode("path", client.ResourceGroupName), 69 "resourceName": autorest.Encode("path", client.ResourceName), 70 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 71 } 72 73 const APIVersion = "2016-08-10" 74 queryParameters := map[string]interface{}{ 75 "api-version": APIVersion, 76 } 77 78 preparer := autorest.CreatePreparer( 79 autorest.AsContentType("application/json; charset=utf-8"), 80 autorest.AsPut(), 81 autorest.WithBaseURL(client.BaseURI), 82 autorest.WithPathParameters("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationPolicies/{policyName}", pathParameters), 83 autorest.WithJSON(input), 84 autorest.WithQueryParameters(queryParameters)) 85 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 86} 87 88// CreateSender sends the Create request. The method will close the 89// http.Response Body if it receives an error. 90func (client ReplicationPoliciesClient) CreateSender(req *http.Request) (future ReplicationPoliciesCreateFuture, err error) { 91 var resp *http.Response 92 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 93 if err != nil { 94 return 95 } 96 var azf azure.Future 97 azf, err = azure.NewFutureFromResponse(resp) 98 future.FutureAPI = &azf 99 future.Result = future.result 100 return 101} 102 103// CreateResponder handles the response to the Create request. The method always 104// closes the http.Response Body. 105func (client ReplicationPoliciesClient) CreateResponder(resp *http.Response) (result Policy, err error) { 106 err = autorest.Respond( 107 resp, 108 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 109 autorest.ByUnmarshallingJSON(&result), 110 autorest.ByClosing()) 111 result.Response = autorest.Response{Response: resp} 112 return 113} 114 115// Delete the operation to delete a replication policy. 116// Parameters: 117// policyName - replication policy name. 118func (client ReplicationPoliciesClient) Delete(ctx context.Context, policyName string) (result ReplicationPoliciesDeleteFuture, err error) { 119 if tracing.IsEnabled() { 120 ctx = tracing.StartSpan(ctx, fqdn+"/ReplicationPoliciesClient.Delete") 121 defer func() { 122 sc := -1 123 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 124 sc = result.FutureAPI.Response().StatusCode 125 } 126 tracing.EndSpan(ctx, sc, err) 127 }() 128 } 129 req, err := client.DeletePreparer(ctx, policyName) 130 if err != nil { 131 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "Delete", nil, "Failure preparing request") 132 return 133 } 134 135 result, err = client.DeleteSender(req) 136 if err != nil { 137 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "Delete", nil, "Failure sending request") 138 return 139 } 140 141 return 142} 143 144// DeletePreparer prepares the Delete request. 145func (client ReplicationPoliciesClient) DeletePreparer(ctx context.Context, policyName string) (*http.Request, error) { 146 pathParameters := map[string]interface{}{ 147 "policyName": autorest.Encode("path", policyName), 148 "resourceGroupName": autorest.Encode("path", client.ResourceGroupName), 149 "resourceName": autorest.Encode("path", client.ResourceName), 150 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 151 } 152 153 const APIVersion = "2016-08-10" 154 queryParameters := map[string]interface{}{ 155 "api-version": APIVersion, 156 } 157 158 preparer := autorest.CreatePreparer( 159 autorest.AsDelete(), 160 autorest.WithBaseURL(client.BaseURI), 161 autorest.WithPathParameters("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationPolicies/{policyName}", pathParameters), 162 autorest.WithQueryParameters(queryParameters)) 163 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 164} 165 166// DeleteSender sends the Delete request. The method will close the 167// http.Response Body if it receives an error. 168func (client ReplicationPoliciesClient) DeleteSender(req *http.Request) (future ReplicationPoliciesDeleteFuture, err error) { 169 var resp *http.Response 170 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 171 if err != nil { 172 return 173 } 174 var azf azure.Future 175 azf, err = azure.NewFutureFromResponse(resp) 176 future.FutureAPI = &azf 177 future.Result = future.result 178 return 179} 180 181// DeleteResponder handles the response to the Delete request. The method always 182// closes the http.Response Body. 183func (client ReplicationPoliciesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 184 err = autorest.Respond( 185 resp, 186 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), 187 autorest.ByClosing()) 188 result.Response = resp 189 return 190} 191 192// Get gets the details of a replication policy. 193// Parameters: 194// policyName - replication policy name. 195func (client ReplicationPoliciesClient) Get(ctx context.Context, policyName string) (result Policy, err error) { 196 if tracing.IsEnabled() { 197 ctx = tracing.StartSpan(ctx, fqdn+"/ReplicationPoliciesClient.Get") 198 defer func() { 199 sc := -1 200 if result.Response.Response != nil { 201 sc = result.Response.Response.StatusCode 202 } 203 tracing.EndSpan(ctx, sc, err) 204 }() 205 } 206 req, err := client.GetPreparer(ctx, policyName) 207 if err != nil { 208 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "Get", nil, "Failure preparing request") 209 return 210 } 211 212 resp, err := client.GetSender(req) 213 if err != nil { 214 result.Response = autorest.Response{Response: resp} 215 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "Get", resp, "Failure sending request") 216 return 217 } 218 219 result, err = client.GetResponder(resp) 220 if err != nil { 221 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "Get", resp, "Failure responding to request") 222 return 223 } 224 225 return 226} 227 228// GetPreparer prepares the Get request. 229func (client ReplicationPoliciesClient) GetPreparer(ctx context.Context, policyName string) (*http.Request, error) { 230 pathParameters := map[string]interface{}{ 231 "policyName": autorest.Encode("path", policyName), 232 "resourceGroupName": autorest.Encode("path", client.ResourceGroupName), 233 "resourceName": autorest.Encode("path", client.ResourceName), 234 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 235 } 236 237 const APIVersion = "2016-08-10" 238 queryParameters := map[string]interface{}{ 239 "api-version": APIVersion, 240 } 241 242 preparer := autorest.CreatePreparer( 243 autorest.AsGet(), 244 autorest.WithBaseURL(client.BaseURI), 245 autorest.WithPathParameters("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationPolicies/{policyName}", pathParameters), 246 autorest.WithQueryParameters(queryParameters)) 247 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 248} 249 250// GetSender sends the Get request. The method will close the 251// http.Response Body if it receives an error. 252func (client ReplicationPoliciesClient) GetSender(req *http.Request) (*http.Response, error) { 253 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 254} 255 256// GetResponder handles the response to the Get request. The method always 257// closes the http.Response Body. 258func (client ReplicationPoliciesClient) GetResponder(resp *http.Response) (result Policy, err error) { 259 err = autorest.Respond( 260 resp, 261 azure.WithErrorUnlessStatusCode(http.StatusOK), 262 autorest.ByUnmarshallingJSON(&result), 263 autorest.ByClosing()) 264 result.Response = autorest.Response{Response: resp} 265 return 266} 267 268// List lists the replication policies for a vault. 269func (client ReplicationPoliciesClient) List(ctx context.Context) (result PolicyCollectionPage, err error) { 270 if tracing.IsEnabled() { 271 ctx = tracing.StartSpan(ctx, fqdn+"/ReplicationPoliciesClient.List") 272 defer func() { 273 sc := -1 274 if result.pc.Response.Response != nil { 275 sc = result.pc.Response.Response.StatusCode 276 } 277 tracing.EndSpan(ctx, sc, err) 278 }() 279 } 280 result.fn = client.listNextResults 281 req, err := client.ListPreparer(ctx) 282 if err != nil { 283 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "List", nil, "Failure preparing request") 284 return 285 } 286 287 resp, err := client.ListSender(req) 288 if err != nil { 289 result.pc.Response = autorest.Response{Response: resp} 290 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "List", resp, "Failure sending request") 291 return 292 } 293 294 result.pc, err = client.ListResponder(resp) 295 if err != nil { 296 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "List", resp, "Failure responding to request") 297 return 298 } 299 if result.pc.hasNextLink() && result.pc.IsEmpty() { 300 err = result.NextWithContext(ctx) 301 return 302 } 303 304 return 305} 306 307// ListPreparer prepares the List request. 308func (client ReplicationPoliciesClient) ListPreparer(ctx context.Context) (*http.Request, error) { 309 pathParameters := map[string]interface{}{ 310 "resourceGroupName": autorest.Encode("path", client.ResourceGroupName), 311 "resourceName": autorest.Encode("path", client.ResourceName), 312 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 313 } 314 315 const APIVersion = "2016-08-10" 316 queryParameters := map[string]interface{}{ 317 "api-version": APIVersion, 318 } 319 320 preparer := autorest.CreatePreparer( 321 autorest.AsGet(), 322 autorest.WithBaseURL(client.BaseURI), 323 autorest.WithPathParameters("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationPolicies", pathParameters), 324 autorest.WithQueryParameters(queryParameters)) 325 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 326} 327 328// ListSender sends the List request. The method will close the 329// http.Response Body if it receives an error. 330func (client ReplicationPoliciesClient) ListSender(req *http.Request) (*http.Response, error) { 331 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 332} 333 334// ListResponder handles the response to the List request. The method always 335// closes the http.Response Body. 336func (client ReplicationPoliciesClient) ListResponder(resp *http.Response) (result PolicyCollection, err error) { 337 err = autorest.Respond( 338 resp, 339 azure.WithErrorUnlessStatusCode(http.StatusOK), 340 autorest.ByUnmarshallingJSON(&result), 341 autorest.ByClosing()) 342 result.Response = autorest.Response{Response: resp} 343 return 344} 345 346// listNextResults retrieves the next set of results, if any. 347func (client ReplicationPoliciesClient) listNextResults(ctx context.Context, lastResults PolicyCollection) (result PolicyCollection, err error) { 348 req, err := lastResults.policyCollectionPreparer(ctx) 349 if err != nil { 350 return result, autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "listNextResults", nil, "Failure preparing next results request") 351 } 352 if req == nil { 353 return 354 } 355 resp, err := client.ListSender(req) 356 if err != nil { 357 result.Response = autorest.Response{Response: resp} 358 return result, autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "listNextResults", resp, "Failure sending next results request") 359 } 360 result, err = client.ListResponder(resp) 361 if err != nil { 362 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "listNextResults", resp, "Failure responding to next results request") 363 } 364 return 365} 366 367// ListComplete enumerates all values, automatically crossing page boundaries as required. 368func (client ReplicationPoliciesClient) ListComplete(ctx context.Context) (result PolicyCollectionIterator, err error) { 369 if tracing.IsEnabled() { 370 ctx = tracing.StartSpan(ctx, fqdn+"/ReplicationPoliciesClient.List") 371 defer func() { 372 sc := -1 373 if result.Response().Response.Response != nil { 374 sc = result.page.Response().Response.Response.StatusCode 375 } 376 tracing.EndSpan(ctx, sc, err) 377 }() 378 } 379 result.page, err = client.List(ctx) 380 return 381} 382 383// Update the operation to update a replication policy. 384// Parameters: 385// policyName - protection profile Id. 386// input - update Protection Profile Input 387func (client ReplicationPoliciesClient) Update(ctx context.Context, policyName string, input UpdatePolicyInput) (result ReplicationPoliciesUpdateFuture, err error) { 388 if tracing.IsEnabled() { 389 ctx = tracing.StartSpan(ctx, fqdn+"/ReplicationPoliciesClient.Update") 390 defer func() { 391 sc := -1 392 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 393 sc = result.FutureAPI.Response().StatusCode 394 } 395 tracing.EndSpan(ctx, sc, err) 396 }() 397 } 398 req, err := client.UpdatePreparer(ctx, policyName, input) 399 if err != nil { 400 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "Update", nil, "Failure preparing request") 401 return 402 } 403 404 result, err = client.UpdateSender(req) 405 if err != nil { 406 err = autorest.NewErrorWithError(err, "siterecovery.ReplicationPoliciesClient", "Update", nil, "Failure sending request") 407 return 408 } 409 410 return 411} 412 413// UpdatePreparer prepares the Update request. 414func (client ReplicationPoliciesClient) UpdatePreparer(ctx context.Context, policyName string, input UpdatePolicyInput) (*http.Request, error) { 415 pathParameters := map[string]interface{}{ 416 "policyName": autorest.Encode("path", policyName), 417 "resourceGroupName": autorest.Encode("path", client.ResourceGroupName), 418 "resourceName": autorest.Encode("path", client.ResourceName), 419 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 420 } 421 422 const APIVersion = "2016-08-10" 423 queryParameters := map[string]interface{}{ 424 "api-version": APIVersion, 425 } 426 427 preparer := autorest.CreatePreparer( 428 autorest.AsContentType("application/json; charset=utf-8"), 429 autorest.AsPatch(), 430 autorest.WithBaseURL(client.BaseURI), 431 autorest.WithPathParameters("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationPolicies/{policyName}", pathParameters), 432 autorest.WithJSON(input), 433 autorest.WithQueryParameters(queryParameters)) 434 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 435} 436 437// UpdateSender sends the Update request. The method will close the 438// http.Response Body if it receives an error. 439func (client ReplicationPoliciesClient) UpdateSender(req *http.Request) (future ReplicationPoliciesUpdateFuture, err error) { 440 var resp *http.Response 441 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 442 if err != nil { 443 return 444 } 445 var azf azure.Future 446 azf, err = azure.NewFutureFromResponse(resp) 447 future.FutureAPI = &azf 448 future.Result = future.result 449 return 450} 451 452// UpdateResponder handles the response to the Update request. The method always 453// closes the http.Response Body. 454func (client ReplicationPoliciesClient) UpdateResponder(resp *http.Response) (result Policy, err error) { 455 err = autorest.Respond( 456 resp, 457 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 458 autorest.ByUnmarshallingJSON(&result), 459 autorest.ByClosing()) 460 result.Response = autorest.Response{Response: resp} 461 return 462} 463