forked from journeymidnight/aws-sdk-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
service.go
143 lines (129 loc) · 5.17 KB
/
service.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
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
package opsworkscm
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/client"
"github.com/aws/aws-sdk-go/aws/client/metadata"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws/signer/v4"
"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
)
// AWS OpsWorks for Chef Automate is a service that runs and manages configuration
// management servers.
//
// Glossary of terms
//
// * Server: A configuration management server that can be highly-available.
// The configuration manager runs on your instances by using various AWS
// services, such as Amazon Elastic Compute Cloud (EC2), and potentially
// Amazon Relational Database Service (RDS). A server is a generic abstraction
// over the configuration manager that you want to use, much like Amazon
// RDS. In AWS OpsWorks for Chef Automate, you do not start or stop servers.
// After you create servers, they continue to run until they are deleted.
//
// * Engine: The specific configuration manager that you want to use (such
// as Chef) is the engine.
//
// * Backup: This is an application-level backup of the data that the configuration
// manager stores. A backup creates a .tar.gz file that is stored in an Amazon
// Simple Storage Service (S3) bucket in your account. AWS OpsWorks for Chef
// Automate creates the S3 bucket when you launch the first instance. A backup
// maintains a snapshot of all of a server's important attributes at the
// time of the backup.
//
// * Events: Events are always related to a server. Events are written during
// server creation, when health checks run, when backups are created, etc.
// When you delete a server, the server's events are also deleted.
//
// * AccountAttributes: Every account has attributes that are assigned in
// the AWS OpsWorks for Chef Automate database. These attributes store information
// about configuration limits (servers, backups, etc.) and your customer
// account.
//
// Endpoints
//
// AWS OpsWorks for Chef Automate supports the following endpoints, all HTTPS.
// You must connect to one of the following endpoints. Chef servers can only
// be accessed or managed within the endpoint in which they are created.
//
// * opsworks-cm.us-east-1.amazonaws.com
//
// * opsworks-cm.us-west-2.amazonaws.com
//
// * opsworks-cm.eu-west-1.amazonaws.com
//
// Throttling limits
//
// All API operations allow for five requests per second with a burst of 10
// requests per second.
// The service client's operations are safe to be used concurrently.
// It is not safe to mutate any of the client's properties though.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01
type OpsWorksCM struct {
*client.Client
}
// Used for custom client initialization logic
var initClient func(*client.Client)
// Used for custom request initialization logic
var initRequest func(*request.Request)
// Service information constants
const (
ServiceName = "opsworks-cm" // Service endpoint prefix API calls made to.
EndpointsID = ServiceName // Service ID for Regions and Endpoints metadata.
)
// New creates a new instance of the OpsWorksCM client with a session.
// If additional configuration is needed for the client instance use the optional
// aws.Config parameter to add your extra config.
//
// Example:
// // Create a OpsWorksCM client from just a session.
// svc := opsworkscm.New(mySession)
//
// // Create a OpsWorksCM client with additional configuration
// svc := opsworkscm.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
func New(p client.ConfigProvider, cfgs ...*aws.Config) *OpsWorksCM {
c := p.ClientConfig(EndpointsID, cfgs...)
return newClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion, c.SigningName)
}
// newClient creates, initializes and returns a new service client instance.
func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion, signingName string) *OpsWorksCM {
if len(signingName) == 0 {
signingName = "opsworks-cm"
}
svc := &OpsWorksCM{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: ServiceName,
SigningName: signingName,
SigningRegion: signingRegion,
Endpoint: endpoint,
APIVersion: "2016-11-01",
JSONVersion: "1.1",
TargetPrefix: "OpsWorksCM_V2016_11_01",
},
handlers,
),
}
// Handlers
svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(jsonrpc.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(jsonrpc.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(jsonrpc.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(jsonrpc.UnmarshalErrorHandler)
// Run custom client initialization if present
if initClient != nil {
initClient(svc.Client)
}
return svc
}
// newRequest creates a new request for a OpsWorksCM operation and runs any
// custom request initialization.
func (c *OpsWorksCM) newRequest(op *request.Operation, params, data interface{}) *request.Request {
req := c.NewRequest(op, params, data)
// Run custom request initialization if present
if initRequest != nil {
initRequest(req)
}
return req
}