Skip to content

Commit 00656aa

Browse files
authored
feat(vpc): add support for project (#565)
1 parent b4854cd commit 00656aa

File tree

1 file changed

+370
-0
lines changed

1 file changed

+370
-0
lines changed

api/vpc/v1/vpc_sdk.go

Lines changed: 370 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,370 @@
1+
// This file was automatically generated. DO NOT EDIT.
2+
// If you have any remark or suggestion do not hesitate to open an issue.
3+
4+
// Package vpc provides methods and message types of the vpc v1 API.
5+
package vpc
6+
7+
import (
8+
"bytes"
9+
"encoding/json"
10+
"fmt"
11+
"net"
12+
"net/http"
13+
"net/url"
14+
"strings"
15+
"time"
16+
17+
"github.com/scaleway/scaleway-sdk-go/internal/errors"
18+
"github.com/scaleway/scaleway-sdk-go/internal/marshaler"
19+
"github.com/scaleway/scaleway-sdk-go/internal/parameter"
20+
"github.com/scaleway/scaleway-sdk-go/namegenerator"
21+
"github.com/scaleway/scaleway-sdk-go/scw"
22+
)
23+
24+
// always import dependencies
25+
var (
26+
_ fmt.Stringer
27+
_ json.Unmarshaler
28+
_ url.URL
29+
_ net.IP
30+
_ http.Header
31+
_ bytes.Reader
32+
_ time.Time
33+
_ = strings.Join
34+
35+
_ scw.ScalewayRequest
36+
_ marshaler.Duration
37+
_ scw.File
38+
_ = parameter.AddToQuery
39+
_ = namegenerator.GetRandomName
40+
)
41+
42+
// API: vPC API
43+
type API struct {
44+
client *scw.Client
45+
}
46+
47+
// NewAPI returns a API object from a Scaleway client.
48+
func NewAPI(client *scw.Client) *API {
49+
return &API{
50+
client: client,
51+
}
52+
}
53+
54+
type ListPrivateNetworksRequestOrderBy string
55+
56+
const (
57+
// ListPrivateNetworksRequestOrderByCreatedAtAsc is [insert doc].
58+
ListPrivateNetworksRequestOrderByCreatedAtAsc = ListPrivateNetworksRequestOrderBy("created_at_asc")
59+
// ListPrivateNetworksRequestOrderByCreatedAtDesc is [insert doc].
60+
ListPrivateNetworksRequestOrderByCreatedAtDesc = ListPrivateNetworksRequestOrderBy("created_at_desc")
61+
// ListPrivateNetworksRequestOrderByNameAsc is [insert doc].
62+
ListPrivateNetworksRequestOrderByNameAsc = ListPrivateNetworksRequestOrderBy("name_asc")
63+
// ListPrivateNetworksRequestOrderByNameDesc is [insert doc].
64+
ListPrivateNetworksRequestOrderByNameDesc = ListPrivateNetworksRequestOrderBy("name_desc")
65+
)
66+
67+
func (enum ListPrivateNetworksRequestOrderBy) String() string {
68+
if enum == "" {
69+
// return default value if empty
70+
return "created_at_asc"
71+
}
72+
return string(enum)
73+
}
74+
75+
func (enum ListPrivateNetworksRequestOrderBy) MarshalJSON() ([]byte, error) {
76+
return []byte(fmt.Sprintf(`"%s"`, enum)), nil
77+
}
78+
79+
func (enum *ListPrivateNetworksRequestOrderBy) UnmarshalJSON(data []byte) error {
80+
tmp := ""
81+
82+
if err := json.Unmarshal(data, &tmp); err != nil {
83+
return err
84+
}
85+
86+
*enum = ListPrivateNetworksRequestOrderBy(ListPrivateNetworksRequestOrderBy(tmp).String())
87+
return nil
88+
}
89+
90+
type ListPrivateNetworksResponse struct {
91+
PrivateNetworks []*PrivateNetwork `json:"private_networks"`
92+
93+
TotalCount uint32 `json:"total_count"`
94+
}
95+
96+
// PrivateNetwork: private network
97+
type PrivateNetwork struct {
98+
// ID: the private network ID
99+
ID string `json:"id"`
100+
// Name: the private network name
101+
Name string `json:"name"`
102+
// OrganizationID: the private network organization
103+
OrganizationID string `json:"organization_id"`
104+
// ProjectID: the private network project ID
105+
ProjectID string `json:"project_id"`
106+
// Zone: the zone in which the private network is available
107+
Zone scw.Zone `json:"zone"`
108+
// Tags: the private network tags
109+
Tags []string `json:"tags"`
110+
// CreatedAt: the private network creation date
111+
CreatedAt *time.Time `json:"created_at"`
112+
// UpdatedAt: the last private network modification date
113+
UpdatedAt *time.Time `json:"updated_at"`
114+
}
115+
116+
// Service API
117+
118+
type ListPrivateNetworksRequest struct {
119+
Zone scw.Zone `json:"-"`
120+
// OrderBy: the sort order of the returned private networks
121+
//
122+
// Default value: created_at_asc
123+
OrderBy ListPrivateNetworksRequestOrderBy `json:"-"`
124+
// Page: the page number for the returned private networks
125+
Page *int32 `json:"-"`
126+
// PageSize: the maximum number of private networks per page
127+
PageSize *uint32 `json:"-"`
128+
// Name: filter private networks with names containing this string
129+
Name *string `json:"-"`
130+
// Tags: filter private networks with one or more matching tags
131+
Tags []string `json:"-"`
132+
// OrganizationID: the organization ID on which to filter the returned private networks
133+
OrganizationID *string `json:"-"`
134+
// ProjectID: the project ID on which to filter the returned private networks
135+
ProjectID *string `json:"-"`
136+
}
137+
138+
// ListPrivateNetworks: list private networks
139+
func (s *API) ListPrivateNetworks(req *ListPrivateNetworksRequest, opts ...scw.RequestOption) (*ListPrivateNetworksResponse, error) {
140+
var err error
141+
142+
if req.Zone == "" {
143+
defaultZone, _ := s.client.GetDefaultZone()
144+
req.Zone = defaultZone
145+
}
146+
147+
defaultPageSize, exist := s.client.GetDefaultPageSize()
148+
if (req.PageSize == nil || *req.PageSize == 0) && exist {
149+
req.PageSize = &defaultPageSize
150+
}
151+
152+
query := url.Values{}
153+
parameter.AddToQuery(query, "order_by", req.OrderBy)
154+
parameter.AddToQuery(query, "page", req.Page)
155+
parameter.AddToQuery(query, "page_size", req.PageSize)
156+
parameter.AddToQuery(query, "name", req.Name)
157+
parameter.AddToQuery(query, "tags", req.Tags)
158+
parameter.AddToQuery(query, "organization_id", req.OrganizationID)
159+
parameter.AddToQuery(query, "project_id", req.ProjectID)
160+
161+
if fmt.Sprint(req.Zone) == "" {
162+
return nil, errors.New("field Zone cannot be empty in request")
163+
}
164+
165+
scwReq := &scw.ScalewayRequest{
166+
Method: "GET",
167+
Path: "/vpc/v1/zones/" + fmt.Sprint(req.Zone) + "/private-networks",
168+
Query: query,
169+
Headers: http.Header{},
170+
}
171+
172+
var resp ListPrivateNetworksResponse
173+
174+
err = s.client.Do(scwReq, &resp, opts...)
175+
if err != nil {
176+
return nil, err
177+
}
178+
return &resp, nil
179+
}
180+
181+
// UnsafeGetTotalCount should not be used
182+
// Internal usage only
183+
func (r *ListPrivateNetworksResponse) UnsafeGetTotalCount() uint32 {
184+
return r.TotalCount
185+
}
186+
187+
// UnsafeAppend should not be used
188+
// Internal usage only
189+
func (r *ListPrivateNetworksResponse) UnsafeAppend(res interface{}) (uint32, error) {
190+
results, ok := res.(*ListPrivateNetworksResponse)
191+
if !ok {
192+
return 0, errors.New("%T type cannot be appended to type %T", res, r)
193+
}
194+
195+
r.PrivateNetworks = append(r.PrivateNetworks, results.PrivateNetworks...)
196+
r.TotalCount += uint32(len(results.PrivateNetworks))
197+
return uint32(len(results.PrivateNetworks)), nil
198+
}
199+
200+
type CreatePrivateNetworkRequest struct {
201+
Zone scw.Zone `json:"-"`
202+
// Name: the name of the private network
203+
Name string `json:"name"`
204+
// ProjectID: the project ID of the private network
205+
ProjectID string `json:"project_id"`
206+
// Tags: the private networks tags
207+
Tags []string `json:"tags"`
208+
}
209+
210+
// CreatePrivateNetwork: create a private network
211+
func (s *API) CreatePrivateNetwork(req *CreatePrivateNetworkRequest, opts ...scw.RequestOption) (*PrivateNetwork, error) {
212+
var err error
213+
214+
if req.ProjectID == "" {
215+
defaultProjectID, _ := s.client.GetDefaultProjectID()
216+
req.ProjectID = defaultProjectID
217+
}
218+
219+
if req.Zone == "" {
220+
defaultZone, _ := s.client.GetDefaultZone()
221+
req.Zone = defaultZone
222+
}
223+
224+
if req.Name == "" {
225+
req.Name = namegenerator.GetRandomName("pn")
226+
}
227+
228+
if fmt.Sprint(req.Zone) == "" {
229+
return nil, errors.New("field Zone cannot be empty in request")
230+
}
231+
232+
scwReq := &scw.ScalewayRequest{
233+
Method: "POST",
234+
Path: "/vpc/v1/zones/" + fmt.Sprint(req.Zone) + "/private-networks",
235+
Headers: http.Header{},
236+
}
237+
238+
err = scwReq.SetBody(req)
239+
if err != nil {
240+
return nil, err
241+
}
242+
243+
var resp PrivateNetwork
244+
245+
err = s.client.Do(scwReq, &resp, opts...)
246+
if err != nil {
247+
return nil, err
248+
}
249+
return &resp, nil
250+
}
251+
252+
type GetPrivateNetworkRequest struct {
253+
Zone scw.Zone `json:"-"`
254+
// PrivateNetworkID: the private network id
255+
PrivateNetworkID string `json:"-"`
256+
}
257+
258+
func (s *API) GetPrivateNetwork(req *GetPrivateNetworkRequest, opts ...scw.RequestOption) (*PrivateNetwork, error) {
259+
var err error
260+
261+
if req.Zone == "" {
262+
defaultZone, _ := s.client.GetDefaultZone()
263+
req.Zone = defaultZone
264+
}
265+
266+
if fmt.Sprint(req.Zone) == "" {
267+
return nil, errors.New("field Zone cannot be empty in request")
268+
}
269+
270+
if fmt.Sprint(req.PrivateNetworkID) == "" {
271+
return nil, errors.New("field PrivateNetworkID cannot be empty in request")
272+
}
273+
274+
scwReq := &scw.ScalewayRequest{
275+
Method: "GET",
276+
Path: "/vpc/v1/zones/" + fmt.Sprint(req.Zone) + "/private-networks/" + fmt.Sprint(req.PrivateNetworkID) + "",
277+
Headers: http.Header{},
278+
}
279+
280+
var resp PrivateNetwork
281+
282+
err = s.client.Do(scwReq, &resp, opts...)
283+
if err != nil {
284+
return nil, err
285+
}
286+
return &resp, nil
287+
}
288+
289+
type UpdatePrivateNetworkRequest struct {
290+
Zone scw.Zone `json:"-"`
291+
// PrivateNetworkID: the private network ID
292+
PrivateNetworkID string `json:"-"`
293+
// Name: the name of the private network
294+
Name *string `json:"name"`
295+
// Tags: the private networks tags
296+
Tags *[]string `json:"tags"`
297+
}
298+
299+
// UpdatePrivateNetwork: update private network
300+
func (s *API) UpdatePrivateNetwork(req *UpdatePrivateNetworkRequest, opts ...scw.RequestOption) (*PrivateNetwork, error) {
301+
var err error
302+
303+
if req.Zone == "" {
304+
defaultZone, _ := s.client.GetDefaultZone()
305+
req.Zone = defaultZone
306+
}
307+
308+
if fmt.Sprint(req.Zone) == "" {
309+
return nil, errors.New("field Zone cannot be empty in request")
310+
}
311+
312+
if fmt.Sprint(req.PrivateNetworkID) == "" {
313+
return nil, errors.New("field PrivateNetworkID cannot be empty in request")
314+
}
315+
316+
scwReq := &scw.ScalewayRequest{
317+
Method: "PATCH",
318+
Path: "/vpc/v1/zones/" + fmt.Sprint(req.Zone) + "/private-networks/" + fmt.Sprint(req.PrivateNetworkID) + "",
319+
Headers: http.Header{},
320+
}
321+
322+
err = scwReq.SetBody(req)
323+
if err != nil {
324+
return nil, err
325+
}
326+
327+
var resp PrivateNetwork
328+
329+
err = s.client.Do(scwReq, &resp, opts...)
330+
if err != nil {
331+
return nil, err
332+
}
333+
return &resp, nil
334+
}
335+
336+
type DeletePrivateNetworkRequest struct {
337+
Zone scw.Zone `json:"-"`
338+
// PrivateNetworkID: the private network ID
339+
PrivateNetworkID string `json:"-"`
340+
}
341+
342+
// DeletePrivateNetwork: delete a private network
343+
func (s *API) DeletePrivateNetwork(req *DeletePrivateNetworkRequest, opts ...scw.RequestOption) error {
344+
var err error
345+
346+
if req.Zone == "" {
347+
defaultZone, _ := s.client.GetDefaultZone()
348+
req.Zone = defaultZone
349+
}
350+
351+
if fmt.Sprint(req.Zone) == "" {
352+
return errors.New("field Zone cannot be empty in request")
353+
}
354+
355+
if fmt.Sprint(req.PrivateNetworkID) == "" {
356+
return errors.New("field PrivateNetworkID cannot be empty in request")
357+
}
358+
359+
scwReq := &scw.ScalewayRequest{
360+
Method: "DELETE",
361+
Path: "/vpc/v1/zones/" + fmt.Sprint(req.Zone) + "/private-networks/" + fmt.Sprint(req.PrivateNetworkID) + "",
362+
Headers: http.Header{},
363+
}
364+
365+
err = s.client.Do(scwReq, nil, opts...)
366+
if err != nil {
367+
return err
368+
}
369+
return nil
370+
}

0 commit comments

Comments
 (0)