1// +build go1.13 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// Code generated by Microsoft (R) AutoRest Code Generator. 6// Changes may cause incorrect behavior and will be lost if the code is regenerated. 7 8package armcompute 9 10import ( 11 "context" 12 "errors" 13 "fmt" 14 "github.com/Azure/azure-sdk-for-go/sdk/armcore" 15 "github.com/Azure/azure-sdk-for-go/sdk/azcore" 16 "net/http" 17 "net/url" 18 "strconv" 19 "strings" 20) 21 22// VirtualMachineImagesEdgeZoneClient contains the methods for the VirtualMachineImagesEdgeZone group. 23// Don't use this type directly, use NewVirtualMachineImagesEdgeZoneClient() instead. 24type VirtualMachineImagesEdgeZoneClient struct { 25 con *armcore.Connection 26 subscriptionID string 27} 28 29// NewVirtualMachineImagesEdgeZoneClient creates a new instance of VirtualMachineImagesEdgeZoneClient with the specified values. 30func NewVirtualMachineImagesEdgeZoneClient(con *armcore.Connection, subscriptionID string) *VirtualMachineImagesEdgeZoneClient { 31 return &VirtualMachineImagesEdgeZoneClient{con: con, subscriptionID: subscriptionID} 32} 33 34// Get - Gets a virtual machine image in an edge zone. 35// If the operation fails it returns the *CloudError error type. 36func (client *VirtualMachineImagesEdgeZoneClient) Get(ctx context.Context, location string, edgeZone string, publisherName string, offer string, skus string, version string, options *VirtualMachineImagesEdgeZoneGetOptions) (VirtualMachineImageResponse, error) { 37 req, err := client.getCreateRequest(ctx, location, edgeZone, publisherName, offer, skus, version, options) 38 if err != nil { 39 return VirtualMachineImageResponse{}, err 40 } 41 resp, err := client.con.Pipeline().Do(req) 42 if err != nil { 43 return VirtualMachineImageResponse{}, err 44 } 45 if !resp.HasStatusCode(http.StatusOK) { 46 return VirtualMachineImageResponse{}, client.getHandleError(resp) 47 } 48 return client.getHandleResponse(resp) 49} 50 51// getCreateRequest creates the Get request. 52func (client *VirtualMachineImagesEdgeZoneClient) getCreateRequest(ctx context.Context, location string, edgeZone string, publisherName string, offer string, skus string, version string, options *VirtualMachineImagesEdgeZoneGetOptions) (*azcore.Request, error) { 53 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/edgeZones/{edgeZone}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions/{version}" 54 if location == "" { 55 return nil, errors.New("parameter location cannot be empty") 56 } 57 urlPath = strings.ReplaceAll(urlPath, "{location}", url.PathEscape(location)) 58 if edgeZone == "" { 59 return nil, errors.New("parameter edgeZone cannot be empty") 60 } 61 urlPath = strings.ReplaceAll(urlPath, "{edgeZone}", url.PathEscape(edgeZone)) 62 if publisherName == "" { 63 return nil, errors.New("parameter publisherName cannot be empty") 64 } 65 urlPath = strings.ReplaceAll(urlPath, "{publisherName}", url.PathEscape(publisherName)) 66 if offer == "" { 67 return nil, errors.New("parameter offer cannot be empty") 68 } 69 urlPath = strings.ReplaceAll(urlPath, "{offer}", url.PathEscape(offer)) 70 if skus == "" { 71 return nil, errors.New("parameter skus cannot be empty") 72 } 73 urlPath = strings.ReplaceAll(urlPath, "{skus}", url.PathEscape(skus)) 74 if version == "" { 75 return nil, errors.New("parameter version cannot be empty") 76 } 77 urlPath = strings.ReplaceAll(urlPath, "{version}", url.PathEscape(version)) 78 if client.subscriptionID == "" { 79 return nil, errors.New("parameter client.subscriptionID cannot be empty") 80 } 81 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 82 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 83 if err != nil { 84 return nil, err 85 } 86 req.Telemetry(telemetryInfo) 87 reqQP := req.URL.Query() 88 reqQP.Set("api-version", "2021-03-01") 89 req.URL.RawQuery = reqQP.Encode() 90 req.Header.Set("Accept", "application/json") 91 return req, nil 92} 93 94// getHandleResponse handles the Get response. 95func (client *VirtualMachineImagesEdgeZoneClient) getHandleResponse(resp *azcore.Response) (VirtualMachineImageResponse, error) { 96 var val *VirtualMachineImage 97 if err := resp.UnmarshalAsJSON(&val); err != nil { 98 return VirtualMachineImageResponse{}, err 99 } 100 return VirtualMachineImageResponse{RawResponse: resp.Response, VirtualMachineImage: val}, nil 101} 102 103// getHandleError handles the Get error response. 104func (client *VirtualMachineImagesEdgeZoneClient) getHandleError(resp *azcore.Response) error { 105 body, err := resp.Payload() 106 if err != nil { 107 return azcore.NewResponseError(err, resp.Response) 108 } 109 errType := CloudError{raw: string(body)} 110 if err := resp.UnmarshalAsJSON(&errType); err != nil { 111 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 112 } 113 return azcore.NewResponseError(&errType, resp.Response) 114} 115 116// List - Gets a list of all virtual machine image versions for the specified location, edge zone, publisher, offer, and SKU. 117// If the operation fails it returns the *CloudError error type. 118func (client *VirtualMachineImagesEdgeZoneClient) List(ctx context.Context, location string, edgeZone string, publisherName string, offer string, skus string, options *VirtualMachineImagesEdgeZoneListOptions) (VirtualMachineImageResourceArrayResponse, error) { 119 req, err := client.listCreateRequest(ctx, location, edgeZone, publisherName, offer, skus, options) 120 if err != nil { 121 return VirtualMachineImageResourceArrayResponse{}, err 122 } 123 resp, err := client.con.Pipeline().Do(req) 124 if err != nil { 125 return VirtualMachineImageResourceArrayResponse{}, err 126 } 127 if !resp.HasStatusCode(http.StatusOK) { 128 return VirtualMachineImageResourceArrayResponse{}, client.listHandleError(resp) 129 } 130 return client.listHandleResponse(resp) 131} 132 133// listCreateRequest creates the List request. 134func (client *VirtualMachineImagesEdgeZoneClient) listCreateRequest(ctx context.Context, location string, edgeZone string, publisherName string, offer string, skus string, options *VirtualMachineImagesEdgeZoneListOptions) (*azcore.Request, error) { 135 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/edgeZones/{edgeZone}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions" 136 if location == "" { 137 return nil, errors.New("parameter location cannot be empty") 138 } 139 urlPath = strings.ReplaceAll(urlPath, "{location}", url.PathEscape(location)) 140 if edgeZone == "" { 141 return nil, errors.New("parameter edgeZone cannot be empty") 142 } 143 urlPath = strings.ReplaceAll(urlPath, "{edgeZone}", url.PathEscape(edgeZone)) 144 if publisherName == "" { 145 return nil, errors.New("parameter publisherName cannot be empty") 146 } 147 urlPath = strings.ReplaceAll(urlPath, "{publisherName}", url.PathEscape(publisherName)) 148 if offer == "" { 149 return nil, errors.New("parameter offer cannot be empty") 150 } 151 urlPath = strings.ReplaceAll(urlPath, "{offer}", url.PathEscape(offer)) 152 if skus == "" { 153 return nil, errors.New("parameter skus cannot be empty") 154 } 155 urlPath = strings.ReplaceAll(urlPath, "{skus}", url.PathEscape(skus)) 156 if client.subscriptionID == "" { 157 return nil, errors.New("parameter client.subscriptionID cannot be empty") 158 } 159 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 160 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 161 if err != nil { 162 return nil, err 163 } 164 req.Telemetry(telemetryInfo) 165 reqQP := req.URL.Query() 166 if options != nil && options.Expand != nil { 167 reqQP.Set("$expand", *options.Expand) 168 } 169 if options != nil && options.Top != nil { 170 reqQP.Set("$top", strconv.FormatInt(int64(*options.Top), 10)) 171 } 172 if options != nil && options.Orderby != nil { 173 reqQP.Set("$orderby", *options.Orderby) 174 } 175 reqQP.Set("api-version", "2021-03-01") 176 req.URL.RawQuery = reqQP.Encode() 177 req.Header.Set("Accept", "application/json") 178 return req, nil 179} 180 181// listHandleResponse handles the List response. 182func (client *VirtualMachineImagesEdgeZoneClient) listHandleResponse(resp *azcore.Response) (VirtualMachineImageResourceArrayResponse, error) { 183 var val []*VirtualMachineImageResource 184 if err := resp.UnmarshalAsJSON(&val); err != nil { 185 return VirtualMachineImageResourceArrayResponse{}, err 186 } 187 return VirtualMachineImageResourceArrayResponse{RawResponse: resp.Response, VirtualMachineImageResourceArray: val}, nil 188} 189 190// listHandleError handles the List error response. 191func (client *VirtualMachineImagesEdgeZoneClient) listHandleError(resp *azcore.Response) error { 192 body, err := resp.Payload() 193 if err != nil { 194 return azcore.NewResponseError(err, resp.Response) 195 } 196 errType := CloudError{raw: string(body)} 197 if err := resp.UnmarshalAsJSON(&errType); err != nil { 198 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 199 } 200 return azcore.NewResponseError(&errType, resp.Response) 201} 202 203// ListOffers - Gets a list of virtual machine image offers for the specified location, edge zone and publisher. 204// If the operation fails it returns the *CloudError error type. 205func (client *VirtualMachineImagesEdgeZoneClient) ListOffers(ctx context.Context, location string, edgeZone string, publisherName string, options *VirtualMachineImagesEdgeZoneListOffersOptions) (VirtualMachineImageResourceArrayResponse, error) { 206 req, err := client.listOffersCreateRequest(ctx, location, edgeZone, publisherName, options) 207 if err != nil { 208 return VirtualMachineImageResourceArrayResponse{}, err 209 } 210 resp, err := client.con.Pipeline().Do(req) 211 if err != nil { 212 return VirtualMachineImageResourceArrayResponse{}, err 213 } 214 if !resp.HasStatusCode(http.StatusOK) { 215 return VirtualMachineImageResourceArrayResponse{}, client.listOffersHandleError(resp) 216 } 217 return client.listOffersHandleResponse(resp) 218} 219 220// listOffersCreateRequest creates the ListOffers request. 221func (client *VirtualMachineImagesEdgeZoneClient) listOffersCreateRequest(ctx context.Context, location string, edgeZone string, publisherName string, options *VirtualMachineImagesEdgeZoneListOffersOptions) (*azcore.Request, error) { 222 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/edgeZones/{edgeZone}/publishers/{publisherName}/artifacttypes/vmimage/offers" 223 if location == "" { 224 return nil, errors.New("parameter location cannot be empty") 225 } 226 urlPath = strings.ReplaceAll(urlPath, "{location}", url.PathEscape(location)) 227 if edgeZone == "" { 228 return nil, errors.New("parameter edgeZone cannot be empty") 229 } 230 urlPath = strings.ReplaceAll(urlPath, "{edgeZone}", url.PathEscape(edgeZone)) 231 if publisherName == "" { 232 return nil, errors.New("parameter publisherName cannot be empty") 233 } 234 urlPath = strings.ReplaceAll(urlPath, "{publisherName}", url.PathEscape(publisherName)) 235 if client.subscriptionID == "" { 236 return nil, errors.New("parameter client.subscriptionID cannot be empty") 237 } 238 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 239 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 240 if err != nil { 241 return nil, err 242 } 243 req.Telemetry(telemetryInfo) 244 reqQP := req.URL.Query() 245 reqQP.Set("api-version", "2021-03-01") 246 req.URL.RawQuery = reqQP.Encode() 247 req.Header.Set("Accept", "application/json") 248 return req, nil 249} 250 251// listOffersHandleResponse handles the ListOffers response. 252func (client *VirtualMachineImagesEdgeZoneClient) listOffersHandleResponse(resp *azcore.Response) (VirtualMachineImageResourceArrayResponse, error) { 253 var val []*VirtualMachineImageResource 254 if err := resp.UnmarshalAsJSON(&val); err != nil { 255 return VirtualMachineImageResourceArrayResponse{}, err 256 } 257 return VirtualMachineImageResourceArrayResponse{RawResponse: resp.Response, VirtualMachineImageResourceArray: val}, nil 258} 259 260// listOffersHandleError handles the ListOffers error response. 261func (client *VirtualMachineImagesEdgeZoneClient) listOffersHandleError(resp *azcore.Response) error { 262 body, err := resp.Payload() 263 if err != nil { 264 return azcore.NewResponseError(err, resp.Response) 265 } 266 errType := CloudError{raw: string(body)} 267 if err := resp.UnmarshalAsJSON(&errType); err != nil { 268 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 269 } 270 return azcore.NewResponseError(&errType, resp.Response) 271} 272 273// ListPublishers - Gets a list of virtual machine image publishers for the specified Azure location and edge zone. 274// If the operation fails it returns the *CloudError error type. 275func (client *VirtualMachineImagesEdgeZoneClient) ListPublishers(ctx context.Context, location string, edgeZone string, options *VirtualMachineImagesEdgeZoneListPublishersOptions) (VirtualMachineImageResourceArrayResponse, error) { 276 req, err := client.listPublishersCreateRequest(ctx, location, edgeZone, options) 277 if err != nil { 278 return VirtualMachineImageResourceArrayResponse{}, err 279 } 280 resp, err := client.con.Pipeline().Do(req) 281 if err != nil { 282 return VirtualMachineImageResourceArrayResponse{}, err 283 } 284 if !resp.HasStatusCode(http.StatusOK) { 285 return VirtualMachineImageResourceArrayResponse{}, client.listPublishersHandleError(resp) 286 } 287 return client.listPublishersHandleResponse(resp) 288} 289 290// listPublishersCreateRequest creates the ListPublishers request. 291func (client *VirtualMachineImagesEdgeZoneClient) listPublishersCreateRequest(ctx context.Context, location string, edgeZone string, options *VirtualMachineImagesEdgeZoneListPublishersOptions) (*azcore.Request, error) { 292 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/edgeZones/{edgeZone}/publishers" 293 if location == "" { 294 return nil, errors.New("parameter location cannot be empty") 295 } 296 urlPath = strings.ReplaceAll(urlPath, "{location}", url.PathEscape(location)) 297 if edgeZone == "" { 298 return nil, errors.New("parameter edgeZone cannot be empty") 299 } 300 urlPath = strings.ReplaceAll(urlPath, "{edgeZone}", url.PathEscape(edgeZone)) 301 if client.subscriptionID == "" { 302 return nil, errors.New("parameter client.subscriptionID cannot be empty") 303 } 304 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 305 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 306 if err != nil { 307 return nil, err 308 } 309 req.Telemetry(telemetryInfo) 310 reqQP := req.URL.Query() 311 reqQP.Set("api-version", "2021-03-01") 312 req.URL.RawQuery = reqQP.Encode() 313 req.Header.Set("Accept", "application/json") 314 return req, nil 315} 316 317// listPublishersHandleResponse handles the ListPublishers response. 318func (client *VirtualMachineImagesEdgeZoneClient) listPublishersHandleResponse(resp *azcore.Response) (VirtualMachineImageResourceArrayResponse, error) { 319 var val []*VirtualMachineImageResource 320 if err := resp.UnmarshalAsJSON(&val); err != nil { 321 return VirtualMachineImageResourceArrayResponse{}, err 322 } 323 return VirtualMachineImageResourceArrayResponse{RawResponse: resp.Response, VirtualMachineImageResourceArray: val}, nil 324} 325 326// listPublishersHandleError handles the ListPublishers error response. 327func (client *VirtualMachineImagesEdgeZoneClient) listPublishersHandleError(resp *azcore.Response) error { 328 body, err := resp.Payload() 329 if err != nil { 330 return azcore.NewResponseError(err, resp.Response) 331 } 332 errType := CloudError{raw: string(body)} 333 if err := resp.UnmarshalAsJSON(&errType); err != nil { 334 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 335 } 336 return azcore.NewResponseError(&errType, resp.Response) 337} 338 339// ListSKUs - Gets a list of virtual machine image SKUs for the specified location, edge zone, publisher, and offer. 340// If the operation fails it returns the *CloudError error type. 341func (client *VirtualMachineImagesEdgeZoneClient) ListSKUs(ctx context.Context, location string, edgeZone string, publisherName string, offer string, options *VirtualMachineImagesEdgeZoneListSKUsOptions) (VirtualMachineImageResourceArrayResponse, error) { 342 req, err := client.listSKUsCreateRequest(ctx, location, edgeZone, publisherName, offer, options) 343 if err != nil { 344 return VirtualMachineImageResourceArrayResponse{}, err 345 } 346 resp, err := client.con.Pipeline().Do(req) 347 if err != nil { 348 return VirtualMachineImageResourceArrayResponse{}, err 349 } 350 if !resp.HasStatusCode(http.StatusOK) { 351 return VirtualMachineImageResourceArrayResponse{}, client.listSKUsHandleError(resp) 352 } 353 return client.listSKUsHandleResponse(resp) 354} 355 356// listSKUsCreateRequest creates the ListSKUs request. 357func (client *VirtualMachineImagesEdgeZoneClient) listSKUsCreateRequest(ctx context.Context, location string, edgeZone string, publisherName string, offer string, options *VirtualMachineImagesEdgeZoneListSKUsOptions) (*azcore.Request, error) { 358 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/edgeZones/{edgeZone}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus" 359 if location == "" { 360 return nil, errors.New("parameter location cannot be empty") 361 } 362 urlPath = strings.ReplaceAll(urlPath, "{location}", url.PathEscape(location)) 363 if edgeZone == "" { 364 return nil, errors.New("parameter edgeZone cannot be empty") 365 } 366 urlPath = strings.ReplaceAll(urlPath, "{edgeZone}", url.PathEscape(edgeZone)) 367 if publisherName == "" { 368 return nil, errors.New("parameter publisherName cannot be empty") 369 } 370 urlPath = strings.ReplaceAll(urlPath, "{publisherName}", url.PathEscape(publisherName)) 371 if offer == "" { 372 return nil, errors.New("parameter offer cannot be empty") 373 } 374 urlPath = strings.ReplaceAll(urlPath, "{offer}", url.PathEscape(offer)) 375 if client.subscriptionID == "" { 376 return nil, errors.New("parameter client.subscriptionID cannot be empty") 377 } 378 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 379 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 380 if err != nil { 381 return nil, err 382 } 383 req.Telemetry(telemetryInfo) 384 reqQP := req.URL.Query() 385 reqQP.Set("api-version", "2021-03-01") 386 req.URL.RawQuery = reqQP.Encode() 387 req.Header.Set("Accept", "application/json") 388 return req, nil 389} 390 391// listSKUsHandleResponse handles the ListSKUs response. 392func (client *VirtualMachineImagesEdgeZoneClient) listSKUsHandleResponse(resp *azcore.Response) (VirtualMachineImageResourceArrayResponse, error) { 393 var val []*VirtualMachineImageResource 394 if err := resp.UnmarshalAsJSON(&val); err != nil { 395 return VirtualMachineImageResourceArrayResponse{}, err 396 } 397 return VirtualMachineImageResourceArrayResponse{RawResponse: resp.Response, VirtualMachineImageResourceArray: val}, nil 398} 399 400// listSKUsHandleError handles the ListSKUs error response. 401func (client *VirtualMachineImagesEdgeZoneClient) listSKUsHandleError(resp *azcore.Response) error { 402 body, err := resp.Payload() 403 if err != nil { 404 return azcore.NewResponseError(err, resp.Response) 405 } 406 errType := CloudError{raw: string(body)} 407 if err := resp.UnmarshalAsJSON(&errType); err != nil { 408 return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response) 409 } 410 return azcore.NewResponseError(&errType, resp.Response) 411} 412