1package migrate
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// VCenterClient is the discover your workloads for Azure.
29type VCenterClient struct {
30	BaseClient
31}
32
33// NewVCenterClient creates an instance of the VCenterClient client.
34func NewVCenterClient() VCenterClient {
35	return NewVCenterClientWithBaseURI(DefaultBaseURI)
36}
37
38// NewVCenterClientWithBaseURI creates an instance of the VCenterClient client using a custom endpoint.  Use this when
39// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
40func NewVCenterClientWithBaseURI(baseURI string) VCenterClient {
41	return VCenterClient{NewWithBaseURI(baseURI)}
42}
43
44// DeleteVCenter sends the delete v center request.
45// Parameters:
46// subscriptionID - the ID of the target subscription.
47// resourceGroupName - the name of the resource group. The name is case insensitive.
48// siteName - site name.
49// vcenterName - vCenter ARM name.
50// APIVersion - the API version to use for this operation.
51func (client VCenterClient) DeleteVCenter(ctx context.Context, subscriptionID string, resourceGroupName string, siteName string, vcenterName string, APIVersion string) (result autorest.Response, err error) {
52	if tracing.IsEnabled() {
53		ctx = tracing.StartSpan(ctx, fqdn+"/VCenterClient.DeleteVCenter")
54		defer func() {
55			sc := -1
56			if result.Response != nil {
57				sc = result.Response.StatusCode
58			}
59			tracing.EndSpan(ctx, sc, err)
60		}()
61	}
62	req, err := client.DeleteVCenterPreparer(ctx, subscriptionID, resourceGroupName, siteName, vcenterName, APIVersion)
63	if err != nil {
64		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "DeleteVCenter", nil, "Failure preparing request")
65		return
66	}
67
68	resp, err := client.DeleteVCenterSender(req)
69	if err != nil {
70		result.Response = resp
71		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "DeleteVCenter", resp, "Failure sending request")
72		return
73	}
74
75	result, err = client.DeleteVCenterResponder(resp)
76	if err != nil {
77		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "DeleteVCenter", resp, "Failure responding to request")
78	}
79
80	return
81}
82
83// DeleteVCenterPreparer prepares the DeleteVCenter request.
84func (client VCenterClient) DeleteVCenterPreparer(ctx context.Context, subscriptionID string, resourceGroupName string, siteName string, vcenterName string, APIVersion string) (*http.Request, error) {
85	pathParameters := map[string]interface{}{
86		"resourceGroupName": autorest.Encode("path", resourceGroupName),
87		"siteName":          autorest.Encode("path", siteName),
88		"subscriptionId":    autorest.Encode("path", subscriptionID),
89		"vcenterName":       autorest.Encode("path", vcenterName),
90	}
91
92	queryParameters := map[string]interface{}{
93		"api-version": APIVersion,
94	}
95
96	preparer := autorest.CreatePreparer(
97		autorest.AsDelete(),
98		autorest.WithBaseURL(client.BaseURI),
99		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OffAzure/VMwareSites/{siteName}/vCenters/{vcenterName}", pathParameters),
100		autorest.WithQueryParameters(queryParameters))
101	return preparer.Prepare((&http.Request{}).WithContext(ctx))
102}
103
104// DeleteVCenterSender sends the DeleteVCenter request. The method will close the
105// http.Response Body if it receives an error.
106func (client VCenterClient) DeleteVCenterSender(req *http.Request) (*http.Response, error) {
107	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
108}
109
110// DeleteVCenterResponder handles the response to the DeleteVCenter request. The method always
111// closes the http.Response Body.
112func (client VCenterClient) DeleteVCenterResponder(resp *http.Response) (result autorest.Response, err error) {
113	err = autorest.Respond(
114		resp,
115		client.ByInspecting(),
116		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
117		autorest.ByClosing())
118	result.Response = resp
119	return
120}
121
122// GetAllVCentersInSite sends the get all v centers in site request.
123// Parameters:
124// subscriptionID - the ID of the target subscription.
125// resourceGroupName - the name of the resource group. The name is case insensitive.
126// siteName - site name.
127// APIVersion - the API version to use for this operation.
128func (client VCenterClient) GetAllVCentersInSite(ctx context.Context, subscriptionID string, resourceGroupName string, siteName string, APIVersion string, filter string) (result VCenterCollectionPage, err error) {
129	if tracing.IsEnabled() {
130		ctx = tracing.StartSpan(ctx, fqdn+"/VCenterClient.GetAllVCentersInSite")
131		defer func() {
132			sc := -1
133			if result.vcc.Response.Response != nil {
134				sc = result.vcc.Response.Response.StatusCode
135			}
136			tracing.EndSpan(ctx, sc, err)
137		}()
138	}
139	result.fn = client.getAllVCentersInSiteNextResults
140	req, err := client.GetAllVCentersInSitePreparer(ctx, subscriptionID, resourceGroupName, siteName, APIVersion, filter)
141	if err != nil {
142		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "GetAllVCentersInSite", nil, "Failure preparing request")
143		return
144	}
145
146	resp, err := client.GetAllVCentersInSiteSender(req)
147	if err != nil {
148		result.vcc.Response = autorest.Response{Response: resp}
149		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "GetAllVCentersInSite", resp, "Failure sending request")
150		return
151	}
152
153	result.vcc, err = client.GetAllVCentersInSiteResponder(resp)
154	if err != nil {
155		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "GetAllVCentersInSite", resp, "Failure responding to request")
156	}
157
158	return
159}
160
161// GetAllVCentersInSitePreparer prepares the GetAllVCentersInSite request.
162func (client VCenterClient) GetAllVCentersInSitePreparer(ctx context.Context, subscriptionID string, resourceGroupName string, siteName string, APIVersion string, filter string) (*http.Request, error) {
163	pathParameters := map[string]interface{}{
164		"resourceGroupName": autorest.Encode("path", resourceGroupName),
165		"siteName":          autorest.Encode("path", siteName),
166		"subscriptionId":    autorest.Encode("path", subscriptionID),
167	}
168
169	queryParameters := map[string]interface{}{
170		"api-version": APIVersion,
171	}
172	if len(filter) > 0 {
173		queryParameters["$filter"] = autorest.Encode("query", filter)
174	}
175
176	preparer := autorest.CreatePreparer(
177		autorest.AsGet(),
178		autorest.WithBaseURL(client.BaseURI),
179		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OffAzure/VMwareSites/{siteName}/vCenters", pathParameters),
180		autorest.WithQueryParameters(queryParameters))
181	return preparer.Prepare((&http.Request{}).WithContext(ctx))
182}
183
184// GetAllVCentersInSiteSender sends the GetAllVCentersInSite request. The method will close the
185// http.Response Body if it receives an error.
186func (client VCenterClient) GetAllVCentersInSiteSender(req *http.Request) (*http.Response, error) {
187	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
188}
189
190// GetAllVCentersInSiteResponder handles the response to the GetAllVCentersInSite request. The method always
191// closes the http.Response Body.
192func (client VCenterClient) GetAllVCentersInSiteResponder(resp *http.Response) (result VCenterCollection, err error) {
193	err = autorest.Respond(
194		resp,
195		client.ByInspecting(),
196		azure.WithErrorUnlessStatusCode(http.StatusOK),
197		autorest.ByUnmarshallingJSON(&result),
198		autorest.ByClosing())
199	result.Response = autorest.Response{Response: resp}
200	return
201}
202
203// getAllVCentersInSiteNextResults retrieves the next set of results, if any.
204func (client VCenterClient) getAllVCentersInSiteNextResults(ctx context.Context, lastResults VCenterCollection) (result VCenterCollection, err error) {
205	req, err := lastResults.vCenterCollectionPreparer(ctx)
206	if err != nil {
207		return result, autorest.NewErrorWithError(err, "migrate.VCenterClient", "getAllVCentersInSiteNextResults", nil, "Failure preparing next results request")
208	}
209	if req == nil {
210		return
211	}
212	resp, err := client.GetAllVCentersInSiteSender(req)
213	if err != nil {
214		result.Response = autorest.Response{Response: resp}
215		return result, autorest.NewErrorWithError(err, "migrate.VCenterClient", "getAllVCentersInSiteNextResults", resp, "Failure sending next results request")
216	}
217	result, err = client.GetAllVCentersInSiteResponder(resp)
218	if err != nil {
219		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "getAllVCentersInSiteNextResults", resp, "Failure responding to next results request")
220	}
221	return
222}
223
224// GetAllVCentersInSiteComplete enumerates all values, automatically crossing page boundaries as required.
225func (client VCenterClient) GetAllVCentersInSiteComplete(ctx context.Context, subscriptionID string, resourceGroupName string, siteName string, APIVersion string, filter string) (result VCenterCollectionIterator, err error) {
226	if tracing.IsEnabled() {
227		ctx = tracing.StartSpan(ctx, fqdn+"/VCenterClient.GetAllVCentersInSite")
228		defer func() {
229			sc := -1
230			if result.Response().Response.Response != nil {
231				sc = result.page.Response().Response.Response.StatusCode
232			}
233			tracing.EndSpan(ctx, sc, err)
234		}()
235	}
236	result.page, err = client.GetAllVCentersInSite(ctx, subscriptionID, resourceGroupName, siteName, APIVersion, filter)
237	return
238}
239
240// GetVCenter sends the get v center request.
241// Parameters:
242// subscriptionID - the ID of the target subscription.
243// resourceGroupName - the name of the resource group. The name is case insensitive.
244// siteName - site name.
245// vcenterName - vCenter ARM name.
246// APIVersion - the API version to use for this operation.
247func (client VCenterClient) GetVCenter(ctx context.Context, subscriptionID string, resourceGroupName string, siteName string, vcenterName string, APIVersion string) (result VCenter, err error) {
248	if tracing.IsEnabled() {
249		ctx = tracing.StartSpan(ctx, fqdn+"/VCenterClient.GetVCenter")
250		defer func() {
251			sc := -1
252			if result.Response.Response != nil {
253				sc = result.Response.Response.StatusCode
254			}
255			tracing.EndSpan(ctx, sc, err)
256		}()
257	}
258	req, err := client.GetVCenterPreparer(ctx, subscriptionID, resourceGroupName, siteName, vcenterName, APIVersion)
259	if err != nil {
260		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "GetVCenter", nil, "Failure preparing request")
261		return
262	}
263
264	resp, err := client.GetVCenterSender(req)
265	if err != nil {
266		result.Response = autorest.Response{Response: resp}
267		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "GetVCenter", resp, "Failure sending request")
268		return
269	}
270
271	result, err = client.GetVCenterResponder(resp)
272	if err != nil {
273		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "GetVCenter", resp, "Failure responding to request")
274	}
275
276	return
277}
278
279// GetVCenterPreparer prepares the GetVCenter request.
280func (client VCenterClient) GetVCenterPreparer(ctx context.Context, subscriptionID string, resourceGroupName string, siteName string, vcenterName string, APIVersion string) (*http.Request, error) {
281	pathParameters := map[string]interface{}{
282		"resourceGroupName": autorest.Encode("path", resourceGroupName),
283		"siteName":          autorest.Encode("path", siteName),
284		"subscriptionId":    autorest.Encode("path", subscriptionID),
285		"vcenterName":       autorest.Encode("path", vcenterName),
286	}
287
288	queryParameters := map[string]interface{}{
289		"api-version": APIVersion,
290	}
291
292	preparer := autorest.CreatePreparer(
293		autorest.AsGet(),
294		autorest.WithBaseURL(client.BaseURI),
295		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OffAzure/VMwareSites/{siteName}/vCenters/{vcenterName}", pathParameters),
296		autorest.WithQueryParameters(queryParameters))
297	return preparer.Prepare((&http.Request{}).WithContext(ctx))
298}
299
300// GetVCenterSender sends the GetVCenter request. The method will close the
301// http.Response Body if it receives an error.
302func (client VCenterClient) GetVCenterSender(req *http.Request) (*http.Response, error) {
303	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
304}
305
306// GetVCenterResponder handles the response to the GetVCenter request. The method always
307// closes the http.Response Body.
308func (client VCenterClient) GetVCenterResponder(resp *http.Response) (result VCenter, err error) {
309	err = autorest.Respond(
310		resp,
311		client.ByInspecting(),
312		azure.WithErrorUnlessStatusCode(http.StatusOK),
313		autorest.ByUnmarshallingJSON(&result),
314		autorest.ByClosing())
315	result.Response = autorest.Response{Response: resp}
316	return
317}
318
319// PutVCenter sends the put v center request.
320// Parameters:
321// subscriptionID - the ID of the target subscription.
322// resourceGroupName - the name of the resource group. The name is case insensitive.
323// siteName - site name.
324// vcenterName - vCenter ARM name.
325// body - put vCenter body.
326// APIVersion - the API version to use for this operation.
327func (client VCenterClient) PutVCenter(ctx context.Context, subscriptionID string, resourceGroupName string, siteName string, vcenterName string, body VCenter, APIVersion string) (result autorest.Response, err error) {
328	if tracing.IsEnabled() {
329		ctx = tracing.StartSpan(ctx, fqdn+"/VCenterClient.PutVCenter")
330		defer func() {
331			sc := -1
332			if result.Response != nil {
333				sc = result.Response.StatusCode
334			}
335			tracing.EndSpan(ctx, sc, err)
336		}()
337	}
338	req, err := client.PutVCenterPreparer(ctx, subscriptionID, resourceGroupName, siteName, vcenterName, body, APIVersion)
339	if err != nil {
340		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "PutVCenter", nil, "Failure preparing request")
341		return
342	}
343
344	resp, err := client.PutVCenterSender(req)
345	if err != nil {
346		result.Response = resp
347		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "PutVCenter", resp, "Failure sending request")
348		return
349	}
350
351	result, err = client.PutVCenterResponder(resp)
352	if err != nil {
353		err = autorest.NewErrorWithError(err, "migrate.VCenterClient", "PutVCenter", resp, "Failure responding to request")
354	}
355
356	return
357}
358
359// PutVCenterPreparer prepares the PutVCenter request.
360func (client VCenterClient) PutVCenterPreparer(ctx context.Context, subscriptionID string, resourceGroupName string, siteName string, vcenterName string, body VCenter, APIVersion string) (*http.Request, error) {
361	pathParameters := map[string]interface{}{
362		"resourceGroupName": autorest.Encode("path", resourceGroupName),
363		"siteName":          autorest.Encode("path", siteName),
364		"subscriptionId":    autorest.Encode("path", subscriptionID),
365		"vcenterName":       autorest.Encode("path", vcenterName),
366	}
367
368	queryParameters := map[string]interface{}{
369		"api-version": APIVersion,
370	}
371
372	body.ID = nil
373	body.Type = nil
374	preparer := autorest.CreatePreparer(
375		autorest.AsContentType("application/json; charset=utf-8"),
376		autorest.AsPut(),
377		autorest.WithBaseURL(client.BaseURI),
378		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OffAzure/VMwareSites/{siteName}/vCenters/{vcenterName}", pathParameters),
379		autorest.WithJSON(body),
380		autorest.WithQueryParameters(queryParameters))
381	return preparer.Prepare((&http.Request{}).WithContext(ctx))
382}
383
384// PutVCenterSender sends the PutVCenter request. The method will close the
385// http.Response Body if it receives an error.
386func (client VCenterClient) PutVCenterSender(req *http.Request) (*http.Response, error) {
387	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
388}
389
390// PutVCenterResponder handles the response to the PutVCenter request. The method always
391// closes the http.Response Body.
392func (client VCenterClient) PutVCenterResponder(resp *http.Response) (result autorest.Response, err error) {
393	err = autorest.Respond(
394		resp,
395		client.ByInspecting(),
396		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
397		autorest.ByClosing())
398	result.Response = resp
399	return
400}
401