Skip to content

Commit

Permalink
[feat] api get listener and pool by id
Browse files Browse the repository at this point in the history
  • Loading branch information
cuongpiger committed Oct 10, 2024
1 parent 7898cef commit 3735290
Show file tree
Hide file tree
Showing 10 changed files with 140 additions and 3 deletions.
4 changes: 1 addition & 3 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
module github.com/vngcloud/vngcloud-go-sdk/v2

go 1.22

toolchain go1.22.0
go 1.22.2

require (
github.com/cuongpiger/joat v1.0.14
Expand Down
19 changes: 19 additions & 0 deletions test/lb_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -546,3 +546,22 @@ func TestUpdatePoolSuccess(t *ltesting.T) {
t.Log("Result: ", sdkerr)
t.Log("PASS")
}

func TestGetPoolByIdSuccess(y *ltesting.T) {
vngcloud := validSdkConfig()
opt := lslbv2.NewGetPoolByIdRequest("lb-12fd81bd-94a0-4741-b259-abfe1541bd6e", "pool-7e018220-e4e7-4ec9-9e52-b3c3b0e8c4fe")
pool, _ := vngcloud.VLBGateway().V2().LoadBalancerService().GetPoolById(opt)

y.Log("Result: ", pool)
y.Log("PASS")
}


func TestGetListenerByIdSuccess(t *ltesting.T) {
vngcloud := validSdkConfig()
opt := lslbv2.NewGetListenerByIdRequest("lb-12fd81bd-94a0-4741-b259-abfe1541bd6e", "lis-7a84c93f-f37b-46ea-99b2-7b49c66e2231")
listener, _ := vngcloud.VLBGateway().V2().LoadBalancerService().GetListenerById(opt)

t.Log("Result: ", listener)
t.Log("PASS")
}
2 changes: 2 additions & 0 deletions vngcloud/services/loadbalancer/iloadbalancer.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ type ILoadBalancerServiceV2 interface {
ListTags(popts lslbSvcV2.IListTagsRequest) (*lsentity.ListTags, lserr.IError)
CreateTags(popts lslbSvcV2.ICreateTagsRequest) lserr.IError
UpdateTags(popts lslbSvcV2.IUpdateTagsRequest) lserr.IError
GetPoolById(popts lslbSvcV2.IGetPoolByIdRequest) (*lsentity.Pool, lserr.IError)
GetListenerById(popts lslbSvcV2.IGetListenerByIdRequest) (*lsentity.Listener, lserr.IError)
}

type ILoadBalancerServiceInternal interface {
Expand Down
12 changes: 12 additions & 0 deletions vngcloud/services/loadbalancer/v2/irequest.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,3 +160,15 @@ type IUpdateTagsRequest interface {
WithTags(ptags ...string) IUpdateTagsRequest
ToMap() map[string]interface{}
}

type IGetPoolByIdRequest interface {
GetLoadBalancerId() string
GetPoolId() string
ParseUserAgent() string
}

type IGetListenerByIdRequest interface {
GetLoadBalancerId() string
GetListenerId() string
ParseUserAgent() string
}
14 changes: 14 additions & 0 deletions vngcloud/services/loadbalancer/v2/listener_request.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,14 @@ func NewDeleteListenerByIdRequest(plbId, plistenerId string) IDeleteListenerById
return opts
}

func NewGetListenerByIdRequest(plbId, plistenerId string) IGetListenerByIdRequest {
opts := new(GetListenerByIdRequest)
opts.LoadBalancerId = plbId
opts.ListenerId = plistenerId

return opts
}

type ListenerProtocol string

type CreateListenerRequest struct {
Expand Down Expand Up @@ -93,6 +101,12 @@ type DeleteListenerByIdRequest struct {
lscommon.UserAgent
}

type GetListenerByIdRequest struct {
lscommon.LoadBalancerCommon
lscommon.ListenerCommon
lscommon.UserAgent
}

func (s *CreateListenerRequest) ToRequestBody() interface{} {
if s == nil {
return nil
Expand Down
8 changes: 8 additions & 0 deletions vngcloud/services/loadbalancer/v2/listener_response.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ type ListListenersByLoadBalancerIdResponse struct {
Data []Listener `json:"data"`
}

type GetListenerByIdResponse struct {
Data Listener `json:"data"`
}

type Listener struct {
UUID string `json:"uuid"`
Name string `json:"name"`
Expand Down Expand Up @@ -71,3 +75,7 @@ func (s *Listener) toEntityListener() *lsentity.Listener {
ProgressStatus: s.ProgressStatus,
}
}

func (s *GetListenerByIdResponse) ToEntityListener() *lsentity.Listener {
return s.Data.toEntityListener()
}
44 changes: 44 additions & 0 deletions vngcloud/services/loadbalancer/v2/loadbalancer.go
Original file line number Diff line number Diff line change
Expand Up @@ -278,3 +278,47 @@ func (s *LoadBalancerServiceV2) DeleteLoadBalancerById(popts IDeleteLoadBalancer

return nil
}

func (s *LoadBalancerServiceV2) GetPoolById(popts IGetPoolByIdRequest) (*lsentity.Pool, lserr.IError) {
url := getPoolByIdUrl(s.VLBClient, popts)
resp := new(GetPoolByIdResponse)
errResp := lserr.NewErrorResponse(lserr.NormalErrorType)
req := lsclient.NewRequest().
WithHeader("User-Agent", popts.ParseUserAgent()).
WithOkCodes(200).
WithJsonResponse(resp).
WithJsonError(errResp)

if _, sdkErr := s.VLBClient.Get(url, req); sdkErr != nil {
return nil, lserr.SdkErrorHandler(sdkErr, errResp,
lserr.WithErrorLoadBalancerNotFound(errResp),
lserr.WithErrorPoolNotFound(errResp)).
WithKVparameters(
"loadBalancerId", popts.GetLoadBalancerId(),
"poolId", popts.GetPoolId())
}

return resp.ToEntityPool(), nil
}

func (s *LoadBalancerServiceV2) GetListenerById(popts IGetListenerByIdRequest) (*lsentity.Listener, lserr.IError) {
url := getListenerByIdUrl(s.VLBClient, popts)
resp := new(GetListenerByIdResponse)
errResp := lserr.NewErrorResponse(lserr.NormalErrorType)
req := lsclient.NewRequest().
WithHeader("User-Agent", popts.ParseUserAgent()).
WithOkCodes(200).
WithJsonResponse(resp).
WithJsonError(errResp)

if _, sdkErr := s.VLBClient.Get(url, req); sdkErr != nil {
return nil, lserr.SdkErrorHandler(sdkErr, errResp,
lserr.WithErrorLoadBalancerNotFound(errResp),
lserr.WithErrorListenerNotFound(errResp)).
WithKVparameters(
"loadBalancerId", popts.GetLoadBalancerId(),
"listenerId", popts.GetListenerId())
}

return resp.ToEntityListener(), nil
}
14 changes: 14 additions & 0 deletions vngcloud/services/loadbalancer/v2/pool_requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,14 @@ func NewMember(pname, pipAddress string, pport int, pmonitorPort int) IMemberReq
}
}

func NewGetPoolByIdRequest(plbId, ppoolId string) IGetPoolByIdRequest {
opts := new(GetPoolByIdRequest)
opts.LoadBalancerId = plbId
opts.PoolId = ppoolId

return opts
}

type (
PoolAlgorithm string
PoolProtocol string
Expand Down Expand Up @@ -153,6 +161,12 @@ type DeletePoolByIdRequest struct {
lscommon.PoolCommon
}

type GetPoolByIdRequest struct {
lscommon.UserAgent
lscommon.LoadBalancerCommon
lscommon.PoolCommon
}

type HealthMonitor struct {
HealthCheckProtocol HealthCheckProtocol `json:"healthCheckProtocol"`
HealthyThreshold int `json:"healthyThreshold"`
Expand Down
8 changes: 8 additions & 0 deletions vngcloud/services/loadbalancer/v2/pool_response.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ type ListPoolMembersResponse struct {
Data []PoolMember `json:"data"`
}

type GetPoolByIdResponse struct {
Data Pool `json:"data"`
}

type Pool struct {
UUID string `json:"uuid"`
Name string `json:"name"`
Expand Down Expand Up @@ -108,3 +112,7 @@ func (s *ListPoolMembersResponse) ToEntityListMembers() *lsentity.ListMembers {
}
return listMembers
}

func (s *GetPoolByIdResponse) ToEntityPool() *lsentity.Pool {
return s.Data.toEntityPool()
}
18 changes: 18 additions & 0 deletions vngcloud/services/loadbalancer/v2/url.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,3 +142,21 @@ func updateTagsUrl(psc lsclient.IServiceClient, popts IUpdateTagsRequest) string
"resource",
popts.GetLoadBalancerId())
}

func getPoolByIdUrl(psc lsclient.IServiceClient, popts IGetPoolByIdRequest) string {
return psc.ServiceURL(
psc.GetProjectId(),
"loadBalancers",
popts.GetLoadBalancerId(),
"pools",
popts.GetPoolId())
}

func getListenerByIdUrl(psc lsclient.IServiceClient, popts IGetListenerByIdRequest) string {
return psc.ServiceURL(
psc.GetProjectId(),
"loadBalancers",
popts.GetLoadBalancerId(),
"listeners",
popts.GetListenerId())
}

0 comments on commit 3735290

Please sign in to comment.