1package compute
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/tracing"
25	"net/http"
26)
27
28// GalleriesClient is the compute Client
29type GalleriesClient struct {
30	BaseClient
31}
32
33// NewGalleriesClient creates an instance of the GalleriesClient client.
34func NewGalleriesClient(subscriptionID string) GalleriesClient {
35	return NewGalleriesClientWithBaseURI(DefaultBaseURI, subscriptionID)
36}
37
38// NewGalleriesClientWithBaseURI creates an instance of the GalleriesClient client.
39func NewGalleriesClientWithBaseURI(baseURI string, subscriptionID string) GalleriesClient {
40	return GalleriesClient{NewWithBaseURI(baseURI, subscriptionID)}
41}
42
43// CreateOrUpdate create or update a Shared Image Gallery.
44// Parameters:
45// resourceGroupName - the name of the resource group.
46// galleryName - the name of the Shared Image Gallery. The allowed characters are alphabets and numbers with
47// dots and periods allowed in the middle. The maximum length is 80 characters.
48// gallery - parameters supplied to the create or update Shared Image Gallery operation.
49func (client GalleriesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, galleryName string, gallery Gallery) (result GalleriesCreateOrUpdateFuture, err error) {
50	if tracing.IsEnabled() {
51		ctx = tracing.StartSpan(ctx, fqdn+"/GalleriesClient.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	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, galleryName, gallery)
61	if err != nil {
62		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "CreateOrUpdate", nil, "Failure preparing request")
63		return
64	}
65
66	result, err = client.CreateOrUpdateSender(req)
67	if err != nil {
68		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "CreateOrUpdate", result.Response(), "Failure sending request")
69		return
70	}
71
72	return
73}
74
75// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
76func (client GalleriesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, galleryName string, gallery Gallery) (*http.Request, error) {
77	pathParameters := map[string]interface{}{
78		"galleryName":       autorest.Encode("path", galleryName),
79		"resourceGroupName": autorest.Encode("path", resourceGroupName),
80		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
81	}
82
83	const APIVersion = "2018-06-01"
84	queryParameters := map[string]interface{}{
85		"api-version": APIVersion,
86	}
87
88	preparer := autorest.CreatePreparer(
89		autorest.AsContentType("application/json; charset=utf-8"),
90		autorest.AsPut(),
91		autorest.WithBaseURL(client.BaseURI),
92		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}", pathParameters),
93		autorest.WithJSON(gallery),
94		autorest.WithQueryParameters(queryParameters))
95	return preparer.Prepare((&http.Request{}).WithContext(ctx))
96}
97
98// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
99// http.Response Body if it receives an error.
100func (client GalleriesClient) CreateOrUpdateSender(req *http.Request) (future GalleriesCreateOrUpdateFuture, err error) {
101	var resp *http.Response
102	resp, err = autorest.SendWithSender(client, req,
103		azure.DoRetryWithRegistration(client.Client))
104	if err != nil {
105		return
106	}
107	future.Future, err = azure.NewFutureFromResponse(resp)
108	return
109}
110
111// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
112// closes the http.Response Body.
113func (client GalleriesClient) CreateOrUpdateResponder(resp *http.Response) (result Gallery, err error) {
114	err = autorest.Respond(
115		resp,
116		client.ByInspecting(),
117		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted),
118		autorest.ByUnmarshallingJSON(&result),
119		autorest.ByClosing())
120	result.Response = autorest.Response{Response: resp}
121	return
122}
123
124// Delete delete a Shared Image Gallery.
125// Parameters:
126// resourceGroupName - the name of the resource group.
127// galleryName - the name of the Shared Image Gallery to be deleted.
128func (client GalleriesClient) Delete(ctx context.Context, resourceGroupName string, galleryName string) (result GalleriesDeleteFuture, err error) {
129	if tracing.IsEnabled() {
130		ctx = tracing.StartSpan(ctx, fqdn+"/GalleriesClient.Delete")
131		defer func() {
132			sc := -1
133			if result.Response() != nil {
134				sc = result.Response().StatusCode
135			}
136			tracing.EndSpan(ctx, sc, err)
137		}()
138	}
139	req, err := client.DeletePreparer(ctx, resourceGroupName, galleryName)
140	if err != nil {
141		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "Delete", nil, "Failure preparing request")
142		return
143	}
144
145	result, err = client.DeleteSender(req)
146	if err != nil {
147		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "Delete", result.Response(), "Failure sending request")
148		return
149	}
150
151	return
152}
153
154// DeletePreparer prepares the Delete request.
155func (client GalleriesClient) DeletePreparer(ctx context.Context, resourceGroupName string, galleryName string) (*http.Request, error) {
156	pathParameters := map[string]interface{}{
157		"galleryName":       autorest.Encode("path", galleryName),
158		"resourceGroupName": autorest.Encode("path", resourceGroupName),
159		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
160	}
161
162	const APIVersion = "2018-06-01"
163	queryParameters := map[string]interface{}{
164		"api-version": APIVersion,
165	}
166
167	preparer := autorest.CreatePreparer(
168		autorest.AsDelete(),
169		autorest.WithBaseURL(client.BaseURI),
170		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}", pathParameters),
171		autorest.WithQueryParameters(queryParameters))
172	return preparer.Prepare((&http.Request{}).WithContext(ctx))
173}
174
175// DeleteSender sends the Delete request. The method will close the
176// http.Response Body if it receives an error.
177func (client GalleriesClient) DeleteSender(req *http.Request) (future GalleriesDeleteFuture, err error) {
178	var resp *http.Response
179	resp, err = autorest.SendWithSender(client, req,
180		azure.DoRetryWithRegistration(client.Client))
181	if err != nil {
182		return
183	}
184	future.Future, err = azure.NewFutureFromResponse(resp)
185	return
186}
187
188// DeleteResponder handles the response to the Delete request. The method always
189// closes the http.Response Body.
190func (client GalleriesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
191	err = autorest.Respond(
192		resp,
193		client.ByInspecting(),
194		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
195		autorest.ByClosing())
196	result.Response = resp
197	return
198}
199
200// Get retrieves information about a Shared Image Gallery.
201// Parameters:
202// resourceGroupName - the name of the resource group.
203// galleryName - the name of the Shared Image Gallery.
204func (client GalleriesClient) Get(ctx context.Context, resourceGroupName string, galleryName string) (result Gallery, err error) {
205	if tracing.IsEnabled() {
206		ctx = tracing.StartSpan(ctx, fqdn+"/GalleriesClient.Get")
207		defer func() {
208			sc := -1
209			if result.Response.Response != nil {
210				sc = result.Response.Response.StatusCode
211			}
212			tracing.EndSpan(ctx, sc, err)
213		}()
214	}
215	req, err := client.GetPreparer(ctx, resourceGroupName, galleryName)
216	if err != nil {
217		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "Get", nil, "Failure preparing request")
218		return
219	}
220
221	resp, err := client.GetSender(req)
222	if err != nil {
223		result.Response = autorest.Response{Response: resp}
224		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "Get", resp, "Failure sending request")
225		return
226	}
227
228	result, err = client.GetResponder(resp)
229	if err != nil {
230		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "Get", resp, "Failure responding to request")
231	}
232
233	return
234}
235
236// GetPreparer prepares the Get request.
237func (client GalleriesClient) GetPreparer(ctx context.Context, resourceGroupName string, galleryName string) (*http.Request, error) {
238	pathParameters := map[string]interface{}{
239		"galleryName":       autorest.Encode("path", galleryName),
240		"resourceGroupName": autorest.Encode("path", resourceGroupName),
241		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
242	}
243
244	const APIVersion = "2018-06-01"
245	queryParameters := map[string]interface{}{
246		"api-version": APIVersion,
247	}
248
249	preparer := autorest.CreatePreparer(
250		autorest.AsGet(),
251		autorest.WithBaseURL(client.BaseURI),
252		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}", pathParameters),
253		autorest.WithQueryParameters(queryParameters))
254	return preparer.Prepare((&http.Request{}).WithContext(ctx))
255}
256
257// GetSender sends the Get request. The method will close the
258// http.Response Body if it receives an error.
259func (client GalleriesClient) GetSender(req *http.Request) (*http.Response, error) {
260	return autorest.SendWithSender(client, req,
261		azure.DoRetryWithRegistration(client.Client))
262}
263
264// GetResponder handles the response to the Get request. The method always
265// closes the http.Response Body.
266func (client GalleriesClient) GetResponder(resp *http.Response) (result Gallery, err error) {
267	err = autorest.Respond(
268		resp,
269		client.ByInspecting(),
270		azure.WithErrorUnlessStatusCode(http.StatusOK),
271		autorest.ByUnmarshallingJSON(&result),
272		autorest.ByClosing())
273	result.Response = autorest.Response{Response: resp}
274	return
275}
276
277// List list galleries under a subscription.
278func (client GalleriesClient) List(ctx context.Context) (result GalleryListPage, err error) {
279	if tracing.IsEnabled() {
280		ctx = tracing.StartSpan(ctx, fqdn+"/GalleriesClient.List")
281		defer func() {
282			sc := -1
283			if result.gl.Response.Response != nil {
284				sc = result.gl.Response.Response.StatusCode
285			}
286			tracing.EndSpan(ctx, sc, err)
287		}()
288	}
289	result.fn = client.listNextResults
290	req, err := client.ListPreparer(ctx)
291	if err != nil {
292		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "List", nil, "Failure preparing request")
293		return
294	}
295
296	resp, err := client.ListSender(req)
297	if err != nil {
298		result.gl.Response = autorest.Response{Response: resp}
299		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "List", resp, "Failure sending request")
300		return
301	}
302
303	result.gl, err = client.ListResponder(resp)
304	if err != nil {
305		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "List", resp, "Failure responding to request")
306	}
307
308	return
309}
310
311// ListPreparer prepares the List request.
312func (client GalleriesClient) ListPreparer(ctx context.Context) (*http.Request, error) {
313	pathParameters := map[string]interface{}{
314		"subscriptionId": autorest.Encode("path", client.SubscriptionID),
315	}
316
317	const APIVersion = "2018-06-01"
318	queryParameters := map[string]interface{}{
319		"api-version": APIVersion,
320	}
321
322	preparer := autorest.CreatePreparer(
323		autorest.AsGet(),
324		autorest.WithBaseURL(client.BaseURI),
325		autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/galleries", pathParameters),
326		autorest.WithQueryParameters(queryParameters))
327	return preparer.Prepare((&http.Request{}).WithContext(ctx))
328}
329
330// ListSender sends the List request. The method will close the
331// http.Response Body if it receives an error.
332func (client GalleriesClient) ListSender(req *http.Request) (*http.Response, error) {
333	return autorest.SendWithSender(client, req,
334		azure.DoRetryWithRegistration(client.Client))
335}
336
337// ListResponder handles the response to the List request. The method always
338// closes the http.Response Body.
339func (client GalleriesClient) ListResponder(resp *http.Response) (result GalleryList, err error) {
340	err = autorest.Respond(
341		resp,
342		client.ByInspecting(),
343		azure.WithErrorUnlessStatusCode(http.StatusOK),
344		autorest.ByUnmarshallingJSON(&result),
345		autorest.ByClosing())
346	result.Response = autorest.Response{Response: resp}
347	return
348}
349
350// listNextResults retrieves the next set of results, if any.
351func (client GalleriesClient) listNextResults(ctx context.Context, lastResults GalleryList) (result GalleryList, err error) {
352	req, err := lastResults.galleryListPreparer(ctx)
353	if err != nil {
354		return result, autorest.NewErrorWithError(err, "compute.GalleriesClient", "listNextResults", nil, "Failure preparing next results request")
355	}
356	if req == nil {
357		return
358	}
359	resp, err := client.ListSender(req)
360	if err != nil {
361		result.Response = autorest.Response{Response: resp}
362		return result, autorest.NewErrorWithError(err, "compute.GalleriesClient", "listNextResults", resp, "Failure sending next results request")
363	}
364	result, err = client.ListResponder(resp)
365	if err != nil {
366		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "listNextResults", resp, "Failure responding to next results request")
367	}
368	return
369}
370
371// ListComplete enumerates all values, automatically crossing page boundaries as required.
372func (client GalleriesClient) ListComplete(ctx context.Context) (result GalleryListIterator, err error) {
373	if tracing.IsEnabled() {
374		ctx = tracing.StartSpan(ctx, fqdn+"/GalleriesClient.List")
375		defer func() {
376			sc := -1
377			if result.Response().Response.Response != nil {
378				sc = result.page.Response().Response.Response.StatusCode
379			}
380			tracing.EndSpan(ctx, sc, err)
381		}()
382	}
383	result.page, err = client.List(ctx)
384	return
385}
386
387// ListByResourceGroup list galleries under a resource group.
388// Parameters:
389// resourceGroupName - the name of the resource group.
390func (client GalleriesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result GalleryListPage, err error) {
391	if tracing.IsEnabled() {
392		ctx = tracing.StartSpan(ctx, fqdn+"/GalleriesClient.ListByResourceGroup")
393		defer func() {
394			sc := -1
395			if result.gl.Response.Response != nil {
396				sc = result.gl.Response.Response.StatusCode
397			}
398			tracing.EndSpan(ctx, sc, err)
399		}()
400	}
401	result.fn = client.listByResourceGroupNextResults
402	req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName)
403	if err != nil {
404		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "ListByResourceGroup", nil, "Failure preparing request")
405		return
406	}
407
408	resp, err := client.ListByResourceGroupSender(req)
409	if err != nil {
410		result.gl.Response = autorest.Response{Response: resp}
411		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "ListByResourceGroup", resp, "Failure sending request")
412		return
413	}
414
415	result.gl, err = client.ListByResourceGroupResponder(resp)
416	if err != nil {
417		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "ListByResourceGroup", resp, "Failure responding to request")
418	}
419
420	return
421}
422
423// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
424func (client GalleriesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
425	pathParameters := map[string]interface{}{
426		"resourceGroupName": autorest.Encode("path", resourceGroupName),
427		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
428	}
429
430	const APIVersion = "2018-06-01"
431	queryParameters := map[string]interface{}{
432		"api-version": APIVersion,
433	}
434
435	preparer := autorest.CreatePreparer(
436		autorest.AsGet(),
437		autorest.WithBaseURL(client.BaseURI),
438		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries", pathParameters),
439		autorest.WithQueryParameters(queryParameters))
440	return preparer.Prepare((&http.Request{}).WithContext(ctx))
441}
442
443// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
444// http.Response Body if it receives an error.
445func (client GalleriesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
446	return autorest.SendWithSender(client, req,
447		azure.DoRetryWithRegistration(client.Client))
448}
449
450// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
451// closes the http.Response Body.
452func (client GalleriesClient) ListByResourceGroupResponder(resp *http.Response) (result GalleryList, err error) {
453	err = autorest.Respond(
454		resp,
455		client.ByInspecting(),
456		azure.WithErrorUnlessStatusCode(http.StatusOK),
457		autorest.ByUnmarshallingJSON(&result),
458		autorest.ByClosing())
459	result.Response = autorest.Response{Response: resp}
460	return
461}
462
463// listByResourceGroupNextResults retrieves the next set of results, if any.
464func (client GalleriesClient) listByResourceGroupNextResults(ctx context.Context, lastResults GalleryList) (result GalleryList, err error) {
465	req, err := lastResults.galleryListPreparer(ctx)
466	if err != nil {
467		return result, autorest.NewErrorWithError(err, "compute.GalleriesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
468	}
469	if req == nil {
470		return
471	}
472	resp, err := client.ListByResourceGroupSender(req)
473	if err != nil {
474		result.Response = autorest.Response{Response: resp}
475		return result, autorest.NewErrorWithError(err, "compute.GalleriesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
476	}
477	result, err = client.ListByResourceGroupResponder(resp)
478	if err != nil {
479		err = autorest.NewErrorWithError(err, "compute.GalleriesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
480	}
481	return
482}
483
484// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
485func (client GalleriesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result GalleryListIterator, err error) {
486	if tracing.IsEnabled() {
487		ctx = tracing.StartSpan(ctx, fqdn+"/GalleriesClient.ListByResourceGroup")
488		defer func() {
489			sc := -1
490			if result.Response().Response.Response != nil {
491				sc = result.page.Response().Response.Response.StatusCode
492			}
493			tracing.EndSpan(ctx, sc, err)
494		}()
495	}
496	result.page, err = client.ListByResourceGroup(ctx, resourceGroupName)
497	return
498}
499