@@ -591,6 +591,38 @@ func (enum *ListLbsRequestOrderBy) UnmarshalJSON(data []byte) error {
591591 return nil
592592}
593593
594+ type ListPrivateNetworksRequestOrderBy string
595+
596+ const (
597+ // ListPrivateNetworksRequestOrderByCreatedAtAsc is [insert doc].
598+ ListPrivateNetworksRequestOrderByCreatedAtAsc = ListPrivateNetworksRequestOrderBy ("created_at_asc" )
599+ // ListPrivateNetworksRequestOrderByCreatedAtDesc is [insert doc].
600+ ListPrivateNetworksRequestOrderByCreatedAtDesc = ListPrivateNetworksRequestOrderBy ("created_at_desc" )
601+ )
602+
603+ func (enum ListPrivateNetworksRequestOrderBy ) String () string {
604+ if enum == "" {
605+ // return default value if empty
606+ return "created_at_asc"
607+ }
608+ return string (enum )
609+ }
610+
611+ func (enum ListPrivateNetworksRequestOrderBy ) MarshalJSON () ([]byte , error ) {
612+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
613+ }
614+
615+ func (enum * ListPrivateNetworksRequestOrderBy ) UnmarshalJSON (data []byte ) error {
616+ tmp := ""
617+
618+ if err := json .Unmarshal (data , & tmp ); err != nil {
619+ return err
620+ }
621+
622+ * enum = ListPrivateNetworksRequestOrderBy (ListPrivateNetworksRequestOrderBy (tmp ).String ())
623+ return nil
624+ }
625+
594626type ListSubscriberRequestOrderBy string
595627
596628const (
@@ -659,6 +691,42 @@ func (enum *OnMarkedDownAction) UnmarshalJSON(data []byte) error {
659691 return nil
660692}
661693
694+ type PrivateNetworkStatus string
695+
696+ const (
697+ // PrivateNetworkStatusUnknown is [insert doc].
698+ PrivateNetworkStatusUnknown = PrivateNetworkStatus ("unknown" )
699+ // PrivateNetworkStatusReady is [insert doc].
700+ PrivateNetworkStatusReady = PrivateNetworkStatus ("ready" )
701+ // PrivateNetworkStatusPending is [insert doc].
702+ PrivateNetworkStatusPending = PrivateNetworkStatus ("pending" )
703+ // PrivateNetworkStatusError is [insert doc].
704+ PrivateNetworkStatusError = PrivateNetworkStatus ("error" )
705+ )
706+
707+ func (enum PrivateNetworkStatus ) String () string {
708+ if enum == "" {
709+ // return default value if empty
710+ return "unknown"
711+ }
712+ return string (enum )
713+ }
714+
715+ func (enum PrivateNetworkStatus ) MarshalJSON () ([]byte , error ) {
716+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
717+ }
718+
719+ func (enum * PrivateNetworkStatus ) UnmarshalJSON (data []byte ) error {
720+ tmp := ""
721+
722+ if err := json .Unmarshal (data , & tmp ); err != nil {
723+ return err
724+ }
725+
726+ * enum = PrivateNetworkStatus (PrivateNetworkStatus (tmp ).String ())
727+ return nil
728+ }
729+
662730type Protocol string
663731
664732const (
@@ -1276,6 +1344,12 @@ type ListIPsResponse struct {
12761344 TotalCount uint32 `json:"total_count"`
12771345}
12781346
1347+ type ListLbPrivateNetworksResponse struct {
1348+ PrivateNetwork []* PrivateNetwork `json:"private_network"`
1349+
1350+ TotalCount uint32 `json:"total_count"`
1351+ }
1352+
12791353type ListLbTypesResponse struct {
12801354 LbTypes []* LbType `json:"lb_types"`
12811355
@@ -1297,6 +1371,20 @@ type ListSubscriberResponse struct {
12971371 TotalCount uint32 `json:"total_count"`
12981372}
12991373
1374+ // PrivateNetwork: private network
1375+ type PrivateNetwork struct {
1376+ // Lb: loadBalancer object
1377+ Lb * Lb `json:"lb"`
1378+ // IPAddress: local ip address of Load Balancer instance
1379+ IPAddress []string `json:"ip_address"`
1380+ // PrivateNetworkID: instance private network id
1381+ PrivateNetworkID string `json:"private_network_id"`
1382+ // Status: status (running, to create...) of private network connection
1383+ //
1384+ // Default value: unknown
1385+ Status PrivateNetworkStatus `json:"status"`
1386+ }
1387+
13001388// Subscriber: subscriber
13011389type Subscriber struct {
13021390 // ID: subscriber ID
@@ -3875,3 +3963,177 @@ func (s *API) UnsubscribeFromLb(req *UnsubscribeFromLbRequest, opts ...scw.Reque
38753963 }
38763964 return & resp , nil
38773965}
3966+
3967+ type ListLbPrivateNetworksRequest struct {
3968+ Region scw.Region `json:"-"`
3969+
3970+ LbID string `json:"-"`
3971+ // OrderBy:
3972+ //
3973+ // Default value: created_at_asc
3974+ OrderBy ListPrivateNetworksRequestOrderBy `json:"-"`
3975+
3976+ PageSize * uint32 `json:"-"`
3977+
3978+ Page * int32 `json:"-"`
3979+ }
3980+
3981+ // ListLbPrivateNetworks: bETA - List attached private network of Load Balancer
3982+ func (s * API ) ListLbPrivateNetworks (req * ListLbPrivateNetworksRequest , opts ... scw.RequestOption ) (* ListLbPrivateNetworksResponse , error ) {
3983+ var err error
3984+
3985+ if req .Region == "" {
3986+ defaultRegion , _ := s .client .GetDefaultRegion ()
3987+ req .Region = defaultRegion
3988+ }
3989+
3990+ defaultPageSize , exist := s .client .GetDefaultPageSize ()
3991+ if (req .PageSize == nil || * req .PageSize == 0 ) && exist {
3992+ req .PageSize = & defaultPageSize
3993+ }
3994+
3995+ query := url.Values {}
3996+ parameter .AddToQuery (query , "order_by" , req .OrderBy )
3997+ parameter .AddToQuery (query , "page_size" , req .PageSize )
3998+ parameter .AddToQuery (query , "page" , req .Page )
3999+
4000+ if fmt .Sprint (req .Region ) == "" {
4001+ return nil , errors .New ("field Region cannot be empty in request" )
4002+ }
4003+
4004+ if fmt .Sprint (req .LbID ) == "" {
4005+ return nil , errors .New ("field LbID cannot be empty in request" )
4006+ }
4007+
4008+ scwReq := & scw.ScalewayRequest {
4009+ Method : "GET" ,
4010+ Path : "/lb/v1/regions/" + fmt .Sprint (req .Region ) + "/lbs/" + fmt .Sprint (req .LbID ) + "/private-networks" ,
4011+ Query : query ,
4012+ Headers : http.Header {},
4013+ }
4014+
4015+ var resp ListLbPrivateNetworksResponse
4016+
4017+ err = s .client .Do (scwReq , & resp , opts ... )
4018+ if err != nil {
4019+ return nil , err
4020+ }
4021+ return & resp , nil
4022+ }
4023+
4024+ // UnsafeGetTotalCount should not be used
4025+ // Internal usage only
4026+ func (r * ListLbPrivateNetworksResponse ) UnsafeGetTotalCount () uint32 {
4027+ return r .TotalCount
4028+ }
4029+
4030+ // UnsafeAppend should not be used
4031+ // Internal usage only
4032+ func (r * ListLbPrivateNetworksResponse ) UnsafeAppend (res interface {}) (uint32 , error ) {
4033+ results , ok := res .(* ListLbPrivateNetworksResponse )
4034+ if ! ok {
4035+ return 0 , errors .New ("%T type cannot be appended to type %T" , res , r )
4036+ }
4037+
4038+ r .PrivateNetwork = append (r .PrivateNetwork , results .PrivateNetwork ... )
4039+ r .TotalCount += uint32 (len (results .PrivateNetwork ))
4040+ return uint32 (len (results .PrivateNetwork )), nil
4041+ }
4042+
4043+ type AttachPrivateNetworkRequest struct {
4044+ Region scw.Region `json:"-"`
4045+ // LbID: load Balancer ID
4046+ LbID string `json:"-"`
4047+ // PrivateNetworkID: set your instance private network id
4048+ PrivateNetworkID string `json:"-"`
4049+ // IPAddress: define two local ip address of your choice for each Load Balancer instance
4050+ IPAddress []string `json:"ip_address"`
4051+ }
4052+
4053+ // AttachPrivateNetwork: bETA - Add Load Balancer on instance private network
4054+ func (s * API ) AttachPrivateNetwork (req * AttachPrivateNetworkRequest , opts ... scw.RequestOption ) (* PrivateNetwork , error ) {
4055+ var err error
4056+
4057+ if req .Region == "" {
4058+ defaultRegion , _ := s .client .GetDefaultRegion ()
4059+ req .Region = defaultRegion
4060+ }
4061+
4062+ if fmt .Sprint (req .Region ) == "" {
4063+ return nil , errors .New ("field Region cannot be empty in request" )
4064+ }
4065+
4066+ if fmt .Sprint (req .LbID ) == "" {
4067+ return nil , errors .New ("field LbID cannot be empty in request" )
4068+ }
4069+
4070+ if fmt .Sprint (req .PrivateNetworkID ) == "" {
4071+ return nil , errors .New ("field PrivateNetworkID cannot be empty in request" )
4072+ }
4073+
4074+ scwReq := & scw.ScalewayRequest {
4075+ Method : "POST" ,
4076+ Path : "/lb/v1/regions/" + fmt .Sprint (req .Region ) + "/lbs/" + fmt .Sprint (req .LbID ) + "/private-networks/" + fmt .Sprint (req .PrivateNetworkID ) + "/attach" ,
4077+ Headers : http.Header {},
4078+ }
4079+
4080+ err = scwReq .SetBody (req )
4081+ if err != nil {
4082+ return nil , err
4083+ }
4084+
4085+ var resp PrivateNetwork
4086+
4087+ err = s .client .Do (scwReq , & resp , opts ... )
4088+ if err != nil {
4089+ return nil , err
4090+ }
4091+ return & resp , nil
4092+ }
4093+
4094+ type DetachPrivateNetworkRequest struct {
4095+ Region scw.Region `json:"-"`
4096+
4097+ PrivateNetworkID string `json:"-"`
4098+
4099+ LbID string `json:"-"`
4100+ }
4101+
4102+ // DetachPrivateNetwork: bETA - Remove Load Balancer of private network
4103+ func (s * API ) DetachPrivateNetwork (req * DetachPrivateNetworkRequest , opts ... scw.RequestOption ) error {
4104+ var err error
4105+
4106+ if req .Region == "" {
4107+ defaultRegion , _ := s .client .GetDefaultRegion ()
4108+ req .Region = defaultRegion
4109+ }
4110+
4111+ if fmt .Sprint (req .Region ) == "" {
4112+ return errors .New ("field Region cannot be empty in request" )
4113+ }
4114+
4115+ if fmt .Sprint (req .PrivateNetworkID ) == "" {
4116+ return errors .New ("field PrivateNetworkID cannot be empty in request" )
4117+ }
4118+
4119+ if fmt .Sprint (req .LbID ) == "" {
4120+ return errors .New ("field LbID cannot be empty in request" )
4121+ }
4122+
4123+ scwReq := & scw.ScalewayRequest {
4124+ Method : "POST" ,
4125+ Path : "/lb/v1/regions/" + fmt .Sprint (req .Region ) + "/lbs/" + fmt .Sprint (req .LbID ) + "/private-networks/" + fmt .Sprint (req .PrivateNetworkID ) + "/detach" ,
4126+ Headers : http.Header {},
4127+ }
4128+
4129+ err = scwReq .SetBody (req )
4130+ if err != nil {
4131+ return err
4132+ }
4133+
4134+ err = s .client .Do (scwReq , nil , opts ... )
4135+ if err != nil {
4136+ return err
4137+ }
4138+ return nil
4139+ }
0 commit comments