1package managementgroups
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	"net/http"
25)
26
27// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
28// Client is the the Azure Management Groups API enables consolidation of multiple
29// subscriptions/resources into an organizational hierarchy and centrally
30// manage access control, policies, alerting and reporting for those resources.
31type Client struct {
32	BaseClient
33}
34
35// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
36// NewClient creates an instance of the Client client.
37func NewClient(operationResultID string, skiptoken string) Client {
38	return NewClientWithBaseURI(DefaultBaseURI, operationResultID, skiptoken)
39}
40
41// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
42// NewClientWithBaseURI creates an instance of the Client client.
43func NewClientWithBaseURI(baseURI string, operationResultID string, skiptoken string) Client {
44	return Client{NewWithBaseURI(baseURI, operationResultID, skiptoken)}
45}
46
47// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
48// CreateOrUpdate create or update a management group.
49// If a management group is already created and a subsequent create request is issued with different properties, the
50// management group properties will be updated.
51//
52// groupID is management Group ID. createManagementGroupRequest is management group creation parameters.
53// cacheControl is indicates that the request shouldn't utilize any caches.
54func (client Client) CreateOrUpdate(ctx context.Context, groupID string, createManagementGroupRequest CreateManagementGroupRequest, cacheControl string) (result CreateOrUpdateFuture, err error) {
55	req, err := client.CreateOrUpdatePreparer(ctx, groupID, createManagementGroupRequest, cacheControl)
56	if err != nil {
57		err = autorest.NewErrorWithError(err, "managementgroups.Client", "CreateOrUpdate", nil, "Failure preparing request")
58		return
59	}
60
61	result, err = client.CreateOrUpdateSender(req)
62	if err != nil {
63		err = autorest.NewErrorWithError(err, "managementgroups.Client", "CreateOrUpdate", result.Response(), "Failure sending request")
64		return
65	}
66
67	return
68}
69
70// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
71// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
72func (client Client) CreateOrUpdatePreparer(ctx context.Context, groupID string, createManagementGroupRequest CreateManagementGroupRequest, cacheControl string) (*http.Request, error) {
73	pathParameters := map[string]interface{}{
74		"groupId": autorest.Encode("path", groupID),
75	}
76
77	const APIVersion = "2018-01-01-preview"
78	queryParameters := map[string]interface{}{
79		"api-version": APIVersion,
80	}
81
82	preparer := autorest.CreatePreparer(
83		autorest.AsContentType("application/json; charset=utf-8"),
84		autorest.AsPut(),
85		autorest.WithBaseURL(client.BaseURI),
86		autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}", pathParameters),
87		autorest.WithJSON(createManagementGroupRequest),
88		autorest.WithQueryParameters(queryParameters))
89	if len(cacheControl) > 0 {
90		preparer = autorest.DecoratePreparer(preparer,
91			autorest.WithHeader("Cache-Control", autorest.String(cacheControl)))
92	} else {
93		preparer = autorest.DecoratePreparer(preparer,
94			autorest.WithHeader("Cache-Control", autorest.String("no-cache")))
95	}
96	return preparer.Prepare((&http.Request{}).WithContext(ctx))
97}
98
99// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
100// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
101// http.Response Body if it receives an error.
102func (client Client) CreateOrUpdateSender(req *http.Request) (future CreateOrUpdateFuture, err error) {
103	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
104	future.Future = azure.NewFuture(req)
105	future.req = req
106	_, err = future.Done(sender)
107	if err != nil {
108		return
109	}
110	err = autorest.Respond(future.Response(),
111		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
112	return
113}
114
115// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
116// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
117// closes the http.Response Body.
118func (client Client) CreateOrUpdateResponder(resp *http.Response) (result SetObject, err error) {
119	err = autorest.Respond(
120		resp,
121		client.ByInspecting(),
122		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
123		autorest.ByUnmarshallingJSON(&result),
124		autorest.ByClosing())
125	result.Response = autorest.Response{Response: resp}
126	return
127}
128
129// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
130// Delete delete management group.
131// If a management group contains child resources, the request will fail.
132//
133// groupID is management Group ID. cacheControl is indicates that the request shouldn't utilize any caches.
134func (client Client) Delete(ctx context.Context, groupID string, cacheControl string) (result DeleteFuture, err error) {
135	req, err := client.DeletePreparer(ctx, groupID, cacheControl)
136	if err != nil {
137		err = autorest.NewErrorWithError(err, "managementgroups.Client", "Delete", nil, "Failure preparing request")
138		return
139	}
140
141	result, err = client.DeleteSender(req)
142	if err != nil {
143		err = autorest.NewErrorWithError(err, "managementgroups.Client", "Delete", result.Response(), "Failure sending request")
144		return
145	}
146
147	return
148}
149
150// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
151// DeletePreparer prepares the Delete request.
152func (client Client) DeletePreparer(ctx context.Context, groupID string, cacheControl string) (*http.Request, error) {
153	pathParameters := map[string]interface{}{
154		"groupId": autorest.Encode("path", groupID),
155	}
156
157	const APIVersion = "2018-01-01-preview"
158	queryParameters := map[string]interface{}{
159		"api-version": APIVersion,
160	}
161
162	preparer := autorest.CreatePreparer(
163		autorest.AsDelete(),
164		autorest.WithBaseURL(client.BaseURI),
165		autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}", pathParameters),
166		autorest.WithQueryParameters(queryParameters))
167	if len(cacheControl) > 0 {
168		preparer = autorest.DecoratePreparer(preparer,
169			autorest.WithHeader("Cache-Control", autorest.String(cacheControl)))
170	} else {
171		preparer = autorest.DecoratePreparer(preparer,
172			autorest.WithHeader("Cache-Control", autorest.String("no-cache")))
173	}
174	return preparer.Prepare((&http.Request{}).WithContext(ctx))
175}
176
177// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
178// DeleteSender sends the Delete request. The method will close the
179// http.Response Body if it receives an error.
180func (client Client) DeleteSender(req *http.Request) (future DeleteFuture, err error) {
181	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
182	future.Future = azure.NewFuture(req)
183	future.req = req
184	_, err = future.Done(sender)
185	if err != nil {
186		return
187	}
188	err = autorest.Respond(future.Response(),
189		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
190	return
191}
192
193// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
194// DeleteResponder handles the response to the Delete request. The method always
195// closes the http.Response Body.
196func (client Client) DeleteResponder(resp *http.Response) (result OperationResults, err error) {
197	err = autorest.Respond(
198		resp,
199		client.ByInspecting(),
200		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
201		autorest.ByUnmarshallingJSON(&result),
202		autorest.ByClosing())
203	result.Response = autorest.Response{Response: resp}
204	return
205}
206
207// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
208// Get get the details of the management group.
209//
210// groupID is management Group ID. expand is the $expand=children query string parameter allows clients to request
211// inclusion of children in the response payload. recurse is the $recurse=true query string parameter allows
212// clients to request inclusion of entire hierarchy in the response payload. Note that  $expand=children must be
213// passed up if $recurse is set to true. filter is a filter which allows the exclusion of subscriptions from
214// results (i.e. '$filter=children.childType ne Subscription') cacheControl is indicates that the request shouldn't
215// utilize any caches.
216func (client Client) Get(ctx context.Context, groupID string, expand string, recurse *bool, filter string, cacheControl string) (result ManagementGroup, err error) {
217	req, err := client.GetPreparer(ctx, groupID, expand, recurse, filter, cacheControl)
218	if err != nil {
219		err = autorest.NewErrorWithError(err, "managementgroups.Client", "Get", nil, "Failure preparing request")
220		return
221	}
222
223	resp, err := client.GetSender(req)
224	if err != nil {
225		result.Response = autorest.Response{Response: resp}
226		err = autorest.NewErrorWithError(err, "managementgroups.Client", "Get", resp, "Failure sending request")
227		return
228	}
229
230	result, err = client.GetResponder(resp)
231	if err != nil {
232		err = autorest.NewErrorWithError(err, "managementgroups.Client", "Get", resp, "Failure responding to request")
233	}
234
235	return
236}
237
238// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
239// GetPreparer prepares the Get request.
240func (client Client) GetPreparer(ctx context.Context, groupID string, expand string, recurse *bool, filter string, cacheControl string) (*http.Request, error) {
241	pathParameters := map[string]interface{}{
242		"groupId": autorest.Encode("path", groupID),
243	}
244
245	const APIVersion = "2018-01-01-preview"
246	queryParameters := map[string]interface{}{
247		"api-version": APIVersion,
248	}
249	if len(string(expand)) > 0 {
250		queryParameters["$expand"] = autorest.Encode("query", expand)
251	}
252	if recurse != nil {
253		queryParameters["$recurse"] = autorest.Encode("query", *recurse)
254	}
255	if len(filter) > 0 {
256		queryParameters["$filter"] = autorest.Encode("query", filter)
257	}
258
259	preparer := autorest.CreatePreparer(
260		autorest.AsGet(),
261		autorest.WithBaseURL(client.BaseURI),
262		autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}", pathParameters),
263		autorest.WithQueryParameters(queryParameters))
264	if len(cacheControl) > 0 {
265		preparer = autorest.DecoratePreparer(preparer,
266			autorest.WithHeader("Cache-Control", autorest.String(cacheControl)))
267	} else {
268		preparer = autorest.DecoratePreparer(preparer,
269			autorest.WithHeader("Cache-Control", autorest.String("no-cache")))
270	}
271	return preparer.Prepare((&http.Request{}).WithContext(ctx))
272}
273
274// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
275// GetSender sends the Get request. The method will close the
276// http.Response Body if it receives an error.
277func (client Client) GetSender(req *http.Request) (*http.Response, error) {
278	return autorest.SendWithSender(client, req,
279		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
280}
281
282// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
283// GetResponder handles the response to the Get request. The method always
284// closes the http.Response Body.
285func (client Client) GetResponder(resp *http.Response) (result ManagementGroup, err error) {
286	err = autorest.Respond(
287		resp,
288		client.ByInspecting(),
289		azure.WithErrorUnlessStatusCode(http.StatusOK),
290		autorest.ByUnmarshallingJSON(&result),
291		autorest.ByClosing())
292	result.Response = autorest.Response{Response: resp}
293	return
294}
295
296// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
297// List list management groups for the authenticated user.
298//
299// cacheControl is indicates that the request shouldn't utilize any caches.
300func (client Client) List(ctx context.Context, cacheControl string) (result ListResultPage, err error) {
301	result.fn = client.listNextResults
302	req, err := client.ListPreparer(ctx, cacheControl)
303	if err != nil {
304		err = autorest.NewErrorWithError(err, "managementgroups.Client", "List", nil, "Failure preparing request")
305		return
306	}
307
308	resp, err := client.ListSender(req)
309	if err != nil {
310		result.lr.Response = autorest.Response{Response: resp}
311		err = autorest.NewErrorWithError(err, "managementgroups.Client", "List", resp, "Failure sending request")
312		return
313	}
314
315	result.lr, err = client.ListResponder(resp)
316	if err != nil {
317		err = autorest.NewErrorWithError(err, "managementgroups.Client", "List", resp, "Failure responding to request")
318	}
319
320	return
321}
322
323// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
324// ListPreparer prepares the List request.
325func (client Client) ListPreparer(ctx context.Context, cacheControl string) (*http.Request, error) {
326	const APIVersion = "2018-01-01-preview"
327	queryParameters := map[string]interface{}{
328		"api-version": APIVersion,
329	}
330	if len(client.Skiptoken) > 0 {
331		queryParameters["$skiptoken"] = autorest.Encode("query", client.Skiptoken)
332	}
333
334	preparer := autorest.CreatePreparer(
335		autorest.AsGet(),
336		autorest.WithBaseURL(client.BaseURI),
337		autorest.WithPath("/providers/Microsoft.Management/managementGroups"),
338		autorest.WithQueryParameters(queryParameters))
339	if len(cacheControl) > 0 {
340		preparer = autorest.DecoratePreparer(preparer,
341			autorest.WithHeader("Cache-Control", autorest.String(cacheControl)))
342	} else {
343		preparer = autorest.DecoratePreparer(preparer,
344			autorest.WithHeader("Cache-Control", autorest.String("no-cache")))
345	}
346	return preparer.Prepare((&http.Request{}).WithContext(ctx))
347}
348
349// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
350// ListSender sends the List request. The method will close the
351// http.Response Body if it receives an error.
352func (client Client) ListSender(req *http.Request) (*http.Response, error) {
353	return autorest.SendWithSender(client, req,
354		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
355}
356
357// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
358// ListResponder handles the response to the List request. The method always
359// closes the http.Response Body.
360func (client Client) ListResponder(resp *http.Response) (result ListResult, err error) {
361	err = autorest.Respond(
362		resp,
363		client.ByInspecting(),
364		azure.WithErrorUnlessStatusCode(http.StatusOK),
365		autorest.ByUnmarshallingJSON(&result),
366		autorest.ByClosing())
367	result.Response = autorest.Response{Response: resp}
368	return
369}
370
371// listNextResults retrieves the next set of results, if any.
372func (client Client) listNextResults(lastResults ListResult) (result ListResult, err error) {
373	req, err := lastResults.listResultPreparer()
374	if err != nil {
375		return result, autorest.NewErrorWithError(err, "managementgroups.Client", "listNextResults", nil, "Failure preparing next results request")
376	}
377	if req == nil {
378		return
379	}
380	resp, err := client.ListSender(req)
381	if err != nil {
382		result.Response = autorest.Response{Response: resp}
383		return result, autorest.NewErrorWithError(err, "managementgroups.Client", "listNextResults", resp, "Failure sending next results request")
384	}
385	result, err = client.ListResponder(resp)
386	if err != nil {
387		err = autorest.NewErrorWithError(err, "managementgroups.Client", "listNextResults", resp, "Failure responding to next results request")
388	}
389	return
390}
391
392// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
393// ListComplete enumerates all values, automatically crossing page boundaries as required.
394func (client Client) ListComplete(ctx context.Context, cacheControl string) (result ListResultIterator, err error) {
395	result.page, err = client.List(ctx, cacheControl)
396	return
397}
398
399// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
400// Update update a management group.
401//
402// groupID is management Group ID. patchGroupRequest is management group patch parameters. cacheControl is
403// indicates that the request shouldn't utilize any caches.
404func (client Client) Update(ctx context.Context, groupID string, patchGroupRequest PatchManagementGroupRequest, cacheControl string) (result ManagementGroup, err error) {
405	req, err := client.UpdatePreparer(ctx, groupID, patchGroupRequest, cacheControl)
406	if err != nil {
407		err = autorest.NewErrorWithError(err, "managementgroups.Client", "Update", nil, "Failure preparing request")
408		return
409	}
410
411	resp, err := client.UpdateSender(req)
412	if err != nil {
413		result.Response = autorest.Response{Response: resp}
414		err = autorest.NewErrorWithError(err, "managementgroups.Client", "Update", resp, "Failure sending request")
415		return
416	}
417
418	result, err = client.UpdateResponder(resp)
419	if err != nil {
420		err = autorest.NewErrorWithError(err, "managementgroups.Client", "Update", resp, "Failure responding to request")
421	}
422
423	return
424}
425
426// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
427// UpdatePreparer prepares the Update request.
428func (client Client) UpdatePreparer(ctx context.Context, groupID string, patchGroupRequest PatchManagementGroupRequest, cacheControl string) (*http.Request, error) {
429	pathParameters := map[string]interface{}{
430		"groupId": autorest.Encode("path", groupID),
431	}
432
433	const APIVersion = "2018-01-01-preview"
434	queryParameters := map[string]interface{}{
435		"api-version": APIVersion,
436	}
437
438	preparer := autorest.CreatePreparer(
439		autorest.AsContentType("application/json; charset=utf-8"),
440		autorest.AsPatch(),
441		autorest.WithBaseURL(client.BaseURI),
442		autorest.WithPathParameters("/providers/Microsoft.Management/managementGroups/{groupId}", pathParameters),
443		autorest.WithJSON(patchGroupRequest),
444		autorest.WithQueryParameters(queryParameters))
445	if len(cacheControl) > 0 {
446		preparer = autorest.DecoratePreparer(preparer,
447			autorest.WithHeader("Cache-Control", autorest.String(cacheControl)))
448	} else {
449		preparer = autorest.DecoratePreparer(preparer,
450			autorest.WithHeader("Cache-Control", autorest.String("no-cache")))
451	}
452	return preparer.Prepare((&http.Request{}).WithContext(ctx))
453}
454
455// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
456// UpdateSender sends the Update request. The method will close the
457// http.Response Body if it receives an error.
458func (client Client) UpdateSender(req *http.Request) (*http.Response, error) {
459	return autorest.SendWithSender(client, req,
460		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
461}
462
463// Deprecated: Please use package github.com/Azure/azure-sdk-for-go/services/preview/resources/mgmt/2018-01-01-preview/management instead.
464// UpdateResponder handles the response to the Update request. The method always
465// closes the http.Response Body.
466func (client Client) UpdateResponder(resp *http.Response) (result ManagementGroup, err error) {
467	err = autorest.Respond(
468		resp,
469		client.ByInspecting(),
470		azure.WithErrorUnlessStatusCode(http.StatusOK),
471		autorest.ByUnmarshallingJSON(&result),
472		autorest.ByClosing())
473	result.Response = autorest.Response{Response: resp}
474	return
475}
476