1package servicefabric
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/autorest/validation"
14	"github.com/Azure/go-autorest/tracing"
15	"net/http"
16)
17
18// MeshNetworkClient is the service Fabric REST Client APIs allows management of Service Fabric clusters, applications
19// and services.
20type MeshNetworkClient struct {
21	BaseClient
22}
23
24// NewMeshNetworkClient creates an instance of the MeshNetworkClient client.
25func NewMeshNetworkClient() MeshNetworkClient {
26	return NewMeshNetworkClientWithBaseURI(DefaultBaseURI)
27}
28
29// NewMeshNetworkClientWithBaseURI creates an instance of the MeshNetworkClient client using a custom endpoint.  Use
30// this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
31func NewMeshNetworkClientWithBaseURI(baseURI string) MeshNetworkClient {
32	return MeshNetworkClient{NewWithBaseURI(baseURI)}
33}
34
35// CreateOrUpdate creates a Network resource with the specified name, description and properties. If Network resource
36// with the same name exists, then it is updated with the specified description and properties. Network resource
37// provides connectivity between application services.
38// Parameters:
39// networkResourceName - the identity of the network.
40// networkResourceDescription - description for creating a Network resource.
41func (client MeshNetworkClient) CreateOrUpdate(ctx context.Context, networkResourceName string, networkResourceDescription NetworkResourceDescription) (result NetworkResourceDescription, err error) {
42	if tracing.IsEnabled() {
43		ctx = tracing.StartSpan(ctx, fqdn+"/MeshNetworkClient.CreateOrUpdate")
44		defer func() {
45			sc := -1
46			if result.Response.Response != nil {
47				sc = result.Response.Response.StatusCode
48			}
49			tracing.EndSpan(ctx, sc, err)
50		}()
51	}
52	if err := validation.Validate([]validation.Validation{
53		{TargetValue: networkResourceDescription,
54			Constraints: []validation.Constraint{{Target: "networkResourceDescription.Name", Name: validation.Null, Rule: true, Chain: nil},
55				{Target: "networkResourceDescription.Properties", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
56		return result, validation.NewError("servicefabric.MeshNetworkClient", "CreateOrUpdate", err.Error())
57	}
58
59	req, err := client.CreateOrUpdatePreparer(ctx, networkResourceName, networkResourceDescription)
60	if err != nil {
61		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "CreateOrUpdate", nil, "Failure preparing request")
62		return
63	}
64
65	resp, err := client.CreateOrUpdateSender(req)
66	if err != nil {
67		result.Response = autorest.Response{Response: resp}
68		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "CreateOrUpdate", resp, "Failure sending request")
69		return
70	}
71
72	result, err = client.CreateOrUpdateResponder(resp)
73	if err != nil {
74		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "CreateOrUpdate", resp, "Failure responding to request")
75		return
76	}
77
78	return
79}
80
81// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
82func (client MeshNetworkClient) CreateOrUpdatePreparer(ctx context.Context, networkResourceName string, networkResourceDescription NetworkResourceDescription) (*http.Request, error) {
83	pathParameters := map[string]interface{}{
84		"networkResourceName": networkResourceName,
85	}
86
87	const APIVersion = "6.4-preview"
88	queryParameters := map[string]interface{}{
89		"api-version": APIVersion,
90	}
91
92	preparer := autorest.CreatePreparer(
93		autorest.AsContentType("application/json; charset=utf-8"),
94		autorest.AsPut(),
95		autorest.WithBaseURL(client.BaseURI),
96		autorest.WithPathParameters("/Resources/Networks/{networkResourceName}", pathParameters),
97		autorest.WithJSON(networkResourceDescription),
98		autorest.WithQueryParameters(queryParameters))
99	return preparer.Prepare((&http.Request{}).WithContext(ctx))
100}
101
102// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
103// http.Response Body if it receives an error.
104func (client MeshNetworkClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
105	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
106}
107
108// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
109// closes the http.Response Body.
110func (client MeshNetworkClient) CreateOrUpdateResponder(resp *http.Response) (result NetworkResourceDescription, err error) {
111	err = autorest.Respond(
112		resp,
113		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted),
114		autorest.ByUnmarshallingJSON(&result),
115		autorest.ByClosing())
116	result.Response = autorest.Response{Response: resp}
117	return
118}
119
120// Delete deletes the Network resource identified by the name.
121// Parameters:
122// networkResourceName - the identity of the network.
123func (client MeshNetworkClient) Delete(ctx context.Context, networkResourceName string) (result autorest.Response, err error) {
124	if tracing.IsEnabled() {
125		ctx = tracing.StartSpan(ctx, fqdn+"/MeshNetworkClient.Delete")
126		defer func() {
127			sc := -1
128			if result.Response != nil {
129				sc = result.Response.StatusCode
130			}
131			tracing.EndSpan(ctx, sc, err)
132		}()
133	}
134	req, err := client.DeletePreparer(ctx, networkResourceName)
135	if err != nil {
136		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "Delete", nil, "Failure preparing request")
137		return
138	}
139
140	resp, err := client.DeleteSender(req)
141	if err != nil {
142		result.Response = resp
143		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "Delete", resp, "Failure sending request")
144		return
145	}
146
147	result, err = client.DeleteResponder(resp)
148	if err != nil {
149		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "Delete", resp, "Failure responding to request")
150		return
151	}
152
153	return
154}
155
156// DeletePreparer prepares the Delete request.
157func (client MeshNetworkClient) DeletePreparer(ctx context.Context, networkResourceName string) (*http.Request, error) {
158	pathParameters := map[string]interface{}{
159		"networkResourceName": networkResourceName,
160	}
161
162	const APIVersion = "6.4-preview"
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("/Resources/Networks/{networkResourceName}", 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 MeshNetworkClient) DeleteSender(req *http.Request) (*http.Response, error) {
178	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
179}
180
181// DeleteResponder handles the response to the Delete request. The method always
182// closes the http.Response Body.
183func (client MeshNetworkClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
184	err = autorest.Respond(
185		resp,
186		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
187		autorest.ByClosing())
188	result.Response = resp
189	return
190}
191
192// Get gets the information about the Network resource with the given name. The information include the description and
193// other properties of the Network.
194// Parameters:
195// networkResourceName - the identity of the network.
196func (client MeshNetworkClient) Get(ctx context.Context, networkResourceName string) (result NetworkResourceDescription, err error) {
197	if tracing.IsEnabled() {
198		ctx = tracing.StartSpan(ctx, fqdn+"/MeshNetworkClient.Get")
199		defer func() {
200			sc := -1
201			if result.Response.Response != nil {
202				sc = result.Response.Response.StatusCode
203			}
204			tracing.EndSpan(ctx, sc, err)
205		}()
206	}
207	req, err := client.GetPreparer(ctx, networkResourceName)
208	if err != nil {
209		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "Get", nil, "Failure preparing request")
210		return
211	}
212
213	resp, err := client.GetSender(req)
214	if err != nil {
215		result.Response = autorest.Response{Response: resp}
216		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "Get", resp, "Failure sending request")
217		return
218	}
219
220	result, err = client.GetResponder(resp)
221	if err != nil {
222		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "Get", resp, "Failure responding to request")
223		return
224	}
225
226	return
227}
228
229// GetPreparer prepares the Get request.
230func (client MeshNetworkClient) GetPreparer(ctx context.Context, networkResourceName string) (*http.Request, error) {
231	pathParameters := map[string]interface{}{
232		"networkResourceName": networkResourceName,
233	}
234
235	const APIVersion = "6.4-preview"
236	queryParameters := map[string]interface{}{
237		"api-version": APIVersion,
238	}
239
240	preparer := autorest.CreatePreparer(
241		autorest.AsGet(),
242		autorest.WithBaseURL(client.BaseURI),
243		autorest.WithPathParameters("/Resources/Networks/{networkResourceName}", pathParameters),
244		autorest.WithQueryParameters(queryParameters))
245	return preparer.Prepare((&http.Request{}).WithContext(ctx))
246}
247
248// GetSender sends the Get request. The method will close the
249// http.Response Body if it receives an error.
250func (client MeshNetworkClient) GetSender(req *http.Request) (*http.Response, error) {
251	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
252}
253
254// GetResponder handles the response to the Get request. The method always
255// closes the http.Response Body.
256func (client MeshNetworkClient) GetResponder(resp *http.Response) (result NetworkResourceDescription, err error) {
257	err = autorest.Respond(
258		resp,
259		azure.WithErrorUnlessStatusCode(http.StatusOK),
260		autorest.ByUnmarshallingJSON(&result),
261		autorest.ByClosing())
262	result.Response = autorest.Response{Response: resp}
263	return
264}
265
266// List gets the information about all network resources in a given resource group. The information include the
267// description and other properties of the Network.
268func (client MeshNetworkClient) List(ctx context.Context) (result PagedNetworkResourceDescriptionList, err error) {
269	if tracing.IsEnabled() {
270		ctx = tracing.StartSpan(ctx, fqdn+"/MeshNetworkClient.List")
271		defer func() {
272			sc := -1
273			if result.Response.Response != nil {
274				sc = result.Response.Response.StatusCode
275			}
276			tracing.EndSpan(ctx, sc, err)
277		}()
278	}
279	req, err := client.ListPreparer(ctx)
280	if err != nil {
281		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "List", nil, "Failure preparing request")
282		return
283	}
284
285	resp, err := client.ListSender(req)
286	if err != nil {
287		result.Response = autorest.Response{Response: resp}
288		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "List", resp, "Failure sending request")
289		return
290	}
291
292	result, err = client.ListResponder(resp)
293	if err != nil {
294		err = autorest.NewErrorWithError(err, "servicefabric.MeshNetworkClient", "List", resp, "Failure responding to request")
295		return
296	}
297
298	return
299}
300
301// ListPreparer prepares the List request.
302func (client MeshNetworkClient) ListPreparer(ctx context.Context) (*http.Request, error) {
303	const APIVersion = "6.4-preview"
304	queryParameters := map[string]interface{}{
305		"api-version": APIVersion,
306	}
307
308	preparer := autorest.CreatePreparer(
309		autorest.AsGet(),
310		autorest.WithBaseURL(client.BaseURI),
311		autorest.WithPath("/Resources/Networks"),
312		autorest.WithQueryParameters(queryParameters))
313	return preparer.Prepare((&http.Request{}).WithContext(ctx))
314}
315
316// ListSender sends the List request. The method will close the
317// http.Response Body if it receives an error.
318func (client MeshNetworkClient) ListSender(req *http.Request) (*http.Response, error) {
319	return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
320}
321
322// ListResponder handles the response to the List request. The method always
323// closes the http.Response Body.
324func (client MeshNetworkClient) ListResponder(resp *http.Response) (result PagedNetworkResourceDescriptionList, err error) {
325	err = autorest.Respond(
326		resp,
327		azure.WithErrorUnlessStatusCode(http.StatusOK),
328		autorest.ByUnmarshallingJSON(&result),
329		autorest.ByClosing())
330	result.Response = autorest.Response{Response: resp}
331	return
332}
333