-
Notifications
You must be signed in to change notification settings - Fork 623
/
api_op_CreateSnapshotFromVolumeRecoveryPoint.go
176 lines (148 loc) · 6.51 KB
/
api_op_CreateSnapshotFromVolumeRecoveryPoint.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
package storagegateway
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/internal/awsutil"
)
type CreateSnapshotFromVolumeRecoveryPointInput struct {
_ struct{} `type:"structure"`
// Textual description of the snapshot that appears in the Amazon EC2 console,
// Elastic Block Store snapshots panel in the Description field, and in the
// AWS Storage Gateway snapshot Details pane, Description field
//
// SnapshotDescription is a required field
SnapshotDescription *string `min:"1" type:"string" required:"true"`
// A list of up to 50 tags that can be assigned to a snapshot. Each tag is a
// key-value pair.
//
// Valid characters for key and value are letters, spaces, and numbers representable
// in UTF-8 format, and the following special characters: + - = . _ : / @. The
// maximum length of a tag's key is 128 characters, and the maximum length for
// a tag's value is 256.
Tags []Tag `type:"list"`
// The Amazon Resource Name (ARN) of the iSCSI volume target. Use the DescribeStorediSCSIVolumes
// operation to return to retrieve the TargetARN for specified VolumeARN.
//
// VolumeARN is a required field
VolumeARN *string `min:"50" type:"string" required:"true"`
}
// String returns the string representation
func (s CreateSnapshotFromVolumeRecoveryPointInput) String() string {
return awsutil.Prettify(s)
}
// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateSnapshotFromVolumeRecoveryPointInput) Validate() error {
invalidParams := aws.ErrInvalidParams{Context: "CreateSnapshotFromVolumeRecoveryPointInput"}
if s.SnapshotDescription == nil {
invalidParams.Add(aws.NewErrParamRequired("SnapshotDescription"))
}
if s.SnapshotDescription != nil && len(*s.SnapshotDescription) < 1 {
invalidParams.Add(aws.NewErrParamMinLen("SnapshotDescription", 1))
}
if s.VolumeARN == nil {
invalidParams.Add(aws.NewErrParamRequired("VolumeARN"))
}
if s.VolumeARN != nil && len(*s.VolumeARN) < 50 {
invalidParams.Add(aws.NewErrParamMinLen("VolumeARN", 50))
}
if s.Tags != nil {
for i, v := range s.Tags {
if err := v.Validate(); err != nil {
invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(aws.ErrInvalidParams))
}
}
}
if invalidParams.Len() > 0 {
return invalidParams
}
return nil
}
type CreateSnapshotFromVolumeRecoveryPointOutput struct {
_ struct{} `type:"structure"`
// The ID of the snapshot.
SnapshotId *string `type:"string"`
// The Amazon Resource Name (ARN) of the iSCSI volume target. Use the DescribeStorediSCSIVolumes
// operation to return to retrieve the TargetARN for specified VolumeARN.
VolumeARN *string `min:"50" type:"string"`
// The time the volume was created from the recovery point.
VolumeRecoveryPointTime *string `type:"string"`
}
// String returns the string representation
func (s CreateSnapshotFromVolumeRecoveryPointOutput) String() string {
return awsutil.Prettify(s)
}
const opCreateSnapshotFromVolumeRecoveryPoint = "CreateSnapshotFromVolumeRecoveryPoint"
// CreateSnapshotFromVolumeRecoveryPointRequest returns a request value for making API operation for
// AWS Storage Gateway.
//
// Initiates a snapshot of a gateway from a volume recovery point. This operation
// is only supported in the cached volume gateway type.
//
// A volume recovery point is a point in time at which all data of the volume
// is consistent and from which you can create a snapshot. To get a list of
// volume recovery point for cached volume gateway, use ListVolumeRecoveryPoints.
//
// In the CreateSnapshotFromVolumeRecoveryPoint request, you identify the volume
// by providing its Amazon Resource Name (ARN). You must also provide a description
// for the snapshot. When the gateway takes a snapshot of the specified volume,
// the snapshot and its description appear in the AWS Storage Gateway console.
// In response, the gateway returns you a snapshot ID. You can use this snapshot
// ID to check the snapshot progress or later use it when you want to create
// a volume from a snapshot.
//
// To list or delete a snapshot, you must use the Amazon EC2 API. For more information,
// in Amazon Elastic Compute Cloud API Reference.
//
// // Example sending a request using CreateSnapshotFromVolumeRecoveryPointRequest.
// req := client.CreateSnapshotFromVolumeRecoveryPointRequest(params)
// resp, err := req.Send(context.TODO())
// if err == nil {
// fmt.Println(resp)
// }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/storagegateway-2013-06-30/CreateSnapshotFromVolumeRecoveryPoint
func (c *Client) CreateSnapshotFromVolumeRecoveryPointRequest(input *CreateSnapshotFromVolumeRecoveryPointInput) CreateSnapshotFromVolumeRecoveryPointRequest {
op := &aws.Operation{
Name: opCreateSnapshotFromVolumeRecoveryPoint,
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &CreateSnapshotFromVolumeRecoveryPointInput{}
}
req := c.newRequest(op, input, &CreateSnapshotFromVolumeRecoveryPointOutput{})
return CreateSnapshotFromVolumeRecoveryPointRequest{Request: req, Input: input, Copy: c.CreateSnapshotFromVolumeRecoveryPointRequest}
}
// CreateSnapshotFromVolumeRecoveryPointRequest is the request type for the
// CreateSnapshotFromVolumeRecoveryPoint API operation.
type CreateSnapshotFromVolumeRecoveryPointRequest struct {
*aws.Request
Input *CreateSnapshotFromVolumeRecoveryPointInput
Copy func(*CreateSnapshotFromVolumeRecoveryPointInput) CreateSnapshotFromVolumeRecoveryPointRequest
}
// Send marshals and sends the CreateSnapshotFromVolumeRecoveryPoint API request.
func (r CreateSnapshotFromVolumeRecoveryPointRequest) Send(ctx context.Context) (*CreateSnapshotFromVolumeRecoveryPointResponse, error) {
r.Request.SetContext(ctx)
err := r.Request.Send()
if err != nil {
return nil, err
}
resp := &CreateSnapshotFromVolumeRecoveryPointResponse{
CreateSnapshotFromVolumeRecoveryPointOutput: r.Request.Data.(*CreateSnapshotFromVolumeRecoveryPointOutput),
response: &aws.Response{Request: r.Request},
}
return resp, nil
}
// CreateSnapshotFromVolumeRecoveryPointResponse is the response type for the
// CreateSnapshotFromVolumeRecoveryPoint API operation.
type CreateSnapshotFromVolumeRecoveryPointResponse struct {
*CreateSnapshotFromVolumeRecoveryPointOutput
response *aws.Response
}
// SDKResponseMetdata returns the response metadata for the
// CreateSnapshotFromVolumeRecoveryPoint request.
func (r *CreateSnapshotFromVolumeRecoveryPointResponse) SDKResponseMetdata() *aws.Response {
return r.response
}