@@ -151,6 +151,42 @@ func (enum *ListServerEventsRequestOrderBy) UnmarshalJSON(data []byte) error {
151151 return nil
152152}
153153
154+ type ListServerPrivateNetworksRequestOrderBy string
155+
156+ const (
157+ // ListServerPrivateNetworksRequestOrderByCreatedAtAsc is [insert doc].
158+ ListServerPrivateNetworksRequestOrderByCreatedAtAsc = ListServerPrivateNetworksRequestOrderBy ("created_at_asc" )
159+ // ListServerPrivateNetworksRequestOrderByCreatedAtDesc is [insert doc].
160+ ListServerPrivateNetworksRequestOrderByCreatedAtDesc = ListServerPrivateNetworksRequestOrderBy ("created_at_desc" )
161+ // ListServerPrivateNetworksRequestOrderByUpdatedAtAsc is [insert doc].
162+ ListServerPrivateNetworksRequestOrderByUpdatedAtAsc = ListServerPrivateNetworksRequestOrderBy ("updated_at_asc" )
163+ // ListServerPrivateNetworksRequestOrderByUpdatedAtDesc is [insert doc].
164+ ListServerPrivateNetworksRequestOrderByUpdatedAtDesc = ListServerPrivateNetworksRequestOrderBy ("updated_at_desc" )
165+ )
166+
167+ func (enum ListServerPrivateNetworksRequestOrderBy ) String () string {
168+ if enum == "" {
169+ // return default value if empty
170+ return "created_at_asc"
171+ }
172+ return string (enum )
173+ }
174+
175+ func (enum ListServerPrivateNetworksRequestOrderBy ) MarshalJSON () ([]byte , error ) {
176+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
177+ }
178+
179+ func (enum * ListServerPrivateNetworksRequestOrderBy ) UnmarshalJSON (data []byte ) error {
180+ tmp := ""
181+
182+ if err := json .Unmarshal (data , & tmp ); err != nil {
183+ return err
184+ }
185+
186+ * enum = ListServerPrivateNetworksRequestOrderBy (ListServerPrivateNetworksRequestOrderBy (tmp ).String ())
187+ return nil
188+ }
189+
154190type ListServersRequestOrderBy string
155191
156192const (
@@ -427,6 +463,46 @@ func (enum *ServerPingStatus) UnmarshalJSON(data []byte) error {
427463 return nil
428464}
429465
466+ type ServerPrivateNetworkStatus string
467+
468+ const (
469+ // ServerPrivateNetworkStatusUnknown is [insert doc].
470+ ServerPrivateNetworkStatusUnknown = ServerPrivateNetworkStatus ("unknown" )
471+ // ServerPrivateNetworkStatusAttaching is [insert doc].
472+ ServerPrivateNetworkStatusAttaching = ServerPrivateNetworkStatus ("attaching" )
473+ // ServerPrivateNetworkStatusAttached is [insert doc].
474+ ServerPrivateNetworkStatusAttached = ServerPrivateNetworkStatus ("attached" )
475+ // ServerPrivateNetworkStatusError is [insert doc].
476+ ServerPrivateNetworkStatusError = ServerPrivateNetworkStatus ("error" )
477+ // ServerPrivateNetworkStatusDetaching is [insert doc].
478+ ServerPrivateNetworkStatusDetaching = ServerPrivateNetworkStatus ("detaching" )
479+ // ServerPrivateNetworkStatusLocked is [insert doc].
480+ ServerPrivateNetworkStatusLocked = ServerPrivateNetworkStatus ("locked" )
481+ )
482+
483+ func (enum ServerPrivateNetworkStatus ) String () string {
484+ if enum == "" {
485+ // return default value if empty
486+ return "unknown"
487+ }
488+ return string (enum )
489+ }
490+
491+ func (enum ServerPrivateNetworkStatus ) MarshalJSON () ([]byte , error ) {
492+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
493+ }
494+
495+ func (enum * ServerPrivateNetworkStatus ) UnmarshalJSON (data []byte ) error {
496+ tmp := ""
497+
498+ if err := json .Unmarshal (data , & tmp ); err != nil {
499+ return err
500+ }
501+
502+ * enum = ServerPrivateNetworkStatus (ServerPrivateNetworkStatus (tmp ).String ())
503+ return nil
504+ }
505+
430506type ServerStatus string
431507
432508const (
@@ -619,6 +695,12 @@ type ListServerEventsResponse struct {
619695 Events []* ServerEvent `json:"events"`
620696}
621697
698+ type ListServerPrivateNetworksResponse struct {
699+ ServerPrivateNetworks []* ServerPrivateNetwork `json:"server_private_networks"`
700+
701+ TotalCount uint32 `json:"total_count"`
702+ }
703+
622704// ListServersResponse: list servers response
623705type ListServersResponse struct {
624706 // TotalCount: total count of matching servers
@@ -869,6 +951,28 @@ type ServerOption struct {
869951 ExpiresAt * time.Time `json:"expires_at"`
870952}
871953
954+ // ServerPrivateNetwork: server private network
955+ type ServerPrivateNetwork struct {
956+ // ID: the private network ID
957+ ID string `json:"id"`
958+ // ProjectID: the private network project ID
959+ ProjectID string `json:"project_id"`
960+ // ServerID: the server ID
961+ ServerID string `json:"server_id"`
962+ // PrivateNetworkID: the private network ID
963+ PrivateNetworkID string `json:"private_network_id"`
964+ // Vlan: the VLAN ID associated to the private network
965+ Vlan * uint32 `json:"vlan"`
966+ // Status: the configuration status of the private network
967+ //
968+ // Default value: unknown
969+ Status ServerPrivateNetworkStatus `json:"status"`
970+ // CreatedAt: the private network creation date
971+ CreatedAt * time.Time `json:"created_at"`
972+ // UpdatedAt: the date the private network was last modified
973+ UpdatedAt * time.Time `json:"updated_at"`
974+ }
975+
872976// ServerRescueServer: server. rescue server
873977type ServerRescueServer struct {
874978 // User: rescue user name
@@ -877,6 +981,10 @@ type ServerRescueServer struct {
877981 Password string `json:"password"`
878982}
879983
984+ type SetServerPrivateNetworksResponse struct {
985+ ServerPrivateNetworks []* ServerPrivateNetwork `json:"server_private_networks"`
986+ }
987+
880988// Setting: setting
881989type Setting struct {
882990 // ID: ID of the setting
@@ -2200,6 +2308,213 @@ func (s *API) GetOS(req *GetOSRequest, opts ...scw.RequestOption) (*OS, error) {
22002308 return & resp , nil
22012309}
22022310
2311+ type AddServerPrivateNetworkRequest struct {
2312+ // Zone:
2313+ //
2314+ // Zone to target. If none is passed will use default zone from the config
2315+ Zone scw.Zone `json:"-"`
2316+ // ServerID: the ID of the server
2317+ ServerID string `json:"-"`
2318+ // PrivateNetworkID: the ID of the private network
2319+ PrivateNetworkID string `json:"private_network_id"`
2320+ }
2321+
2322+ // AddServerPrivateNetwork: add a server to a private network
2323+ func (s * API ) AddServerPrivateNetwork (req * AddServerPrivateNetworkRequest , opts ... scw.RequestOption ) (* ServerPrivateNetwork , error ) {
2324+ var err error
2325+
2326+ if req .Zone == "" {
2327+ defaultZone , _ := s .client .GetDefaultZone ()
2328+ req .Zone = defaultZone
2329+ }
2330+
2331+ if fmt .Sprint (req .Zone ) == "" {
2332+ return nil , errors .New ("field Zone cannot be empty in request" )
2333+ }
2334+
2335+ if fmt .Sprint (req .ServerID ) == "" {
2336+ return nil , errors .New ("field ServerID cannot be empty in request" )
2337+ }
2338+
2339+ scwReq := & scw.ScalewayRequest {
2340+ Method : "POST" ,
2341+ Path : "/baremetal/v1/zones/" + fmt .Sprint (req .Zone ) + "/servers/" + fmt .Sprint (req .ServerID ) + "/private-networks" ,
2342+ Headers : http.Header {},
2343+ }
2344+
2345+ err = scwReq .SetBody (req )
2346+ if err != nil {
2347+ return nil , err
2348+ }
2349+
2350+ var resp ServerPrivateNetwork
2351+
2352+ err = s .client .Do (scwReq , & resp , opts ... )
2353+ if err != nil {
2354+ return nil , err
2355+ }
2356+ return & resp , nil
2357+ }
2358+
2359+ type SetServerPrivateNetworksRequest struct {
2360+ // Zone:
2361+ //
2362+ // Zone to target. If none is passed will use default zone from the config
2363+ Zone scw.Zone `json:"-"`
2364+ // ServerID: the ID of the server
2365+ ServerID string `json:"-"`
2366+ // PrivateNetworkIDs: the IDs of the private networks
2367+ PrivateNetworkIDs []string `json:"private_network_ids"`
2368+ }
2369+
2370+ // SetServerPrivateNetworks: set multiple private networks on a server
2371+ func (s * API ) SetServerPrivateNetworks (req * SetServerPrivateNetworksRequest , opts ... scw.RequestOption ) (* SetServerPrivateNetworksResponse , error ) {
2372+ var err error
2373+
2374+ if req .Zone == "" {
2375+ defaultZone , _ := s .client .GetDefaultZone ()
2376+ req .Zone = defaultZone
2377+ }
2378+
2379+ if fmt .Sprint (req .Zone ) == "" {
2380+ return nil , errors .New ("field Zone cannot be empty in request" )
2381+ }
2382+
2383+ if fmt .Sprint (req .ServerID ) == "" {
2384+ return nil , errors .New ("field ServerID cannot be empty in request" )
2385+ }
2386+
2387+ scwReq := & scw.ScalewayRequest {
2388+ Method : "PUT" ,
2389+ Path : "/baremetal/v1/zones/" + fmt .Sprint (req .Zone ) + "/servers/" + fmt .Sprint (req .ServerID ) + "/private-networks" ,
2390+ Headers : http.Header {},
2391+ }
2392+
2393+ err = scwReq .SetBody (req )
2394+ if err != nil {
2395+ return nil , err
2396+ }
2397+
2398+ var resp SetServerPrivateNetworksResponse
2399+
2400+ err = s .client .Do (scwReq , & resp , opts ... )
2401+ if err != nil {
2402+ return nil , err
2403+ }
2404+ return & resp , nil
2405+ }
2406+
2407+ type ListServerPrivateNetworksRequest struct {
2408+ // Zone:
2409+ //
2410+ // Zone to target. If none is passed will use default zone from the config
2411+ Zone scw.Zone `json:"-"`
2412+ // OrderBy: the sort order for the returned private networks
2413+ //
2414+ // Default value: created_at_asc
2415+ OrderBy ListServerPrivateNetworksRequestOrderBy `json:"-"`
2416+ // Page: the page number for the returned private networks
2417+ Page * int32 `json:"-"`
2418+ // PageSize: the maximum number of private networks per page
2419+ PageSize * uint32 `json:"-"`
2420+ // ServerID: filter private networks by server ID
2421+ ServerID * string `json:"-"`
2422+ // PrivateNetworkID: filter private networks by private network ID
2423+ PrivateNetworkID * string `json:"-"`
2424+ // OrganizationID: filter private networks by organization ID
2425+ OrganizationID * string `json:"-"`
2426+ // ProjectID: filter private networks by project ID
2427+ ProjectID * string `json:"-"`
2428+ }
2429+
2430+ // ListServerPrivateNetworks: list the private networks of a server
2431+ func (s * API ) ListServerPrivateNetworks (req * ListServerPrivateNetworksRequest , opts ... scw.RequestOption ) (* ListServerPrivateNetworksResponse , error ) {
2432+ var err error
2433+
2434+ if req .Zone == "" {
2435+ defaultZone , _ := s .client .GetDefaultZone ()
2436+ req .Zone = defaultZone
2437+ }
2438+
2439+ defaultPageSize , exist := s .client .GetDefaultPageSize ()
2440+ if (req .PageSize == nil || * req .PageSize == 0 ) && exist {
2441+ req .PageSize = & defaultPageSize
2442+ }
2443+
2444+ query := url.Values {}
2445+ parameter .AddToQuery (query , "order_by" , req .OrderBy )
2446+ parameter .AddToQuery (query , "page" , req .Page )
2447+ parameter .AddToQuery (query , "page_size" , req .PageSize )
2448+ parameter .AddToQuery (query , "server_id" , req .ServerID )
2449+ parameter .AddToQuery (query , "private_network_id" , req .PrivateNetworkID )
2450+ parameter .AddToQuery (query , "organization_id" , req .OrganizationID )
2451+ parameter .AddToQuery (query , "project_id" , req .ProjectID )
2452+
2453+ if fmt .Sprint (req .Zone ) == "" {
2454+ return nil , errors .New ("field Zone cannot be empty in request" )
2455+ }
2456+
2457+ scwReq := & scw.ScalewayRequest {
2458+ Method : "GET" ,
2459+ Path : "/baremetal/v1/zones/" + fmt .Sprint (req .Zone ) + "/server-private-networks" ,
2460+ Query : query ,
2461+ Headers : http.Header {},
2462+ }
2463+
2464+ var resp ListServerPrivateNetworksResponse
2465+
2466+ err = s .client .Do (scwReq , & resp , opts ... )
2467+ if err != nil {
2468+ return nil , err
2469+ }
2470+ return & resp , nil
2471+ }
2472+
2473+ type DeleteServerPrivateNetworkRequest struct {
2474+ // Zone:
2475+ //
2476+ // Zone to target. If none is passed will use default zone from the config
2477+ Zone scw.Zone `json:"-"`
2478+ // ServerID: the ID of the server
2479+ ServerID string `json:"-"`
2480+ // PrivateNetworkID: the ID of the private network
2481+ PrivateNetworkID string `json:"-"`
2482+ }
2483+
2484+ // DeleteServerPrivateNetwork: delete a private network
2485+ func (s * API ) DeleteServerPrivateNetwork (req * DeleteServerPrivateNetworkRequest , opts ... scw.RequestOption ) error {
2486+ var err error
2487+
2488+ if req .Zone == "" {
2489+ defaultZone , _ := s .client .GetDefaultZone ()
2490+ req .Zone = defaultZone
2491+ }
2492+
2493+ if fmt .Sprint (req .Zone ) == "" {
2494+ return errors .New ("field Zone cannot be empty in request" )
2495+ }
2496+
2497+ if fmt .Sprint (req .ServerID ) == "" {
2498+ return errors .New ("field ServerID cannot be empty in request" )
2499+ }
2500+
2501+ if fmt .Sprint (req .PrivateNetworkID ) == "" {
2502+ return errors .New ("field PrivateNetworkID cannot be empty in request" )
2503+ }
2504+
2505+ scwReq := & scw.ScalewayRequest {
2506+ Method : "DELETE" ,
2507+ Path : "/baremetal/v1/zones/" + fmt .Sprint (req .Zone ) + "/servers/" + fmt .Sprint (req .ServerID ) + "/private-networks/" + fmt .Sprint (req .PrivateNetworkID ) + "" ,
2508+ Headers : http.Header {},
2509+ }
2510+
2511+ err = s .client .Do (scwReq , nil , opts ... )
2512+ if err != nil {
2513+ return err
2514+ }
2515+ return nil
2516+ }
2517+
22032518// UnsafeGetTotalCount should not be used
22042519// Internal usage only
22052520func (r * ListServersResponse ) UnsafeGetTotalCount () uint32 {
@@ -2313,3 +2628,22 @@ func (r *ListOSResponse) UnsafeAppend(res interface{}) (uint32, error) {
23132628 r .TotalCount += uint32 (len (results .Os ))
23142629 return uint32 (len (results .Os )), nil
23152630}
2631+
2632+ // UnsafeGetTotalCount should not be used
2633+ // Internal usage only
2634+ func (r * ListServerPrivateNetworksResponse ) UnsafeGetTotalCount () uint32 {
2635+ return r .TotalCount
2636+ }
2637+
2638+ // UnsafeAppend should not be used
2639+ // Internal usage only
2640+ func (r * ListServerPrivateNetworksResponse ) UnsafeAppend (res interface {}) (uint32 , error ) {
2641+ results , ok := res .(* ListServerPrivateNetworksResponse )
2642+ if ! ok {
2643+ return 0 , errors .New ("%T type cannot be appended to type %T" , res , r )
2644+ }
2645+
2646+ r .ServerPrivateNetworks = append (r .ServerPrivateNetworks , results .ServerPrivateNetworks ... )
2647+ r .TotalCount += uint32 (len (results .ServerPrivateNetworks ))
2648+ return uint32 (len (results .ServerPrivateNetworks )), nil
2649+ }
0 commit comments