-
Notifications
You must be signed in to change notification settings - Fork 10
/
update_project_specification.go
266 lines (213 loc) · 8.54 KB
/
update_project_specification.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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
// Code generated by go-swagger; DO NOT EDIT.
package models
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"bytes"
"context"
"encoding/json"
"io"
"github.com/go-openapi/errors"
"github.com/go-openapi/runtime"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
"github.com/go-openapi/validate"
)
// UpdateProjectSpecification UpdateProjectSpecification
//
// Represents a specification for a updating a project.
//
// swagger:discriminator UpdateProjectSpecification Represents a specification for a updating a project.
type UpdateProjectSpecification interface {
runtime.Validatable
runtime.ContextValidatable
// List of constraints of the project.
// Example: {"network":{"conditions":[{"enforcement":"HARD","expression":{"key":"key","value":"value"},"occurrence":"MUST_OCCUR","type":"TAG"}]}}
Constraints() map[string]ProjectConstraint
SetConstraints(map[string]ProjectConstraint)
// A human-friendly description.
// Example: my-description
Description() string
SetDescription(string)
// A human-friendly name used as an identifier in APIs that support this option.
// Example: my-name
Name() string
SetName(string)
// The timeout that should be used for Blueprint operations and Provisioning tasks. The timeout is in seconds.
OperationTimeout() int64
SetOperationTimeout(int64)
// List of properties of the project, to be applied to any resource provisioned within the project.
//
// The project placement policy is set through the property with key: __projectPlacementPolicy, which can take 1 of only 2 possible values DEFAULT or SPREAD. If not specified, it is set as DEFAULT.
//
// The naming template of resources provisioned in this project can be specified through the property with key: __namingTemplate.
// Hint: Avoid conflicting names by generating digits in names with ${######}
//
// You can allow Terraform cloudzone mapping through the property with key: __allowTerraformCloudzoneMapping. It can be set to either true or false. By default, it is set to false.
// Example: {"__allowTerraformCloudzoneMapping":"true","__namingTemplate":"my-resource-template-${######}","__projectPlacementPolicy":"SPREAD","myproperty":"enforcement"}
Properties() map[string]string
SetProperties(map[string]string)
// Specifies whether the resources in this projects are shared or not.
SharedResources() bool
SetSharedResources(bool)
// AdditionalProperties in base type shoud be handled just like regular properties
// At this moment, the base type property is pushed down to the subtype
}
type updateProjectSpecification struct {
constraintsField map[string]ProjectConstraint
descriptionField string
nameField string
operationTimeoutField int64
propertiesField map[string]string
sharedResourcesField bool
}
// Constraints gets the constraints of this polymorphic type
func (m *updateProjectSpecification) Constraints() map[string]ProjectConstraint {
return m.constraintsField
}
// SetConstraints sets the constraints of this polymorphic type
func (m *updateProjectSpecification) SetConstraints(val map[string]ProjectConstraint) {
m.constraintsField = val
}
// Description gets the description of this polymorphic type
func (m *updateProjectSpecification) Description() string {
return m.descriptionField
}
// SetDescription sets the description of this polymorphic type
func (m *updateProjectSpecification) SetDescription(val string) {
m.descriptionField = val
}
// Name gets the name of this polymorphic type
func (m *updateProjectSpecification) Name() string {
return m.nameField
}
// SetName sets the name of this polymorphic type
func (m *updateProjectSpecification) SetName(val string) {
m.nameField = val
}
// OperationTimeout gets the operation timeout of this polymorphic type
func (m *updateProjectSpecification) OperationTimeout() int64 {
return m.operationTimeoutField
}
// SetOperationTimeout sets the operation timeout of this polymorphic type
func (m *updateProjectSpecification) SetOperationTimeout(val int64) {
m.operationTimeoutField = val
}
// Properties gets the properties of this polymorphic type
func (m *updateProjectSpecification) Properties() map[string]string {
return m.propertiesField
}
// SetProperties sets the properties of this polymorphic type
func (m *updateProjectSpecification) SetProperties(val map[string]string) {
m.propertiesField = val
}
// SharedResources gets the shared resources of this polymorphic type
func (m *updateProjectSpecification) SharedResources() bool {
return m.sharedResourcesField
}
// SetSharedResources sets the shared resources of this polymorphic type
func (m *updateProjectSpecification) SetSharedResources(val bool) {
m.sharedResourcesField = val
}
// UnmarshalUpdateProjectSpecificationSlice unmarshals polymorphic slices of UpdateProjectSpecification
func UnmarshalUpdateProjectSpecificationSlice(reader io.Reader, consumer runtime.Consumer) ([]UpdateProjectSpecification, error) {
var elements []json.RawMessage
if err := consumer.Consume(reader, &elements); err != nil {
return nil, err
}
var result []UpdateProjectSpecification
for _, element := range elements {
obj, err := unmarshalUpdateProjectSpecification(element, consumer)
if err != nil {
return nil, err
}
result = append(result, obj)
}
return result, nil
}
// UnmarshalUpdateProjectSpecification unmarshals polymorphic UpdateProjectSpecification
func UnmarshalUpdateProjectSpecification(reader io.Reader, consumer runtime.Consumer) (UpdateProjectSpecification, error) {
// we need to read this twice, so first into a buffer
data, err := io.ReadAll(reader)
if err != nil {
return nil, err
}
return unmarshalUpdateProjectSpecification(data, consumer)
}
func unmarshalUpdateProjectSpecification(data []byte, consumer runtime.Consumer) (UpdateProjectSpecification, error) {
buf := bytes.NewBuffer(data)
buf2 := bytes.NewBuffer(data)
// the first time this is read is to fetch the value of the Represents a specification for a updating a project. property.
var getType struct {
RepresentsaSpecificationForaUpdatingaProject string `json:"Represents a specification for a updating a project."`
}
if err := consumer.Consume(buf, &getType); err != nil {
return nil, err
}
if err := validate.RequiredString("Represents a specification for a updating a project.", "body", getType.RepresentsaSpecificationForaUpdatingaProject); err != nil {
return nil, err
}
// The value of Represents a specification for a updating a project. is used to determine which type to create and unmarshal the data into
switch getType.RepresentsaSpecificationForaUpdatingaProject {
case "UpdateProjectSpecification":
var result updateProjectSpecification
if err := consumer.Consume(buf2, &result); err != nil {
return nil, err
}
return &result, nil
}
return nil, errors.New(422, "invalid Represents a specification for a updating a project. value: %q", getType.RepresentsaSpecificationForaUpdatingaProject)
}
// Validate validates this update project specification
func (m *updateProjectSpecification) Validate(formats strfmt.Registry) error {
var res []error
if err := m.validateConstraints(formats); err != nil {
res = append(res, err)
}
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
return nil
}
func (m *updateProjectSpecification) validateConstraints(formats strfmt.Registry) error {
if swag.IsZero(m.Constraints()) { // not required
return nil
}
for k := range m.Constraints() {
if err := validate.Required("constraints"+"."+k, "body", m.Constraints()[k]); err != nil {
return err
}
if val, ok := m.Constraints()[k]; ok {
if err := val.Validate(formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("constraints" + "." + k)
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("constraints" + "." + k)
}
return err
}
}
}
return nil
}
// ContextValidate validate this update project specification based on the context it is used
func (m *updateProjectSpecification) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
var res []error
if err := m.contextValidateConstraints(ctx, formats); err != nil {
res = append(res, err)
}
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
return nil
}
func (m *updateProjectSpecification) contextValidateConstraints(ctx context.Context, formats strfmt.Registry) error {
for k := range m.Constraints() {
if val, ok := m.Constraints()[k]; ok {
if err := val.ContextValidate(ctx, formats); err != nil {
return err
}
}
}
return nil
}