remove unused packages
This commit is contained in:
parent
b03fca2913
commit
bed536812d
|
@ -1,202 +0,0 @@
|
||||||
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright 2016 Microsoft Corporation
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
|
@ -1,5 +0,0 @@
|
||||||
Microsoft Azure-SDK-for-Go
|
|
||||||
Copyright 2014-2017 Microsoft
|
|
||||||
|
|
||||||
This product includes software developed at
|
|
||||||
the Microsoft Corporation (https://www.microsoft.com).
|
|
|
@ -1,566 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ApplicationGatewaysClient is the network Client
|
|
||||||
type ApplicationGatewaysClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewApplicationGatewaysClient creates an instance of the ApplicationGatewaysClient client.
|
|
||||||
func NewApplicationGatewaysClient(subscriptionID string) ApplicationGatewaysClient {
|
|
||||||
return NewApplicationGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewApplicationGatewaysClientWithBaseURI creates an instance of the ApplicationGatewaysClient client.
|
|
||||||
func NewApplicationGatewaysClientWithBaseURI(baseURI string, subscriptionID string) ApplicationGatewaysClient {
|
|
||||||
return ApplicationGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates the specified application gateway.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// applicationGatewayName - the name of the application gateway.
|
|
||||||
// parameters - parameters supplied to the create or update application gateway operation.
|
|
||||||
func (client ApplicationGatewaysClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, applicationGatewayName string, parameters ApplicationGateway) (result ApplicationGatewaysCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, applicationGatewayName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client ApplicationGatewaysClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string, parameters ApplicationGateway) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"applicationGatewayName": autorest.Encode("path", applicationGatewayName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ApplicationGatewaysClient) CreateOrUpdateSender(req *http.Request) (future ApplicationGatewaysCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ApplicationGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result ApplicationGateway, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified application gateway.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// applicationGatewayName - the name of the application gateway.
|
|
||||||
func (client ApplicationGatewaysClient) Delete(ctx context.Context, resourceGroupName string, applicationGatewayName string) (result ApplicationGatewaysDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, applicationGatewayName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client ApplicationGatewaysClient) DeletePreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"applicationGatewayName": autorest.Encode("path", applicationGatewayName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ApplicationGatewaysClient) DeleteSender(req *http.Request) (future ApplicationGatewaysDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ApplicationGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified application gateway.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// applicationGatewayName - the name of the application gateway.
|
|
||||||
func (client ApplicationGatewaysClient) Get(ctx context.Context, resourceGroupName string, applicationGatewayName string) (result ApplicationGateway, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, applicationGatewayName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client ApplicationGatewaysClient) GetPreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"applicationGatewayName": autorest.Encode("path", applicationGatewayName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ApplicationGatewaysClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ApplicationGatewaysClient) GetResponder(resp *http.Response) (result ApplicationGateway, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List lists all application gateways in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client ApplicationGatewaysClient) List(ctx context.Context, resourceGroupName string) (result ApplicationGatewayListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.aglr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.aglr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client ApplicationGatewaysClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ApplicationGatewaysClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ApplicationGatewaysClient) ListResponder(resp *http.Response) (result ApplicationGatewayListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client ApplicationGatewaysClient) listNextResults(lastResults ApplicationGatewayListResult) (result ApplicationGatewayListResult, err error) {
|
|
||||||
req, err := lastResults.applicationGatewayListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client ApplicationGatewaysClient) ListComplete(ctx context.Context, resourceGroupName string) (result ApplicationGatewayListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAll gets all the application gateways in a subscription.
|
|
||||||
func (client ApplicationGatewaysClient) ListAll(ctx context.Context) (result ApplicationGatewayListResultPage, err error) {
|
|
||||||
result.fn = client.listAllNextResults
|
|
||||||
req, err := client.ListAllPreparer(ctx)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.aglr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.aglr, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllPreparer prepares the ListAll request.
|
|
||||||
func (client ApplicationGatewaysClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGateways", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllSender sends the ListAll request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ApplicationGatewaysClient) ListAllSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllResponder handles the response to the ListAll request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ApplicationGatewaysClient) ListAllResponder(resp *http.Response) (result ApplicationGatewayListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listAllNextResults retrieves the next set of results, if any.
|
|
||||||
func (client ApplicationGatewaysClient) listAllNextResults(lastResults ApplicationGatewayListResult) (result ApplicationGatewayListResult, err error) {
|
|
||||||
req, err := lastResults.applicationGatewayListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listAllNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listAllNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "listAllNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client ApplicationGatewaysClient) ListAllComplete(ctx context.Context) (result ApplicationGatewayListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListAll(ctx)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start starts the specified application gateway.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// applicationGatewayName - the name of the application gateway.
|
|
||||||
func (client ApplicationGatewaysClient) Start(ctx context.Context, resourceGroupName string, applicationGatewayName string) (result ApplicationGatewaysStartFuture, err error) {
|
|
||||||
req, err := client.StartPreparer(ctx, resourceGroupName, applicationGatewayName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Start", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.StartSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Start", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// StartPreparer prepares the Start request.
|
|
||||||
func (client ApplicationGatewaysClient) StartPreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"applicationGatewayName": autorest.Encode("path", applicationGatewayName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsPost(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/start", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// StartSender sends the Start request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ApplicationGatewaysClient) StartSender(req *http.Request) (future ApplicationGatewaysStartFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// StartResponder handles the response to the Start request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ApplicationGatewaysClient) StartResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop stops the specified application gateway in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// applicationGatewayName - the name of the application gateway.
|
|
||||||
func (client ApplicationGatewaysClient) Stop(ctx context.Context, resourceGroupName string, applicationGatewayName string) (result ApplicationGatewaysStopFuture, err error) {
|
|
||||||
req, err := client.StopPreparer(ctx, resourceGroupName, applicationGatewayName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Stop", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.StopSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Stop", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// StopPreparer prepares the Stop request.
|
|
||||||
func (client ApplicationGatewaysClient) StopPreparer(ctx context.Context, resourceGroupName string, applicationGatewayName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"applicationGatewayName": autorest.Encode("path", applicationGatewayName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsPost(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/stop", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// StopSender sends the Stop request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ApplicationGatewaysClient) StopSender(req *http.Request) (future ApplicationGatewaysStopFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// StopResponder handles the response to the Stop request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ApplicationGatewaysClient) StopResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
124
vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network/client.go
generated
vendored
124
vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network/client.go
generated
vendored
|
@ -1,124 +0,0 @@
|
||||||
// Package network implements the Azure ARM Network service API version 2015-06-15.
|
|
||||||
//
|
|
||||||
// Network Client
|
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// DefaultBaseURI is the default URI used for the service Network
|
|
||||||
DefaultBaseURI = "https://management.azure.com"
|
|
||||||
)
|
|
||||||
|
|
||||||
// BaseClient is the base client for Network.
|
|
||||||
type BaseClient struct {
|
|
||||||
autorest.Client
|
|
||||||
BaseURI string
|
|
||||||
SubscriptionID string
|
|
||||||
}
|
|
||||||
|
|
||||||
// New creates an instance of the BaseClient client.
|
|
||||||
func New(subscriptionID string) BaseClient {
|
|
||||||
return NewWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewWithBaseURI creates an instance of the BaseClient client.
|
|
||||||
func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient {
|
|
||||||
return BaseClient{
|
|
||||||
Client: autorest.NewClientWithUserAgent(UserAgent()),
|
|
||||||
BaseURI: baseURI,
|
|
||||||
SubscriptionID: subscriptionID,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CheckDNSNameAvailability checks whether a domain name in the cloudapp.net zone is available for use.
|
|
||||||
// Parameters:
|
|
||||||
// location - the location of the domain name.
|
|
||||||
// domainNameLabel - the domain name to be verified. It must conform to the following regular expression:
|
|
||||||
// ^[a-z][a-z0-9-]{1,61}[a-z0-9]$.
|
|
||||||
func (client BaseClient) CheckDNSNameAvailability(ctx context.Context, location string, domainNameLabel string) (result DNSNameAvailabilityResult, err error) {
|
|
||||||
req, err := client.CheckDNSNameAvailabilityPreparer(ctx, location, domainNameLabel)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.BaseClient", "CheckDNSNameAvailability", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.CheckDNSNameAvailabilitySender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.BaseClient", "CheckDNSNameAvailability", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CheckDNSNameAvailabilityResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.BaseClient", "CheckDNSNameAvailability", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CheckDNSNameAvailabilityPreparer prepares the CheckDNSNameAvailability request.
|
|
||||||
func (client BaseClient) CheckDNSNameAvailabilityPreparer(ctx context.Context, location string, domainNameLabel string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"location": autorest.Encode("path", location),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
if len(domainNameLabel) > 0 {
|
|
||||||
queryParameters["domainNameLabel"] = autorest.Encode("query", domainNameLabel)
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/CheckDnsNameAvailability", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CheckDNSNameAvailabilitySender sends the CheckDNSNameAvailability request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client BaseClient) CheckDNSNameAvailabilitySender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CheckDNSNameAvailabilityResponder handles the response to the CheckDNSNameAvailability request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client BaseClient) CheckDNSNameAvailabilityResponder(resp *http.Response) (result DNSNameAvailabilityResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,351 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ExpressRouteCircuitAuthorizationsClient is the network Client
|
|
||||||
type ExpressRouteCircuitAuthorizationsClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewExpressRouteCircuitAuthorizationsClient creates an instance of the ExpressRouteCircuitAuthorizationsClient
|
|
||||||
// client.
|
|
||||||
func NewExpressRouteCircuitAuthorizationsClient(subscriptionID string) ExpressRouteCircuitAuthorizationsClient {
|
|
||||||
return NewExpressRouteCircuitAuthorizationsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewExpressRouteCircuitAuthorizationsClientWithBaseURI creates an instance of the
|
|
||||||
// ExpressRouteCircuitAuthorizationsClient client.
|
|
||||||
func NewExpressRouteCircuitAuthorizationsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCircuitAuthorizationsClient {
|
|
||||||
return ExpressRouteCircuitAuthorizationsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates an authorization in the specified express route circuit.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the express route circuit.
|
|
||||||
// authorizationName - the name of the authorization.
|
|
||||||
// authorizationParameters - parameters supplied to the create or update express route circuit authorization
|
|
||||||
// operation.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string, authorizationParameters ExpressRouteCircuitAuthorization) (result ExpressRouteCircuitAuthorizationsCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, circuitName, authorizationName, authorizationParameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string, authorizationParameters ExpressRouteCircuitAuthorization) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"authorizationName": autorest.Encode("path", authorizationName),
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}", pathParameters),
|
|
||||||
autorest.WithJSON(authorizationParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteCircuitAuthorizationsCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteCircuitAuthorization, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified authorization from the specified express route circuit.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the express route circuit.
|
|
||||||
// authorizationName - the name of the authorization.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) Delete(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string) (result ExpressRouteCircuitAuthorizationsDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, circuitName, authorizationName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) DeletePreparer(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"authorizationName": autorest.Encode("path", authorizationName),
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) DeleteSender(req *http.Request) (future ExpressRouteCircuitAuthorizationsDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified authorization from the specified express route circuit.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the express route circuit.
|
|
||||||
// authorizationName - the name of the authorization.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) Get(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string) (result ExpressRouteCircuitAuthorization, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, circuitName, authorizationName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) GetPreparer(ctx context.Context, resourceGroupName string, circuitName string, authorizationName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"authorizationName": autorest.Encode("path", authorizationName),
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) GetResponder(resp *http.Response) (result ExpressRouteCircuitAuthorization, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all authorizations in an express route circuit.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the circuit.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) List(ctx context.Context, resourceGroupName string, circuitName string) (result AuthorizationListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName, circuitName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.alr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.alr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) ListPreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) ListResponder(resp *http.Response) (result AuthorizationListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) listNextResults(lastResults AuthorizationListResult) (result AuthorizationListResult, err error) {
|
|
||||||
req, err := lastResults.authorizationListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client ExpressRouteCircuitAuthorizationsClient) ListComplete(ctx context.Context, resourceGroupName string, circuitName string) (result AuthorizationListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName, circuitName)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,348 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ExpressRouteCircuitPeeringsClient is the network Client
|
|
||||||
type ExpressRouteCircuitPeeringsClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewExpressRouteCircuitPeeringsClient creates an instance of the ExpressRouteCircuitPeeringsClient client.
|
|
||||||
func NewExpressRouteCircuitPeeringsClient(subscriptionID string) ExpressRouteCircuitPeeringsClient {
|
|
||||||
return NewExpressRouteCircuitPeeringsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewExpressRouteCircuitPeeringsClientWithBaseURI creates an instance of the ExpressRouteCircuitPeeringsClient client.
|
|
||||||
func NewExpressRouteCircuitPeeringsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCircuitPeeringsClient {
|
|
||||||
return ExpressRouteCircuitPeeringsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a peering in the specified express route circuits.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the express route circuit.
|
|
||||||
// peeringName - the name of the peering.
|
|
||||||
// peeringParameters - parameters supplied to the create or update express route circuit peering operation.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, peeringParameters ExpressRouteCircuitPeering) (result ExpressRouteCircuitPeeringsCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, circuitName, peeringName, peeringParameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string, peeringParameters ExpressRouteCircuitPeering) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"peeringName": autorest.Encode("path", peeringName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}", pathParameters),
|
|
||||||
autorest.WithJSON(peeringParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteCircuitPeeringsCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteCircuitPeering, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified peering from the specified express route circuit.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the express route circuit.
|
|
||||||
// peeringName - the name of the peering.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) Delete(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (result ExpressRouteCircuitPeeringsDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, circuitName, peeringName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) DeletePreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"peeringName": autorest.Encode("path", peeringName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) DeleteSender(req *http.Request) (future ExpressRouteCircuitPeeringsDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified authorization from the specified express route circuit.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the express route circuit.
|
|
||||||
// peeringName - the name of the peering.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) Get(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (result ExpressRouteCircuitPeering, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, circuitName, peeringName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) GetPreparer(ctx context.Context, resourceGroupName string, circuitName string, peeringName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"peeringName": autorest.Encode("path", peeringName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) GetResponder(resp *http.Response) (result ExpressRouteCircuitPeering, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all peerings in a specified express route circuit.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the express route circuit.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) List(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitPeeringListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName, circuitName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.ercplr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.ercplr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) ListPreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) ListResponder(resp *http.Response) (result ExpressRouteCircuitPeeringListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) listNextResults(lastResults ExpressRouteCircuitPeeringListResult) (result ExpressRouteCircuitPeeringListResult, err error) {
|
|
||||||
req, err := lastResults.expressRouteCircuitPeeringListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client ExpressRouteCircuitPeeringsClient) ListComplete(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitPeeringListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName, circuitName)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,718 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ExpressRouteCircuitsClient is the network Client
|
|
||||||
type ExpressRouteCircuitsClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewExpressRouteCircuitsClient creates an instance of the ExpressRouteCircuitsClient client.
|
|
||||||
func NewExpressRouteCircuitsClient(subscriptionID string) ExpressRouteCircuitsClient {
|
|
||||||
return NewExpressRouteCircuitsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewExpressRouteCircuitsClientWithBaseURI creates an instance of the ExpressRouteCircuitsClient client.
|
|
||||||
func NewExpressRouteCircuitsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCircuitsClient {
|
|
||||||
return ExpressRouteCircuitsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates an express route circuit.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the circuit.
|
|
||||||
// parameters - parameters supplied to the create or update express route circuit operation.
|
|
||||||
func (client ExpressRouteCircuitsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, circuitName string, parameters ExpressRouteCircuit) (result ExpressRouteCircuitsCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, circuitName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client ExpressRouteCircuitsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, circuitName string, parameters ExpressRouteCircuit) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitsClient) CreateOrUpdateSender(req *http.Request) (future ExpressRouteCircuitsCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitsClient) CreateOrUpdateResponder(resp *http.Response) (result ExpressRouteCircuit, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified express route circuit.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the express route circuit.
|
|
||||||
func (client ExpressRouteCircuitsClient) Delete(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitsDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, circuitName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client ExpressRouteCircuitsClient) DeletePreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitsClient) DeleteSender(req *http.Request) (future ExpressRouteCircuitsDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets information about the specified express route circuit.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of express route circuit.
|
|
||||||
func (client ExpressRouteCircuitsClient) Get(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuit, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, circuitName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client ExpressRouteCircuitsClient) GetPreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitsClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitsClient) GetResponder(resp *http.Response) (result ExpressRouteCircuit, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all the express route circuits in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client ExpressRouteCircuitsClient) List(ctx context.Context, resourceGroupName string) (result ExpressRouteCircuitListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.erclr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.erclr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListResponder(resp *http.Response) (result ExpressRouteCircuitListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client ExpressRouteCircuitsClient) listNextResults(lastResults ExpressRouteCircuitListResult) (result ExpressRouteCircuitListResult, err error) {
|
|
||||||
req, err := lastResults.expressRouteCircuitListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListComplete(ctx context.Context, resourceGroupName string) (result ExpressRouteCircuitListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAll gets all the express route circuits in a subscription.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListAll(ctx context.Context) (result ExpressRouteCircuitListResultPage, err error) {
|
|
||||||
result.fn = client.listAllNextResults
|
|
||||||
req, err := client.ListAllPreparer(ctx)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.erclr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.erclr, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllPreparer prepares the ListAll request.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCircuits", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllSender sends the ListAll request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListAllSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllResponder handles the response to the ListAll request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListAllResponder(resp *http.Response) (result ExpressRouteCircuitListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listAllNextResults retrieves the next set of results, if any.
|
|
||||||
func (client ExpressRouteCircuitsClient) listAllNextResults(lastResults ExpressRouteCircuitListResult) (result ExpressRouteCircuitListResult, err error) {
|
|
||||||
req, err := lastResults.expressRouteCircuitListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listAllNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listAllNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listAllNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListAllComplete(ctx context.Context) (result ExpressRouteCircuitListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListAll(ctx)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListArpTable the ListArpTable from ExpressRouteCircuit opertion retrieves the currently advertised arp table
|
|
||||||
// associated with the ExpressRouteCircuits in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the circuit.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListArpTable(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitsArpTableListResultPage, err error) {
|
|
||||||
result.fn = client.listArpTableNextResults
|
|
||||||
req, err := client.ListArpTablePreparer(ctx, resourceGroupName, circuitName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListArpTableSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.ercatlr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.ercatlr, err = client.ListArpTableResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListArpTablePreparer prepares the ListArpTable request.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListArpTablePreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/arpTable", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListArpTableSender sends the ListArpTable request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListArpTableSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListArpTableResponder handles the response to the ListArpTable request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListArpTableResponder(resp *http.Response) (result ExpressRouteCircuitsArpTableListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listArpTableNextResults retrieves the next set of results, if any.
|
|
||||||
func (client ExpressRouteCircuitsClient) listArpTableNextResults(lastResults ExpressRouteCircuitsArpTableListResult) (result ExpressRouteCircuitsArpTableListResult, err error) {
|
|
||||||
req, err := lastResults.expressRouteCircuitsArpTableListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listArpTableNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListArpTableSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listArpTableNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListArpTableResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listArpTableNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListArpTableComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListArpTableComplete(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitsArpTableListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListArpTable(ctx, resourceGroupName, circuitName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListRoutesTable the ListRoutesTable from ExpressRouteCircuit opertion retrieves the currently advertised routes
|
|
||||||
// table associated with the ExpressRouteCircuits in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the circuit.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListRoutesTable(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitsRoutesTableListResultPage, err error) {
|
|
||||||
result.fn = client.listRoutesTableNextResults
|
|
||||||
req, err := client.ListRoutesTablePreparer(ctx, resourceGroupName, circuitName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListRoutesTableSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.ercrtlr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.ercrtlr, err = client.ListRoutesTableResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListRoutesTablePreparer prepares the ListRoutesTable request.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListRoutesTablePreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/routesTable", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListRoutesTableSender sends the ListRoutesTable request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListRoutesTableSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListRoutesTableResponder handles the response to the ListRoutesTable request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListRoutesTableResponder(resp *http.Response) (result ExpressRouteCircuitsRoutesTableListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listRoutesTableNextResults retrieves the next set of results, if any.
|
|
||||||
func (client ExpressRouteCircuitsClient) listRoutesTableNextResults(lastResults ExpressRouteCircuitsRoutesTableListResult) (result ExpressRouteCircuitsRoutesTableListResult, err error) {
|
|
||||||
req, err := lastResults.expressRouteCircuitsRoutesTableListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listRoutesTableNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListRoutesTableSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listRoutesTableNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListRoutesTableResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listRoutesTableNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListRoutesTableComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListRoutesTableComplete(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitsRoutesTableListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListRoutesTable(ctx, resourceGroupName, circuitName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListStats the Liststats ExpressRouteCircuit opertion retrieves all the stats from a ExpressRouteCircuits in a
|
|
||||||
// resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// circuitName - the name of the loadBalancer.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListStats(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitsStatsListResultPage, err error) {
|
|
||||||
result.fn = client.listStatsNextResults
|
|
||||||
req, err := client.ListStatsPreparer(ctx, resourceGroupName, circuitName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListStats", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListStatsSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.ercslr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListStats", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.ercslr, err = client.ListStatsResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListStats", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListStatsPreparer prepares the ListStats request.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListStatsPreparer(ctx context.Context, resourceGroupName string, circuitName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"circuitName": autorest.Encode("path", circuitName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/stats", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListStatsSender sends the ListStats request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListStatsSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListStatsResponder handles the response to the ListStats request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListStatsResponder(resp *http.Response) (result ExpressRouteCircuitsStatsListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listStatsNextResults retrieves the next set of results, if any.
|
|
||||||
func (client ExpressRouteCircuitsClient) listStatsNextResults(lastResults ExpressRouteCircuitsStatsListResult) (result ExpressRouteCircuitsStatsListResult, err error) {
|
|
||||||
req, err := lastResults.expressRouteCircuitsStatsListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listStatsNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListStatsSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listStatsNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListStatsResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "listStatsNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListStatsComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client ExpressRouteCircuitsClient) ListStatsComplete(ctx context.Context, resourceGroupName string, circuitName string) (result ExpressRouteCircuitsStatsListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListStats(ctx, resourceGroupName, circuitName)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,131 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ExpressRouteServiceProvidersClient is the network Client
|
|
||||||
type ExpressRouteServiceProvidersClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewExpressRouteServiceProvidersClient creates an instance of the ExpressRouteServiceProvidersClient client.
|
|
||||||
func NewExpressRouteServiceProvidersClient(subscriptionID string) ExpressRouteServiceProvidersClient {
|
|
||||||
return NewExpressRouteServiceProvidersClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewExpressRouteServiceProvidersClientWithBaseURI creates an instance of the ExpressRouteServiceProvidersClient
|
|
||||||
// client.
|
|
||||||
func NewExpressRouteServiceProvidersClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteServiceProvidersClient {
|
|
||||||
return ExpressRouteServiceProvidersClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all the available express route service providers.
|
|
||||||
func (client ExpressRouteServiceProvidersClient) List(ctx context.Context) (result ExpressRouteServiceProviderListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.ersplr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.ersplr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client ExpressRouteServiceProvidersClient) ListPreparer(ctx context.Context) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteServiceProviders", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client ExpressRouteServiceProvidersClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client ExpressRouteServiceProvidersClient) ListResponder(resp *http.Response) (result ExpressRouteServiceProviderListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client ExpressRouteServiceProvidersClient) listNextResults(lastResults ExpressRouteServiceProviderListResult) (result ExpressRouteServiceProviderListResult, err error) {
|
|
||||||
req, err := lastResults.expressRouteServiceProviderListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client ExpressRouteServiceProvidersClient) ListComplete(ctx context.Context) (result ExpressRouteServiceProviderListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,702 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// InterfacesClient is the network Client
|
|
||||||
type InterfacesClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewInterfacesClient creates an instance of the InterfacesClient client.
|
|
||||||
func NewInterfacesClient(subscriptionID string) InterfacesClient {
|
|
||||||
return NewInterfacesClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewInterfacesClientWithBaseURI creates an instance of the InterfacesClient client.
|
|
||||||
func NewInterfacesClientWithBaseURI(baseURI string, subscriptionID string) InterfacesClient {
|
|
||||||
return InterfacesClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a network interface.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// networkInterfaceName - the name of the network interface.
|
|
||||||
// parameters - parameters supplied to the create or update network interface operation.
|
|
||||||
func (client InterfacesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters Interface) (result InterfacesCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkInterfaceName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client InterfacesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters Interface) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client InterfacesClient) CreateOrUpdateSender(req *http.Request) (future InterfacesCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client InterfacesClient) CreateOrUpdateResponder(resp *http.Response) (result Interface, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified network interface.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// networkInterfaceName - the name of the network interface.
|
|
||||||
func (client InterfacesClient) Delete(ctx context.Context, resourceGroupName string, networkInterfaceName string) (result InterfacesDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, networkInterfaceName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client InterfacesClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client InterfacesClient) DeleteSender(req *http.Request) (future InterfacesDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client InterfacesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets information about the specified network interface.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// networkInterfaceName - the name of the network interface.
|
|
||||||
// expand - expands referenced resources.
|
|
||||||
func (client InterfacesClient) Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, expand string) (result Interface, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, networkInterfaceName, expand)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client InterfacesClient) GetPreparer(ctx context.Context, resourceGroupName string, networkInterfaceName string, expand string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
if len(expand) > 0 {
|
|
||||||
queryParameters["$expand"] = autorest.Encode("query", expand)
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client InterfacesClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client InterfacesClient) GetResponder(resp *http.Response) (result Interface, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetVirtualMachineScaleSetNetworkInterface get the specified network interface in a virtual machine scale set.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualMachineScaleSetName - the name of the virtual machine scale set.
|
|
||||||
// virtualmachineIndex - the virtual machine index.
|
|
||||||
// networkInterfaceName - the name of the network interface.
|
|
||||||
// expand - expands referenced resources.
|
|
||||||
func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterface(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (result Interface, err error) {
|
|
||||||
req, err := client.GetVirtualMachineScaleSetNetworkInterfacePreparer(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, expand)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetVirtualMachineScaleSetNetworkInterfaceSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetVirtualMachineScaleSetNetworkInterfaceResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetVirtualMachineScaleSetNetworkInterfacePreparer prepares the GetVirtualMachineScaleSetNetworkInterface request.
|
|
||||||
func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfacePreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkInterfaceName": autorest.Encode("path", networkInterfaceName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualmachineIndex": autorest.Encode("path", virtualmachineIndex),
|
|
||||||
"virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
if len(expand) > 0 {
|
|
||||||
queryParameters["$expand"] = autorest.Encode("query", expand)
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetVirtualMachineScaleSetNetworkInterfaceSender sends the GetVirtualMachineScaleSetNetworkInterface request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfaceSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetVirtualMachineScaleSetNetworkInterfaceResponder handles the response to the GetVirtualMachineScaleSetNetworkInterface request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfaceResponder(resp *http.Response) (result Interface, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all network interfaces in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client InterfacesClient) List(ctx context.Context, resourceGroupName string) (result InterfaceListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.ilr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.ilr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client InterfacesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client InterfacesClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client InterfacesClient) ListResponder(resp *http.Response) (result InterfaceListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client InterfacesClient) listNextResults(lastResults InterfaceListResult) (result InterfaceListResult, err error) {
|
|
||||||
req, err := lastResults.interfaceListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client InterfacesClient) ListComplete(ctx context.Context, resourceGroupName string) (result InterfaceListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAll gets all network interfaces in a subscription.
|
|
||||||
func (client InterfacesClient) ListAll(ctx context.Context) (result InterfaceListResultPage, err error) {
|
|
||||||
result.fn = client.listAllNextResults
|
|
||||||
req, err := client.ListAllPreparer(ctx)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.ilr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.ilr, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllPreparer prepares the ListAll request.
|
|
||||||
func (client InterfacesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkInterfaces", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllSender sends the ListAll request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client InterfacesClient) ListAllSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllResponder handles the response to the ListAll request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client InterfacesClient) ListAllResponder(resp *http.Response) (result InterfaceListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listAllNextResults retrieves the next set of results, if any.
|
|
||||||
func (client InterfacesClient) listAllNextResults(lastResults InterfaceListResult) (result InterfaceListResult, err error) {
|
|
||||||
req, err := lastResults.interfaceListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listAllNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listAllNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listAllNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client InterfacesClient) ListAllComplete(ctx context.Context) (result InterfaceListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListAll(ctx)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVirtualMachineScaleSetNetworkInterfaces gets all network interfaces in a virtual machine scale set.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualMachineScaleSetName - the name of the virtual machine scale set.
|
|
||||||
func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfaces(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (result InterfaceListResultPage, err error) {
|
|
||||||
result.fn = client.listVirtualMachineScaleSetNetworkInterfacesNextResults
|
|
||||||
req, err := client.ListVirtualMachineScaleSetNetworkInterfacesPreparer(ctx, resourceGroupName, virtualMachineScaleSetName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListVirtualMachineScaleSetNetworkInterfacesSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.ilr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.ilr, err = client.ListVirtualMachineScaleSetNetworkInterfacesResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVirtualMachineScaleSetNetworkInterfacesPreparer prepares the ListVirtualMachineScaleSetNetworkInterfaces request.
|
|
||||||
func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/networkInterfaces", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVirtualMachineScaleSetNetworkInterfacesSender sends the ListVirtualMachineScaleSetNetworkInterfaces request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVirtualMachineScaleSetNetworkInterfacesResponder handles the response to the ListVirtualMachineScaleSetNetworkInterfaces request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesResponder(resp *http.Response) (result InterfaceListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listVirtualMachineScaleSetNetworkInterfacesNextResults retrieves the next set of results, if any.
|
|
||||||
func (client InterfacesClient) listVirtualMachineScaleSetNetworkInterfacesNextResults(lastResults InterfaceListResult) (result InterfaceListResult, err error) {
|
|
||||||
req, err := lastResults.interfaceListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetNetworkInterfacesNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListVirtualMachineScaleSetNetworkInterfacesSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetNetworkInterfacesNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListVirtualMachineScaleSetNetworkInterfacesResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetNetworkInterfacesNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVirtualMachineScaleSetNetworkInterfacesComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesComplete(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string) (result InterfaceListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListVirtualMachineScaleSetNetworkInterfaces(ctx, resourceGroupName, virtualMachineScaleSetName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVirtualMachineScaleSetVMNetworkInterfaces gets information about all network interfaces in a virtual machine in
|
|
||||||
// a virtual machine scale set.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualMachineScaleSetName - the name of the virtual machine scale set.
|
|
||||||
// virtualmachineIndex - the virtual machine index.
|
|
||||||
func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfaces(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (result InterfaceListResultPage, err error) {
|
|
||||||
result.fn = client.listVirtualMachineScaleSetVMNetworkInterfacesNextResults
|
|
||||||
req, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesPreparer(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.ilr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.ilr, err = client.ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVirtualMachineScaleSetVMNetworkInterfacesPreparer prepares the ListVirtualMachineScaleSetVMNetworkInterfaces request.
|
|
||||||
func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualmachineIndex": autorest.Encode("path", virtualmachineIndex),
|
|
||||||
"virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVirtualMachineScaleSetVMNetworkInterfacesSender sends the ListVirtualMachineScaleSetVMNetworkInterfaces request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVirtualMachineScaleSetVMNetworkInterfacesResponder handles the response to the ListVirtualMachineScaleSetVMNetworkInterfaces request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp *http.Response) (result InterfaceListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listVirtualMachineScaleSetVMNetworkInterfacesNextResults retrieves the next set of results, if any.
|
|
||||||
func (client InterfacesClient) listVirtualMachineScaleSetVMNetworkInterfacesNextResults(lastResults InterfaceListResult) (result InterfaceListResult, err error) {
|
|
||||||
req, err := lastResults.interfaceListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetVMNetworkInterfacesNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetVMNetworkInterfacesNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.InterfacesClient", "listVirtualMachineScaleSetVMNetworkInterfacesNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVirtualMachineScaleSetVMNetworkInterfacesComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesComplete(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (result InterfaceListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListVirtualMachineScaleSetVMNetworkInterfaces(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,434 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// LoadBalancersClient is the network Client
|
|
||||||
type LoadBalancersClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewLoadBalancersClient creates an instance of the LoadBalancersClient client.
|
|
||||||
func NewLoadBalancersClient(subscriptionID string) LoadBalancersClient {
|
|
||||||
return NewLoadBalancersClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewLoadBalancersClientWithBaseURI creates an instance of the LoadBalancersClient client.
|
|
||||||
func NewLoadBalancersClientWithBaseURI(baseURI string, subscriptionID string) LoadBalancersClient {
|
|
||||||
return LoadBalancersClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a load balancer.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// loadBalancerName - the name of the load balancer.
|
|
||||||
// parameters - parameters supplied to the create or update load balancer operation.
|
|
||||||
func (client LoadBalancersClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters LoadBalancer) (result LoadBalancersCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, loadBalancerName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client LoadBalancersClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters LoadBalancer) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"loadBalancerName": autorest.Encode("path", loadBalancerName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client LoadBalancersClient) CreateOrUpdateSender(req *http.Request) (future LoadBalancersCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client LoadBalancersClient) CreateOrUpdateResponder(resp *http.Response) (result LoadBalancer, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified load balancer.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// loadBalancerName - the name of the load balancer.
|
|
||||||
func (client LoadBalancersClient) Delete(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancersDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, loadBalancerName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client LoadBalancersClient) DeletePreparer(ctx context.Context, resourceGroupName string, loadBalancerName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"loadBalancerName": autorest.Encode("path", loadBalancerName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client LoadBalancersClient) DeleteSender(req *http.Request) (future LoadBalancersDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client LoadBalancersClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified load balancer.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// loadBalancerName - the name of the load balancer.
|
|
||||||
// expand - expands referenced resources.
|
|
||||||
func (client LoadBalancersClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, expand string) (result LoadBalancer, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, loadBalancerName, expand)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client LoadBalancersClient) GetPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, expand string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"loadBalancerName": autorest.Encode("path", loadBalancerName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
if len(expand) > 0 {
|
|
||||||
queryParameters["$expand"] = autorest.Encode("query", expand)
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client LoadBalancersClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client LoadBalancersClient) GetResponder(resp *http.Response) (result LoadBalancer, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all the load balancers in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client LoadBalancersClient) List(ctx context.Context, resourceGroupName string) (result LoadBalancerListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.lblr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.lblr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client LoadBalancersClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client LoadBalancersClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client LoadBalancersClient) ListResponder(resp *http.Response) (result LoadBalancerListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client LoadBalancersClient) listNextResults(lastResults LoadBalancerListResult) (result LoadBalancerListResult, err error) {
|
|
||||||
req, err := lastResults.loadBalancerListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client LoadBalancersClient) ListComplete(ctx context.Context, resourceGroupName string) (result LoadBalancerListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAll gets all the load balancers in a subscription.
|
|
||||||
func (client LoadBalancersClient) ListAll(ctx context.Context) (result LoadBalancerListResultPage, err error) {
|
|
||||||
result.fn = client.listAllNextResults
|
|
||||||
req, err := client.ListAllPreparer(ctx)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.lblr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.lblr, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllPreparer prepares the ListAll request.
|
|
||||||
func (client LoadBalancersClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/loadBalancers", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllSender sends the ListAll request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client LoadBalancersClient) ListAllSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllResponder handles the response to the ListAll request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client LoadBalancersClient) ListAllResponder(resp *http.Response) (result LoadBalancerListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listAllNextResults retrieves the next set of results, if any.
|
|
||||||
func (client LoadBalancersClient) listAllNextResults(lastResults LoadBalancerListResult) (result LoadBalancerListResult, err error) {
|
|
||||||
req, err := lastResults.loadBalancerListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listAllNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listAllNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listAllNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client LoadBalancersClient) ListAllComplete(ctx context.Context) (result LoadBalancerListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListAll(ctx)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,340 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// LocalNetworkGatewaysClient is the network Client
|
|
||||||
type LocalNetworkGatewaysClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewLocalNetworkGatewaysClient creates an instance of the LocalNetworkGatewaysClient client.
|
|
||||||
func NewLocalNetworkGatewaysClient(subscriptionID string) LocalNetworkGatewaysClient {
|
|
||||||
return NewLocalNetworkGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewLocalNetworkGatewaysClientWithBaseURI creates an instance of the LocalNetworkGatewaysClient client.
|
|
||||||
func NewLocalNetworkGatewaysClientWithBaseURI(baseURI string, subscriptionID string) LocalNetworkGatewaysClient {
|
|
||||||
return LocalNetworkGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a local network gateway in the specified resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// localNetworkGatewayName - the name of the local network gateway.
|
|
||||||
// parameters - parameters supplied to the create or update local network gateway operation.
|
|
||||||
func (client LocalNetworkGatewaysClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, localNetworkGatewayName string, parameters LocalNetworkGateway) (result LocalNetworkGatewaysCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, localNetworkGatewayName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client LocalNetworkGatewaysClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, localNetworkGatewayName string, parameters LocalNetworkGateway) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"localNetworkGatewayName": autorest.Encode("path", localNetworkGatewayName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client LocalNetworkGatewaysClient) CreateOrUpdateSender(req *http.Request) (future LocalNetworkGatewaysCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client LocalNetworkGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result LocalNetworkGateway, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified local network gateway.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// localNetworkGatewayName - the name of the local network gateway.
|
|
||||||
func (client LocalNetworkGatewaysClient) Delete(ctx context.Context, resourceGroupName string, localNetworkGatewayName string) (result LocalNetworkGatewaysDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, localNetworkGatewayName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client LocalNetworkGatewaysClient) DeletePreparer(ctx context.Context, resourceGroupName string, localNetworkGatewayName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"localNetworkGatewayName": autorest.Encode("path", localNetworkGatewayName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client LocalNetworkGatewaysClient) DeleteSender(req *http.Request) (future LocalNetworkGatewaysDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client LocalNetworkGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified local network gateway in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// localNetworkGatewayName - the name of the local network gateway.
|
|
||||||
func (client LocalNetworkGatewaysClient) Get(ctx context.Context, resourceGroupName string, localNetworkGatewayName string) (result LocalNetworkGateway, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, localNetworkGatewayName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client LocalNetworkGatewaysClient) GetPreparer(ctx context.Context, resourceGroupName string, localNetworkGatewayName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"localNetworkGatewayName": autorest.Encode("path", localNetworkGatewayName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client LocalNetworkGatewaysClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client LocalNetworkGatewaysClient) GetResponder(resp *http.Response) (result LocalNetworkGateway, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all the local network gateways in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client LocalNetworkGatewaysClient) List(ctx context.Context, resourceGroupName string) (result LocalNetworkGatewayListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.lnglr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.lnglr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client LocalNetworkGatewaysClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client LocalNetworkGatewaysClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client LocalNetworkGatewaysClient) ListResponder(resp *http.Response) (result LocalNetworkGatewayListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client LocalNetworkGatewaysClient) listNextResults(lastResults LocalNetworkGatewayListResult) (result LocalNetworkGatewayListResult, err error) {
|
|
||||||
req, err := lastResults.localNetworkGatewayListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client LocalNetworkGatewaysClient) ListComplete(ctx context.Context, resourceGroupName string) (result LocalNetworkGatewayListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
9113
vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network/models.go
generated
vendored
9113
vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network/models.go
generated
vendored
File diff suppressed because it is too large
Load Diff
|
@ -1,446 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"github.com/Azure/go-autorest/autorest/validation"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// PublicIPAddressesClient is the network Client
|
|
||||||
type PublicIPAddressesClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewPublicIPAddressesClient creates an instance of the PublicIPAddressesClient client.
|
|
||||||
func NewPublicIPAddressesClient(subscriptionID string) PublicIPAddressesClient {
|
|
||||||
return NewPublicIPAddressesClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewPublicIPAddressesClientWithBaseURI creates an instance of the PublicIPAddressesClient client.
|
|
||||||
func NewPublicIPAddressesClientWithBaseURI(baseURI string, subscriptionID string) PublicIPAddressesClient {
|
|
||||||
return PublicIPAddressesClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a static or dynamic public IP address.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// publicIPAddressName - the name of the public IP address.
|
|
||||||
// parameters - parameters supplied to the create or update public IP address operation.
|
|
||||||
func (client PublicIPAddressesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, publicIPAddressName string, parameters PublicIPAddress) (result PublicIPAddressesCreateOrUpdateFuture, err error) {
|
|
||||||
if err := validation.Validate([]validation.Validation{
|
|
||||||
{TargetValue: parameters,
|
|
||||||
Constraints: []validation.Constraint{{Target: "parameters.PublicIPAddressPropertiesFormat", Name: validation.Null, Rule: false,
|
|
||||||
Chain: []validation.Constraint{{Target: "parameters.PublicIPAddressPropertiesFormat.IPConfiguration", Name: validation.Null, Rule: false,
|
|
||||||
Chain: []validation.Constraint{{Target: "parameters.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat", Name: validation.Null, Rule: false,
|
|
||||||
Chain: []validation.Constraint{{Target: "parameters.PublicIPAddressPropertiesFormat.IPConfiguration.IPConfigurationPropertiesFormat.PublicIPAddress", Name: validation.Null, Rule: false, Chain: nil}}},
|
|
||||||
}},
|
|
||||||
}}}}}); err != nil {
|
|
||||||
return result, validation.NewError("network.PublicIPAddressesClient", "CreateOrUpdate", err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, publicIPAddressName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client PublicIPAddressesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, publicIPAddressName string, parameters PublicIPAddress) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"publicIpAddressName": autorest.Encode("path", publicIPAddressName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client PublicIPAddressesClient) CreateOrUpdateSender(req *http.Request) (future PublicIPAddressesCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client PublicIPAddressesClient) CreateOrUpdateResponder(resp *http.Response) (result PublicIPAddress, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified public IP address.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// publicIPAddressName - the name of the subnet.
|
|
||||||
func (client PublicIPAddressesClient) Delete(ctx context.Context, resourceGroupName string, publicIPAddressName string) (result PublicIPAddressesDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, publicIPAddressName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client PublicIPAddressesClient) DeletePreparer(ctx context.Context, resourceGroupName string, publicIPAddressName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"publicIpAddressName": autorest.Encode("path", publicIPAddressName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client PublicIPAddressesClient) DeleteSender(req *http.Request) (future PublicIPAddressesDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client PublicIPAddressesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified public IP address in a specified resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// publicIPAddressName - the name of the subnet.
|
|
||||||
// expand - expands referenced resources.
|
|
||||||
func (client PublicIPAddressesClient) Get(ctx context.Context, resourceGroupName string, publicIPAddressName string, expand string) (result PublicIPAddress, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, publicIPAddressName, expand)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client PublicIPAddressesClient) GetPreparer(ctx context.Context, resourceGroupName string, publicIPAddressName string, expand string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"publicIpAddressName": autorest.Encode("path", publicIPAddressName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
if len(expand) > 0 {
|
|
||||||
queryParameters["$expand"] = autorest.Encode("query", expand)
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client PublicIPAddressesClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client PublicIPAddressesClient) GetResponder(resp *http.Response) (result PublicIPAddress, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all public IP addresses in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client PublicIPAddressesClient) List(ctx context.Context, resourceGroupName string) (result PublicIPAddressListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.pialr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.pialr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client PublicIPAddressesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client PublicIPAddressesClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client PublicIPAddressesClient) ListResponder(resp *http.Response) (result PublicIPAddressListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client PublicIPAddressesClient) listNextResults(lastResults PublicIPAddressListResult) (result PublicIPAddressListResult, err error) {
|
|
||||||
req, err := lastResults.publicIPAddressListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client PublicIPAddressesClient) ListComplete(ctx context.Context, resourceGroupName string) (result PublicIPAddressListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAll gets all the public IP addresses in a subscription.
|
|
||||||
func (client PublicIPAddressesClient) ListAll(ctx context.Context) (result PublicIPAddressListResultPage, err error) {
|
|
||||||
result.fn = client.listAllNextResults
|
|
||||||
req, err := client.ListAllPreparer(ctx)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.pialr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.pialr, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllPreparer prepares the ListAll request.
|
|
||||||
func (client PublicIPAddressesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPAddresses", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllSender sends the ListAll request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client PublicIPAddressesClient) ListAllSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllResponder handles the response to the ListAll request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client PublicIPAddressesClient) ListAllResponder(resp *http.Response) (result PublicIPAddressListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listAllNextResults retrieves the next set of results, if any.
|
|
||||||
func (client PublicIPAddressesClient) listAllNextResults(lastResults PublicIPAddressListResult) (result PublicIPAddressListResult, err error) {
|
|
||||||
req, err := lastResults.publicIPAddressListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listAllNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listAllNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "listAllNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client PublicIPAddressesClient) ListAllComplete(ctx context.Context) (result PublicIPAddressListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListAll(ctx)
|
|
||||||
return
|
|
||||||
}
|
|
348
vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network/routes.go
generated
vendored
348
vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network/routes.go
generated
vendored
|
@ -1,348 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// RoutesClient is the network Client
|
|
||||||
type RoutesClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewRoutesClient creates an instance of the RoutesClient client.
|
|
||||||
func NewRoutesClient(subscriptionID string) RoutesClient {
|
|
||||||
return NewRoutesClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewRoutesClientWithBaseURI creates an instance of the RoutesClient client.
|
|
||||||
func NewRoutesClientWithBaseURI(baseURI string, subscriptionID string) RoutesClient {
|
|
||||||
return RoutesClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a route in the specified route table.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// routeTableName - the name of the route table.
|
|
||||||
// routeName - the name of the route.
|
|
||||||
// routeParameters - parameters supplied to the create or update route operation.
|
|
||||||
func (client RoutesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, routeTableName string, routeName string, routeParameters Route) (result RoutesCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, routeTableName, routeName, routeParameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client RoutesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, routeTableName string, routeName string, routeParameters Route) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"routeName": autorest.Encode("path", routeName),
|
|
||||||
"routeTableName": autorest.Encode("path", routeTableName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}", pathParameters),
|
|
||||||
autorest.WithJSON(routeParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client RoutesClient) CreateOrUpdateSender(req *http.Request) (future RoutesCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client RoutesClient) CreateOrUpdateResponder(resp *http.Response) (result Route, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified route from a route table.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// routeTableName - the name of the route table.
|
|
||||||
// routeName - the name of the route.
|
|
||||||
func (client RoutesClient) Delete(ctx context.Context, resourceGroupName string, routeTableName string, routeName string) (result RoutesDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, routeTableName, routeName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client RoutesClient) DeletePreparer(ctx context.Context, resourceGroupName string, routeTableName string, routeName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"routeName": autorest.Encode("path", routeName),
|
|
||||||
"routeTableName": autorest.Encode("path", routeTableName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client RoutesClient) DeleteSender(req *http.Request) (future RoutesDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client RoutesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified route from a route table.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// routeTableName - the name of the route table.
|
|
||||||
// routeName - the name of the route.
|
|
||||||
func (client RoutesClient) Get(ctx context.Context, resourceGroupName string, routeTableName string, routeName string) (result Route, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, routeTableName, routeName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client RoutesClient) GetPreparer(ctx context.Context, resourceGroupName string, routeTableName string, routeName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"routeName": autorest.Encode("path", routeName),
|
|
||||||
"routeTableName": autorest.Encode("path", routeTableName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client RoutesClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client RoutesClient) GetResponder(resp *http.Response) (result Route, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all routes in a route table.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// routeTableName - the name of the route table.
|
|
||||||
func (client RoutesClient) List(ctx context.Context, resourceGroupName string, routeTableName string) (result RouteListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName, routeTableName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.rlr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.rlr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client RoutesClient) ListPreparer(ctx context.Context, resourceGroupName string, routeTableName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"routeTableName": autorest.Encode("path", routeTableName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client RoutesClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client RoutesClient) ListResponder(resp *http.Response) (result RouteListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client RoutesClient) listNextResults(lastResults RouteListResult) (result RouteListResult, err error) {
|
|
||||||
req, err := lastResults.routeListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.RoutesClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.RoutesClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RoutesClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client RoutesClient) ListComplete(ctx context.Context, resourceGroupName string, routeTableName string) (result RouteListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName, routeTableName)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,434 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// RouteTablesClient is the network Client
|
|
||||||
type RouteTablesClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewRouteTablesClient creates an instance of the RouteTablesClient client.
|
|
||||||
func NewRouteTablesClient(subscriptionID string) RouteTablesClient {
|
|
||||||
return NewRouteTablesClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewRouteTablesClientWithBaseURI creates an instance of the RouteTablesClient client.
|
|
||||||
func NewRouteTablesClientWithBaseURI(baseURI string, subscriptionID string) RouteTablesClient {
|
|
||||||
return RouteTablesClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate create or updates a route table in a specified resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// routeTableName - the name of the route table.
|
|
||||||
// parameters - parameters supplied to the create or update route table operation.
|
|
||||||
func (client RouteTablesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, routeTableName string, parameters RouteTable) (result RouteTablesCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, routeTableName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client RouteTablesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, routeTableName string, parameters RouteTable) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"routeTableName": autorest.Encode("path", routeTableName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client RouteTablesClient) CreateOrUpdateSender(req *http.Request) (future RouteTablesCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client RouteTablesClient) CreateOrUpdateResponder(resp *http.Response) (result RouteTable, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified route table.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// routeTableName - the name of the route table.
|
|
||||||
func (client RouteTablesClient) Delete(ctx context.Context, resourceGroupName string, routeTableName string) (result RouteTablesDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, routeTableName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client RouteTablesClient) DeletePreparer(ctx context.Context, resourceGroupName string, routeTableName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"routeTableName": autorest.Encode("path", routeTableName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client RouteTablesClient) DeleteSender(req *http.Request) (future RouteTablesDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client RouteTablesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified route table.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// routeTableName - the name of the route table.
|
|
||||||
// expand - expands referenced resources.
|
|
||||||
func (client RouteTablesClient) Get(ctx context.Context, resourceGroupName string, routeTableName string, expand string) (result RouteTable, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, routeTableName, expand)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client RouteTablesClient) GetPreparer(ctx context.Context, resourceGroupName string, routeTableName string, expand string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"routeTableName": autorest.Encode("path", routeTableName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
if len(expand) > 0 {
|
|
||||||
queryParameters["$expand"] = autorest.Encode("query", expand)
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client RouteTablesClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client RouteTablesClient) GetResponder(resp *http.Response) (result RouteTable, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all route tables in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client RouteTablesClient) List(ctx context.Context, resourceGroupName string) (result RouteTableListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.rtlr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.rtlr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client RouteTablesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client RouteTablesClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client RouteTablesClient) ListResponder(resp *http.Response) (result RouteTableListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client RouteTablesClient) listNextResults(lastResults RouteTableListResult) (result RouteTableListResult, err error) {
|
|
||||||
req, err := lastResults.routeTableListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client RouteTablesClient) ListComplete(ctx context.Context, resourceGroupName string) (result RouteTableListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAll gets all route tables in a subscription.
|
|
||||||
func (client RouteTablesClient) ListAll(ctx context.Context) (result RouteTableListResultPage, err error) {
|
|
||||||
result.fn = client.listAllNextResults
|
|
||||||
req, err := client.ListAllPreparer(ctx)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.rtlr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.rtlr, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllPreparer prepares the ListAll request.
|
|
||||||
func (client RouteTablesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeTables", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllSender sends the ListAll request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client RouteTablesClient) ListAllSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllResponder handles the response to the ListAll request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client RouteTablesClient) ListAllResponder(resp *http.Response) (result RouteTableListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listAllNextResults retrieves the next set of results, if any.
|
|
||||||
func (client RouteTablesClient) listAllNextResults(lastResults RouteTableListResult) (result RouteTableListResult, err error) {
|
|
||||||
req, err := lastResults.routeTableListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "listAllNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "listAllNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "listAllNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client RouteTablesClient) ListAllComplete(ctx context.Context) (result RouteTableListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListAll(ctx)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,434 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// SecurityGroupsClient is the network Client
|
|
||||||
type SecurityGroupsClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewSecurityGroupsClient creates an instance of the SecurityGroupsClient client.
|
|
||||||
func NewSecurityGroupsClient(subscriptionID string) SecurityGroupsClient {
|
|
||||||
return NewSecurityGroupsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewSecurityGroupsClientWithBaseURI creates an instance of the SecurityGroupsClient client.
|
|
||||||
func NewSecurityGroupsClientWithBaseURI(baseURI string, subscriptionID string) SecurityGroupsClient {
|
|
||||||
return SecurityGroupsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a network security group in the specified resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// networkSecurityGroupName - the name of the network security group.
|
|
||||||
// parameters - parameters supplied to the create or update network security group operation.
|
|
||||||
func (client SecurityGroupsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, parameters SecurityGroup) (result SecurityGroupsCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkSecurityGroupName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client SecurityGroupsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, parameters SecurityGroup) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SecurityGroupsClient) CreateOrUpdateSender(req *http.Request) (future SecurityGroupsCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SecurityGroupsClient) CreateOrUpdateResponder(resp *http.Response) (result SecurityGroup, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified network security group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// networkSecurityGroupName - the name of the network security group.
|
|
||||||
func (client SecurityGroupsClient) Delete(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (result SecurityGroupsDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, networkSecurityGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client SecurityGroupsClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SecurityGroupsClient) DeleteSender(req *http.Request) (future SecurityGroupsDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SecurityGroupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified network security group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// networkSecurityGroupName - the name of the network security group.
|
|
||||||
// expand - expands referenced resources.
|
|
||||||
func (client SecurityGroupsClient) Get(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, expand string) (result SecurityGroup, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, networkSecurityGroupName, expand)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client SecurityGroupsClient) GetPreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, expand string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
if len(expand) > 0 {
|
|
||||||
queryParameters["$expand"] = autorest.Encode("query", expand)
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SecurityGroupsClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SecurityGroupsClient) GetResponder(resp *http.Response) (result SecurityGroup, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all network security groups in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client SecurityGroupsClient) List(ctx context.Context, resourceGroupName string) (result SecurityGroupListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.sglr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.sglr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client SecurityGroupsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SecurityGroupsClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SecurityGroupsClient) ListResponder(resp *http.Response) (result SecurityGroupListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client SecurityGroupsClient) listNextResults(lastResults SecurityGroupListResult) (result SecurityGroupListResult, err error) {
|
|
||||||
req, err := lastResults.securityGroupListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client SecurityGroupsClient) ListComplete(ctx context.Context, resourceGroupName string) (result SecurityGroupListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAll gets all network security groups in a subscription.
|
|
||||||
func (client SecurityGroupsClient) ListAll(ctx context.Context) (result SecurityGroupListResultPage, err error) {
|
|
||||||
result.fn = client.listAllNextResults
|
|
||||||
req, err := client.ListAllPreparer(ctx)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.sglr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.sglr, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllPreparer prepares the ListAll request.
|
|
||||||
func (client SecurityGroupsClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkSecurityGroups", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllSender sends the ListAll request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SecurityGroupsClient) ListAllSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllResponder handles the response to the ListAll request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SecurityGroupsClient) ListAllResponder(resp *http.Response) (result SecurityGroupListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listAllNextResults retrieves the next set of results, if any.
|
|
||||||
func (client SecurityGroupsClient) listAllNextResults(lastResults SecurityGroupListResult) (result SecurityGroupListResult, err error) {
|
|
||||||
req, err := lastResults.securityGroupListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listAllNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listAllNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "listAllNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client SecurityGroupsClient) ListAllComplete(ctx context.Context) (result SecurityGroupListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListAll(ctx)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,358 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"github.com/Azure/go-autorest/autorest/validation"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// SecurityRulesClient is the network Client
|
|
||||||
type SecurityRulesClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewSecurityRulesClient creates an instance of the SecurityRulesClient client.
|
|
||||||
func NewSecurityRulesClient(subscriptionID string) SecurityRulesClient {
|
|
||||||
return NewSecurityRulesClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewSecurityRulesClientWithBaseURI creates an instance of the SecurityRulesClient client.
|
|
||||||
func NewSecurityRulesClientWithBaseURI(baseURI string, subscriptionID string) SecurityRulesClient {
|
|
||||||
return SecurityRulesClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a security rule in the specified network security group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// networkSecurityGroupName - the name of the network security group.
|
|
||||||
// securityRuleName - the name of the security rule.
|
|
||||||
// securityRuleParameters - parameters supplied to the create or update network security rule operation.
|
|
||||||
func (client SecurityRulesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string, securityRuleParameters SecurityRule) (result SecurityRulesCreateOrUpdateFuture, err error) {
|
|
||||||
if err := validation.Validate([]validation.Validation{
|
|
||||||
{TargetValue: securityRuleParameters,
|
|
||||||
Constraints: []validation.Constraint{{Target: "securityRuleParameters.SecurityRulePropertiesFormat", Name: validation.Null, Rule: false,
|
|
||||||
Chain: []validation.Constraint{{Target: "securityRuleParameters.SecurityRulePropertiesFormat.SourceAddressPrefix", Name: validation.Null, Rule: true, Chain: nil},
|
|
||||||
{Target: "securityRuleParameters.SecurityRulePropertiesFormat.DestinationAddressPrefix", Name: validation.Null, Rule: true, Chain: nil},
|
|
||||||
}}}}}); err != nil {
|
|
||||||
return result, validation.NewError("network.SecurityRulesClient", "CreateOrUpdate", err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, networkSecurityGroupName, securityRuleName, securityRuleParameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client SecurityRulesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string, securityRuleParameters SecurityRule) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"securityRuleName": autorest.Encode("path", securityRuleName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}", pathParameters),
|
|
||||||
autorest.WithJSON(securityRuleParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SecurityRulesClient) CreateOrUpdateSender(req *http.Request) (future SecurityRulesCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SecurityRulesClient) CreateOrUpdateResponder(resp *http.Response) (result SecurityRule, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified network security rule.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// networkSecurityGroupName - the name of the network security group.
|
|
||||||
// securityRuleName - the name of the security rule.
|
|
||||||
func (client SecurityRulesClient) Delete(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string) (result SecurityRulesDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, networkSecurityGroupName, securityRuleName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client SecurityRulesClient) DeletePreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"securityRuleName": autorest.Encode("path", securityRuleName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SecurityRulesClient) DeleteSender(req *http.Request) (future SecurityRulesDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SecurityRulesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get get the specified network security rule.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// networkSecurityGroupName - the name of the network security group.
|
|
||||||
// securityRuleName - the name of the security rule.
|
|
||||||
func (client SecurityRulesClient) Get(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string) (result SecurityRule, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, networkSecurityGroupName, securityRuleName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client SecurityRulesClient) GetPreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string, securityRuleName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"securityRuleName": autorest.Encode("path", securityRuleName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SecurityRulesClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SecurityRulesClient) GetResponder(resp *http.Response) (result SecurityRule, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all security rules in a network security group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// networkSecurityGroupName - the name of the network security group.
|
|
||||||
func (client SecurityRulesClient) List(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (result SecurityRuleListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName, networkSecurityGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.srlr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.srlr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client SecurityRulesClient) ListPreparer(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"networkSecurityGroupName": autorest.Encode("path", networkSecurityGroupName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SecurityRulesClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SecurityRulesClient) ListResponder(resp *http.Response) (result SecurityRuleListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client SecurityRulesClient) listNextResults(lastResults SecurityRuleListResult) (result SecurityRuleListResult, err error) {
|
|
||||||
req, err := lastResults.securityRuleListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client SecurityRulesClient) ListComplete(ctx context.Context, resourceGroupName string, networkSecurityGroupName string) (result SecurityRuleListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName, networkSecurityGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
352
vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network/subnets.go
generated
vendored
352
vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network/subnets.go
generated
vendored
|
@ -1,352 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// SubnetsClient is the network Client
|
|
||||||
type SubnetsClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewSubnetsClient creates an instance of the SubnetsClient client.
|
|
||||||
func NewSubnetsClient(subscriptionID string) SubnetsClient {
|
|
||||||
return NewSubnetsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewSubnetsClientWithBaseURI creates an instance of the SubnetsClient client.
|
|
||||||
func NewSubnetsClientWithBaseURI(baseURI string, subscriptionID string) SubnetsClient {
|
|
||||||
return SubnetsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a subnet in the specified virtual network.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkName - the name of the virtual network.
|
|
||||||
// subnetName - the name of the subnet.
|
|
||||||
// subnetParameters - parameters supplied to the create or update subnet operation.
|
|
||||||
func (client SubnetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, subnetParameters Subnet) (result SubnetsCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkName, subnetName, subnetParameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client SubnetsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, subnetParameters Subnet) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subnetName": autorest.Encode("path", subnetName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}/subnets/{subnetName}", pathParameters),
|
|
||||||
autorest.WithJSON(subnetParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SubnetsClient) CreateOrUpdateSender(req *http.Request) (future SubnetsCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SubnetsClient) CreateOrUpdateResponder(resp *http.Response) (result Subnet, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified subnet.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkName - the name of the virtual network.
|
|
||||||
// subnetName - the name of the subnet.
|
|
||||||
func (client SubnetsClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (result SubnetsDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkName, subnetName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client SubnetsClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subnetName": autorest.Encode("path", subnetName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}/subnets/{subnetName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SubnetsClient) DeleteSender(req *http.Request) (future SubnetsDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SubnetsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified subnet by virtual network and resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkName - the name of the virtual network.
|
|
||||||
// subnetName - the name of the subnet.
|
|
||||||
// expand - expands referenced resources.
|
|
||||||
func (client SubnetsClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, expand string) (result Subnet, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkName, subnetName, expand)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client SubnetsClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, expand string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subnetName": autorest.Encode("path", subnetName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
if len(expand) > 0 {
|
|
||||||
queryParameters["$expand"] = autorest.Encode("query", expand)
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}/subnets/{subnetName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SubnetsClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SubnetsClient) GetResponder(resp *http.Response) (result Subnet, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all subnets in a virtual network.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkName - the name of the virtual network.
|
|
||||||
func (client SubnetsClient) List(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result SubnetListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName, virtualNetworkName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.slr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.slr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client SubnetsClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}/subnets", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client SubnetsClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client SubnetsClient) ListResponder(resp *http.Response) (result SubnetListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client SubnetsClient) listNextResults(lastResults SubnetListResult) (result SubnetListResult, err error) {
|
|
||||||
req, err := lastResults.subnetListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.SubnetsClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client SubnetsClient) ListComplete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result SubnetListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName, virtualNetworkName)
|
|
||||||
return
|
|
||||||
}
|
|
140
vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network/usages.go
generated
vendored
140
vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network/usages.go
generated
vendored
|
@ -1,140 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"github.com/Azure/go-autorest/autorest/validation"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// UsagesClient is the network Client
|
|
||||||
type UsagesClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewUsagesClient creates an instance of the UsagesClient client.
|
|
||||||
func NewUsagesClient(subscriptionID string) UsagesClient {
|
|
||||||
return NewUsagesClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewUsagesClientWithBaseURI creates an instance of the UsagesClient client.
|
|
||||||
func NewUsagesClientWithBaseURI(baseURI string, subscriptionID string) UsagesClient {
|
|
||||||
return UsagesClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// List lists compute usages for a subscription.
|
|
||||||
// Parameters:
|
|
||||||
// location - the location where resource usage is queried.
|
|
||||||
func (client UsagesClient) List(ctx context.Context, location string) (result UsagesListResultPage, err error) {
|
|
||||||
if err := validation.Validate([]validation.Validation{
|
|
||||||
{TargetValue: location,
|
|
||||||
Constraints: []validation.Constraint{{Target: "location", Name: validation.Pattern, Rule: `^[-\w\._]+$`, Chain: nil}}}}); err != nil {
|
|
||||||
return result, validation.NewError("network.UsagesClient", "List", err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, location)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.UsagesClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.ulr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.UsagesClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.ulr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.UsagesClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client UsagesClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"location": autorest.Encode("path", location),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/usages", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client UsagesClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client UsagesClient) ListResponder(resp *http.Response) (result UsagesListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client UsagesClient) listNextResults(lastResults UsagesListResult) (result UsagesListResult, err error) {
|
|
||||||
req, err := lastResults.usagesListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.UsagesClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.UsagesClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.UsagesClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client UsagesClient) ListComplete(ctx context.Context, location string) (result UsagesListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, location)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
import "github.com/Azure/azure-sdk-for-go/version"
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
// UserAgent returns the UserAgent string to use when sending http.Requests.
|
|
||||||
func UserAgent() string {
|
|
||||||
return "Azure-SDK-For-Go/" + version.Number + " network/2015-06-15"
|
|
||||||
}
|
|
||||||
|
|
||||||
// Version returns the semantic version (see http://semver.org) of the client.
|
|
||||||
func Version() string {
|
|
||||||
return version.Number
|
|
||||||
}
|
|
|
@ -1,560 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// VirtualNetworkGatewayConnectionsClient is the network Client
|
|
||||||
type VirtualNetworkGatewayConnectionsClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewVirtualNetworkGatewayConnectionsClient creates an instance of the VirtualNetworkGatewayConnectionsClient client.
|
|
||||||
func NewVirtualNetworkGatewayConnectionsClient(subscriptionID string) VirtualNetworkGatewayConnectionsClient {
|
|
||||||
return NewVirtualNetworkGatewayConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewVirtualNetworkGatewayConnectionsClientWithBaseURI creates an instance of the
|
|
||||||
// VirtualNetworkGatewayConnectionsClient client.
|
|
||||||
func NewVirtualNetworkGatewayConnectionsClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworkGatewayConnectionsClient {
|
|
||||||
return VirtualNetworkGatewayConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a virtual network gateway connection in the specified resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkGatewayConnectionName - the name of the virtual network gateway connection.
|
|
||||||
// parameters - parameters supplied to the create or update virtual network gateway connection operation.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection) (result VirtualNetworkGatewayConnectionsCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdateSender(req *http.Request) (future VirtualNetworkGatewayConnectionsCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetworkGatewayConnection, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified virtual network Gateway connection.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkGatewayConnectionName - the name of the virtual network gateway connection.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string) (result VirtualNetworkGatewayConnectionsDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) DeleteSender(req *http.Request) (future VirtualNetworkGatewayConnectionsDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified virtual network gateway connection by resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkGatewayConnectionName - the name of the virtual network gateway connection.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string) (result VirtualNetworkGatewayConnection, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) GetResponder(resp *http.Response) (result VirtualNetworkGatewayConnection, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSharedKey the Get VirtualNetworkGatewayConnectionSharedKey operation retrieves information about the specified
|
|
||||||
// virtual network gateway connection shared key through Network resource provider.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// connectionSharedKeyName - the virtual network gateway connection shared key name.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) GetSharedKey(ctx context.Context, resourceGroupName string, connectionSharedKeyName string) (result ConnectionSharedKeyResult, err error) {
|
|
||||||
req, err := client.GetSharedKeyPreparer(ctx, resourceGroupName, connectionSharedKeyName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "GetSharedKey", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSharedKeySender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "GetSharedKey", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetSharedKeyResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "GetSharedKey", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSharedKeyPreparer prepares the GetSharedKey request.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeyPreparer(ctx context.Context, resourceGroupName string, connectionSharedKeyName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"connectionSharedKeyName": autorest.Encode("path", connectionSharedKeyName),
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{connectionSharedKeyName}/sharedkey", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSharedKeySender sends the GetSharedKey request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeySender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSharedKeyResponder handles the response to the GetSharedKey request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeyResponder(resp *http.Response) (result ConnectionSharedKeyResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List the List VirtualNetworkGatewayConnections operation retrieves all the virtual network gateways connections
|
|
||||||
// created.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) List(ctx context.Context, resourceGroupName string) (result VirtualNetworkGatewayConnectionListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.vngclr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.vngclr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) ListResponder(resp *http.Response) (result VirtualNetworkGatewayConnectionListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) listNextResults(lastResults VirtualNetworkGatewayConnectionListResult) (result VirtualNetworkGatewayConnectionListResult, err error) {
|
|
||||||
req, err := lastResults.virtualNetworkGatewayConnectionListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualNetworkGatewayConnectionListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResetSharedKey the VirtualNetworkGatewayConnectionResetSharedKey operation resets the virtual network gateway
|
|
||||||
// connection shared key for passed virtual network gateway connection in the specified resource group through Network
|
|
||||||
// resource provider.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkGatewayConnectionName - the virtual network gateway connection reset shared key Name.
|
|
||||||
// parameters - parameters supplied to the begin reset virtual network gateway connection shared key operation
|
|
||||||
// through network resource provider.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey) (result VirtualNetworkGatewayConnectionsResetSharedKeyFuture, err error) {
|
|
||||||
req, err := client.ResetSharedKeyPreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "ResetSharedKey", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.ResetSharedKeySender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "ResetSharedKey", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResetSharedKeyPreparer prepares the ResetSharedKey request.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeyPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPost(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResetSharedKeySender sends the ResetSharedKey request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeySender(req *http.Request) (future VirtualNetworkGatewayConnectionsResetSharedKeyFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResetSharedKeyResponder handles the response to the ResetSharedKey request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeyResponder(resp *http.Response) (result ConnectionResetSharedKey, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetSharedKey the Put VirtualNetworkGatewayConnectionSharedKey operation sets the virtual network gateway connection
|
|
||||||
// shared key for passed virtual network gateway connection in the specified resource group through Network resource
|
|
||||||
// provider.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkGatewayConnectionName - the virtual network gateway connection name.
|
|
||||||
// parameters - parameters supplied to the Begin Set Virtual Network Gateway conection Shared key operation
|
|
||||||
// throughNetwork resource provider.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) SetSharedKey(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey) (result VirtualNetworkGatewayConnectionsSetSharedKeyFuture, err error) {
|
|
||||||
req, err := client.SetSharedKeyPreparer(ctx, resourceGroupName, virtualNetworkGatewayConnectionName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "SetSharedKey", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.SetSharedKeySender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "SetSharedKey", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetSharedKeyPreparer prepares the SetSharedKey request.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeyPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkGatewayConnectionName": autorest.Encode("path", virtualNetworkGatewayConnectionName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetSharedKeySender sends the SetSharedKey request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeySender(req *http.Request) (future VirtualNetworkGatewayConnectionsSetSharedKeyFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetSharedKeyResponder handles the response to the SetSharedKey request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeyResponder(resp *http.Response) (result ConnectionSharedKey, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,484 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// VirtualNetworkGatewaysClient is the network Client
|
|
||||||
type VirtualNetworkGatewaysClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewVirtualNetworkGatewaysClient creates an instance of the VirtualNetworkGatewaysClient client.
|
|
||||||
func NewVirtualNetworkGatewaysClient(subscriptionID string) VirtualNetworkGatewaysClient {
|
|
||||||
return NewVirtualNetworkGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewVirtualNetworkGatewaysClientWithBaseURI creates an instance of the VirtualNetworkGatewaysClient client.
|
|
||||||
func NewVirtualNetworkGatewaysClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworkGatewaysClient {
|
|
||||||
return VirtualNetworkGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a virtual network gateway in the specified resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkGatewayName - the name of the virtual network gateway.
|
|
||||||
// parameters - parameters supplied to create or update virtual network gateway operation.
|
|
||||||
func (client VirtualNetworkGatewaysClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VirtualNetworkGateway) (result VirtualNetworkGatewaysCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkGatewayName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client VirtualNetworkGatewaysClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VirtualNetworkGateway) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewaysClient) CreateOrUpdateSender(req *http.Request) (future VirtualNetworkGatewaysCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetworkGateway, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified virtual network gateway.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkGatewayName - the name of the virtual network gateway.
|
|
||||||
func (client VirtualNetworkGatewaysClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGatewaysDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkGatewayName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client VirtualNetworkGatewaysClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewaysClient) DeleteSender(req *http.Request) (future VirtualNetworkGatewaysDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generatevpnclientpackage generates VPN client package for P2S client of the virtual network gateway in the specified
|
|
||||||
// resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkGatewayName - the name of the virtual network gateway.
|
|
||||||
// parameters - parameters supplied to the generate virtual network gateway VPN client package operation.
|
|
||||||
func (client VirtualNetworkGatewaysClient) Generatevpnclientpackage(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VpnClientParameters) (result String, err error) {
|
|
||||||
req, err := client.GeneratevpnclientpackagePreparer(ctx, resourceGroupName, virtualNetworkGatewayName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Generatevpnclientpackage", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GeneratevpnclientpackageSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Generatevpnclientpackage", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GeneratevpnclientpackageResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Generatevpnclientpackage", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GeneratevpnclientpackagePreparer prepares the Generatevpnclientpackage request.
|
|
||||||
func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackagePreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VpnClientParameters) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPost(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnclientpackage", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GeneratevpnclientpackageSender sends the Generatevpnclientpackage request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackageSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GeneratevpnclientpackageResponder handles the response to the Generatevpnclientpackage request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackageResponder(resp *http.Response) (result String, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
|
|
||||||
autorest.ByUnmarshallingJSON(&result.Value),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified virtual network gateway by resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkGatewayName - the name of the virtual network gateway.
|
|
||||||
func (client VirtualNetworkGatewaysClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGateway, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkGatewayName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client VirtualNetworkGatewaysClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewaysClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewaysClient) GetResponder(resp *http.Response) (result VirtualNetworkGateway, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all virtual network gateways by resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client VirtualNetworkGatewaysClient) List(ctx context.Context, resourceGroupName string) (result VirtualNetworkGatewayListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.vnglr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.vnglr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client VirtualNetworkGatewaysClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewaysClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewaysClient) ListResponder(resp *http.Response) (result VirtualNetworkGatewayListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client VirtualNetworkGatewaysClient) listNextResults(lastResults VirtualNetworkGatewayListResult) (result VirtualNetworkGatewayListResult, err error) {
|
|
||||||
req, err := lastResults.virtualNetworkGatewayListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client VirtualNetworkGatewaysClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualNetworkGatewayListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset resets the primary of the virtual network gateway in the specified resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkGatewayName - the name of the virtual network gateway.
|
|
||||||
// parameters - virtual network gateway vip address supplied to the begin reset of the active-active feature
|
|
||||||
// enabled gateway.
|
|
||||||
func (client VirtualNetworkGatewaysClient) Reset(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VirtualNetworkGateway) (result VirtualNetworkGatewaysResetFuture, err error) {
|
|
||||||
req, err := client.ResetPreparer(ctx, resourceGroupName, virtualNetworkGatewayName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Reset", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.ResetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Reset", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResetPreparer prepares the Reset request.
|
|
||||||
func (client VirtualNetworkGatewaysClient) ResetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkGatewayName string, parameters VirtualNetworkGateway) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkGatewayName": autorest.Encode("path", virtualNetworkGatewayName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPost(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/reset", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResetSender sends the Reset request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworkGatewaysClient) ResetSender(req *http.Request) (future VirtualNetworkGatewaysResetFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResetResponder handles the response to the Reset request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworkGatewaysClient) ResetResponder(resp *http.Response) (result VirtualNetworkGateway, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,434 +0,0 @@
|
||||||
package network
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
// VirtualNetworksClient is the network Client
|
|
||||||
type VirtualNetworksClient struct {
|
|
||||||
BaseClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewVirtualNetworksClient creates an instance of the VirtualNetworksClient client.
|
|
||||||
func NewVirtualNetworksClient(subscriptionID string) VirtualNetworksClient {
|
|
||||||
return NewVirtualNetworksClientWithBaseURI(DefaultBaseURI, subscriptionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewVirtualNetworksClientWithBaseURI creates an instance of the VirtualNetworksClient client.
|
|
||||||
func NewVirtualNetworksClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworksClient {
|
|
||||||
return VirtualNetworksClient{NewWithBaseURI(baseURI, subscriptionID)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdate creates or updates a virtual network in the specified resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkName - the name of the virtual network.
|
|
||||||
// parameters - parameters supplied to the create or update virtual network operation
|
|
||||||
func (client VirtualNetworksClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork) (result VirtualNetworksCreateOrUpdateFuture, err error) {
|
|
||||||
req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CreateOrUpdate", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.CreateOrUpdateSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CreateOrUpdate", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
|
|
||||||
func (client VirtualNetworksClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsContentType("application/json; charset=utf-8"),
|
|
||||||
autorest.AsPut(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters),
|
|
||||||
autorest.WithJSON(parameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworksClient) CreateOrUpdateSender(req *http.Request) (future VirtualNetworksCreateOrUpdateFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworksClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetwork, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete deletes the specified virtual network.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkName - the name of the virtual network.
|
|
||||||
func (client VirtualNetworksClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworksDeleteFuture, err error) {
|
|
||||||
req, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.DeleteSender(req)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", result.Response(), "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePreparer prepares the Delete request.
|
|
||||||
func (client VirtualNetworksClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsDelete(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteSender sends the Delete request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworksClient) DeleteSender(req *http.Request) (future VirtualNetworksDeleteFuture, err error) {
|
|
||||||
sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
|
|
||||||
future.Future = azure.NewFuture(req)
|
|
||||||
future.req = req
|
|
||||||
_, err = future.Done(sender)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = autorest.Respond(future.Response(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteResponder handles the response to the Delete request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworksClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get gets the specified virtual network by resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
// virtualNetworkName - the name of the virtual network.
|
|
||||||
// expand - expands referenced resources.
|
|
||||||
func (client VirtualNetworksClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string) (result VirtualNetwork, err error) {
|
|
||||||
req, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkName, expand)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.GetSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err = client.GetResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPreparer prepares the Get request.
|
|
||||||
func (client VirtualNetworksClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
"virtualNetworkName": autorest.Encode("path", virtualNetworkName),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
if len(expand) > 0 {
|
|
||||||
queryParameters["$expand"] = autorest.Encode("query", expand)
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSender sends the Get request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworksClient) GetSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResponder handles the response to the Get request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworksClient) GetResponder(resp *http.Response) (result VirtualNetwork, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List gets all virtual networks in a resource group.
|
|
||||||
// Parameters:
|
|
||||||
// resourceGroupName - the name of the resource group.
|
|
||||||
func (client VirtualNetworksClient) List(ctx context.Context, resourceGroupName string) (result VirtualNetworkListResultPage, err error) {
|
|
||||||
result.fn = client.listNextResults
|
|
||||||
req, err := client.ListPreparer(ctx, resourceGroupName)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.vnlr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.vnlr, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListPreparer prepares the List request.
|
|
||||||
func (client VirtualNetworksClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"resourceGroupName": autorest.Encode("path", resourceGroupName),
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSender sends the List request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworksClient) ListSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListResponder handles the response to the List request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworksClient) ListResponder(resp *http.Response) (result VirtualNetworkListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listNextResults retrieves the next set of results, if any.
|
|
||||||
func (client VirtualNetworksClient) listNextResults(lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) {
|
|
||||||
req, err := lastResults.virtualNetworkListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client VirtualNetworksClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualNetworkListResultIterator, err error) {
|
|
||||||
result.page, err = client.List(ctx, resourceGroupName)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAll gets all virtual networks in a subscription.
|
|
||||||
func (client VirtualNetworksClient) ListAll(ctx context.Context) (result VirtualNetworkListResultPage, err error) {
|
|
||||||
result.fn = client.listAllNextResults
|
|
||||||
req, err := client.ListAllPreparer(ctx)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", nil, "Failure preparing request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.vnlr.Response = autorest.Response{Response: resp}
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure sending request")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
result.vnlr, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure responding to request")
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllPreparer prepares the ListAll request.
|
|
||||||
func (client VirtualNetworksClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
|
|
||||||
pathParameters := map[string]interface{}{
|
|
||||||
"subscriptionId": autorest.Encode("path", client.SubscriptionID),
|
|
||||||
}
|
|
||||||
|
|
||||||
const APIVersion = "2015-06-15"
|
|
||||||
queryParameters := map[string]interface{}{
|
|
||||||
"api-version": APIVersion,
|
|
||||||
}
|
|
||||||
|
|
||||||
preparer := autorest.CreatePreparer(
|
|
||||||
autorest.AsGet(),
|
|
||||||
autorest.WithBaseURL(client.BaseURI),
|
|
||||||
autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualnetworks", pathParameters),
|
|
||||||
autorest.WithQueryParameters(queryParameters))
|
|
||||||
return preparer.Prepare((&http.Request{}).WithContext(ctx))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllSender sends the ListAll request. The method will close the
|
|
||||||
// http.Response Body if it receives an error.
|
|
||||||
func (client VirtualNetworksClient) ListAllSender(req *http.Request) (*http.Response, error) {
|
|
||||||
return autorest.SendWithSender(client, req,
|
|
||||||
azure.DoRetryWithRegistration(client.Client))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllResponder handles the response to the ListAll request. The method always
|
|
||||||
// closes the http.Response Body.
|
|
||||||
func (client VirtualNetworksClient) ListAllResponder(resp *http.Response) (result VirtualNetworkListResult, err error) {
|
|
||||||
err = autorest.Respond(
|
|
||||||
resp,
|
|
||||||
client.ByInspecting(),
|
|
||||||
azure.WithErrorUnlessStatusCode(http.StatusOK),
|
|
||||||
autorest.ByUnmarshallingJSON(&result),
|
|
||||||
autorest.ByClosing())
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// listAllNextResults retrieves the next set of results, if any.
|
|
||||||
func (client VirtualNetworksClient) listAllNextResults(lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) {
|
|
||||||
req, err := lastResults.virtualNetworkListResultPreparer()
|
|
||||||
if err != nil {
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", nil, "Failure preparing next results request")
|
|
||||||
}
|
|
||||||
if req == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
resp, err := client.ListAllSender(req)
|
|
||||||
if err != nil {
|
|
||||||
result.Response = autorest.Response{Response: resp}
|
|
||||||
return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", resp, "Failure sending next results request")
|
|
||||||
}
|
|
||||||
result, err = client.ListAllResponder(resp)
|
|
||||||
if err != nil {
|
|
||||||
err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "listAllNextResults", resp, "Failure responding to next results request")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
|
|
||||||
func (client VirtualNetworksClient) ListAllComplete(ctx context.Context) (result VirtualNetworkListResultIterator, err error) {
|
|
||||||
result.page, err = client.ListAll(ctx)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
package version
|
|
||||||
|
|
||||||
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
//
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
// Code generated by Microsoft (R) AutoRest Code Generator.
|
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
||||||
|
|
||||||
// Number contains the semantic version of this SDK.
|
|
||||||
const Number = "v16.1.0"
|
|
|
@ -1,18 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/bgentry/speakeasy"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
password, err := speakeasy.Ask("Please enter a password: ")
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
fmt.Printf("Password result: %q\n", password)
|
|
||||||
fmt.Printf("Password len: %d\n", len(password))
|
|
||||||
}
|
|
|
@ -1,201 +0,0 @@
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright {yyyy} {name of copyright owner}
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
|
@ -1,85 +0,0 @@
|
||||||
package pathdriver
|
|
||||||
|
|
||||||
import (
|
|
||||||
"path/filepath"
|
|
||||||
)
|
|
||||||
|
|
||||||
// PathDriver provides all of the path manipulation functions in a common
|
|
||||||
// interface. The context should call these and never use the `filepath`
|
|
||||||
// package or any other package to manipulate paths.
|
|
||||||
type PathDriver interface {
|
|
||||||
Join(paths ...string) string
|
|
||||||
IsAbs(path string) bool
|
|
||||||
Rel(base, target string) (string, error)
|
|
||||||
Base(path string) string
|
|
||||||
Dir(path string) string
|
|
||||||
Clean(path string) string
|
|
||||||
Split(path string) (dir, file string)
|
|
||||||
Separator() byte
|
|
||||||
Abs(path string) (string, error)
|
|
||||||
Walk(string, filepath.WalkFunc) error
|
|
||||||
FromSlash(path string) string
|
|
||||||
ToSlash(path string) string
|
|
||||||
Match(pattern, name string) (matched bool, err error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// pathDriver is a simple default implementation calls the filepath package.
|
|
||||||
type pathDriver struct{}
|
|
||||||
|
|
||||||
// LocalPathDriver is the exported pathDriver struct for convenience.
|
|
||||||
var LocalPathDriver PathDriver = &pathDriver{}
|
|
||||||
|
|
||||||
func (*pathDriver) Join(paths ...string) string {
|
|
||||||
return filepath.Join(paths...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) IsAbs(path string) bool {
|
|
||||||
return filepath.IsAbs(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) Rel(base, target string) (string, error) {
|
|
||||||
return filepath.Rel(base, target)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) Base(path string) string {
|
|
||||||
return filepath.Base(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) Dir(path string) string {
|
|
||||||
return filepath.Dir(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) Clean(path string) string {
|
|
||||||
return filepath.Clean(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) Split(path string) (dir, file string) {
|
|
||||||
return filepath.Split(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) Separator() byte {
|
|
||||||
return filepath.Separator
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) Abs(path string) (string, error) {
|
|
||||||
return filepath.Abs(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Note that filepath.Walk calls os.Stat, so if the context wants to
|
|
||||||
// to call Driver.Stat() for Walk, they need to create a new struct that
|
|
||||||
// overrides this method.
|
|
||||||
func (*pathDriver) Walk(root string, walkFn filepath.WalkFunc) error {
|
|
||||||
return filepath.Walk(root, walkFn)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) FromSlash(path string) string {
|
|
||||||
return filepath.FromSlash(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) ToSlash(path string) string {
|
|
||||||
return filepath.ToSlash(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*pathDriver) Match(pattern, name string) (bool, error) {
|
|
||||||
return filepath.Match(pattern, name)
|
|
||||||
}
|
|
|
@ -1,201 +0,0 @@
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
|
@ -1,27 +0,0 @@
|
||||||
# Copyright The containerd Authors.
|
|
||||||
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
.PHONY: fmt vet test deps
|
|
||||||
|
|
||||||
test: deps
|
|
||||||
go test -v ./...
|
|
||||||
|
|
||||||
deps:
|
|
||||||
go get -d -t ./...
|
|
||||||
|
|
||||||
fmt:
|
|
||||||
gofmt -s -l .
|
|
||||||
|
|
||||||
vet:
|
|
||||||
go vet ./...
|
|
|
@ -1,236 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright The containerd Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package fifo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
"runtime"
|
|
||||||
"sync"
|
|
||||||
"syscall"
|
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
"golang.org/x/net/context"
|
|
||||||
)
|
|
||||||
|
|
||||||
type fifo struct {
|
|
||||||
flag int
|
|
||||||
opened chan struct{}
|
|
||||||
closed chan struct{}
|
|
||||||
closing chan struct{}
|
|
||||||
err error
|
|
||||||
file *os.File
|
|
||||||
closingOnce sync.Once // close has been called
|
|
||||||
closedOnce sync.Once // fifo is closed
|
|
||||||
handle *handle
|
|
||||||
}
|
|
||||||
|
|
||||||
var leakCheckWg *sync.WaitGroup
|
|
||||||
|
|
||||||
// OpenFifo opens a fifo. Returns io.ReadWriteCloser.
|
|
||||||
// Context can be used to cancel this function until open(2) has not returned.
|
|
||||||
// Accepted flags:
|
|
||||||
// - syscall.O_CREAT - create new fifo if one doesn't exist
|
|
||||||
// - syscall.O_RDONLY - open fifo only from reader side
|
|
||||||
// - syscall.O_WRONLY - open fifo only from writer side
|
|
||||||
// - syscall.O_RDWR - open fifo from both sides, never block on syscall level
|
|
||||||
// - syscall.O_NONBLOCK - return io.ReadWriteCloser even if other side of the
|
|
||||||
// fifo isn't open. read/write will be connected after the actual fifo is
|
|
||||||
// open or after fifo is closed.
|
|
||||||
func OpenFifo(ctx context.Context, fn string, flag int, perm os.FileMode) (io.ReadWriteCloser, error) {
|
|
||||||
if _, err := os.Stat(fn); err != nil {
|
|
||||||
if os.IsNotExist(err) && flag&syscall.O_CREAT != 0 {
|
|
||||||
if err := mkfifo(fn, uint32(perm&os.ModePerm)); err != nil && !os.IsExist(err) {
|
|
||||||
return nil, errors.Wrapf(err, "error creating fifo %v", fn)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
block := flag&syscall.O_NONBLOCK == 0 || flag&syscall.O_RDWR != 0
|
|
||||||
|
|
||||||
flag &= ^syscall.O_CREAT
|
|
||||||
flag &= ^syscall.O_NONBLOCK
|
|
||||||
|
|
||||||
h, err := getHandle(fn)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
f := &fifo{
|
|
||||||
handle: h,
|
|
||||||
flag: flag,
|
|
||||||
opened: make(chan struct{}),
|
|
||||||
closed: make(chan struct{}),
|
|
||||||
closing: make(chan struct{}),
|
|
||||||
}
|
|
||||||
|
|
||||||
wg := leakCheckWg
|
|
||||||
if wg != nil {
|
|
||||||
wg.Add(2)
|
|
||||||
}
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
if wg != nil {
|
|
||||||
defer wg.Done()
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
case <-ctx.Done():
|
|
||||||
select {
|
|
||||||
case <-f.opened:
|
|
||||||
default:
|
|
||||||
f.Close()
|
|
||||||
}
|
|
||||||
case <-f.opened:
|
|
||||||
case <-f.closed:
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
go func() {
|
|
||||||
if wg != nil {
|
|
||||||
defer wg.Done()
|
|
||||||
}
|
|
||||||
var file *os.File
|
|
||||||
fn, err := h.Path()
|
|
||||||
if err == nil {
|
|
||||||
file, err = os.OpenFile(fn, flag, 0)
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
case <-f.closing:
|
|
||||||
if err == nil {
|
|
||||||
select {
|
|
||||||
case <-ctx.Done():
|
|
||||||
err = ctx.Err()
|
|
||||||
default:
|
|
||||||
err = errors.Errorf("fifo %v was closed before opening", h.Name())
|
|
||||||
}
|
|
||||||
if file != nil {
|
|
||||||
file.Close()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
f.closedOnce.Do(func() {
|
|
||||||
f.err = err
|
|
||||||
close(f.closed)
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
f.file = file
|
|
||||||
close(f.opened)
|
|
||||||
}()
|
|
||||||
if block {
|
|
||||||
select {
|
|
||||||
case <-f.opened:
|
|
||||||
case <-f.closed:
|
|
||||||
return nil, f.err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return f, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read from a fifo to a byte array.
|
|
||||||
func (f *fifo) Read(b []byte) (int, error) {
|
|
||||||
if f.flag&syscall.O_WRONLY > 0 {
|
|
||||||
return 0, errors.New("reading from write-only fifo")
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
case <-f.opened:
|
|
||||||
return f.file.Read(b)
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
case <-f.opened:
|
|
||||||
return f.file.Read(b)
|
|
||||||
case <-f.closed:
|
|
||||||
return 0, errors.New("reading from a closed fifo")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write from byte array to a fifo.
|
|
||||||
func (f *fifo) Write(b []byte) (int, error) {
|
|
||||||
if f.flag&(syscall.O_WRONLY|syscall.O_RDWR) == 0 {
|
|
||||||
return 0, errors.New("writing to read-only fifo")
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
case <-f.opened:
|
|
||||||
return f.file.Write(b)
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
case <-f.opened:
|
|
||||||
return f.file.Write(b)
|
|
||||||
case <-f.closed:
|
|
||||||
return 0, errors.New("writing to a closed fifo")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Close the fifo. Next reads/writes will error. This method can also be used
|
|
||||||
// before open(2) has returned and fifo was never opened.
|
|
||||||
func (f *fifo) Close() (retErr error) {
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case <-f.closed:
|
|
||||||
f.handle.Close()
|
|
||||||
return
|
|
||||||
default:
|
|
||||||
select {
|
|
||||||
case <-f.opened:
|
|
||||||
f.closedOnce.Do(func() {
|
|
||||||
retErr = f.file.Close()
|
|
||||||
f.err = retErr
|
|
||||||
close(f.closed)
|
|
||||||
})
|
|
||||||
default:
|
|
||||||
if f.flag&syscall.O_RDWR != 0 {
|
|
||||||
runtime.Gosched()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
f.closingOnce.Do(func() {
|
|
||||||
close(f.closing)
|
|
||||||
})
|
|
||||||
reverseMode := syscall.O_WRONLY
|
|
||||||
if f.flag&syscall.O_WRONLY > 0 {
|
|
||||||
reverseMode = syscall.O_RDONLY
|
|
||||||
}
|
|
||||||
fn, err := f.handle.Path()
|
|
||||||
// if Close() is called concurrently(shouldn't) it may cause error
|
|
||||||
// because handle is closed
|
|
||||||
select {
|
|
||||||
case <-f.closed:
|
|
||||||
default:
|
|
||||||
if err != nil {
|
|
||||||
// Path has become invalid. We will leak a goroutine.
|
|
||||||
// This case should not happen in linux.
|
|
||||||
f.closedOnce.Do(func() {
|
|
||||||
f.err = err
|
|
||||||
close(f.closed)
|
|
||||||
})
|
|
||||||
<-f.closed
|
|
||||||
break
|
|
||||||
}
|
|
||||||
f, err := os.OpenFile(fn, reverseMode|syscall.O_NONBLOCK, 0)
|
|
||||||
if err == nil {
|
|
||||||
f.Close()
|
|
||||||
}
|
|
||||||
runtime.Gosched()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,97 +0,0 @@
|
||||||
// +build linux
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright The containerd Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package fifo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"sync"
|
|
||||||
"syscall"
|
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
)
|
|
||||||
|
|
||||||
const O_PATH = 010000000
|
|
||||||
|
|
||||||
type handle struct {
|
|
||||||
f *os.File
|
|
||||||
fd uintptr
|
|
||||||
dev uint64
|
|
||||||
ino uint64
|
|
||||||
closeOnce sync.Once
|
|
||||||
name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func getHandle(fn string) (*handle, error) {
|
|
||||||
f, err := os.OpenFile(fn, O_PATH, 0)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrapf(err, "failed to open %v with O_PATH", fn)
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
stat syscall.Stat_t
|
|
||||||
fd = f.Fd()
|
|
||||||
)
|
|
||||||
if err := syscall.Fstat(int(fd), &stat); err != nil {
|
|
||||||
f.Close()
|
|
||||||
return nil, errors.Wrapf(err, "failed to stat handle %v", fd)
|
|
||||||
}
|
|
||||||
|
|
||||||
h := &handle{
|
|
||||||
f: f,
|
|
||||||
name: fn,
|
|
||||||
dev: uint64(stat.Dev),
|
|
||||||
ino: stat.Ino,
|
|
||||||
fd: fd,
|
|
||||||
}
|
|
||||||
|
|
||||||
// check /proc just in case
|
|
||||||
if _, err := os.Stat(h.procPath()); err != nil {
|
|
||||||
f.Close()
|
|
||||||
return nil, errors.Wrapf(err, "couldn't stat %v", h.procPath())
|
|
||||||
}
|
|
||||||
|
|
||||||
return h, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *handle) procPath() string {
|
|
||||||
return fmt.Sprintf("/proc/self/fd/%d", h.fd)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *handle) Name() string {
|
|
||||||
return h.name
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *handle) Path() (string, error) {
|
|
||||||
var stat syscall.Stat_t
|
|
||||||
if err := syscall.Stat(h.procPath(), &stat); err != nil {
|
|
||||||
return "", errors.Wrapf(err, "path %v could not be statted", h.procPath())
|
|
||||||
}
|
|
||||||
if uint64(stat.Dev) != h.dev || stat.Ino != h.ino {
|
|
||||||
return "", errors.Errorf("failed to verify handle %v/%v %v/%v", stat.Dev, h.dev, stat.Ino, h.ino)
|
|
||||||
}
|
|
||||||
return h.procPath(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *handle) Close() error {
|
|
||||||
h.closeOnce.Do(func() {
|
|
||||||
h.f.Close()
|
|
||||||
})
|
|
||||||
return nil
|
|
||||||
}
|
|
|
@ -1,65 +0,0 @@
|
||||||
// +build !linux
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright The containerd Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package fifo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"syscall"
|
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
)
|
|
||||||
|
|
||||||
type handle struct {
|
|
||||||
fn string
|
|
||||||
dev uint64
|
|
||||||
ino uint64
|
|
||||||
}
|
|
||||||
|
|
||||||
func getHandle(fn string) (*handle, error) {
|
|
||||||
var stat syscall.Stat_t
|
|
||||||
if err := syscall.Stat(fn, &stat); err != nil {
|
|
||||||
return nil, errors.Wrapf(err, "failed to stat %v", fn)
|
|
||||||
}
|
|
||||||
|
|
||||||
h := &handle{
|
|
||||||
fn: fn,
|
|
||||||
dev: uint64(stat.Dev),
|
|
||||||
ino: uint64(stat.Ino),
|
|
||||||
}
|
|
||||||
|
|
||||||
return h, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *handle) Path() (string, error) {
|
|
||||||
var stat syscall.Stat_t
|
|
||||||
if err := syscall.Stat(h.fn, &stat); err != nil {
|
|
||||||
return "", errors.Wrapf(err, "path %v could not be statted", h.fn)
|
|
||||||
}
|
|
||||||
if uint64(stat.Dev) != h.dev || uint64(stat.Ino) != h.ino {
|
|
||||||
return "", errors.Errorf("failed to verify handle %v/%v %v/%v for %v", stat.Dev, h.dev, stat.Ino, h.ino, h.fn)
|
|
||||||
}
|
|
||||||
return h.fn, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *handle) Name() string {
|
|
||||||
return h.fn
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *handle) Close() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
// +build !solaris
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright The containerd Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package fifo
|
|
||||||
|
|
||||||
import "syscall"
|
|
||||||
|
|
||||||
func mkfifo(path string, mode uint32) (err error) {
|
|
||||||
return syscall.Mkfifo(path, mode)
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
// +build solaris
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright The containerd Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package fifo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
)
|
|
||||||
|
|
||||||
func mkfifo(path string, mode uint32) (err error) {
|
|
||||||
return unix.Mkfifo(path, mode)
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
### fifo
|
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/containerd/fifo.svg?branch=master)](https://travis-ci.org/containerd/fifo)
|
|
||||||
|
|
||||||
Go package for handling fifos in a sane way.
|
|
||||||
|
|
||||||
```
|
|
||||||
// OpenFifo opens a fifo. Returns io.ReadWriteCloser.
|
|
||||||
// Context can be used to cancel this function until open(2) has not returned.
|
|
||||||
// Accepted flags:
|
|
||||||
// - syscall.O_CREAT - create new fifo if one doesn't exist
|
|
||||||
// - syscall.O_RDONLY - open fifo only from reader side
|
|
||||||
// - syscall.O_WRONLY - open fifo only from writer side
|
|
||||||
// - syscall.O_RDWR - open fifo from both sides, never block on syscall level
|
|
||||||
// - syscall.O_NONBLOCK - return io.ReadWriteCloser even if other side of the
|
|
||||||
// fifo isn't open. read/write will be connected after the actual fifo is
|
|
||||||
// open or after fifo is closed.
|
|
||||||
func OpenFifo(ctx context.Context, fn string, flag int, perm os.FileMode) (io.ReadWriteCloser, error)
|
|
||||||
|
|
||||||
|
|
||||||
// Read from a fifo to a byte array.
|
|
||||||
func (f *fifo) Read(b []byte) (int, error)
|
|
||||||
|
|
||||||
|
|
||||||
// Write from byte array to a fifo.
|
|
||||||
func (f *fifo) Write(b []byte) (int, error)
|
|
||||||
|
|
||||||
|
|
||||||
// Close the fifo. Next reads/writes will error. This method can also be used
|
|
||||||
// before open(2) has returned and fifo was never opened.
|
|
||||||
func (f *fifo) Close() error
|
|
||||||
```
|
|
|
@ -1,21 +0,0 @@
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014 Fatih Arslan
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
|
@ -1,163 +0,0 @@
|
||||||
# Structs [![GoDoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](http://godoc.org/github.com/fatih/structs) [![Build Status](http://img.shields.io/travis/fatih/structs.svg?style=flat-square)](https://travis-ci.org/fatih/structs) [![Coverage Status](http://img.shields.io/coveralls/fatih/structs.svg?style=flat-square)](https://coveralls.io/r/fatih/structs)
|
|
||||||
|
|
||||||
Structs contains various utilities to work with Go (Golang) structs. It was
|
|
||||||
initially used by me to convert a struct into a `map[string]interface{}`. With
|
|
||||||
time I've added other utilities for structs. It's basically a high level
|
|
||||||
package based on primitives from the reflect package. Feel free to add new
|
|
||||||
functions or improve the existing code.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```bash
|
|
||||||
go get github.com/fatih/structs
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage and Examples
|
|
||||||
|
|
||||||
Just like the standard lib `strings`, `bytes` and co packages, `structs` has
|
|
||||||
many global functions to manipulate or organize your struct data. Lets define
|
|
||||||
and declare a struct:
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Server struct {
|
|
||||||
Name string `json:"name,omitempty"`
|
|
||||||
ID int
|
|
||||||
Enabled bool
|
|
||||||
users []string // not exported
|
|
||||||
http.Server // embedded
|
|
||||||
}
|
|
||||||
|
|
||||||
server := &Server{
|
|
||||||
Name: "gopher",
|
|
||||||
ID: 123456,
|
|
||||||
Enabled: true,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
// Convert a struct to a map[string]interface{}
|
|
||||||
// => {"Name":"gopher", "ID":123456, "Enabled":true}
|
|
||||||
m := structs.Map(server)
|
|
||||||
|
|
||||||
// Convert the values of a struct to a []interface{}
|
|
||||||
// => ["gopher", 123456, true]
|
|
||||||
v := structs.Values(server)
|
|
||||||
|
|
||||||
// Convert the names of a struct to a []string
|
|
||||||
// (see "Names methods" for more info about fields)
|
|
||||||
n := structs.Names(server)
|
|
||||||
|
|
||||||
// Convert the values of a struct to a []*Field
|
|
||||||
// (see "Field methods" for more info about fields)
|
|
||||||
f := structs.Fields(server)
|
|
||||||
|
|
||||||
// Return the struct name => "Server"
|
|
||||||
n := structs.Name(server)
|
|
||||||
|
|
||||||
// Check if any field of a struct is initialized or not.
|
|
||||||
h := structs.HasZero(server)
|
|
||||||
|
|
||||||
// Check if all fields of a struct is initialized or not.
|
|
||||||
z := structs.IsZero(server)
|
|
||||||
|
|
||||||
// Check if server is a struct or a pointer to struct
|
|
||||||
i := structs.IsStruct(server)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Struct methods
|
|
||||||
|
|
||||||
The structs functions can be also used as independent methods by creating a new
|
|
||||||
`*structs.Struct`. This is handy if you want to have more control over the
|
|
||||||
structs (such as retrieving a single Field).
|
|
||||||
|
|
||||||
```go
|
|
||||||
// Create a new struct type:
|
|
||||||
s := structs.New(server)
|
|
||||||
|
|
||||||
m := s.Map() // Get a map[string]interface{}
|
|
||||||
v := s.Values() // Get a []interface{}
|
|
||||||
f := s.Fields() // Get a []*Field
|
|
||||||
n := s.Names() // Get a []string
|
|
||||||
f := s.Field(name) // Get a *Field based on the given field name
|
|
||||||
f, ok := s.FieldOk(name) // Get a *Field based on the given field name
|
|
||||||
n := s.Name() // Get the struct name
|
|
||||||
h := s.HasZero() // Check if any field is initialized
|
|
||||||
z := s.IsZero() // Check if all fields are initialized
|
|
||||||
```
|
|
||||||
|
|
||||||
### Field methods
|
|
||||||
|
|
||||||
We can easily examine a single Field for more detail. Below you can see how we
|
|
||||||
get and interact with various field methods:
|
|
||||||
|
|
||||||
|
|
||||||
```go
|
|
||||||
s := structs.New(server)
|
|
||||||
|
|
||||||
// Get the Field struct for the "Name" field
|
|
||||||
name := s.Field("Name")
|
|
||||||
|
|
||||||
// Get the underlying value, value => "gopher"
|
|
||||||
value := name.Value().(string)
|
|
||||||
|
|
||||||
// Set the field's value
|
|
||||||
name.Set("another gopher")
|
|
||||||
|
|
||||||
// Get the field's kind, kind => "string"
|
|
||||||
name.Kind()
|
|
||||||
|
|
||||||
// Check if the field is exported or not
|
|
||||||
if name.IsExported() {
|
|
||||||
fmt.Println("Name field is exported")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if the value is a zero value, such as "" for string, 0 for int
|
|
||||||
if !name.IsZero() {
|
|
||||||
fmt.Println("Name is initialized")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if the field is an anonymous (embedded) field
|
|
||||||
if !name.IsEmbedded() {
|
|
||||||
fmt.Println("Name is not an embedded field")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the Field's tag value for tag name "json", tag value => "name,omitempty"
|
|
||||||
tagValue := name.Tag("json")
|
|
||||||
```
|
|
||||||
|
|
||||||
Nested structs are supported too:
|
|
||||||
|
|
||||||
```go
|
|
||||||
addrField := s.Field("Server").Field("Addr")
|
|
||||||
|
|
||||||
// Get the value for addr
|
|
||||||
a := addrField.Value().(string)
|
|
||||||
|
|
||||||
// Or get all fields
|
|
||||||
httpServer := s.Field("Server").Fields()
|
|
||||||
```
|
|
||||||
|
|
||||||
We can also get a slice of Fields from the Struct type to iterate over all
|
|
||||||
fields. This is handy if you wish to examine all fields:
|
|
||||||
|
|
||||||
```go
|
|
||||||
s := structs.New(server)
|
|
||||||
|
|
||||||
for _, f := range s.Fields() {
|
|
||||||
fmt.Printf("field name: %+v\n", f.Name())
|
|
||||||
|
|
||||||
if f.IsExported() {
|
|
||||||
fmt.Printf("value : %+v\n", f.Value())
|
|
||||||
fmt.Printf("is zero : %+v\n", f.IsZero())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Credits
|
|
||||||
|
|
||||||
* [Fatih Arslan](https://github.com/fatih)
|
|
||||||
* [Cihangir Savas](https://github.com/cihangir)
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
The MIT License (MIT) - see LICENSE.md for more details
|
|
|
@ -1,141 +0,0 @@
|
||||||
package structs
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"reflect"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
errNotExported = errors.New("field is not exported")
|
|
||||||
errNotSettable = errors.New("field is not settable")
|
|
||||||
)
|
|
||||||
|
|
||||||
// Field represents a single struct field that encapsulates high level
|
|
||||||
// functions around the field.
|
|
||||||
type Field struct {
|
|
||||||
value reflect.Value
|
|
||||||
field reflect.StructField
|
|
||||||
defaultTag string
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tag returns the value associated with key in the tag string. If there is no
|
|
||||||
// such key in the tag, Tag returns the empty string.
|
|
||||||
func (f *Field) Tag(key string) string {
|
|
||||||
return f.field.Tag.Get(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Value returns the underlying value of the field. It panics if the field
|
|
||||||
// is not exported.
|
|
||||||
func (f *Field) Value() interface{} {
|
|
||||||
return f.value.Interface()
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsEmbedded returns true if the given field is an anonymous field (embedded)
|
|
||||||
func (f *Field) IsEmbedded() bool {
|
|
||||||
return f.field.Anonymous
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsExported returns true if the given field is exported.
|
|
||||||
func (f *Field) IsExported() bool {
|
|
||||||
return f.field.PkgPath == ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsZero returns true if the given field is not initialized (has a zero value).
|
|
||||||
// It panics if the field is not exported.
|
|
||||||
func (f *Field) IsZero() bool {
|
|
||||||
zero := reflect.Zero(f.value.Type()).Interface()
|
|
||||||
current := f.Value()
|
|
||||||
|
|
||||||
return reflect.DeepEqual(current, zero)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Name returns the name of the given field
|
|
||||||
func (f *Field) Name() string {
|
|
||||||
return f.field.Name
|
|
||||||
}
|
|
||||||
|
|
||||||
// Kind returns the fields kind, such as "string", "map", "bool", etc ..
|
|
||||||
func (f *Field) Kind() reflect.Kind {
|
|
||||||
return f.value.Kind()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set sets the field to given value v. It returns an error if the field is not
|
|
||||||
// settable (not addressable or not exported) or if the given value's type
|
|
||||||
// doesn't match the fields type.
|
|
||||||
func (f *Field) Set(val interface{}) error {
|
|
||||||
// we can't set unexported fields, so be sure this field is exported
|
|
||||||
if !f.IsExported() {
|
|
||||||
return errNotExported
|
|
||||||
}
|
|
||||||
|
|
||||||
// do we get here? not sure...
|
|
||||||
if !f.value.CanSet() {
|
|
||||||
return errNotSettable
|
|
||||||
}
|
|
||||||
|
|
||||||
given := reflect.ValueOf(val)
|
|
||||||
|
|
||||||
if f.value.Kind() != given.Kind() {
|
|
||||||
return fmt.Errorf("wrong kind. got: %s want: %s", given.Kind(), f.value.Kind())
|
|
||||||
}
|
|
||||||
|
|
||||||
f.value.Set(given)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Zero sets the field to its zero value. It returns an error if the field is not
|
|
||||||
// settable (not addressable or not exported).
|
|
||||||
func (f *Field) Zero() error {
|
|
||||||
zero := reflect.Zero(f.value.Type()).Interface()
|
|
||||||
return f.Set(zero)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fields returns a slice of Fields. This is particular handy to get the fields
|
|
||||||
// of a nested struct . A struct tag with the content of "-" ignores the
|
|
||||||
// checking of that particular field. Example:
|
|
||||||
//
|
|
||||||
// // Field is ignored by this package.
|
|
||||||
// Field *http.Request `structs:"-"`
|
|
||||||
//
|
|
||||||
// It panics if field is not exported or if field's kind is not struct
|
|
||||||
func (f *Field) Fields() []*Field {
|
|
||||||
return getFields(f.value, f.defaultTag)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Field returns the field from a nested struct. It panics if the nested struct
|
|
||||||
// is not exported or if the field was not found.
|
|
||||||
func (f *Field) Field(name string) *Field {
|
|
||||||
field, ok := f.FieldOk(name)
|
|
||||||
if !ok {
|
|
||||||
panic("field not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
return field
|
|
||||||
}
|
|
||||||
|
|
||||||
// FieldOk returns the field from a nested struct. The boolean returns whether
|
|
||||||
// the field was found (true) or not (false).
|
|
||||||
func (f *Field) FieldOk(name string) (*Field, bool) {
|
|
||||||
value := &f.value
|
|
||||||
// value must be settable so we need to make sure it holds the address of the
|
|
||||||
// variable and not a copy, so we can pass the pointer to strctVal instead of a
|
|
||||||
// copy (which is not assigned to any variable, hence not settable).
|
|
||||||
// see "https://blog.golang.org/laws-of-reflection#TOC_8."
|
|
||||||
if f.value.Kind() != reflect.Ptr {
|
|
||||||
a := f.value.Addr()
|
|
||||||
value = &a
|
|
||||||
}
|
|
||||||
v := strctVal(value.Interface())
|
|
||||||
t := v.Type()
|
|
||||||
|
|
||||||
field, ok := t.FieldByName(name)
|
|
||||||
if !ok {
|
|
||||||
return nil, false
|
|
||||||
}
|
|
||||||
|
|
||||||
return &Field{
|
|
||||||
field: field,
|
|
||||||
value: v.FieldByName(name),
|
|
||||||
}, true
|
|
||||||
}
|
|
|
@ -1,576 +0,0 @@
|
||||||
// Package structs contains various utilities functions to work with structs.
|
|
||||||
package structs
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"reflect"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
// DefaultTagName is the default tag name for struct fields which provides
|
|
||||||
// a more granular to tweak certain structs. Lookup the necessary functions
|
|
||||||
// for more info.
|
|
||||||
DefaultTagName = "structs" // struct's field default tag name
|
|
||||||
)
|
|
||||||
|
|
||||||
// Struct encapsulates a struct type to provide several high level functions
|
|
||||||
// around the struct.
|
|
||||||
type Struct struct {
|
|
||||||
raw interface{}
|
|
||||||
value reflect.Value
|
|
||||||
TagName string
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new *Struct with the struct s. It panics if the s's kind is
|
|
||||||
// not struct.
|
|
||||||
func New(s interface{}) *Struct {
|
|
||||||
return &Struct{
|
|
||||||
raw: s,
|
|
||||||
value: strctVal(s),
|
|
||||||
TagName: DefaultTagName,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Map converts the given struct to a map[string]interface{}, where the keys
|
|
||||||
// of the map are the field names and the values of the map the associated
|
|
||||||
// values of the fields. The default key string is the struct field name but
|
|
||||||
// can be changed in the struct field's tag value. The "structs" key in the
|
|
||||||
// struct's field tag value is the key name. Example:
|
|
||||||
//
|
|
||||||
// // Field appears in map as key "myName".
|
|
||||||
// Name string `structs:"myName"`
|
|
||||||
//
|
|
||||||
// A tag value with the content of "-" ignores that particular field. Example:
|
|
||||||
//
|
|
||||||
// // Field is ignored by this package.
|
|
||||||
// Field bool `structs:"-"`
|
|
||||||
//
|
|
||||||
// A tag value with the content of "string" uses the stringer to get the value. Example:
|
|
||||||
//
|
|
||||||
// // The value will be output of Animal's String() func.
|
|
||||||
// // Map will panic if Animal does not implement String().
|
|
||||||
// Field *Animal `structs:"field,string"`
|
|
||||||
//
|
|
||||||
// A tag value with the option of "flatten" used in a struct field is to flatten its fields
|
|
||||||
// in the output map. Example:
|
|
||||||
//
|
|
||||||
// // The FieldStruct's fields will be flattened into the output map.
|
|
||||||
// FieldStruct time.Time `structs:",flatten"`
|
|
||||||
//
|
|
||||||
// A tag value with the option of "omitnested" stops iterating further if the type
|
|
||||||
// is a struct. Example:
|
|
||||||
//
|
|
||||||
// // Field is not processed further by this package.
|
|
||||||
// Field time.Time `structs:"myName,omitnested"`
|
|
||||||
// Field *http.Request `structs:",omitnested"`
|
|
||||||
//
|
|
||||||
// A tag value with the option of "omitempty" ignores that particular field if
|
|
||||||
// the field value is empty. Example:
|
|
||||||
//
|
|
||||||
// // Field appears in map as key "myName", but the field is
|
|
||||||
// // skipped if empty.
|
|
||||||
// Field string `structs:"myName,omitempty"`
|
|
||||||
//
|
|
||||||
// // Field appears in map as key "Field" (the default), but
|
|
||||||
// // the field is skipped if empty.
|
|
||||||
// Field string `structs:",omitempty"`
|
|
||||||
//
|
|
||||||
// Note that only exported fields of a struct can be accessed, non exported
|
|
||||||
// fields will be neglected.
|
|
||||||
func (s *Struct) Map() map[string]interface{} {
|
|
||||||
out := make(map[string]interface{})
|
|
||||||
s.FillMap(out)
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|
||||||
// FillMap is the same as Map. Instead of returning the output, it fills the
|
|
||||||
// given map.
|
|
||||||
func (s *Struct) FillMap(out map[string]interface{}) {
|
|
||||||
if out == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fields := s.structFields()
|
|
||||||
|
|
||||||
for _, field := range fields {
|
|
||||||
name := field.Name
|
|
||||||
val := s.value.FieldByName(name)
|
|
||||||
isSubStruct := false
|
|
||||||
var finalVal interface{}
|
|
||||||
|
|
||||||
tagName, tagOpts := parseTag(field.Tag.Get(s.TagName))
|
|
||||||
if tagName != "" {
|
|
||||||
name = tagName
|
|
||||||
}
|
|
||||||
|
|
||||||
// if the value is a zero value and the field is marked as omitempty do
|
|
||||||
// not include
|
|
||||||
if tagOpts.Has("omitempty") {
|
|
||||||
zero := reflect.Zero(val.Type()).Interface()
|
|
||||||
current := val.Interface()
|
|
||||||
|
|
||||||
if reflect.DeepEqual(current, zero) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if !tagOpts.Has("omitnested") {
|
|
||||||
finalVal = s.nested(val)
|
|
||||||
|
|
||||||
v := reflect.ValueOf(val.Interface())
|
|
||||||
if v.Kind() == reflect.Ptr {
|
|
||||||
v = v.Elem()
|
|
||||||
}
|
|
||||||
|
|
||||||
switch v.Kind() {
|
|
||||||
case reflect.Map, reflect.Struct:
|
|
||||||
isSubStruct = true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
finalVal = val.Interface()
|
|
||||||
}
|
|
||||||
|
|
||||||
if tagOpts.Has("string") {
|
|
||||||
s, ok := val.Interface().(fmt.Stringer)
|
|
||||||
if ok {
|
|
||||||
out[name] = s.String()
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if isSubStruct && (tagOpts.Has("flatten")) {
|
|
||||||
for k := range finalVal.(map[string]interface{}) {
|
|
||||||
out[k] = finalVal.(map[string]interface{})[k]
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
out[name] = finalVal
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Values converts the given s struct's field values to a []interface{}. A
|
|
||||||
// struct tag with the content of "-" ignores the that particular field.
|
|
||||||
// Example:
|
|
||||||
//
|
|
||||||
// // Field is ignored by this package.
|
|
||||||
// Field int `structs:"-"`
|
|
||||||
//
|
|
||||||
// A value with the option of "omitnested" stops iterating further if the type
|
|
||||||
// is a struct. Example:
|
|
||||||
//
|
|
||||||
// // Fields is not processed further by this package.
|
|
||||||
// Field time.Time `structs:",omitnested"`
|
|
||||||
// Field *http.Request `structs:",omitnested"`
|
|
||||||
//
|
|
||||||
// A tag value with the option of "omitempty" ignores that particular field and
|
|
||||||
// is not added to the values if the field value is empty. Example:
|
|
||||||
//
|
|
||||||
// // Field is skipped if empty
|
|
||||||
// Field string `structs:",omitempty"`
|
|
||||||
//
|
|
||||||
// Note that only exported fields of a struct can be accessed, non exported
|
|
||||||
// fields will be neglected.
|
|
||||||
func (s *Struct) Values() []interface{} {
|
|
||||||
fields := s.structFields()
|
|
||||||
|
|
||||||
var t []interface{}
|
|
||||||
|
|
||||||
for _, field := range fields {
|
|
||||||
val := s.value.FieldByName(field.Name)
|
|
||||||
|
|
||||||
_, tagOpts := parseTag(field.Tag.Get(s.TagName))
|
|
||||||
|
|
||||||
// if the value is a zero value and the field is marked as omitempty do
|
|
||||||
// not include
|
|
||||||
if tagOpts.Has("omitempty") {
|
|
||||||
zero := reflect.Zero(val.Type()).Interface()
|
|
||||||
current := val.Interface()
|
|
||||||
|
|
||||||
if reflect.DeepEqual(current, zero) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if tagOpts.Has("string") {
|
|
||||||
s, ok := val.Interface().(fmt.Stringer)
|
|
||||||
if ok {
|
|
||||||
t = append(t, s.String())
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if IsStruct(val.Interface()) && !tagOpts.Has("omitnested") {
|
|
||||||
// look out for embedded structs, and convert them to a
|
|
||||||
// []interface{} to be added to the final values slice
|
|
||||||
for _, embeddedVal := range Values(val.Interface()) {
|
|
||||||
t = append(t, embeddedVal)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
t = append(t, val.Interface())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return t
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fields returns a slice of Fields. A struct tag with the content of "-"
|
|
||||||
// ignores the checking of that particular field. Example:
|
|
||||||
//
|
|
||||||
// // Field is ignored by this package.
|
|
||||||
// Field bool `structs:"-"`
|
|
||||||
//
|
|
||||||
// It panics if s's kind is not struct.
|
|
||||||
func (s *Struct) Fields() []*Field {
|
|
||||||
return getFields(s.value, s.TagName)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Names returns a slice of field names. A struct tag with the content of "-"
|
|
||||||
// ignores the checking of that particular field. Example:
|
|
||||||
//
|
|
||||||
// // Field is ignored by this package.
|
|
||||||
// Field bool `structs:"-"`
|
|
||||||
//
|
|
||||||
// It panics if s's kind is not struct.
|
|
||||||
func (s *Struct) Names() []string {
|
|
||||||
fields := getFields(s.value, s.TagName)
|
|
||||||
|
|
||||||
names := make([]string, len(fields))
|
|
||||||
|
|
||||||
for i, field := range fields {
|
|
||||||
names[i] = field.Name()
|
|
||||||
}
|
|
||||||
|
|
||||||
return names
|
|
||||||
}
|
|
||||||
|
|
||||||
func getFields(v reflect.Value, tagName string) []*Field {
|
|
||||||
if v.Kind() == reflect.Ptr {
|
|
||||||
v = v.Elem()
|
|
||||||
}
|
|
||||||
|
|
||||||
t := v.Type()
|
|
||||||
|
|
||||||
var fields []*Field
|
|
||||||
|
|
||||||
for i := 0; i < t.NumField(); i++ {
|
|
||||||
field := t.Field(i)
|
|
||||||
|
|
||||||
if tag := field.Tag.Get(tagName); tag == "-" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
f := &Field{
|
|
||||||
field: field,
|
|
||||||
value: v.FieldByName(field.Name),
|
|
||||||
}
|
|
||||||
|
|
||||||
fields = append(fields, f)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return fields
|
|
||||||
}
|
|
||||||
|
|
||||||
// Field returns a new Field struct that provides several high level functions
|
|
||||||
// around a single struct field entity. It panics if the field is not found.
|
|
||||||
func (s *Struct) Field(name string) *Field {
|
|
||||||
f, ok := s.FieldOk(name)
|
|
||||||
if !ok {
|
|
||||||
panic("field not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
return f
|
|
||||||
}
|
|
||||||
|
|
||||||
// FieldOk returns a new Field struct that provides several high level functions
|
|
||||||
// around a single struct field entity. The boolean returns true if the field
|
|
||||||
// was found.
|
|
||||||
func (s *Struct) FieldOk(name string) (*Field, bool) {
|
|
||||||
t := s.value.Type()
|
|
||||||
|
|
||||||
field, ok := t.FieldByName(name)
|
|
||||||
if !ok {
|
|
||||||
return nil, false
|
|
||||||
}
|
|
||||||
|
|
||||||
return &Field{
|
|
||||||
field: field,
|
|
||||||
value: s.value.FieldByName(name),
|
|
||||||
defaultTag: s.TagName,
|
|
||||||
}, true
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsZero returns true if all fields in a struct is a zero value (not
|
|
||||||
// initialized) A struct tag with the content of "-" ignores the checking of
|
|
||||||
// that particular field. Example:
|
|
||||||
//
|
|
||||||
// // Field is ignored by this package.
|
|
||||||
// Field bool `structs:"-"`
|
|
||||||
//
|
|
||||||
// A value with the option of "omitnested" stops iterating further if the type
|
|
||||||
// is a struct. Example:
|
|
||||||
//
|
|
||||||
// // Field is not processed further by this package.
|
|
||||||
// Field time.Time `structs:"myName,omitnested"`
|
|
||||||
// Field *http.Request `structs:",omitnested"`
|
|
||||||
//
|
|
||||||
// Note that only exported fields of a struct can be accessed, non exported
|
|
||||||
// fields will be neglected. It panics if s's kind is not struct.
|
|
||||||
func (s *Struct) IsZero() bool {
|
|
||||||
fields := s.structFields()
|
|
||||||
|
|
||||||
for _, field := range fields {
|
|
||||||
val := s.value.FieldByName(field.Name)
|
|
||||||
|
|
||||||
_, tagOpts := parseTag(field.Tag.Get(s.TagName))
|
|
||||||
|
|
||||||
if IsStruct(val.Interface()) && !tagOpts.Has("omitnested") {
|
|
||||||
ok := IsZero(val.Interface())
|
|
||||||
if !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// zero value of the given field, such as "" for string, 0 for int
|
|
||||||
zero := reflect.Zero(val.Type()).Interface()
|
|
||||||
|
|
||||||
// current value of the given field
|
|
||||||
current := val.Interface()
|
|
||||||
|
|
||||||
if !reflect.DeepEqual(current, zero) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasZero returns true if a field in a struct is not initialized (zero value).
|
|
||||||
// A struct tag with the content of "-" ignores the checking of that particular
|
|
||||||
// field. Example:
|
|
||||||
//
|
|
||||||
// // Field is ignored by this package.
|
|
||||||
// Field bool `structs:"-"`
|
|
||||||
//
|
|
||||||
// A value with the option of "omitnested" stops iterating further if the type
|
|
||||||
// is a struct. Example:
|
|
||||||
//
|
|
||||||
// // Field is not processed further by this package.
|
|
||||||
// Field time.Time `structs:"myName,omitnested"`
|
|
||||||
// Field *http.Request `structs:",omitnested"`
|
|
||||||
//
|
|
||||||
// Note that only exported fields of a struct can be accessed, non exported
|
|
||||||
// fields will be neglected. It panics if s's kind is not struct.
|
|
||||||
func (s *Struct) HasZero() bool {
|
|
||||||
fields := s.structFields()
|
|
||||||
|
|
||||||
for _, field := range fields {
|
|
||||||
val := s.value.FieldByName(field.Name)
|
|
||||||
|
|
||||||
_, tagOpts := parseTag(field.Tag.Get(s.TagName))
|
|
||||||
|
|
||||||
if IsStruct(val.Interface()) && !tagOpts.Has("omitnested") {
|
|
||||||
ok := HasZero(val.Interface())
|
|
||||||
if ok {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// zero value of the given field, such as "" for string, 0 for int
|
|
||||||
zero := reflect.Zero(val.Type()).Interface()
|
|
||||||
|
|
||||||
// current value of the given field
|
|
||||||
current := val.Interface()
|
|
||||||
|
|
||||||
if reflect.DeepEqual(current, zero) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// Name returns the structs's type name within its package. For more info refer
|
|
||||||
// to Name() function.
|
|
||||||
func (s *Struct) Name() string {
|
|
||||||
return s.value.Type().Name()
|
|
||||||
}
|
|
||||||
|
|
||||||
// structFields returns the exported struct fields for a given s struct. This
|
|
||||||
// is a convenient helper method to avoid duplicate code in some of the
|
|
||||||
// functions.
|
|
||||||
func (s *Struct) structFields() []reflect.StructField {
|
|
||||||
t := s.value.Type()
|
|
||||||
|
|
||||||
var f []reflect.StructField
|
|
||||||
|
|
||||||
for i := 0; i < t.NumField(); i++ {
|
|
||||||
field := t.Field(i)
|
|
||||||
// we can't access the value of unexported fields
|
|
||||||
if field.PkgPath != "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// don't check if it's omitted
|
|
||||||
if tag := field.Tag.Get(s.TagName); tag == "-" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
f = append(f, field)
|
|
||||||
}
|
|
||||||
|
|
||||||
return f
|
|
||||||
}
|
|
||||||
|
|
||||||
func strctVal(s interface{}) reflect.Value {
|
|
||||||
v := reflect.ValueOf(s)
|
|
||||||
|
|
||||||
// if pointer get the underlying element≤
|
|
||||||
for v.Kind() == reflect.Ptr {
|
|
||||||
v = v.Elem()
|
|
||||||
}
|
|
||||||
|
|
||||||
if v.Kind() != reflect.Struct {
|
|
||||||
panic("not struct")
|
|
||||||
}
|
|
||||||
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
|
|
||||||
// Map converts the given struct to a map[string]interface{}. For more info
|
|
||||||
// refer to Struct types Map() method. It panics if s's kind is not struct.
|
|
||||||
func Map(s interface{}) map[string]interface{} {
|
|
||||||
return New(s).Map()
|
|
||||||
}
|
|
||||||
|
|
||||||
// FillMap is the same as Map. Instead of returning the output, it fills the
|
|
||||||
// given map.
|
|
||||||
func FillMap(s interface{}, out map[string]interface{}) {
|
|
||||||
New(s).FillMap(out)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Values converts the given struct to a []interface{}. For more info refer to
|
|
||||||
// Struct types Values() method. It panics if s's kind is not struct.
|
|
||||||
func Values(s interface{}) []interface{} {
|
|
||||||
return New(s).Values()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fields returns a slice of *Field. For more info refer to Struct types
|
|
||||||
// Fields() method. It panics if s's kind is not struct.
|
|
||||||
func Fields(s interface{}) []*Field {
|
|
||||||
return New(s).Fields()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Names returns a slice of field names. For more info refer to Struct types
|
|
||||||
// Names() method. It panics if s's kind is not struct.
|
|
||||||
func Names(s interface{}) []string {
|
|
||||||
return New(s).Names()
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsZero returns true if all fields is equal to a zero value. For more info
|
|
||||||
// refer to Struct types IsZero() method. It panics if s's kind is not struct.
|
|
||||||
func IsZero(s interface{}) bool {
|
|
||||||
return New(s).IsZero()
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasZero returns true if any field is equal to a zero value. For more info
|
|
||||||
// refer to Struct types HasZero() method. It panics if s's kind is not struct.
|
|
||||||
func HasZero(s interface{}) bool {
|
|
||||||
return New(s).HasZero()
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsStruct returns true if the given variable is a struct or a pointer to
|
|
||||||
// struct.
|
|
||||||
func IsStruct(s interface{}) bool {
|
|
||||||
v := reflect.ValueOf(s)
|
|
||||||
if v.Kind() == reflect.Ptr {
|
|
||||||
v = v.Elem()
|
|
||||||
}
|
|
||||||
|
|
||||||
// uninitialized zero value of a struct
|
|
||||||
if v.Kind() == reflect.Invalid {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return v.Kind() == reflect.Struct
|
|
||||||
}
|
|
||||||
|
|
||||||
// Name returns the structs's type name within its package. It returns an
|
|
||||||
// empty string for unnamed types. It panics if s's kind is not struct.
|
|
||||||
func Name(s interface{}) string {
|
|
||||||
return New(s).Name()
|
|
||||||
}
|
|
||||||
|
|
||||||
// nested retrieves recursively all types for the given value and returns the
|
|
||||||
// nested value.
|
|
||||||
func (s *Struct) nested(val reflect.Value) interface{} {
|
|
||||||
var finalVal interface{}
|
|
||||||
|
|
||||||
v := reflect.ValueOf(val.Interface())
|
|
||||||
if v.Kind() == reflect.Ptr {
|
|
||||||
v = v.Elem()
|
|
||||||
}
|
|
||||||
|
|
||||||
switch v.Kind() {
|
|
||||||
case reflect.Struct:
|
|
||||||
n := New(val.Interface())
|
|
||||||
n.TagName = s.TagName
|
|
||||||
m := n.Map()
|
|
||||||
|
|
||||||
// do not add the converted value if there are no exported fields, ie:
|
|
||||||
// time.Time
|
|
||||||
if len(m) == 0 {
|
|
||||||
finalVal = val.Interface()
|
|
||||||
} else {
|
|
||||||
finalVal = m
|
|
||||||
}
|
|
||||||
case reflect.Map:
|
|
||||||
v := val.Type().Elem()
|
|
||||||
if v.Kind() == reflect.Ptr {
|
|
||||||
v = v.Elem()
|
|
||||||
}
|
|
||||||
|
|
||||||
// only iterate over struct types, ie: map[string]StructType,
|
|
||||||
// map[string][]StructType,
|
|
||||||
if v.Kind() == reflect.Struct ||
|
|
||||||
(v.Kind() == reflect.Slice && v.Elem().Kind() == reflect.Struct) {
|
|
||||||
m := make(map[string]interface{}, val.Len())
|
|
||||||
for _, k := range val.MapKeys() {
|
|
||||||
m[k.String()] = s.nested(val.MapIndex(k))
|
|
||||||
}
|
|
||||||
finalVal = m
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(arslan): should this be optional?
|
|
||||||
finalVal = val.Interface()
|
|
||||||
case reflect.Slice, reflect.Array:
|
|
||||||
if val.Type().Kind() == reflect.Interface {
|
|
||||||
finalVal = val.Interface()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(arslan): should this be optional?
|
|
||||||
// do not iterate of non struct types, just pass the value. Ie: []int,
|
|
||||||
// []string, co... We only iterate further if it's a struct.
|
|
||||||
if val.Type().Elem().Kind() != reflect.Struct {
|
|
||||||
finalVal = val.Interface()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
slices := make([]interface{}, val.Len(), val.Len())
|
|
||||||
for x := 0; x < val.Len(); x++ {
|
|
||||||
slices[x] = s.nested(val.Index(x))
|
|
||||||
}
|
|
||||||
finalVal = slices
|
|
||||||
default:
|
|
||||||
finalVal = val.Interface()
|
|
||||||
}
|
|
||||||
|
|
||||||
return finalVal
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
package structs
|
|
||||||
|
|
||||||
import "strings"
|
|
||||||
|
|
||||||
// tagOptions contains a slice of tag options
|
|
||||||
type tagOptions []string
|
|
||||||
|
|
||||||
// Has returns true if the given optiton is available in tagOptions
|
|
||||||
func (t tagOptions) Has(opt string) bool {
|
|
||||||
for _, tagOpt := range t {
|
|
||||||
if tagOpt == opt {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// parseTag splits a struct field's tag into its name and a list of options
|
|
||||||
// which comes after a name. A tag is in the form of: "name,option1,option2".
|
|
||||||
// The name can be neglectected.
|
|
||||||
func parseTag(tag string) (string, tagOptions) {
|
|
||||||
// tag is one of followings:
|
|
||||||
// ""
|
|
||||||
// "name"
|
|
||||||
// "name,opt"
|
|
||||||
// "name,opt,opt2"
|
|
||||||
// ",opt"
|
|
||||||
|
|
||||||
res := strings.Split(tag, ",")
|
|
||||||
return res[0], res[1:]
|
|
||||||
}
|
|
|
@ -1,191 +0,0 @@
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, "control" means (i) the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
"submitted" means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License.
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License.
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution.
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
If the Work includes a "NOTICE" text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions.
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks.
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty.
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability.
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability.
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets "[]" replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same "printed page" as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
|
@ -1,590 +0,0 @@
|
||||||
ini [![Build Status](https://drone.io/github.com/go-ini/ini/status.png)](https://drone.io/github.com/go-ini/ini/latest) [![](http://gocover.io/_badge/github.com/go-ini/ini)](http://gocover.io/github.com/go-ini/ini)
|
|
||||||
===
|
|
||||||
|
|
||||||
![](https://avatars0.githubusercontent.com/u/10216035?v=3&s=200)
|
|
||||||
|
|
||||||
Package ini provides INI file read and write functionality in Go.
|
|
||||||
|
|
||||||
[简体中文](README_ZH.md)
|
|
||||||
|
|
||||||
## Feature
|
|
||||||
|
|
||||||
- Load multiple data sources(`[]byte` or file) with overwrites.
|
|
||||||
- Read with recursion values.
|
|
||||||
- Read with parent-child sections.
|
|
||||||
- Read with auto-increment key names.
|
|
||||||
- Read with multiple-line values.
|
|
||||||
- Read with tons of helper methods.
|
|
||||||
- Read and convert values to Go types.
|
|
||||||
- Read and **WRITE** comments of sections and keys.
|
|
||||||
- Manipulate sections, keys and comments with ease.
|
|
||||||
- Keep sections and keys in order as you parse and save.
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
To use a tagged revision:
|
|
||||||
|
|
||||||
go get gopkg.in/ini.v1
|
|
||||||
|
|
||||||
To use with latest changes:
|
|
||||||
|
|
||||||
go get github.com/go-ini/ini
|
|
||||||
|
|
||||||
### Testing
|
|
||||||
|
|
||||||
If you want to test on your machine, please apply `-t` flag:
|
|
||||||
|
|
||||||
go get -t gopkg.in/ini.v1
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
### Loading from data sources
|
|
||||||
|
|
||||||
A **Data Source** is either raw data in type `[]byte` or a file name with type `string` and you can load **as many as** data sources you want. Passing other types will simply return an error.
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg, err := ini.Load([]byte("raw data"), "filename")
|
|
||||||
```
|
|
||||||
|
|
||||||
Or start with an empty object:
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg := ini.Empty()
|
|
||||||
```
|
|
||||||
|
|
||||||
When you cannot decide how many data sources to load at the beginning, you still able to **Append()** them later.
|
|
||||||
|
|
||||||
```go
|
|
||||||
err := cfg.Append("other file", []byte("other raw data"))
|
|
||||||
```
|
|
||||||
|
|
||||||
### Working with sections
|
|
||||||
|
|
||||||
To get a section, you would need to:
|
|
||||||
|
|
||||||
```go
|
|
||||||
section, err := cfg.GetSection("section name")
|
|
||||||
```
|
|
||||||
|
|
||||||
For a shortcut for default section, just give an empty string as name:
|
|
||||||
|
|
||||||
```go
|
|
||||||
section, err := cfg.GetSection("")
|
|
||||||
```
|
|
||||||
|
|
||||||
When you're pretty sure the section exists, following code could make your life easier:
|
|
||||||
|
|
||||||
```go
|
|
||||||
section := cfg.Section("")
|
|
||||||
```
|
|
||||||
|
|
||||||
What happens when the section somehow does not exist? Don't panic, it automatically creates and returns a new section to you.
|
|
||||||
|
|
||||||
To create a new section:
|
|
||||||
|
|
||||||
```go
|
|
||||||
err := cfg.NewSection("new section")
|
|
||||||
```
|
|
||||||
|
|
||||||
To get a list of sections or section names:
|
|
||||||
|
|
||||||
```go
|
|
||||||
sections := cfg.Sections()
|
|
||||||
names := cfg.SectionStrings()
|
|
||||||
```
|
|
||||||
|
|
||||||
### Working with keys
|
|
||||||
|
|
||||||
To get a key under a section:
|
|
||||||
|
|
||||||
```go
|
|
||||||
key, err := cfg.Section("").GetKey("key name")
|
|
||||||
```
|
|
||||||
|
|
||||||
Same rule applies to key operations:
|
|
||||||
|
|
||||||
```go
|
|
||||||
key := cfg.Section("").Key("key name")
|
|
||||||
```
|
|
||||||
|
|
||||||
To check if a key exists:
|
|
||||||
|
|
||||||
```go
|
|
||||||
yes := cfg.Section("").HasKey("key name")
|
|
||||||
```
|
|
||||||
|
|
||||||
To create a new key:
|
|
||||||
|
|
||||||
```go
|
|
||||||
err := cfg.Section("").NewKey("name", "value")
|
|
||||||
```
|
|
||||||
|
|
||||||
To get a list of keys or key names:
|
|
||||||
|
|
||||||
```go
|
|
||||||
keys := cfg.Section("").Keys()
|
|
||||||
names := cfg.Section("").KeyStrings()
|
|
||||||
```
|
|
||||||
|
|
||||||
To get a clone hash of keys and corresponding values:
|
|
||||||
|
|
||||||
```go
|
|
||||||
hash := cfg.GetSection("").KeysHash()
|
|
||||||
```
|
|
||||||
|
|
||||||
### Working with values
|
|
||||||
|
|
||||||
To get a string value:
|
|
||||||
|
|
||||||
```go
|
|
||||||
val := cfg.Section("").Key("key name").String()
|
|
||||||
```
|
|
||||||
|
|
||||||
To validate key value on the fly:
|
|
||||||
|
|
||||||
```go
|
|
||||||
val := cfg.Section("").Key("key name").Validate(func(in string) string {
|
|
||||||
if len(in) == 0 {
|
|
||||||
return "default"
|
|
||||||
}
|
|
||||||
return in
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
If you do not want any auto-transformation (such as recursive read) for the values, you can get raw value directly (this way you get much better performance):
|
|
||||||
|
|
||||||
```go
|
|
||||||
val := cfg.Section("").Key("key name").Value()
|
|
||||||
```
|
|
||||||
|
|
||||||
To check if raw value exists:
|
|
||||||
|
|
||||||
```go
|
|
||||||
yes := cfg.Section("").HasValue("test value")
|
|
||||||
```
|
|
||||||
|
|
||||||
To get value with types:
|
|
||||||
|
|
||||||
```go
|
|
||||||
// For boolean values:
|
|
||||||
// true when value is: 1, t, T, TRUE, true, True, YES, yes, Yes, y, ON, on, On
|
|
||||||
// false when value is: 0, f, F, FALSE, false, False, NO, no, No, n, OFF, off, Off
|
|
||||||
v, err = cfg.Section("").Key("BOOL").Bool()
|
|
||||||
v, err = cfg.Section("").Key("FLOAT64").Float64()
|
|
||||||
v, err = cfg.Section("").Key("INT").Int()
|
|
||||||
v, err = cfg.Section("").Key("INT64").Int64()
|
|
||||||
v, err = cfg.Section("").Key("UINT").Uint()
|
|
||||||
v, err = cfg.Section("").Key("UINT64").Uint64()
|
|
||||||
v, err = cfg.Section("").Key("TIME").TimeFormat(time.RFC3339)
|
|
||||||
v, err = cfg.Section("").Key("TIME").Time() // RFC3339
|
|
||||||
|
|
||||||
v = cfg.Section("").Key("BOOL").MustBool()
|
|
||||||
v = cfg.Section("").Key("FLOAT64").MustFloat64()
|
|
||||||
v = cfg.Section("").Key("INT").MustInt()
|
|
||||||
v = cfg.Section("").Key("INT64").MustInt64()
|
|
||||||
v = cfg.Section("").Key("UINT").MustUint()
|
|
||||||
v = cfg.Section("").Key("UINT64").MustUint64()
|
|
||||||
v = cfg.Section("").Key("TIME").MustTimeFormat(time.RFC3339)
|
|
||||||
v = cfg.Section("").Key("TIME").MustTime() // RFC3339
|
|
||||||
|
|
||||||
// Methods start with Must also accept one argument for default value
|
|
||||||
// when key not found or fail to parse value to given type.
|
|
||||||
// Except method MustString, which you have to pass a default value.
|
|
||||||
|
|
||||||
v = cfg.Section("").Key("String").MustString("default")
|
|
||||||
v = cfg.Section("").Key("BOOL").MustBool(true)
|
|
||||||
v = cfg.Section("").Key("FLOAT64").MustFloat64(1.25)
|
|
||||||
v = cfg.Section("").Key("INT").MustInt(10)
|
|
||||||
v = cfg.Section("").Key("INT64").MustInt64(99)
|
|
||||||
v = cfg.Section("").Key("UINT").MustUint(3)
|
|
||||||
v = cfg.Section("").Key("UINT64").MustUint64(6)
|
|
||||||
v = cfg.Section("").Key("TIME").MustTimeFormat(time.RFC3339, time.Now())
|
|
||||||
v = cfg.Section("").Key("TIME").MustTime(time.Now()) // RFC3339
|
|
||||||
```
|
|
||||||
|
|
||||||
What if my value is three-line long?
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[advance]
|
|
||||||
ADDRESS = """404 road,
|
|
||||||
NotFound, State, 5000
|
|
||||||
Earth"""
|
|
||||||
```
|
|
||||||
|
|
||||||
Not a problem!
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg.Section("advance").Key("ADDRESS").String()
|
|
||||||
|
|
||||||
/* --- start ---
|
|
||||||
404 road,
|
|
||||||
NotFound, State, 5000
|
|
||||||
Earth
|
|
||||||
------ end --- */
|
|
||||||
```
|
|
||||||
|
|
||||||
That's cool, how about continuation lines?
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[advance]
|
|
||||||
two_lines = how about \
|
|
||||||
continuation lines?
|
|
||||||
lots_of_lines = 1 \
|
|
||||||
2 \
|
|
||||||
3 \
|
|
||||||
4
|
|
||||||
```
|
|
||||||
|
|
||||||
Piece of cake!
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg.Section("advance").Key("two_lines").String() // how about continuation lines?
|
|
||||||
cfg.Section("advance").Key("lots_of_lines").String() // 1 2 3 4
|
|
||||||
```
|
|
||||||
|
|
||||||
Note that single quotes around values will be stripped:
|
|
||||||
|
|
||||||
```ini
|
|
||||||
foo = "some value" // foo: some value
|
|
||||||
bar = 'some value' // bar: some value
|
|
||||||
```
|
|
||||||
|
|
||||||
That's all? Hmm, no.
|
|
||||||
|
|
||||||
#### Helper methods of working with values
|
|
||||||
|
|
||||||
To get value with given candidates:
|
|
||||||
|
|
||||||
```go
|
|
||||||
v = cfg.Section("").Key("STRING").In("default", []string{"str", "arr", "types"})
|
|
||||||
v = cfg.Section("").Key("FLOAT64").InFloat64(1.1, []float64{1.25, 2.5, 3.75})
|
|
||||||
v = cfg.Section("").Key("INT").InInt(5, []int{10, 20, 30})
|
|
||||||
v = cfg.Section("").Key("INT64").InInt64(10, []int64{10, 20, 30})
|
|
||||||
v = cfg.Section("").Key("UINT").InUint(4, []int{3, 6, 9})
|
|
||||||
v = cfg.Section("").Key("UINT64").InUint64(8, []int64{3, 6, 9})
|
|
||||||
v = cfg.Section("").Key("TIME").InTimeFormat(time.RFC3339, time.Now(), []time.Time{time1, time2, time3})
|
|
||||||
v = cfg.Section("").Key("TIME").InTime(time.Now(), []time.Time{time1, time2, time3}) // RFC3339
|
|
||||||
```
|
|
||||||
|
|
||||||
Default value will be presented if value of key is not in candidates you given, and default value does not need be one of candidates.
|
|
||||||
|
|
||||||
To validate value in a given range:
|
|
||||||
|
|
||||||
```go
|
|
||||||
vals = cfg.Section("").Key("FLOAT64").RangeFloat64(0.0, 1.1, 2.2)
|
|
||||||
vals = cfg.Section("").Key("INT").RangeInt(0, 10, 20)
|
|
||||||
vals = cfg.Section("").Key("INT64").RangeInt64(0, 10, 20)
|
|
||||||
vals = cfg.Section("").Key("UINT").RangeUint(0, 3, 9)
|
|
||||||
vals = cfg.Section("").Key("UINT64").RangeUint64(0, 3, 9)
|
|
||||||
vals = cfg.Section("").Key("TIME").RangeTimeFormat(time.RFC3339, time.Now(), minTime, maxTime)
|
|
||||||
vals = cfg.Section("").Key("TIME").RangeTime(time.Now(), minTime, maxTime) // RFC3339
|
|
||||||
```
|
|
||||||
|
|
||||||
To auto-split value into slice:
|
|
||||||
|
|
||||||
```go
|
|
||||||
vals = cfg.Section("").Key("STRINGS").Strings(",")
|
|
||||||
vals = cfg.Section("").Key("FLOAT64S").Float64s(",")
|
|
||||||
vals = cfg.Section("").Key("INTS").Ints(",")
|
|
||||||
vals = cfg.Section("").Key("INT64S").Int64s(",")
|
|
||||||
vals = cfg.Section("").Key("UINTS").Uints(",")
|
|
||||||
vals = cfg.Section("").Key("UINT64S").Uint64s(",")
|
|
||||||
vals = cfg.Section("").Key("TIMES").Times(",")
|
|
||||||
```
|
|
||||||
|
|
||||||
### Save your configuration
|
|
||||||
|
|
||||||
Finally, it's time to save your configuration to somewhere.
|
|
||||||
|
|
||||||
A typical way to save configuration is writing it to a file:
|
|
||||||
|
|
||||||
```go
|
|
||||||
// ...
|
|
||||||
err = cfg.SaveTo("my.ini")
|
|
||||||
err = cfg.SaveToIndent("my.ini", "\t")
|
|
||||||
```
|
|
||||||
|
|
||||||
Another way to save is writing to a `io.Writer` interface:
|
|
||||||
|
|
||||||
```go
|
|
||||||
// ...
|
|
||||||
cfg.WriteTo(writer)
|
|
||||||
cfg.WriteToIndent(writer, "\t")
|
|
||||||
```
|
|
||||||
|
|
||||||
## Advanced Usage
|
|
||||||
|
|
||||||
### Recursive Values
|
|
||||||
|
|
||||||
For all value of keys, there is a special syntax `%(<name>)s`, where `<name>` is the key name in same section or default section, and `%(<name>)s` will be replaced by corresponding value(empty string if key not found). You can use this syntax at most 99 level of recursions.
|
|
||||||
|
|
||||||
```ini
|
|
||||||
NAME = ini
|
|
||||||
|
|
||||||
[author]
|
|
||||||
NAME = Unknwon
|
|
||||||
GITHUB = https://github.com/%(NAME)s
|
|
||||||
|
|
||||||
[package]
|
|
||||||
FULL_NAME = github.com/go-ini/%(NAME)s
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg.Section("author").Key("GITHUB").String() // https://github.com/Unknwon
|
|
||||||
cfg.Section("package").Key("FULL_NAME").String() // github.com/go-ini/ini
|
|
||||||
```
|
|
||||||
|
|
||||||
### Parent-child Sections
|
|
||||||
|
|
||||||
You can use `.` in section name to indicate parent-child relationship between two or more sections. If the key not found in the child section, library will try again on its parent section until there is no parent section.
|
|
||||||
|
|
||||||
```ini
|
|
||||||
NAME = ini
|
|
||||||
VERSION = v1
|
|
||||||
IMPORT_PATH = gopkg.in/%(NAME)s.%(VERSION)s
|
|
||||||
|
|
||||||
[package]
|
|
||||||
CLONE_URL = https://%(IMPORT_PATH)s
|
|
||||||
|
|
||||||
[package.sub]
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg.Section("package.sub").Key("CLONE_URL").String() // https://gopkg.in/ini.v1
|
|
||||||
```
|
|
||||||
|
|
||||||
### Auto-increment Key Names
|
|
||||||
|
|
||||||
If key name is `-` in data source, then it would be seen as special syntax for auto-increment key name start from 1, and every section is independent on counter.
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[features]
|
|
||||||
-: Support read/write comments of keys and sections
|
|
||||||
-: Support auto-increment of key names
|
|
||||||
-: Support load multiple files to overwrite key values
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg.Section("features").KeyStrings() // []{"#1", "#2", "#3"}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Map To Struct
|
|
||||||
|
|
||||||
Want more objective way to play with INI? Cool.
|
|
||||||
|
|
||||||
```ini
|
|
||||||
Name = Unknwon
|
|
||||||
age = 21
|
|
||||||
Male = true
|
|
||||||
Born = 1993-01-01T20:17:05Z
|
|
||||||
|
|
||||||
[Note]
|
|
||||||
Content = Hi is a good man!
|
|
||||||
Cities = HangZhou, Boston
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Note struct {
|
|
||||||
Content string
|
|
||||||
Cities []string
|
|
||||||
}
|
|
||||||
|
|
||||||
type Person struct {
|
|
||||||
Name string
|
|
||||||
Age int `ini:"age"`
|
|
||||||
Male bool
|
|
||||||
Born time.Time
|
|
||||||
Note
|
|
||||||
Created time.Time `ini:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
cfg, err := ini.Load("path/to/ini")
|
|
||||||
// ...
|
|
||||||
p := new(Person)
|
|
||||||
err = cfg.MapTo(p)
|
|
||||||
// ...
|
|
||||||
|
|
||||||
// Things can be simpler.
|
|
||||||
err = ini.MapTo(p, "path/to/ini")
|
|
||||||
// ...
|
|
||||||
|
|
||||||
// Just map a section? Fine.
|
|
||||||
n := new(Note)
|
|
||||||
err = cfg.Section("Note").MapTo(n)
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Can I have default value for field? Absolutely.
|
|
||||||
|
|
||||||
Assign it before you map to struct. It will keep the value as it is if the key is not presented or got wrong type.
|
|
||||||
|
|
||||||
```go
|
|
||||||
// ...
|
|
||||||
p := &Person{
|
|
||||||
Name: "Joe",
|
|
||||||
}
|
|
||||||
// ...
|
|
||||||
```
|
|
||||||
|
|
||||||
It's really cool, but what's the point if you can't give me my file back from struct?
|
|
||||||
|
|
||||||
### Reflect From Struct
|
|
||||||
|
|
||||||
Why not?
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Embeded struct {
|
|
||||||
Dates []time.Time `delim:"|"`
|
|
||||||
Places []string
|
|
||||||
None []int
|
|
||||||
}
|
|
||||||
|
|
||||||
type Author struct {
|
|
||||||
Name string `ini:"NAME"`
|
|
||||||
Male bool
|
|
||||||
Age int
|
|
||||||
GPA float64
|
|
||||||
NeverMind string `ini:"-"`
|
|
||||||
*Embeded
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
a := &Author{"Unknwon", true, 21, 2.8, "",
|
|
||||||
&Embeded{
|
|
||||||
[]time.Time{time.Now(), time.Now()},
|
|
||||||
[]string{"HangZhou", "Boston"},
|
|
||||||
[]int{},
|
|
||||||
}}
|
|
||||||
cfg := ini.Empty()
|
|
||||||
err = ini.ReflectFrom(cfg, a)
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
So, what do I get?
|
|
||||||
|
|
||||||
```ini
|
|
||||||
NAME = Unknwon
|
|
||||||
Male = true
|
|
||||||
Age = 21
|
|
||||||
GPA = 2.8
|
|
||||||
|
|
||||||
[Embeded]
|
|
||||||
Dates = 2015-08-07T22:14:22+08:00|2015-08-07T22:14:22+08:00
|
|
||||||
Places = HangZhou,Boston
|
|
||||||
None =
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Name Mapper
|
|
||||||
|
|
||||||
To save your time and make your code cleaner, this library supports [`NameMapper`](https://gowalker.org/gopkg.in/ini.v1#NameMapper) between struct field and actual section and key name.
|
|
||||||
|
|
||||||
There are 2 built-in name mappers:
|
|
||||||
|
|
||||||
- `AllCapsUnderscore`: it converts to format `ALL_CAPS_UNDERSCORE` then match section or key.
|
|
||||||
- `TitleUnderscore`: it converts to format `title_underscore` then match section or key.
|
|
||||||
|
|
||||||
To use them:
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Info struct {
|
|
||||||
PackageName string
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
err = ini.MapToWithMapper(&Info{}, ini.TitleUnderscore, []byte("package_name=ini"))
|
|
||||||
// ...
|
|
||||||
|
|
||||||
cfg, err := ini.Load([]byte("PACKAGE_NAME=ini"))
|
|
||||||
// ...
|
|
||||||
info := new(Info)
|
|
||||||
cfg.NameMapper = ini.AllCapsUnderscore
|
|
||||||
err = cfg.MapTo(info)
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Same rules of name mapper apply to `ini.ReflectFromWithMapper` function.
|
|
||||||
|
|
||||||
#### Other Notes On Map/Reflect
|
|
||||||
|
|
||||||
Any embedded struct is treated as a section by default, and there is no automatic parent-child relations in map/reflect feature:
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Child struct {
|
|
||||||
Age string
|
|
||||||
}
|
|
||||||
|
|
||||||
type Parent struct {
|
|
||||||
Name string
|
|
||||||
Child
|
|
||||||
}
|
|
||||||
|
|
||||||
type Config struct {
|
|
||||||
City string
|
|
||||||
Parent
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Example configuration:
|
|
||||||
|
|
||||||
```ini
|
|
||||||
City = Boston
|
|
||||||
|
|
||||||
[Parent]
|
|
||||||
Name = Unknwon
|
|
||||||
|
|
||||||
[Child]
|
|
||||||
Age = 21
|
|
||||||
```
|
|
||||||
|
|
||||||
What if, yes, I'm paranoid, I want embedded struct to be in the same section. Well, all roads lead to Rome.
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Child struct {
|
|
||||||
Age string
|
|
||||||
}
|
|
||||||
|
|
||||||
type Parent struct {
|
|
||||||
Name string
|
|
||||||
Child `ini:"Parent"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Config struct {
|
|
||||||
City string
|
|
||||||
Parent
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Example configuration:
|
|
||||||
|
|
||||||
```ini
|
|
||||||
City = Boston
|
|
||||||
|
|
||||||
[Parent]
|
|
||||||
Name = Unknwon
|
|
||||||
Age = 21
|
|
||||||
```
|
|
||||||
|
|
||||||
## Getting Help
|
|
||||||
|
|
||||||
- [API Documentation](https://gowalker.org/gopkg.in/ini.v1)
|
|
||||||
- [File An Issue](https://github.com/go-ini/ini/issues/new)
|
|
||||||
|
|
||||||
## FAQs
|
|
||||||
|
|
||||||
### What does `BlockMode` field do?
|
|
||||||
|
|
||||||
By default, library lets you read and write values so we need a locker to make sure your data is safe. But in cases that you are very sure about only reading data through the library, you can set `cfg.BlockMode = false` to speed up read operations about **50-70%** faster.
|
|
||||||
|
|
||||||
### Why another INI library?
|
|
||||||
|
|
||||||
Many people are using my another INI library [goconfig](https://github.com/Unknwon/goconfig), so the reason for this one is I would like to make more Go style code. Also when you set `cfg.BlockMode = false`, this one is about **10-30%** faster.
|
|
||||||
|
|
||||||
To make those changes I have to confirm API broken, so it's safer to keep it in another place and start using `gopkg.in` to version my package at this time.(PS: shorter import path)
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
This project is under Apache v2 License. See the [LICENSE](LICENSE) file for the full license text.
|
|
|
@ -1,577 +0,0 @@
|
||||||
本包提供了 Go 语言中读写 INI 文件的功能。
|
|
||||||
|
|
||||||
## 功能特性
|
|
||||||
|
|
||||||
- 支持覆盖加载多个数据源(`[]byte` 或文件)
|
|
||||||
- 支持递归读取键值
|
|
||||||
- 支持读取父子分区
|
|
||||||
- 支持读取自增键名
|
|
||||||
- 支持读取多行的键值
|
|
||||||
- 支持大量辅助方法
|
|
||||||
- 支持在读取时直接转换为 Go 语言类型
|
|
||||||
- 支持读取和 **写入** 分区和键的注释
|
|
||||||
- 轻松操作分区、键值和注释
|
|
||||||
- 在保存文件时分区和键值会保持原有的顺序
|
|
||||||
|
|
||||||
## 下载安装
|
|
||||||
|
|
||||||
使用一个特定版本:
|
|
||||||
|
|
||||||
go get gopkg.in/ini.v1
|
|
||||||
|
|
||||||
使用最新版:
|
|
||||||
|
|
||||||
go get github.com/go-ini/ini
|
|
||||||
|
|
||||||
### 测试安装
|
|
||||||
|
|
||||||
如果您想要在自己的机器上运行测试,请使用 `-t` 标记:
|
|
||||||
|
|
||||||
go get -t gopkg.in/ini.v1
|
|
||||||
|
|
||||||
## 开始使用
|
|
||||||
|
|
||||||
### 从数据源加载
|
|
||||||
|
|
||||||
一个 **数据源** 可以是 `[]byte` 类型的原始数据,或 `string` 类型的文件路径。您可以加载 **任意多个** 数据源。如果您传递其它类型的数据源,则会直接返回错误。
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg, err := ini.Load([]byte("raw data"), "filename")
|
|
||||||
```
|
|
||||||
|
|
||||||
或者从一个空白的文件开始:
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg := ini.Empty()
|
|
||||||
```
|
|
||||||
|
|
||||||
当您在一开始无法决定需要加载哪些数据源时,仍可以使用 **Append()** 在需要的时候加载它们。
|
|
||||||
|
|
||||||
```go
|
|
||||||
err := cfg.Append("other file", []byte("other raw data"))
|
|
||||||
```
|
|
||||||
|
|
||||||
### 操作分区(Section)
|
|
||||||
|
|
||||||
获取指定分区:
|
|
||||||
|
|
||||||
```go
|
|
||||||
section, err := cfg.GetSection("section name")
|
|
||||||
```
|
|
||||||
|
|
||||||
如果您想要获取默认分区,则可以用空字符串代替分区名:
|
|
||||||
|
|
||||||
```go
|
|
||||||
section, err := cfg.GetSection("")
|
|
||||||
```
|
|
||||||
|
|
||||||
当您非常确定某个分区是存在的,可以使用以下简便方法:
|
|
||||||
|
|
||||||
```go
|
|
||||||
section := cfg.Section("")
|
|
||||||
```
|
|
||||||
|
|
||||||
如果不小心判断错了,要获取的分区其实是不存在的,那会发生什么呢?没事的,它会自动创建并返回一个对应的分区对象给您。
|
|
||||||
|
|
||||||
创建一个分区:
|
|
||||||
|
|
||||||
```go
|
|
||||||
err := cfg.NewSection("new section")
|
|
||||||
```
|
|
||||||
|
|
||||||
获取所有分区对象或名称:
|
|
||||||
|
|
||||||
```go
|
|
||||||
sections := cfg.Sections()
|
|
||||||
names := cfg.SectionStrings()
|
|
||||||
```
|
|
||||||
|
|
||||||
### 操作键(Key)
|
|
||||||
|
|
||||||
获取某个分区下的键:
|
|
||||||
|
|
||||||
```go
|
|
||||||
key, err := cfg.Section("").GetKey("key name")
|
|
||||||
```
|
|
||||||
|
|
||||||
和分区一样,您也可以直接获取键而忽略错误处理:
|
|
||||||
|
|
||||||
```go
|
|
||||||
key := cfg.Section("").Key("key name")
|
|
||||||
```
|
|
||||||
|
|
||||||
判断某个键是否存在:
|
|
||||||
|
|
||||||
```go
|
|
||||||
yes := cfg.Section("").HasKey("key name")
|
|
||||||
```
|
|
||||||
|
|
||||||
创建一个新的键:
|
|
||||||
|
|
||||||
```go
|
|
||||||
err := cfg.Section("").NewKey("name", "value")
|
|
||||||
```
|
|
||||||
|
|
||||||
获取分区下的所有键或键名:
|
|
||||||
|
|
||||||
```go
|
|
||||||
keys := cfg.Section("").Keys()
|
|
||||||
names := cfg.Section("").KeyStrings()
|
|
||||||
```
|
|
||||||
|
|
||||||
获取分区下的所有键值对的克隆:
|
|
||||||
|
|
||||||
```go
|
|
||||||
hash := cfg.GetSection("").KeysHash()
|
|
||||||
```
|
|
||||||
|
|
||||||
### 操作键值(Value)
|
|
||||||
|
|
||||||
获取一个类型为字符串(string)的值:
|
|
||||||
|
|
||||||
```go
|
|
||||||
val := cfg.Section("").Key("key name").String()
|
|
||||||
```
|
|
||||||
|
|
||||||
获取值的同时通过自定义函数进行处理验证:
|
|
||||||
|
|
||||||
```go
|
|
||||||
val := cfg.Section("").Key("key name").Validate(func(in string) string {
|
|
||||||
if len(in) == 0 {
|
|
||||||
return "default"
|
|
||||||
}
|
|
||||||
return in
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
如果您不需要任何对值的自动转变功能(例如递归读取),可以直接获取原值(这种方式性能最佳):
|
|
||||||
|
|
||||||
```go
|
|
||||||
val := cfg.Section("").Key("key name").Value()
|
|
||||||
```
|
|
||||||
|
|
||||||
判断某个原值是否存在:
|
|
||||||
|
|
||||||
```go
|
|
||||||
yes := cfg.Section("").HasValue("test value")
|
|
||||||
```
|
|
||||||
|
|
||||||
获取其它类型的值:
|
|
||||||
|
|
||||||
```go
|
|
||||||
// 布尔值的规则:
|
|
||||||
// true 当值为:1, t, T, TRUE, true, True, YES, yes, Yes, y, ON, on, On
|
|
||||||
// false 当值为:0, f, F, FALSE, false, False, NO, no, No, n, OFF, off, Off
|
|
||||||
v, err = cfg.Section("").Key("BOOL").Bool()
|
|
||||||
v, err = cfg.Section("").Key("FLOAT64").Float64()
|
|
||||||
v, err = cfg.Section("").Key("INT").Int()
|
|
||||||
v, err = cfg.Section("").Key("INT64").Int64()
|
|
||||||
v, err = cfg.Section("").Key("UINT").Uint()
|
|
||||||
v, err = cfg.Section("").Key("UINT64").Uint64()
|
|
||||||
v, err = cfg.Section("").Key("TIME").TimeFormat(time.RFC3339)
|
|
||||||
v, err = cfg.Section("").Key("TIME").Time() // RFC3339
|
|
||||||
|
|
||||||
v = cfg.Section("").Key("BOOL").MustBool()
|
|
||||||
v = cfg.Section("").Key("FLOAT64").MustFloat64()
|
|
||||||
v = cfg.Section("").Key("INT").MustInt()
|
|
||||||
v = cfg.Section("").Key("INT64").MustInt64()
|
|
||||||
v = cfg.Section("").Key("UINT").MustUint()
|
|
||||||
v = cfg.Section("").Key("UINT64").MustUint64()
|
|
||||||
v = cfg.Section("").Key("TIME").MustTimeFormat(time.RFC3339)
|
|
||||||
v = cfg.Section("").Key("TIME").MustTime() // RFC3339
|
|
||||||
|
|
||||||
// 由 Must 开头的方法名允许接收一个相同类型的参数来作为默认值,
|
|
||||||
// 当键不存在或者转换失败时,则会直接返回该默认值。
|
|
||||||
// 但是,MustString 方法必须传递一个默认值。
|
|
||||||
|
|
||||||
v = cfg.Seciont("").Key("String").MustString("default")
|
|
||||||
v = cfg.Section("").Key("BOOL").MustBool(true)
|
|
||||||
v = cfg.Section("").Key("FLOAT64").MustFloat64(1.25)
|
|
||||||
v = cfg.Section("").Key("INT").MustInt(10)
|
|
||||||
v = cfg.Section("").Key("INT64").MustInt64(99)
|
|
||||||
v = cfg.Section("").Key("UINT").MustUint(3)
|
|
||||||
v = cfg.Section("").Key("UINT64").MustUint64(6)
|
|
||||||
v = cfg.Section("").Key("TIME").MustTimeFormat(time.RFC3339, time.Now())
|
|
||||||
v = cfg.Section("").Key("TIME").MustTime(time.Now()) // RFC3339
|
|
||||||
```
|
|
||||||
|
|
||||||
如果我的值有好多行怎么办?
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[advance]
|
|
||||||
ADDRESS = """404 road,
|
|
||||||
NotFound, State, 5000
|
|
||||||
Earth"""
|
|
||||||
```
|
|
||||||
|
|
||||||
嗯哼?小 case!
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg.Section("advance").Key("ADDRESS").String()
|
|
||||||
|
|
||||||
/* --- start ---
|
|
||||||
404 road,
|
|
||||||
NotFound, State, 5000
|
|
||||||
Earth
|
|
||||||
------ end --- */
|
|
||||||
```
|
|
||||||
|
|
||||||
赞爆了!那要是我属于一行的内容写不下想要写到第二行怎么办?
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[advance]
|
|
||||||
two_lines = how about \
|
|
||||||
continuation lines?
|
|
||||||
lots_of_lines = 1 \
|
|
||||||
2 \
|
|
||||||
3 \
|
|
||||||
4
|
|
||||||
```
|
|
||||||
|
|
||||||
简直是小菜一碟!
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg.Section("advance").Key("two_lines").String() // how about continuation lines?
|
|
||||||
cfg.Section("advance").Key("lots_of_lines").String() // 1 2 3 4
|
|
||||||
```
|
|
||||||
|
|
||||||
需要注意的是,值两侧的单引号会被自动剔除:
|
|
||||||
|
|
||||||
```ini
|
|
||||||
foo = "some value" // foo: some value
|
|
||||||
bar = 'some value' // bar: some value
|
|
||||||
```
|
|
||||||
|
|
||||||
这就是全部了?哈哈,当然不是。
|
|
||||||
|
|
||||||
#### 操作键值的辅助方法
|
|
||||||
|
|
||||||
获取键值时设定候选值:
|
|
||||||
|
|
||||||
```go
|
|
||||||
v = cfg.Section("").Key("STRING").In("default", []string{"str", "arr", "types"})
|
|
||||||
v = cfg.Section("").Key("FLOAT64").InFloat64(1.1, []float64{1.25, 2.5, 3.75})
|
|
||||||
v = cfg.Section("").Key("INT").InInt(5, []int{10, 20, 30})
|
|
||||||
v = cfg.Section("").Key("INT64").InInt64(10, []int64{10, 20, 30})
|
|
||||||
v = cfg.Section("").Key("UINT").InUint(4, []int{3, 6, 9})
|
|
||||||
v = cfg.Section("").Key("UINT64").InUint64(8, []int64{3, 6, 9})
|
|
||||||
v = cfg.Section("").Key("TIME").InTimeFormat(time.RFC3339, time.Now(), []time.Time{time1, time2, time3})
|
|
||||||
v = cfg.Section("").Key("TIME").InTime(time.Now(), []time.Time{time1, time2, time3}) // RFC3339
|
|
||||||
```
|
|
||||||
|
|
||||||
如果获取到的值不是候选值的任意一个,则会返回默认值,而默认值不需要是候选值中的一员。
|
|
||||||
|
|
||||||
验证获取的值是否在指定范围内:
|
|
||||||
|
|
||||||
```go
|
|
||||||
vals = cfg.Section("").Key("FLOAT64").RangeFloat64(0.0, 1.1, 2.2)
|
|
||||||
vals = cfg.Section("").Key("INT").RangeInt(0, 10, 20)
|
|
||||||
vals = cfg.Section("").Key("INT64").RangeInt64(0, 10, 20)
|
|
||||||
vals = cfg.Section("").Key("UINT").RangeUint(0, 3, 9)
|
|
||||||
vals = cfg.Section("").Key("UINT64").RangeUint64(0, 3, 9)
|
|
||||||
vals = cfg.Section("").Key("TIME").RangeTimeFormat(time.RFC3339, time.Now(), minTime, maxTime)
|
|
||||||
vals = cfg.Section("").Key("TIME").RangeTime(time.Now(), minTime, maxTime) // RFC3339
|
|
||||||
```
|
|
||||||
|
|
||||||
自动分割键值为切片(slice):
|
|
||||||
|
|
||||||
```go
|
|
||||||
vals = cfg.Section("").Key("STRINGS").Strings(",")
|
|
||||||
vals = cfg.Section("").Key("FLOAT64S").Float64s(",")
|
|
||||||
vals = cfg.Section("").Key("INTS").Ints(",")
|
|
||||||
vals = cfg.Section("").Key("INT64S").Int64s(",")
|
|
||||||
vals = cfg.Section("").Key("UINTS").Uints(",")
|
|
||||||
vals = cfg.Section("").Key("UINT64S").Uint64s(",")
|
|
||||||
vals = cfg.Section("").Key("TIMES").Times(",")
|
|
||||||
```
|
|
||||||
|
|
||||||
### 保存配置
|
|
||||||
|
|
||||||
终于到了这个时刻,是时候保存一下配置了。
|
|
||||||
|
|
||||||
比较原始的做法是输出配置到某个文件:
|
|
||||||
|
|
||||||
```go
|
|
||||||
// ...
|
|
||||||
err = cfg.SaveTo("my.ini")
|
|
||||||
err = cfg.SaveToIndent("my.ini", "\t")
|
|
||||||
```
|
|
||||||
|
|
||||||
另一个比较高级的做法是写入到任何实现 `io.Writer` 接口的对象中:
|
|
||||||
|
|
||||||
```go
|
|
||||||
// ...
|
|
||||||
cfg.WriteTo(writer)
|
|
||||||
cfg.WriteToIndent(writer, "\t")
|
|
||||||
```
|
|
||||||
|
|
||||||
### 高级用法
|
|
||||||
|
|
||||||
#### 递归读取键值
|
|
||||||
|
|
||||||
在获取所有键值的过程中,特殊语法 `%(<name>)s` 会被应用,其中 `<name>` 可以是相同分区或者默认分区下的键名。字符串 `%(<name>)s` 会被相应的键值所替代,如果指定的键不存在,则会用空字符串替代。您可以最多使用 99 层的递归嵌套。
|
|
||||||
|
|
||||||
```ini
|
|
||||||
NAME = ini
|
|
||||||
|
|
||||||
[author]
|
|
||||||
NAME = Unknwon
|
|
||||||
GITHUB = https://github.com/%(NAME)s
|
|
||||||
|
|
||||||
[package]
|
|
||||||
FULL_NAME = github.com/go-ini/%(NAME)s
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg.Section("author").Key("GITHUB").String() // https://github.com/Unknwon
|
|
||||||
cfg.Section("package").Key("FULL_NAME").String() // github.com/go-ini/ini
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 读取父子分区
|
|
||||||
|
|
||||||
您可以在分区名称中使用 `.` 来表示两个或多个分区之间的父子关系。如果某个键在子分区中不存在,则会去它的父分区中再次寻找,直到没有父分区为止。
|
|
||||||
|
|
||||||
```ini
|
|
||||||
NAME = ini
|
|
||||||
VERSION = v1
|
|
||||||
IMPORT_PATH = gopkg.in/%(NAME)s.%(VERSION)s
|
|
||||||
|
|
||||||
[package]
|
|
||||||
CLONE_URL = https://%(IMPORT_PATH)s
|
|
||||||
|
|
||||||
[package.sub]
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg.Section("package.sub").Key("CLONE_URL").String() // https://gopkg.in/ini.v1
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 读取自增键名
|
|
||||||
|
|
||||||
如果数据源中的键名为 `-`,则认为该键使用了自增键名的特殊语法。计数器从 1 开始,并且分区之间是相互独立的。
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[features]
|
|
||||||
-: Support read/write comments of keys and sections
|
|
||||||
-: Support auto-increment of key names
|
|
||||||
-: Support load multiple files to overwrite key values
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
cfg.Section("features").KeyStrings() // []{"#1", "#2", "#3"}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 映射到结构
|
|
||||||
|
|
||||||
想要使用更加面向对象的方式玩转 INI 吗?好主意。
|
|
||||||
|
|
||||||
```ini
|
|
||||||
Name = Unknwon
|
|
||||||
age = 21
|
|
||||||
Male = true
|
|
||||||
Born = 1993-01-01T20:17:05Z
|
|
||||||
|
|
||||||
[Note]
|
|
||||||
Content = Hi is a good man!
|
|
||||||
Cities = HangZhou, Boston
|
|
||||||
```
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Note struct {
|
|
||||||
Content string
|
|
||||||
Cities []string
|
|
||||||
}
|
|
||||||
|
|
||||||
type Person struct {
|
|
||||||
Name string
|
|
||||||
Age int `ini:"age"`
|
|
||||||
Male bool
|
|
||||||
Born time.Time
|
|
||||||
Note
|
|
||||||
Created time.Time `ini:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
cfg, err := ini.Load("path/to/ini")
|
|
||||||
// ...
|
|
||||||
p := new(Person)
|
|
||||||
err = cfg.MapTo(p)
|
|
||||||
// ...
|
|
||||||
|
|
||||||
// 一切竟可以如此的简单。
|
|
||||||
err = ini.MapTo(p, "path/to/ini")
|
|
||||||
// ...
|
|
||||||
|
|
||||||
// 嗯哼?只需要映射一个分区吗?
|
|
||||||
n := new(Note)
|
|
||||||
err = cfg.Section("Note").MapTo(n)
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
结构的字段怎么设置默认值呢?很简单,只要在映射之前对指定字段进行赋值就可以了。如果键未找到或者类型错误,该值不会发生改变。
|
|
||||||
|
|
||||||
```go
|
|
||||||
// ...
|
|
||||||
p := &Person{
|
|
||||||
Name: "Joe",
|
|
||||||
}
|
|
||||||
// ...
|
|
||||||
```
|
|
||||||
|
|
||||||
这样玩 INI 真的好酷啊!然而,如果不能还给我原来的配置文件,有什么卵用?
|
|
||||||
|
|
||||||
### 从结构反射
|
|
||||||
|
|
||||||
可是,我有说不能吗?
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Embeded struct {
|
|
||||||
Dates []time.Time `delim:"|"`
|
|
||||||
Places []string
|
|
||||||
None []int
|
|
||||||
}
|
|
||||||
|
|
||||||
type Author struct {
|
|
||||||
Name string `ini:"NAME"`
|
|
||||||
Male bool
|
|
||||||
Age int
|
|
||||||
GPA float64
|
|
||||||
NeverMind string `ini:"-"`
|
|
||||||
*Embeded
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
a := &Author{"Unknwon", true, 21, 2.8, "",
|
|
||||||
&Embeded{
|
|
||||||
[]time.Time{time.Now(), time.Now()},
|
|
||||||
[]string{"HangZhou", "Boston"},
|
|
||||||
[]int{},
|
|
||||||
}}
|
|
||||||
cfg := ini.Empty()
|
|
||||||
err = ini.ReflectFrom(cfg, a)
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
瞧瞧,奇迹发生了。
|
|
||||||
|
|
||||||
```ini
|
|
||||||
NAME = Unknwon
|
|
||||||
Male = true
|
|
||||||
Age = 21
|
|
||||||
GPA = 2.8
|
|
||||||
|
|
||||||
[Embeded]
|
|
||||||
Dates = 2015-08-07T22:14:22+08:00|2015-08-07T22:14:22+08:00
|
|
||||||
Places = HangZhou,Boston
|
|
||||||
None =
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 名称映射器(Name Mapper)
|
|
||||||
|
|
||||||
为了节省您的时间并简化代码,本库支持类型为 [`NameMapper`](https://gowalker.org/gopkg.in/ini.v1#NameMapper) 的名称映射器,该映射器负责结构字段名与分区名和键名之间的映射。
|
|
||||||
|
|
||||||
目前有 2 款内置的映射器:
|
|
||||||
|
|
||||||
- `AllCapsUnderscore`:该映射器将字段名转换至格式 `ALL_CAPS_UNDERSCORE` 后再去匹配分区名和键名。
|
|
||||||
- `TitleUnderscore`:该映射器将字段名转换至格式 `title_underscore` 后再去匹配分区名和键名。
|
|
||||||
|
|
||||||
使用方法:
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Info struct{
|
|
||||||
PackageName string
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
err = ini.MapToWithMapper(&Info{}, ini.TitleUnderscore, []byte("package_name=ini"))
|
|
||||||
// ...
|
|
||||||
|
|
||||||
cfg, err := ini.Load([]byte("PACKAGE_NAME=ini"))
|
|
||||||
// ...
|
|
||||||
info := new(Info)
|
|
||||||
cfg.NameMapper = ini.AllCapsUnderscore
|
|
||||||
err = cfg.MapTo(info)
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
使用函数 `ini.ReflectFromWithMapper` 时也可应用相同的规则。
|
|
||||||
|
|
||||||
#### 映射/反射的其它说明
|
|
||||||
|
|
||||||
任何嵌入的结构都会被默认认作一个不同的分区,并且不会自动产生所谓的父子分区关联:
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Child struct {
|
|
||||||
Age string
|
|
||||||
}
|
|
||||||
|
|
||||||
type Parent struct {
|
|
||||||
Name string
|
|
||||||
Child
|
|
||||||
}
|
|
||||||
|
|
||||||
type Config struct {
|
|
||||||
City string
|
|
||||||
Parent
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
示例配置文件:
|
|
||||||
|
|
||||||
```ini
|
|
||||||
City = Boston
|
|
||||||
|
|
||||||
[Parent]
|
|
||||||
Name = Unknwon
|
|
||||||
|
|
||||||
[Child]
|
|
||||||
Age = 21
|
|
||||||
```
|
|
||||||
|
|
||||||
很好,但是,我就是要嵌入结构也在同一个分区。好吧,你爹是李刚!
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Child struct {
|
|
||||||
Age string
|
|
||||||
}
|
|
||||||
|
|
||||||
type Parent struct {
|
|
||||||
Name string
|
|
||||||
Child `ini:"Parent"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Config struct {
|
|
||||||
City string
|
|
||||||
Parent
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
示例配置文件:
|
|
||||||
|
|
||||||
```ini
|
|
||||||
City = Boston
|
|
||||||
|
|
||||||
[Parent]
|
|
||||||
Name = Unknwon
|
|
||||||
Age = 21
|
|
||||||
```
|
|
||||||
|
|
||||||
## 获取帮助
|
|
||||||
|
|
||||||
- [API 文档](https://gowalker.org/gopkg.in/ini.v1)
|
|
||||||
- [创建工单](https://github.com/go-ini/ini/issues/new)
|
|
||||||
|
|
||||||
## 常见问题
|
|
||||||
|
|
||||||
### 字段 `BlockMode` 是什么?
|
|
||||||
|
|
||||||
默认情况下,本库会在您进行读写操作时采用锁机制来确保数据时间。但在某些情况下,您非常确定只进行读操作。此时,您可以通过设置 `cfg.BlockMode = false` 来将读操作提升大约 **50-70%** 的性能。
|
|
||||||
|
|
||||||
### 为什么要写另一个 INI 解析库?
|
|
||||||
|
|
||||||
许多人都在使用我的 [goconfig](https://github.com/Unknwon/goconfig) 来完成对 INI 文件的操作,但我希望使用更加 Go 风格的代码。并且当您设置 `cfg.BlockMode = false` 时,会有大约 **10-30%** 的性能提升。
|
|
||||||
|
|
||||||
为了做出这些改变,我必须对 API 进行破坏,所以新开一个仓库是最安全的做法。除此之外,本库直接使用 `gopkg.in` 来进行版本化发布。(其实真相是导入路径更短了)
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,312 +0,0 @@
|
||||||
// Copyright 2015 Unknwon
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License"): you may
|
|
||||||
// not use this file except in compliance with the License. You may obtain
|
|
||||||
// a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
// License for the specific language governing permissions and limitations
|
|
||||||
// under the License.
|
|
||||||
|
|
||||||
package ini
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"bytes"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
"unicode"
|
|
||||||
)
|
|
||||||
|
|
||||||
type tokenType int
|
|
||||||
|
|
||||||
const (
|
|
||||||
_TOKEN_INVALID tokenType = iota
|
|
||||||
_TOKEN_COMMENT
|
|
||||||
_TOKEN_SECTION
|
|
||||||
_TOKEN_KEY
|
|
||||||
)
|
|
||||||
|
|
||||||
type parser struct {
|
|
||||||
buf *bufio.Reader
|
|
||||||
isEOF bool
|
|
||||||
count int
|
|
||||||
comment *bytes.Buffer
|
|
||||||
}
|
|
||||||
|
|
||||||
func newParser(r io.Reader) *parser {
|
|
||||||
return &parser{
|
|
||||||
buf: bufio.NewReader(r),
|
|
||||||
count: 1,
|
|
||||||
comment: &bytes.Buffer{},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// BOM handles header of BOM-UTF8 format.
|
|
||||||
// http://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding
|
|
||||||
func (p *parser) BOM() error {
|
|
||||||
mask, err := p.buf.Peek(3)
|
|
||||||
if err != nil && err != io.EOF {
|
|
||||||
return err
|
|
||||||
} else if len(mask) < 3 {
|
|
||||||
return nil
|
|
||||||
} else if mask[0] == 239 && mask[1] == 187 && mask[2] == 191 {
|
|
||||||
p.buf.Read(mask)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *parser) readUntil(delim byte) ([]byte, error) {
|
|
||||||
data, err := p.buf.ReadBytes(delim)
|
|
||||||
if err != nil {
|
|
||||||
if err == io.EOF {
|
|
||||||
p.isEOF = true
|
|
||||||
} else {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return data, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func cleanComment(in []byte) ([]byte, bool) {
|
|
||||||
i := bytes.IndexAny(in, "#;")
|
|
||||||
if i == -1 {
|
|
||||||
return nil, false
|
|
||||||
}
|
|
||||||
return in[i:], true
|
|
||||||
}
|
|
||||||
|
|
||||||
func readKeyName(in []byte) (string, int, error) {
|
|
||||||
line := string(in)
|
|
||||||
|
|
||||||
// Check if key name surrounded by quotes.
|
|
||||||
var keyQuote string
|
|
||||||
if line[0] == '"' {
|
|
||||||
if len(line) > 6 && string(line[0:3]) == `"""` {
|
|
||||||
keyQuote = `"""`
|
|
||||||
} else {
|
|
||||||
keyQuote = `"`
|
|
||||||
}
|
|
||||||
} else if line[0] == '`' {
|
|
||||||
keyQuote = "`"
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get out key name
|
|
||||||
endIdx := -1
|
|
||||||
if len(keyQuote) > 0 {
|
|
||||||
startIdx := len(keyQuote)
|
|
||||||
// FIXME: fail case -> """"""name"""=value
|
|
||||||
pos := strings.Index(line[startIdx:], keyQuote)
|
|
||||||
if pos == -1 {
|
|
||||||
return "", -1, fmt.Errorf("missing closing key quote: %s", line)
|
|
||||||
}
|
|
||||||
pos += startIdx
|
|
||||||
|
|
||||||
// Find key-value delimiter
|
|
||||||
i := strings.IndexAny(line[pos+startIdx:], "=:")
|
|
||||||
if i < 0 {
|
|
||||||
return "", -1, fmt.Errorf("key-value delimiter not found: %s", line)
|
|
||||||
}
|
|
||||||
endIdx = pos + i
|
|
||||||
return strings.TrimSpace(line[startIdx:pos]), endIdx + startIdx + 1, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
endIdx = strings.IndexAny(line, "=:")
|
|
||||||
if endIdx < 0 {
|
|
||||||
return "", -1, fmt.Errorf("key-value delimiter not found: %s", line)
|
|
||||||
}
|
|
||||||
return strings.TrimSpace(line[0:endIdx]), endIdx + 1, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *parser) readMultilines(line, val, valQuote string) (string, error) {
|
|
||||||
for {
|
|
||||||
data, err := p.readUntil('\n')
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
next := string(data)
|
|
||||||
|
|
||||||
pos := strings.LastIndex(next, valQuote)
|
|
||||||
if pos > -1 {
|
|
||||||
val += next[:pos]
|
|
||||||
|
|
||||||
comment, has := cleanComment([]byte(next[pos:]))
|
|
||||||
if has {
|
|
||||||
p.comment.Write(bytes.TrimSpace(comment))
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
val += next
|
|
||||||
if p.isEOF {
|
|
||||||
return "", fmt.Errorf("missing closing key quote from '%s' to '%s'", line, next)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return val, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *parser) readContinuationLines(val string) (string, error) {
|
|
||||||
for {
|
|
||||||
data, err := p.readUntil('\n')
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
next := strings.TrimSpace(string(data))
|
|
||||||
|
|
||||||
if len(next) == 0 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
val += next
|
|
||||||
if val[len(val)-1] != '\\' {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
val = val[:len(val)-1]
|
|
||||||
}
|
|
||||||
return val, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// hasSurroundedQuote check if and only if the first and last characters
|
|
||||||
// are quotes \" or \'.
|
|
||||||
// It returns false if any other parts also contain same kind of quotes.
|
|
||||||
func hasSurroundedQuote(in string, quote byte) bool {
|
|
||||||
return len(in) > 2 && in[0] == quote && in[len(in)-1] == quote &&
|
|
||||||
strings.IndexByte(in[1:], quote) == len(in)-2
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *parser) readValue(in []byte) (string, error) {
|
|
||||||
line := strings.TrimLeftFunc(string(in), unicode.IsSpace)
|
|
||||||
if len(line) == 0 {
|
|
||||||
return "", nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var valQuote string
|
|
||||||
if len(line) > 3 && string(line[0:3]) == `"""` {
|
|
||||||
valQuote = `"""`
|
|
||||||
} else if line[0] == '`' {
|
|
||||||
valQuote = "`"
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(valQuote) > 0 {
|
|
||||||
startIdx := len(valQuote)
|
|
||||||
pos := strings.LastIndex(line[startIdx:], valQuote)
|
|
||||||
// Check for multi-line value
|
|
||||||
if pos == -1 {
|
|
||||||
return p.readMultilines(line, line[startIdx:], valQuote)
|
|
||||||
}
|
|
||||||
|
|
||||||
return line[startIdx : pos+startIdx], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Won't be able to reach here if value only contains whitespace.
|
|
||||||
line = strings.TrimSpace(line)
|
|
||||||
|
|
||||||
// Check continuation lines
|
|
||||||
if line[len(line)-1] == '\\' {
|
|
||||||
return p.readContinuationLines(line[:len(line)-1])
|
|
||||||
}
|
|
||||||
|
|
||||||
i := strings.IndexAny(line, "#;")
|
|
||||||
if i > -1 {
|
|
||||||
p.comment.WriteString(line[i:])
|
|
||||||
line = strings.TrimSpace(line[:i])
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trim single quotes
|
|
||||||
if hasSurroundedQuote(line, '\'') ||
|
|
||||||
hasSurroundedQuote(line, '"') {
|
|
||||||
line = line[1 : len(line)-1]
|
|
||||||
}
|
|
||||||
return line, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// parse parses data through an io.Reader.
|
|
||||||
func (f *File) parse(reader io.Reader) (err error) {
|
|
||||||
p := newParser(reader)
|
|
||||||
if err = p.BOM(); err != nil {
|
|
||||||
return fmt.Errorf("BOM: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ignore error because default section name is never empty string.
|
|
||||||
section, _ := f.NewSection(DEFAULT_SECTION)
|
|
||||||
|
|
||||||
var line []byte
|
|
||||||
for !p.isEOF {
|
|
||||||
line, err = p.readUntil('\n')
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
line = bytes.TrimLeftFunc(line, unicode.IsSpace)
|
|
||||||
if len(line) == 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// Comments
|
|
||||||
if line[0] == '#' || line[0] == ';' {
|
|
||||||
// Note: we do not care ending line break,
|
|
||||||
// it is needed for adding second line,
|
|
||||||
// so just clean it once at the end when set to value.
|
|
||||||
p.comment.Write(line)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// Section
|
|
||||||
if line[0] == '[' {
|
|
||||||
// Read to the next ']' (TODO: support quoted strings)
|
|
||||||
closeIdx := bytes.IndexByte(line, ']')
|
|
||||||
if closeIdx == -1 {
|
|
||||||
return fmt.Errorf("unclosed section: %s", line)
|
|
||||||
}
|
|
||||||
|
|
||||||
section, err = f.NewSection(string(line[1:closeIdx]))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
comment, has := cleanComment(line[closeIdx+1:])
|
|
||||||
if has {
|
|
||||||
p.comment.Write(comment)
|
|
||||||
}
|
|
||||||
|
|
||||||
section.Comment = strings.TrimSpace(p.comment.String())
|
|
||||||
|
|
||||||
// Reset aotu-counter and comments
|
|
||||||
p.comment.Reset()
|
|
||||||
p.count = 1
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
kname, offset, err := readKeyName(line)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Auto increment.
|
|
||||||
isAutoIncr := false
|
|
||||||
if kname == "-" {
|
|
||||||
isAutoIncr = true
|
|
||||||
kname = "#" + strconv.Itoa(p.count)
|
|
||||||
p.count++
|
|
||||||
}
|
|
||||||
|
|
||||||
key, err := section.NewKey(kname, "")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
key.isAutoIncr = isAutoIncr
|
|
||||||
|
|
||||||
value, err := p.readValue(line[offset:])
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
key.SetValue(value)
|
|
||||||
key.Comment = strings.TrimSpace(p.comment.String())
|
|
||||||
p.comment.Reset()
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
|
@ -1,351 +0,0 @@
|
||||||
// Copyright 2014 Unknwon
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License"): you may
|
|
||||||
// not use this file except in compliance with the License. You may obtain
|
|
||||||
// a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
// License for the specific language governing permissions and limitations
|
|
||||||
// under the License.
|
|
||||||
|
|
||||||
package ini
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"reflect"
|
|
||||||
"time"
|
|
||||||
"unicode"
|
|
||||||
)
|
|
||||||
|
|
||||||
// NameMapper represents a ini tag name mapper.
|
|
||||||
type NameMapper func(string) string
|
|
||||||
|
|
||||||
// Built-in name getters.
|
|
||||||
var (
|
|
||||||
// AllCapsUnderscore converts to format ALL_CAPS_UNDERSCORE.
|
|
||||||
AllCapsUnderscore NameMapper = func(raw string) string {
|
|
||||||
newstr := make([]rune, 0, len(raw))
|
|
||||||
for i, chr := range raw {
|
|
||||||
if isUpper := 'A' <= chr && chr <= 'Z'; isUpper {
|
|
||||||
if i > 0 {
|
|
||||||
newstr = append(newstr, '_')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
newstr = append(newstr, unicode.ToUpper(chr))
|
|
||||||
}
|
|
||||||
return string(newstr)
|
|
||||||
}
|
|
||||||
// TitleUnderscore converts to format title_underscore.
|
|
||||||
TitleUnderscore NameMapper = func(raw string) string {
|
|
||||||
newstr := make([]rune, 0, len(raw))
|
|
||||||
for i, chr := range raw {
|
|
||||||
if isUpper := 'A' <= chr && chr <= 'Z'; isUpper {
|
|
||||||
if i > 0 {
|
|
||||||
newstr = append(newstr, '_')
|
|
||||||
}
|
|
||||||
chr -= ('A' - 'a')
|
|
||||||
}
|
|
||||||
newstr = append(newstr, chr)
|
|
||||||
}
|
|
||||||
return string(newstr)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (s *Section) parseFieldName(raw, actual string) string {
|
|
||||||
if len(actual) > 0 {
|
|
||||||
return actual
|
|
||||||
}
|
|
||||||
if s.f.NameMapper != nil {
|
|
||||||
return s.f.NameMapper(raw)
|
|
||||||
}
|
|
||||||
return raw
|
|
||||||
}
|
|
||||||
|
|
||||||
func parseDelim(actual string) string {
|
|
||||||
if len(actual) > 0 {
|
|
||||||
return actual
|
|
||||||
}
|
|
||||||
return ","
|
|
||||||
}
|
|
||||||
|
|
||||||
var reflectTime = reflect.TypeOf(time.Now()).Kind()
|
|
||||||
|
|
||||||
// setWithProperType sets proper value to field based on its type,
|
|
||||||
// but it does not return error for failing parsing,
|
|
||||||
// because we want to use default value that is already assigned to strcut.
|
|
||||||
func setWithProperType(t reflect.Type, key *Key, field reflect.Value, delim string) error {
|
|
||||||
switch t.Kind() {
|
|
||||||
case reflect.String:
|
|
||||||
if len(key.String()) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
field.SetString(key.String())
|
|
||||||
case reflect.Bool:
|
|
||||||
boolVal, err := key.Bool()
|
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
field.SetBool(boolVal)
|
|
||||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
|
||||||
durationVal, err := key.Duration()
|
|
||||||
// Skip zero value
|
|
||||||
if err == nil && int(durationVal) > 0 {
|
|
||||||
field.Set(reflect.ValueOf(durationVal))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
intVal, err := key.Int64()
|
|
||||||
if err != nil || intVal == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
field.SetInt(intVal)
|
|
||||||
// byte is an alias for uint8, so supporting uint8 breaks support for byte
|
|
||||||
case reflect.Uint, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
|
||||||
durationVal, err := key.Duration()
|
|
||||||
if err == nil {
|
|
||||||
field.Set(reflect.ValueOf(durationVal))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
uintVal, err := key.Uint64()
|
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
field.SetUint(uintVal)
|
|
||||||
|
|
||||||
case reflect.Float64:
|
|
||||||
floatVal, err := key.Float64()
|
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
field.SetFloat(floatVal)
|
|
||||||
case reflectTime:
|
|
||||||
timeVal, err := key.Time()
|
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
field.Set(reflect.ValueOf(timeVal))
|
|
||||||
case reflect.Slice:
|
|
||||||
vals := key.Strings(delim)
|
|
||||||
numVals := len(vals)
|
|
||||||
if numVals == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
sliceOf := field.Type().Elem().Kind()
|
|
||||||
|
|
||||||
var times []time.Time
|
|
||||||
if sliceOf == reflectTime {
|
|
||||||
times = key.Times(delim)
|
|
||||||
}
|
|
||||||
|
|
||||||
slice := reflect.MakeSlice(field.Type(), numVals, numVals)
|
|
||||||
for i := 0; i < numVals; i++ {
|
|
||||||
switch sliceOf {
|
|
||||||
case reflectTime:
|
|
||||||
slice.Index(i).Set(reflect.ValueOf(times[i]))
|
|
||||||
default:
|
|
||||||
slice.Index(i).Set(reflect.ValueOf(vals[i]))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
field.Set(slice)
|
|
||||||
default:
|
|
||||||
return fmt.Errorf("unsupported type '%s'", t)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Section) mapTo(val reflect.Value) error {
|
|
||||||
if val.Kind() == reflect.Ptr {
|
|
||||||
val = val.Elem()
|
|
||||||
}
|
|
||||||
typ := val.Type()
|
|
||||||
|
|
||||||
for i := 0; i < typ.NumField(); i++ {
|
|
||||||
field := val.Field(i)
|
|
||||||
tpField := typ.Field(i)
|
|
||||||
|
|
||||||
tag := tpField.Tag.Get("ini")
|
|
||||||
if tag == "-" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldName := s.parseFieldName(tpField.Name, tag)
|
|
||||||
if len(fieldName) == 0 || !field.CanSet() {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
isAnonymous := tpField.Type.Kind() == reflect.Ptr && tpField.Anonymous
|
|
||||||
isStruct := tpField.Type.Kind() == reflect.Struct
|
|
||||||
if isAnonymous {
|
|
||||||
field.Set(reflect.New(tpField.Type.Elem()))
|
|
||||||
}
|
|
||||||
|
|
||||||
if isAnonymous || isStruct {
|
|
||||||
if sec, err := s.f.GetSection(fieldName); err == nil {
|
|
||||||
if err = sec.mapTo(field); err != nil {
|
|
||||||
return fmt.Errorf("error mapping field(%s): %v", fieldName, err)
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if key, err := s.GetKey(fieldName); err == nil {
|
|
||||||
if err = setWithProperType(tpField.Type, key, field, parseDelim(tpField.Tag.Get("delim"))); err != nil {
|
|
||||||
return fmt.Errorf("error mapping field(%s): %v", fieldName, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// MapTo maps section to given struct.
|
|
||||||
func (s *Section) MapTo(v interface{}) error {
|
|
||||||
typ := reflect.TypeOf(v)
|
|
||||||
val := reflect.ValueOf(v)
|
|
||||||
if typ.Kind() == reflect.Ptr {
|
|
||||||
typ = typ.Elem()
|
|
||||||
val = val.Elem()
|
|
||||||
} else {
|
|
||||||
return errors.New("cannot map to non-pointer struct")
|
|
||||||
}
|
|
||||||
|
|
||||||
return s.mapTo(val)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MapTo maps file to given struct.
|
|
||||||
func (f *File) MapTo(v interface{}) error {
|
|
||||||
return f.Section("").MapTo(v)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MapTo maps data sources to given struct with name mapper.
|
|
||||||
func MapToWithMapper(v interface{}, mapper NameMapper, source interface{}, others ...interface{}) error {
|
|
||||||
cfg, err := Load(source, others...)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
cfg.NameMapper = mapper
|
|
||||||
return cfg.MapTo(v)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MapTo maps data sources to given struct.
|
|
||||||
func MapTo(v, source interface{}, others ...interface{}) error {
|
|
||||||
return MapToWithMapper(v, nil, source, others...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// reflectWithProperType does the opposite thing with setWithProperType.
|
|
||||||
func reflectWithProperType(t reflect.Type, key *Key, field reflect.Value, delim string) error {
|
|
||||||
switch t.Kind() {
|
|
||||||
case reflect.String:
|
|
||||||
key.SetValue(field.String())
|
|
||||||
case reflect.Bool,
|
|
||||||
reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
|
|
||||||
reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,
|
|
||||||
reflect.Float64,
|
|
||||||
reflectTime:
|
|
||||||
key.SetValue(fmt.Sprint(field))
|
|
||||||
case reflect.Slice:
|
|
||||||
vals := field.Slice(0, field.Len())
|
|
||||||
if field.Len() == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var buf bytes.Buffer
|
|
||||||
isTime := fmt.Sprint(field.Type()) == "[]time.Time"
|
|
||||||
for i := 0; i < field.Len(); i++ {
|
|
||||||
if isTime {
|
|
||||||
buf.WriteString(vals.Index(i).Interface().(time.Time).Format(time.RFC3339))
|
|
||||||
} else {
|
|
||||||
buf.WriteString(fmt.Sprint(vals.Index(i)))
|
|
||||||
}
|
|
||||||
buf.WriteString(delim)
|
|
||||||
}
|
|
||||||
key.SetValue(buf.String()[:buf.Len()-1])
|
|
||||||
default:
|
|
||||||
return fmt.Errorf("unsupported type '%s'", t)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Section) reflectFrom(val reflect.Value) error {
|
|
||||||
if val.Kind() == reflect.Ptr {
|
|
||||||
val = val.Elem()
|
|
||||||
}
|
|
||||||
typ := val.Type()
|
|
||||||
|
|
||||||
for i := 0; i < typ.NumField(); i++ {
|
|
||||||
field := val.Field(i)
|
|
||||||
tpField := typ.Field(i)
|
|
||||||
|
|
||||||
tag := tpField.Tag.Get("ini")
|
|
||||||
if tag == "-" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldName := s.parseFieldName(tpField.Name, tag)
|
|
||||||
if len(fieldName) == 0 || !field.CanSet() {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tpField.Type.Kind() == reflect.Ptr && tpField.Anonymous) ||
|
|
||||||
(tpField.Type.Kind() == reflect.Struct) {
|
|
||||||
// Note: The only error here is section doesn't exist.
|
|
||||||
sec, err := s.f.GetSection(fieldName)
|
|
||||||
if err != nil {
|
|
||||||
// Note: fieldName can never be empty here, ignore error.
|
|
||||||
sec, _ = s.f.NewSection(fieldName)
|
|
||||||
}
|
|
||||||
if err = sec.reflectFrom(field); err != nil {
|
|
||||||
return fmt.Errorf("error reflecting field(%s): %v", fieldName, err)
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// Note: Same reason as secion.
|
|
||||||
key, err := s.GetKey(fieldName)
|
|
||||||
if err != nil {
|
|
||||||
key, _ = s.NewKey(fieldName, "")
|
|
||||||
}
|
|
||||||
if err = reflectWithProperType(tpField.Type, key, field, parseDelim(tpField.Tag.Get("delim"))); err != nil {
|
|
||||||
return fmt.Errorf("error reflecting field(%s): %v", fieldName, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReflectFrom reflects secion from given struct.
|
|
||||||
func (s *Section) ReflectFrom(v interface{}) error {
|
|
||||||
typ := reflect.TypeOf(v)
|
|
||||||
val := reflect.ValueOf(v)
|
|
||||||
if typ.Kind() == reflect.Ptr {
|
|
||||||
typ = typ.Elem()
|
|
||||||
val = val.Elem()
|
|
||||||
} else {
|
|
||||||
return errors.New("cannot reflect from non-pointer struct")
|
|
||||||
}
|
|
||||||
|
|
||||||
return s.reflectFrom(val)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReflectFrom reflects file from given struct.
|
|
||||||
func (f *File) ReflectFrom(v interface{}) error {
|
|
||||||
return f.Section("").ReflectFrom(v)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReflectFrom reflects data sources from given struct with name mapper.
|
|
||||||
func ReflectFromWithMapper(cfg *File, v interface{}, mapper NameMapper) error {
|
|
||||||
cfg.NameMapper = mapper
|
|
||||||
return cfg.ReflectFrom(v)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReflectFrom reflects data sources from given struct.
|
|
||||||
func ReflectFrom(cfg *File, v interface{}) error {
|
|
||||||
return ReflectFromWithMapper(cfg, v, nil)
|
|
||||||
}
|
|
|
@ -1,85 +0,0 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
||||||
// source: google/protobuf/empty.proto
|
|
||||||
|
|
||||||
package empty
|
|
||||||
|
|
||||||
import (
|
|
||||||
fmt "fmt"
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
|
||||||
math "math"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
|
||||||
var _ = proto.Marshal
|
|
||||||
var _ = fmt.Errorf
|
|
||||||
var _ = math.Inf
|
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
|
||||||
// is compatible with the proto package it is being compiled against.
|
|
||||||
// A compilation error at this line likely means your copy of the
|
|
||||||
// proto package needs to be updated.
|
|
||||||
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
|
||||||
|
|
||||||
// A generic empty message that you can re-use to avoid defining duplicated
|
|
||||||
// empty messages in your APIs. A typical example is to use it as the request
|
|
||||||
// or the response type of an API method. For instance:
|
|
||||||
//
|
|
||||||
// service Foo {
|
|
||||||
// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// The JSON representation for `Empty` is empty JSON object `{}`.
|
|
||||||
type Empty struct {
|
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
||||||
XXX_unrecognized []byte `json:"-"`
|
|
||||||
XXX_sizecache int32 `json:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Empty) Reset() { *m = Empty{} }
|
|
||||||
func (m *Empty) String() string { return proto.CompactTextString(m) }
|
|
||||||
func (*Empty) ProtoMessage() {}
|
|
||||||
func (*Empty) Descriptor() ([]byte, []int) {
|
|
||||||
return fileDescriptor_900544acb223d5b8, []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*Empty) XXX_WellKnownType() string { return "Empty" }
|
|
||||||
|
|
||||||
func (m *Empty) XXX_Unmarshal(b []byte) error {
|
|
||||||
return xxx_messageInfo_Empty.Unmarshal(m, b)
|
|
||||||
}
|
|
||||||
func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
||||||
return xxx_messageInfo_Empty.Marshal(b, m, deterministic)
|
|
||||||
}
|
|
||||||
func (m *Empty) XXX_Merge(src proto.Message) {
|
|
||||||
xxx_messageInfo_Empty.Merge(m, src)
|
|
||||||
}
|
|
||||||
func (m *Empty) XXX_Size() int {
|
|
||||||
return xxx_messageInfo_Empty.Size(m)
|
|
||||||
}
|
|
||||||
func (m *Empty) XXX_DiscardUnknown() {
|
|
||||||
xxx_messageInfo_Empty.DiscardUnknown(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
var xxx_messageInfo_Empty proto.InternalMessageInfo
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
proto.RegisterType((*Empty)(nil), "google.protobuf.Empty")
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
proto.RegisterFile("google/protobuf/empty.proto", fileDescriptor_900544acb223d5b8)
|
|
||||||
}
|
|
||||||
|
|
||||||
var fileDescriptor_900544acb223d5b8 = []byte{
|
|
||||||
// 148 bytes of a gzipped FileDescriptorProto
|
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xcf, 0xcf, 0x4f,
|
|
||||||
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcd, 0x2d, 0x28,
|
|
||||||
0xa9, 0xd4, 0x03, 0x73, 0x85, 0xf8, 0x21, 0x92, 0x7a, 0x30, 0x49, 0x25, 0x76, 0x2e, 0x56, 0x57,
|
|
||||||
0x90, 0xbc, 0x53, 0x19, 0x97, 0x70, 0x72, 0x7e, 0xae, 0x1e, 0x9a, 0xbc, 0x13, 0x17, 0x58, 0x36,
|
|
||||||
0x00, 0xc4, 0x0d, 0x60, 0x8c, 0x52, 0x4f, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf,
|
|
||||||
0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0x47, 0x58, 0x53, 0x50, 0x52, 0x59, 0x90, 0x5a, 0x0c,
|
|
||||||
0xb1, 0xed, 0x07, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, 0x55, 0x4c, 0x72, 0xee, 0x10,
|
|
||||||
0x13, 0x03, 0xa0, 0xea, 0xf4, 0xc2, 0x53, 0x73, 0x72, 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40,
|
|
||||||
0xea, 0x93, 0xd8, 0xc0, 0x06, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x64, 0xd4, 0xb3, 0xa6,
|
|
||||||
0xb7, 0x00, 0x00, 0x00,
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
// Protocol Buffers - Google's data interchange format
|
|
||||||
// Copyright 2008 Google Inc. All rights reserved.
|
|
||||||
// https://developers.google.com/protocol-buffers/
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are
|
|
||||||
// met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above
|
|
||||||
// copyright notice, this list of conditions and the following disclaimer
|
|
||||||
// in the documentation and/or other materials provided with the
|
|
||||||
// distribution.
|
|
||||||
// * Neither the name of Google Inc. nor the names of its
|
|
||||||
// contributors may be used to endorse or promote products derived from
|
|
||||||
// this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
syntax = "proto3";
|
|
||||||
|
|
||||||
package google.protobuf;
|
|
||||||
|
|
||||||
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
|
|
||||||
option go_package = "github.com/golang/protobuf/ptypes/empty";
|
|
||||||
option java_package = "com.google.protobuf";
|
|
||||||
option java_outer_classname = "EmptyProto";
|
|
||||||
option java_multiple_files = true;
|
|
||||||
option objc_class_prefix = "GPB";
|
|
||||||
option cc_enable_arenas = true;
|
|
||||||
|
|
||||||
// A generic empty message that you can re-use to avoid defining duplicated
|
|
||||||
// empty messages in your APIs. A typical example is to use it as the request
|
|
||||||
// or the response type of an API method. For instance:
|
|
||||||
//
|
|
||||||
// service Foo {
|
|
||||||
// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// The JSON representation for `Empty` is empty JSON object `{}`.
|
|
||||||
message Empty {}
|
|
|
@ -1,122 +0,0 @@
|
||||||
cronexpr: command-line utility
|
|
||||||
==============================
|
|
||||||
|
|
||||||
A command-line utility written in Go to evaluate cron time expressions.
|
|
||||||
|
|
||||||
It is based on the standalone Go library <https://github.com/gorhill/cronexpr>.
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
go get github.com/gorhill/cronexpr
|
|
||||||
go install github.com/gorhill/cronexpr
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
cronexpr [options] "{cron expression}"
|
|
||||||
|
|
||||||
## Options
|
|
||||||
|
|
||||||
`-l`:
|
|
||||||
|
|
||||||
Go-compliant time layout to use for outputting time value(s), see <http://golang.org/pkg/time/#pkg-constants>.
|
|
||||||
|
|
||||||
Default is `"Mon, 02 Jan 2006 15:04:05 MST"`
|
|
||||||
|
|
||||||
`-n`:
|
|
||||||
|
|
||||||
Number of resulting time values to output.
|
|
||||||
|
|
||||||
Default is 1.
|
|
||||||
|
|
||||||
`-t`:
|
|
||||||
|
|
||||||
Whole or partial RFC3339 time value (i.e. `2006-01-02T15:04:05Z07:00`) against which the cron expression is evaluated. Examples of valid values include (assuming EST time zone):
|
|
||||||
|
|
||||||
`13` = 2013-01-01T00:00:00-05:00
|
|
||||||
`2013` = 2013-01-01T00:00:00-05:00
|
|
||||||
`2013-08` = 2013-08-01T00:00:00-05:00
|
|
||||||
`2013-08-31` = 2013-08-31T00:00:00-05:00
|
|
||||||
`2013-08-31T12` = 2013-08-31T12:00:00-05:00
|
|
||||||
`2013-08-31T12:40` = 2013-08-31T12:40:00-05:00
|
|
||||||
`2013-08-31T12:40:35` = 2013-08-31T12:40:35-05:00
|
|
||||||
`2013-08-31T12:40:35-10:00` = 2013-08-31T12:40:35-10:00
|
|
||||||
|
|
||||||
Default time is current time, and default time zone is local time zone.
|
|
||||||
|
|
||||||
## Examples
|
|
||||||
|
|
||||||
#### Example 1
|
|
||||||
|
|
||||||
Midnight on December 31st of any year.
|
|
||||||
|
|
||||||
Command:
|
|
||||||
|
|
||||||
cronexpr -t="2013-08-31" -n=5 "0 0 31 12 *"
|
|
||||||
|
|
||||||
Output (assuming computer is in EST time zone):
|
|
||||||
|
|
||||||
# "0 0 31 12 *" + "2013-08-31T00:00:00-04:00" =
|
|
||||||
Tue, 31 Dec 2013 00:00:00 EST
|
|
||||||
Wed, 31 Dec 2014 00:00:00 EST
|
|
||||||
Thu, 31 Dec 2015 00:00:00 EST
|
|
||||||
Sat, 31 Dec 2016 00:00:00 EST
|
|
||||||
Sun, 31 Dec 2017 00:00:00 EST
|
|
||||||
|
|
||||||
#### Example 2
|
|
||||||
|
|
||||||
2pm on February 29th of any year.
|
|
||||||
|
|
||||||
Command:
|
|
||||||
|
|
||||||
cronexpr -t=2000 -n=10 "0 14 29 2 *"
|
|
||||||
|
|
||||||
Output (assuming computer is in EST time zone):
|
|
||||||
|
|
||||||
# "0 14 29 2 *" + "2000-01-01T00:00:00-05:00" =
|
|
||||||
Tue, 29 Feb 2000 14:00:00 EST
|
|
||||||
Sun, 29 Feb 2004 14:00:00 EST
|
|
||||||
Fri, 29 Feb 2008 14:00:00 EST
|
|
||||||
Wed, 29 Feb 2012 14:00:00 EST
|
|
||||||
Mon, 29 Feb 2016 14:00:00 EST
|
|
||||||
Sat, 29 Feb 2020 14:00:00 EST
|
|
||||||
Thu, 29 Feb 2024 14:00:00 EST
|
|
||||||
Tue, 29 Feb 2028 14:00:00 EST
|
|
||||||
Sun, 29 Feb 2032 14:00:00 EST
|
|
||||||
Fri, 29 Feb 2036 14:00:00 EST
|
|
||||||
|
|
||||||
#### Example 3
|
|
||||||
|
|
||||||
12pm on the work day closest to the 15th of March and every three month
|
|
||||||
thereafter.
|
|
||||||
|
|
||||||
Command:
|
|
||||||
|
|
||||||
cronexpr -t=2013-09-01 -n=5 "0 12 15W 3/3 *"
|
|
||||||
|
|
||||||
Output (assuming computer is in EST time zone):
|
|
||||||
|
|
||||||
# "0 12 15W 3/3 *" + "2013-09-01T00:00:00-04:00" =
|
|
||||||
Mon, 16 Sep 2013 12:00:00 EDT
|
|
||||||
Mon, 16 Dec 2013 12:00:00 EST
|
|
||||||
Fri, 14 Mar 2014 12:00:00 EDT
|
|
||||||
Mon, 16 Jun 2014 12:00:00 EDT
|
|
||||||
Mon, 15 Sep 2014 12:00:00 EDT
|
|
||||||
|
|
||||||
#### Example 4
|
|
||||||
|
|
||||||
Midnight on the fifth Saturday of any month (twist: not all months have a 5th
|
|
||||||
specific day of week).
|
|
||||||
|
|
||||||
Command:
|
|
||||||
|
|
||||||
cronexpr -t=2013-09-02 -n 5 "0 0 * * 6#5"
|
|
||||||
|
|
||||||
Output (assuming computer is in EST time zone):
|
|
||||||
|
|
||||||
# "0 0 * * 6#5" + "2013-09-02T00:00:00-04:00" =
|
|
||||||
Sat, 30 Nov 2013 00:00:00 EST
|
|
||||||
Sat, 29 Mar 2014 00:00:00 EDT
|
|
||||||
Sat, 31 May 2014 00:00:00 EDT
|
|
||||||
Sat, 30 Aug 2014 00:00:00 EDT
|
|
||||||
Sat, 29 Nov 2014 00:00:00 EST
|
|
||||||
|
|
|
@ -1,111 +0,0 @@
|
||||||
/*!
|
|
||||||
* Copyright 2013 Raymond Hill
|
|
||||||
*
|
|
||||||
* Project: github.com/gorhill/cronexpr
|
|
||||||
* File: main.go
|
|
||||||
* Version: 1.0
|
|
||||||
* License: GPL v3 see <https://www.gnu.org/licenses/gpl.html>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
import (
|
|
||||||
"flag"
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/gorhill/cronexpr"
|
|
||||||
)
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
var (
|
|
||||||
usage = func() {
|
|
||||||
fmt.Fprintf(os.Stderr, "usage:\n %s [options] \"{cron expression}\"\noptions:\n", os.Args[0])
|
|
||||||
flag.PrintDefaults()
|
|
||||||
}
|
|
||||||
inTimeStr string
|
|
||||||
outTimeCount uint
|
|
||||||
outTimeLayout string
|
|
||||||
)
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
var err error
|
|
||||||
|
|
||||||
flag.Usage = usage
|
|
||||||
flag.StringVar(&inTimeStr, "t", "", `whole or partial RFC3339 time value (i.e. "2006-01-02T15:04:05Z07:00") against which the cron expression is evaluated, now if not present`)
|
|
||||||
flag.UintVar(&outTimeCount, "n", 1, `number of resulting time values to output`)
|
|
||||||
flag.StringVar(&outTimeLayout, "l", "Mon, 02 Jan 2006 15:04:05 MST", `Go-compliant time layout to use for outputting time value(s), see <http://golang.org/pkg/time/#pkg-constants>`)
|
|
||||||
flag.Parse()
|
|
||||||
|
|
||||||
cronStr := flag.Arg(0)
|
|
||||||
if len(cronStr) == 0 {
|
|
||||||
flag.Usage()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
inTime := time.Now()
|
|
||||||
inTimeLayout := ""
|
|
||||||
timeStrLen := len(inTimeStr)
|
|
||||||
if timeStrLen == 2 {
|
|
||||||
inTimeLayout = "06"
|
|
||||||
} else if timeStrLen >= 4 {
|
|
||||||
inTimeLayout += "2006"
|
|
||||||
if timeStrLen >= 7 {
|
|
||||||
inTimeLayout += "-01"
|
|
||||||
if timeStrLen >= 10 {
|
|
||||||
inTimeLayout += "-02"
|
|
||||||
if timeStrLen >= 13 {
|
|
||||||
inTimeLayout += "T15"
|
|
||||||
if timeStrLen >= 16 {
|
|
||||||
inTimeLayout += ":04"
|
|
||||||
if timeStrLen >= 19 {
|
|
||||||
inTimeLayout += ":05"
|
|
||||||
if timeStrLen >= 20 {
|
|
||||||
inTimeLayout += "Z07:00"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(inTimeLayout) > 0 {
|
|
||||||
// default to local time zone
|
|
||||||
if timeStrLen < 20 {
|
|
||||||
inTime, err = time.ParseInLocation(inTimeLayout, inTimeStr, time.Local)
|
|
||||||
} else {
|
|
||||||
inTime, err = time.Parse(inTimeLayout, inTimeStr)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, "# error: unparseable time value: \"%s\"\n", inTimeStr)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expr, err := cronexpr.Parse(cronStr)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, "# %s: %s\n", os.Args[0], err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Anything on the output which starts with '#' can be ignored if the caller
|
|
||||||
// is interested only in the time values. There is only one time
|
|
||||||
// value per line, and they are always in chronological ascending order.
|
|
||||||
fmt.Printf("# \"%s\" + \"%s\" =\n", cronStr, inTime.Format(time.RFC3339))
|
|
||||||
|
|
||||||
if outTimeCount < 1 {
|
|
||||||
outTimeCount = 1
|
|
||||||
}
|
|
||||||
outTimes := expr.NextN(inTime, outTimeCount)
|
|
||||||
for _, outTime := range outTimes {
|
|
||||||
fmt.Println(outTime.Format(outTimeLayout))
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
//go:generate protoc -I ./ ./grpc_broker.proto ./grpc_controller.proto --go_out=plugins=grpc:.
|
|
||||||
|
|
||||||
package proto
|
|
|
@ -1,203 +0,0 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
||||||
// source: grpc_broker.proto
|
|
||||||
|
|
||||||
package proto
|
|
||||||
|
|
||||||
import (
|
|
||||||
fmt "fmt"
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
|
||||||
context "golang.org/x/net/context"
|
|
||||||
grpc "google.golang.org/grpc"
|
|
||||||
math "math"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
|
||||||
var _ = proto.Marshal
|
|
||||||
var _ = fmt.Errorf
|
|
||||||
var _ = math.Inf
|
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
|
||||||
// is compatible with the proto package it is being compiled against.
|
|
||||||
// A compilation error at this line likely means your copy of the
|
|
||||||
// proto package needs to be updated.
|
|
||||||
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
|
||||||
|
|
||||||
type ConnInfo struct {
|
|
||||||
ServiceId uint32 `protobuf:"varint,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
|
|
||||||
Network string `protobuf:"bytes,2,opt,name=network,proto3" json:"network,omitempty"`
|
|
||||||
Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
|
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
||||||
XXX_unrecognized []byte `json:"-"`
|
|
||||||
XXX_sizecache int32 `json:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *ConnInfo) Reset() { *m = ConnInfo{} }
|
|
||||||
func (m *ConnInfo) String() string { return proto.CompactTextString(m) }
|
|
||||||
func (*ConnInfo) ProtoMessage() {}
|
|
||||||
func (*ConnInfo) Descriptor() ([]byte, []int) {
|
|
||||||
return fileDescriptor_802e9beed3ec3b28, []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *ConnInfo) XXX_Unmarshal(b []byte) error {
|
|
||||||
return xxx_messageInfo_ConnInfo.Unmarshal(m, b)
|
|
||||||
}
|
|
||||||
func (m *ConnInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
||||||
return xxx_messageInfo_ConnInfo.Marshal(b, m, deterministic)
|
|
||||||
}
|
|
||||||
func (m *ConnInfo) XXX_Merge(src proto.Message) {
|
|
||||||
xxx_messageInfo_ConnInfo.Merge(m, src)
|
|
||||||
}
|
|
||||||
func (m *ConnInfo) XXX_Size() int {
|
|
||||||
return xxx_messageInfo_ConnInfo.Size(m)
|
|
||||||
}
|
|
||||||
func (m *ConnInfo) XXX_DiscardUnknown() {
|
|
||||||
xxx_messageInfo_ConnInfo.DiscardUnknown(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
var xxx_messageInfo_ConnInfo proto.InternalMessageInfo
|
|
||||||
|
|
||||||
func (m *ConnInfo) GetServiceId() uint32 {
|
|
||||||
if m != nil {
|
|
||||||
return m.ServiceId
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *ConnInfo) GetNetwork() string {
|
|
||||||
if m != nil {
|
|
||||||
return m.Network
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *ConnInfo) GetAddress() string {
|
|
||||||
if m != nil {
|
|
||||||
return m.Address
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
proto.RegisterType((*ConnInfo)(nil), "proto.ConnInfo")
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() { proto.RegisterFile("grpc_broker.proto", fileDescriptor_802e9beed3ec3b28) }
|
|
||||||
|
|
||||||
var fileDescriptor_802e9beed3ec3b28 = []byte{
|
|
||||||
// 164 bytes of a gzipped FileDescriptorProto
|
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4c, 0x2f, 0x2a, 0x48,
|
|
||||||
0x8e, 0x4f, 0x2a, 0xca, 0xcf, 0x4e, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x05,
|
|
||||||
0x53, 0x4a, 0xb1, 0x5c, 0x1c, 0xce, 0xf9, 0x79, 0x79, 0x9e, 0x79, 0x69, 0xf9, 0x42, 0xb2, 0x5c,
|
|
||||||
0x5c, 0xc5, 0xa9, 0x45, 0x65, 0x99, 0xc9, 0xa9, 0xf1, 0x99, 0x29, 0x12, 0x8c, 0x0a, 0x8c, 0x1a,
|
|
||||||
0xbc, 0x41, 0x9c, 0x50, 0x11, 0xcf, 0x14, 0x21, 0x09, 0x2e, 0xf6, 0xbc, 0xd4, 0x92, 0xf2, 0xfc,
|
|
||||||
0xa2, 0x6c, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xce, 0x20, 0x18, 0x17, 0x24, 0x93, 0x98, 0x92, 0x52,
|
|
||||||
0x94, 0x5a, 0x5c, 0x2c, 0xc1, 0x0c, 0x91, 0x81, 0x72, 0x8d, 0x1c, 0xb9, 0xb8, 0xdc, 0x83, 0x02,
|
|
||||||
0x9c, 0x9d, 0xc0, 0x36, 0x0b, 0x19, 0x73, 0x71, 0x07, 0x97, 0x24, 0x16, 0x95, 0x04, 0x97, 0x14,
|
|
||||||
0xa5, 0x26, 0xe6, 0x0a, 0xf1, 0x43, 0x9c, 0xa2, 0x07, 0x73, 0x80, 0x14, 0xba, 0x80, 0x06, 0xa3,
|
|
||||||
0x01, 0x63, 0x12, 0x1b, 0x58, 0xcc, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x7a, 0xda, 0xd5, 0x84,
|
|
||||||
0xc4, 0x00, 0x00, 0x00,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
|
||||||
var _ context.Context
|
|
||||||
var _ grpc.ClientConn
|
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
|
||||||
// is compatible with the grpc package it is being compiled against.
|
|
||||||
const _ = grpc.SupportPackageIsVersion4
|
|
||||||
|
|
||||||
// GRPCBrokerClient is the client API for GRPCBroker service.
|
|
||||||
//
|
|
||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
|
|
||||||
type GRPCBrokerClient interface {
|
|
||||||
StartStream(ctx context.Context, opts ...grpc.CallOption) (GRPCBroker_StartStreamClient, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
type gRPCBrokerClient struct {
|
|
||||||
cc *grpc.ClientConn
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGRPCBrokerClient(cc *grpc.ClientConn) GRPCBrokerClient {
|
|
||||||
return &gRPCBrokerClient{cc}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *gRPCBrokerClient) StartStream(ctx context.Context, opts ...grpc.CallOption) (GRPCBroker_StartStreamClient, error) {
|
|
||||||
stream, err := c.cc.NewStream(ctx, &_GRPCBroker_serviceDesc.Streams[0], "/proto.GRPCBroker/StartStream", opts...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
x := &gRPCBrokerStartStreamClient{stream}
|
|
||||||
return x, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type GRPCBroker_StartStreamClient interface {
|
|
||||||
Send(*ConnInfo) error
|
|
||||||
Recv() (*ConnInfo, error)
|
|
||||||
grpc.ClientStream
|
|
||||||
}
|
|
||||||
|
|
||||||
type gRPCBrokerStartStreamClient struct {
|
|
||||||
grpc.ClientStream
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *gRPCBrokerStartStreamClient) Send(m *ConnInfo) error {
|
|
||||||
return x.ClientStream.SendMsg(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *gRPCBrokerStartStreamClient) Recv() (*ConnInfo, error) {
|
|
||||||
m := new(ConnInfo)
|
|
||||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return m, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GRPCBrokerServer is the server API for GRPCBroker service.
|
|
||||||
type GRPCBrokerServer interface {
|
|
||||||
StartStream(GRPCBroker_StartStreamServer) error
|
|
||||||
}
|
|
||||||
|
|
||||||
func RegisterGRPCBrokerServer(s *grpc.Server, srv GRPCBrokerServer) {
|
|
||||||
s.RegisterService(&_GRPCBroker_serviceDesc, srv)
|
|
||||||
}
|
|
||||||
|
|
||||||
func _GRPCBroker_StartStream_Handler(srv interface{}, stream grpc.ServerStream) error {
|
|
||||||
return srv.(GRPCBrokerServer).StartStream(&gRPCBrokerStartStreamServer{stream})
|
|
||||||
}
|
|
||||||
|
|
||||||
type GRPCBroker_StartStreamServer interface {
|
|
||||||
Send(*ConnInfo) error
|
|
||||||
Recv() (*ConnInfo, error)
|
|
||||||
grpc.ServerStream
|
|
||||||
}
|
|
||||||
|
|
||||||
type gRPCBrokerStartStreamServer struct {
|
|
||||||
grpc.ServerStream
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *gRPCBrokerStartStreamServer) Send(m *ConnInfo) error {
|
|
||||||
return x.ServerStream.SendMsg(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *gRPCBrokerStartStreamServer) Recv() (*ConnInfo, error) {
|
|
||||||
m := new(ConnInfo)
|
|
||||||
if err := x.ServerStream.RecvMsg(m); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return m, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var _GRPCBroker_serviceDesc = grpc.ServiceDesc{
|
|
||||||
ServiceName: "proto.GRPCBroker",
|
|
||||||
HandlerType: (*GRPCBrokerServer)(nil),
|
|
||||||
Methods: []grpc.MethodDesc{},
|
|
||||||
Streams: []grpc.StreamDesc{
|
|
||||||
{
|
|
||||||
StreamName: "StartStream",
|
|
||||||
Handler: _GRPCBroker_StartStream_Handler,
|
|
||||||
ServerStreams: true,
|
|
||||||
ClientStreams: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Metadata: "grpc_broker.proto",
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
syntax = "proto3";
|
|
||||||
package proto;
|
|
||||||
|
|
||||||
message ConnInfo {
|
|
||||||
uint32 service_id = 1;
|
|
||||||
string network = 2;
|
|
||||||
string address = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
service GRPCBroker {
|
|
||||||
rpc StartStream(stream ConnInfo) returns (stream ConnInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,143 +0,0 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
||||||
// source: grpc_controller.proto
|
|
||||||
|
|
||||||
package proto
|
|
||||||
|
|
||||||
import (
|
|
||||||
fmt "fmt"
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
|
||||||
context "golang.org/x/net/context"
|
|
||||||
grpc "google.golang.org/grpc"
|
|
||||||
math "math"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
|
||||||
var _ = proto.Marshal
|
|
||||||
var _ = fmt.Errorf
|
|
||||||
var _ = math.Inf
|
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
|
||||||
// is compatible with the proto package it is being compiled against.
|
|
||||||
// A compilation error at this line likely means your copy of the
|
|
||||||
// proto package needs to be updated.
|
|
||||||
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
|
||||||
|
|
||||||
type Empty struct {
|
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
||||||
XXX_unrecognized []byte `json:"-"`
|
|
||||||
XXX_sizecache int32 `json:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Empty) Reset() { *m = Empty{} }
|
|
||||||
func (m *Empty) String() string { return proto.CompactTextString(m) }
|
|
||||||
func (*Empty) ProtoMessage() {}
|
|
||||||
func (*Empty) Descriptor() ([]byte, []int) {
|
|
||||||
return fileDescriptor_23c2c7e42feab570, []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Empty) XXX_Unmarshal(b []byte) error {
|
|
||||||
return xxx_messageInfo_Empty.Unmarshal(m, b)
|
|
||||||
}
|
|
||||||
func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
||||||
return xxx_messageInfo_Empty.Marshal(b, m, deterministic)
|
|
||||||
}
|
|
||||||
func (m *Empty) XXX_Merge(src proto.Message) {
|
|
||||||
xxx_messageInfo_Empty.Merge(m, src)
|
|
||||||
}
|
|
||||||
func (m *Empty) XXX_Size() int {
|
|
||||||
return xxx_messageInfo_Empty.Size(m)
|
|
||||||
}
|
|
||||||
func (m *Empty) XXX_DiscardUnknown() {
|
|
||||||
xxx_messageInfo_Empty.DiscardUnknown(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
var xxx_messageInfo_Empty proto.InternalMessageInfo
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
proto.RegisterType((*Empty)(nil), "proto.Empty")
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() { proto.RegisterFile("grpc_controller.proto", fileDescriptor_23c2c7e42feab570) }
|
|
||||||
|
|
||||||
var fileDescriptor_23c2c7e42feab570 = []byte{
|
|
||||||
// 97 bytes of a gzipped FileDescriptorProto
|
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4d, 0x2f, 0x2a, 0x48,
|
|
||||||
0x8e, 0x4f, 0xce, 0xcf, 0x2b, 0x29, 0xca, 0xcf, 0xc9, 0x49, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f,
|
|
||||||
0xc9, 0x17, 0x62, 0x05, 0x53, 0x4a, 0xec, 0x5c, 0xac, 0xae, 0xb9, 0x05, 0x25, 0x95, 0x46, 0x16,
|
|
||||||
0x5c, 0x7c, 0xee, 0x41, 0x01, 0xce, 0xce, 0x70, 0x75, 0x42, 0x6a, 0x5c, 0x1c, 0xc1, 0x19, 0xa5,
|
|
||||||
0x25, 0x29, 0xf9, 0xe5, 0x79, 0x42, 0x3c, 0x10, 0x5d, 0x7a, 0x60, 0xb5, 0x52, 0x28, 0xbc, 0x24,
|
|
||||||
0x36, 0x30, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x69, 0xa1, 0xad, 0x79, 0x69, 0x00, 0x00,
|
|
||||||
0x00,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
|
||||||
var _ context.Context
|
|
||||||
var _ grpc.ClientConn
|
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
|
||||||
// is compatible with the grpc package it is being compiled against.
|
|
||||||
const _ = grpc.SupportPackageIsVersion4
|
|
||||||
|
|
||||||
// GRPCControllerClient is the client API for GRPCController service.
|
|
||||||
//
|
|
||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
|
|
||||||
type GRPCControllerClient interface {
|
|
||||||
Shutdown(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
type gRPCControllerClient struct {
|
|
||||||
cc *grpc.ClientConn
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGRPCControllerClient(cc *grpc.ClientConn) GRPCControllerClient {
|
|
||||||
return &gRPCControllerClient{cc}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *gRPCControllerClient) Shutdown(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
|
|
||||||
out := new(Empty)
|
|
||||||
err := c.cc.Invoke(ctx, "/proto.GRPCController/Shutdown", in, out, opts...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return out, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GRPCControllerServer is the server API for GRPCController service.
|
|
||||||
type GRPCControllerServer interface {
|
|
||||||
Shutdown(context.Context, *Empty) (*Empty, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func RegisterGRPCControllerServer(s *grpc.Server, srv GRPCControllerServer) {
|
|
||||||
s.RegisterService(&_GRPCController_serviceDesc, srv)
|
|
||||||
}
|
|
||||||
|
|
||||||
func _GRPCController_Shutdown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
||||||
in := new(Empty)
|
|
||||||
if err := dec(in); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if interceptor == nil {
|
|
||||||
return srv.(GRPCControllerServer).Shutdown(ctx, in)
|
|
||||||
}
|
|
||||||
info := &grpc.UnaryServerInfo{
|
|
||||||
Server: srv,
|
|
||||||
FullMethod: "/proto.GRPCController/Shutdown",
|
|
||||||
}
|
|
||||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
||||||
return srv.(GRPCControllerServer).Shutdown(ctx, req.(*Empty))
|
|
||||||
}
|
|
||||||
return interceptor(ctx, in, info, handler)
|
|
||||||
}
|
|
||||||
|
|
||||||
var _GRPCController_serviceDesc = grpc.ServiceDesc{
|
|
||||||
ServiceName: "proto.GRPCController",
|
|
||||||
HandlerType: (*GRPCControllerServer)(nil),
|
|
||||||
Methods: []grpc.MethodDesc{
|
|
||||||
{
|
|
||||||
MethodName: "Shutdown",
|
|
||||||
Handler: _GRPCController_Shutdown_Handler,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Streams: []grpc.StreamDesc{},
|
|
||||||
Metadata: "grpc_controller.proto",
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
syntax = "proto3";
|
|
||||||
package proto;
|
|
||||||
|
|
||||||
message Empty {
|
|
||||||
}
|
|
||||||
|
|
||||||
// The GRPCController is responsible for telling the plugin server to shutdown.
|
|
||||||
service GRPCController {
|
|
||||||
rpc Shutdown(Empty) returns (Empty);
|
|
||||||
}
|
|
|
@ -1,359 +0,0 @@
|
||||||
// Copyright 2017 The Prometheus Authors
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package xfs
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ParseStats parses a Stats from an input io.Reader, using the format
|
|
||||||
// found in /proc/fs/xfs/stat.
|
|
||||||
func ParseStats(r io.Reader) (*Stats, error) {
|
|
||||||
const (
|
|
||||||
// Fields parsed into stats structures.
|
|
||||||
fieldExtentAlloc = "extent_alloc"
|
|
||||||
fieldAbt = "abt"
|
|
||||||
fieldBlkMap = "blk_map"
|
|
||||||
fieldBmbt = "bmbt"
|
|
||||||
fieldDir = "dir"
|
|
||||||
fieldTrans = "trans"
|
|
||||||
fieldIg = "ig"
|
|
||||||
fieldLog = "log"
|
|
||||||
fieldRw = "rw"
|
|
||||||
fieldAttr = "attr"
|
|
||||||
fieldIcluster = "icluster"
|
|
||||||
fieldVnodes = "vnodes"
|
|
||||||
fieldBuf = "buf"
|
|
||||||
fieldXpc = "xpc"
|
|
||||||
|
|
||||||
// Unimplemented at this time due to lack of documentation.
|
|
||||||
fieldPushAil = "push_ail"
|
|
||||||
fieldXstrat = "xstrat"
|
|
||||||
fieldAbtb2 = "abtb2"
|
|
||||||
fieldAbtc2 = "abtc2"
|
|
||||||
fieldBmbt2 = "bmbt2"
|
|
||||||
fieldIbt2 = "ibt2"
|
|
||||||
fieldFibt2 = "fibt2"
|
|
||||||
fieldQm = "qm"
|
|
||||||
fieldDebug = "debug"
|
|
||||||
)
|
|
||||||
|
|
||||||
var xfss Stats
|
|
||||||
|
|
||||||
s := bufio.NewScanner(r)
|
|
||||||
for s.Scan() {
|
|
||||||
// Expect at least a string label and a single integer value, ex:
|
|
||||||
// - abt 0
|
|
||||||
// - rw 1 2
|
|
||||||
ss := strings.Fields(string(s.Bytes()))
|
|
||||||
if len(ss) < 2 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
label := ss[0]
|
|
||||||
|
|
||||||
// Extended precision counters are uint64 values.
|
|
||||||
if label == fieldXpc {
|
|
||||||
us, err := parseUint64s(ss[1:])
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
xfss.ExtendedPrecision, err = extendedPrecisionStats(us)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// All other counters are uint32 values.
|
|
||||||
us, err := parseUint32s(ss[1:])
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
switch label {
|
|
||||||
case fieldExtentAlloc:
|
|
||||||
xfss.ExtentAllocation, err = extentAllocationStats(us)
|
|
||||||
case fieldAbt:
|
|
||||||
xfss.AllocationBTree, err = btreeStats(us)
|
|
||||||
case fieldBlkMap:
|
|
||||||
xfss.BlockMapping, err = blockMappingStats(us)
|
|
||||||
case fieldBmbt:
|
|
||||||
xfss.BlockMapBTree, err = btreeStats(us)
|
|
||||||
case fieldDir:
|
|
||||||
xfss.DirectoryOperation, err = directoryOperationStats(us)
|
|
||||||
case fieldTrans:
|
|
||||||
xfss.Transaction, err = transactionStats(us)
|
|
||||||
case fieldIg:
|
|
||||||
xfss.InodeOperation, err = inodeOperationStats(us)
|
|
||||||
case fieldLog:
|
|
||||||
xfss.LogOperation, err = logOperationStats(us)
|
|
||||||
case fieldRw:
|
|
||||||
xfss.ReadWrite, err = readWriteStats(us)
|
|
||||||
case fieldAttr:
|
|
||||||
xfss.AttributeOperation, err = attributeOperationStats(us)
|
|
||||||
case fieldIcluster:
|
|
||||||
xfss.InodeClustering, err = inodeClusteringStats(us)
|
|
||||||
case fieldVnodes:
|
|
||||||
xfss.Vnode, err = vnodeStats(us)
|
|
||||||
case fieldBuf:
|
|
||||||
xfss.Buffer, err = bufferStats(us)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return &xfss, s.Err()
|
|
||||||
}
|
|
||||||
|
|
||||||
// extentAllocationStats builds an ExtentAllocationStats from a slice of uint32s.
|
|
||||||
func extentAllocationStats(us []uint32) (ExtentAllocationStats, error) {
|
|
||||||
if l := len(us); l != 4 {
|
|
||||||
return ExtentAllocationStats{}, fmt.Errorf("incorrect number of values for XFS extent allocation stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return ExtentAllocationStats{
|
|
||||||
ExtentsAllocated: us[0],
|
|
||||||
BlocksAllocated: us[1],
|
|
||||||
ExtentsFreed: us[2],
|
|
||||||
BlocksFreed: us[3],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// btreeStats builds a BTreeStats from a slice of uint32s.
|
|
||||||
func btreeStats(us []uint32) (BTreeStats, error) {
|
|
||||||
if l := len(us); l != 4 {
|
|
||||||
return BTreeStats{}, fmt.Errorf("incorrect number of values for XFS btree stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return BTreeStats{
|
|
||||||
Lookups: us[0],
|
|
||||||
Compares: us[1],
|
|
||||||
RecordsInserted: us[2],
|
|
||||||
RecordsDeleted: us[3],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// BlockMappingStat builds a BlockMappingStats from a slice of uint32s.
|
|
||||||
func blockMappingStats(us []uint32) (BlockMappingStats, error) {
|
|
||||||
if l := len(us); l != 7 {
|
|
||||||
return BlockMappingStats{}, fmt.Errorf("incorrect number of values for XFS block mapping stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return BlockMappingStats{
|
|
||||||
Reads: us[0],
|
|
||||||
Writes: us[1],
|
|
||||||
Unmaps: us[2],
|
|
||||||
ExtentListInsertions: us[3],
|
|
||||||
ExtentListDeletions: us[4],
|
|
||||||
ExtentListLookups: us[5],
|
|
||||||
ExtentListCompares: us[6],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// DirectoryOperationStats builds a DirectoryOperationStats from a slice of uint32s.
|
|
||||||
func directoryOperationStats(us []uint32) (DirectoryOperationStats, error) {
|
|
||||||
if l := len(us); l != 4 {
|
|
||||||
return DirectoryOperationStats{}, fmt.Errorf("incorrect number of values for XFS directory operation stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return DirectoryOperationStats{
|
|
||||||
Lookups: us[0],
|
|
||||||
Creates: us[1],
|
|
||||||
Removes: us[2],
|
|
||||||
Getdents: us[3],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// TransactionStats builds a TransactionStats from a slice of uint32s.
|
|
||||||
func transactionStats(us []uint32) (TransactionStats, error) {
|
|
||||||
if l := len(us); l != 3 {
|
|
||||||
return TransactionStats{}, fmt.Errorf("incorrect number of values for XFS transaction stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return TransactionStats{
|
|
||||||
Sync: us[0],
|
|
||||||
Async: us[1],
|
|
||||||
Empty: us[2],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// InodeOperationStats builds an InodeOperationStats from a slice of uint32s.
|
|
||||||
func inodeOperationStats(us []uint32) (InodeOperationStats, error) {
|
|
||||||
if l := len(us); l != 7 {
|
|
||||||
return InodeOperationStats{}, fmt.Errorf("incorrect number of values for XFS inode operation stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return InodeOperationStats{
|
|
||||||
Attempts: us[0],
|
|
||||||
Found: us[1],
|
|
||||||
Recycle: us[2],
|
|
||||||
Missed: us[3],
|
|
||||||
Duplicate: us[4],
|
|
||||||
Reclaims: us[5],
|
|
||||||
AttributeChange: us[6],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// LogOperationStats builds a LogOperationStats from a slice of uint32s.
|
|
||||||
func logOperationStats(us []uint32) (LogOperationStats, error) {
|
|
||||||
if l := len(us); l != 5 {
|
|
||||||
return LogOperationStats{}, fmt.Errorf("incorrect number of values for XFS log operation stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return LogOperationStats{
|
|
||||||
Writes: us[0],
|
|
||||||
Blocks: us[1],
|
|
||||||
NoInternalBuffers: us[2],
|
|
||||||
Force: us[3],
|
|
||||||
ForceSleep: us[4],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadWriteStats builds a ReadWriteStats from a slice of uint32s.
|
|
||||||
func readWriteStats(us []uint32) (ReadWriteStats, error) {
|
|
||||||
if l := len(us); l != 2 {
|
|
||||||
return ReadWriteStats{}, fmt.Errorf("incorrect number of values for XFS read write stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return ReadWriteStats{
|
|
||||||
Read: us[0],
|
|
||||||
Write: us[1],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// AttributeOperationStats builds an AttributeOperationStats from a slice of uint32s.
|
|
||||||
func attributeOperationStats(us []uint32) (AttributeOperationStats, error) {
|
|
||||||
if l := len(us); l != 4 {
|
|
||||||
return AttributeOperationStats{}, fmt.Errorf("incorrect number of values for XFS attribute operation stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return AttributeOperationStats{
|
|
||||||
Get: us[0],
|
|
||||||
Set: us[1],
|
|
||||||
Remove: us[2],
|
|
||||||
List: us[3],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// InodeClusteringStats builds an InodeClusteringStats from a slice of uint32s.
|
|
||||||
func inodeClusteringStats(us []uint32) (InodeClusteringStats, error) {
|
|
||||||
if l := len(us); l != 3 {
|
|
||||||
return InodeClusteringStats{}, fmt.Errorf("incorrect number of values for XFS inode clustering stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return InodeClusteringStats{
|
|
||||||
Iflush: us[0],
|
|
||||||
Flush: us[1],
|
|
||||||
FlushInode: us[2],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// VnodeStats builds a VnodeStats from a slice of uint32s.
|
|
||||||
func vnodeStats(us []uint32) (VnodeStats, error) {
|
|
||||||
// The attribute "Free" appears to not be available on older XFS
|
|
||||||
// stats versions. Therefore, 7 or 8 elements may appear in
|
|
||||||
// this slice.
|
|
||||||
l := len(us)
|
|
||||||
if l != 7 && l != 8 {
|
|
||||||
return VnodeStats{}, fmt.Errorf("incorrect number of values for XFS vnode stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
s := VnodeStats{
|
|
||||||
Active: us[0],
|
|
||||||
Allocate: us[1],
|
|
||||||
Get: us[2],
|
|
||||||
Hold: us[3],
|
|
||||||
Release: us[4],
|
|
||||||
Reclaim: us[5],
|
|
||||||
Remove: us[6],
|
|
||||||
}
|
|
||||||
|
|
||||||
// Skip adding free, unless it is present. The zero value will
|
|
||||||
// be used in place of an actual count.
|
|
||||||
if l == 7 {
|
|
||||||
return s, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
s.Free = us[7]
|
|
||||||
return s, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// BufferStats builds a BufferStats from a slice of uint32s.
|
|
||||||
func bufferStats(us []uint32) (BufferStats, error) {
|
|
||||||
if l := len(us); l != 9 {
|
|
||||||
return BufferStats{}, fmt.Errorf("incorrect number of values for XFS buffer stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return BufferStats{
|
|
||||||
Get: us[0],
|
|
||||||
Create: us[1],
|
|
||||||
GetLocked: us[2],
|
|
||||||
GetLockedWaited: us[3],
|
|
||||||
BusyLocked: us[4],
|
|
||||||
MissLocked: us[5],
|
|
||||||
PageRetries: us[6],
|
|
||||||
PageFound: us[7],
|
|
||||||
GetRead: us[8],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ExtendedPrecisionStats builds an ExtendedPrecisionStats from a slice of uint32s.
|
|
||||||
func extendedPrecisionStats(us []uint64) (ExtendedPrecisionStats, error) {
|
|
||||||
if l := len(us); l != 3 {
|
|
||||||
return ExtendedPrecisionStats{}, fmt.Errorf("incorrect number of values for XFS extended precision stats: %d", l)
|
|
||||||
}
|
|
||||||
|
|
||||||
return ExtendedPrecisionStats{
|
|
||||||
FlushBytes: us[0],
|
|
||||||
WriteBytes: us[1],
|
|
||||||
ReadBytes: us[2],
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// parseUint32s parses a slice of strings into a slice of uint32s.
|
|
||||||
func parseUint32s(ss []string) ([]uint32, error) {
|
|
||||||
us := make([]uint32, 0, len(ss))
|
|
||||||
for _, s := range ss {
|
|
||||||
u, err := strconv.ParseUint(s, 10, 32)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
us = append(us, uint32(u))
|
|
||||||
}
|
|
||||||
|
|
||||||
return us, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// parseUint64s parses a slice of strings into a slice of uint64s.
|
|
||||||
func parseUint64s(ss []string) ([]uint64, error) {
|
|
||||||
us := make([]uint64, 0, len(ss))
|
|
||||||
for _, s := range ss {
|
|
||||||
u, err := strconv.ParseUint(s, 10, 64)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
us = append(us, u)
|
|
||||||
}
|
|
||||||
|
|
||||||
return us, nil
|
|
||||||
}
|
|
|
@ -1,163 +0,0 @@
|
||||||
// Copyright 2017 The Prometheus Authors
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
// Package xfs provides access to statistics exposed by the XFS filesystem.
|
|
||||||
package xfs
|
|
||||||
|
|
||||||
// Stats contains XFS filesystem runtime statistics, parsed from
|
|
||||||
// /proc/fs/xfs/stat.
|
|
||||||
//
|
|
||||||
// The names and meanings of each statistic were taken from
|
|
||||||
// http://xfs.org/index.php/Runtime_Stats and xfs_stats.h in the Linux
|
|
||||||
// kernel source. Most counters are uint32s (same data types used in
|
|
||||||
// xfs_stats.h), but some of the "extended precision stats" are uint64s.
|
|
||||||
type Stats struct {
|
|
||||||
// The name of the filesystem used to source these statistics.
|
|
||||||
// If empty, this indicates aggregated statistics for all XFS
|
|
||||||
// filesystems on the host.
|
|
||||||
Name string
|
|
||||||
|
|
||||||
ExtentAllocation ExtentAllocationStats
|
|
||||||
AllocationBTree BTreeStats
|
|
||||||
BlockMapping BlockMappingStats
|
|
||||||
BlockMapBTree BTreeStats
|
|
||||||
DirectoryOperation DirectoryOperationStats
|
|
||||||
Transaction TransactionStats
|
|
||||||
InodeOperation InodeOperationStats
|
|
||||||
LogOperation LogOperationStats
|
|
||||||
ReadWrite ReadWriteStats
|
|
||||||
AttributeOperation AttributeOperationStats
|
|
||||||
InodeClustering InodeClusteringStats
|
|
||||||
Vnode VnodeStats
|
|
||||||
Buffer BufferStats
|
|
||||||
ExtendedPrecision ExtendedPrecisionStats
|
|
||||||
}
|
|
||||||
|
|
||||||
// ExtentAllocationStats contains statistics regarding XFS extent allocations.
|
|
||||||
type ExtentAllocationStats struct {
|
|
||||||
ExtentsAllocated uint32
|
|
||||||
BlocksAllocated uint32
|
|
||||||
ExtentsFreed uint32
|
|
||||||
BlocksFreed uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// BTreeStats contains statistics regarding an XFS internal B-tree.
|
|
||||||
type BTreeStats struct {
|
|
||||||
Lookups uint32
|
|
||||||
Compares uint32
|
|
||||||
RecordsInserted uint32
|
|
||||||
RecordsDeleted uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// BlockMappingStats contains statistics regarding XFS block maps.
|
|
||||||
type BlockMappingStats struct {
|
|
||||||
Reads uint32
|
|
||||||
Writes uint32
|
|
||||||
Unmaps uint32
|
|
||||||
ExtentListInsertions uint32
|
|
||||||
ExtentListDeletions uint32
|
|
||||||
ExtentListLookups uint32
|
|
||||||
ExtentListCompares uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// DirectoryOperationStats contains statistics regarding XFS directory entries.
|
|
||||||
type DirectoryOperationStats struct {
|
|
||||||
Lookups uint32
|
|
||||||
Creates uint32
|
|
||||||
Removes uint32
|
|
||||||
Getdents uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// TransactionStats contains statistics regarding XFS metadata transactions.
|
|
||||||
type TransactionStats struct {
|
|
||||||
Sync uint32
|
|
||||||
Async uint32
|
|
||||||
Empty uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// InodeOperationStats contains statistics regarding XFS inode operations.
|
|
||||||
type InodeOperationStats struct {
|
|
||||||
Attempts uint32
|
|
||||||
Found uint32
|
|
||||||
Recycle uint32
|
|
||||||
Missed uint32
|
|
||||||
Duplicate uint32
|
|
||||||
Reclaims uint32
|
|
||||||
AttributeChange uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// LogOperationStats contains statistics regarding the XFS log buffer.
|
|
||||||
type LogOperationStats struct {
|
|
||||||
Writes uint32
|
|
||||||
Blocks uint32
|
|
||||||
NoInternalBuffers uint32
|
|
||||||
Force uint32
|
|
||||||
ForceSleep uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadWriteStats contains statistics regarding the number of read and write
|
|
||||||
// system calls for XFS filesystems.
|
|
||||||
type ReadWriteStats struct {
|
|
||||||
Read uint32
|
|
||||||
Write uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// AttributeOperationStats contains statistics regarding manipulation of
|
|
||||||
// XFS extended file attributes.
|
|
||||||
type AttributeOperationStats struct {
|
|
||||||
Get uint32
|
|
||||||
Set uint32
|
|
||||||
Remove uint32
|
|
||||||
List uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// InodeClusteringStats contains statistics regarding XFS inode clustering
|
|
||||||
// operations.
|
|
||||||
type InodeClusteringStats struct {
|
|
||||||
Iflush uint32
|
|
||||||
Flush uint32
|
|
||||||
FlushInode uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// VnodeStats contains statistics regarding XFS vnode operations.
|
|
||||||
type VnodeStats struct {
|
|
||||||
Active uint32
|
|
||||||
Allocate uint32
|
|
||||||
Get uint32
|
|
||||||
Hold uint32
|
|
||||||
Release uint32
|
|
||||||
Reclaim uint32
|
|
||||||
Remove uint32
|
|
||||||
Free uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// BufferStats contains statistics regarding XFS read/write I/O buffers.
|
|
||||||
type BufferStats struct {
|
|
||||||
Get uint32
|
|
||||||
Create uint32
|
|
||||||
GetLocked uint32
|
|
||||||
GetLockedWaited uint32
|
|
||||||
BusyLocked uint32
|
|
||||||
MissLocked uint32
|
|
||||||
PageRetries uint32
|
|
||||||
PageFound uint32
|
|
||||||
GetRead uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// ExtendedPrecisionStats contains high precision counters used to track the
|
|
||||||
// total number of bytes read, written, or flushed, during XFS operations.
|
|
||||||
type ExtendedPrecisionStats struct {
|
|
||||||
FlushBytes uint64
|
|
||||||
WriteBytes uint64
|
|
||||||
ReadBytes uint64
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) [2016] [Seth Ammons]
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
|
@ -1,126 +0,0 @@
|
||||||
# pester
|
|
||||||
|
|
||||||
`pester` wraps Go's standard lib http client to provide several options to increase resiliency in your request. If you experience poor network conditions or requests could experience varied delays, you can now pester the endpoint for data.
|
|
||||||
- Send out multiple requests and get the first back (only used for GET calls)
|
|
||||||
- Retry on errors
|
|
||||||
- Backoff
|
|
||||||
|
|
||||||
### Simple Example
|
|
||||||
Use `pester` where you would use the http client calls. By default, pester will use a concurrency of 1, and retry the endpoint 3 times with the `DefaultBackoff` strategy of waiting 1 second between retries.
|
|
||||||
```go
|
|
||||||
/* swap in replacement, just switch
|
|
||||||
http.{Get|Post|PostForm|Head|Do} to
|
|
||||||
pester.{Get|Post|PostForm|Head|Do}
|
|
||||||
*/
|
|
||||||
resp, err := pester.Get("http://sethammons.com")
|
|
||||||
```
|
|
||||||
|
|
||||||
### Backoff Strategy
|
|
||||||
Provide your own backoff strategy, or use one of the provided built in strategies:
|
|
||||||
- `DefaultBackoff`: 1 second
|
|
||||||
- `LinearBackoff`: n seconds where n is the retry number
|
|
||||||
- `LinearJitterBackoff`: n seconds where n is the retry number, +/- 0-33%
|
|
||||||
- `ExponentialBackoff`: n seconds where n is 2^(retry number)
|
|
||||||
- `ExponentialJitterBackoff`: n seconds where n is 2^(retry number), +/- 0-33%
|
|
||||||
|
|
||||||
```go
|
|
||||||
client := pester.New()
|
|
||||||
client.Backoff = func(retry int) time.Duration {
|
|
||||||
// set up something dynamic or use a look up table
|
|
||||||
return time.Duration(retry) * time.Minute
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Complete example
|
|
||||||
For a complete and working example, see the sample directory.
|
|
||||||
`pester` allows you to use a constructor to control:
|
|
||||||
- backoff strategy
|
|
||||||
- reties
|
|
||||||
- concurrency
|
|
||||||
- keeping a log for debugging
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"log"
|
|
||||||
"net/http"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/sethgrid/pester"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
log.Println("Starting...")
|
|
||||||
|
|
||||||
{ // drop in replacement for http.Get and other client methods
|
|
||||||
resp, err := pester.Get("http://example.com")
|
|
||||||
if err != nil {
|
|
||||||
log.Println("error GETing example.com", err)
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
log.Printf("example.com %s", resp.Status)
|
|
||||||
}
|
|
||||||
|
|
||||||
{ // control the resiliency
|
|
||||||
client := pester.New()
|
|
||||||
client.Concurrency = 3
|
|
||||||
client.MaxRetries = 5
|
|
||||||
client.Backoff = pester.ExponentialBackoff
|
|
||||||
client.KeepLog = true
|
|
||||||
|
|
||||||
resp, err := client.Get("http://example.com")
|
|
||||||
if err != nil {
|
|
||||||
log.Println("error GETing example.com", client.LogString())
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
log.Printf("example.com %s", resp.Status)
|
|
||||||
}
|
|
||||||
|
|
||||||
{ // use the pester version of http.Client.Do
|
|
||||||
req, err := http.NewRequest("POST", "http://example.com", strings.NewReader("data"))
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Unable to create a new http request", err)
|
|
||||||
}
|
|
||||||
resp, err := pester.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
log.Println("error POSTing example.com", err)
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
log.Printf("example.com %s", resp.Status)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
### Example Log
|
|
||||||
`pester` also allows you to control the resiliency and can optionally log the errors.
|
|
||||||
```go
|
|
||||||
c := pester.New()
|
|
||||||
c.KeepLog = true
|
|
||||||
|
|
||||||
nonExistantURL := "http://localhost:9000/foo"
|
|
||||||
_, _ = c.Get(nonExistantURL)
|
|
||||||
|
|
||||||
fmt.Println(c.LogString())
|
|
||||||
/*
|
|
||||||
Output:
|
|
||||||
|
|
||||||
1432402837 Get [GET] http://localhost:9000/foo request-0 retry-0 error: Get http://localhost:9000/foo: dial tcp 127.0.0.1:9000: connection refused
|
|
||||||
1432402838 Get [GET] http://localhost:9000/foo request-0 retry-1 error: Get http://localhost:9000/foo: dial tcp 127.0.0.1:9000: connection refused
|
|
||||||
1432402839 Get [GET] http://localhost:9000/foo request-0 retry-2 error: Get http://localhost:9000/foo: dial tcp 127.0.0.1:9000: connection refused
|
|
||||||
*/
|
|
||||||
```
|
|
||||||
|
|
||||||
### Tests
|
|
||||||
|
|
||||||
You can run tests in the root directory with `$ go test`. There is a benchmark-like test available with `$ cd benchmarks; go test`.
|
|
||||||
You can see `pester` in action with `$ cd sample; go run main.go`.
|
|
||||||
|
|
||||||
For watching open file descriptors, you can run `watch "lsof -i -P | grep main"` if you started the app with `go run main.go`.
|
|
||||||
I did this for watching for FD leaks. My method was to alter `sample/main.go` to only run one case (`pester.Get with set backoff stategy, concurrency and retries increased`)
|
|
||||||
and adding a sleep after the result came back. This let me verify if FDs were getting left open when they should have closed. If you know a better way, let me know!
|
|
||||||
I was able to see that FDs are now closing when they should :)
|
|
||||||
|
|
||||||
![Are we there yet?](http://butchbellah.com/wp-content/uploads/2012/06/Are-We-There-Yet.jpg)
|
|
||||||
|
|
||||||
Are we there yet? Are we there yet? Are we there yet? Are we there yet? ...
|
|
|
@ -1,423 +0,0 @@
|
||||||
package pester
|
|
||||||
|
|
||||||
// pester provides additional resiliency over the standard http client methods by
|
|
||||||
// allowing you to control concurrency, retries, and a backoff strategy.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
|
||||||
"math"
|
|
||||||
"math/rand"
|
|
||||||
"net/http"
|
|
||||||
"net/url"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Client wraps the http client and exposes all the functionality of the http.Client.
|
|
||||||
// Additionally, Client provides pester specific values for handling resiliency.
|
|
||||||
type Client struct {
|
|
||||||
// wrap it to provide access to http built ins
|
|
||||||
hc *http.Client
|
|
||||||
|
|
||||||
Transport http.RoundTripper
|
|
||||||
CheckRedirect func(req *http.Request, via []*http.Request) error
|
|
||||||
Jar http.CookieJar
|
|
||||||
Timeout time.Duration
|
|
||||||
|
|
||||||
// pester specific
|
|
||||||
Concurrency int
|
|
||||||
MaxRetries int
|
|
||||||
Backoff BackoffStrategy
|
|
||||||
KeepLog bool
|
|
||||||
|
|
||||||
SuccessReqNum int
|
|
||||||
SuccessRetryNum int
|
|
||||||
|
|
||||||
wg *sync.WaitGroup
|
|
||||||
|
|
||||||
sync.Mutex
|
|
||||||
ErrLog []ErrEntry
|
|
||||||
}
|
|
||||||
|
|
||||||
// ErrEntry is used to provide the LogString() data and is populated
|
|
||||||
// each time an error happens if KeepLog is set.
|
|
||||||
// ErrEntry.Retry is deprecated in favor of ErrEntry.Attempt
|
|
||||||
type ErrEntry struct {
|
|
||||||
Time time.Time
|
|
||||||
Method string
|
|
||||||
URL string
|
|
||||||
Verb string
|
|
||||||
Request int
|
|
||||||
Retry int
|
|
||||||
Attempt int
|
|
||||||
Err error
|
|
||||||
}
|
|
||||||
|
|
||||||
// result simplifies the channel communication for concurrent request handling
|
|
||||||
type result struct {
|
|
||||||
resp *http.Response
|
|
||||||
err error
|
|
||||||
req int
|
|
||||||
retry int
|
|
||||||
}
|
|
||||||
|
|
||||||
// params represents all the params needed to run http client calls and pester errors
|
|
||||||
type params struct {
|
|
||||||
method string
|
|
||||||
verb string
|
|
||||||
req *http.Request
|
|
||||||
url string
|
|
||||||
bodyType string
|
|
||||||
body io.Reader
|
|
||||||
data url.Values
|
|
||||||
}
|
|
||||||
|
|
||||||
// New constructs a new DefaultClient with sensible default values
|
|
||||||
func New() *Client {
|
|
||||||
return &Client{
|
|
||||||
Concurrency: DefaultClient.Concurrency,
|
|
||||||
MaxRetries: DefaultClient.MaxRetries,
|
|
||||||
Backoff: DefaultClient.Backoff,
|
|
||||||
ErrLog: DefaultClient.ErrLog,
|
|
||||||
wg: &sync.WaitGroup{},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewExtendedClient allows you to pass in an http.Client that is previously set up
|
|
||||||
// and extends it to have Pester's features of concurrency and retries.
|
|
||||||
func NewExtendedClient(hc *http.Client) *Client {
|
|
||||||
c := New()
|
|
||||||
c.hc = hc
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
|
|
||||||
// BackoffStrategy is used to determine how long a retry request should wait until attempted
|
|
||||||
type BackoffStrategy func(retry int) time.Duration
|
|
||||||
|
|
||||||
// DefaultClient provides sensible defaults
|
|
||||||
var DefaultClient = &Client{Concurrency: 1, MaxRetries: 3, Backoff: DefaultBackoff, ErrLog: []ErrEntry{}}
|
|
||||||
|
|
||||||
// DefaultBackoff always returns 1 second
|
|
||||||
func DefaultBackoff(_ int) time.Duration {
|
|
||||||
return 1 * time.Second
|
|
||||||
}
|
|
||||||
|
|
||||||
// ExponentialBackoff returns ever increasing backoffs by a power of 2
|
|
||||||
func ExponentialBackoff(i int) time.Duration {
|
|
||||||
return time.Duration(math.Pow(2, float64(i))) * time.Second
|
|
||||||
}
|
|
||||||
|
|
||||||
// ExponentialJitterBackoff returns ever increasing backoffs by a power of 2
|
|
||||||
// with +/- 0-33% to prevent sychronized reuqests.
|
|
||||||
func ExponentialJitterBackoff(i int) time.Duration {
|
|
||||||
return jitter(int(math.Pow(2, float64(i))))
|
|
||||||
}
|
|
||||||
|
|
||||||
// LinearBackoff returns increasing durations, each a second longer than the last
|
|
||||||
func LinearBackoff(i int) time.Duration {
|
|
||||||
return time.Duration(i) * time.Second
|
|
||||||
}
|
|
||||||
|
|
||||||
// LinearJitterBackoff returns increasing durations, each a second longer than the last
|
|
||||||
// with +/- 0-33% to prevent sychronized reuqests.
|
|
||||||
func LinearJitterBackoff(i int) time.Duration {
|
|
||||||
return jitter(i)
|
|
||||||
}
|
|
||||||
|
|
||||||
// jitter keeps the +/- 0-33% logic in one place
|
|
||||||
func jitter(i int) time.Duration {
|
|
||||||
ms := i * 1000
|
|
||||||
|
|
||||||
maxJitter := ms / 3
|
|
||||||
|
|
||||||
rand.Seed(time.Now().Unix())
|
|
||||||
jitter := rand.Intn(maxJitter + 1)
|
|
||||||
|
|
||||||
if rand.Intn(2) == 1 {
|
|
||||||
ms = ms + jitter
|
|
||||||
} else {
|
|
||||||
ms = ms - jitter
|
|
||||||
}
|
|
||||||
|
|
||||||
// a jitter of 0 messes up the time.Tick chan
|
|
||||||
if ms <= 0 {
|
|
||||||
ms = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
return time.Duration(ms) * time.Millisecond
|
|
||||||
}
|
|
||||||
|
|
||||||
// Wait blocks until all pester requests have returned
|
|
||||||
// Probably not that useful outside of testing.
|
|
||||||
func (c *Client) Wait() {
|
|
||||||
c.wg.Wait()
|
|
||||||
}
|
|
||||||
|
|
||||||
// pester provides all the logic of retries, concurrency, backoff, and logging
|
|
||||||
func (c *Client) pester(p params) (*http.Response, error) {
|
|
||||||
resultCh := make(chan result)
|
|
||||||
multiplexCh := make(chan result)
|
|
||||||
finishCh := make(chan struct{})
|
|
||||||
|
|
||||||
// track all requests that go out so we can close the late listener routine that closes late incoming response bodies
|
|
||||||
totalSentRequests := &sync.WaitGroup{}
|
|
||||||
totalSentRequests.Add(1)
|
|
||||||
defer totalSentRequests.Done()
|
|
||||||
allRequestsBackCh := make(chan struct{})
|
|
||||||
go func() {
|
|
||||||
totalSentRequests.Wait()
|
|
||||||
close(allRequestsBackCh)
|
|
||||||
}()
|
|
||||||
|
|
||||||
// GET calls should be idempotent and can make use
|
|
||||||
// of concurrency. Other verbs can mutate and should not
|
|
||||||
// make use of the concurrency feature
|
|
||||||
concurrency := c.Concurrency
|
|
||||||
if p.verb != "GET" {
|
|
||||||
concurrency = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
c.Lock()
|
|
||||||
if c.hc == nil {
|
|
||||||
c.hc = &http.Client{}
|
|
||||||
c.hc.Transport = c.Transport
|
|
||||||
c.hc.CheckRedirect = c.CheckRedirect
|
|
||||||
c.hc.Jar = c.Jar
|
|
||||||
c.hc.Timeout = c.Timeout
|
|
||||||
}
|
|
||||||
c.Unlock()
|
|
||||||
|
|
||||||
// re-create the http client so we can leverage the std lib
|
|
||||||
httpClient := http.Client{
|
|
||||||
Transport: c.hc.Transport,
|
|
||||||
CheckRedirect: c.hc.CheckRedirect,
|
|
||||||
Jar: c.hc.Jar,
|
|
||||||
Timeout: c.hc.Timeout,
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we have a request body, we need to save it for later
|
|
||||||
var originalRequestBody []byte
|
|
||||||
var originalBody []byte
|
|
||||||
var err error
|
|
||||||
if p.req != nil && p.req.Body != nil {
|
|
||||||
originalRequestBody, err = ioutil.ReadAll(p.req.Body)
|
|
||||||
if err != nil {
|
|
||||||
return &http.Response{}, errors.New("error reading request body")
|
|
||||||
}
|
|
||||||
p.req.Body.Close()
|
|
||||||
}
|
|
||||||
if p.body != nil {
|
|
||||||
originalBody, err = ioutil.ReadAll(p.body)
|
|
||||||
if err != nil {
|
|
||||||
return &http.Response{}, errors.New("error reading body")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
AttemptLimit := c.MaxRetries
|
|
||||||
if AttemptLimit <= 0 {
|
|
||||||
AttemptLimit = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
for req := 0; req < concurrency; req++ {
|
|
||||||
c.wg.Add(1)
|
|
||||||
totalSentRequests.Add(1)
|
|
||||||
go func(n int, p params) {
|
|
||||||
defer c.wg.Done()
|
|
||||||
defer totalSentRequests.Done()
|
|
||||||
|
|
||||||
var err error
|
|
||||||
for i := 1; i <= AttemptLimit; i++ {
|
|
||||||
c.wg.Add(1)
|
|
||||||
defer c.wg.Done()
|
|
||||||
select {
|
|
||||||
case <-finishCh:
|
|
||||||
return
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
resp := &http.Response{}
|
|
||||||
|
|
||||||
// rehydrate the body (it is drained each read)
|
|
||||||
if len(originalRequestBody) > 0 {
|
|
||||||
p.req.Body = ioutil.NopCloser(bytes.NewBuffer(originalRequestBody))
|
|
||||||
}
|
|
||||||
if len(originalBody) > 0 {
|
|
||||||
p.body = bytes.NewBuffer(originalBody)
|
|
||||||
}
|
|
||||||
|
|
||||||
// route the calls
|
|
||||||
switch p.method {
|
|
||||||
case "Do":
|
|
||||||
resp, err = httpClient.Do(p.req)
|
|
||||||
case "Get":
|
|
||||||
resp, err = httpClient.Get(p.url)
|
|
||||||
case "Head":
|
|
||||||
resp, err = httpClient.Head(p.url)
|
|
||||||
case "Post":
|
|
||||||
resp, err = httpClient.Post(p.url, p.bodyType, p.body)
|
|
||||||
case "PostForm":
|
|
||||||
resp, err = httpClient.PostForm(p.url, p.data)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Early return if we have a valid result
|
|
||||||
// Only retry (ie, continue the loop) on 5xx status codes
|
|
||||||
if err == nil && resp.StatusCode < 500 {
|
|
||||||
multiplexCh <- result{resp: resp, err: err, req: n, retry: i}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.log(ErrEntry{
|
|
||||||
Time: time.Now(),
|
|
||||||
Method: p.method,
|
|
||||||
Verb: p.verb,
|
|
||||||
URL: p.url,
|
|
||||||
Request: n,
|
|
||||||
Retry: i + 1, // would remove, but would break backward compatibility
|
|
||||||
Attempt: i,
|
|
||||||
Err: err,
|
|
||||||
})
|
|
||||||
|
|
||||||
// if it is the last iteration, grab the result (which is an error at this point)
|
|
||||||
if i == AttemptLimit {
|
|
||||||
multiplexCh <- result{resp: resp, err: err}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we are retrying, we should close this response body to free the fd
|
|
||||||
if resp != nil {
|
|
||||||
resp.Body.Close()
|
|
||||||
}
|
|
||||||
|
|
||||||
// prevent a 0 from causing the tick to block, pass additional microsecond
|
|
||||||
<-time.Tick(c.Backoff(i) + 1*time.Microsecond)
|
|
||||||
}
|
|
||||||
}(req, p)
|
|
||||||
}
|
|
||||||
|
|
||||||
// spin off the go routine so it can continually listen in on late results and close the response bodies
|
|
||||||
go func() {
|
|
||||||
gotFirstResult := false
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case res := <-multiplexCh:
|
|
||||||
if !gotFirstResult {
|
|
||||||
gotFirstResult = true
|
|
||||||
close(finishCh)
|
|
||||||
resultCh <- res
|
|
||||||
} else if res.resp != nil {
|
|
||||||
// we only return one result to the caller; close all other response bodies that come back
|
|
||||||
// drain the body before close as to not prevent keepalive. see https://gist.github.com/mholt/eba0f2cc96658be0f717
|
|
||||||
io.Copy(ioutil.Discard, res.resp.Body)
|
|
||||||
res.resp.Body.Close()
|
|
||||||
}
|
|
||||||
case <-allRequestsBackCh:
|
|
||||||
// don't leave this goroutine running
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
select {
|
|
||||||
case res := <-resultCh:
|
|
||||||
c.Lock()
|
|
||||||
defer c.Unlock()
|
|
||||||
c.SuccessReqNum = res.req
|
|
||||||
c.SuccessRetryNum = res.retry
|
|
||||||
return res.resp, res.err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// LogString provides a string representation of the errors the client has seen
|
|
||||||
func (c *Client) LogString() string {
|
|
||||||
c.Lock()
|
|
||||||
defer c.Unlock()
|
|
||||||
var res string
|
|
||||||
for _, e := range c.ErrLog {
|
|
||||||
res += fmt.Sprintf("%d %s [%s] %s request-%d retry-%d error: %s\n",
|
|
||||||
e.Time.Unix(), e.Method, e.Verb, e.URL, e.Request, e.Retry, e.Err)
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
// LogErrCount is a helper method used primarily for test validation
|
|
||||||
func (c *Client) LogErrCount() int {
|
|
||||||
c.Lock()
|
|
||||||
defer c.Unlock()
|
|
||||||
return len(c.ErrLog)
|
|
||||||
}
|
|
||||||
|
|
||||||
// EmbedHTTPClient allows you to extend an existing Pester client with an
|
|
||||||
// underlying http.Client, such as https://godoc.org/golang.org/x/oauth2/google#DefaultClient
|
|
||||||
func (c *Client) EmbedHTTPClient(hc *http.Client) {
|
|
||||||
c.hc = hc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Client) log(e ErrEntry) {
|
|
||||||
if c.KeepLog {
|
|
||||||
c.Lock()
|
|
||||||
c.ErrLog = append(c.ErrLog, e)
|
|
||||||
c.Unlock()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do provides the same functionality as http.Client.Do
|
|
||||||
func (c *Client) Do(req *http.Request) (resp *http.Response, err error) {
|
|
||||||
return c.pester(params{method: "Do", req: req, verb: req.Method, url: req.URL.String()})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get provides the same functionality as http.Client.Get
|
|
||||||
func (c *Client) Get(url string) (resp *http.Response, err error) {
|
|
||||||
return c.pester(params{method: "Get", url: url, verb: "GET"})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Head provides the same functionality as http.Client.Head
|
|
||||||
func (c *Client) Head(url string) (resp *http.Response, err error) {
|
|
||||||
return c.pester(params{method: "Head", url: url, verb: "HEAD"})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Post provides the same functionality as http.Client.Post
|
|
||||||
func (c *Client) Post(url string, bodyType string, body io.Reader) (resp *http.Response, err error) {
|
|
||||||
return c.pester(params{method: "Post", url: url, bodyType: bodyType, body: body, verb: "POST"})
|
|
||||||
}
|
|
||||||
|
|
||||||
// PostForm provides the same functionality as http.Client.PostForm
|
|
||||||
func (c *Client) PostForm(url string, data url.Values) (resp *http.Response, err error) {
|
|
||||||
return c.pester(params{method: "PostForm", url: url, data: data, verb: "POST"})
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////
|
|
||||||
// Provide self-constructing variants //
|
|
||||||
////////////////////////////////////////
|
|
||||||
|
|
||||||
// Do provides the same functionality as http.Client.Do and creates its own constructor
|
|
||||||
func Do(req *http.Request) (resp *http.Response, err error) {
|
|
||||||
c := New()
|
|
||||||
return c.Do(req)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get provides the same functionality as http.Client.Get and creates its own constructor
|
|
||||||
func Get(url string) (resp *http.Response, err error) {
|
|
||||||
c := New()
|
|
||||||
return c.Get(url)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Head provides the same functionality as http.Client.Head and creates its own constructor
|
|
||||||
func Head(url string) (resp *http.Response, err error) {
|
|
||||||
c := New()
|
|
||||||
return c.Head(url)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Post provides the same functionality as http.Client.Post and creates its own constructor
|
|
||||||
func Post(url string, bodyType string, body io.Reader) (resp *http.Response, err error) {
|
|
||||||
c := New()
|
|
||||||
return c.Post(url, bodyType, body)
|
|
||||||
}
|
|
||||||
|
|
||||||
// PostForm provides the same functionality as http.Client.PostForm and creates its own constructor
|
|
||||||
func PostForm(url string, data url.Values) (resp *http.Response, err error) {
|
|
||||||
c := New()
|
|
||||||
return c.PostForm(url, data)
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
Copyright 2012 Keith Rarick
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
|
@ -1,3 +0,0 @@
|
||||||
This is a Go package for manipulating paragraphs of text.
|
|
||||||
|
|
||||||
See http://go.pkgdoc.org/github.com/kr/text for full documentation.
|
|
|
@ -1,3 +0,0 @@
|
||||||
// Package text provides rudimentary functions for manipulating text in
|
|
||||||
// paragraphs.
|
|
||||||
package text
|
|
|
@ -1,74 +0,0 @@
|
||||||
package text
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Indent inserts prefix at the beginning of each non-empty line of s. The
|
|
||||||
// end-of-line marker is NL.
|
|
||||||
func Indent(s, prefix string) string {
|
|
||||||
return string(IndentBytes([]byte(s), []byte(prefix)))
|
|
||||||
}
|
|
||||||
|
|
||||||
// IndentBytes inserts prefix at the beginning of each non-empty line of b.
|
|
||||||
// The end-of-line marker is NL.
|
|
||||||
func IndentBytes(b, prefix []byte) []byte {
|
|
||||||
var res []byte
|
|
||||||
bol := true
|
|
||||||
for _, c := range b {
|
|
||||||
if bol && c != '\n' {
|
|
||||||
res = append(res, prefix...)
|
|
||||||
}
|
|
||||||
res = append(res, c)
|
|
||||||
bol = c == '\n'
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
// Writer indents each line of its input.
|
|
||||||
type indentWriter struct {
|
|
||||||
w io.Writer
|
|
||||||
bol bool
|
|
||||||
pre [][]byte
|
|
||||||
sel int
|
|
||||||
off int
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewIndentWriter makes a new write filter that indents the input
|
|
||||||
// lines. Each line is prefixed in order with the corresponding
|
|
||||||
// element of pre. If there are more lines than elements, the last
|
|
||||||
// element of pre is repeated for each subsequent line.
|
|
||||||
func NewIndentWriter(w io.Writer, pre ...[]byte) io.Writer {
|
|
||||||
return &indentWriter{
|
|
||||||
w: w,
|
|
||||||
pre: pre,
|
|
||||||
bol: true,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The only errors returned are from the underlying indentWriter.
|
|
||||||
func (w *indentWriter) Write(p []byte) (n int, err error) {
|
|
||||||
for _, c := range p {
|
|
||||||
if w.bol {
|
|
||||||
var i int
|
|
||||||
i, err = w.w.Write(w.pre[w.sel][w.off:])
|
|
||||||
w.off += i
|
|
||||||
if err != nil {
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err = w.w.Write([]byte{c})
|
|
||||||
if err != nil {
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
n++
|
|
||||||
w.bol = c == '\n'
|
|
||||||
if w.bol {
|
|
||||||
w.off = 0
|
|
||||||
if w.sel < len(w.pre)-1 {
|
|
||||||
w.sel++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return n, nil
|
|
||||||
}
|
|
|
@ -1,86 +0,0 @@
|
||||||
package text
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"math"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
nl = []byte{'\n'}
|
|
||||||
sp = []byte{' '}
|
|
||||||
)
|
|
||||||
|
|
||||||
const defaultPenalty = 1e5
|
|
||||||
|
|
||||||
// Wrap wraps s into a paragraph of lines of length lim, with minimal
|
|
||||||
// raggedness.
|
|
||||||
func Wrap(s string, lim int) string {
|
|
||||||
return string(WrapBytes([]byte(s), lim))
|
|
||||||
}
|
|
||||||
|
|
||||||
// WrapBytes wraps b into a paragraph of lines of length lim, with minimal
|
|
||||||
// raggedness.
|
|
||||||
func WrapBytes(b []byte, lim int) []byte {
|
|
||||||
words := bytes.Split(bytes.Replace(bytes.TrimSpace(b), nl, sp, -1), sp)
|
|
||||||
var lines [][]byte
|
|
||||||
for _, line := range WrapWords(words, 1, lim, defaultPenalty) {
|
|
||||||
lines = append(lines, bytes.Join(line, sp))
|
|
||||||
}
|
|
||||||
return bytes.Join(lines, nl)
|
|
||||||
}
|
|
||||||
|
|
||||||
// WrapWords is the low-level line-breaking algorithm, useful if you need more
|
|
||||||
// control over the details of the text wrapping process. For most uses, either
|
|
||||||
// Wrap or WrapBytes will be sufficient and more convenient.
|
|
||||||
//
|
|
||||||
// WrapWords splits a list of words into lines with minimal "raggedness",
|
|
||||||
// treating each byte as one unit, accounting for spc units between adjacent
|
|
||||||
// words on each line, and attempting to limit lines to lim units. Raggedness
|
|
||||||
// is the total error over all lines, where error is the square of the
|
|
||||||
// difference of the length of the line and lim. Too-long lines (which only
|
|
||||||
// happen when a single word is longer than lim units) have pen penalty units
|
|
||||||
// added to the error.
|
|
||||||
func WrapWords(words [][]byte, spc, lim, pen int) [][][]byte {
|
|
||||||
n := len(words)
|
|
||||||
|
|
||||||
length := make([][]int, n)
|
|
||||||
for i := 0; i < n; i++ {
|
|
||||||
length[i] = make([]int, n)
|
|
||||||
length[i][i] = len(words[i])
|
|
||||||
for j := i + 1; j < n; j++ {
|
|
||||||
length[i][j] = length[i][j-1] + spc + len(words[j])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nbrk := make([]int, n)
|
|
||||||
cost := make([]int, n)
|
|
||||||
for i := range cost {
|
|
||||||
cost[i] = math.MaxInt32
|
|
||||||
}
|
|
||||||
for i := n - 1; i >= 0; i-- {
|
|
||||||
if length[i][n-1] <= lim {
|
|
||||||
cost[i] = 0
|
|
||||||
nbrk[i] = n
|
|
||||||
} else {
|
|
||||||
for j := i + 1; j < n; j++ {
|
|
||||||
d := lim - length[i][j-1]
|
|
||||||
c := d*d + cost[j]
|
|
||||||
if length[i][j-1] > lim {
|
|
||||||
c += pen // too-long lines get a worse penalty
|
|
||||||
}
|
|
||||||
if c < cost[i] {
|
|
||||||
cost[i] = c
|
|
||||||
nbrk[i] = j
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var lines [][][]byte
|
|
||||||
i := 0
|
|
||||||
for i < n {
|
|
||||||
lines = append(lines, words[i:nbrk[i]])
|
|
||||||
i = nbrk[i]
|
|
||||||
}
|
|
||||||
return lines
|
|
||||||
}
|
|
|
@ -1,260 +0,0 @@
|
||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
package rangetable
|
|
||||||
|
|
||||||
import (
|
|
||||||
"unicode"
|
|
||||||
)
|
|
||||||
|
|
||||||
// atEnd is used to mark a completed iteration.
|
|
||||||
const atEnd = unicode.MaxRune + 1
|
|
||||||
|
|
||||||
// Merge returns a new RangeTable that is the union of the given tables.
|
|
||||||
// It can also be used to compact user-created RangeTables. The entries in
|
|
||||||
// R16 and R32 for any given RangeTable should be sorted and non-overlapping.
|
|
||||||
//
|
|
||||||
// A lookup in the resulting table can be several times faster than using In
|
|
||||||
// directly on the ranges. Merge is an expensive operation, however, and only
|
|
||||||
// makes sense if one intends to use the result for more than a couple of
|
|
||||||
// hundred lookups.
|
|
||||||
func Merge(ranges ...*unicode.RangeTable) *unicode.RangeTable {
|
|
||||||
rt := &unicode.RangeTable{}
|
|
||||||
if len(ranges) == 0 {
|
|
||||||
return rt
|
|
||||||
}
|
|
||||||
|
|
||||||
iter := tablesIter(make([]tableIndex, len(ranges)))
|
|
||||||
|
|
||||||
for i, t := range ranges {
|
|
||||||
iter[i] = tableIndex{t, 0, atEnd}
|
|
||||||
if len(t.R16) > 0 {
|
|
||||||
iter[i].next = rune(t.R16[0].Lo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if r0 := iter.next16(); r0.Stride != 0 {
|
|
||||||
for {
|
|
||||||
r1 := iter.next16()
|
|
||||||
if r1.Stride == 0 {
|
|
||||||
rt.R16 = append(rt.R16, r0)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
stride := r1.Lo - r0.Hi
|
|
||||||
if (r1.Lo == r1.Hi || stride == r1.Stride) && (r0.Lo == r0.Hi || stride == r0.Stride) {
|
|
||||||
// Fully merge the next range into the previous one.
|
|
||||||
r0.Hi, r0.Stride = r1.Hi, stride
|
|
||||||
continue
|
|
||||||
} else if stride == r0.Stride {
|
|
||||||
// Move the first element of r1 to r0. This may eliminate an
|
|
||||||
// entry.
|
|
||||||
r0.Hi = r1.Lo
|
|
||||||
r0.Stride = stride
|
|
||||||
r1.Lo = r1.Lo + r1.Stride
|
|
||||||
if r1.Lo > r1.Hi {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rt.R16 = append(rt.R16, r0)
|
|
||||||
r0 = r1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, t := range ranges {
|
|
||||||
iter[i] = tableIndex{t, 0, atEnd}
|
|
||||||
if len(t.R32) > 0 {
|
|
||||||
iter[i].next = rune(t.R32[0].Lo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if r0 := iter.next32(); r0.Stride != 0 {
|
|
||||||
for {
|
|
||||||
r1 := iter.next32()
|
|
||||||
if r1.Stride == 0 {
|
|
||||||
rt.R32 = append(rt.R32, r0)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
stride := r1.Lo - r0.Hi
|
|
||||||
if (r1.Lo == r1.Hi || stride == r1.Stride) && (r0.Lo == r0.Hi || stride == r0.Stride) {
|
|
||||||
// Fully merge the next range into the previous one.
|
|
||||||
r0.Hi, r0.Stride = r1.Hi, stride
|
|
||||||
continue
|
|
||||||
} else if stride == r0.Stride {
|
|
||||||
// Move the first element of r1 to r0. This may eliminate an
|
|
||||||
// entry.
|
|
||||||
r0.Hi = r1.Lo
|
|
||||||
r1.Lo = r1.Lo + r1.Stride
|
|
||||||
if r1.Lo > r1.Hi {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rt.R32 = append(rt.R32, r0)
|
|
||||||
r0 = r1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := 0; i < len(rt.R16) && rt.R16[i].Hi <= unicode.MaxLatin1; i++ {
|
|
||||||
rt.LatinOffset = i + 1
|
|
||||||
}
|
|
||||||
|
|
||||||
return rt
|
|
||||||
}
|
|
||||||
|
|
||||||
type tableIndex struct {
|
|
||||||
t *unicode.RangeTable
|
|
||||||
p uint32
|
|
||||||
next rune
|
|
||||||
}
|
|
||||||
|
|
||||||
type tablesIter []tableIndex
|
|
||||||
|
|
||||||
// sortIter does an insertion sort using the next field of tableIndex. Insertion
|
|
||||||
// sort is a good sorting algorithm for this case.
|
|
||||||
func sortIter(t []tableIndex) {
|
|
||||||
for i := range t {
|
|
||||||
for j := i; j > 0 && t[j-1].next > t[j].next; j-- {
|
|
||||||
t[j], t[j-1] = t[j-1], t[j]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// next16 finds the ranged to be added to the table. If ranges overlap between
|
|
||||||
// multiple tables it clips the result to a non-overlapping range if the
|
|
||||||
// elements are not fully subsumed. It returns a zero range if there are no more
|
|
||||||
// ranges.
|
|
||||||
func (ti tablesIter) next16() unicode.Range16 {
|
|
||||||
sortIter(ti)
|
|
||||||
|
|
||||||
t0 := ti[0]
|
|
||||||
if t0.next == atEnd {
|
|
||||||
return unicode.Range16{}
|
|
||||||
}
|
|
||||||
r0 := t0.t.R16[t0.p]
|
|
||||||
r0.Lo = uint16(t0.next)
|
|
||||||
|
|
||||||
// We restrict the Hi of the current range if it overlaps with another range.
|
|
||||||
for i := range ti {
|
|
||||||
tn := ti[i]
|
|
||||||
// Since our tableIndices are sorted by next, we can break if the there
|
|
||||||
// is no overlap. The first value of a next range can always be merged
|
|
||||||
// into the current one, so we can break in case of equality as well.
|
|
||||||
if rune(r0.Hi) <= tn.next {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
rn := tn.t.R16[tn.p]
|
|
||||||
rn.Lo = uint16(tn.next)
|
|
||||||
|
|
||||||
// Limit r0.Hi based on next ranges in list, but allow it to overlap
|
|
||||||
// with ranges as long as it subsumes it.
|
|
||||||
m := (rn.Lo - r0.Lo) % r0.Stride
|
|
||||||
if m == 0 && (rn.Stride == r0.Stride || rn.Lo == rn.Hi) {
|
|
||||||
// Overlap, take the min of the two Hi values: for simplicity's sake
|
|
||||||
// we only process one range at a time.
|
|
||||||
if r0.Hi > rn.Hi {
|
|
||||||
r0.Hi = rn.Hi
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Not a compatible stride. Set to the last possible value before
|
|
||||||
// rn.Lo, but ensure there is at least one value.
|
|
||||||
if x := rn.Lo - m; r0.Lo <= x {
|
|
||||||
r0.Hi = x
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the next values for each table.
|
|
||||||
for i := range ti {
|
|
||||||
tn := &ti[i]
|
|
||||||
if rune(r0.Hi) < tn.next {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
rn := tn.t.R16[tn.p]
|
|
||||||
stride := rune(rn.Stride)
|
|
||||||
tn.next += stride * (1 + ((rune(r0.Hi) - tn.next) / stride))
|
|
||||||
if rune(rn.Hi) < tn.next {
|
|
||||||
if tn.p++; int(tn.p) == len(tn.t.R16) {
|
|
||||||
tn.next = atEnd
|
|
||||||
} else {
|
|
||||||
tn.next = rune(tn.t.R16[tn.p].Lo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if r0.Lo == r0.Hi {
|
|
||||||
r0.Stride = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
return r0
|
|
||||||
}
|
|
||||||
|
|
||||||
// next32 finds the ranged to be added to the table. If ranges overlap between
|
|
||||||
// multiple tables it clips the result to a non-overlapping range if the
|
|
||||||
// elements are not fully subsumed. It returns a zero range if there are no more
|
|
||||||
// ranges.
|
|
||||||
func (ti tablesIter) next32() unicode.Range32 {
|
|
||||||
sortIter(ti)
|
|
||||||
|
|
||||||
t0 := ti[0]
|
|
||||||
if t0.next == atEnd {
|
|
||||||
return unicode.Range32{}
|
|
||||||
}
|
|
||||||
r0 := t0.t.R32[t0.p]
|
|
||||||
r0.Lo = uint32(t0.next)
|
|
||||||
|
|
||||||
// We restrict the Hi of the current range if it overlaps with another range.
|
|
||||||
for i := range ti {
|
|
||||||
tn := ti[i]
|
|
||||||
// Since our tableIndices are sorted by next, we can break if the there
|
|
||||||
// is no overlap. The first value of a next range can always be merged
|
|
||||||
// into the current one, so we can break in case of equality as well.
|
|
||||||
if rune(r0.Hi) <= tn.next {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
rn := tn.t.R32[tn.p]
|
|
||||||
rn.Lo = uint32(tn.next)
|
|
||||||
|
|
||||||
// Limit r0.Hi based on next ranges in list, but allow it to overlap
|
|
||||||
// with ranges as long as it subsumes it.
|
|
||||||
m := (rn.Lo - r0.Lo) % r0.Stride
|
|
||||||
if m == 0 && (rn.Stride == r0.Stride || rn.Lo == rn.Hi) {
|
|
||||||
// Overlap, take the min of the two Hi values: for simplicity's sake
|
|
||||||
// we only process one range at a time.
|
|
||||||
if r0.Hi > rn.Hi {
|
|
||||||
r0.Hi = rn.Hi
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Not a compatible stride. Set to the last possible value before
|
|
||||||
// rn.Lo, but ensure there is at least one value.
|
|
||||||
if x := rn.Lo - m; r0.Lo <= x {
|
|
||||||
r0.Hi = x
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the next values for each table.
|
|
||||||
for i := range ti {
|
|
||||||
tn := &ti[i]
|
|
||||||
if rune(r0.Hi) < tn.next {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
rn := tn.t.R32[tn.p]
|
|
||||||
stride := rune(rn.Stride)
|
|
||||||
tn.next += stride * (1 + ((rune(r0.Hi) - tn.next) / stride))
|
|
||||||
if rune(rn.Hi) < tn.next {
|
|
||||||
if tn.p++; int(tn.p) == len(tn.t.R32) {
|
|
||||||
tn.next = atEnd
|
|
||||||
} else {
|
|
||||||
tn.next = rune(tn.t.R32[tn.p].Lo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if r0.Lo == r0.Hi {
|
|
||||||
r0.Stride = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
return r0
|
|
||||||
}
|
|
|
@ -1,70 +0,0 @@
|
||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// Package rangetable provides utilities for creating and inspecting
|
|
||||||
// unicode.RangeTables.
|
|
||||||
package rangetable
|
|
||||||
|
|
||||||
import (
|
|
||||||
"sort"
|
|
||||||
"unicode"
|
|
||||||
)
|
|
||||||
|
|
||||||
// New creates a RangeTable from the given runes, which may contain duplicates.
|
|
||||||
func New(r ...rune) *unicode.RangeTable {
|
|
||||||
if len(r) == 0 {
|
|
||||||
return &unicode.RangeTable{}
|
|
||||||
}
|
|
||||||
|
|
||||||
sort.Sort(byRune(r))
|
|
||||||
|
|
||||||
// Remove duplicates.
|
|
||||||
k := 1
|
|
||||||
for i := 1; i < len(r); i++ {
|
|
||||||
if r[k-1] != r[i] {
|
|
||||||
r[k] = r[i]
|
|
||||||
k++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var rt unicode.RangeTable
|
|
||||||
for _, r := range r[:k] {
|
|
||||||
if r <= 0xFFFF {
|
|
||||||
rt.R16 = append(rt.R16, unicode.Range16{Lo: uint16(r), Hi: uint16(r), Stride: 1})
|
|
||||||
} else {
|
|
||||||
rt.R32 = append(rt.R32, unicode.Range32{Lo: uint32(r), Hi: uint32(r), Stride: 1})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Optimize RangeTable.
|
|
||||||
return Merge(&rt)
|
|
||||||
}
|
|
||||||
|
|
||||||
type byRune []rune
|
|
||||||
|
|
||||||
func (r byRune) Len() int { return len(r) }
|
|
||||||
func (r byRune) Swap(i, j int) { r[i], r[j] = r[j], r[i] }
|
|
||||||
func (r byRune) Less(i, j int) bool { return r[i] < r[j] }
|
|
||||||
|
|
||||||
// Visit visits all runes in the given RangeTable in order, calling fn for each.
|
|
||||||
func Visit(rt *unicode.RangeTable, fn func(rune)) {
|
|
||||||
for _, r16 := range rt.R16 {
|
|
||||||
for r := rune(r16.Lo); r <= rune(r16.Hi); r += rune(r16.Stride) {
|
|
||||||
fn(r)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, r32 := range rt.R32 {
|
|
||||||
for r := rune(r32.Lo); r <= rune(r32.Hi); r += rune(r32.Stride) {
|
|
||||||
fn(r)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Assigned returns a RangeTable with all assigned code points for a given
|
|
||||||
// Unicode version. This includes graphic, format, control, and private-use
|
|
||||||
// characters. It returns nil if the data for the given version is not
|
|
||||||
// available.
|
|
||||||
func Assigned(version string) *unicode.RangeTable {
|
|
||||||
return assigned[version]
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,202 +0,0 @@
|
||||||
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
|
@ -1,148 +0,0 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
||||||
// source: google/api/httpbody.proto
|
|
||||||
|
|
||||||
package httpbody
|
|
||||||
|
|
||||||
import (
|
|
||||||
fmt "fmt"
|
|
||||||
math "math"
|
|
||||||
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
|
||||||
any "github.com/golang/protobuf/ptypes/any"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
|
||||||
var _ = proto.Marshal
|
|
||||||
var _ = fmt.Errorf
|
|
||||||
var _ = math.Inf
|
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
|
||||||
// is compatible with the proto package it is being compiled against.
|
|
||||||
// A compilation error at this line likely means your copy of the
|
|
||||||
// proto package needs to be updated.
|
|
||||||
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
|
||||||
|
|
||||||
// Message that represents an arbitrary HTTP body. It should only be used for
|
|
||||||
// payload formats that can't be represented as JSON, such as raw binary or
|
|
||||||
// an HTML page.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// This message can be used both in streaming and non-streaming API methods in
|
|
||||||
// the request as well as the response.
|
|
||||||
//
|
|
||||||
// It can be used as a top-level request field, which is convenient if one
|
|
||||||
// wants to extract parameters from either the URL or HTTP template into the
|
|
||||||
// request fields and also want access to the raw HTTP body.
|
|
||||||
//
|
|
||||||
// Example:
|
|
||||||
//
|
|
||||||
// message GetResourceRequest {
|
|
||||||
// // A unique request id.
|
|
||||||
// string request_id = 1;
|
|
||||||
//
|
|
||||||
// // The raw HTTP body is bound to this field.
|
|
||||||
// google.api.HttpBody http_body = 2;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// service ResourceService {
|
|
||||||
// rpc GetResource(GetResourceRequest) returns (google.api.HttpBody);
|
|
||||||
// rpc UpdateResource(google.api.HttpBody) returns
|
|
||||||
// (google.protobuf.Empty);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Example with streaming methods:
|
|
||||||
//
|
|
||||||
// service CaldavService {
|
|
||||||
// rpc GetCalendar(stream google.api.HttpBody)
|
|
||||||
// returns (stream google.api.HttpBody);
|
|
||||||
// rpc UpdateCalendar(stream google.api.HttpBody)
|
|
||||||
// returns (stream google.api.HttpBody);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Use of this type only changes how the request and response bodies are
|
|
||||||
// handled, all other features will continue to work unchanged.
|
|
||||||
type HttpBody struct {
|
|
||||||
// The HTTP Content-Type header value specifying the content type of the body.
|
|
||||||
ContentType string `protobuf:"bytes,1,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"`
|
|
||||||
// The HTTP request/response body as raw binary.
|
|
||||||
Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
|
|
||||||
// Application specific response metadata. Must be set in the first response
|
|
||||||
// for streaming APIs.
|
|
||||||
Extensions []*any.Any `protobuf:"bytes,3,rep,name=extensions,proto3" json:"extensions,omitempty"`
|
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
||||||
XXX_unrecognized []byte `json:"-"`
|
|
||||||
XXX_sizecache int32 `json:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *HttpBody) Reset() { *m = HttpBody{} }
|
|
||||||
func (m *HttpBody) String() string { return proto.CompactTextString(m) }
|
|
||||||
func (*HttpBody) ProtoMessage() {}
|
|
||||||
func (*HttpBody) Descriptor() ([]byte, []int) {
|
|
||||||
return fileDescriptor_09ea2ecaa32a0070, []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *HttpBody) XXX_Unmarshal(b []byte) error {
|
|
||||||
return xxx_messageInfo_HttpBody.Unmarshal(m, b)
|
|
||||||
}
|
|
||||||
func (m *HttpBody) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
||||||
return xxx_messageInfo_HttpBody.Marshal(b, m, deterministic)
|
|
||||||
}
|
|
||||||
func (m *HttpBody) XXX_Merge(src proto.Message) {
|
|
||||||
xxx_messageInfo_HttpBody.Merge(m, src)
|
|
||||||
}
|
|
||||||
func (m *HttpBody) XXX_Size() int {
|
|
||||||
return xxx_messageInfo_HttpBody.Size(m)
|
|
||||||
}
|
|
||||||
func (m *HttpBody) XXX_DiscardUnknown() {
|
|
||||||
xxx_messageInfo_HttpBody.DiscardUnknown(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
var xxx_messageInfo_HttpBody proto.InternalMessageInfo
|
|
||||||
|
|
||||||
func (m *HttpBody) GetContentType() string {
|
|
||||||
if m != nil {
|
|
||||||
return m.ContentType
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *HttpBody) GetData() []byte {
|
|
||||||
if m != nil {
|
|
||||||
return m.Data
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *HttpBody) GetExtensions() []*any.Any {
|
|
||||||
if m != nil {
|
|
||||||
return m.Extensions
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
proto.RegisterType((*HttpBody)(nil), "google.api.HttpBody")
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
proto.RegisterFile("google/api/httpbody.proto", fileDescriptor_09ea2ecaa32a0070)
|
|
||||||
}
|
|
||||||
|
|
||||||
var fileDescriptor_09ea2ecaa32a0070 = []byte{
|
|
||||||
// 229 bytes of a gzipped FileDescriptorProto
|
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x8f, 0x31, 0x4f, 0xc3, 0x30,
|
|
||||||
0x10, 0x85, 0xe5, 0xb6, 0x42, 0x70, 0x2d, 0x0c, 0x16, 0x43, 0x60, 0x0a, 0x4c, 0x99, 0x6c, 0x09,
|
|
||||||
0xd8, 0x3a, 0x35, 0x0b, 0xb0, 0x45, 0x11, 0x13, 0x0b, 0x72, 0x1a, 0xe3, 0x46, 0x2a, 0x77, 0xa7,
|
|
||||||
0xe6, 0x10, 0xf8, 0xef, 0xf0, 0x2b, 0x19, 0x11, 0x69, 0x2c, 0xe8, 0xf6, 0xe4, 0xef, 0x3d, 0xbf,
|
|
||||||
0x77, 0x70, 0x11, 0x88, 0xc2, 0xd6, 0x5b, 0xc7, 0x9d, 0xdd, 0x88, 0x70, 0x43, 0x6d, 0x34, 0xbc,
|
|
||||||
0x23, 0x21, 0x0d, 0x7b, 0x64, 0x1c, 0x77, 0x97, 0xc9, 0x36, 0x90, 0xe6, 0xfd, 0xd5, 0x3a, 0x1c,
|
|
||||||
0x6d, 0xd7, 0x1f, 0x70, 0xfc, 0x20, 0xc2, 0x25, 0xb5, 0x51, 0x5f, 0xc1, 0x62, 0x4d, 0x28, 0x1e,
|
|
||||||
0xe5, 0x45, 0x22, 0xfb, 0x4c, 0xe5, 0xaa, 0x38, 0xa9, 0xe7, 0xe3, 0xdb, 0x53, 0x64, 0xaf, 0x35,
|
|
||||||
0xcc, 0x5a, 0x27, 0x2e, 0x9b, 0xe4, 0xaa, 0x58, 0xd4, 0x83, 0xd6, 0x77, 0x00, 0xfe, 0x53, 0x3c,
|
|
||||||
0xf6, 0x1d, 0x61, 0x9f, 0x4d, 0xf3, 0x69, 0x31, 0xbf, 0x39, 0x37, 0x63, 0x7d, 0xaa, 0x34, 0x2b,
|
|
||||||
0x8c, 0xf5, 0x3f, 0x5f, 0xb9, 0x81, 0xb3, 0x35, 0xbd, 0x99, 0xbf, 0x95, 0xe5, 0x69, 0x1a, 0x52,
|
|
||||||
0xfd, 0x66, 0x2a, 0xf5, 0xbc, 0x1c, 0x61, 0xa0, 0xad, 0xc3, 0x60, 0x68, 0x17, 0x6c, 0xf0, 0x38,
|
|
||||||
0xfc, 0x68, 0xf7, 0xc8, 0x71, 0xd7, 0x1f, 0x1c, 0xbf, 0x4c, 0xe2, 0x5b, 0xa9, 0xaf, 0xc9, 0xec,
|
|
||||||
0x7e, 0x55, 0x3d, 0x36, 0x47, 0x43, 0xe2, 0xf6, 0x27, 0x00, 0x00, 0xff, 0xff, 0x78, 0xb9, 0x16,
|
|
||||||
0x2b, 0x2d, 0x01, 0x00, 0x00,
|
|
||||||
}
|
|
|
@ -1,284 +0,0 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
||||||
// source: google/protobuf/field_mask.proto
|
|
||||||
|
|
||||||
package field_mask
|
|
||||||
|
|
||||||
import (
|
|
||||||
fmt "fmt"
|
|
||||||
math "math"
|
|
||||||
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
|
||||||
var _ = proto.Marshal
|
|
||||||
var _ = fmt.Errorf
|
|
||||||
var _ = math.Inf
|
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
|
||||||
// is compatible with the proto package it is being compiled against.
|
|
||||||
// A compilation error at this line likely means your copy of the
|
|
||||||
// proto package needs to be updated.
|
|
||||||
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
|
||||||
|
|
||||||
// `FieldMask` represents a set of symbolic field paths, for example:
|
|
||||||
//
|
|
||||||
// paths: "f.a"
|
|
||||||
// paths: "f.b.d"
|
|
||||||
//
|
|
||||||
// Here `f` represents a field in some root message, `a` and `b`
|
|
||||||
// fields in the message found in `f`, and `d` a field found in the
|
|
||||||
// message in `f.b`.
|
|
||||||
//
|
|
||||||
// Field masks are used to specify a subset of fields that should be
|
|
||||||
// returned by a get operation or modified by an update operation.
|
|
||||||
// Field masks also have a custom JSON encoding (see below).
|
|
||||||
//
|
|
||||||
// # Field Masks in Projections
|
|
||||||
//
|
|
||||||
// When used in the context of a projection, a response message or
|
|
||||||
// sub-message is filtered by the API to only contain those fields as
|
|
||||||
// specified in the mask. For example, if the mask in the previous
|
|
||||||
// example is applied to a response message as follows:
|
|
||||||
//
|
|
||||||
// f {
|
|
||||||
// a : 22
|
|
||||||
// b {
|
|
||||||
// d : 1
|
|
||||||
// x : 2
|
|
||||||
// }
|
|
||||||
// y : 13
|
|
||||||
// }
|
|
||||||
// z: 8
|
|
||||||
//
|
|
||||||
// The result will not contain specific values for fields x,y and z
|
|
||||||
// (their value will be set to the default, and omitted in proto text
|
|
||||||
// output):
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// f {
|
|
||||||
// a : 22
|
|
||||||
// b {
|
|
||||||
// d : 1
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// A repeated field is not allowed except at the last position of a
|
|
||||||
// paths string.
|
|
||||||
//
|
|
||||||
// If a FieldMask object is not present in a get operation, the
|
|
||||||
// operation applies to all fields (as if a FieldMask of all fields
|
|
||||||
// had been specified).
|
|
||||||
//
|
|
||||||
// Note that a field mask does not necessarily apply to the
|
|
||||||
// top-level response message. In case of a REST get operation, the
|
|
||||||
// field mask applies directly to the response, but in case of a REST
|
|
||||||
// list operation, the mask instead applies to each individual message
|
|
||||||
// in the returned resource list. In case of a REST custom method,
|
|
||||||
// other definitions may be used. Where the mask applies will be
|
|
||||||
// clearly documented together with its declaration in the API. In
|
|
||||||
// any case, the effect on the returned resource/resources is required
|
|
||||||
// behavior for APIs.
|
|
||||||
//
|
|
||||||
// # Field Masks in Update Operations
|
|
||||||
//
|
|
||||||
// A field mask in update operations specifies which fields of the
|
|
||||||
// targeted resource are going to be updated. The API is required
|
|
||||||
// to only change the values of the fields as specified in the mask
|
|
||||||
// and leave the others untouched. If a resource is passed in to
|
|
||||||
// describe the updated values, the API ignores the values of all
|
|
||||||
// fields not covered by the mask.
|
|
||||||
//
|
|
||||||
// If a repeated field is specified for an update operation, new values will
|
|
||||||
// be appended to the existing repeated field in the target resource. Note that
|
|
||||||
// a repeated field is only allowed in the last position of a `paths` string.
|
|
||||||
//
|
|
||||||
// If a sub-message is specified in the last position of the field mask for an
|
|
||||||
// update operation, then new value will be merged into the existing sub-message
|
|
||||||
// in the target resource.
|
|
||||||
//
|
|
||||||
// For example, given the target message:
|
|
||||||
//
|
|
||||||
// f {
|
|
||||||
// b {
|
|
||||||
// d: 1
|
|
||||||
// x: 2
|
|
||||||
// }
|
|
||||||
// c: [1]
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// And an update message:
|
|
||||||
//
|
|
||||||
// f {
|
|
||||||
// b {
|
|
||||||
// d: 10
|
|
||||||
// }
|
|
||||||
// c: [2]
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// then if the field mask is:
|
|
||||||
//
|
|
||||||
// paths: ["f.b", "f.c"]
|
|
||||||
//
|
|
||||||
// then the result will be:
|
|
||||||
//
|
|
||||||
// f {
|
|
||||||
// b {
|
|
||||||
// d: 10
|
|
||||||
// x: 2
|
|
||||||
// }
|
|
||||||
// c: [1, 2]
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// An implementation may provide options to override this default behavior for
|
|
||||||
// repeated and message fields.
|
|
||||||
//
|
|
||||||
// In order to reset a field's value to the default, the field must
|
|
||||||
// be in the mask and set to the default value in the provided resource.
|
|
||||||
// Hence, in order to reset all fields of a resource, provide a default
|
|
||||||
// instance of the resource and set all fields in the mask, or do
|
|
||||||
// not provide a mask as described below.
|
|
||||||
//
|
|
||||||
// If a field mask is not present on update, the operation applies to
|
|
||||||
// all fields (as if a field mask of all fields has been specified).
|
|
||||||
// Note that in the presence of schema evolution, this may mean that
|
|
||||||
// fields the client does not know and has therefore not filled into
|
|
||||||
// the request will be reset to their default. If this is unwanted
|
|
||||||
// behavior, a specific service may require a client to always specify
|
|
||||||
// a field mask, producing an error if not.
|
|
||||||
//
|
|
||||||
// As with get operations, the location of the resource which
|
|
||||||
// describes the updated values in the request message depends on the
|
|
||||||
// operation kind. In any case, the effect of the field mask is
|
|
||||||
// required to be honored by the API.
|
|
||||||
//
|
|
||||||
// ## Considerations for HTTP REST
|
|
||||||
//
|
|
||||||
// The HTTP kind of an update operation which uses a field mask must
|
|
||||||
// be set to PATCH instead of PUT in order to satisfy HTTP semantics
|
|
||||||
// (PUT must only be used for full updates).
|
|
||||||
//
|
|
||||||
// # JSON Encoding of Field Masks
|
|
||||||
//
|
|
||||||
// In JSON, a field mask is encoded as a single string where paths are
|
|
||||||
// separated by a comma. Fields name in each path are converted
|
|
||||||
// to/from lower-camel naming conventions.
|
|
||||||
//
|
|
||||||
// As an example, consider the following message declarations:
|
|
||||||
//
|
|
||||||
// message Profile {
|
|
||||||
// User user = 1;
|
|
||||||
// Photo photo = 2;
|
|
||||||
// }
|
|
||||||
// message User {
|
|
||||||
// string display_name = 1;
|
|
||||||
// string address = 2;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// In proto a field mask for `Profile` may look as such:
|
|
||||||
//
|
|
||||||
// mask {
|
|
||||||
// paths: "user.display_name"
|
|
||||||
// paths: "photo"
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// In JSON, the same mask is represented as below:
|
|
||||||
//
|
|
||||||
// {
|
|
||||||
// mask: "user.displayName,photo"
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// # Field Masks and Oneof Fields
|
|
||||||
//
|
|
||||||
// Field masks treat fields in oneofs just as regular fields. Consider the
|
|
||||||
// following message:
|
|
||||||
//
|
|
||||||
// message SampleMessage {
|
|
||||||
// oneof test_oneof {
|
|
||||||
// string name = 4;
|
|
||||||
// SubMessage sub_message = 9;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// The field mask can be:
|
|
||||||
//
|
|
||||||
// mask {
|
|
||||||
// paths: "name"
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Or:
|
|
||||||
//
|
|
||||||
// mask {
|
|
||||||
// paths: "sub_message"
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Note that oneof type names ("test_oneof" in this case) cannot be used in
|
|
||||||
// paths.
|
|
||||||
//
|
|
||||||
// ## Field Mask Verification
|
|
||||||
//
|
|
||||||
// The implementation of any API method which has a FieldMask type field in the
|
|
||||||
// request should verify the included field paths, and return an
|
|
||||||
// `INVALID_ARGUMENT` error if any path is unmappable.
|
|
||||||
type FieldMask struct {
|
|
||||||
// The set of field mask paths.
|
|
||||||
Paths []string `protobuf:"bytes,1,rep,name=paths,proto3" json:"paths,omitempty"`
|
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
||||||
XXX_unrecognized []byte `json:"-"`
|
|
||||||
XXX_sizecache int32 `json:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *FieldMask) Reset() { *m = FieldMask{} }
|
|
||||||
func (m *FieldMask) String() string { return proto.CompactTextString(m) }
|
|
||||||
func (*FieldMask) ProtoMessage() {}
|
|
||||||
func (*FieldMask) Descriptor() ([]byte, []int) {
|
|
||||||
return fileDescriptor_5158202634f0da48, []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *FieldMask) XXX_Unmarshal(b []byte) error {
|
|
||||||
return xxx_messageInfo_FieldMask.Unmarshal(m, b)
|
|
||||||
}
|
|
||||||
func (m *FieldMask) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
||||||
return xxx_messageInfo_FieldMask.Marshal(b, m, deterministic)
|
|
||||||
}
|
|
||||||
func (m *FieldMask) XXX_Merge(src proto.Message) {
|
|
||||||
xxx_messageInfo_FieldMask.Merge(m, src)
|
|
||||||
}
|
|
||||||
func (m *FieldMask) XXX_Size() int {
|
|
||||||
return xxx_messageInfo_FieldMask.Size(m)
|
|
||||||
}
|
|
||||||
func (m *FieldMask) XXX_DiscardUnknown() {
|
|
||||||
xxx_messageInfo_FieldMask.DiscardUnknown(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
var xxx_messageInfo_FieldMask proto.InternalMessageInfo
|
|
||||||
|
|
||||||
func (m *FieldMask) GetPaths() []string {
|
|
||||||
if m != nil {
|
|
||||||
return m.Paths
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
proto.RegisterType((*FieldMask)(nil), "google.protobuf.FieldMask")
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
proto.RegisterFile("google/protobuf/field_mask.proto", fileDescriptor_5158202634f0da48)
|
|
||||||
}
|
|
||||||
|
|
||||||
var fileDescriptor_5158202634f0da48 = []byte{
|
|
||||||
// 175 bytes of a gzipped FileDescriptorProto
|
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0xcf, 0xcf, 0x4f,
|
|
||||||
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcb, 0x4c, 0xcd,
|
|
||||||
0x49, 0x89, 0xcf, 0x4d, 0x2c, 0xce, 0xd6, 0x03, 0x8b, 0x09, 0xf1, 0x43, 0x54, 0xe8, 0xc1, 0x54,
|
|
||||||
0x28, 0x29, 0x72, 0x71, 0xba, 0x81, 0x14, 0xf9, 0x26, 0x16, 0x67, 0x0b, 0x89, 0x70, 0xb1, 0x16,
|
|
||||||
0x24, 0x96, 0x64, 0x14, 0x4b, 0x30, 0x2a, 0x30, 0x6b, 0x70, 0x06, 0x41, 0x38, 0x4e, 0x3d, 0x8c,
|
|
||||||
0x5c, 0xc2, 0xc9, 0xf9, 0xb9, 0x7a, 0x68, 0x5a, 0x9d, 0xf8, 0xe0, 0x1a, 0x03, 0x40, 0x42, 0x01,
|
|
||||||
0x8c, 0x51, 0x96, 0x50, 0x25, 0xe9, 0xf9, 0x39, 0x89, 0x79, 0xe9, 0x7a, 0xf9, 0x45, 0xe9, 0xfa,
|
|
||||||
0xe9, 0xa9, 0x79, 0x60, 0x0d, 0xd8, 0xdc, 0x64, 0x8d, 0x60, 0xfe, 0x60, 0x64, 0x5c, 0xc4, 0xc4,
|
|
||||||
0xec, 0x1e, 0xe0, 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0x62, 0x48, 0x00, 0x54, 0x83, 0x5e, 0x78, 0x6a,
|
|
||||||
0x4e, 0x8e, 0x77, 0x5e, 0x7e, 0x79, 0x5e, 0x48, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0x24,
|
|
||||||
0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xda, 0xb7, 0xa8, 0xed, 0x00, 0x00, 0x00,
|
|
||||||
}
|
|
|
@ -3,8 +3,6 @@
|
||||||
"ignore": "test",
|
"ignore": "test",
|
||||||
"package": [
|
"package": [
|
||||||
{"path":"appengine","revision":""},
|
{"path":"appengine","revision":""},
|
||||||
{"path":"appengine_internal","revision":""},
|
|
||||||
{"path":"appengine_internal/base","revision":""},
|
|
||||||
{"path":"cloud.google.com/go/compute/metadata","checksumSHA1":"b1KgRkWqz0RmrEBK6IJ8kOJva6w=","revision":"4bdb329835f9d945a6dad7b2ed60534497faa857","revisionTime":"2019-08-08T17:09:53Z"},
|
{"path":"cloud.google.com/go/compute/metadata","checksumSHA1":"b1KgRkWqz0RmrEBK6IJ8kOJva6w=","revision":"4bdb329835f9d945a6dad7b2ed60534497faa857","revisionTime":"2019-08-08T17:09:53Z"},
|
||||||
{"path":"cloud.google.com/go/iam","checksumSHA1":"+S/9jBntS1iHZwxkR64vsy97Gh8=","revision":"511b7f3f2624e2d3c4bf2697da4ab69ed5359aac","revisionTime":"2019-08-21T09:16:34Z"},
|
{"path":"cloud.google.com/go/iam","checksumSHA1":"+S/9jBntS1iHZwxkR64vsy97Gh8=","revision":"511b7f3f2624e2d3c4bf2697da4ab69ed5359aac","revisionTime":"2019-08-21T09:16:34Z"},
|
||||||
{"path":"cloud.google.com/go/internal","checksumSHA1":"JfGXEtr79UaxukcL05IERkjYm/g=","revision":"f6872d26e2099733e489f2322a878213384f731a","revisionTime":"2019-08-26T22:18:59Z"},
|
{"path":"cloud.google.com/go/internal","checksumSHA1":"JfGXEtr79UaxukcL05IERkjYm/g=","revision":"f6872d26e2099733e489f2322a878213384f731a","revisionTime":"2019-08-26T22:18:59Z"},
|
||||||
|
@ -12,8 +10,6 @@
|
||||||
{"path":"cloud.google.com/go/internal/trace","checksumSHA1":"jHOn3QLqvr1luNqyOg24/BXLrsM=","revision":"511b7f3f2624e2d3c4bf2697da4ab69ed5359aac","revisionTime":"2019-08-21T09:16:34Z"},
|
{"path":"cloud.google.com/go/internal/trace","checksumSHA1":"jHOn3QLqvr1luNqyOg24/BXLrsM=","revision":"511b7f3f2624e2d3c4bf2697da4ab69ed5359aac","revisionTime":"2019-08-21T09:16:34Z"},
|
||||||
{"path":"cloud.google.com/go/internal/version","checksumSHA1":"CRid/VCcJ3Vfwg/R/gbmzcHVOwQ=","revision":"511b7f3f2624e2d3c4bf2697da4ab69ed5359aac","revisionTime":"2019-08-21T09:16:34Z"},
|
{"path":"cloud.google.com/go/internal/version","checksumSHA1":"CRid/VCcJ3Vfwg/R/gbmzcHVOwQ=","revision":"511b7f3f2624e2d3c4bf2697da4ab69ed5359aac","revisionTime":"2019-08-21T09:16:34Z"},
|
||||||
{"path":"cloud.google.com/go/storage","checksumSHA1":"bZ1XULD+TbAPpn8b6+5dMaWWcqs=","revision":"511b7f3f2624e2d3c4bf2697da4ab69ed5359aac","revisionTime":"2019-08-21T09:16:34Z"},
|
{"path":"cloud.google.com/go/storage","checksumSHA1":"bZ1XULD+TbAPpn8b6+5dMaWWcqs=","revision":"511b7f3f2624e2d3c4bf2697da4ab69ed5359aac","revisionTime":"2019-08-21T09:16:34Z"},
|
||||||
{"path":"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2015-06-15/network","checksumSHA1":"Fs6Gcl0nhC0FJ6MsB+Ck7r4huYo=","revision":"767429fcb996dad413936d682c28301e6739bade","revisionTime":"2018-05-01T22:35:11Z"},
|
|
||||||
{"path":"github.com/Azure/azure-sdk-for-go/version","checksumSHA1":"FAw+h8wS2QiQEIVC3z/8R2q1bvY=","revision":"767429fcb996dad413936d682c28301e6739bade","revisionTime":"2018-05-01T22:35:11Z"},
|
|
||||||
{"path":"github.com/Azure/go-ansiterm","checksumSHA1":"9NFR6RG8H2fNyKHscGmuGLQhRm4=","revision":"d6e3b3328b783f23731bc4d058875b0371ff8109","revisionTime":"2017-09-29T23:40:23Z","version":"master","versionExact":"master"},
|
{"path":"github.com/Azure/go-ansiterm","checksumSHA1":"9NFR6RG8H2fNyKHscGmuGLQhRm4=","revision":"d6e3b3328b783f23731bc4d058875b0371ff8109","revisionTime":"2017-09-29T23:40:23Z","version":"master","versionExact":"master"},
|
||||||
{"path":"github.com/Azure/go-ansiterm/winterm","checksumSHA1":"3/UphB+6Hbx5otA4PjFjvObT+L4=","revision":"d6e3b3328b783f23731bc4d058875b0371ff8109","revisionTime":"2017-09-29T23:40:23Z","version":"master","versionExact":"master"},
|
{"path":"github.com/Azure/go-ansiterm/winterm","checksumSHA1":"3/UphB+6Hbx5otA4PjFjvObT+L4=","revision":"d6e3b3328b783f23731bc4d058875b0371ff8109","revisionTime":"2017-09-29T23:40:23Z","version":"master","versionExact":"master"},
|
||||||
{"path":"github.com/BurntSushi/toml","checksumSHA1":"Pc2ORQp+VY3Un/dkh4QwLC7R6lE=","revision":"3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005","revisionTime":"2018-08-15T10:47:33Z"},
|
{"path":"github.com/BurntSushi/toml","checksumSHA1":"Pc2ORQp+VY3Un/dkh4QwLC7R6lE=","revision":"3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005","revisionTime":"2018-08-15T10:47:33Z"},
|
||||||
|
@ -79,7 +75,6 @@
|
||||||
{"path":"github.com/beorn7/perks/quantile","checksumSHA1":"spyv5/YFBjYyZLZa1U2LBfDR8PM=","revision":"4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9","revisionTime":"2016-08-04T10:47:26Z"},
|
{"path":"github.com/beorn7/perks/quantile","checksumSHA1":"spyv5/YFBjYyZLZa1U2LBfDR8PM=","revision":"4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9","revisionTime":"2016-08-04T10:47:26Z"},
|
||||||
{"path":"github.com/bgentry/go-netrc/netrc","checksumSHA1":"nqw2Qn5xUklssHTubS5HDvEL9L4=","revision":"9fd32a8b3d3d3f9d43c341bfe098430e07609480","revisionTime":"2014-04-22T17:41:19Z"},
|
{"path":"github.com/bgentry/go-netrc/netrc","checksumSHA1":"nqw2Qn5xUklssHTubS5HDvEL9L4=","revision":"9fd32a8b3d3d3f9d43c341bfe098430e07609480","revisionTime":"2014-04-22T17:41:19Z"},
|
||||||
{"path":"github.com/bgentry/speakeasy","checksumSHA1":"7SbTaY0kaYxgQrG3/9cjrI+BcyU=","revision":"36e9cfdd690967f4f690c6edcc9ffacd006014a0"},
|
{"path":"github.com/bgentry/speakeasy","checksumSHA1":"7SbTaY0kaYxgQrG3/9cjrI+BcyU=","revision":"36e9cfdd690967f4f690c6edcc9ffacd006014a0"},
|
||||||
{"path":"github.com/bgentry/speakeasy/example","checksumSHA1":"twtRfb6484vfr2qqjiFkLThTjcQ=","revision":"36e9cfdd690967f4f690c6edcc9ffacd006014a0"},
|
|
||||||
{"path":"github.com/boltdb/bolt","checksumSHA1":"R1Q34Pfnt197F/nCOO9kG8c+Z90=","comment":"v1.2.0","revision":"2f1ce7a837dcb8da3ec595b1dac9d0632f0f99e8","revisionTime":"2017-07-17T17:11:48Z","version":"v1.3.1","versionExact":"v1.3.1"},
|
{"path":"github.com/boltdb/bolt","checksumSHA1":"R1Q34Pfnt197F/nCOO9kG8c+Z90=","comment":"v1.2.0","revision":"2f1ce7a837dcb8da3ec595b1dac9d0632f0f99e8","revisionTime":"2017-07-17T17:11:48Z","version":"v1.3.1","versionExact":"v1.3.1"},
|
||||||
{"path":"github.com/checkpoint-restore/go-criu/rpc","checksumSHA1":"k3xD77kpUpECrHCffQKb1nttiDM=","revision":"bdb7599cd87b22701b5c89b37940ea882a7d7dec","revisionTime":"2019-01-09T18:43:17Z"},
|
{"path":"github.com/checkpoint-restore/go-criu/rpc","checksumSHA1":"k3xD77kpUpECrHCffQKb1nttiDM=","revision":"bdb7599cd87b22701b5c89b37940ea882a7d7dec","revisionTime":"2019-01-09T18:43:17Z"},
|
||||||
{"path":"github.com/circonus-labs/circonus-gometrics","checksumSHA1":"H4RhrnI0P34qLB9345G4r7CAwpU=","revision":"d6e3aea90ab9f90fe8456e13fc520f43d102da4d","revisionTime":"2019-01-28T15:50:09Z","version":"=v2","versionExact":"v2"},
|
{"path":"github.com/circonus-labs/circonus-gometrics","checksumSHA1":"H4RhrnI0P34qLB9345G4r7CAwpU=","revision":"d6e3aea90ab9f90fe8456e13fc520f43d102da4d","revisionTime":"2019-01-28T15:50:09Z","version":"=v2","versionExact":"v2"},
|
||||||
|
@ -90,8 +85,6 @@
|
||||||
{"path":"github.com/container-storage-interface/spec/lib/go/csi","checksumSHA1":"UG2eSIhT6aFn6zWuz48IhlO+eEE=","revision":"a33ece0a8a9f9449688bad8c3ddb103ecf58749b","revisionTime":"2019-10-21T21:08:49Z","tree":true},
|
{"path":"github.com/container-storage-interface/spec/lib/go/csi","checksumSHA1":"UG2eSIhT6aFn6zWuz48IhlO+eEE=","revision":"a33ece0a8a9f9449688bad8c3ddb103ecf58749b","revisionTime":"2019-10-21T21:08:49Z","tree":true},
|
||||||
{"path":"github.com/containerd/console","checksumSHA1":"Lc9okmPYuvnmj2yWbW/ioFh2LJE=","revision":"8375c3424e4d7b114e8a90a4a40c8e1b40d1d4e6","revisionTime":"2019-12-19T16:52:38Z"},
|
{"path":"github.com/containerd/console","checksumSHA1":"Lc9okmPYuvnmj2yWbW/ioFh2LJE=","revision":"8375c3424e4d7b114e8a90a4a40c8e1b40d1d4e6","revisionTime":"2019-12-19T16:52:38Z"},
|
||||||
{"path":"github.com/containerd/containerd/errdefs","checksumSHA1":"ru5eKWdLzXfpNRL+Mi1bxbmY8DU=","revision":"14fbcd886f6e971d86f6e3bed43298491d89f393","revisionTime":"2020-03-14T00:01:32Z"},
|
{"path":"github.com/containerd/containerd/errdefs","checksumSHA1":"ru5eKWdLzXfpNRL+Mi1bxbmY8DU=","revision":"14fbcd886f6e971d86f6e3bed43298491d89f393","revisionTime":"2020-03-14T00:01:32Z"},
|
||||||
{"path":"github.com/containerd/continuity/pathdriver","checksumSHA1":"GqIrOttKaO7k6HIaHQLPr3cY7rY=","origin":"github.com/docker/docker/vendor/github.com/containerd/continuity/pathdriver","revision":"320063a2ad06a1d8ada61c94c29dbe44e2d87473","revisionTime":"2018-08-16T08:14:46Z"},
|
|
||||||
{"path":"github.com/containerd/fifo","checksumSHA1":"Ur3lVmFp+HTGUzQU+/ZBolKe8FU=","revision":"3d5202aec260678c48179c56f40e6f38a095738c","revisionTime":"2018-03-07T16:51:37Z"},
|
|
||||||
{"path":"github.com/containerd/go-cni","checksumSHA1":"414xGcva33msbOXs7vUQ4ffeJek=","revision":"d20b7eebc7ee1339cb703c4c18be6fd3fa81ad8f","revisionTime":"2019-09-04T15:50:53Z"},
|
{"path":"github.com/containerd/go-cni","checksumSHA1":"414xGcva33msbOXs7vUQ4ffeJek=","revision":"d20b7eebc7ee1339cb703c4c18be6fd3fa81ad8f","revisionTime":"2019-09-04T15:50:53Z"},
|
||||||
{"path":"github.com/containernetworking/cni/libcni","checksumSHA1":"3CsFN6YsShG9EU2oB9vJIqYTxq4=","revision":"dc953e2fd91f9bc624b03cf9ea3706796bfee920","revisionTime":"2019-06-12T15:24:20Z"},
|
{"path":"github.com/containernetworking/cni/libcni","checksumSHA1":"3CsFN6YsShG9EU2oB9vJIqYTxq4=","revision":"dc953e2fd91f9bc624b03cf9ea3706796bfee920","revisionTime":"2019-06-12T15:24:20Z"},
|
||||||
{"path":"github.com/containernetworking/cni/pkg/invoke","checksumSHA1":"Xf2DxXUyjBO9u4LeyDzS38pdL+I=","revision":"dc953e2fd91f9bc624b03cf9ea3706796bfee920","revisionTime":"2019-06-12T15:24:20Z"},
|
{"path":"github.com/containernetworking/cni/pkg/invoke","checksumSHA1":"Xf2DxXUyjBO9u4LeyDzS38pdL+I=","revision":"dc953e2fd91f9bc624b03cf9ea3706796bfee920","revisionTime":"2019-06-12T15:24:20Z"},
|
||||||
|
@ -166,12 +159,10 @@
|
||||||
{"path":"github.com/dustin/go-humanize","checksumSHA1":"xteP9Px90oMrg/HZuqvZkpXCR+s=","revision":"8929fe90cee4b2cb9deb468b51fb34eba64d1bf0"},
|
{"path":"github.com/dustin/go-humanize","checksumSHA1":"xteP9Px90oMrg/HZuqvZkpXCR+s=","revision":"8929fe90cee4b2cb9deb468b51fb34eba64d1bf0"},
|
||||||
{"path":"github.com/elazarl/go-bindata-assetfs","checksumSHA1":"7DxViusFRJ7UPH0jZqYatwDrOkY=","revision":"30f82fa23fd844bd5bb1e5f216db87fd77b5eb43","revisionTime":"2017-02-27T21:27:28Z"},
|
{"path":"github.com/elazarl/go-bindata-assetfs","checksumSHA1":"7DxViusFRJ7UPH0jZqYatwDrOkY=","revision":"30f82fa23fd844bd5bb1e5f216db87fd77b5eb43","revisionTime":"2017-02-27T21:27:28Z"},
|
||||||
{"path":"github.com/fatih/color","checksumSHA1":"VsE3zx2d8kpwj97TWhYddzAwBrY=","revision":"507f6050b8568533fb3f5504de8e5205fa62a114","revisionTime":"2018-02-13T13:34:03Z"},
|
{"path":"github.com/fatih/color","checksumSHA1":"VsE3zx2d8kpwj97TWhYddzAwBrY=","revision":"507f6050b8568533fb3f5504de8e5205fa62a114","revisionTime":"2018-02-13T13:34:03Z"},
|
||||||
{"path":"github.com/fatih/structs","checksumSHA1":"QBkOnLnM6zZ158NJSVLqoE4V6fI=","revision":"14f46232cd7bc732dc67313a9e4d3d210e082587","revisionTime":"2016-07-19T20:45:16Z"},
|
|
||||||
{"path":"github.com/fsouza/go-dockerclient","checksumSHA1":"fvbo1J+cFWDrPDs0Yudwv+POIb4=","revision":"01c3e9bd8551d675a60382c0303ef51f5849ea99","revisionTime":"2018-11-29T02:57:25Z"},
|
{"path":"github.com/fsouza/go-dockerclient","checksumSHA1":"fvbo1J+cFWDrPDs0Yudwv+POIb4=","revision":"01c3e9bd8551d675a60382c0303ef51f5849ea99","revisionTime":"2018-11-29T02:57:25Z"},
|
||||||
{"path":"github.com/fsouza/go-dockerclient/internal/archive","checksumSHA1":"YJ7WR4AVtD2ykYJr+1mTtazkma0=","revision":"01c3e9bd8551d675a60382c0303ef51f5849ea99","revisionTime":"2018-11-29T02:57:25Z"},
|
{"path":"github.com/fsouza/go-dockerclient/internal/archive","checksumSHA1":"YJ7WR4AVtD2ykYJr+1mTtazkma0=","revision":"01c3e9bd8551d675a60382c0303ef51f5849ea99","revisionTime":"2018-11-29T02:57:25Z"},
|
||||||
{"path":"github.com/fsouza/go-dockerclient/internal/jsonmessage","checksumSHA1":"lnUC8fZCqakWnfuMLUrZD2g+reY=","revision":"01c3e9bd8551d675a60382c0303ef51f5849ea99","revisionTime":"2018-11-29T02:57:25Z"},
|
{"path":"github.com/fsouza/go-dockerclient/internal/jsonmessage","checksumSHA1":"lnUC8fZCqakWnfuMLUrZD2g+reY=","revision":"01c3e9bd8551d675a60382c0303ef51f5849ea99","revisionTime":"2018-11-29T02:57:25Z"},
|
||||||
{"path":"github.com/fsouza/go-dockerclient/internal/term","checksumSHA1":"vdjeVhnepWyw3H4g9pVTVACDfV0=","revision":"01c3e9bd8551d675a60382c0303ef51f5849ea99","revisionTime":"2018-11-29T02:57:25Z"},
|
{"path":"github.com/fsouza/go-dockerclient/internal/term","checksumSHA1":"vdjeVhnepWyw3H4g9pVTVACDfV0=","revision":"01c3e9bd8551d675a60382c0303ef51f5849ea99","revisionTime":"2018-11-29T02:57:25Z"},
|
||||||
{"path":"github.com/go-ini/ini","checksumSHA1":"U4k9IYSBQcW5DW5QDc44n5dddxs=","comment":"v1.8.5-2-g6ec4abd","revision":"6ec4abd8f8d587536da56f730858f0e27aeb4126"},
|
|
||||||
{"path":"github.com/go-ole/go-ole","checksumSHA1":"IvHj/4iR2nYa/S3cB2GXoyDG/xQ=","comment":"v1.2.0-4-g5005588","revision":"085abb85892dc1949567b726dff00fa226c60c45","revisionTime":"2017-07-12T17:44:59Z"},
|
{"path":"github.com/go-ole/go-ole","checksumSHA1":"IvHj/4iR2nYa/S3cB2GXoyDG/xQ=","comment":"v1.2.0-4-g5005588","revision":"085abb85892dc1949567b726dff00fa226c60c45","revisionTime":"2017-07-12T17:44:59Z"},
|
||||||
{"path":"github.com/go-ole/go-ole/oleutil","checksumSHA1":"qLYVTQDhgrVIeZ2KI9eZV51mmug=","comment":"v1.2.0-4-g5005588","revision":"50055884d646dd9434f16bbb5c9801749b9bafe4"},
|
{"path":"github.com/go-ole/go-ole/oleutil","checksumSHA1":"qLYVTQDhgrVIeZ2KI9eZV51mmug=","comment":"v1.2.0-4-g5005588","revision":"50055884d646dd9434f16bbb5c9801749b9bafe4"},
|
||||||
{"path":"github.com/godbus/dbus","checksumSHA1":"KSgw53WGLfdZpEMm8It5H0yedV0=","revision":"37bf87eef99d69c4f1d3528bd66e3a87dc201472","revisionTime":"2019-09-30T11:59:46Z","version":"v5","versionExact":"v5.0.3"},
|
{"path":"github.com/godbus/dbus","checksumSHA1":"KSgw53WGLfdZpEMm8It5H0yedV0=","revision":"37bf87eef99d69c4f1d3528bd66e3a87dc201472","revisionTime":"2019-09-30T11:59:46Z","version":"v5","versionExact":"v5.0.3"},
|
||||||
|
@ -181,7 +172,6 @@
|
||||||
{"path":"github.com/golang/protobuf/ptypes","checksumSHA1":"aEiR2m3NGaMGTbUW5P+w5gKFyc8=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z","version":"v1","versionExact":"v1.1.0"},
|
{"path":"github.com/golang/protobuf/ptypes","checksumSHA1":"aEiR2m3NGaMGTbUW5P+w5gKFyc8=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z","version":"v1","versionExact":"v1.1.0"},
|
||||||
{"path":"github.com/golang/protobuf/ptypes/any","checksumSHA1":"fKjx2dIvFUxCLdUepI98YiHM5sw=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z","version":"v1","versionExact":"v1.1.0"},
|
{"path":"github.com/golang/protobuf/ptypes/any","checksumSHA1":"fKjx2dIvFUxCLdUepI98YiHM5sw=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z","version":"v1","versionExact":"v1.1.0"},
|
||||||
{"path":"github.com/golang/protobuf/ptypes/duration","checksumSHA1":"hXYsfSabFmhkZKPDQBBqdyzbY7k=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z","version":"v1","versionExact":"v1.1.0"},
|
{"path":"github.com/golang/protobuf/ptypes/duration","checksumSHA1":"hXYsfSabFmhkZKPDQBBqdyzbY7k=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z","version":"v1","versionExact":"v1.1.0"},
|
||||||
{"path":"github.com/golang/protobuf/ptypes/empty","checksumSHA1":"0UGKhjFbqfl2XOha+UVAEPkldoc=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z"},
|
|
||||||
{"path":"github.com/golang/protobuf/ptypes/timestamp","checksumSHA1":"dayZ4rJvq7qwXVr/g686AdY0vVs=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z","version":"v1","versionExact":"v1.1.0"},
|
{"path":"github.com/golang/protobuf/ptypes/timestamp","checksumSHA1":"dayZ4rJvq7qwXVr/g686AdY0vVs=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z","version":"v1","versionExact":"v1.1.0"},
|
||||||
{"path":"github.com/golang/protobuf/ptypes/wrappers","checksumSHA1":"v7LxevobQklife9HH4bt3pfXLUo=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z","version":"v1.1.0","versionExact":"v1.1.0"},
|
{"path":"github.com/golang/protobuf/ptypes/wrappers","checksumSHA1":"v7LxevobQklife9HH4bt3pfXLUo=","revision":"5d5b4c10bd43f85e63bd9e4a3fa9b1ea2ef88af2","revisionTime":"2020-02-26T19:23:50Z","version":"v1.1.0","versionExact":"v1.1.0"},
|
||||||
{"path":"github.com/golang/snappy","checksumSHA1":"W+E/2xXcE1GmJ0Qb784ald0Fn6I=","revision":"d9eb7a3d35ec988b8585d4a0068e462c27d28380","revisionTime":"2016-05-29T05:00:41Z"},
|
{"path":"github.com/golang/snappy","checksumSHA1":"W+E/2xXcE1GmJ0Qb784ald0Fn6I=","revision":"d9eb7a3d35ec988b8585d4a0068e462c27d28380","revisionTime":"2016-05-29T05:00:41Z"},
|
||||||
|
@ -193,7 +183,6 @@
|
||||||
{"path":"github.com/google/go-cmp/cmp/internal/value","checksumSHA1":"f+mgZLvc4VITtMmBv0bmew4rL2Y=","revision":"d5735f74713c51f7450a43d0a98d41ce2c1db3cb","revisionTime":"2017-09-01T21:42:48Z"},
|
{"path":"github.com/google/go-cmp/cmp/internal/value","checksumSHA1":"f+mgZLvc4VITtMmBv0bmew4rL2Y=","revision":"d5735f74713c51f7450a43d0a98d41ce2c1db3cb","revisionTime":"2017-09-01T21:42:48Z"},
|
||||||
{"path":"github.com/googleapis/gax-go/v2","checksumSHA1":"WZoHSeTnVjnPIX2+U1Otst5MUKw=","revision":"bd5b16380fd03dc758d11cef74ba2e3bc8b0e8c2","revisionTime":"2019-05-13T18:38:25Z"},
|
{"path":"github.com/googleapis/gax-go/v2","checksumSHA1":"WZoHSeTnVjnPIX2+U1Otst5MUKw=","revision":"bd5b16380fd03dc758d11cef74ba2e3bc8b0e8c2","revisionTime":"2019-05-13T18:38:25Z"},
|
||||||
{"path":"github.com/gorhill/cronexpr","checksumSHA1":"m8B3L3qJ3tFfP6BI9pIFr9oal3w=","comment":"1.0.0","origin":"github.com/dadgar/cronexpr","revision":"675cac9b2d182dccb5ba8d5f8a0d5988df8a4394","revisionTime":"2017-09-15T18:30:32Z"},
|
{"path":"github.com/gorhill/cronexpr","checksumSHA1":"m8B3L3qJ3tFfP6BI9pIFr9oal3w=","comment":"1.0.0","origin":"github.com/dadgar/cronexpr","revision":"675cac9b2d182dccb5ba8d5f8a0d5988df8a4394","revisionTime":"2017-09-15T18:30:32Z"},
|
||||||
{"path":"github.com/gorhill/cronexpr/cronexpr","checksumSHA1":"Nd/7mZb0T6Gj6+AymyOPsNCQSJs=","comment":"1.0.0","revision":"a557574d6c024ed6e36acc8b610f5f211c91568a"},
|
|
||||||
{"path":"github.com/gorilla/context","checksumSHA1":"g/V4qrXjUGG9B+e3hB+4NAYJ5Gs=","revision":"08b5f424b9271eedf6f9f0ce86cb9396ed337a42","revisionTime":"2016-08-17T18:46:32Z"},
|
{"path":"github.com/gorilla/context","checksumSHA1":"g/V4qrXjUGG9B+e3hB+4NAYJ5Gs=","revision":"08b5f424b9271eedf6f9f0ce86cb9396ed337a42","revisionTime":"2016-08-17T18:46:32Z"},
|
||||||
{"path":"github.com/gorilla/mux","checksumSHA1":"STQSdSj2FcpCf0NLfdsKhNutQT0=","revision":"e48e440e4c92e3251d812f8ce7858944dfa3331c","revisionTime":"2018-08-07T07:52:56Z"},
|
{"path":"github.com/gorilla/mux","checksumSHA1":"STQSdSj2FcpCf0NLfdsKhNutQT0=","revision":"e48e440e4c92e3251d812f8ce7858944dfa3331c","revisionTime":"2018-08-07T07:52:56Z"},
|
||||||
{"path":"github.com/gorilla/websocket","checksumSHA1":"gr0edNJuVv4+olNNZl5ZmwLgscA=","revision":"0ec3d1bd7fe50c503d6df98ee649d81f4857c564","revisionTime":"2019-03-06T00:42:57Z"},
|
{"path":"github.com/gorilla/websocket","checksumSHA1":"gr0edNJuVv4+olNNZl5ZmwLgscA=","revision":"0ec3d1bd7fe50c503d6df98ee649d81f4857c564","revisionTime":"2019-03-06T00:42:57Z"},
|
||||||
|
@ -250,7 +239,6 @@
|
||||||
{"path":"github.com/hashicorp/go-multierror","checksumSHA1":"qb0WcbXXZyWv538gMYVHAq/qOlw=","revision":"72917a1559e17f38638ade54020ab372ba848d67","revisionTime":"2019-11-20T19:21:20Z"},
|
{"path":"github.com/hashicorp/go-multierror","checksumSHA1":"qb0WcbXXZyWv538gMYVHAq/qOlw=","revision":"72917a1559e17f38638ade54020ab372ba848d67","revisionTime":"2019-11-20T19:21:20Z"},
|
||||||
{"path":"github.com/hashicorp/go-plugin","checksumSHA1":"Nwod22KYiOycjys2ITllhNE9mtE=","revision":"809113480b559c989ea9cfcff62e9d387961f60b","revisionTime":"2019-10-04T17:18:45Z"},
|
{"path":"github.com/hashicorp/go-plugin","checksumSHA1":"Nwod22KYiOycjys2ITllhNE9mtE=","revision":"809113480b559c989ea9cfcff62e9d387961f60b","revisionTime":"2019-10-04T17:18:45Z"},
|
||||||
{"path":"github.com/hashicorp/go-plugin/internal/plugin","checksumSHA1":"uTvnRQ5UWn/bhRxbW/UCfYFseSc=","revision":"809113480b559c989ea9cfcff62e9d387961f60b","revisionTime":"2019-10-04T17:18:45Z"},
|
{"path":"github.com/hashicorp/go-plugin/internal/plugin","checksumSHA1":"uTvnRQ5UWn/bhRxbW/UCfYFseSc=","revision":"809113480b559c989ea9cfcff62e9d387961f60b","revisionTime":"2019-10-04T17:18:45Z"},
|
||||||
{"path":"github.com/hashicorp/go-plugin/internal/proto","checksumSHA1":"Ikbb1FngsPR79bHhr2UmKk4CblI=","revision":"f444068e8f5a19853177f7aa0aea7e7d95b5b528","revisionTime":"2018-12-12T15:08:38Z"},
|
|
||||||
{"path":"github.com/hashicorp/go-retryablehttp","checksumSHA1":"9SqwC2BzFbsWulQuBG2+QEliTpo=","revision":"73489d0a1476f0c9e6fb03f9c39241523a496dfd","revisionTime":"2019-01-26T20:33:39Z"},
|
{"path":"github.com/hashicorp/go-retryablehttp","checksumSHA1":"9SqwC2BzFbsWulQuBG2+QEliTpo=","revision":"73489d0a1476f0c9e6fb03f9c39241523a496dfd","revisionTime":"2019-01-26T20:33:39Z"},
|
||||||
{"path":"github.com/hashicorp/go-rootcerts","checksumSHA1":"hfxPtUTFbsE5C1P6gY/gCb9KmP4=","revision":"98fadc2a5ba2ad2a534a179b352ecdfd1f4259aa","revisionTime":"2019-12-10T09:55:28Z","version":"=v1.0.2","versionExact":"v1.0.2"},
|
{"path":"github.com/hashicorp/go-rootcerts","checksumSHA1":"hfxPtUTFbsE5C1P6gY/gCb9KmP4=","revision":"98fadc2a5ba2ad2a534a179b352ecdfd1f4259aa","revisionTime":"2019-12-10T09:55:28Z","version":"=v1.0.2","versionExact":"v1.0.2"},
|
||||||
{"path":"github.com/hashicorp/go-safetemp","checksumSHA1":"CduvzBFfTv77nhjtXPGdIjQQLMI=","revision":"b1a1dbde6fdc11e3ae79efd9039009e22d4ae240","revisionTime":"2018-03-26T21:11:50Z"},
|
{"path":"github.com/hashicorp/go-safetemp","checksumSHA1":"CduvzBFfTv77nhjtXPGdIjQQLMI=","revision":"b1a1dbde6fdc11e3ae79efd9039009e22d4ae240","revisionTime":"2018-03-26T21:11:50Z"},
|
||||||
|
@ -392,13 +380,11 @@
|
||||||
{"path":"github.com/prometheus/common/model","checksumSHA1":"3VoqH7TFfzA6Ds0zFzIbKCUvBmw=","revision":"2f17f4a9d485bf34b4bfaccc273805040e4f86c8","revisionTime":"2017-09-08T16:18:22Z"},
|
{"path":"github.com/prometheus/common/model","checksumSHA1":"3VoqH7TFfzA6Ds0zFzIbKCUvBmw=","revision":"2f17f4a9d485bf34b4bfaccc273805040e4f86c8","revisionTime":"2017-09-08T16:18:22Z"},
|
||||||
{"path":"github.com/prometheus/procfs","checksumSHA1":"WB7dFqkmD3R514xql9YM3ZP1dDM=","revision":"833678b5bb319f2d20a475cb165c6cc59c2cc77c","revisionTime":"2019-05-31T16:30:47Z","version":"v0.0.2","versionExact":"v0.0.2"},
|
{"path":"github.com/prometheus/procfs","checksumSHA1":"WB7dFqkmD3R514xql9YM3ZP1dDM=","revision":"833678b5bb319f2d20a475cb165c6cc59c2cc77c","revisionTime":"2019-05-31T16:30:47Z","version":"v0.0.2","versionExact":"v0.0.2"},
|
||||||
{"path":"github.com/prometheus/procfs/internal/fs","checksumSHA1":"Kmjs49lbjGmlgUPx3pks0tVDed0=","revision":"833678b5bb319f2d20a475cb165c6cc59c2cc77c","revisionTime":"2019-05-31T16:30:47Z","version":"v0.0.2","versionExact":"v0.0.2"},
|
{"path":"github.com/prometheus/procfs/internal/fs","checksumSHA1":"Kmjs49lbjGmlgUPx3pks0tVDed0=","revision":"833678b5bb319f2d20a475cb165c6cc59c2cc77c","revisionTime":"2019-05-31T16:30:47Z","version":"v0.0.2","versionExact":"v0.0.2"},
|
||||||
{"path":"github.com/prometheus/procfs/xfs","checksumSHA1":"xCiFAAwVTrjsfZT1BIJQ3DgeNCY=","revision":"e645f4e5aaa8506fc71d6edbc5c4ff02c04c46f2","revisionTime":"2017-07-03T10:12:42Z"},
|
|
||||||
{"path":"github.com/rs/cors","checksumSHA1":"I778b2sbNN/yjwKSdb3y7hz2yUQ=","revision":"eabcc6af4bbe5ad3a949d36450326a2b0b9894b8","revisionTime":"2017-08-01T07:32:01Z"},
|
{"path":"github.com/rs/cors","checksumSHA1":"I778b2sbNN/yjwKSdb3y7hz2yUQ=","revision":"eabcc6af4bbe5ad3a949d36450326a2b0b9894b8","revisionTime":"2017-08-01T07:32:01Z"},
|
||||||
{"path":"github.com/ryanuber/columnize","checksumSHA1":"M57Rrfc8Z966p+IBtQ91QOcUtcg=","comment":"v2.0.1-8-g983d3a5","revision":"abc90934186a77966e2beeac62ed966aac0561d5","revisionTime":"2017-07-03T20:58:27Z"},
|
{"path":"github.com/ryanuber/columnize","checksumSHA1":"M57Rrfc8Z966p+IBtQ91QOcUtcg=","comment":"v2.0.1-8-g983d3a5","revision":"abc90934186a77966e2beeac62ed966aac0561d5","revisionTime":"2017-07-03T20:58:27Z"},
|
||||||
{"path":"github.com/ryanuber/go-glob","checksumSHA1":"6JP37UqrI0H80Gpk0Y2P+KXgn5M=","revision":"256dc444b735e061061cf46c809487313d5b0065","revisionTime":"2017-01-28T01:21:29Z"},
|
{"path":"github.com/ryanuber/go-glob","checksumSHA1":"6JP37UqrI0H80Gpk0Y2P+KXgn5M=","revision":"256dc444b735e061061cf46c809487313d5b0065","revisionTime":"2017-01-28T01:21:29Z"},
|
||||||
{"path":"github.com/sean-/seed","checksumSHA1":"tnMZLo/kR9Kqx6GtmWwowtTLlA8=","revision":"e2103e2c35297fb7e17febb81e49b312087a2372","revisionTime":"2017-03-13T16:33:22Z"},
|
{"path":"github.com/sean-/seed","checksumSHA1":"tnMZLo/kR9Kqx6GtmWwowtTLlA8=","revision":"e2103e2c35297fb7e17febb81e49b312087a2372","revisionTime":"2017-03-13T16:33:22Z"},
|
||||||
{"path":"github.com/seccomp/libseccomp-golang","checksumSHA1":"HnduREmmt3KTZ1YmMMZbOGMFHN0=","revision":"bdab42bd51284427d37d9a7aa8f11990c9d5d009","revisionTime":"2020-03-14T00:16:45Z"},
|
{"path":"github.com/seccomp/libseccomp-golang","checksumSHA1":"HnduREmmt3KTZ1YmMMZbOGMFHN0=","revision":"bdab42bd51284427d37d9a7aa8f11990c9d5d009","revisionTime":"2020-03-14T00:16:45Z"},
|
||||||
{"path":"github.com/sethgrid/pester","checksumSHA1":"8Lm8nsMCFz4+gr9EvQLqK8+w+Ks=","revision":"8053687f99650573b28fb75cddf3f295082704d7","revisionTime":"2016-04-29T17:20:22Z"},
|
|
||||||
{"path":"github.com/shirou/gopsutil/cpu","checksumSHA1":"of1VYIkuYFIom46U7G5/TFetEao=","revision":"a3b23c5ccf4fb7b33d319fcaad53d7777907f4e1","revisionTime":"2020-03-01T00:40:00Z","version":"v2.20.2","versionExact":"v2.20.2"},
|
{"path":"github.com/shirou/gopsutil/cpu","checksumSHA1":"of1VYIkuYFIom46U7G5/TFetEao=","revision":"a3b23c5ccf4fb7b33d319fcaad53d7777907f4e1","revisionTime":"2020-03-01T00:40:00Z","version":"v2.20.2","versionExact":"v2.20.2"},
|
||||||
{"path":"github.com/shirou/gopsutil/disk","checksumSHA1":"lb5OsljQpw0AW47HDh8bb6TzZ/0=","revision":"a3b23c5ccf4fb7b33d319fcaad53d7777907f4e1","revisionTime":"2020-03-01T00:40:00Z","version":"v2.20.2","versionExact":"v2.20.2"},
|
{"path":"github.com/shirou/gopsutil/disk","checksumSHA1":"lb5OsljQpw0AW47HDh8bb6TzZ/0=","revision":"a3b23c5ccf4fb7b33d319fcaad53d7777907f4e1","revisionTime":"2020-03-01T00:40:00Z","version":"v2.20.2","versionExact":"v2.20.2"},
|
||||||
{"path":"github.com/shirou/gopsutil/host","checksumSHA1":"0W/GLJ31ysdFaEeZqwTo/jPK9eU=","revision":"a3b23c5ccf4fb7b33d319fcaad53d7777907f4e1","revisionTime":"2020-03-01T00:40:00Z","version":"v2.20.2","versionExact":"v2.20.2"},
|
{"path":"github.com/shirou/gopsutil/host","checksumSHA1":"0W/GLJ31ysdFaEeZqwTo/jPK9eU=","revision":"a3b23c5ccf4fb7b33d319fcaad53d7777907f4e1","revisionTime":"2020-03-01T00:40:00Z","version":"v2.20.2","versionExact":"v2.20.2"},
|
||||||
|
@ -416,7 +402,6 @@
|
||||||
{"path":"github.com/stretchr/testify/mock","checksumSHA1":"bg70xAHEu6HRf2iFu8h5iJBjUfg=","revision":"221dbe5ed46703ee255b1da0dec05086f5035f62","revisionTime":"2019-05-17T17:51:56Z","version":"v1.4.0","versionExact":"v1.4.0"},
|
{"path":"github.com/stretchr/testify/mock","checksumSHA1":"bg70xAHEu6HRf2iFu8h5iJBjUfg=","revision":"221dbe5ed46703ee255b1da0dec05086f5035f62","revisionTime":"2019-05-17T17:51:56Z","version":"v1.4.0","versionExact":"v1.4.0"},
|
||||||
{"path":"github.com/stretchr/testify/require","checksumSHA1":"ABkrw83kq3/d6oSRX+BFq57/BiY=","revision":"221dbe5ed46703ee255b1da0dec05086f5035f62","revisionTime":"2019-05-17T17:51:56Z","version":"v1.4.0","versionExact":"v1.4.0"},
|
{"path":"github.com/stretchr/testify/require","checksumSHA1":"ABkrw83kq3/d6oSRX+BFq57/BiY=","revision":"221dbe5ed46703ee255b1da0dec05086f5035f62","revisionTime":"2019-05-17T17:51:56Z","version":"v1.4.0","versionExact":"v1.4.0"},
|
||||||
{"path":"github.com/syndtr/gocapability/capability","checksumSHA1":"PgEklGW56c5RLHqQhORxt6jS3fY=","revision":"db04d3cc01c8b54962a58ec7e491717d06cfcc16","revisionTime":"2017-07-04T07:02:18Z"},
|
{"path":"github.com/syndtr/gocapability/capability","checksumSHA1":"PgEklGW56c5RLHqQhORxt6jS3fY=","revision":"db04d3cc01c8b54962a58ec7e491717d06cfcc16","revisionTime":"2017-07-04T07:02:18Z"},
|
||||||
{"path":"github.com/tonnerre/golang-text","checksumSHA1":"t24KnvC9jRxiANVhpw2pqFpmEu8=","revision":"048ed3d792f7104850acbc8cfc01e5a6070f4c04","revisionTime":"2013-09-25T19:58:46Z"},
|
|
||||||
{"path":"github.com/tv42/httpunix","checksumSHA1":"2xcr/mhxBFlDjpxe/Mc2Wb4RGR8=","revision":"b75d8614f926c077e48d85f1f8f7885b758c6225","revisionTime":"2015-04-27T01:28:21Z"},
|
{"path":"github.com/tv42/httpunix","checksumSHA1":"2xcr/mhxBFlDjpxe/Mc2Wb4RGR8=","revision":"b75d8614f926c077e48d85f1f8f7885b758c6225","revisionTime":"2015-04-27T01:28:21Z"},
|
||||||
{"path":"github.com/ugorji/go/codec","checksumSHA1":"BaMPvSu4aGZBucY5nV5jEUu3XWs=","origin":"github.com/hashicorp/go-msgpack/codec","revision":"23165f7bc3c2dda1891434ebb9da1511a7bafc1c","revisionTime":"2019-09-27T12:33:13Z","version":"upstream-08f7b40","versionExact":"upstream-08f7b40"},
|
{"path":"github.com/ugorji/go/codec","checksumSHA1":"BaMPvSu4aGZBucY5nV5jEUu3XWs=","origin":"github.com/hashicorp/go-msgpack/codec","revision":"23165f7bc3c2dda1891434ebb9da1511a7bafc1c","revisionTime":"2019-09-27T12:33:13Z","version":"upstream-08f7b40","versionExact":"upstream-08f7b40"},
|
||||||
{"path":"github.com/ulikunitz/xz","checksumSHA1":"qgMa75aMGbkFY0jIqqqgVnCUoNA=","revision":"0c6b41e72360850ca4f98dc341fd999726ea007f","revisionTime":"2017-06-05T21:53:11Z"},
|
{"path":"github.com/ulikunitz/xz","checksumSHA1":"qgMa75aMGbkFY0jIqqqgVnCUoNA=","revision":"0c6b41e72360850ca4f98dc341fd999726ea007f","revisionTime":"2017-06-05T21:53:11Z"},
|
||||||
|
@ -501,7 +486,6 @@
|
||||||
{"path":"golang.org/x/text/unicode/bidi","checksumSHA1":"iB6/RoQIzBaZxVi+t7tzbkwZTlo=","revision":"88f656faf3f37f690df1a32515b479415e1a6769","revisionTime":"2017-10-26T07:52:28Z"},
|
{"path":"golang.org/x/text/unicode/bidi","checksumSHA1":"iB6/RoQIzBaZxVi+t7tzbkwZTlo=","revision":"88f656faf3f37f690df1a32515b479415e1a6769","revisionTime":"2017-10-26T07:52:28Z"},
|
||||||
{"path":"golang.org/x/text/unicode/cldr","checksumSHA1":"jer43nmInsJhYFfpl39FpEYyoC4=","revision":"b7ef84aaf62aa3e70962625c80a571ae7c17cb40","revisionTime":"2018-02-22T12:58:23Z"},
|
{"path":"golang.org/x/text/unicode/cldr","checksumSHA1":"jer43nmInsJhYFfpl39FpEYyoC4=","revision":"b7ef84aaf62aa3e70962625c80a571ae7c17cb40","revisionTime":"2018-02-22T12:58:23Z"},
|
||||||
{"path":"golang.org/x/text/unicode/norm","checksumSHA1":"BCNYmf4Ek93G4lk5x3ucNi/lTwA=","revision":"b7ef84aaf62aa3e70962625c80a571ae7c17cb40","revisionTime":"2018-02-22T12:58:23Z"},
|
{"path":"golang.org/x/text/unicode/norm","checksumSHA1":"BCNYmf4Ek93G4lk5x3ucNi/lTwA=","revision":"b7ef84aaf62aa3e70962625c80a571ae7c17cb40","revisionTime":"2018-02-22T12:58:23Z"},
|
||||||
{"path":"golang.org/x/text/unicode/rangetable","checksumSHA1":"1mKbP+ZJSE2oamuShC/hhvJahks=","revision":"b7ef84aaf62aa3e70962625c80a571ae7c17cb40","revisionTime":"2018-02-22T12:58:23Z"},
|
|
||||||
{"path":"golang.org/x/text/width","checksumSHA1":"zuieOGXKG9vXxNhEWv3H0X8RSXM=","revision":"b7ef84aaf62aa3e70962625c80a571ae7c17cb40","revisionTime":"2018-02-22T12:58:23Z"},
|
{"path":"golang.org/x/text/width","checksumSHA1":"zuieOGXKG9vXxNhEWv3H0X8RSXM=","revision":"b7ef84aaf62aa3e70962625c80a571ae7c17cb40","revisionTime":"2018-02-22T12:58:23Z"},
|
||||||
{"path":"golang.org/x/time/rate","checksumSHA1":"h/06ikMECfJoTkWj2e1nJ30aDDg=","revision":"a4bde12657593d5e90d0533a3e4fd95e635124cb","revisionTime":"2016-02-02T18:34:45Z"},
|
{"path":"golang.org/x/time/rate","checksumSHA1":"h/06ikMECfJoTkWj2e1nJ30aDDg=","revision":"a4bde12657593d5e90d0533a3e4fd95e635124cb","revisionTime":"2016-02-02T18:34:45Z"},
|
||||||
{"path":"google.golang.org/api/gensupport","checksumSHA1":"QyBLCM74VEO9bekzOZGcEkJ7V0o=","revision":"035d22e007183e382031a505793aeb0ddb724007","revisionTime":"2019-08-24T00:08:15Z"},
|
{"path":"google.golang.org/api/gensupport","checksumSHA1":"QyBLCM74VEO9bekzOZGcEkJ7V0o=","revision":"035d22e007183e382031a505793aeb0ddb724007","revisionTime":"2019-08-24T00:08:15Z"},
|
||||||
|
@ -515,12 +499,10 @@
|
||||||
{"path":"google.golang.org/api/transport/http","checksumSHA1":"a+PkIGoiF+p+ghmjmA9gUkMFwYQ=","revision":"035d22e007183e382031a505793aeb0ddb724007","revisionTime":"2019-08-24T00:08:15Z"},
|
{"path":"google.golang.org/api/transport/http","checksumSHA1":"a+PkIGoiF+p+ghmjmA9gUkMFwYQ=","revision":"035d22e007183e382031a505793aeb0ddb724007","revisionTime":"2019-08-24T00:08:15Z"},
|
||||||
{"path":"google.golang.org/api/transport/http/internal/propagation","checksumSHA1":"sJcKCvjPtoysqyelsB2CQzC5oQI=","revision":"035d22e007183e382031a505793aeb0ddb724007","revisionTime":"2019-08-24T00:08:15Z"},
|
{"path":"google.golang.org/api/transport/http/internal/propagation","checksumSHA1":"sJcKCvjPtoysqyelsB2CQzC5oQI=","revision":"035d22e007183e382031a505793aeb0ddb724007","revisionTime":"2019-08-24T00:08:15Z"},
|
||||||
{"path":"google.golang.org/genproto/googleapis/api/annotations","checksumSHA1":"HEU0bhyylndcdndr++f77v4HutU=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
{"path":"google.golang.org/genproto/googleapis/api/annotations","checksumSHA1":"HEU0bhyylndcdndr++f77v4HutU=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
||||||
{"path":"google.golang.org/genproto/googleapis/api/httpbody","checksumSHA1":"V9VKXsDiVlzEKanQtLUX7EZuoWY=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
|
||||||
{"path":"google.golang.org/genproto/googleapis/iam/v1","checksumSHA1":"xbexPK13k/4np3FcOyamCcJ+06c=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
{"path":"google.golang.org/genproto/googleapis/iam/v1","checksumSHA1":"xbexPK13k/4np3FcOyamCcJ+06c=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
||||||
{"path":"google.golang.org/genproto/googleapis/rpc/code","checksumSHA1":"xG8sJRrQKuYbqhjWCrpFvat9tL8=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
{"path":"google.golang.org/genproto/googleapis/rpc/code","checksumSHA1":"xG8sJRrQKuYbqhjWCrpFvat9tL8=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
||||||
{"path":"google.golang.org/genproto/googleapis/rpc/status","checksumSHA1":"pELRBNi2OpmDkPdCiBmFAKbrJsg=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
{"path":"google.golang.org/genproto/googleapis/rpc/status","checksumSHA1":"pELRBNi2OpmDkPdCiBmFAKbrJsg=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
||||||
{"path":"google.golang.org/genproto/googleapis/type/expr","checksumSHA1":"OJXHKai0ZFXN92+ijTgDZvEi5jo=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
{"path":"google.golang.org/genproto/googleapis/type/expr","checksumSHA1":"OJXHKai0ZFXN92+ijTgDZvEi5jo=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
||||||
{"path":"google.golang.org/genproto/protobuf/field_mask","checksumSHA1":"72JIlNTotRdX/dttmrlZfzDGSvo=","revision":"7795fca6ccb1e8e6ae5dfee49dec15af9824f3c8","revisionTime":"2020-03-02T12:30:26Z"},
|
|
||||||
{"path":"google.golang.org/grpc","checksumSHA1":"X8qilipQyTWcdy5bvyvknysD0R4=","revision":"f495f5b15ae7ccda3b38c53a1bfcde4c1a58a2bc","revisionTime":"2020-02-05T23:40:21Z"},
|
{"path":"google.golang.org/grpc","checksumSHA1":"X8qilipQyTWcdy5bvyvknysD0R4=","revision":"f495f5b15ae7ccda3b38c53a1bfcde4c1a58a2bc","revisionTime":"2020-02-05T23:40:21Z"},
|
||||||
{"path":"google.golang.org/grpc/attributes","checksumSHA1":"5KuLzYi5z3j7P8A68m6VsB9Oumw=","revision":"f495f5b15ae7ccda3b38c53a1bfcde4c1a58a2bc","revisionTime":"2020-02-05T23:40:21Z"},
|
{"path":"google.golang.org/grpc/attributes","checksumSHA1":"5KuLzYi5z3j7P8A68m6VsB9Oumw=","revision":"f495f5b15ae7ccda3b38c53a1bfcde4c1a58a2bc","revisionTime":"2020-02-05T23:40:21Z"},
|
||||||
{"path":"google.golang.org/grpc/backoff","checksumSHA1":"8KrSbWYdhP+hwdJd45wv+hn4Aw0=","revision":"f495f5b15ae7ccda3b38c53a1bfcde4c1a58a2bc","revisionTime":"2020-02-05T23:40:21Z"},
|
{"path":"google.golang.org/grpc/backoff","checksumSHA1":"8KrSbWYdhP+hwdJd45wv+hn4Aw0=","revision":"f495f5b15ae7ccda3b38c53a1bfcde4c1a58a2bc","revisionTime":"2020-02-05T23:40:21Z"},
|
||||||
|
|
Loading…
Reference in New Issue