1package hybridnetwork 2 3// Copyright (c) Microsoft and contributors. All rights reserved. 4// 5// Licensed under the Apache License, Version 2.0 (the "License"); 6// you may not use this file except in compliance with the License. 7// You may obtain a copy of the License at 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// 14// See the License for the specific language governing permissions and 15// limitations under the License. 16// 17// Code generated by Microsoft (R) AutoRest Code Generator. 18// Changes may cause incorrect behavior and will be lost if the code is regenerated. 19 20import ( 21 "context" 22 "github.com/Azure/go-autorest/autorest" 23 "github.com/Azure/go-autorest/autorest/azure" 24 "github.com/Azure/go-autorest/autorest/validation" 25 "github.com/Azure/go-autorest/tracing" 26 "net/http" 27) 28 29// VendorsClient is the client for the Vendors methods of the Hybridnetwork service. 30type VendorsClient struct { 31 BaseClient 32} 33 34// NewVendorsClient creates an instance of the VendorsClient client. 35func NewVendorsClient(subscriptionID string) VendorsClient { 36 return NewVendorsClientWithBaseURI(DefaultBaseURI, subscriptionID) 37} 38 39// NewVendorsClientWithBaseURI creates an instance of the VendorsClient client using a custom endpoint. Use this when 40// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 41func NewVendorsClientWithBaseURI(baseURI string, subscriptionID string) VendorsClient { 42 return VendorsClient{NewWithBaseURI(baseURI, subscriptionID)} 43} 44 45// CreateOrUpdate creates or updates a vendor. 46// Parameters: 47// vendorName - the name of the vendor. 48// parameters - parameters supplied to the create vendor operation. 49func (client VendorsClient) CreateOrUpdate(ctx context.Context, vendorName string, parameters *Vendor) (result VendorsCreateOrUpdateFuture, err error) { 50 if tracing.IsEnabled() { 51 ctx = tracing.StartSpan(ctx, fqdn+"/VendorsClient.CreateOrUpdate") 52 defer func() { 53 sc := -1 54 if result.Response() != nil { 55 sc = result.Response().StatusCode 56 } 57 tracing.EndSpan(ctx, sc, err) 58 }() 59 } 60 if err := validation.Validate([]validation.Validation{ 61 {TargetValue: client.SubscriptionID, 62 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 63 return result, validation.NewError("hybridnetwork.VendorsClient", "CreateOrUpdate", err.Error()) 64 } 65 66 req, err := client.CreateOrUpdatePreparer(ctx, vendorName, parameters) 67 if err != nil { 68 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "CreateOrUpdate", nil, "Failure preparing request") 69 return 70 } 71 72 result, err = client.CreateOrUpdateSender(req) 73 if err != nil { 74 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "CreateOrUpdate", nil, "Failure sending request") 75 return 76 } 77 78 return 79} 80 81// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 82func (client VendorsClient) CreateOrUpdatePreparer(ctx context.Context, vendorName string, parameters *Vendor) (*http.Request, error) { 83 pathParameters := map[string]interface{}{ 84 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 85 "vendorName": autorest.Encode("path", vendorName), 86 } 87 88 const APIVersion = "2020-01-01-preview" 89 queryParameters := map[string]interface{}{ 90 "api-version": APIVersion, 91 } 92 93 preparer := autorest.CreatePreparer( 94 autorest.AsContentType("application/json; charset=utf-8"), 95 autorest.AsPut(), 96 autorest.WithBaseURL(client.BaseURI), 97 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.HybridNetwork/vendors/{vendorName}", pathParameters), 98 autorest.WithQueryParameters(queryParameters)) 99 if parameters != nil { 100 preparer = autorest.DecoratePreparer(preparer, 101 autorest.WithJSON(parameters)) 102 } 103 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 104} 105 106// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 107// http.Response Body if it receives an error. 108func (client VendorsClient) CreateOrUpdateSender(req *http.Request) (future VendorsCreateOrUpdateFuture, err error) { 109 var resp *http.Response 110 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 111 if err != nil { 112 return 113 } 114 var azf azure.Future 115 azf, err = azure.NewFutureFromResponse(resp) 116 future.FutureAPI = &azf 117 future.Result = func(client VendorsClient) (vVar Vendor, err error) { 118 var done bool 119 done, err = future.DoneWithContext(context.Background(), client) 120 if err != nil { 121 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure") 122 return 123 } 124 if !done { 125 err = azure.NewAsyncOpIncompleteError("hybridnetwork.VendorsCreateOrUpdateFuture") 126 return 127 } 128 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 129 if vVar.Response.Response, err = future.GetResult(sender); err == nil && vVar.Response.Response.StatusCode != http.StatusNoContent { 130 vVar, err = client.CreateOrUpdateResponder(vVar.Response.Response) 131 if err != nil { 132 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsCreateOrUpdateFuture", "Result", vVar.Response.Response, "Failure responding to request") 133 } 134 } 135 return 136 } 137 return 138} 139 140// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 141// closes the http.Response Body. 142func (client VendorsClient) CreateOrUpdateResponder(resp *http.Response) (result Vendor, err error) { 143 err = autorest.Respond( 144 resp, 145 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), 146 autorest.ByUnmarshallingJSON(&result), 147 autorest.ByClosing()) 148 result.Response = autorest.Response{Response: resp} 149 return 150} 151 152// Delete deletes the specified vendor. 153// Parameters: 154// vendorName - the name of the vendor. 155func (client VendorsClient) Delete(ctx context.Context, vendorName string) (result VendorsDeleteFuture, err error) { 156 if tracing.IsEnabled() { 157 ctx = tracing.StartSpan(ctx, fqdn+"/VendorsClient.Delete") 158 defer func() { 159 sc := -1 160 if result.Response() != nil { 161 sc = result.Response().StatusCode 162 } 163 tracing.EndSpan(ctx, sc, err) 164 }() 165 } 166 if err := validation.Validate([]validation.Validation{ 167 {TargetValue: client.SubscriptionID, 168 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 169 return result, validation.NewError("hybridnetwork.VendorsClient", "Delete", err.Error()) 170 } 171 172 req, err := client.DeletePreparer(ctx, vendorName) 173 if err != nil { 174 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "Delete", nil, "Failure preparing request") 175 return 176 } 177 178 result, err = client.DeleteSender(req) 179 if err != nil { 180 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "Delete", nil, "Failure sending request") 181 return 182 } 183 184 return 185} 186 187// DeletePreparer prepares the Delete request. 188func (client VendorsClient) DeletePreparer(ctx context.Context, vendorName string) (*http.Request, error) { 189 pathParameters := map[string]interface{}{ 190 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 191 "vendorName": autorest.Encode("path", vendorName), 192 } 193 194 const APIVersion = "2020-01-01-preview" 195 queryParameters := map[string]interface{}{ 196 "api-version": APIVersion, 197 } 198 199 preparer := autorest.CreatePreparer( 200 autorest.AsDelete(), 201 autorest.WithBaseURL(client.BaseURI), 202 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.HybridNetwork/vendors/{vendorName}", pathParameters), 203 autorest.WithQueryParameters(queryParameters)) 204 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 205} 206 207// DeleteSender sends the Delete request. The method will close the 208// http.Response Body if it receives an error. 209func (client VendorsClient) DeleteSender(req *http.Request) (future VendorsDeleteFuture, err error) { 210 var resp *http.Response 211 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 212 if err != nil { 213 return 214 } 215 var azf azure.Future 216 azf, err = azure.NewFutureFromResponse(resp) 217 future.FutureAPI = &azf 218 future.Result = func(client VendorsClient) (ar autorest.Response, err error) { 219 var done bool 220 done, err = future.DoneWithContext(context.Background(), client) 221 if err != nil { 222 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsDeleteFuture", "Result", future.Response(), "Polling failure") 223 return 224 } 225 if !done { 226 err = azure.NewAsyncOpIncompleteError("hybridnetwork.VendorsDeleteFuture") 227 return 228 } 229 ar.Response = future.Response() 230 return 231 } 232 return 233} 234 235// DeleteResponder handles the response to the Delete request. The method always 236// closes the http.Response Body. 237func (client VendorsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 238 err = autorest.Respond( 239 resp, 240 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), 241 autorest.ByClosing()) 242 result.Response = resp 243 return 244} 245 246// Get gets information about the specified vendor. 247// Parameters: 248// vendorName - the name of the vendor. 249func (client VendorsClient) Get(ctx context.Context, vendorName string) (result Vendor, err error) { 250 if tracing.IsEnabled() { 251 ctx = tracing.StartSpan(ctx, fqdn+"/VendorsClient.Get") 252 defer func() { 253 sc := -1 254 if result.Response.Response != nil { 255 sc = result.Response.Response.StatusCode 256 } 257 tracing.EndSpan(ctx, sc, err) 258 }() 259 } 260 if err := validation.Validate([]validation.Validation{ 261 {TargetValue: client.SubscriptionID, 262 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 263 return result, validation.NewError("hybridnetwork.VendorsClient", "Get", err.Error()) 264 } 265 266 req, err := client.GetPreparer(ctx, vendorName) 267 if err != nil { 268 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "Get", nil, "Failure preparing request") 269 return 270 } 271 272 resp, err := client.GetSender(req) 273 if err != nil { 274 result.Response = autorest.Response{Response: resp} 275 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "Get", resp, "Failure sending request") 276 return 277 } 278 279 result, err = client.GetResponder(resp) 280 if err != nil { 281 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "Get", resp, "Failure responding to request") 282 return 283 } 284 285 return 286} 287 288// GetPreparer prepares the Get request. 289func (client VendorsClient) GetPreparer(ctx context.Context, vendorName string) (*http.Request, error) { 290 pathParameters := map[string]interface{}{ 291 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 292 "vendorName": autorest.Encode("path", vendorName), 293 } 294 295 const APIVersion = "2020-01-01-preview" 296 queryParameters := map[string]interface{}{ 297 "api-version": APIVersion, 298 } 299 300 preparer := autorest.CreatePreparer( 301 autorest.AsGet(), 302 autorest.WithBaseURL(client.BaseURI), 303 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.HybridNetwork/vendors/{vendorName}", pathParameters), 304 autorest.WithQueryParameters(queryParameters)) 305 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 306} 307 308// GetSender sends the Get request. The method will close the 309// http.Response Body if it receives an error. 310func (client VendorsClient) GetSender(req *http.Request) (*http.Response, error) { 311 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 312} 313 314// GetResponder handles the response to the Get request. The method always 315// closes the http.Response Body. 316func (client VendorsClient) GetResponder(resp *http.Response) (result Vendor, err error) { 317 err = autorest.Respond( 318 resp, 319 azure.WithErrorUnlessStatusCode(http.StatusOK), 320 autorest.ByUnmarshallingJSON(&result), 321 autorest.ByClosing()) 322 result.Response = autorest.Response{Response: resp} 323 return 324} 325 326// ListBySubscription lists all the vendors in a subscription. 327func (client VendorsClient) ListBySubscription(ctx context.Context) (result VendorListResultPage, err error) { 328 if tracing.IsEnabled() { 329 ctx = tracing.StartSpan(ctx, fqdn+"/VendorsClient.ListBySubscription") 330 defer func() { 331 sc := -1 332 if result.vlr.Response.Response != nil { 333 sc = result.vlr.Response.Response.StatusCode 334 } 335 tracing.EndSpan(ctx, sc, err) 336 }() 337 } 338 if err := validation.Validate([]validation.Validation{ 339 {TargetValue: client.SubscriptionID, 340 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 341 return result, validation.NewError("hybridnetwork.VendorsClient", "ListBySubscription", err.Error()) 342 } 343 344 result.fn = client.listBySubscriptionNextResults 345 req, err := client.ListBySubscriptionPreparer(ctx) 346 if err != nil { 347 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "ListBySubscription", nil, "Failure preparing request") 348 return 349 } 350 351 resp, err := client.ListBySubscriptionSender(req) 352 if err != nil { 353 result.vlr.Response = autorest.Response{Response: resp} 354 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "ListBySubscription", resp, "Failure sending request") 355 return 356 } 357 358 result.vlr, err = client.ListBySubscriptionResponder(resp) 359 if err != nil { 360 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "ListBySubscription", resp, "Failure responding to request") 361 return 362 } 363 if result.vlr.hasNextLink() && result.vlr.IsEmpty() { 364 err = result.NextWithContext(ctx) 365 return 366 } 367 368 return 369} 370 371// ListBySubscriptionPreparer prepares the ListBySubscription request. 372func (client VendorsClient) ListBySubscriptionPreparer(ctx context.Context) (*http.Request, error) { 373 pathParameters := map[string]interface{}{ 374 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 375 } 376 377 const APIVersion = "2020-01-01-preview" 378 queryParameters := map[string]interface{}{ 379 "api-version": APIVersion, 380 } 381 382 preparer := autorest.CreatePreparer( 383 autorest.AsGet(), 384 autorest.WithBaseURL(client.BaseURI), 385 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.HybridNetwork/vendors", pathParameters), 386 autorest.WithQueryParameters(queryParameters)) 387 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 388} 389 390// ListBySubscriptionSender sends the ListBySubscription request. The method will close the 391// http.Response Body if it receives an error. 392func (client VendorsClient) ListBySubscriptionSender(req *http.Request) (*http.Response, error) { 393 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 394} 395 396// ListBySubscriptionResponder handles the response to the ListBySubscription request. The method always 397// closes the http.Response Body. 398func (client VendorsClient) ListBySubscriptionResponder(resp *http.Response) (result VendorListResult, err error) { 399 err = autorest.Respond( 400 resp, 401 azure.WithErrorUnlessStatusCode(http.StatusOK), 402 autorest.ByUnmarshallingJSON(&result), 403 autorest.ByClosing()) 404 result.Response = autorest.Response{Response: resp} 405 return 406} 407 408// listBySubscriptionNextResults retrieves the next set of results, if any. 409func (client VendorsClient) listBySubscriptionNextResults(ctx context.Context, lastResults VendorListResult) (result VendorListResult, err error) { 410 req, err := lastResults.vendorListResultPreparer(ctx) 411 if err != nil { 412 return result, autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "listBySubscriptionNextResults", nil, "Failure preparing next results request") 413 } 414 if req == nil { 415 return 416 } 417 resp, err := client.ListBySubscriptionSender(req) 418 if err != nil { 419 result.Response = autorest.Response{Response: resp} 420 return result, autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "listBySubscriptionNextResults", resp, "Failure sending next results request") 421 } 422 result, err = client.ListBySubscriptionResponder(resp) 423 if err != nil { 424 err = autorest.NewErrorWithError(err, "hybridnetwork.VendorsClient", "listBySubscriptionNextResults", resp, "Failure responding to next results request") 425 } 426 return 427} 428 429// ListBySubscriptionComplete enumerates all values, automatically crossing page boundaries as required. 430func (client VendorsClient) ListBySubscriptionComplete(ctx context.Context) (result VendorListResultIterator, err error) { 431 if tracing.IsEnabled() { 432 ctx = tracing.StartSpan(ctx, fqdn+"/VendorsClient.ListBySubscription") 433 defer func() { 434 sc := -1 435 if result.Response().Response.Response != nil { 436 sc = result.page.Response().Response.Response.StatusCode 437 } 438 tracing.EndSpan(ctx, sc, err) 439 }() 440 } 441 result.page, err = client.ListBySubscription(ctx) 442 return 443} 444