1package compute
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// VirtualMachineExtensionImagesClient is the compute Client
18type VirtualMachineExtensionImagesClient struct {
19	BaseClient
20}
21
22// NewVirtualMachineExtensionImagesClient creates an instance of the VirtualMachineExtensionImagesClient client.
23func NewVirtualMachineExtensionImagesClient(subscriptionID string) VirtualMachineExtensionImagesClient {
24	return NewVirtualMachineExtensionImagesClientWithBaseURI(DefaultBaseURI, subscriptionID)
25}
26
27// NewVirtualMachineExtensionImagesClientWithBaseURI creates an instance of the VirtualMachineExtensionImagesClient
28// client using a custom endpoint.  Use this when interacting with an Azure cloud that uses a non-standard base URI
29// (sovereign clouds, Azure stack).
30func NewVirtualMachineExtensionImagesClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineExtensionImagesClient {
31	return VirtualMachineExtensionImagesClient{NewWithBaseURI(baseURI, subscriptionID)}
32}
33
34// Get gets a virtual machine extension image.
35// Parameters:
36// location - the name of a supported Azure region.
37func (client VirtualMachineExtensionImagesClient) Get(ctx context.Context, location string, publisherName string, typeParameter string, version string) (result VirtualMachineExtensionImage, err error) {
38	if tracing.IsEnabled() {
39		ctx = tracing.StartSpan(ctx, fqdn+"/VirtualMachineExtensionImagesClient.Get")
40		defer func() {
41			sc := -1
42			if result.Response.Response != nil {
43				sc = result.Response.Response.StatusCode
44			}
45			tracing.EndSpan(ctx, sc, err)
46		}()
47	}
48	req, err := client.GetPreparer(ctx, location, publisherName, typeParameter, version)
49	if err != nil {
50		err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "Get", nil, "Failure preparing request")
51		return
52	}
53
54	resp, err := client.GetSender(req)
55	if err != nil {
56		result.Response = autorest.Response{Response: resp}
57		err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "Get", resp, "Failure sending request")
58		return
59	}
60
61	result, err = client.GetResponder(resp)
62	if err != nil {
63		err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "Get", resp, "Failure responding to request")
64		return
65	}
66
67	return
68}
69
70// GetPreparer prepares the Get request.
71func (client VirtualMachineExtensionImagesClient) GetPreparer(ctx context.Context, location string, publisherName string, typeParameter string, version string) (*http.Request, error) {
72	pathParameters := map[string]interface{}{
73		"location":       autorest.Encode("path", location),
74		"publisherName":  autorest.Encode("path", publisherName),
75		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
76		"type":           autorest.Encode("path", typeParameter),
77		"version":        autorest.Encode("path", version),
78	}
79
80	const APIVersion = "2020-06-01"
81	queryParameters := map[string]interface{}{
82		"api-version": APIVersion,
83	}
84
85	preparer := autorest.CreatePreparer(
86		autorest.AsGet(),
87		autorest.WithBaseURL(client.BaseURI),
88		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types/{type}/versions/{version}", pathParameters),
89		autorest.WithQueryParameters(queryParameters))
90	return preparer.Prepare((&http.Request{}).WithContext(ctx))
91}
92
93// GetSender sends the Get request. The method will close the
94// http.Response Body if it receives an error.
95func (client VirtualMachineExtensionImagesClient) GetSender(req *http.Request) (*http.Response, error) {
96	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
97}
98
99// GetResponder handles the response to the Get request. The method always
100// closes the http.Response Body.
101func (client VirtualMachineExtensionImagesClient) GetResponder(resp *http.Response) (result VirtualMachineExtensionImage, err error) {
102	err = autorest.Respond(
103		resp,
104		azure.WithErrorUnlessStatusCode(http.StatusOK),
105		autorest.ByUnmarshallingJSON(&result),
106		autorest.ByClosing())
107	result.Response = autorest.Response{Response: resp}
108	return
109}
110
111// ListTypes gets a list of virtual machine extension image types.
112// Parameters:
113// location - the name of a supported Azure region.
114func (client VirtualMachineExtensionImagesClient) ListTypes(ctx context.Context, location string, publisherName string) (result ListVirtualMachineExtensionImage, err error) {
115	if tracing.IsEnabled() {
116		ctx = tracing.StartSpan(ctx, fqdn+"/VirtualMachineExtensionImagesClient.ListTypes")
117		defer func() {
118			sc := -1
119			if result.Response.Response != nil {
120				sc = result.Response.Response.StatusCode
121			}
122			tracing.EndSpan(ctx, sc, err)
123		}()
124	}
125	req, err := client.ListTypesPreparer(ctx, location, publisherName)
126	if err != nil {
127		err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListTypes", nil, "Failure preparing request")
128		return
129	}
130
131	resp, err := client.ListTypesSender(req)
132	if err != nil {
133		result.Response = autorest.Response{Response: resp}
134		err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListTypes", resp, "Failure sending request")
135		return
136	}
137
138	result, err = client.ListTypesResponder(resp)
139	if err != nil {
140		err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListTypes", resp, "Failure responding to request")
141		return
142	}
143
144	return
145}
146
147// ListTypesPreparer prepares the ListTypes request.
148func (client VirtualMachineExtensionImagesClient) ListTypesPreparer(ctx context.Context, location string, publisherName string) (*http.Request, error) {
149	pathParameters := map[string]interface{}{
150		"location":       autorest.Encode("path", location),
151		"publisherName":  autorest.Encode("path", publisherName),
152		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
153	}
154
155	const APIVersion = "2020-06-01"
156	queryParameters := map[string]interface{}{
157		"api-version": APIVersion,
158	}
159
160	preparer := autorest.CreatePreparer(
161		autorest.AsGet(),
162		autorest.WithBaseURL(client.BaseURI),
163		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types", pathParameters),
164		autorest.WithQueryParameters(queryParameters))
165	return preparer.Prepare((&http.Request{}).WithContext(ctx))
166}
167
168// ListTypesSender sends the ListTypes request. The method will close the
169// http.Response Body if it receives an error.
170func (client VirtualMachineExtensionImagesClient) ListTypesSender(req *http.Request) (*http.Response, error) {
171	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
172}
173
174// ListTypesResponder handles the response to the ListTypes request. The method always
175// closes the http.Response Body.
176func (client VirtualMachineExtensionImagesClient) ListTypesResponder(resp *http.Response) (result ListVirtualMachineExtensionImage, err error) {
177	err = autorest.Respond(
178		resp,
179		azure.WithErrorUnlessStatusCode(http.StatusOK),
180		autorest.ByUnmarshallingJSON(&result.Value),
181		autorest.ByClosing())
182	result.Response = autorest.Response{Response: resp}
183	return
184}
185
186// ListVersions gets a list of virtual machine extension image versions.
187// Parameters:
188// location - the name of a supported Azure region.
189// filter - the filter to apply on the operation.
190func (client VirtualMachineExtensionImagesClient) ListVersions(ctx context.Context, location string, publisherName string, typeParameter string, filter string, top *int32, orderby string) (result ListVirtualMachineExtensionImage, err error) {
191	if tracing.IsEnabled() {
192		ctx = tracing.StartSpan(ctx, fqdn+"/VirtualMachineExtensionImagesClient.ListVersions")
193		defer func() {
194			sc := -1
195			if result.Response.Response != nil {
196				sc = result.Response.Response.StatusCode
197			}
198			tracing.EndSpan(ctx, sc, err)
199		}()
200	}
201	req, err := client.ListVersionsPreparer(ctx, location, publisherName, typeParameter, filter, top, orderby)
202	if err != nil {
203		err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListVersions", nil, "Failure preparing request")
204		return
205	}
206
207	resp, err := client.ListVersionsSender(req)
208	if err != nil {
209		result.Response = autorest.Response{Response: resp}
210		err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListVersions", resp, "Failure sending request")
211		return
212	}
213
214	result, err = client.ListVersionsResponder(resp)
215	if err != nil {
216		err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListVersions", resp, "Failure responding to request")
217		return
218	}
219
220	return
221}
222
223// ListVersionsPreparer prepares the ListVersions request.
224func (client VirtualMachineExtensionImagesClient) ListVersionsPreparer(ctx context.Context, location string, publisherName string, typeParameter string, filter string, top *int32, orderby string) (*http.Request, error) {
225	pathParameters := map[string]interface{}{
226		"location":       autorest.Encode("path", location),
227		"publisherName":  autorest.Encode("path", publisherName),
228		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
229		"type":           autorest.Encode("path", typeParameter),
230	}
231
232	const APIVersion = "2020-06-01"
233	queryParameters := map[string]interface{}{
234		"api-version": APIVersion,
235	}
236	if len(filter) > 0 {
237		queryParameters["$filter"] = autorest.Encode("query", filter)
238	}
239	if top != nil {
240		queryParameters["$top"] = autorest.Encode("query", *top)
241	}
242	if len(orderby) > 0 {
243		queryParameters["$orderby"] = autorest.Encode("query", orderby)
244	}
245
246	preparer := autorest.CreatePreparer(
247		autorest.AsGet(),
248		autorest.WithBaseURL(client.BaseURI),
249		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types/{type}/versions", pathParameters),
250		autorest.WithQueryParameters(queryParameters))
251	return preparer.Prepare((&http.Request{}).WithContext(ctx))
252}
253
254// ListVersionsSender sends the ListVersions request. The method will close the
255// http.Response Body if it receives an error.
256func (client VirtualMachineExtensionImagesClient) ListVersionsSender(req *http.Request) (*http.Response, error) {
257	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
258}
259
260// ListVersionsResponder handles the response to the ListVersions request. The method always
261// closes the http.Response Body.
262func (client VirtualMachineExtensionImagesClient) ListVersionsResponder(resp *http.Response) (result ListVirtualMachineExtensionImage, err error) {
263	err = autorest.Respond(
264		resp,
265		azure.WithErrorUnlessStatusCode(http.StatusOK),
266		autorest.ByUnmarshallingJSON(&result.Value),
267		autorest.ByClosing())
268	result.Response = autorest.Response{Response: resp}
269	return
270}
271