From af0aaa5a156f02e6b46e997a56402b4f98481335 Mon Sep 17 00:00:00 2001 From: andrew Date: Mon, 23 Dec 2024 10:35:29 +0700 Subject: [PATCH 01/13] =?UTF-8?q?=F0=9F=8C=B1=20add:=20glb=20module,=20lis?= =?UTF-8?q?t=20glb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/client_config.go | 27 +- test/identity_test.go | 3 +- test/lb_global_test.go | 32 ++ vngcloud/entity/loadbalancer_global.go | 61 +++ vngcloud/gateway/gateway.go | 11 + vngcloud/gateway/igateway.go | 5 + vngcloud/gateway/vlb_gateway.go | 14 + vngcloud/services/loadbalancer/global/base.go | 17 + vngcloud/services/loadbalancer/global/glb.go | 517 ++++++++++++++++++ .../loadbalancer/global/glb_request.go | 338 ++++++++++++ .../loadbalancer/global/glb_response.go | 195 +++++++ .../services/loadbalancer/global/irequest.go | 267 +++++++++ vngcloud/services/loadbalancer/global/url.go | 254 +++++++++ .../services/loadbalancer/iloadbalancer.go | 42 ++ .../services/loadbalancer/loadbalancer.go | 7 + 15 files changed, 1779 insertions(+), 11 deletions(-) create mode 100644 test/lb_global_test.go create mode 100644 vngcloud/entity/loadbalancer_global.go create mode 100644 vngcloud/services/loadbalancer/global/base.go create mode 100644 vngcloud/services/loadbalancer/global/glb.go create mode 100644 vngcloud/services/loadbalancer/global/glb_request.go create mode 100644 vngcloud/services/loadbalancer/global/glb_response.go create mode 100644 vngcloud/services/loadbalancer/global/irequest.go create mode 100644 vngcloud/services/loadbalancer/global/url.go diff --git a/client/client_config.go b/client/client_config.go index 4dbfed3..3cdffcb 100644 --- a/client/client_config.go +++ b/client/client_config.go @@ -24,20 +24,22 @@ type ( WithVServerEndpoint(pvserverEndpoint string) ISdkConfigure WithVLBEndpoint(pvlbEndpoint string) ISdkConfigure WithVNetworkEndpoint(pvnetworkEndpoint string) ISdkConfigure + WithVLBGlobalEndpoint(pvlbEndpoint string) ISdkConfigure } ) type sdkConfigure struct { - clientId string - clientSecret string - projectId string - zoneId string - userId string - iamEndpoint string - vserverEndpoint string - vlbEndpoint string - vnetworkEndpoint string - userAgent string + clientId string + clientSecret string + projectId string + zoneId string + userId string + iamEndpoint string + vserverEndpoint string + vlbEndpoint string + vlbGlobalEndpoint string + vnetworkEndpoint string + userAgent string } func (s *sdkConfigure) GetClientId() string { @@ -129,3 +131,8 @@ func (s *sdkConfigure) WithVNetworkEndpoint(pvnetworkEndpoint string) ISdkConfig s.vnetworkEndpoint = ljutils.NormalizeURL(pvnetworkEndpoint) return s } + +func (s *sdkConfigure) WithVLBGlobalEndpoint(pvlbEndpoint string) ISdkConfigure { + s.vlbEndpoint = ljutils.NormalizeURL(pvlbEndpoint) + return s +} diff --git a/test/identity_test.go b/test/identity_test.go index c26abd6..f6ac2e7 100644 --- a/test/identity_test.go +++ b/test/identity_test.go @@ -46,7 +46,8 @@ func validSdkConfig() lsclient.IClient { WithVServerEndpoint("https://hcm-3.api.vngcloud.vn/vserver/vserver-gateway"). WithVLBEndpoint("https://hcm-3.api.vngcloud.vn/vserver/vlb-gateway"). WithVNetworkEndpoint("https://vnetwork-hcm03.vngcloud.vn/vnetwork-gateway/vnetwork"). - WithVNetworkEndpoint("https://hcm-3.console.vngcloud.vn/vserver/vnetwork-gateway/vnetwork") + WithVNetworkEndpoint("https://hcm-3.console.vngcloud.vn/vserver/vnetwork-gateway/vnetwork"). + WithVLBGlobalEndpoint("https://glb.console.vngcloud.vn/glb-controller/") return lsclient.NewClient(lctx.TODO()).WithRetryCount(1).WithSleep(10).Configure(sdkConfig) } diff --git a/test/lb_global_test.go b/test/lb_global_test.go new file mode 100644 index 0000000..5fd396b --- /dev/null +++ b/test/lb_global_test.go @@ -0,0 +1,32 @@ +package test + +import ( + ltesting "testing" + + "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/global" +) + +func TestListGlobalLoadBalancerSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewListGlobalLoadBalancersRequest(0, 10) + lbs, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().ListGlobalLoadBalancers(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if lbs == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Logf("Result: %+v", lbs) + for _, lb := range lbs.Items { + t.Logf("LB: %+v", lb) + for _, vip := range lb.Vips { + t.Logf(" - VIP: %+v", vip) + } + for _, domain := range lb.Domains { + t.Logf(" - Domain: %+v", domain) + } + } + t.Log("PASS") +} diff --git a/vngcloud/entity/loadbalancer_global.go b/vngcloud/entity/loadbalancer_global.go new file mode 100644 index 0000000..2fd0b2c --- /dev/null +++ b/vngcloud/entity/loadbalancer_global.go @@ -0,0 +1,61 @@ +package entity + +type GlobalLoadBalancer struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Status string `json:"status"` + Package string `json:"package"` + Type string `json:"type"` + UserId int `json:"userId"` + Vips []*GlobalLoadBalancerVIP `json:"vips"` + Domains []*GlobalLoadBalancerDomain `json:"domains"` +} + +type GlobalLoadBalancerVIP struct { + ID int `json:"id"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt string `json:"deletedAt"` + Address string `json:"address"` + Status string `json:"status"` + Region string `json:"region"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` +} + +type GlobalLoadBalancerDomain struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt string `json:"deletedAt"` + ID int `json:"id"` + Hostname string `json:"hostname"` + Status string `json:"status"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + DNSHostedZoneID string `json:"dnsHostedZoneId"` + DNSServerID string `json:"dnsServerId"` +} + +type ListGlobalLoadBalancers struct { + Items []*GlobalLoadBalancer `json:"items"` + Limit int `json:"limit"` + Total int `json:"total"` + Offset int `json:"offset"` +} + +// type ListGlobalLoadBalancerPackages struct { +// Items []*LoadBalancerPackage +// } + +// type GlobalLoadBalancerPackage struct { +// UUID string +// Name string +// Type string +// ConnectionNumber int +// DataTransfer int +// Mode string +// LbType string +// DisplayLbType string +// } diff --git a/vngcloud/gateway/gateway.go b/vngcloud/gateway/gateway.go index 322b228..507bdaf 100644 --- a/vngcloud/gateway/gateway.go +++ b/vngcloud/gateway/gateway.go @@ -18,6 +18,7 @@ type vlbGateway struct { endpoint string // Hold the endpoint of the vLB service vlbGatewayInternal IVLBGatewayInternal vlbGatewayV2 IVLBGatewayV2 + globalLBGateway IVLBGatewayGlobal } type vnetworkGateway struct { @@ -66,6 +67,11 @@ func NewVLBGateway(plbEndpoint, pserverEndpoint, pprojectId string, phc lsclient WithClient(phc). WithProjectId(pprojectId) + vlbSvcGlobal := lsclient.NewServiceClient(). + WithEndpoint(plbEndpoint + "v1"). + WithClient(phc). + WithProjectId(pprojectId) + vserverSvcV2 := lsclient.NewServiceClient(). WithEndpoint(pserverEndpoint + "v2"). WithClient(phc). @@ -75,6 +81,7 @@ func NewVLBGateway(plbEndpoint, pserverEndpoint, pprojectId string, phc lsclient endpoint: plbEndpoint, vlbGatewayV2: NewVLBGatewayV2(vlbSvcV2, vserverSvcV2), vlbGatewayInternal: NewVLBGatewayInternal(vlbSvcIn), + globalLBGateway: NewVLBGatewayGlobal(vlbSvcGlobal), } } @@ -120,6 +127,10 @@ func (s *vlbGateway) V2() IVLBGatewayV2 { return s.vlbGatewayV2 } +func (s *vlbGateway) Global() IVLBGatewayGlobal { + return s.globalLBGateway +} + func (s *vserverGateway) GetEndpoint() string { return s.endpoint } diff --git a/vngcloud/gateway/igateway.go b/vngcloud/gateway/igateway.go index 04f4413..fdc1089 100644 --- a/vngcloud/gateway/igateway.go +++ b/vngcloud/gateway/igateway.go @@ -47,6 +47,10 @@ type IVLBGatewayV2 interface { LoadBalancerService() lslbSvc.ILoadBalancerServiceV2 } +type IVLBGatewayGlobal interface { + LoadBalancerService() lslbSvc.ILoadBalancerServiceGlobal +} + type IVNetworkGatewayV1 interface { NetworkService() lsnetworkSvc.INetworkServiceV1 } @@ -62,6 +66,7 @@ type IVLBGatewayInternal interface { type IVLBGateway interface { Internal() IVLBGatewayInternal V2() IVLBGatewayV2 + Global() IVLBGatewayGlobal GetEndpoint() string } diff --git a/vngcloud/gateway/vlb_gateway.go b/vngcloud/gateway/vlb_gateway.go index 9b2b0c6..d63873b 100644 --- a/vngcloud/gateway/vlb_gateway.go +++ b/vngcloud/gateway/vlb_gateway.go @@ -13,6 +13,14 @@ type vlbGatewayInternal struct { lbService lslbSvc.ILoadBalancerServiceInternal } +type vlbGatewayGlobal struct { + lbService lslbSvc.ILoadBalancerServiceGlobal +} + +func (s *vlbGatewayGlobal) LoadBalancerService() lslbSvc.ILoadBalancerServiceGlobal { + return s.lbService +} + func NewVLBGatewayV2(plbSvcClient, pserverSvcClient lsclient.IServiceClient) IVLBGatewayV2 { return &vlbGatewayV2{ lbService: lslbSvc.NewLoadBalancerServiceV2(plbSvcClient, pserverSvcClient), @@ -25,6 +33,12 @@ func NewVLBGatewayInternal(psvcClient lsclient.IServiceClient) IVLBGatewayIntern } } +func NewVLBGatewayGlobal(psvcClient lsclient.IServiceClient) IVLBGatewayGlobal { + return &vlbGatewayGlobal{ + lbService: lslbSvc.NewLoadBalancerServiceGlobal(psvcClient), + } +} + func (s *vlbGatewayInternal) LoadBalancerService() lslbSvc.ILoadBalancerServiceInternal { return s.lbService } diff --git a/vngcloud/services/loadbalancer/global/base.go b/vngcloud/services/loadbalancer/global/base.go new file mode 100644 index 0000000..4905dcb --- /dev/null +++ b/vngcloud/services/loadbalancer/global/base.go @@ -0,0 +1,17 @@ +package global + +import lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" + +type LoadBalancerServiceGlobal struct { + VLBClient lsclient.IServiceClient + VServerClient lsclient.IServiceClient +} + +func (s *LoadBalancerServiceGlobal) getProjectId() string { + return s.VLBClient.GetProjectId() +} + +const ( + defaultOffsetListGlobalLoadBalancer = 0 + defaultLimitListGlobalLoadBalancer = 10 +) diff --git a/vngcloud/services/loadbalancer/global/glb.go b/vngcloud/services/loadbalancer/global/glb.go new file mode 100644 index 0000000..31d80b5 --- /dev/null +++ b/vngcloud/services/loadbalancer/global/glb.go @@ -0,0 +1,517 @@ +package global + +import ( + lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" + lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" + lserr "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/sdk_error" +) + +// func (s *GlobalLoadBalancerService) CreateLoadBalancer(popts ICreateLoadBalancerRequest) (*lsentity.LoadBalancer, lserr.IError) { +// url := createLoadBalancerUrl(s.VLBClient) +// resp := new(CreateLoadBalancerResponse) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonBody(popts.ToRequestBody()). +// WithJsonResponse(resp). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { +// return nil, lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerExceedQuota(errResp)). +// WithParameters(popts.ToMap()). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return resp.ToEntityLoadBalancer(), nil +// } + +// func (s *GlobalLoadBalancerService) ResizeLoadBalancer(popts IResizeLoadBalancerRequest) (*lsentity.LoadBalancer, lserr.IError) { +// url := resizeLoadBalancerUrl(s.VLBClient, popts) +// resp := new(ResizeLoadBalancerResponse) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonBody(popts.ToRequestBody()). +// WithJsonResponse(resp). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { +// return nil, lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound(errResp), +// lserr.WithErrorLoadBalancerNotReady(errResp)) +// } + +// return resp.ToEntityLoadBalancer(), nil +// } + +// func (s *GlobalLoadBalancerService) ListLoadBalancerPackages(popts IListLoadBalancerPackagesRequest) (*lsentity.ListLoadBalancerPackages, lserr.IError) { +// url := listLoadBalancerPackagesUrl(s.VLBClient) +// resp := new(ListLoadBalancerPackagesResponse) +// 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) +// } + +// return resp.ToEntityListLoadBalancerPackages(), nil +// } + +// func (s *GlobalLoadBalancerService) GetLoadBalancerById(popts IGetLoadBalancerByIdRequest) (*lsentity.LoadBalancer, lserr.IError) { +// url := getLoadBalancerByIdUrl(s.VLBClient, popts) +// resp := new(GetLoadBalancerByIdResponse) +// 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)). +// WithKVparameters("loadBalancerId", popts.GetLoadBalancerId()). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return resp.ToEntityLoadBalancer(), nil +// } + +func (s *LoadBalancerServiceGlobal) ListGlobalLoadBalancers(popts IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) { + url := listGlobalLoadBalancersUrl(s.VLBClient, popts) + resp := new(ListGlobalLoadBalancersResponse) + 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). + AppendCategories(lserr.ErrCatProductVlb) + } + + return resp.ToEntityListGlobalLoadBalancers(), nil +} + +// func (s *GlobalLoadBalancerService) GetPoolHealthMonitorById(popts IGetPoolHealthMonitorByIdRequest) (*lsentity.HealthMonitor, lserr.IError) { +// url := getPoolHealthMonitorByIdUrl(s.VLBClient, popts) +// resp := new(GetPoolHealthMonitorByIdResponse) +// 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)) +// } + +// return resp.ToEntityHealthMonitor(), nil +// } + +// func (s *GlobalLoadBalancerService) CreatePool(popts ICreatePoolRequest) (*lsentity.Pool, lserr.IError) { +// url := createPoolUrl(s.VLBClient, popts) +// resp := new(CreatePoolResponse) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonBody(popts.ToRequestBody()). +// WithJsonResponse(resp). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { +// return nil, lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound(errResp), +// lserr.WithErrorLoadBalancerNotFound2(errResp), +// lserr.WithErrorLoadBalancerNotReady(errResp), +// lserr.WithErrorLoadBalancerDuplicatePoolName(errResp)). +// WithParameters(popts.ToMap()). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return resp.ToEntityPool(), nil +// } + +// func (s *GlobalLoadBalancerService) UpdatePool(popts IUpdatePoolRequest) lserr.IError { +// url := updatePoolUrl(s.VLBClient, popts) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonBody(popts.ToRequestBody()). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { +// return lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound2(errResp), +// lserr.WithErrorLoadBalancerNotReady(errResp), +// lserr.WithErrorListenerNotFound(errResp)). +// AppendCategories(lserr.ErrCatProductVlb) +// } +// return nil +// } + +// func (s *GlobalLoadBalancerService) CreateListener(popts ICreateListenerRequest) (*lsentity.Listener, lserr.IError) { +// url := createListenerUrl(s.VLBClient, popts) +// resp := new(CreateListenerResponse) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonBody(popts.ToRequestBody()). +// WithJsonResponse(resp). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { +// return nil, lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound2(errResp), +// lserr.WithErrorLoadBalancerNotReady(errResp), +// lserr.WithErrorListenerDuplicateName(errResp), +// lserr.WithErrorPoolNotFound(errResp), +// lserr.WithErrorListenerDuplicateProtocolOrPort(errResp)). +// WithParameters(popts.ToMap()). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return resp.ToEntityListener(), nil +// } + +// func (s *GlobalLoadBalancerService) UpdateListener(popts IUpdateListenerRequest) lserr.IError { +// url := updateListenerUrl(s.VLBClient, popts) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonBody(popts.ToRequestBody()). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { +// return lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound2(errResp), +// lserr.WithErrorLoadBalancerNotReady(errResp), +// lserr.WithErrorListenerNotFound(errResp)). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return nil +// } + +// func (s *GlobalLoadBalancerService) ListListenersByLoadBalancerId(popts IListListenersByLoadBalancerIdRequest) (*lsentity.ListListeners, lserr.IError) { +// url := listListenersByLoadBalancerIdUrl(s.VLBClient, popts) +// resp := new(ListListenersByLoadBalancerIdResponse) +// 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)). +// WithKVparameters("loadBalancerId", popts.GetLoadBalancerId()). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return resp.ToEntityListListeners(), nil +// } + +// func (s *GlobalLoadBalancerService) ListPoolsByLoadBalancerId(popts IListPoolsByLoadBalancerIdRequest) (*lsentity.ListPools, lserr.IError) { +// url := listPoolsByLoadBalancerIdUrl(s.VLBClient, popts) +// resp := new(ListPoolsByLoadBalancerIdResponse) +// 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)). +// WithKVparameters("loadBalancerId", popts.GetLoadBalancerId()). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return resp.ToEntityListPools(), nil +// } + +// func (s *GlobalLoadBalancerService) UpdatePoolMembers(popts IUpdatePoolMembersRequest) lserr.IError { +// url := updatePoolMembersUrl(s.VLBClient, popts) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonBody(popts.ToRequestBody()). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { +// return lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound2(errResp), +// lserr.WithErrorLoadBalancerNotReady(errResp), +// lserr.WithErrorPoolNotFound(errResp), +// lserr.WithErrorMemberMustIdentical(errResp)).AppendCategories(lserr.ErrCatProductVlb) +// } + +// return nil +// } + +// func (s *GlobalLoadBalancerService) ListPoolMembers(popts IListPoolMembersRequest) (*lsentity.ListMembers, lserr.IError) { +// url := listPoolMembersUrl(s.VLBClient, popts) +// resp := new(ListPoolMembersResponse) +// 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)). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return resp.ToEntityListMembers(), nil +// } + +// func (s *GlobalLoadBalancerService) DeletePoolById(popts IDeletePoolByIdRequest) lserr.IError { +// url := deletePoolByIdUrl(s.VLBClient, popts) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { +// return lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorPoolInUse(errResp), +// lserr.WithErrorLoadBalancerNotReady(errResp), +// lserr.WithErrorPoolNotFound(errResp)). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return nil +// } + +// func (s *GlobalLoadBalancerService) DeleteListenerById(popts IDeleteListenerByIdRequest) lserr.IError { +// url := deleteListenerByIdUrl(s.VLBClient, popts) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { +// return lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound2(errResp), +// lserr.WithErrorListenerNotFound(errResp), +// lserr.WithErrorLoadBalancerNotReady(errResp)). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return nil +// } + +// func (s *GlobalLoadBalancerService) DeleteLoadBalancerById(popts IDeleteLoadBalancerByIdRequest) lserr.IError { +// url := deleteLoadBalancerByIdUrl(s.VLBClient, popts) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { +// return lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound(errResp), +// lserr.WithErrorLoadBalancerNotReady(errResp), +// lserr.WithErrorLoadBalancerIsCreating(errResp), +// lserr.WithErrorLoadBalancerIsDeleting(errResp)). +// WithKVparameters( +// "loadBalancerId", popts.GetLoadBalancerId(), +// "projectId", s.getProjectId()). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return nil +// } + +// func (s *GlobalLoadBalancerService) 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()). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return resp.ToEntityPool(), nil +// } + +// func (s *GlobalLoadBalancerService) 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()). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return resp.ToEntityListener(), nil +// } + +// func (s *GlobalLoadBalancerService) ResizeLoadBalancerById(popts IResizeLoadBalancerByIdRequest) lserr.IError { +// url := resizeLoadBalancerByIdUrl(s.VLBClient, popts) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonBody(popts.ToRequestBody()). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { +// return lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerPackageNotFound(errResp), +// lserr.WithErrorLoadBalancerNotFound(errResp), +// lserr.WithErrorLoadBalancerNotFound2(errResp), +// lserr.WithErrorLoadBalancerNotReady(errResp), +// lserr.WithErrorLoadBalancerResizeSamePackage(errResp)). +// WithParameters(popts.ToMap()). +// AppendCategories(lserr.ErrCatProductVlb) +// } + +// return nil +// } + +// // policy + +// func (s *GlobalLoadBalancerService) ListPolicies(popts IListPoliciesRequest) (*lsentity.ListPolicies, lserr.IError) { +// url := listPoliciesUrl(s.VLBClient, popts) +// resp := new(ListPoliciesResponse) +// 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) +// } + +// return resp.ToEntityListPolicies(), nil +// } + +// func (s *GlobalLoadBalancerService) CreatePolicy(popts ICreatePolicyRequest) (*lsentity.Policy, lserr.IError) { +// url := createPolicyUrl(s.VLBClient, popts) +// resp := new(CreatePolicyResponse) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonBody(popts.ToRequestBody()). +// WithJsonResponse(resp). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { +// return nil, lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound(errResp), +// lserr.WithErrorListenerNotFound(errResp), +// ).WithParameters(popts.ToMap()) +// } + +// return resp.ToEntityPolicy(), nil +// } + +// func (s *GlobalLoadBalancerService) GetPolicyById(popts IGetPolicyByIdRequest) (*lsentity.Policy, lserr.IError) { +// url := getPolicyByIdUrl(s.VLBClient, popts) +// resp := new(GetPolicyResponse) +// 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("policyId", popts.GetPolicyId()) +// } + +// return resp.ToEntityPolicy(), nil +// } + +// func (s *GlobalLoadBalancerService) UpdatePolicy(popts IUpdatePolicyRequest) lserr.IError { +// url := updatePolicyUrl(s.VLBClient, popts) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonBody(popts.ToRequestBody()). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { +// return lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound(errResp), +// lserr.WithErrorListenerNotFound(errResp), +// ) +// } + +// return nil +// } + +// func (s *GlobalLoadBalancerService) DeletePolicyById(popts IDeletePolicyByIdRequest) lserr.IError { +// url := deletePolicyByIdUrl(s.VLBClient, popts) +// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) +// req := lsclient.NewRequest(). +// WithHeader("User-Agent", popts.ParseUserAgent()). +// WithOkCodes(202). +// WithJsonError(errResp) + +// if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { +// return lserr.SdkErrorHandler(sdkErr, errResp, +// lserr.WithErrorLoadBalancerNotFound(errResp), +// lserr.WithErrorListenerNotFound(errResp), +// ) +// } + +// return nil +// } diff --git a/vngcloud/services/loadbalancer/global/glb_request.go b/vngcloud/services/loadbalancer/global/glb_request.go new file mode 100644 index 0000000..3200be1 --- /dev/null +++ b/vngcloud/services/loadbalancer/global/glb_request.go @@ -0,0 +1,338 @@ +package global + +import ( + lfmt "fmt" + ljparser "github.com/cuongpiger/joat/parser" + lscommon "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/common" + lstr "strings" +) + +func NewListGlobalLoadBalancersRequest(offset, limit int) IListGlobalLoadBalancersRequest { + opts := new(ListGlobalLoadBalancersRequest) + opts.Offset = offset + opts.Limit = limit + return opts +} + +type ListGlobalLoadBalancersRequest struct { + Name string `q:"name,beempty"` + Offset int `q:"offset"` + Limit int `q:"limit"` + + Tags []lscommon.Tag + lscommon.UserAgent +} + +func (s *ListGlobalLoadBalancersRequest) WithName(pname string) IListGlobalLoadBalancersRequest { + s.Name = pname + return s +} + +func (s *ListGlobalLoadBalancersRequest) WithTags(ptags ...string) IListGlobalLoadBalancersRequest { + if s.Tags == nil { + s.Tags = make([]lscommon.Tag, 0) + } + + if len(ptags)%2 != 0 { + ptags = append(ptags, "none") + } + + for i := 0; i < len(ptags); i += 2 { + s.Tags = append(s.Tags, lscommon.Tag{Key: ptags[i], Value: ptags[i+1]}) + } + + return s +} + +func (s *ListGlobalLoadBalancersRequest) ToListQuery() (string, error) { + parser, _ := ljparser.GetParser() + url, err := parser.UrlMe(s) + if err != nil { + return "", err + } + + var tuples []string + for _, tag := range s.Tags { + if tag.Key == "" { + continue + } + + tuple := "tags=key:" + tag.Key + if tag.Value != "" { + tuple += ",value:" + tag.Value + } + tuples = append(tuples, tuple) + } + + if len(tuples) > 0 { + return url.String() + "&" + lstr.Join(tuples, "&"), nil + } + + return url.String(), err +} + +func (s *ListGlobalLoadBalancersRequest) GetDefaultQuery() string { + return lfmt.Sprintf("offset=%d&limit=%d", defaultOffsetListGlobalLoadBalancer, defaultLimitListGlobalLoadBalancer) +} + +// const ( +// InternalLoadBalancerScheme LoadBalancerScheme = "Internal" +// InternetLoadBalancerScheme LoadBalancerScheme = "Internet" +// InterVpcLoadBalancerScheme LoadBalancerScheme = "InterVPC" +// ) + +// const ( +// LoadBalancerTypeLayer4 LoadBalancerType = "Layer 4" +// LoadBalancerTypeLayer7 LoadBalancerType = "Layer 7" +// ) + +// type ( +// LoadBalancerScheme string +// LoadBalancerType string +// ) + +// func NewCreateLoadBalancerRequest(pname, ppackageId, psubnetId string) ICreateLoadBalancerRequest { +// return &CreateLoadBalancerRequest{ +// Name: pname, +// PackageID: ppackageId, +// Scheme: InternetLoadBalancerScheme, +// SubnetID: psubnetId, +// Type: LoadBalancerTypeLayer4, +// } +// } + +// func NewResizeLoadBalancerRequest(plbId, packageID string) IResizeLoadBalancerRequest { +// return &ResizeLoadBalancerRequest{ +// LoadBalancerCommon: lscommon.LoadBalancerCommon{ +// LoadBalancerId: plbId, +// }, +// PackageID: packageID, +// } +// } + +// func NewListGlobalLoadBalancerPackagesRequest() IListGlobalLoadBalancerPackagesRequest { +// return new(ListGlobalLoadBalancerPackagesRequest) +// } + +// func NewGetGlobalLoadBalancerByIdRequest(plbId string) IGetGlobalLoadBalancerByIdRequest { +// opts := new(GetGlobalLoadBalancerByIdRequest) +// opts.LoadBalancerId = plbId +// return opts +// } + +// func (s *ListGlobalLoadBalancersRequest) WithName(pname string) IListGlobalLoadBalancersRequest { +// s.Name = pname +// return s +// } + +// func NewDeleteLoadBalancerByIdRequest(plbId string) IDeleteLoadBalancerByIdRequest { +// opts := new(DeleteLoadBalancerByIdRequest) +// opts.LoadBalancerId = plbId +// return opts +// } + +// type CreateLoadBalancerRequest struct { +// Name string `json:"name"` +// PackageID string `json:"packageId"` +// Scheme LoadBalancerScheme `json:"scheme"` +// AutoScalable bool `json:"autoScalable"` +// SubnetID string `json:"subnetId"` +// Type LoadBalancerType `json:"type"` +// Listener ICreateListenerRequest `json:"listener"` +// Pool ICreatePoolRequest `json:"pool"` +// Tags []lscommon.Tag `json:"tags,omitempty"` +// IsPoc bool `json:"isPoc"` + +// lscommon.UserAgent +// } + +// type ResizeLoadBalancerRequest struct { +// PackageID string `json:"packageId"` +// lscommon.UserAgent +// lscommon.LoadBalancerCommon +// } + +// type ListGlobalLoadBalancerPackagesRequest struct { +// lscommon.UserAgent +// } + +// type GetGlobalLoadBalancerByIdRequest struct { +// lscommon.UserAgent +// lscommon.LoadBalancerCommon +// } + +// type DeleteLoadBalancerByIdRequest struct { +// lscommon.UserAgent +// lscommon.LoadBalancerCommon +// } + +// type ResizeLoadBalancerByIdRequest struct { +// lscommon.UserAgent +// lscommon.LoadBalancerCommon + +// PackageId string `json:"packageId"` +// } + +// func (s *CreateLoadBalancerRequest) ToMap() map[string]interface{} { +// err := map[string]interface{}{ +// "name": s.Name, +// "packageId": s.PackageID, +// "scheme": s.Scheme, +// "autoScalable": s.AutoScalable, +// "subnetId": s.SubnetID, +// "type": s.Type, +// "tags": s.Tags, +// } + +// if s.Listener != nil { +// err["listener"] = s.Listener.ToMap() +// } + +// if s.Pool != nil { +// err["pool"] = s.Pool.ToMap() +// } + +// return err +// } + +// func (s *CreateLoadBalancerRequest) ToRequestBody() interface{} { +// if s.Pool != nil { +// s.Pool = s.Pool.ToRequestBody().(*CreatePoolRequest) +// } + +// if s.Listener != nil { +// s.Listener = s.Listener.ToRequestBody().(*CreateListenerRequest) +// } + +// return s +// } + +// func (s *CreateLoadBalancerRequest) AddUserAgent(pagent ...string) ICreateLoadBalancerRequest { +// s.UserAgent.AddUserAgent(pagent...) +// return s +// } +// func (s *CreateLoadBalancerRequest) WithListener(plistener ICreateListenerRequest) ICreateLoadBalancerRequest { +// s.Listener = plistener +// return s +// } + +// func (s *CreateLoadBalancerRequest) WithPool(ppool ICreatePoolRequest) ICreateLoadBalancerRequest { +// s.Pool = ppool +// return s +// } + +// func (s *CreateLoadBalancerRequest) WithTags(ptags ...string) ICreateLoadBalancerRequest { +// if s.Tags == nil { +// s.Tags = make([]lscommon.Tag, 0) +// } + +// if len(ptags)%2 != 0 { +// ptags = append(ptags, "none") +// } + +// for i := 0; i < len(ptags); i += 2 { +// s.Tags = append(s.Tags, lscommon.Tag{Key: ptags[i], Value: ptags[i+1]}) +// } + +// return s +// } + +// func (s *CreateLoadBalancerRequest) WithScheme(pscheme LoadBalancerScheme) ICreateLoadBalancerRequest { +// s.Scheme = pscheme +// return s +// } + +// func (s *CreateLoadBalancerRequest) WithAutoScalable(pautoScalable bool) ICreateLoadBalancerRequest { +// s.AutoScalable = pautoScalable +// return s +// } + +// func (s *CreateLoadBalancerRequest) WithPackageId(ppackageId string) ICreateLoadBalancerRequest { +// s.PackageID = ppackageId +// return s +// } + +// func (s *CreateLoadBalancerRequest) WithSubnetId(psubnetId string) ICreateLoadBalancerRequest { +// s.SubnetID = psubnetId +// return s +// } + +// func (s *CreateLoadBalancerRequest) WithType(ptype LoadBalancerType) ICreateLoadBalancerRequest { +// s.Type = ptype +// return s +// } + +// func (s *CreateLoadBalancerRequest) WithPoc(isPoc bool) ICreateLoadBalancerRequest { +// s.IsPoc = isPoc +// return s +// } + +// func (s *ResizeLoadBalancerRequest) ToRequestBody() interface{} { +// return s +// } + +// func (s *ResizeLoadBalancerRequest) AddUserAgent(pagent ...string) IResizeLoadBalancerRequest { +// s.UserAgent.AddUserAgent(pagent...) +// return s +// } + +// func (s *ResizeLoadBalancerRequest) WithPackageId(ppackageId string) IResizeLoadBalancerRequest { +// s.PackageID = ppackageId +// return s +// } + +// func (s *ListGlobalLoadBalancerPackagesRequest) AddUserAgent(pagent ...string) IListGlobalLoadBalancerPackagesRequest { +// s.UserAgent.AddUserAgent(pagent...) +// return s +// } + +// func (s *ListGlobalLoadBalancerPackagesRequest) ToMap() map[string]interface{} { +// return map[string]interface{}{} +// } + +// func (s *GetGlobalLoadBalancerByIdRequest) AddUserAgent(pagent ...string) IGetGlobalLoadBalancerByIdRequest { +// s.UserAgent.AddUserAgent(pagent...) +// return s +// } + +// if len(ptags)%2 != 0 { +// ptags = append(ptags, "") +// } + +// for i := 0; i < len(ptags); i += 2 { +// s.Tags = append(s.Tags, lscommon.Tag{Key: ptags[i], Value: ptags[i+1]}) +// } + +// return s +// } + +// var tuples []string +// for _, tag := range s.Tags { +// if tag.Key == "" { +// continue +// } + +// tuple := "tags=key:" + tag.Key +// if tag.Value != "" { +// tuple += ",value:" + tag.Value +// } +// tuples = append(tuples, tuple) +// } + +// if len(tuples) > 0 { +// return url.String() + "&" + lstr.Join(tuples, "&"), nil +// } + +// return url.String(), err +// } + +// func (s *ResizeLoadBalancerByIdRequest) ToMap() map[string]interface{} { +// return map[string]interface{}{ +// "packageId": s.PackageId, +// "loadBalancerId": s.LoadBalancerId, +// } +// } + +// func (s *ResizeLoadBalancerByIdRequest) ToRequestBody() interface{} { +// return s +// } diff --git a/vngcloud/services/loadbalancer/global/glb_response.go b/vngcloud/services/loadbalancer/global/glb_response.go new file mode 100644 index 0000000..6e06f7d --- /dev/null +++ b/vngcloud/services/loadbalancer/global/glb_response.go @@ -0,0 +1,195 @@ +package global + +import ( + lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" +) + +type ListGlobalLoadBalancersResponse struct { + Items []GlobalLoadBalancer `json:"items"` + Limit int `json:"limit"` + Total int `json:"total"` + Offset int `json:"offset"` +} + +type ( + GlobalLoadBalancer struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Status string `json:"status"` + Package string `json:"package"` + Type string `json:"type"` + UserId int `json:"userId"` + Vips []GlobalLoadBalancerVIP `json:"vips"` + Domains []GlobalLoadBalancerDomain `json:"domains"` + } + + GlobalLoadBalancerVIP struct { + ID int `json:"id"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt string `json:"deletedAt"` + Address string `json:"address"` + Status string `json:"status"` + Region string `json:"region"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + } + + GlobalLoadBalancerDomain struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt string `json:"deletedAt"` + ID int `json:"id"` + Hostname string `json:"hostname"` + Status string `json:"status"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + DNSHostedZoneID string `json:"dnsHostedZoneId"` + DNSServerID string `json:"dnsServerId"` + } +) + +func (s *ListGlobalLoadBalancersResponse) ToEntityListGlobalLoadBalancers() *lsentity.ListGlobalLoadBalancers { + result := &lsentity.ListGlobalLoadBalancers{ + Items: make([]*lsentity.GlobalLoadBalancer, 0), + Limit: 0, + Total: 0, + Offset: 0, + } + + if s == nil || s.Items == nil || len(s.Items) < 1 { + return result + } + + result.Limit = s.Limit + result.Total = s.Total + result.Offset = s.Offset + + for _, itemLb := range s.Items { + result.Items = append(result.Items, itemLb.toEntityGlobalLoadBalancer()) + } + + return result +} + +func (s *GlobalLoadBalancer) toEntityGlobalLoadBalancer() *lsentity.GlobalLoadBalancer { + vips := make([]*lsentity.GlobalLoadBalancerVIP, 0) + for _, vip := range s.Vips { + vips = append(vips, &lsentity.GlobalLoadBalancerVIP{ + ID: vip.ID, + CreatedAt: vip.CreatedAt, + UpdatedAt: vip.UpdatedAt, + DeletedAt: vip.DeletedAt, + Address: vip.Address, + Status: vip.Status, + Region: vip.Region, + GlobalLoadBalancerID: vip.GlobalLoadBalancerID, + }) + } + + domains := make([]*lsentity.GlobalLoadBalancerDomain, 0) + for _, domain := range s.Domains { + domains = append(domains, &lsentity.GlobalLoadBalancerDomain{ + CreatedAt: domain.CreatedAt, + UpdatedAt: domain.UpdatedAt, + DeletedAt: domain.DeletedAt, + ID: domain.ID, + Hostname: domain.Hostname, + Status: domain.Status, + GlobalLoadBalancerID: domain.GlobalLoadBalancerID, + DNSHostedZoneID: domain.DNSHostedZoneID, + DNSServerID: domain.DNSServerID, + }) + } + + return &lsentity.GlobalLoadBalancer{ + CreatedAt: s.CreatedAt, + UpdatedAt: s.UpdatedAt, + DeletedAt: s.DeletedAt, + ID: s.ID, + Name: s.Name, + Description: s.Description, + Status: s.Status, + Package: s.Package, + Type: s.Type, + UserId: s.UserId, + Vips: vips, + Domains: domains, + } +} + +// type CreateLoadBalancerResponse struct { +// UUID string `json:"uuid"` +// } + +// type ResizeLoadBalancerResponse struct { +// UUID string `json:"uuid"` +// } + +// func (s *ResizeLoadBalancerResponse) ToEntityLoadBalancer() *lsentity.LoadBalancer { +// return &lsentity.LoadBalancer{ +// UUID: s.UUID, +// } +// } + +// type ListLoadBalancerPackagesResponse struct { +// ListData []LoadBalancerPackageResponse `json:"listData"` +// } + +// type LoadBalancerPackageResponse struct { +// UUID string `json:"uuid"` +// Name string `json:"name"` +// Type string `json:"type"` +// ConnectionNumber int `json:"connectionNumber"` +// DataTransfer int `json:"dataTransfer"` +// Mode string `json:"mode"` +// LbType string `json:"lbType"` +// DisplayLbType string `json:"displayLbType"` +// } + +// type GetLoadBalancerByIdResponse struct { +// Data LoadBalancer `json:"data"` +// } + +// func (s *CreateLoadBalancerResponse) ToEntityLoadBalancer() *lsentity.LoadBalancer { +// return &lsentity.LoadBalancer{ +// UUID: s.UUID, +// } +// } + +// func (s *ListLoadBalancerPackagesResponse) ToEntityListLoadBalancerPackages() *lsentity.ListLoadBalancerPackages { +// if s == nil || s.ListData == nil || len(s.ListData) < 1 { +// return &lsentity.ListLoadBalancerPackages{ +// Items: make([]*lsentity.LoadBalancerPackage, 0), +// } +// } + +// result := &lsentity.ListLoadBalancerPackages{ +// Items: make([]*lsentity.LoadBalancerPackage, 0), +// } + +// for _, item := range s.ListData { +// result.Items = append(result.Items, &lsentity.LoadBalancerPackage{ +// UUID: item.UUID, +// Name: item.Name, +// Type: item.Type, +// ConnectionNumber: item.ConnectionNumber, +// DataTransfer: item.DataTransfer, +// Mode: item.Mode, +// LbType: item.LbType, +// DisplayLbType: item.DisplayLbType, +// }) +// } + +// return result +// } + +// func (s *GetLoadBalancerByIdResponse) ToEntityLoadBalancer() *lsentity.LoadBalancer { +// if s == nil { +// return nil +// } + +// return s.Data.toEntityLoadBalancer() +// } diff --git a/vngcloud/services/loadbalancer/global/irequest.go b/vngcloud/services/loadbalancer/global/irequest.go new file mode 100644 index 0000000..0721d7d --- /dev/null +++ b/vngcloud/services/loadbalancer/global/irequest.go @@ -0,0 +1,267 @@ +package global + +type IListGlobalLoadBalancersRequest interface { + WithName(pname string) IListGlobalLoadBalancersRequest + WithTags(ptags ...string) IListGlobalLoadBalancersRequest + ToListQuery() (string, error) + ParseUserAgent() string + GetDefaultQuery() string +} + +// import lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" + +// type ICreateLoadBalancerRequest interface { +// ToRequestBody() interface{} +// AddUserAgent(pagent ...string) ICreateLoadBalancerRequest +// WithListener(plistener ICreateListenerRequest) ICreateLoadBalancerRequest +// WithPool(ppool ICreatePoolRequest) ICreateLoadBalancerRequest +// WithTags(ptags ...string) ICreateLoadBalancerRequest +// WithScheme(pscheme LoadBalancerScheme) ICreateLoadBalancerRequest +// WithAutoScalable(pautoScalable bool) ICreateLoadBalancerRequest +// WithPackageId(ppackageId string) ICreateLoadBalancerRequest +// WithSubnetId(psubnetId string) ICreateLoadBalancerRequest +// WithType(ptype LoadBalancerType) ICreateLoadBalancerRequest +// WithPoc(poc bool) ICreateLoadBalancerRequest +// ParseUserAgent() string +// ToMap() map[string]interface{} +// } + +// type IResizeLoadBalancerRequest interface { +// ToRequestBody() interface{} +// AddUserAgent(pagent ...string) IResizeLoadBalancerRequest +// WithPackageId(ppackageId string) IResizeLoadBalancerRequest +// ParseUserAgent() string + +// GetLoadBalancerId() string +// } + +// type IListLoadBalancerPackagesRequest interface { +// AddUserAgent(pagent ...string) IListLoadBalancerPackagesRequest +// ParseUserAgent() string +// ToMap() map[string]interface{} +// } + +// type IGetLoadBalancerByIdRequest interface { +// AddUserAgent(pagent ...string) IGetLoadBalancerByIdRequest +// ParseUserAgent() string +// GetLoadBalancerId() string +// } + +// type ICreateListenerRequest interface { +// ToRequestBody() interface{} +// WithAllowedCidrs(pcidrs ...string) ICreateListenerRequest +// WithLoadBalancerId(plbid string) ICreateListenerRequest +// WithDefaultPoolId(ppoolId string) ICreateListenerRequest +// WithTimeoutClient(ptoc int) ICreateListenerRequest +// WithTimeoutConnection(ptoc int) ICreateListenerRequest +// WithTimeoutMember(ptom int) ICreateListenerRequest +// AddCidrs(pcidrs ...string) ICreateListenerRequest +// ParseUserAgent() string +// GetLoadBalancerId() string +// ToMap() map[string]interface{} +// } + +// type IUpdateListenerRequest interface { +// GetLoadBalancerId() string +// GetListenerId() string +// ToRequestBody() interface{} +// WithCidrs(pcidrs ...string) IUpdateListenerRequest +// WithTimeoutClient(ptoc int) IUpdateListenerRequest +// WithTimeoutConnection(ptoc int) IUpdateListenerRequest +// WithTimeoutMember(ptom int) IUpdateListenerRequest +// WithDefaultPoolId(ppoolId string) IUpdateListenerRequest +// WithHeaders(pheaders ...string) IUpdateListenerRequest +// ParseUserAgent() string + +// WithCertificateAuthorities(pca ...string) IUpdateListenerRequest +// WithClientCertificate(pclientCert string) IUpdateListenerRequest +// WithDefaultCertificateAuthority(pdefaultCA string) IUpdateListenerRequest +// } + +// type IGetPoolHealthMonitorByIdRequest interface { +// GetLoadBalancerId() string +// GetPoolId() string +// ParseUserAgent() string +// } + +// type ICreatePoolRequest interface { +// ToRequestBody() interface{} +// WithHealthMonitor(pmonitor IHealthMonitorRequest) ICreatePoolRequest +// WithMembers(pmembers ...IMemberRequest) ICreatePoolRequest +// WithLoadBalancerId(plbId string) ICreatePoolRequest +// WithAlgorithm(palgorithm PoolAlgorithm) ICreatePoolRequest +// ToMap() map[string]interface{} +// GetLoadBalancerId() string +// ParseUserAgent() string +// } + +// type IUpdatePoolRequest interface { +// GetPoolId() string +// ToRequestBody() interface{} +// WithHealthMonitor(pmonitor IHealthMonitorRequest) IUpdatePoolRequest +// WithLoadBalancerId(plbId string) IUpdatePoolRequest +// WithAlgorithm(palgorithm PoolAlgorithm) IUpdatePoolRequest +// WithStickiness(v *bool) IUpdatePoolRequest +// WithTLSEncryption(v *bool) IUpdatePoolRequest +// ToMap() map[string]interface{} +// GetLoadBalancerId() string +// ParseUserAgent() string +// } + +// type IListListenersByLoadBalancerIdRequest interface { +// GetLoadBalancerId() string +// ParseUserAgent() string +// } + +// type IListPoolsByLoadBalancerIdRequest interface { +// GetLoadBalancerId() string +// ParseUserAgent() string +// } + +// type IUpdatePoolMembersRequest interface { +// WithMembers(pmembers ...IMemberRequest) IUpdatePoolMembersRequest +// ToRequestBody() interface{} +// GetLoadBalancerId() string +// GetPoolId() string +// ParseUserAgent() string +// } + +// type IListPoolMembersRequest interface { +// GetLoadBalancerId() string +// GetPoolId() string +// ParseUserAgent() string +// } + +// type IDeletePoolByIdRequest interface { +// GetLoadBalancerId() string +// GetPoolId() string +// ParseUserAgent() string +// } + +// type IDeleteListenerByIdRequest interface { +// GetLoadBalancerId() string +// GetListenerId() string +// ParseUserAgent() string +// } + +// type IDeleteLoadBalancerByIdRequest interface { +// GetLoadBalancerId() string +// ParseUserAgent() string +// } + +// type IHealthMonitorRequest interface { +// ToRequestBody() interface{} +// ToMap() map[string]interface{} +// WithHealthyThreshold(pht int) IHealthMonitorRequest +// WithUnhealthyThreshold(puht int) IHealthMonitorRequest +// WithInterval(pinterval int) IHealthMonitorRequest +// WithTimeout(pto int) IHealthMonitorRequest +// WithHealthCheckMethod(pmethod HealthCheckMethod) IHealthMonitorRequest +// WithHttpVersion(pversion HealthCheckHttpVersion) IHealthMonitorRequest +// WithHealthCheckPath(ppath string) IHealthMonitorRequest +// WithSuccessCode(pcode string) IHealthMonitorRequest +// WithDomainName(pdomain string) IHealthMonitorRequest +// } + +// type IMemberRequest interface { +// ToRequestBody() interface{} +// ToMap() map[string]interface{} +// } + +// type IListTagsRequest interface { +// GetLoadBalancerId() string +// ParseUserAgent() string +// } + +// type ICreateTagsRequest interface { +// GetLoadBalancerId() string +// ToRequestBody() interface{} +// ParseUserAgent() string +// WithTags(ptags ...string) ICreateTagsRequest +// } + +// type IUpdateTagsRequest interface { +// GetLoadBalancerId() string +// ToRequestBody(plstTags *lsentity.ListTags) interface{} +// ParseUserAgent() string +// WithTags(ptags ...string) IUpdateTagsRequest +// ToMap() map[string]interface{} +// } + +// // -------------------------------------------------------- + +// type IListPoliciesRequest interface { +// ParseUserAgent() string +// GetLoadBalancerId() string +// GetListenerId() string +// } + +// type ICreatePolicyRequest interface { +// ToRequestBody() interface{} +// ParseUserAgent() string +// GetLoadBalancerId() string +// GetListenerId() string +// ToMap() map[string]interface{} + +// WithName(pname string) ICreatePolicyRequest +// WithRules(prules ...L7RuleRequest) ICreatePolicyRequest +// WithAction(paction PolicyAction) ICreatePolicyRequest + +// // only for action redirect to pool +// WithRedirectPoolId(predirectPoolId string) ICreatePolicyRequest + +// // only for action redirect to url +// WithRedirectURL(predirectURL string) ICreatePolicyRequest +// // only for action redirect to url +// WithRedirectHTTPCode(predirectHTTPCode int) ICreatePolicyRequest +// // only for action redirect to url +// WithKeepQueryString(pkeepQueryString bool) ICreatePolicyRequest +// } + +// type IGetPolicyByIdRequest interface { +// ParseUserAgent() string +// GetLoadBalancerId() string +// GetListenerId() string +// GetPolicyId() string +// } + +// type IUpdatePolicyRequest interface { +// ToRequestBody() interface{} +// ParseUserAgent() string +// GetLoadBalancerId() string +// GetListenerId() string +// GetPolicyId() string + +// WithAction(paction PolicyAction) IUpdatePolicyRequest +// WithRules(prules ...L7RuleRequest) IUpdatePolicyRequest +// WithRedirectPoolID(predirectPoolId string) IUpdatePolicyRequest +// WithRedirectURL(predirectURL string) IUpdatePolicyRequest +// WithRedirectHTTPCode(predirectHTTPCode int) IUpdatePolicyRequest +// WithKeepQueryString(pkeepQueryString bool) IUpdatePolicyRequest +// } + +// type IDeletePolicyByIdRequest interface { +// ParseUserAgent() string +// GetLoadBalancerId() string +// GetListenerId() string +// GetPolicyId() string +// } + +// type IGetPoolByIdRequest interface { +// GetLoadBalancerId() string +// GetPoolId() string +// ParseUserAgent() string +// } + +// type IGetListenerByIdRequest interface { +// GetLoadBalancerId() string +// GetListenerId() string +// ParseUserAgent() string +// } + +// type IResizeLoadBalancerByIdRequest interface { +// GetLoadBalancerId() string +// ToMap() map[string]interface{} +// ParseUserAgent() string +// ToRequestBody() interface{} +// } diff --git a/vngcloud/services/loadbalancer/global/url.go b/vngcloud/services/loadbalancer/global/url.go new file mode 100644 index 0000000..f9b0958 --- /dev/null +++ b/vngcloud/services/loadbalancer/global/url.go @@ -0,0 +1,254 @@ +package global + +import lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" + +func listGlobalLoadBalancersUrl(psc lsclient.IServiceClient, popts IListGlobalLoadBalancersRequest) string { + query, err := popts.ToListQuery() + if err != nil { + query = popts.GetDefaultQuery() + } + + return psc.ServiceURL("global-load-balancers") + query +} + +// func createLoadBalancerUrl(psc lsclient.IServiceClient) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers") +// } + +// func resizeLoadBalancerUrl(psc lsclient.IServiceClient, popts IResizeLoadBalancerRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "resize") +// } + +// func listGlobalLoadBalancerPackagesUrl(psc lsclient.IServiceClient) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", "packages") +// } + +// func getLoadBalancerByIdUrl(psc lsclient.IServiceClient, popts IGetLoadBalancerByIdRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId()) +// } + +// func getPoolHealthMonitorByIdUrl(psc lsclient.IServiceClient, popts IGetPoolHealthMonitorByIdRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "pools", +// popts.GetPoolId(), +// "healthMonitor") +// } + +// func createPoolUrl(psc lsclient.IServiceClient, popts ICreatePoolRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "pools") +// } + +// func updatePoolUrl(psc lsclient.IServiceClient, popts IUpdatePoolRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "pools", +// popts.GetPoolId()) +// } + +// func createListenerUrl(psc lsclient.IServiceClient, popts ICreateListenerRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "listeners") +// } + +// func updateListenerUrl(psc lsclient.IServiceClient, popts IUpdateListenerRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "listeners", +// popts.GetListenerId()) +// } + +// func listListenersByLoadBalancerIdUrl(psc lsclient.IServiceClient, popts IListListenersByLoadBalancerIdRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "listeners") +// } + +// func listPoolsByLoadBalancerIdUrl(psc lsclient.IServiceClient, popts IListPoolsByLoadBalancerIdRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "pools") +// } + +// func updatePoolMembersUrl(psc lsclient.IServiceClient, popts IUpdatePoolMembersRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "pools", +// popts.GetPoolId(), +// "members") +// } + +// func listPoolMembersUrl(psc lsclient.IServiceClient, popts IListPoolMembersRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "pools", +// popts.GetPoolId(), +// "members") +// } + +// func deletePoolByIdUrl(psc lsclient.IServiceClient, popts IDeletePoolByIdRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "pools", +// popts.GetPoolId()) +// } + +// func deleteListenerByIdUrl(psc lsclient.IServiceClient, popts IDeleteListenerByIdRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "listeners", +// popts.GetListenerId()) +// } + +// func deleteLoadBalancerByIdUrl(psc lsclient.IServiceClient, popts IDeleteLoadBalancerByIdRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId()) +// } + +// func listTagsUrl(psc lsclient.IServiceClient, popts IListTagsRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "tag", +// "resource", +// popts.GetLoadBalancerId()) +// } + +// func createTagsUrl(psc lsclient.IServiceClient, popts ICreateTagsRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "tag", +// "resource", +// popts.GetLoadBalancerId()) +// } + +// func updateTagsUrl(psc lsclient.IServiceClient, popts IUpdateTagsRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "tag", +// "resource", +// popts.GetLoadBalancerId()) +// } + +// // Policy + +// func listPoliciesUrl(psc lsclient.IServiceClient, popts IListPoliciesRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "listeners", +// popts.GetListenerId(), +// "l7policies", +// ) +// } + +// func createPolicyUrl(psc lsclient.IServiceClient, popts ICreatePolicyRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "listeners", +// popts.GetListenerId(), +// "l7policies", +// ) +// } + +// func getPolicyByIdUrl(psc lsclient.IServiceClient, popts IGetPolicyByIdRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "listeners", +// popts.GetListenerId(), +// "l7policies", +// popts.GetPolicyId(), +// ) +// } + +// func updatePolicyUrl(psc lsclient.IServiceClient, popts IUpdatePolicyRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "listeners", +// popts.GetListenerId(), +// "l7policies", +// popts.GetPolicyId(), +// ) +// } + +// func deletePolicyByIdUrl(psc lsclient.IServiceClient, popts IDeletePolicyByIdRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "listeners", +// popts.GetListenerId(), +// "l7policies", +// popts.GetPolicyId(), +// ) +// } + +// 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()) +// } + +// func resizeLoadBalancerByIdUrl(psc lsclient.IServiceClient, popts IResizeLoadBalancerByIdRequest) string { +// return psc.ServiceURL( +// psc.GetProjectId(), +// "loadBalancers", +// popts.GetLoadBalancerId(), +// "resize") +// } diff --git a/vngcloud/services/loadbalancer/iloadbalancer.go b/vngcloud/services/loadbalancer/iloadbalancer.go index 47edbb6..2bc782b 100644 --- a/vngcloud/services/loadbalancer/iloadbalancer.go +++ b/vngcloud/services/loadbalancer/iloadbalancer.go @@ -3,6 +3,7 @@ package loadbalancer import ( lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" lserr "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/sdk_error" + "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/global" lslbSvcIn "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/inter" lslbSvcV2 "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/v2" ) @@ -42,3 +43,44 @@ type ILoadBalancerServiceV2 interface { type ILoadBalancerServiceInternal interface { CreateLoadBalancer(popts lslbSvcIn.ICreateLoadBalancerRequest) (*lsentity.LoadBalancer, lserr.IError) } + +type ILoadBalancerServiceGlobal interface { + ListGlobalLoadBalancers(popts global.IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) + // CreateGlobalLoadBalancer(popts global.ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) + // UpdateGlobalLoadBalancer(popts global.IUpdateGlobalLoadBalancerRequest) lserr.IError + // GetGlobalLoadBalancerById(popts global.IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) + // DeleteGlobalLoadBalancerById(popts global.IDeleteGlobalLoadBalancerByIdRequest) lserr.IError + // ListGlobalLoadBalancerPools(popts global.IListGlobalLoadBalancerPoolsRequest) (*lsentity.ListGlobalLoadBalancerPools, lserr.IError) + // GetGlobalLoadBalancerPoolById(popts global.IGetGlobalLoadBalancerPoolByIdRequest) (*lsentity.GlobalLoadBalancerPool, lserr.IError) + // CreateGlobalLoadBalancerPool(popts global.ICreateGlobalLoadBalancerPoolRequest) (*lsentity.GlobalLoadBalancerPool, lserr.IError) + // UpdateGlobalLoadBalancerPool(popts global.IUpdateGlobalLoadBalancerPoolRequest) lserr.IError + // DeleteGlobalLoadBalancerPoolById(popts global.IDeleteGlobalLoadBalancerPoolByIdRequest) lserr.IError + // ListGlobalLoadBalancerPoolMembers(popts global.IListGlobalLoadBalancerPoolMembersRequest) (*lsentity.ListGlobalLoadBalancerPoolMembers, lserr.IError) + // GetGlobalLoadBalancerPoolMemberById(popts global.IGetGlobalLoadBalancerPoolMemberByIdRequest) (*lsentity.GlobalLoadBalancerPoolMember, lserr.IError) + // CreateGlobalLoadBalancerPoolMember(popts global.ICreateGlobalLoadBalancerPoolMemberRequest) (*lsentity.GlobalLoadBalancerPoolMember, lserr.IError) + // UpdateGlobalLoadBalancerPoolMember(popts global.IUpdateGlobalLoadBalancerPoolMemberRequest) lserr.IError + // DeleteGlobalLoadBalancerPoolMemberById(popts global.IDeleteGlobalLoadBalancerPoolMemberByIdRequest) lserr.IError + // ListGlobalLoadBalancerHealthMonitors(popts global.IListGlobalLoadBalancerHealthMonitorsRequest) (*lsentity.ListGlobalLoadBalancerHealthMonitors, lserr.IError) + // GetGlobalLoadBalancerHealthMonitorById(popts global.IGetGlobalLoadBalancerHealthMonitorByIdRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) + // CreateGlobalLoadBalancerHealthMonitor(popts global.ICreateGlobalLoadBalancerHealthMonitorRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) + // UpdateGlobalLoadBalancerHealthMonitor(popts global.IUpdateGlobalLoadBalancerHealthMonitorRequest) lserr.IError + // DeleteGlobalLoadBalancerHealthMonitorById(popts global.IDeleteGlobalLoadBalancerHealthMonitorByIdRequest) lserr.IError + // ListGlobalLoadBalancerListeners(popts global.IListGlobalLoadBalancerListenersRequest) (*lsentity.ListGlobalLoadBalancerListeners, lserr.IError) + // GetGlobalLoadBalancerListenerById(popts global.IGetGlobalLoadBalancerListenerByIdRequest) (*lsentity.GlobalLoadBalancerListener, lserr.IError) + // CreateGlobalLoadBalancerListener(popts global.ICreateGlobalLoadBalancerListenerRequest) (*lsentity.GlobalLoadBalancerListener, lserr.IError) + // UpdateGlobalLoadBalancerListener(popts global.IUpdateGlobalLoadBalancerListenerRequest) lserr.IError + // DeleteGlobalLoadBalancerListenerById(popts global.IDeleteGlobalLoadBalancerListenerByIdRequest) lserr.IError + // ListGlobalLoadBalancerTags(popts global.IListGlobalLoadBalancerTagsRequest) (*lsentity.ListGlobalLoadBalancerTags, lserr.IError) + // CreateGlobalLoadBalancerTags(popts global.ICreateGlobalLoadBalancerTagsRequest) lserr.IError + // UpdateGlobalLoadBalancerTags(popts global.IUpdateGlobalLoadBalancerTagsRequest) lserr.IError + // ListGlobalLoadBalancerPolicies(popts global.IListGlobalLoadBalancerPoliciesRequest) (*lsentity.ListGlobalLoadBalancerPolicies, lserr.IError) + // GetGlobalLoadBalancerPolicyById(popts global.IGetGlobalLoadBalancerPolicyByIdRequest) (*lsentity.GlobalLoadBalancerPolicy, lserr.IError) + // CreateGlobalLoadBalancerPolicy(popts global.ICreateGlobalLoadBalancerPolicyRequest) (*lsentity.GlobalLoadBalancerPolicy, lserr.IError) + // UpdateGlobalLoadBalancerPolicy(popts global.IUpdateGlobalLoadBalancerPolicyRequest) lserr.IError + // DeleteGlobalLoadBalancerPolicyById(popts global.IDeleteGlobalLoadBalancerPolicyByIdRequest) lserr.IError + // GetGlobalLoadBalancerPoolById(popts global.IGetGlobalLoadBalancerPoolByIdRequest) (*lsentity.GlobalLoadBalancerPool, lserr.IError) + // GetGlobalLoadBalancerListenerById(popts global.IGetGlobalLoadBalancerListenerByIdRequest) (*lsentity.GlobalLoadBalancerListener, lserr.IError) + // GetGlobalLoadBalancerHealthMonitorById(popts global.IGetGlobalLoadBalancerHealthMonitorByIdRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) + // GetGlobalLoadBalancerPolicyById(popts global.IGetGlobalLoadBalancerPolicyByIdRequest) (*lsentity.GlobalLoadBalancerPolicy, lserr.IError) + // GetGlobalLoadBalancerPoolMemberById(popts global.IGetGlobalLoadBalancerPoolMemberByIdRequest) (*lsentity.GlobalLoadBalancerPoolMember, lserr.IError) +} diff --git a/vngcloud/services/loadbalancer/loadbalancer.go b/vngcloud/services/loadbalancer/loadbalancer.go index f02b2a9..259e06f 100644 --- a/vngcloud/services/loadbalancer/loadbalancer.go +++ b/vngcloud/services/loadbalancer/loadbalancer.go @@ -2,6 +2,7 @@ package loadbalancer import ( lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" + "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/global" lsloadbalancerInternal "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/inter" lsloadbalancerV2 "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/v2" ) @@ -18,3 +19,9 @@ func NewLoadBalancerServiceInternal(psvcClient lsclient.IServiceClient) ILoadBal VLBClient: psvcClient, } } + +func NewLoadBalancerServiceGlobal(psvcClient lsclient.IServiceClient) ILoadBalancerServiceGlobal { + return &global.LoadBalancerServiceGlobal{ + VLBClient: psvcClient, + } +} From 50008cb02676dc075835d2a80055b730d4abd9a6 Mon Sep 17 00:00:00 2001 From: andrew Date: Tue, 24 Dec 2024 17:24:04 +0700 Subject: [PATCH 02/13] =?UTF-8?q?=F0=9F=8C=B1=20add:=20crud=20glb=20pool?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/lb_global_test.go | 174 ++++ vngcloud/entity/loadbalancer_global.go | 94 ++- vngcloud/services/loadbalancer/global/glb.go | 585 +++----------- .../global/glb_listener_request.go | 245 ++++++ .../global/glb_listener_response.go | 81 ++ .../loadbalancer/global/glb_pool_requests.go | 753 ++++++++++++++++++ .../loadbalancer/global/glb_pool_response.go | 210 +++++ .../loadbalancer/global/glb_request.go | 36 +- .../services/loadbalancer/global/irequest.go | 431 ++++------ vngcloud/services/loadbalancer/global/url.go | 286 ++----- .../services/loadbalancer/iloadbalancer.go | 23 +- 11 files changed, 1915 insertions(+), 1003 deletions(-) create mode 100644 vngcloud/services/loadbalancer/global/glb_listener_request.go create mode 100644 vngcloud/services/loadbalancer/global/glb_listener_response.go create mode 100644 vngcloud/services/loadbalancer/global/glb_pool_requests.go create mode 100644 vngcloud/services/loadbalancer/global/glb_pool_response.go diff --git a/test/lb_global_test.go b/test/lb_global_test.go index 5fd396b..973cc34 100644 --- a/test/lb_global_test.go +++ b/test/lb_global_test.go @@ -30,3 +30,177 @@ func TestListGlobalLoadBalancerSuccess(t *ltesting.T) { } t.Log("PASS") } + +func TestListGlobalPoolsSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewListGlobalPoolsRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933") + pools, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().ListGlobalPools(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if pools == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Logf("Result: %+v", pools) + for _, pool := range pools.Items { + t.Logf("Pool: %+v", pool) + } + t.Log("PASS") +} + +func TestCreateGlobalPoolSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + member := global.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false) + poolMember := global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100) + poolMember.WithMembers(member) + opt := global.NewCreateGlobalPoolRequest("annd2-test-pool-4", global.GlobalPoolProtocolTCP). + WithLoadBalancerId("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933"). + WithHealthMonitor(global.NewGlobalHealthMonitor(global.GlobalPoolHealthCheckProtocolTCP)). + WithMembers(poolMember) + pool, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().CreateGlobalPool(opt) + + if sdkerr != nil { + t.Log(sdkerr.GetError()) + t.Log(sdkerr.GetErrorCode()) + t.Log(sdkerr.GetMessage()) + t.Log(sdkerr.GetErrorCategories()) + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if pool == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Log("Result: ", pool) + t.Log("PASS") +} + +func TestCreateGlobalPoolHTTPSSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + member := global.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false) + poolMember := global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100) + poolMember.WithMembers(member) + opt := global.NewCreateGlobalPoolRequest("annd2-test-pool-5", global.GlobalPoolProtocolTCP). + WithLoadBalancerId("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933"). + WithHealthMonitor( + global.NewGlobalHealthMonitor(global.GlobalPoolHealthCheckProtocolHTTPs). + WithHealthCheckMethod("GET"). + WithPath("/sfdsaf"). + WithHttpVersion("1.1"). + WithSuccessCode("200"). + WithDomainName("example.com"), + ). + WithMembers(poolMember) + pool, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().CreateGlobalPool(opt) + + if sdkerr != nil { + t.Log(sdkerr.GetError()) + t.Log(sdkerr.GetErrorCode()) + t.Log(sdkerr.GetMessage()) + t.Log(sdkerr.GetErrorCategories()) + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if pool == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Log("Result: ", pool) + t.Log("PASS") +} + +func TestUpdateGlobalPoolHTTPSSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + httpMonitor := global.NewGlobalHealthMonitor(global.GlobalPoolHealthCheckProtocolHTTPs). + WithDomainName("exampleee.com"). + WithHealthCheckMethod("POST"). + WithPath("/hghjgj"). + WithHttpVersion("1.1") + opt := global.NewUpdateGlobalPoolRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "gpool-30c2a387-7912-4be7-8e3b-448ef16548ab"). + WithHealthMonitor(httpMonitor) + + pool, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().UpdateGlobalPool(opt) + + if sdkerr != nil { + t.Log(sdkerr.GetError()) + t.Log(sdkerr.GetErrorCode()) + t.Log(sdkerr.GetMessage()) + t.Log(sdkerr.GetErrorCategories()) + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if pool == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Log("Result: ", pool) + t.Log("PASS") +} + +func TestDeleteGlobalPoolSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewDeleteGlobalPoolRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "gpool-1ffbe2f4-0bb5-4272-afe9-0dfa8a4365df") + sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().DeleteGlobalPool(opt) + + if sdkerr != nil { + t.Log(sdkerr.GetError()) + t.Log(sdkerr.GetErrorCode()) + t.Log(sdkerr.GetMessage()) + t.Log(sdkerr.GetErrorCategories()) + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + t.Log("PASS") +} + +func TestListGlobalPoolMembersSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewListGlobalPoolMembersRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "gpool-0e2f3513-8a17-4fc9-b509-8d951fd25b03") + members, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().ListGlobalPoolMembers(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if members == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Logf("Result: %+v", members) + for _, member := range members.Items { + t.Logf("Member: %+v", member) + for _, m := range member.Members.Items { + t.Logf(" - Member: %+v", m) + } + } + t.Log("PASS") +} + +func TestPatchGlobalPoolMemberSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + createAction := global.NewPatchGlobalPoolCreateBulkActionRequest( + global.NewGlobalPoolMemberRequest("patch_name", "hcm", "net-86b7c84a-b3dd-4e6a-b66b-d28f36f3fc5f", 100).WithMembers( + global.NewGlobalMemberRequest("patch_name_4", "10.105.0.4", "sub-7ceeed28-2cad-4bcd-9a4a-a0041c6d6304", 80, 80, 1, false), + global.NewGlobalMemberRequest("patch_name_3", "10.105.0.3", "sub-a7fceae7-5ab5-4768-993f-8e6465f75050", 80, 80, 1, false), + ), + ) + updateAction := global.NewPatchGlobalPoolUpdateBulkActionRequest("gpool-mem-1ea280e7-6739-4ede-9d6a-7d2e39036b2c", + global.NewUpdateGlobalPoolMemberRequest(100).WithMembers( + global.NewGlobalMemberRequest("patch_name_44", "10.105.0.44", "sub-7ceeed28-2cad-4bcd-9a4a-a0041c6d6304", 80, 80, 1, false), + global.NewGlobalMemberRequest("patch_name_33", "10.105.0.33", "sub-a7fceae7-5ab5-4768-993f-8e6465f75050", 80, 80, 1, false), + ), + ) + deleteAction := global.NewPatchGlobalPoolDeleteBulkActionRequest("gpool-mem-e4a56d03-baf8-448b-98ab-404219fddede") + opt := global.NewPatchGlobalPoolMemberRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "gpool-b31482ab-e84b-4768-a0dd-dacc4178a451"). + WithBulkAction( + createAction, + updateAction, + deleteAction) + sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().PatchGlobalPoolMember(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + t.Log("PASS") +} diff --git a/vngcloud/entity/loadbalancer_global.go b/vngcloud/entity/loadbalancer_global.go index 2fd0b2c..00dec5e 100644 --- a/vngcloud/entity/loadbalancer_global.go +++ b/vngcloud/entity/loadbalancer_global.go @@ -45,17 +45,83 @@ type ListGlobalLoadBalancers struct { Offset int `json:"offset"` } -// type ListGlobalLoadBalancerPackages struct { -// Items []*LoadBalancerPackage -// } - -// type GlobalLoadBalancerPackage struct { -// UUID string -// Name string -// Type string -// ConnectionNumber int -// DataTransfer int -// Mode string -// LbType string -// DisplayLbType string -// } +type GlobalPool struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt *string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + Algorithm string `json:"algorithm"` + StickySession *string `json:"stickySession"` + TLSEnabled *string `json:"tlsEnabled"` + Protocol string `json:"protocol"` + Status string `json:"status"` +} + +type GlobalPoolHealthMonitor struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt *string `json:"deletedAt"` + ID string `json:"id"` + GlobalPoolID string `json:"globalPoolId"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + Protocol string `json:"protocol"` + Path *string `json:"path"` + Timeout int `json:"timeout"` + IntervalTime int `json:"intervalTime"` + HealthyThreshold int `json:"healthyThreshold"` + UnhealthyThreshold int `json:"unhealthyThreshold"` + HTTPVersion *string `json:"httpVersion"` + HTTPMethod *string `json:"httpMethod"` + DomainName *string `json:"domainName"` + SuccessCode *string `json:"successCode"` + Status string `json:"status"` +} + +type GlobalPoolMember struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt *string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Region string `json:"region"` + GlobalPoolID string `json:"globalPoolId"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + TrafficDial int `json:"trafficDial"` + VpcID string `json:"vpcId"` + Status string `json:"status"` + Members *ListGlobalMembers `json:"members"` +} + +type ListGlobalMembers struct { + Items []*GlobalPoolMemberDetail +} + +type GlobalPoolMemberDetail struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt *string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + GlobalPoolMemberID string `json:"globalPoolMemberId"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + SubnetID string `json:"subnetId"` + Address string `json:"address"` + Weight int `json:"weight"` + Port int `json:"port"` + MonitorPort int `json:"monitorPort"` + BackupRole bool `json:"backupRole"` + Status string `json:"status"` +} + +type ListGlobalPools struct { + Items []*GlobalPool +} + +type ListGlobalPoolMembers struct { + Items []*GlobalPoolMember +} diff --git a/vngcloud/services/loadbalancer/global/glb.go b/vngcloud/services/loadbalancer/global/glb.go index 31d80b5..df134e3 100644 --- a/vngcloud/services/loadbalancer/global/glb.go +++ b/vngcloud/services/loadbalancer/global/glb.go @@ -1,89 +1,13 @@ package global import ( + "fmt" + lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" lserr "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/sdk_error" ) -// func (s *GlobalLoadBalancerService) CreateLoadBalancer(popts ICreateLoadBalancerRequest) (*lsentity.LoadBalancer, lserr.IError) { -// url := createLoadBalancerUrl(s.VLBClient) -// resp := new(CreateLoadBalancerResponse) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonBody(popts.ToRequestBody()). -// WithJsonResponse(resp). -// WithJsonError(errResp) - -// if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { -// return nil, lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerExceedQuota(errResp)). -// WithParameters(popts.ToMap()). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return resp.ToEntityLoadBalancer(), nil -// } - -// func (s *GlobalLoadBalancerService) ResizeLoadBalancer(popts IResizeLoadBalancerRequest) (*lsentity.LoadBalancer, lserr.IError) { -// url := resizeLoadBalancerUrl(s.VLBClient, popts) -// resp := new(ResizeLoadBalancerResponse) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonBody(popts.ToRequestBody()). -// WithJsonResponse(resp). -// WithJsonError(errResp) - -// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { -// return nil, lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound(errResp), -// lserr.WithErrorLoadBalancerNotReady(errResp)) -// } - -// return resp.ToEntityLoadBalancer(), nil -// } - -// func (s *GlobalLoadBalancerService) ListLoadBalancerPackages(popts IListLoadBalancerPackagesRequest) (*lsentity.ListLoadBalancerPackages, lserr.IError) { -// url := listLoadBalancerPackagesUrl(s.VLBClient) -// resp := new(ListLoadBalancerPackagesResponse) -// 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) -// } - -// return resp.ToEntityListLoadBalancerPackages(), nil -// } - -// func (s *GlobalLoadBalancerService) GetLoadBalancerById(popts IGetLoadBalancerByIdRequest) (*lsentity.LoadBalancer, lserr.IError) { -// url := getLoadBalancerByIdUrl(s.VLBClient, popts) -// resp := new(GetLoadBalancerByIdResponse) -// 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)). -// WithKVparameters("loadBalancerId", popts.GetLoadBalancerId()). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return resp.ToEntityLoadBalancer(), nil -// } - func (s *LoadBalancerServiceGlobal) ListGlobalLoadBalancers(popts IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) { url := listGlobalLoadBalancersUrl(s.VLBClient, popts) resp := new(ListGlobalLoadBalancersResponse) @@ -102,416 +26,141 @@ func (s *LoadBalancerServiceGlobal) ListGlobalLoadBalancers(popts IListGlobalLoa return resp.ToEntityListGlobalLoadBalancers(), nil } -// func (s *GlobalLoadBalancerService) GetPoolHealthMonitorById(popts IGetPoolHealthMonitorByIdRequest) (*lsentity.HealthMonitor, lserr.IError) { -// url := getPoolHealthMonitorByIdUrl(s.VLBClient, popts) -// resp := new(GetPoolHealthMonitorByIdResponse) -// 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)) -// } - -// return resp.ToEntityHealthMonitor(), nil -// } - -// func (s *GlobalLoadBalancerService) CreatePool(popts ICreatePoolRequest) (*lsentity.Pool, lserr.IError) { -// url := createPoolUrl(s.VLBClient, popts) -// resp := new(CreatePoolResponse) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonBody(popts.ToRequestBody()). -// WithJsonResponse(resp). -// WithJsonError(errResp) - -// if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { -// return nil, lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound(errResp), -// lserr.WithErrorLoadBalancerNotFound2(errResp), -// lserr.WithErrorLoadBalancerNotReady(errResp), -// lserr.WithErrorLoadBalancerDuplicatePoolName(errResp)). -// WithParameters(popts.ToMap()). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return resp.ToEntityPool(), nil -// } - -// func (s *GlobalLoadBalancerService) UpdatePool(popts IUpdatePoolRequest) lserr.IError { -// url := updatePoolUrl(s.VLBClient, popts) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonBody(popts.ToRequestBody()). -// WithJsonError(errResp) - -// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { -// return lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound2(errResp), -// lserr.WithErrorLoadBalancerNotReady(errResp), -// lserr.WithErrorListenerNotFound(errResp)). -// AppendCategories(lserr.ErrCatProductVlb) -// } -// return nil -// } - -// func (s *GlobalLoadBalancerService) CreateListener(popts ICreateListenerRequest) (*lsentity.Listener, lserr.IError) { -// url := createListenerUrl(s.VLBClient, popts) -// resp := new(CreateListenerResponse) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonBody(popts.ToRequestBody()). -// WithJsonResponse(resp). -// WithJsonError(errResp) - -// if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { -// return nil, lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound2(errResp), -// lserr.WithErrorLoadBalancerNotReady(errResp), -// lserr.WithErrorListenerDuplicateName(errResp), -// lserr.WithErrorPoolNotFound(errResp), -// lserr.WithErrorListenerDuplicateProtocolOrPort(errResp)). -// WithParameters(popts.ToMap()). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return resp.ToEntityListener(), nil -// } - -// func (s *GlobalLoadBalancerService) UpdateListener(popts IUpdateListenerRequest) lserr.IError { -// url := updateListenerUrl(s.VLBClient, popts) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonBody(popts.ToRequestBody()). -// WithJsonError(errResp) - -// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { -// return lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound2(errResp), -// lserr.WithErrorLoadBalancerNotReady(errResp), -// lserr.WithErrorListenerNotFound(errResp)). -// AppendCategories(lserr.ErrCatProductVlb) -// } +// -------------------------------------------------- -// return nil -// } - -// func (s *GlobalLoadBalancerService) ListListenersByLoadBalancerId(popts IListListenersByLoadBalancerIdRequest) (*lsentity.ListListeners, lserr.IError) { -// url := listListenersByLoadBalancerIdUrl(s.VLBClient, popts) -// resp := new(ListListenersByLoadBalancerIdResponse) -// 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)). -// WithKVparameters("loadBalancerId", popts.GetLoadBalancerId()). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return resp.ToEntityListListeners(), nil -// } - -// func (s *GlobalLoadBalancerService) ListPoolsByLoadBalancerId(popts IListPoolsByLoadBalancerIdRequest) (*lsentity.ListPools, lserr.IError) { -// url := listPoolsByLoadBalancerIdUrl(s.VLBClient, popts) -// resp := new(ListPoolsByLoadBalancerIdResponse) -// 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)). -// WithKVparameters("loadBalancerId", popts.GetLoadBalancerId()). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return resp.ToEntityListPools(), nil -// } - -// func (s *GlobalLoadBalancerService) UpdatePoolMembers(popts IUpdatePoolMembersRequest) lserr.IError { -// url := updatePoolMembersUrl(s.VLBClient, popts) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonBody(popts.ToRequestBody()). -// WithJsonError(errResp) - -// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { -// return lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound2(errResp), -// lserr.WithErrorLoadBalancerNotReady(errResp), -// lserr.WithErrorPoolNotFound(errResp), -// lserr.WithErrorMemberMustIdentical(errResp)).AppendCategories(lserr.ErrCatProductVlb) -// } - -// return nil -// } - -// func (s *GlobalLoadBalancerService) ListPoolMembers(popts IListPoolMembersRequest) (*lsentity.ListMembers, lserr.IError) { -// url := listPoolMembersUrl(s.VLBClient, popts) -// resp := new(ListPoolMembersResponse) -// 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)). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return resp.ToEntityListMembers(), nil -// } - -// func (s *GlobalLoadBalancerService) DeletePoolById(popts IDeletePoolByIdRequest) lserr.IError { -// url := deletePoolByIdUrl(s.VLBClient, popts) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonError(errResp) - -// if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { -// return lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorPoolInUse(errResp), -// lserr.WithErrorLoadBalancerNotReady(errResp), -// lserr.WithErrorPoolNotFound(errResp)). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return nil -// } - -// func (s *GlobalLoadBalancerService) DeleteListenerById(popts IDeleteListenerByIdRequest) lserr.IError { -// url := deleteListenerByIdUrl(s.VLBClient, popts) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonError(errResp) - -// if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { -// return lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound2(errResp), -// lserr.WithErrorListenerNotFound(errResp), -// lserr.WithErrorLoadBalancerNotReady(errResp)). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return nil -// } - -// func (s *GlobalLoadBalancerService) DeleteLoadBalancerById(popts IDeleteLoadBalancerByIdRequest) lserr.IError { -// url := deleteLoadBalancerByIdUrl(s.VLBClient, popts) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonError(errResp) - -// if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { -// return lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound(errResp), -// lserr.WithErrorLoadBalancerNotReady(errResp), -// lserr.WithErrorLoadBalancerIsCreating(errResp), -// lserr.WithErrorLoadBalancerIsDeleting(errResp)). -// WithKVparameters( -// "loadBalancerId", popts.GetLoadBalancerId(), -// "projectId", s.getProjectId()). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return nil -// } - -// func (s *GlobalLoadBalancerService) 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()). -// AppendCategories(lserr.ErrCatProductVlb) -// } - -// return resp.ToEntityPool(), nil -// } +func (s *LoadBalancerServiceGlobal) ListGlobalPools(popts IListGlobalPoolsRequest) (*lsentity.ListGlobalPools, lserr.IError) { + url := listGlobalPoolsUrl(s.VLBClient, popts) + resp := new(ListGlobalPoolsResponse) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(200). + WithJsonResponse(resp). + WithJsonError(errResp) -// func (s *GlobalLoadBalancerService) 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)). + WithKVparameters("loadBalancerId", popts.GetLoadBalancerId()). + AppendCategories(lserr.ErrCatProductVlb) + } -// 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()). -// AppendCategories(lserr.ErrCatProductVlb) -// } + return resp.ToEntityListGlobalPools(), nil +} -// return resp.ToEntityListener(), nil -// } +// -------------------------------------------------- -// func (s *GlobalLoadBalancerService) ResizeLoadBalancerById(popts IResizeLoadBalancerByIdRequest) lserr.IError { -// url := resizeLoadBalancerByIdUrl(s.VLBClient, popts) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonBody(popts.ToRequestBody()). -// WithJsonError(errResp) +func (s *LoadBalancerServiceGlobal) CreateGlobalPool(popts ICreateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) { + url := createGlobalPoolUrl(s.VLBClient, popts) + resp := new(CreateGlobalPoolResponse) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(202). + WithJsonBody(popts.ToRequestBody()). + WithJsonResponse(resp). + WithJsonError(errResp) -// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { -// return lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerPackageNotFound(errResp), -// lserr.WithErrorLoadBalancerNotFound(errResp), -// lserr.WithErrorLoadBalancerNotFound2(errResp), -// lserr.WithErrorLoadBalancerNotReady(errResp), -// lserr.WithErrorLoadBalancerResizeSamePackage(errResp)). -// WithParameters(popts.ToMap()). -// AppendCategories(lserr.ErrCatProductVlb) -// } + if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { + fmt.Println("sdkErr: ", sdkErr) + return nil, lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorLoadBalancerNotFound(errResp), + lserr.WithErrorLoadBalancerNotFound2(errResp), + lserr.WithErrorLoadBalancerNotReady(errResp), + lserr.WithErrorLoadBalancerDuplicatePoolName(errResp)). + WithParameters(popts.ToMap()). + AppendCategories(lserr.ErrCatProductVlb) + } -// return nil -// } + return resp.ToEntityPool(), nil +} -// // policy +// -------------------------------------------------- -// func (s *GlobalLoadBalancerService) ListPolicies(popts IListPoliciesRequest) (*lsentity.ListPolicies, lserr.IError) { -// url := listPoliciesUrl(s.VLBClient, popts) -// resp := new(ListPoliciesResponse) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(200). -// WithJsonResponse(resp). -// WithJsonError(errResp) +func (s *LoadBalancerServiceGlobal) UpdateGlobalPool(popts IUpdateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) { + url := updateGlobalPoolUrl(s.VLBClient, popts) + resp := new(UpdateGlobalPoolResponse) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(202). + WithJsonBody(popts.ToRequestBody()). + WithJsonResponse(resp). + WithJsonError(errResp) -// if _, sdkErr := s.VLBClient.Get(url, req); sdkErr != nil { -// return nil, lserr.SdkErrorHandler(sdkErr, errResp) -// } + if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { + return nil, lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorLoadBalancerNotFound(errResp), + lserr.WithErrorLoadBalancerNotFound2(errResp), + lserr.WithErrorLoadBalancerNotReady(errResp), + lserr.WithErrorLoadBalancerDuplicatePoolName(errResp)). + WithParameters(popts.ToMap()). + AppendCategories(lserr.ErrCatProductVlb) + } -// return resp.ToEntityListPolicies(), nil -// } + return resp.ToEntityPool(), nil +} -// func (s *GlobalLoadBalancerService) CreatePolicy(popts ICreatePolicyRequest) (*lsentity.Policy, lserr.IError) { -// url := createPolicyUrl(s.VLBClient, popts) -// resp := new(CreatePolicyResponse) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonBody(popts.ToRequestBody()). -// WithJsonResponse(resp). -// WithJsonError(errResp) +// -------------------------------------------------- -// if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { -// return nil, lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound(errResp), -// lserr.WithErrorListenerNotFound(errResp), -// ).WithParameters(popts.ToMap()) -// } +func (s *LoadBalancerServiceGlobal) DeleteGlobalPool(popts IDeleteGlobalPoolRequest) lserr.IError { + url := deleteGlobalPoolUrl(s.VLBClient, popts) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(202). + WithJsonError(errResp) -// return resp.ToEntityPolicy(), nil -// } + if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { + return lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorLoadBalancerNotFound(errResp), + lserr.WithErrorLoadBalancerNotFound2(errResp), + lserr.WithErrorLoadBalancerNotReady(errResp)). + AppendCategories(lserr.ErrCatProductVlb) + } -// func (s *GlobalLoadBalancerService) GetPolicyById(popts IGetPolicyByIdRequest) (*lsentity.Policy, lserr.IError) { -// url := getPolicyByIdUrl(s.VLBClient, popts) -// resp := new(GetPolicyResponse) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(200). -// WithJsonResponse(resp). -// WithJsonError(errResp) + return nil +} -// if _, sdkErr := s.VLBClient.Get(url, req); sdkErr != nil { -// return nil, lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound(errResp), -// lserr.WithErrorListenerNotFound(errResp), -// ).WithKVparameters("policyId", popts.GetPolicyId()) -// } +// -------------------------------------------------- -// return resp.ToEntityPolicy(), nil -// } +func (s *LoadBalancerServiceGlobal) ListGlobalPoolMembers(popts IListGlobalPoolMembersRequest) (*lsentity.ListGlobalPoolMembers, lserr.IError) { + url := listGlobalPoolMembersUrl(s.VLBClient, popts) + resp := new(ListGlobalPoolMembersResponse) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(200). + WithJsonResponse(resp). + WithJsonError(errResp) -// func (s *GlobalLoadBalancerService) UpdatePolicy(popts IUpdatePolicyRequest) lserr.IError { -// url := updatePolicyUrl(s.VLBClient, popts) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonBody(popts.ToRequestBody()). -// WithJsonError(errResp) + if _, sdkErr := s.VLBClient.Get(url, req); sdkErr != nil { + return nil, lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorLoadBalancerNotFound(errResp), + lserr.WithErrorLoadBalancerNotFound2(errResp)). + AppendCategories(lserr.ErrCatProductVlb) + } -// if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { -// return lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound(errResp), -// lserr.WithErrorListenerNotFound(errResp), -// ) -// } + return resp.ToEntityListGlobalPoolMembers(), nil +} -// return nil -// } +// -------------------------------------------------- -// func (s *GlobalLoadBalancerService) DeletePolicyById(popts IDeletePolicyByIdRequest) lserr.IError { -// url := deletePolicyByIdUrl(s.VLBClient, popts) -// errResp := lserr.NewErrorResponse(lserr.NormalErrorType) -// req := lsclient.NewRequest(). -// WithHeader("User-Agent", popts.ParseUserAgent()). -// WithOkCodes(202). -// WithJsonError(errResp) +func (s *LoadBalancerServiceGlobal) PatchGlobalPoolMember(popts IPatchGlobalPoolMemberRequest) lserr.IError { + url := patchGlobalPoolMemberUrl(s.VLBClient, popts) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(202). + WithJsonBody(popts.ToRequestBody()). + WithJsonError(errResp) -// if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { -// return lserr.SdkErrorHandler(sdkErr, errResp, -// lserr.WithErrorLoadBalancerNotFound(errResp), -// lserr.WithErrorListenerNotFound(errResp), -// ) -// } + if _, sdkErr := s.VLBClient.Patch(url, req); sdkErr != nil { + return lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorLoadBalancerNotFound(errResp), + lserr.WithErrorLoadBalancerNotFound2(errResp)). + AppendCategories(lserr.ErrCatProductVlb) + } -// return nil -// } + return nil +} diff --git a/vngcloud/services/loadbalancer/global/glb_listener_request.go b/vngcloud/services/loadbalancer/global/glb_listener_request.go new file mode 100644 index 0000000..8372388 --- /dev/null +++ b/vngcloud/services/loadbalancer/global/glb_listener_request.go @@ -0,0 +1,245 @@ +package global + +// import ( +// lscommon "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/common" +// lstr "strings" +// ) + +type GlobalListenerProtocol string + +const ( + GlobalListenerProtocolTCP GlobalListenerProtocol = "TCP" +) + +// func NewCreateListenerRequest(pname string, pprotocol ListenerProtocol, pport int) ICreateListenerRequest { +// opts := new(CreateListenerRequest) +// opts.ListenerName = pname +// opts.ListenerProtocol = pprotocol +// opts.ListenerProtocolPort = pport +// opts.AllowedCidrs = "0.0.0.0/0" +// opts.TimeoutClient = 50 +// opts.TimeoutMember = 50 +// opts.TimeoutConnection = 5 + +// return opts +// } + +// func NewUpdateListenerRequest(plbId, plistenerId string) IUpdateListenerRequest { +// opts := new(UpdateListenerRequest) +// opts.LoadBalancerId = plbId +// opts.ListenerId = plistenerId + +// return opts +// } + +// func NewListListenersByLoadBalancerIdRequest(plbId string) IListListenersByLoadBalancerIdRequest { +// opts := new(ListListenersByLoadBalancerIdRequest) +// opts.LoadBalancerId = plbId + +// return opts +// } + +// func NewDeleteListenerByIdRequest(plbId, plistenerId string) IDeleteListenerByIdRequest { +// opts := new(DeleteListenerByIdRequest) +// opts.LoadBalancerId = plbId +// opts.ListenerId = plistenerId + +// return opts +// } + +// func NewGetListenerByIdRequest(plbId, plistenerId string) IGetListenerByIdRequest { +// opts := new(GetListenerByIdRequest) +// opts.LoadBalancerId = plbId +// opts.ListenerId = plistenerId + +// return opts +// } + +// type CreateListenerRequest struct { +// AllowedCidrs string `json:"allowedCidrs"` +// ListenerName string `json:"listenerName"` +// ListenerProtocol ListenerProtocol `json:"listenerProtocol"` +// ListenerProtocolPort int `json:"listenerProtocolPort"` +// TimeoutClient int `json:"timeoutClient"` +// TimeoutConnection int `json:"timeoutConnection"` +// TimeoutMember int `json:"timeoutMember"` +// Headers *[]string `json:"headers"` +// DefaultPoolId *string `json:"defaultPoolId"` +// CertificateAuthorities *[]string `json:"certificateAuthorities"` +// ClientCertificate *string `json:"clientCertificate"` +// DefaultCertificateAuthority *string `json:"defaultCertificateAuthority"` + +// lscommon.LoadBalancerCommon +// lscommon.UserAgent +// } + +// type UpdateListenerRequest struct { +// AllowedCidrs string `json:"allowedCidrs"` +// DefaultPoolId string `json:"defaultPoolId"` +// TimeoutClient int `json:"timeoutClient"` +// TimeoutConnection int `json:"timeoutConnection"` +// TimeoutMember int `json:"timeoutMember"` +// Headers *[]string `json:"headers"` +// CertificateAuthorities *[]string `json:"certificateAuthorities"` +// ClientCertificate *string `json:"clientCertificate"` +// DefaultCertificateAuthority *string `json:"defaultCertificateAuthority"` + +// lscommon.LoadBalancerCommon +// lscommon.ListenerCommon +// lscommon.UserAgent +// } + +// type ListListenersByLoadBalancerIdRequest struct { +// lscommon.LoadBalancerCommon +// lscommon.UserAgent +// } + +// type DeleteListenerByIdRequest struct { +// lscommon.LoadBalancerCommon +// lscommon.ListenerCommon +// lscommon.UserAgent +// } + +// type GetListenerByIdRequest struct { +// lscommon.LoadBalancerCommon +// lscommon.ListenerCommon +// lscommon.UserAgent +// } + +// func (s *CreateListenerRequest) ToRequestBody() interface{} { +// if s == nil { +// return nil +// } + +// if s.ListenerProtocol == ListenerProtocolHTTPS { +// return s +// } + +// s.CertificateAuthorities = nil +// s.ClientCertificate = nil +// s.DefaultCertificateAuthority = nil + +// return s +// } + +// func (s *CreateListenerRequest) WithAllowedCidrs(pcidrs ...string) ICreateListenerRequest { +// if len(pcidrs) < 1 { +// return s +// } + +// s.AllowedCidrs = lstr.Join(pcidrs, ",") +// return s +// } + +// func (s *CreateListenerRequest) WithTimeoutClient(ptoc int) ICreateListenerRequest { +// s.TimeoutClient = ptoc +// return s +// } + +// func (s *CreateListenerRequest) WithTimeoutConnection(ptoc int) ICreateListenerRequest { +// s.TimeoutConnection = ptoc +// return s +// } + +// func (s *CreateListenerRequest) WithTimeoutMember(ptom int) ICreateListenerRequest { +// s.TimeoutMember = ptom +// return s +// } + +// func (s *CreateListenerRequest) AddCidrs(pcidrs ...string) ICreateListenerRequest { +// if len(pcidrs) < 1 { +// return s +// } + +// if s.AllowedCidrs == "" { +// return s.WithAllowedCidrs(pcidrs...) +// } else { +// s.AllowedCidrs = s.AllowedCidrs + "," + lstr.Join(pcidrs, ",") +// } + +// return s +// } + +// func (s *CreateListenerRequest) WithLoadBalancerId(plbid string) ICreateListenerRequest { +// s.LoadBalancerId = plbid +// return s +// } + +// func (s *CreateListenerRequest) WithDefaultPoolId(ppoolId string) ICreateListenerRequest { +// s.DefaultPoolId = &ppoolId +// return s +// } + +// func (s *CreateListenerRequest) ToMap() map[string]interface{} { +// return map[string]interface{}{ +// "listenerName": s.ListenerName, +// "listenerProtocol": s.ListenerProtocol, +// "listenerProtocolPort": s.ListenerProtocolPort, +// "timeoutClient": s.TimeoutClient, +// "timeoutConnection": s.TimeoutConnection, +// "timeoutMember": s.TimeoutMember, +// "allowedCidrs": s.AllowedCidrs, +// "defaultPoolId": s.DefaultPoolId, +// "certificateAuthorities": s.CertificateAuthorities, +// "clientCertificate": s.ClientCertificate, +// "defaultCertificateAuthority": s.DefaultCertificateAuthority, +// "headers": s.Headers, +// } +// } + +// func (s *UpdateListenerRequest) ToRequestBody() interface{} { +// return s +// } + +// func (s *UpdateListenerRequest) WithCidrs(pcidrs ...string) IUpdateListenerRequest { +// if len(pcidrs) < 1 { +// return s +// } + +// s.AllowedCidrs = lstr.Join(pcidrs, ",") +// return s +// } + +// func (s *UpdateListenerRequest) WithTimeoutClient(ptoc int) IUpdateListenerRequest { +// s.TimeoutClient = ptoc +// return s +// } + +// func (s *UpdateListenerRequest) WithTimeoutConnection(ptoc int) IUpdateListenerRequest { +// s.TimeoutConnection = ptoc +// return s +// } + +// func (s *UpdateListenerRequest) WithTimeoutMember(ptom int) IUpdateListenerRequest { +// s.TimeoutMember = ptom +// return s +// } + +// func (s *UpdateListenerRequest) WithDefaultPoolId(ppoolId string) IUpdateListenerRequest { +// s.DefaultPoolId = ppoolId +// return s +// } + +// func (s *UpdateListenerRequest) WithHeaders(pheaders ...string) IUpdateListenerRequest { +// if len(pheaders) < 1 { +// return s +// } + +// s.Headers = &pheaders +// return s +// } + +// func (s *UpdateListenerRequest) WithCertificateAuthorities(pca ...string) IUpdateListenerRequest { +// s.CertificateAuthorities = &pca +// return s +// } + +// func (s *UpdateListenerRequest) WithClientCertificate(pclientCert string) IUpdateListenerRequest { +// s.ClientCertificate = &pclientCert +// return s +// } + +// func (s *UpdateListenerRequest) WithDefaultCertificateAuthority(pdefaultCA string) IUpdateListenerRequest { +// s.DefaultCertificateAuthority = &pdefaultCA +// return s +// } diff --git a/vngcloud/services/loadbalancer/global/glb_listener_response.go b/vngcloud/services/loadbalancer/global/glb_listener_response.go new file mode 100644 index 0000000..c484bf9 --- /dev/null +++ b/vngcloud/services/loadbalancer/global/glb_listener_response.go @@ -0,0 +1,81 @@ +package global + +// import lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" + +// type CreateListenerResponse struct { +// UUID string `json:"uuid"` +// } + +// 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"` +// Description string `json:"description,omitempty"` +// Protocol string `json:"protocol"` +// ProtocolPort int `json:"protocolPort"` +// ConnectionLimit int `json:"connectionLimit"` +// DefaultPoolId string `json:"defaultPoolId"` +// DefaultPoolName string `json:"defaultPoolName"` +// TimeoutClient int `json:"timeoutClient"` +// TimeoutMember int `json:"timeoutMember"` +// TimeoutConnection int `json:"timeoutConnection"` +// AllowedCidrs string `json:"allowedCidrs"` +// Headers []string `json:"headers"` +// CertificateAuthorities []string `json:"certificateAuthorities"` +// DisplayStatus string `json:"displayStatus"` +// CreatedAt string `json:"createdAt"` +// UpdatedAt string `json:"updatedAt"` +// DefaultCertificateAuthority *string `json:"defaultCertificateAuthority"` +// ClientCertificateAuthentication *string `json:"clientCertificateAuthentication"` +// ProgressStatus string `json:"progressStatus"` +// } + +// func (s *CreateListenerResponse) ToEntityListener() *lsentity.Listener { +// return &lsentity.Listener{ +// UUID: s.UUID, +// } +// } + +// func (s *ListListenersByLoadBalancerIdResponse) ToEntityListListeners() *lsentity.ListListeners { +// listeners := &lsentity.ListListeners{} +// for _, itemListener := range s.Data { +// listeners.Add(itemListener.toEntityListener()) +// } +// return listeners +// } + +// func (s *Listener) toEntityListener() *lsentity.Listener { +// return &lsentity.Listener{ +// UUID: s.UUID, +// Name: s.Name, +// Description: s.Description, +// Protocol: s.Protocol, +// ProtocolPort: s.ProtocolPort, +// ConnectionLimit: s.ConnectionLimit, +// DefaultPoolId: s.DefaultPoolId, +// DefaultPoolName: s.DefaultPoolName, +// TimeoutClient: s.TimeoutClient, +// TimeoutMember: s.TimeoutMember, +// TimeoutConnection: s.TimeoutConnection, +// AllowedCidrs: s.AllowedCidrs, +// Headers: s.Headers, +// CertificateAuthorities: s.CertificateAuthorities, +// DisplayStatus: s.DisplayStatus, +// CreatedAt: s.CreatedAt, +// UpdatedAt: s.UpdatedAt, +// DefaultCertificateAuthority: s.DefaultCertificateAuthority, +// ClientCertificateAuthentication: s.ClientCertificateAuthentication, +// ProgressStatus: s.ProgressStatus, +// } +// } + +// func (s *GetListenerByIdResponse) ToEntityListener() *lsentity.Listener { +// return s.Data.toEntityListener() +// } diff --git a/vngcloud/services/loadbalancer/global/glb_pool_requests.go b/vngcloud/services/loadbalancer/global/glb_pool_requests.go new file mode 100644 index 0000000..2692df9 --- /dev/null +++ b/vngcloud/services/loadbalancer/global/glb_pool_requests.go @@ -0,0 +1,753 @@ +package global + +import lscommon "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/common" + +func PointerOf[T any](t T) *T { + return &t +} + +type ( + GlobalPoolAlgorithm string + GlobalPoolProtocol string + GlobalPoolHealthCheckProtocol string + GlobalPoolHealthCheckMethod string + GlobalPoolHealthCheckHttpVersion string +) + +const ( + GlobalPoolAlgorithmRoundRobin GlobalPoolAlgorithm = "ROUND_ROBIN" + GlobalPoolAlgorithmLeastConn GlobalPoolAlgorithm = "LEAST_CONNECTIONS" + GlobalPoolAlgorithmSourceIP GlobalPoolAlgorithm = "SOURCE_IP" +) + +const ( + GlobalPoolProtocolTCP GlobalPoolProtocol = "TCP" + GlobalPoolProtocolProxy GlobalPoolProtocol = "PROXY" +) + +const ( + GlobalPoolHealthCheckProtocolTCP GlobalPoolHealthCheckProtocol = "TCP" + GlobalPoolHealthCheckProtocolHTTP GlobalPoolHealthCheckProtocol = "HTTP" + GlobalPoolHealthCheckProtocolHTTPs GlobalPoolHealthCheckProtocol = "HTTPS" +) + +const ( + GlobalPoolHealthCheckMethodGET GlobalPoolHealthCheckMethod = "GET" + GlobalPoolHealthCheckMethodPUT GlobalPoolHealthCheckMethod = "PUT" + GlobalPoolHealthCheckMethodPOST GlobalPoolHealthCheckMethod = "POST" +) + +const ( + GlobalPoolHealthCheckHttpVersionHttp1 GlobalPoolHealthCheckHttpVersion = "1.0" + GlobalPoolHealthCheckHttpVersionHttp1Minor1 GlobalPoolHealthCheckHttpVersion = "1.1" +) + +// -------------------------------------------------------------------------- + +var _ IListGlobalPoolsRequest = &ListGlobalPoolsRequest{} + +type ListGlobalPoolsRequest struct { + lscommon.UserAgent + lscommon.LoadBalancerCommon +} + +func (s *ListGlobalPoolsRequest) WithLoadBalancerId(plbId string) IListGlobalPoolsRequest { + s.LoadBalancerId = plbId + return s +} + +func NewListGlobalPoolsRequest(plbId string) IListGlobalPoolsRequest { + opts := &ListGlobalPoolsRequest{} + opts.LoadBalancerId = plbId + return opts +} + +// -------------------------------------------------------------------------- + +var _ ICreateGlobalPoolRequest = &CreateGlobalPoolRequest{} + +type CreateGlobalPoolRequest struct { + Algorithm GlobalPoolAlgorithm `json:"algorithm"` + Description string `json:"description,omitempty"` + Name string `json:"name"` + Protocol GlobalPoolProtocol `json:"protocol"` + Stickiness *bool `json:"stickiness,omitempty"` // only for l7, l4 doesn't have this field => nil + TLSEncryption *bool `json:"tlsEncryption,omitempty"` // only for l7, l4 doesn't have this field => nil + HealthMonitor IGlobalHealthMonitorRequest `json:"health"` + GlobalPoolMembers []ICreateGlobalPoolMemberRequest `json:"globalPoolMembers"` + + lscommon.LoadBalancerCommon + lscommon.UserAgent +} + +func (s *CreateGlobalPoolRequest) WithAlgorithm(palgorithm GlobalPoolAlgorithm) ICreateGlobalPoolRequest { + s.Algorithm = palgorithm + return s +} + +func (s *CreateGlobalPoolRequest) WithDescription(pdescription string) ICreateGlobalPoolRequest { + s.Description = pdescription + return s +} + +func (s *CreateGlobalPoolRequest) WithName(pname string) ICreateGlobalPoolRequest { + s.Name = pname + return s +} + +func (s *CreateGlobalPoolRequest) WithProtocol(pprotocol GlobalPoolProtocol) ICreateGlobalPoolRequest { + s.Protocol = pprotocol + return s +} + +func (s *CreateGlobalPoolRequest) WithHealthMonitor(phealth IGlobalHealthMonitorRequest) ICreateGlobalPoolRequest { + s.HealthMonitor = phealth + return s +} + +func (s *CreateGlobalPoolRequest) WithMembers(pmembers ...ICreateGlobalPoolMemberRequest) ICreateGlobalPoolRequest { + s.GlobalPoolMembers = append(s.GlobalPoolMembers, pmembers...) + return s +} + +func (s *CreateGlobalPoolRequest) WithLoadBalancerId(plbId string) ICreateGlobalPoolRequest { + s.LoadBalancerId = plbId + return s +} + +func (s *CreateGlobalPoolRequest) ToMap() map[string]interface{} { + err := map[string]interface{}{ + "algorithm": s.Algorithm, + "description": s.Description, + "name": s.Name, + "protocol": s.Protocol, + "stickiness": s.Stickiness, + "tlsEncryption": s.TLSEncryption, + "health": s.HealthMonitor.ToMap(), + "globalPoolMembers": make([]map[string]interface{}, 0), + } + + for _, member := range s.GlobalPoolMembers { + err["globalPoolMembers"] = append(err["globalPoolMembers"].([]map[string]interface{}), member.ToMap()) + } + + return err +} + +func (s *CreateGlobalPoolRequest) ToRequestBody() interface{} { + return s +} + +func NewCreateGlobalPoolRequest(pname string, pprotocol GlobalPoolProtocol) ICreateGlobalPoolRequest { + opts := &CreateGlobalPoolRequest{ + Name: pname, + Protocol: pprotocol, + Algorithm: GlobalPoolAlgorithmRoundRobin, + Description: "", + Stickiness: nil, + TLSEncryption: nil, + HealthMonitor: nil, + GlobalPoolMembers: make([]ICreateGlobalPoolMemberRequest, 0), + } + + return opts +} + +// -------------------------------------------------------------------------- + +var _ IGlobalHealthMonitorRequest = &GlobalHealthMonitorRequest{} + +type GlobalHealthMonitorRequest struct { + HealthCheckProtocol GlobalPoolHealthCheckProtocol `json:"protocol"` + HealthyThreshold int `json:"healthyThreshold"` + UnhealthyThreshold int `json:"unhealthyThreshold"` + Interval int `json:"interval"` + Timeout int `json:"timeout"` + HttpMethod *GlobalPoolHealthCheckMethod `json:"httpMethod,omitempty"` + HttpVersion *GlobalPoolHealthCheckHttpVersion `json:"httpVersion,omitempty"` + Path *string `json:"path,omitempty"` + DomainName *string `json:"domainName,omitempty"` + SuccessCode *string `json:"successCode,omitempty"` +} + +func (s *GlobalHealthMonitorRequest) WithHealthyThreshold(pthreshold int) IGlobalHealthMonitorRequest { + s.HealthyThreshold = pthreshold + return s +} + +func (s *GlobalHealthMonitorRequest) WithUnhealthyThreshold(pthreshold int) IGlobalHealthMonitorRequest { + s.UnhealthyThreshold = pthreshold + return s +} + +func (s *GlobalHealthMonitorRequest) WithProtocol(pprotocol GlobalPoolHealthCheckProtocol) IGlobalHealthMonitorRequest { + s.HealthCheckProtocol = pprotocol + return s +} + +func (s *GlobalHealthMonitorRequest) WithInterval(pinterval int) IGlobalHealthMonitorRequest { + s.Interval = pinterval + return s +} + +func (s *GlobalHealthMonitorRequest) WithTimeout(ptimeout int) IGlobalHealthMonitorRequest { + s.Timeout = ptimeout + return s +} + +func (s *GlobalHealthMonitorRequest) WithHealthCheckMethod(pmethod GlobalPoolHealthCheckMethod) IGlobalHealthMonitorRequest { + s.HttpMethod = &pmethod + return s +} + +func (s *GlobalHealthMonitorRequest) WithHttpVersion(pversion GlobalPoolHealthCheckHttpVersion) IGlobalHealthMonitorRequest { + s.HttpVersion = &pversion + return s +} + +func (s *GlobalHealthMonitorRequest) WithDomainName(pdomain string) IGlobalHealthMonitorRequest { + s.DomainName = &pdomain + return s +} + +func (s *GlobalHealthMonitorRequest) WithSuccessCode(pcode string) IGlobalHealthMonitorRequest { + s.SuccessCode = &pcode + return s +} + +func (s *GlobalHealthMonitorRequest) WithPath(ppath string) IGlobalHealthMonitorRequest { + s.Path = &ppath + return s +} + +func (s *GlobalHealthMonitorRequest) ToMap() map[string]interface{} { + err := map[string]interface{}{ + "protocol": s.HealthCheckProtocol, + "healthyThreshold": s.HealthyThreshold, + "unhealthyThreshold": s.UnhealthyThreshold, + "interval": s.Interval, + "timeout": s.Timeout, + "httpMethod": s.HttpMethod, + "httpVersion": s.HttpVersion, + "path": s.Path, + "domainName": s.DomainName, + "successCode": s.SuccessCode, + } + + return err +} + +func (s *GlobalHealthMonitorRequest) ToRequestBody() interface{} { + return s +} + +func NewGlobalHealthMonitor(pcheckProtocol GlobalPoolHealthCheckProtocol) IGlobalHealthMonitorRequest { + opts := &GlobalHealthMonitorRequest{ + HealthCheckProtocol: pcheckProtocol, + HealthyThreshold: 3, + UnhealthyThreshold: 3, + Interval: 30, + Timeout: 5, + HttpMethod: nil, + HttpVersion: nil, + Path: nil, + DomainName: nil, + SuccessCode: nil, + } + if pcheckProtocol == GlobalPoolHealthCheckProtocolHTTP || pcheckProtocol == GlobalPoolHealthCheckProtocolHTTPs { + opts.HttpMethod = PointerOf(GlobalPoolHealthCheckMethodGET) + opts.HttpVersion = PointerOf(GlobalPoolHealthCheckHttpVersionHttp1Minor1) + opts.Path = PointerOf("/") + opts.DomainName = PointerOf("") + opts.SuccessCode = PointerOf("200") + } + return opts +} + +// -------------------------------------------------------------------------- + +var _ ICreateGlobalPoolMemberRequest = &GlobalPoolMemberRequest{} + +type GlobalPoolMemberRequest struct { + Name string `json:"name"` + Description string `json:"description,omitempty"` + Region string `json:"region"` + TrafficDial int `json:"trafficDial"` + VPCID string `json:"vpcId"` + Members []IGlobalMemberRequest `json:"members"` + + lscommon.LoadBalancerCommon + lscommon.PoolCommon + lscommon.UserAgent +} + +func (s *GlobalPoolMemberRequest) WithName(pname string) ICreateGlobalPoolMemberRequest { + s.Name = pname + return s +} + +func (s *GlobalPoolMemberRequest) WithDescription(pdescription string) ICreateGlobalPoolMemberRequest { + s.Description = pdescription + return s +} + +func (s *GlobalPoolMemberRequest) WithRegion(pregion string) ICreateGlobalPoolMemberRequest { + s.Region = pregion + return s +} + +func (s *GlobalPoolMemberRequest) WithTrafficDial(pdial int) ICreateGlobalPoolMemberRequest { + s.TrafficDial = pdial + return s +} + +func (s *GlobalPoolMemberRequest) WithVPCID(pvpcId string) ICreateGlobalPoolMemberRequest { + s.VPCID = pvpcId + return s +} + +func (s *GlobalPoolMemberRequest) WithMembers(pmembers ...IGlobalMemberRequest) ICreateGlobalPoolMemberRequest { + s.Members = append(s.Members, pmembers...) + return s +} + +func (s *GlobalPoolMemberRequest) WithLoadBalancerId(plbId string) ICreateGlobalPoolMemberRequest { + s.LoadBalancerId = plbId + return s +} + +func (s *GlobalPoolMemberRequest) WithPoolId(ppoolId string) ICreateGlobalPoolMemberRequest { + s.PoolId = ppoolId + return s +} + +func (s *GlobalPoolMemberRequest) ToMap() map[string]interface{} { + err := map[string]interface{}{ + "name": s.Name, + "description": s.Description, + "region": s.Region, + "trafficDial": s.TrafficDial, + "vpcId": s.VPCID, + "members": make([]map[string]interface{}, 0), + } + + for _, member := range s.Members { + err["members"] = append(err["members"].([]map[string]interface{}), member.ToMap()) + } + + return err +} + +func (s *GlobalPoolMemberRequest) ToRequestBody() interface{} { + return s +} + +func NewGlobalPoolMemberRequest(pname, pregion, pvpcId string, pdial int) ICreateGlobalPoolMemberRequest { + opts := &GlobalPoolMemberRequest{ + Name: pname, + Description: "", + Region: pregion, + TrafficDial: pdial, + VPCID: pvpcId, + Members: make([]IGlobalMemberRequest, 0), + } + return opts +} + +// -------------------------------------------------------------------------- + +var _ IGlobalMemberRequest = &GlobalMemberRequest{} + +type GlobalMemberRequest struct { + Address string `json:"address"` + BackupRole bool `json:"backupRole"` + Description string `json:"description,omitempty"` + MonitorPort int `json:"monitorPort"` + Name string `json:"name"` + Port int `json:"port"` + SubnetID string `json:"subnetId"` + Weight int `json:"weight"` +} + +func (s *GlobalMemberRequest) WithAddress(paddress string) IGlobalMemberRequest { + s.Address = paddress + return s +} + +func (s *GlobalMemberRequest) WithBackupRole(pbackupRole bool) IGlobalMemberRequest { + s.BackupRole = pbackupRole + return s +} + +func (s *GlobalMemberRequest) WithDescription(pdescription string) IGlobalMemberRequest { + s.Description = pdescription + return s +} + +func (s *GlobalMemberRequest) WithMonitorPort(pmonitorPort int) IGlobalMemberRequest { + s.MonitorPort = pmonitorPort + return s +} + +func (s *GlobalMemberRequest) WithName(pname string) IGlobalMemberRequest { + s.Name = pname + return s +} + +func (s *GlobalMemberRequest) WithPort(pport int) IGlobalMemberRequest { + s.Port = pport + return s +} + +func (s *GlobalMemberRequest) WithSubnetID(psubnetId string) IGlobalMemberRequest { + s.SubnetID = psubnetId + return s +} + +func (s *GlobalMemberRequest) WithWeight(pweight int) IGlobalMemberRequest { + s.Weight = pweight + return s +} + +func (s *GlobalMemberRequest) ToMap() map[string]interface{} { + err := map[string]interface{}{ + "address": s.Address, + "backupRole": s.BackupRole, + "description": s.Description, + "monitorPort": s.MonitorPort, + "name": s.Name, + "port": s.Port, + "subnetId": s.SubnetID, + "weight": s.Weight, + } + return err +} + +func (s *GlobalMemberRequest) ToRequestBody() interface{} { + return s +} + +func NewGlobalMemberRequest(pname, paddress, psubnetId string, pport, pmonitorPort, pweight int, pbackupRole bool) IGlobalMemberRequest { + opts := &GlobalMemberRequest{ + Name: pname, + Address: paddress, + BackupRole: pbackupRole, + Description: "", + MonitorPort: pmonitorPort, + Port: pport, + SubnetID: psubnetId, + Weight: pweight, + } + return opts +} + +// -------------------------------------------------------------------------- + +var _ IUpdateGlobalPoolRequest = &UpdateGlobalPoolRequest{} + +type UpdateGlobalPoolRequest struct { + Algorithm GlobalPoolAlgorithm `json:"algorithm"` + HealthMonitor IGlobalHealthMonitorRequest `json:"health"` + lscommon.LoadBalancerCommon + lscommon.PoolCommon + lscommon.UserAgent +} + +func (s *UpdateGlobalPoolRequest) WithAlgorithm(palgorithm GlobalPoolAlgorithm) IUpdateGlobalPoolRequest { + s.Algorithm = palgorithm + return s +} + +func (s *UpdateGlobalPoolRequest) WithHealthMonitor(pmonitor IGlobalHealthMonitorRequest) IUpdateGlobalPoolRequest { + s.HealthMonitor = pmonitor + return s +} + +func (s *UpdateGlobalPoolRequest) WithLoadBalancerId(plbId string) IUpdateGlobalPoolRequest { + s.LoadBalancerId = plbId + return s +} + +func (s *UpdateGlobalPoolRequest) WithPoolId(ppoolId string) IUpdateGlobalPoolRequest { + s.PoolId = ppoolId + return s +} + +func (s *UpdateGlobalPoolRequest) ToMap() map[string]interface{} { + err := map[string]interface{}{ + "algorithm": s.Algorithm, + "health": s.HealthMonitor.ToMap(), + } + return err +} + +func (s *UpdateGlobalPoolRequest) ToRequestBody() interface{} { + return s +} + +func NewUpdateGlobalPoolRequest(plbId, poolId string) IUpdateGlobalPoolRequest { + opts := &UpdateGlobalPoolRequest{ + Algorithm: GlobalPoolAlgorithmRoundRobin, + HealthMonitor: nil, + LoadBalancerCommon: lscommon.LoadBalancerCommon{ + LoadBalancerId: plbId, + }, + PoolCommon: lscommon.PoolCommon{ + PoolId: poolId, + }, + } + return opts +} + +// -------------------------------------------------------------------------- + +var _ IDeleteGlobalPoolRequest = &DeleteGlobalPoolRequest{} + +type DeleteGlobalPoolRequest struct { + lscommon.LoadBalancerCommon + lscommon.PoolCommon + lscommon.UserAgent +} + +func (s *DeleteGlobalPoolRequest) WithLoadBalancerId(plbId string) IDeleteGlobalPoolRequest { + s.LoadBalancerId = plbId + return s +} + +func (s *DeleteGlobalPoolRequest) WithPoolId(ppoolId string) IDeleteGlobalPoolRequest { + s.PoolId = ppoolId + return s +} + +func NewDeleteGlobalPoolRequest(plbId, poolId string) IDeleteGlobalPoolRequest { + opts := &DeleteGlobalPoolRequest{ + LoadBalancerCommon: lscommon.LoadBalancerCommon{ + LoadBalancerId: plbId, + }, + PoolCommon: lscommon.PoolCommon{ + PoolId: poolId, + }, + } + return opts +} + +// -------------------------------------------------------------------------- + +var _ IListGlobalPoolMembersRequest = &ListGlobalPoolMembersRequest{} + +type ListGlobalPoolMembersRequest struct { + lscommon.LoadBalancerCommon + lscommon.PoolCommon + lscommon.UserAgent +} + +func (s *ListGlobalPoolMembersRequest) WithLoadBalancerId(plbId string) IListGlobalPoolMembersRequest { + s.LoadBalancerId = plbId + return s +} + +func (s *ListGlobalPoolMembersRequest) WithPoolId(ppoolId string) IListGlobalPoolMembersRequest { + s.PoolId = ppoolId + return s +} + +func NewListGlobalPoolMembersRequest(plbId, poolId string) IListGlobalPoolMembersRequest { + opts := &ListGlobalPoolMembersRequest{ + LoadBalancerCommon: lscommon.LoadBalancerCommon{ + LoadBalancerId: plbId, + }, + PoolCommon: lscommon.PoolCommon{ + PoolId: poolId, + }, + } + return opts +} + +// -------------------------------------------------------------------------- + +var _ IPatchGlobalPoolMemberRequest = &PatchGlobalPoolMemberRequest{} + +type PatchGlobalPoolMemberRequest struct { + BulkActions []IBulkActionRequest `json:"bulkActions"` + lscommon.LoadBalancerCommon + lscommon.PoolCommon + lscommon.UserAgent +} + +func (s *PatchGlobalPoolMemberRequest) WithBulkAction(paction ...IBulkActionRequest) IPatchGlobalPoolMemberRequest { + s.BulkActions = paction + return s +} + +func (s *PatchGlobalPoolMemberRequest) WithLoadBalancerId(plbId string) IPatchGlobalPoolMemberRequest { + s.LoadBalancerId = plbId + return s +} + +func (s *PatchGlobalPoolMemberRequest) WithPoolId(ppoolId string) IPatchGlobalPoolMemberRequest { + s.PoolId = ppoolId + return s +} + +func (s *PatchGlobalPoolMemberRequest) ToMap() map[string]interface{} { + err := map[string]interface{}{ + "bulkActions": make([]map[string]interface{}, 0), + } + + for _, action := range s.BulkActions { + err["bulkActions"] = append(err["bulkActions"].([]map[string]interface{}), action.ToMap()) + } + + return err +} + +func (s *PatchGlobalPoolMemberRequest) ToRequestBody() interface{} { + return s +} + +func NewPatchGlobalPoolMemberRequest(plbId, poolId string) IPatchGlobalPoolMemberRequest { + opts := &PatchGlobalPoolMemberRequest{ + BulkActions: make([]IBulkActionRequest, 0), + LoadBalancerCommon: lscommon.LoadBalancerCommon{ + LoadBalancerId: plbId, + }, + PoolCommon: lscommon.PoolCommon{ + PoolId: poolId, + }, + } + return opts +} + +var _ IBulkActionRequest = &PatchGlobalPoolCreateBulkActionRequest{} + +type PatchGlobalPoolCreateBulkActionRequest struct { + Action string `json:"action"` + CreatePoolMember ICreateGlobalPoolMemberRequest `json:"createPoolMember"` +} + +func (s *PatchGlobalPoolCreateBulkActionRequest) ToMap() map[string]interface{} { + err := map[string]interface{}{ + "action": s.Action, + "createPoolMember": s.CreatePoolMember.ToMap(), + } + return err +} + +func (s *PatchGlobalPoolCreateBulkActionRequest) ToRequestBody() interface{} { + return s +} + +func NewPatchGlobalPoolCreateBulkActionRequest(pmember ICreateGlobalPoolMemberRequest) IBulkActionRequest { + opts := &PatchGlobalPoolCreateBulkActionRequest{ + Action: "create", + CreatePoolMember: pmember, + } + return opts +} + +var _ IBulkActionRequest = &PatchGlobalPoolDeleteBulkActionRequest{} + +type PatchGlobalPoolDeleteBulkActionRequest struct { + Action string `json:"action"` + ID string `json:"id"` +} + +func (s *PatchGlobalPoolDeleteBulkActionRequest) ToMap() map[string]interface{} { + err := map[string]interface{}{ + "action": s.Action, + "id": s.ID, + } + return err +} + +func (s *PatchGlobalPoolDeleteBulkActionRequest) ToRequestBody() interface{} { + return s +} + +func NewPatchGlobalPoolDeleteBulkActionRequest(pid string) IBulkActionRequest { + opts := &PatchGlobalPoolDeleteBulkActionRequest{ + Action: "delete", + ID: pid, + } + return opts +} + +var _ IBulkActionRequest = &PatchGlobalPoolUpdateBulkActionRequest{} + +type PatchGlobalPoolUpdateBulkActionRequest struct { + Action string `json:"action"` + ID string `json:"id"` + UpdatePoolMember IUpdateGlobalPoolMemberRequest `json:"updatePoolMember"` +} + +func (s *PatchGlobalPoolUpdateBulkActionRequest) ToMap() map[string]interface{} { + err := map[string]interface{}{ + "action": s.Action, + "id": s.ID, + "updatePoolMember": s.UpdatePoolMember.ToMap(), + } + return err +} + +func (s *PatchGlobalPoolUpdateBulkActionRequest) ToRequestBody() interface{} { + return s +} + +func NewPatchGlobalPoolUpdateBulkActionRequest(pid string, pmember IUpdateGlobalPoolMemberRequest) IBulkActionRequest { + opts := &PatchGlobalPoolUpdateBulkActionRequest{ + Action: "update", + ID: pid, + UpdatePoolMember: pmember, + } + return opts +} + +type IUpdateGlobalPoolMemberRequest interface { + WithTrafficDial(pdial int) IUpdateGlobalPoolMemberRequest + WithMembers(pmembers ...IGlobalMemberRequest) IUpdateGlobalPoolMemberRequest + + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +var _ IUpdateGlobalPoolMemberRequest = &UpdateGlobalPoolMemberRequest{} + +type UpdateGlobalPoolMemberRequest struct { + TrafficDial int `json:"trafficDial"` + Members []IGlobalMemberRequest `json:"members"` +} + +func (s *UpdateGlobalPoolMemberRequest) WithTrafficDial(pdial int) IUpdateGlobalPoolMemberRequest { + s.TrafficDial = pdial + return s +} + +func (s *UpdateGlobalPoolMemberRequest) WithMembers(pmembers ...IGlobalMemberRequest) IUpdateGlobalPoolMemberRequest { + s.Members = append(s.Members, pmembers...) + return s +} + +func (s *UpdateGlobalPoolMemberRequest) ToMap() map[string]interface{} { + err := map[string]interface{}{ + "trafficDial": s.TrafficDial, + "members": make([]map[string]interface{}, 0), + } + + for _, member := range s.Members { + err["members"] = append(err["members"].([]map[string]interface{}), member.ToMap()) + } + + return err +} + +func (s *UpdateGlobalPoolMemberRequest) ToRequestBody() interface{} { + return s +} + +func NewUpdateGlobalPoolMemberRequest(pdial int) IUpdateGlobalPoolMemberRequest { + opts := &UpdateGlobalPoolMemberRequest{ + TrafficDial: pdial, + Members: make([]IGlobalMemberRequest, 0), + } + return opts +} diff --git a/vngcloud/services/loadbalancer/global/glb_pool_response.go b/vngcloud/services/loadbalancer/global/glb_pool_response.go new file mode 100644 index 0000000..834d8f8 --- /dev/null +++ b/vngcloud/services/loadbalancer/global/glb_pool_response.go @@ -0,0 +1,210 @@ +package global + +import lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" + +type GlobalPoolResponse struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt *string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + Algorithm string `json:"algorithm"` + StickySession *string `json:"stickySession"` + TLSEnabled *string `json:"tlsEnabled"` + Protocol string `json:"protocol"` + Status string `json:"status"` + Health *HealthResponse `json:"health"` + GlobalPoolMembersResponse *[]GlobalPoolMemberResponse `json:"globalPoolMembers"` +} + +func (s *GlobalPoolResponse) ToEntityPool() *lsentity.GlobalPool { + return &lsentity.GlobalPool{ + CreatedAt: s.CreatedAt, + UpdatedAt: s.UpdatedAt, + DeletedAt: s.DeletedAt, + ID: s.ID, + Name: s.Name, + Description: s.Description, + GlobalLoadBalancerID: s.GlobalLoadBalancerID, + Algorithm: s.Algorithm, + StickySession: s.StickySession, + TLSEnabled: s.TLSEnabled, + Protocol: s.Protocol, + Status: s.Status, + // Health: s.Health.ToEntityHealthMonitor(), + } +} + +type HealthResponse struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt *string `json:"deletedAt"` + ID string `json:"id"` + GlobalPoolID string `json:"globalPoolId"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + Protocol string `json:"protocol"` + Path *string `json:"path"` + Timeout int `json:"timeout"` + IntervalTime int `json:"intervalTime"` + HealthyThreshold int `json:"healthyThreshold"` + UnhealthyThreshold int `json:"unhealthyThreshold"` + HttpVersion *string `json:"httpVersion"` + HttpMethod *string `json:"httpMethod"` + DomainName *string `json:"domainName"` + SuccessCode *string `json:"successCode"` + Status string `json:"status"` +} + +type GlobalPoolMemberResponse struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt *string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Region string `json:"region"` + GlobalPoolID string `json:"globalPoolId"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + TrafficDial int `json:"trafficDial"` + VpcID string `json:"vpcId"` + Status string `json:"status"` + Members []*GlobalMemberResponse `json:"members"` +} + +func (s *GlobalPoolMemberResponse) ToEntityGlobalPoolMember() *lsentity.GlobalPoolMember { + members := make([]*lsentity.GlobalPoolMemberDetail, 0) + for _, member := range s.Members { + members = append(members, member.ToEntityGlobalMember()) + } + return &lsentity.GlobalPoolMember{ + CreatedAt: s.CreatedAt, + UpdatedAt: s.UpdatedAt, + DeletedAt: s.DeletedAt, + ID: s.ID, + Name: s.Name, + Description: s.Description, + Region: s.Region, + GlobalPoolID: s.GlobalPoolID, + GlobalLoadBalancerID: s.GlobalLoadBalancerID, + TrafficDial: s.TrafficDial, + VpcID: s.VpcID, + Status: s.Status, + Members: &lsentity.ListGlobalMembers{Items: members}, + } +} + +type GlobalMemberResponse struct { + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + GlobalPoolMemberID string `json:"globalPoolMemberId"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + SubnetID string `json:"subnetId"` + Address string `json:"address"` + Weight int `json:"weight"` + Port int `json:"port"` + MonitorPort int `json:"monitorPort"` + BackupRole bool `json:"backupRole"` +} + +func (s *GlobalMemberResponse) ToEntityGlobalMember() *lsentity.GlobalPoolMemberDetail { + return &lsentity.GlobalPoolMemberDetail{ + ID: s.ID, + Name: s.Name, + Description: s.Description, + GlobalPoolMemberID: s.GlobalPoolMemberID, + GlobalLoadBalancerID: s.GlobalLoadBalancerID, + SubnetID: s.SubnetID, + Address: s.Address, + Weight: s.Weight, + Port: s.Port, + MonitorPort: s.MonitorPort, + BackupRole: s.BackupRole, + } +} + +// ---------------------------------------------------------- + +type ListGlobalPoolsResponse []*GlobalPoolResponse + +func (s *ListGlobalPoolsResponse) ToEntityListGlobalPools() *lsentity.ListGlobalPools { + result := &lsentity.ListGlobalPools{ + Items: make([]*lsentity.GlobalPool, 0), + } + + if s == nil || len(*s) < 1 { + return result + } + + for _, pool := range *s { + result.Items = append(result.Items, pool.ToEntityPool()) + } + + return result +} + +// ---------------------------------------------------------- + +type CreateGlobalPoolResponse struct { + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + Algorithm string `json:"algorithm"` + StickySession *string `json:"stickySession"` + TLSEnabled *string `json:"tlsEnabled"` + Protocol string `json:"protocol"` + Health *HealthResponse `json:"health"` + GlobalPoolMembers []*GlobalPoolMemberResponse `json:"globalPoolMembers"` +} + +func (s *CreateGlobalPoolResponse) ToEntityPool() *lsentity.GlobalPool { + return &lsentity.GlobalPool{ + ID: s.ID, + Name: s.Name, + Description: s.Description, + GlobalLoadBalancerID: s.GlobalLoadBalancerID, + Algorithm: s.Algorithm, + StickySession: s.StickySession, + TLSEnabled: s.TLSEnabled, + Protocol: s.Protocol, + } +} + +// ---------------------------------------------------------- + +type UpdateGlobalPoolResponse struct { + ID string `json:"id"` +} + +func (s *UpdateGlobalPoolResponse) ToEntityPool() *lsentity.GlobalPool { + return &lsentity.GlobalPool{ + ID: s.ID, + } +} + +// ---------------------------------------------------------- + +type ListGlobalPoolMembersResponse []*GlobalPoolMemberResponse + +func (s *ListGlobalPoolMembersResponse) ToEntityListGlobalPoolMembers() *lsentity.ListGlobalPoolMembers { + result := &lsentity.ListGlobalPoolMembers{ + Items: make([]*lsentity.GlobalPoolMember, 0), + } + + if s == nil || len(*s) < 1 { + return result + } + + for _, member := range *s { + result.Items = append(result.Items, member.ToEntityGlobalPoolMember()) + } + + return result +} + +// ---------------------------------------------------------- +// ---------------------------------------------------------- +// ---------------------------------------------------------- diff --git a/vngcloud/services/loadbalancer/global/glb_request.go b/vngcloud/services/loadbalancer/global/glb_request.go index 3200be1..ac42bb2 100644 --- a/vngcloud/services/loadbalancer/global/glb_request.go +++ b/vngcloud/services/loadbalancer/global/glb_request.go @@ -8,9 +8,12 @@ import ( ) func NewListGlobalLoadBalancersRequest(offset, limit int) IListGlobalLoadBalancersRequest { - opts := new(ListGlobalLoadBalancersRequest) - opts.Offset = offset - opts.Limit = limit + opts := &ListGlobalLoadBalancersRequest{ + Name: "", + Offset: offset, + Limit: limit, + Tags: make([]lscommon.Tag, 0), + } return opts } @@ -75,21 +78,18 @@ func (s *ListGlobalLoadBalancersRequest) GetDefaultQuery() string { return lfmt.Sprintf("offset=%d&limit=%d", defaultOffsetListGlobalLoadBalancer, defaultLimitListGlobalLoadBalancer) } -// const ( -// InternalLoadBalancerScheme LoadBalancerScheme = "Internal" -// InternetLoadBalancerScheme LoadBalancerScheme = "Internet" -// InterVpcLoadBalancerScheme LoadBalancerScheme = "InterVPC" -// ) - -// const ( -// LoadBalancerTypeLayer4 LoadBalancerType = "Layer 4" -// LoadBalancerTypeLayer7 LoadBalancerType = "Layer 7" -// ) - -// type ( -// LoadBalancerScheme string -// LoadBalancerType string -// ) +// -------------------------------------------------------------------------- +// -------------------------------------------------------------------------- +// -------------------------------------------------------------------------- +// -------------------------------------------------------------------------- + +type ( + GlobalLoadBalancerType string +) + +const ( + GlobalLoadBalancerTypeLayer4 GlobalLoadBalancerType = "Layer 4" +) // func NewCreateLoadBalancerRequest(pname, ppackageId, psubnetId string) ICreateLoadBalancerRequest { // return &CreateLoadBalancerRequest{ diff --git a/vngcloud/services/loadbalancer/global/irequest.go b/vngcloud/services/loadbalancer/global/irequest.go index 0721d7d..011cbbf 100644 --- a/vngcloud/services/loadbalancer/global/irequest.go +++ b/vngcloud/services/loadbalancer/global/irequest.go @@ -8,260 +8,177 @@ type IListGlobalLoadBalancersRequest interface { GetDefaultQuery() string } -// import lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" - -// type ICreateLoadBalancerRequest interface { -// ToRequestBody() interface{} -// AddUserAgent(pagent ...string) ICreateLoadBalancerRequest -// WithListener(plistener ICreateListenerRequest) ICreateLoadBalancerRequest -// WithPool(ppool ICreatePoolRequest) ICreateLoadBalancerRequest -// WithTags(ptags ...string) ICreateLoadBalancerRequest -// WithScheme(pscheme LoadBalancerScheme) ICreateLoadBalancerRequest -// WithAutoScalable(pautoScalable bool) ICreateLoadBalancerRequest -// WithPackageId(ppackageId string) ICreateLoadBalancerRequest -// WithSubnetId(psubnetId string) ICreateLoadBalancerRequest -// WithType(ptype LoadBalancerType) ICreateLoadBalancerRequest -// WithPoc(poc bool) ICreateLoadBalancerRequest -// ParseUserAgent() string -// ToMap() map[string]interface{} -// } - -// type IResizeLoadBalancerRequest interface { -// ToRequestBody() interface{} -// AddUserAgent(pagent ...string) IResizeLoadBalancerRequest -// WithPackageId(ppackageId string) IResizeLoadBalancerRequest -// ParseUserAgent() string - -// GetLoadBalancerId() string -// } - -// type IListLoadBalancerPackagesRequest interface { -// AddUserAgent(pagent ...string) IListLoadBalancerPackagesRequest -// ParseUserAgent() string -// ToMap() map[string]interface{} -// } - -// type IGetLoadBalancerByIdRequest interface { -// AddUserAgent(pagent ...string) IGetLoadBalancerByIdRequest -// ParseUserAgent() string -// GetLoadBalancerId() string -// } - -// type ICreateListenerRequest interface { -// ToRequestBody() interface{} -// WithAllowedCidrs(pcidrs ...string) ICreateListenerRequest -// WithLoadBalancerId(plbid string) ICreateListenerRequest -// WithDefaultPoolId(ppoolId string) ICreateListenerRequest -// WithTimeoutClient(ptoc int) ICreateListenerRequest -// WithTimeoutConnection(ptoc int) ICreateListenerRequest -// WithTimeoutMember(ptom int) ICreateListenerRequest -// AddCidrs(pcidrs ...string) ICreateListenerRequest -// ParseUserAgent() string -// GetLoadBalancerId() string -// ToMap() map[string]interface{} -// } - -// type IUpdateListenerRequest interface { -// GetLoadBalancerId() string -// GetListenerId() string -// ToRequestBody() interface{} -// WithCidrs(pcidrs ...string) IUpdateListenerRequest -// WithTimeoutClient(ptoc int) IUpdateListenerRequest -// WithTimeoutConnection(ptoc int) IUpdateListenerRequest -// WithTimeoutMember(ptom int) IUpdateListenerRequest -// WithDefaultPoolId(ppoolId string) IUpdateListenerRequest -// WithHeaders(pheaders ...string) IUpdateListenerRequest -// ParseUserAgent() string - -// WithCertificateAuthorities(pca ...string) IUpdateListenerRequest -// WithClientCertificate(pclientCert string) IUpdateListenerRequest -// WithDefaultCertificateAuthority(pdefaultCA string) IUpdateListenerRequest -// } - -// type IGetPoolHealthMonitorByIdRequest interface { -// GetLoadBalancerId() string -// GetPoolId() string -// ParseUserAgent() string -// } - -// type ICreatePoolRequest interface { -// ToRequestBody() interface{} -// WithHealthMonitor(pmonitor IHealthMonitorRequest) ICreatePoolRequest -// WithMembers(pmembers ...IMemberRequest) ICreatePoolRequest -// WithLoadBalancerId(plbId string) ICreatePoolRequest -// WithAlgorithm(palgorithm PoolAlgorithm) ICreatePoolRequest -// ToMap() map[string]interface{} -// GetLoadBalancerId() string -// ParseUserAgent() string -// } - -// type IUpdatePoolRequest interface { -// GetPoolId() string -// ToRequestBody() interface{} -// WithHealthMonitor(pmonitor IHealthMonitorRequest) IUpdatePoolRequest -// WithLoadBalancerId(plbId string) IUpdatePoolRequest -// WithAlgorithm(palgorithm PoolAlgorithm) IUpdatePoolRequest -// WithStickiness(v *bool) IUpdatePoolRequest -// WithTLSEncryption(v *bool) IUpdatePoolRequest -// ToMap() map[string]interface{} -// GetLoadBalancerId() string -// ParseUserAgent() string -// } - -// type IListListenersByLoadBalancerIdRequest interface { -// GetLoadBalancerId() string -// ParseUserAgent() string -// } - -// type IListPoolsByLoadBalancerIdRequest interface { -// GetLoadBalancerId() string -// ParseUserAgent() string -// } - -// type IUpdatePoolMembersRequest interface { -// WithMembers(pmembers ...IMemberRequest) IUpdatePoolMembersRequest -// ToRequestBody() interface{} -// GetLoadBalancerId() string -// GetPoolId() string -// ParseUserAgent() string -// } - -// type IListPoolMembersRequest interface { -// GetLoadBalancerId() string -// GetPoolId() string -// ParseUserAgent() string -// } - -// type IDeletePoolByIdRequest interface { -// GetLoadBalancerId() string -// GetPoolId() string -// ParseUserAgent() string -// } - -// type IDeleteListenerByIdRequest interface { -// GetLoadBalancerId() string -// GetListenerId() string -// ParseUserAgent() string -// } - -// type IDeleteLoadBalancerByIdRequest interface { -// GetLoadBalancerId() string -// ParseUserAgent() string -// } - -// type IHealthMonitorRequest interface { -// ToRequestBody() interface{} -// ToMap() map[string]interface{} -// WithHealthyThreshold(pht int) IHealthMonitorRequest -// WithUnhealthyThreshold(puht int) IHealthMonitorRequest -// WithInterval(pinterval int) IHealthMonitorRequest -// WithTimeout(pto int) IHealthMonitorRequest -// WithHealthCheckMethod(pmethod HealthCheckMethod) IHealthMonitorRequest -// WithHttpVersion(pversion HealthCheckHttpVersion) IHealthMonitorRequest -// WithHealthCheckPath(ppath string) IHealthMonitorRequest -// WithSuccessCode(pcode string) IHealthMonitorRequest -// WithDomainName(pdomain string) IHealthMonitorRequest -// } - -// type IMemberRequest interface { -// ToRequestBody() interface{} -// ToMap() map[string]interface{} -// } - -// type IListTagsRequest interface { -// GetLoadBalancerId() string -// ParseUserAgent() string -// } - -// type ICreateTagsRequest interface { -// GetLoadBalancerId() string -// ToRequestBody() interface{} -// ParseUserAgent() string -// WithTags(ptags ...string) ICreateTagsRequest -// } - -// type IUpdateTagsRequest interface { -// GetLoadBalancerId() string -// ToRequestBody(plstTags *lsentity.ListTags) interface{} -// ParseUserAgent() string -// WithTags(ptags ...string) IUpdateTagsRequest -// ToMap() map[string]interface{} -// } - -// // -------------------------------------------------------- - -// type IListPoliciesRequest interface { -// ParseUserAgent() string -// GetLoadBalancerId() string -// GetListenerId() string -// } - -// type ICreatePolicyRequest interface { -// ToRequestBody() interface{} -// ParseUserAgent() string -// GetLoadBalancerId() string -// GetListenerId() string -// ToMap() map[string]interface{} - -// WithName(pname string) ICreatePolicyRequest -// WithRules(prules ...L7RuleRequest) ICreatePolicyRequest -// WithAction(paction PolicyAction) ICreatePolicyRequest - -// // only for action redirect to pool -// WithRedirectPoolId(predirectPoolId string) ICreatePolicyRequest - -// // only for action redirect to url -// WithRedirectURL(predirectURL string) ICreatePolicyRequest -// // only for action redirect to url -// WithRedirectHTTPCode(predirectHTTPCode int) ICreatePolicyRequest -// // only for action redirect to url -// WithKeepQueryString(pkeepQueryString bool) ICreatePolicyRequest -// } - -// type IGetPolicyByIdRequest interface { -// ParseUserAgent() string -// GetLoadBalancerId() string -// GetListenerId() string -// GetPolicyId() string -// } - -// type IUpdatePolicyRequest interface { -// ToRequestBody() interface{} -// ParseUserAgent() string -// GetLoadBalancerId() string -// GetListenerId() string -// GetPolicyId() string - -// WithAction(paction PolicyAction) IUpdatePolicyRequest -// WithRules(prules ...L7RuleRequest) IUpdatePolicyRequest -// WithRedirectPoolID(predirectPoolId string) IUpdatePolicyRequest -// WithRedirectURL(predirectURL string) IUpdatePolicyRequest -// WithRedirectHTTPCode(predirectHTTPCode int) IUpdatePolicyRequest -// WithKeepQueryString(pkeepQueryString bool) IUpdatePolicyRequest -// } - -// type IDeletePolicyByIdRequest interface { -// ParseUserAgent() string -// GetLoadBalancerId() string -// GetListenerId() string -// GetPolicyId() string -// } - -// type IGetPoolByIdRequest interface { -// GetLoadBalancerId() string -// GetPoolId() string -// ParseUserAgent() string -// } - -// type IGetListenerByIdRequest interface { -// GetLoadBalancerId() string -// GetListenerId() string -// ParseUserAgent() string -// } - -// type IResizeLoadBalancerByIdRequest interface { -// GetLoadBalancerId() string -// ToMap() map[string]interface{} -// ParseUserAgent() string -// ToRequestBody() interface{} -// } +// -------------------------------------------------------- + +type IListGlobalPoolsRequest interface { + WithLoadBalancerId(plbId string) IListGlobalPoolsRequest + GetLoadBalancerId() string + ParseUserAgent() string +} + +// -------------------------------------------------------- + +type ICreateGlobalLoadBalancerRequest interface { + WithDescription(pdesc string) ICreateGlobalLoadBalancerRequest + WithName(pname string) ICreateGlobalLoadBalancerRequest + WithType(ptype GlobalLoadBalancerType) ICreateGlobalLoadBalancerRequest + WithGlobalListener(plistener ICreateGlobalListenerRequest) ICreateGlobalLoadBalancerRequest + WithGlobalPool(ppool ICreateGlobalPoolRequest) ICreateGlobalLoadBalancerRequest + + // WithTags(ptags ...string) ICreateGlobalLoadBalancerRequest + // WithScheme(pscheme LoadBalancerScheme) ICreateGlobalLoadBalancerRequest + // WithAutoScalable(pautoScalable bool) ICreateGlobalLoadBalancerRequest + // WithPackageId(ppackageId string) ICreateGlobalLoadBalancerRequest + // WithSubnetId(psubnetId string) ICreateGlobalLoadBalancerRequest + // WithPoc(poc bool) ICreateGlobalLoadBalancerRequest + + AddUserAgent(pagent ...string) ICreateGlobalLoadBalancerRequest + ToRequestBody() interface{} + ToMap() map[string]interface{} + ParseUserAgent() string +} + +type ICreateGlobalListenerRequest interface { + WithAllowedCidrs(pcidrs ...string) ICreateGlobalListenerRequest + WithDescription(pdesc string) ICreateGlobalListenerRequest + WithHeaders(pheaders ...string) ICreateGlobalListenerRequest + WithName(pname string) ICreateGlobalListenerRequest + WithPort(pport int) ICreateGlobalListenerRequest + WithProtocol(pprotocol GlobalListenerProtocol) ICreateGlobalListenerRequest + WithTimeoutClient(ptoc int) ICreateGlobalListenerRequest + WithTimeoutConnection(ptoc int) ICreateGlobalListenerRequest + WithTimeoutMember(ptom int) ICreateGlobalListenerRequest + WithDefaultPoolId(ppoolId string) ICreateGlobalListenerRequest + + WithLoadBalancerId(plbid string) ICreateGlobalListenerRequest + // AddCidrs(pcidrs ...string) ICreateGlobalListenerRequest + // GetLoadBalancerId() string + + ParseUserAgent() string + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +type ICreateGlobalPoolRequest interface { + WithAlgorithm(palgorithm GlobalPoolAlgorithm) ICreateGlobalPoolRequest + WithDescription(pdesc string) ICreateGlobalPoolRequest + WithName(pname string) ICreateGlobalPoolRequest + WithProtocol(pprotocol GlobalPoolProtocol) ICreateGlobalPoolRequest + WithHealthMonitor(pmonitor IGlobalHealthMonitorRequest) ICreateGlobalPoolRequest + WithMembers(pmembers ...ICreateGlobalPoolMemberRequest) ICreateGlobalPoolRequest + + WithLoadBalancerId(plbId string) ICreateGlobalPoolRequest + GetLoadBalancerId() string // to use in request url + + ParseUserAgent() string + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +type IGlobalHealthMonitorRequest interface { + WithHealthyThreshold(pht int) IGlobalHealthMonitorRequest + WithInterval(pinterval int) IGlobalHealthMonitorRequest + WithProtocol(pprotocol GlobalPoolHealthCheckProtocol) IGlobalHealthMonitorRequest + WithTimeout(pto int) IGlobalHealthMonitorRequest + WithUnhealthyThreshold(puht int) IGlobalHealthMonitorRequest + + // http, https + WithHealthCheckMethod(pmethod GlobalPoolHealthCheckMethod) IGlobalHealthMonitorRequest + WithHttpVersion(pversion GlobalPoolHealthCheckHttpVersion) IGlobalHealthMonitorRequest + WithPath(ppath string) IGlobalHealthMonitorRequest + WithSuccessCode(pcode string) IGlobalHealthMonitorRequest + WithDomainName(pdomain string) IGlobalHealthMonitorRequest + + ToRequestBody() interface{} + ToMap() map[string]interface{} +} +type ICreateGlobalPoolMemberRequest interface { + WithName(pname string) ICreateGlobalPoolMemberRequest + WithDescription(pdesc string) ICreateGlobalPoolMemberRequest + WithRegion(pregion string) ICreateGlobalPoolMemberRequest + WithVPCID(pvpcID string) ICreateGlobalPoolMemberRequest + WithTrafficDial(pdial int) ICreateGlobalPoolMemberRequest + WithMembers(pmembers ...IGlobalMemberRequest) ICreateGlobalPoolMemberRequest + + WithLoadBalancerId(plbId string) ICreateGlobalPoolMemberRequest + WithPoolId(ppoolId string) ICreateGlobalPoolMemberRequest + GetLoadBalancerId() string // to use in request url + GetPoolId() string // to use in request url + + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +type IGlobalMemberRequest interface { + WithAddress(paddr string) IGlobalMemberRequest + WithBackupRole(pbackup bool) IGlobalMemberRequest + WithDescription(pdesc string) IGlobalMemberRequest + WithMonitorPort(pport int) IGlobalMemberRequest + WithName(pname string) IGlobalMemberRequest + WithPort(pport int) IGlobalMemberRequest + WithSubnetID(psubnetID string) IGlobalMemberRequest + WithWeight(pweight int) IGlobalMemberRequest + + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +// -------------------------------------------------------- + +type IUpdateGlobalPoolRequest interface { + WithAlgorithm(palgorithm GlobalPoolAlgorithm) IUpdateGlobalPoolRequest + WithHealthMonitor(pmonitor IGlobalHealthMonitorRequest) IUpdateGlobalPoolRequest + + WithLoadBalancerId(plbId string) IUpdateGlobalPoolRequest + WithPoolId(ppoolId string) IUpdateGlobalPoolRequest + GetLoadBalancerId() string // to use in request url + GetPoolId() string + + ParseUserAgent() string + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +// -------------------------------------------------------- + +type IDeleteGlobalPoolRequest interface { + WithLoadBalancerId(plbId string) IDeleteGlobalPoolRequest + WithPoolId(ppoolId string) IDeleteGlobalPoolRequest + GetLoadBalancerId() string // to use in request url + GetPoolId() string + + ParseUserAgent() string +} + +// -------------------------------------------------------- + +type IListGlobalPoolMembersRequest interface { + WithLoadBalancerId(plbId string) IListGlobalPoolMembersRequest + WithPoolId(ppoolId string) IListGlobalPoolMembersRequest + GetLoadBalancerId() string // to use in request url + GetPoolId() string + + ParseUserAgent() string +} + +// -------------------------------------------------------- + +type IPatchGlobalPoolMemberRequest interface { + WithBulkAction(paction ...IBulkActionRequest) IPatchGlobalPoolMemberRequest + + WithLoadBalancerId(plbId string) IPatchGlobalPoolMemberRequest + WithPoolId(ppoolId string) IPatchGlobalPoolMemberRequest + GetLoadBalancerId() string // to use in request url + GetPoolId() string + + ParseUserAgent() string + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +type IBulkActionRequest interface { + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +// -------------------------------------------------------- diff --git a/vngcloud/services/loadbalancer/global/url.go b/vngcloud/services/loadbalancer/global/url.go index f9b0958..d54ada2 100644 --- a/vngcloud/services/loadbalancer/global/url.go +++ b/vngcloud/services/loadbalancer/global/url.go @@ -11,244 +11,58 @@ func listGlobalLoadBalancersUrl(psc lsclient.IServiceClient, popts IListGlobalLo return psc.ServiceURL("global-load-balancers") + query } -// func createLoadBalancerUrl(psc lsclient.IServiceClient) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers") -// } - -// func resizeLoadBalancerUrl(psc lsclient.IServiceClient, popts IResizeLoadBalancerRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "resize") -// } - -// func listGlobalLoadBalancerPackagesUrl(psc lsclient.IServiceClient) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", "packages") -// } - -// func getLoadBalancerByIdUrl(psc lsclient.IServiceClient, popts IGetLoadBalancerByIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId()) -// } - -// func getPoolHealthMonitorByIdUrl(psc lsclient.IServiceClient, popts IGetPoolHealthMonitorByIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "pools", -// popts.GetPoolId(), -// "healthMonitor") -// } - -// func createPoolUrl(psc lsclient.IServiceClient, popts ICreatePoolRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "pools") -// } - -// func updatePoolUrl(psc lsclient.IServiceClient, popts IUpdatePoolRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "pools", -// popts.GetPoolId()) -// } - -// func createListenerUrl(psc lsclient.IServiceClient, popts ICreateListenerRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "listeners") -// } - -// func updateListenerUrl(psc lsclient.IServiceClient, popts IUpdateListenerRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "listeners", -// popts.GetListenerId()) -// } - -// func listListenersByLoadBalancerIdUrl(psc lsclient.IServiceClient, popts IListListenersByLoadBalancerIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "listeners") -// } - -// func listPoolsByLoadBalancerIdUrl(psc lsclient.IServiceClient, popts IListPoolsByLoadBalancerIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "pools") -// } - -// func updatePoolMembersUrl(psc lsclient.IServiceClient, popts IUpdatePoolMembersRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "pools", -// popts.GetPoolId(), -// "members") -// } - -// func listPoolMembersUrl(psc lsclient.IServiceClient, popts IListPoolMembersRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "pools", -// popts.GetPoolId(), -// "members") -// } - -// func deletePoolByIdUrl(psc lsclient.IServiceClient, popts IDeletePoolByIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "pools", -// popts.GetPoolId()) -// } - -// func deleteListenerByIdUrl(psc lsclient.IServiceClient, popts IDeleteListenerByIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "listeners", -// popts.GetListenerId()) -// } - -// func deleteLoadBalancerByIdUrl(psc lsclient.IServiceClient, popts IDeleteLoadBalancerByIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId()) -// } - -// func listTagsUrl(psc lsclient.IServiceClient, popts IListTagsRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "tag", -// "resource", -// popts.GetLoadBalancerId()) -// } - -// func createTagsUrl(psc lsclient.IServiceClient, popts ICreateTagsRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "tag", -// "resource", -// popts.GetLoadBalancerId()) -// } - -// func updateTagsUrl(psc lsclient.IServiceClient, popts IUpdateTagsRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "tag", -// "resource", -// popts.GetLoadBalancerId()) -// } - -// // Policy - -// func listPoliciesUrl(psc lsclient.IServiceClient, popts IListPoliciesRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "listeners", -// popts.GetListenerId(), -// "l7policies", -// ) -// } - -// func createPolicyUrl(psc lsclient.IServiceClient, popts ICreatePolicyRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "listeners", -// popts.GetListenerId(), -// "l7policies", -// ) -// } - -// func getPolicyByIdUrl(psc lsclient.IServiceClient, popts IGetPolicyByIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "listeners", -// popts.GetListenerId(), -// "l7policies", -// popts.GetPolicyId(), -// ) -// } +// ------------------------------------------------------------ + +func createGlobalPoolUrl(psc lsclient.IServiceClient, popts ICreateGlobalPoolRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + "global-pools", + ) +} -// func updatePolicyUrl(psc lsclient.IServiceClient, popts IUpdatePolicyRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "listeners", -// popts.GetListenerId(), -// "l7policies", -// popts.GetPolicyId(), -// ) -// } +func listGlobalPoolsUrl(psc lsclient.IServiceClient, popts IListGlobalPoolsRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + "global-pools", + ) +} -// func deletePolicyByIdUrl(psc lsclient.IServiceClient, popts IDeletePolicyByIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "listeners", -// popts.GetListenerId(), -// "l7policies", -// popts.GetPolicyId(), -// ) -// } +func updateGlobalPoolUrl(psc lsclient.IServiceClient, popts IUpdateGlobalPoolRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + "global-pools", + popts.GetPoolId(), + ) +} -// func getPoolByIdUrl(psc lsclient.IServiceClient, popts IGetPoolByIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "pools", -// popts.GetPoolId()) -// } +func deleteGlobalPoolUrl(psc lsclient.IServiceClient, popts IDeleteGlobalPoolRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + "global-pools", + popts.GetPoolId(), + ) +} -// func getListenerByIdUrl(psc lsclient.IServiceClient, popts IGetListenerByIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "listeners", -// popts.GetListenerId()) -// } +func listGlobalPoolMembersUrl(psc lsclient.IServiceClient, popts IListGlobalPoolMembersRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + "global-pools", + popts.GetPoolId(), + "pool-members", + ) +} -// func resizeLoadBalancerByIdUrl(psc lsclient.IServiceClient, popts IResizeLoadBalancerByIdRequest) string { -// return psc.ServiceURL( -// psc.GetProjectId(), -// "loadBalancers", -// popts.GetLoadBalancerId(), -// "resize") -// } +func patchGlobalPoolMemberUrl(psc lsclient.IServiceClient, popts IPatchGlobalPoolMemberRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + "global-pools", + popts.GetPoolId(), + "pool-members", + ) +} diff --git a/vngcloud/services/loadbalancer/iloadbalancer.go b/vngcloud/services/loadbalancer/iloadbalancer.go index 2bc782b..6ecfd83 100644 --- a/vngcloud/services/loadbalancer/iloadbalancer.go +++ b/vngcloud/services/loadbalancer/iloadbalancer.go @@ -46,20 +46,23 @@ type ILoadBalancerServiceInternal interface { type ILoadBalancerServiceGlobal interface { ListGlobalLoadBalancers(popts global.IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) - // CreateGlobalLoadBalancer(popts global.ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) - // UpdateGlobalLoadBalancer(popts global.IUpdateGlobalLoadBalancerRequest) lserr.IError - // GetGlobalLoadBalancerById(popts global.IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) - // DeleteGlobalLoadBalancerById(popts global.IDeleteGlobalLoadBalancerByIdRequest) lserr.IError - // ListGlobalLoadBalancerPools(popts global.IListGlobalLoadBalancerPoolsRequest) (*lsentity.ListGlobalLoadBalancerPools, lserr.IError) + + ListGlobalPools(popts global.IListGlobalPoolsRequest) (*lsentity.ListGlobalPools, lserr.IError) + CreateGlobalPool(popts global.ICreateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) + UpdateGlobalPool(popts global.IUpdateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) + DeleteGlobalPool(popts global.IDeleteGlobalPoolRequest) lserr.IError + + ListGlobalPoolMembers(popts global.IListGlobalPoolMembersRequest) (*lsentity.ListGlobalPoolMembers, lserr.IError) + PatchGlobalPoolMember(popts global.IPatchGlobalPoolMemberRequest) lserr.IError + // GetGlobalLoadBalancerPoolById(popts global.IGetGlobalLoadBalancerPoolByIdRequest) (*lsentity.GlobalLoadBalancerPool, lserr.IError) - // CreateGlobalLoadBalancerPool(popts global.ICreateGlobalLoadBalancerPoolRequest) (*lsentity.GlobalLoadBalancerPool, lserr.IError) - // UpdateGlobalLoadBalancerPool(popts global.IUpdateGlobalLoadBalancerPoolRequest) lserr.IError - // DeleteGlobalLoadBalancerPoolById(popts global.IDeleteGlobalLoadBalancerPoolByIdRequest) lserr.IError - // ListGlobalLoadBalancerPoolMembers(popts global.IListGlobalLoadBalancerPoolMembersRequest) (*lsentity.ListGlobalLoadBalancerPoolMembers, lserr.IError) // GetGlobalLoadBalancerPoolMemberById(popts global.IGetGlobalLoadBalancerPoolMemberByIdRequest) (*lsentity.GlobalLoadBalancerPoolMember, lserr.IError) - // CreateGlobalLoadBalancerPoolMember(popts global.ICreateGlobalLoadBalancerPoolMemberRequest) (*lsentity.GlobalLoadBalancerPoolMember, lserr.IError) // UpdateGlobalLoadBalancerPoolMember(popts global.IUpdateGlobalLoadBalancerPoolMemberRequest) lserr.IError // DeleteGlobalLoadBalancerPoolMemberById(popts global.IDeleteGlobalLoadBalancerPoolMemberByIdRequest) lserr.IError + // CreateGlobalLoadBalancer(popts global.ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) + // UpdateGlobalLoadBalancer(popts global.IUpdateGlobalLoadBalancerRequest) lserr.IError + // GetGlobalLoadBalancerById(popts global.IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) + // DeleteGlobalLoadBalancerById(popts global.IDeleteGlobalLoadBalancerByIdRequest) lserr.IError // ListGlobalLoadBalancerHealthMonitors(popts global.IListGlobalLoadBalancerHealthMonitorsRequest) (*lsentity.ListGlobalLoadBalancerHealthMonitors, lserr.IError) // GetGlobalLoadBalancerHealthMonitorById(popts global.IGetGlobalLoadBalancerHealthMonitorByIdRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) // CreateGlobalLoadBalancerHealthMonitor(popts global.ICreateGlobalLoadBalancerHealthMonitorRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) From e29bb38fd0b5d407b89585e14970cf6a399683f8 Mon Sep 17 00:00:00 2001 From: andrew Date: Wed, 25 Dec 2024 14:35:35 +0700 Subject: [PATCH 03/13] =?UTF-8?q?=F0=9F=8C=B1=20add:=20crud=20glb=20listen?= =?UTF-8?q?er?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/lb_global_test.go | 72 +++ vngcloud/entity/loadbalancer_global.go | 25 + vngcloud/services/loadbalancer/global/glb.go | 98 ++++ .../global/glb_listener_request.go | 505 ++++++++++-------- .../global/glb_listener_response.go | 164 +++--- .../services/loadbalancer/global/irequest.go | 42 +- vngcloud/services/loadbalancer/global/url.go | 34 ++ .../services/loadbalancer/iloadbalancer.go | 11 +- 8 files changed, 637 insertions(+), 314 deletions(-) diff --git a/test/lb_global_test.go b/test/lb_global_test.go index 973cc34..8313935 100644 --- a/test/lb_global_test.go +++ b/test/lb_global_test.go @@ -204,3 +204,75 @@ func TestPatchGlobalPoolMemberSuccess(t *ltesting.T) { t.Log("PASS") } + +func TestListGlobalListenersSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewListGlobalListenersRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933") + listeners, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().ListGlobalListeners(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if listeners == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Logf("Result: %+v", listeners) + for _, listener := range listeners.Items { + t.Logf("Listener: %+v", listener) + } + t.Log("PASS") +} + +func TestCreateGlobalListenerSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewCreateGlobalListenerRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "annd2-test"). + WithDescription("hihi"). + WithPort(85). + WithTimeoutClient(50). + WithTimeoutConnection(5). + WithTimeoutMember(50). + WithGlobalPoolId("gpool-7000d491-b441-40a0-af01-8039baa8e346") + listener, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().CreateGlobalListener(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if listener == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Logf("Result: %+v", listener) + t.Log("PASS") +} + +func TestUpdateGlobalListenerSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewUpdateGlobalListenerRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "glis-7ffc4f19-7218-4d38-8016-e3ad2401e3bd"). + WithTimeoutClient(60). + WithTimeoutConnection(6). + WithTimeoutMember(60). + WithGlobalPoolId("gpool-7000d491-b441-40a0-af01-8039baa8e346") + listener, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().UpdateGlobalListener(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if listener == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Logf("Result: %+v", listener) + t.Log("PASS") +} + +func TestDeleteGlobalListenerSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewDeleteGlobalListenerRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "glis-7ffc4f19-7218-4d38-8016-e3ad2401e3bd") + sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().DeleteGlobalListener(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + t.Log("PASS") +} diff --git a/vngcloud/entity/loadbalancer_global.go b/vngcloud/entity/loadbalancer_global.go index 00dec5e..37e138a 100644 --- a/vngcloud/entity/loadbalancer_global.go +++ b/vngcloud/entity/loadbalancer_global.go @@ -125,3 +125,28 @@ type ListGlobalPools struct { type ListGlobalPoolMembers struct { Items []*GlobalPoolMember } + +// -------------------------------------------------------- + +type GlobalListener struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt *string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Protocol string `json:"protocol"` + Port int `json:"port"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + GlobalPoolID string `json:"globalPoolId"` + TimeoutClient int `json:"timeoutClient"` + TimeoutMember int `json:"timeoutMember"` + TimeoutConnection int `json:"timeoutConnection"` + AllowedCidrs string `json:"allowedCidrs"` + Headers *string `json:"headers"` + Status string `json:"status"` +} + +type ListGlobalListeners struct { + Items []*GlobalListener +} diff --git a/vngcloud/services/loadbalancer/global/glb.go b/vngcloud/services/loadbalancer/global/glb.go index df134e3..ec80a39 100644 --- a/vngcloud/services/loadbalancer/global/glb.go +++ b/vngcloud/services/loadbalancer/global/glb.go @@ -164,3 +164,101 @@ func (s *LoadBalancerServiceGlobal) PatchGlobalPoolMember(popts IPatchGlobalPool return nil } + +// -------------------------------------------------- + +func (s *LoadBalancerServiceGlobal) ListGlobalListeners(popts IListGlobalListenersRequest) (*lsentity.ListGlobalListeners, lserr.IError) { + url := listGlobalListenersUrl(s.VLBClient, popts) + resp := new(ListGlobalListenersResponse) + 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.WithErrorLoadBalancerNotFound2(errResp)). + AppendCategories(lserr.ErrCatProductVlb) + } + + return resp.ToEntityListGlobalListeners(), nil +} + +// -------------------------------------------------- + +func (s *LoadBalancerServiceGlobal) CreateGlobalListener(popts ICreateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) { + url := createGlobalListenerUrl(s.VLBClient, popts) + resp := new(CreateGlobalListenerResponse) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(202). + WithJsonBody(popts.ToRequestBody()). + WithJsonResponse(resp). + WithJsonError(errResp) + + if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { + return nil, lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorLoadBalancerNotFound(errResp), + lserr.WithErrorLoadBalancerNotFound2(errResp), + lserr.WithErrorLoadBalancerNotReady(errResp), + // lserr.WithErrorLoadBalancerDuplicateListenerName(errResp)). + // WithParameters(popts.ToMap()). + // AppendCategories(lserr.ErrCatProductVlb + ) + } + + return resp.ToEntityGlobalListener(), nil +} + +// -------------------------------------------------- + +func (s *LoadBalancerServiceGlobal) UpdateGlobalListener(popts IUpdateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) { + url := updateGlobalListenerUrl(s.VLBClient, popts) + resp := new(UpdateGlobalListenerResponse) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(202). + WithJsonBody(popts.ToRequestBody()). + WithJsonResponse(resp). + WithJsonError(errResp) + + if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { + return nil, lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorLoadBalancerNotFound(errResp), + lserr.WithErrorLoadBalancerNotFound2(errResp), + lserr.WithErrorLoadBalancerNotReady(errResp), + // lserr.WithErrorLoadBalancerDuplicateListenerName(errResp) + ). + WithParameters(popts.ToMap()). + AppendCategories(lserr.ErrCatProductVlb) + + } + + return resp.ToEntityGlobalListener(), nil +} + +// -------------------------------------------------- + +func (s *LoadBalancerServiceGlobal) DeleteGlobalListener(popts IDeleteGlobalListenerRequest) lserr.IError { + url := deleteGlobalListenerUrl(s.VLBClient, popts) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(202). + WithJsonError(errResp) + + if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { + return lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorLoadBalancerNotFound(errResp), + lserr.WithErrorLoadBalancerNotFound2(errResp), + lserr.WithErrorLoadBalancerNotReady(errResp)). + AppendCategories(lserr.ErrCatProductVlb) + } + + return nil +} diff --git a/vngcloud/services/loadbalancer/global/glb_listener_request.go b/vngcloud/services/loadbalancer/global/glb_listener_request.go index 8372388..8556156 100644 --- a/vngcloud/services/loadbalancer/global/glb_listener_request.go +++ b/vngcloud/services/loadbalancer/global/glb_listener_request.go @@ -1,9 +1,11 @@ package global -// import ( -// lscommon "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/common" -// lstr "strings" -// ) +import ( + "strings" + + lscommon "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/common" + // lstr "strings" +) type GlobalListenerProtocol string @@ -11,235 +13,266 @@ const ( GlobalListenerProtocolTCP GlobalListenerProtocol = "TCP" ) -// func NewCreateListenerRequest(pname string, pprotocol ListenerProtocol, pport int) ICreateListenerRequest { -// opts := new(CreateListenerRequest) -// opts.ListenerName = pname -// opts.ListenerProtocol = pprotocol -// opts.ListenerProtocolPort = pport -// opts.AllowedCidrs = "0.0.0.0/0" -// opts.TimeoutClient = 50 -// opts.TimeoutMember = 50 -// opts.TimeoutConnection = 5 - -// return opts -// } - -// func NewUpdateListenerRequest(plbId, plistenerId string) IUpdateListenerRequest { -// opts := new(UpdateListenerRequest) -// opts.LoadBalancerId = plbId -// opts.ListenerId = plistenerId - -// return opts -// } - -// func NewListListenersByLoadBalancerIdRequest(plbId string) IListListenersByLoadBalancerIdRequest { -// opts := new(ListListenersByLoadBalancerIdRequest) -// opts.LoadBalancerId = plbId - -// return opts -// } - -// func NewDeleteListenerByIdRequest(plbId, plistenerId string) IDeleteListenerByIdRequest { -// opts := new(DeleteListenerByIdRequest) -// opts.LoadBalancerId = plbId -// opts.ListenerId = plistenerId - -// return opts -// } - -// func NewGetListenerByIdRequest(plbId, plistenerId string) IGetListenerByIdRequest { -// opts := new(GetListenerByIdRequest) -// opts.LoadBalancerId = plbId -// opts.ListenerId = plistenerId - -// return opts -// } - -// type CreateListenerRequest struct { -// AllowedCidrs string `json:"allowedCidrs"` -// ListenerName string `json:"listenerName"` -// ListenerProtocol ListenerProtocol `json:"listenerProtocol"` -// ListenerProtocolPort int `json:"listenerProtocolPort"` -// TimeoutClient int `json:"timeoutClient"` -// TimeoutConnection int `json:"timeoutConnection"` -// TimeoutMember int `json:"timeoutMember"` -// Headers *[]string `json:"headers"` -// DefaultPoolId *string `json:"defaultPoolId"` -// CertificateAuthorities *[]string `json:"certificateAuthorities"` -// ClientCertificate *string `json:"clientCertificate"` -// DefaultCertificateAuthority *string `json:"defaultCertificateAuthority"` - -// lscommon.LoadBalancerCommon -// lscommon.UserAgent -// } - -// type UpdateListenerRequest struct { -// AllowedCidrs string `json:"allowedCidrs"` -// DefaultPoolId string `json:"defaultPoolId"` -// TimeoutClient int `json:"timeoutClient"` -// TimeoutConnection int `json:"timeoutConnection"` -// TimeoutMember int `json:"timeoutMember"` -// Headers *[]string `json:"headers"` -// CertificateAuthorities *[]string `json:"certificateAuthorities"` -// ClientCertificate *string `json:"clientCertificate"` -// DefaultCertificateAuthority *string `json:"defaultCertificateAuthority"` - -// lscommon.LoadBalancerCommon -// lscommon.ListenerCommon -// lscommon.UserAgent -// } - -// type ListListenersByLoadBalancerIdRequest struct { -// lscommon.LoadBalancerCommon -// lscommon.UserAgent -// } - -// type DeleteListenerByIdRequest struct { -// lscommon.LoadBalancerCommon -// lscommon.ListenerCommon -// lscommon.UserAgent -// } - -// type GetListenerByIdRequest struct { -// lscommon.LoadBalancerCommon -// lscommon.ListenerCommon -// lscommon.UserAgent -// } - -// func (s *CreateListenerRequest) ToRequestBody() interface{} { -// if s == nil { -// return nil -// } - -// if s.ListenerProtocol == ListenerProtocolHTTPS { -// return s -// } - -// s.CertificateAuthorities = nil -// s.ClientCertificate = nil -// s.DefaultCertificateAuthority = nil - -// return s -// } - -// func (s *CreateListenerRequest) WithAllowedCidrs(pcidrs ...string) ICreateListenerRequest { -// if len(pcidrs) < 1 { -// return s -// } - -// s.AllowedCidrs = lstr.Join(pcidrs, ",") -// return s -// } - -// func (s *CreateListenerRequest) WithTimeoutClient(ptoc int) ICreateListenerRequest { -// s.TimeoutClient = ptoc -// return s -// } - -// func (s *CreateListenerRequest) WithTimeoutConnection(ptoc int) ICreateListenerRequest { -// s.TimeoutConnection = ptoc -// return s -// } - -// func (s *CreateListenerRequest) WithTimeoutMember(ptom int) ICreateListenerRequest { -// s.TimeoutMember = ptom -// return s -// } - -// func (s *CreateListenerRequest) AddCidrs(pcidrs ...string) ICreateListenerRequest { -// if len(pcidrs) < 1 { -// return s -// } - -// if s.AllowedCidrs == "" { -// return s.WithAllowedCidrs(pcidrs...) -// } else { -// s.AllowedCidrs = s.AllowedCidrs + "," + lstr.Join(pcidrs, ",") -// } - -// return s -// } - -// func (s *CreateListenerRequest) WithLoadBalancerId(plbid string) ICreateListenerRequest { -// s.LoadBalancerId = plbid -// return s -// } - -// func (s *CreateListenerRequest) WithDefaultPoolId(ppoolId string) ICreateListenerRequest { -// s.DefaultPoolId = &ppoolId -// return s -// } - -// func (s *CreateListenerRequest) ToMap() map[string]interface{} { -// return map[string]interface{}{ -// "listenerName": s.ListenerName, -// "listenerProtocol": s.ListenerProtocol, -// "listenerProtocolPort": s.ListenerProtocolPort, -// "timeoutClient": s.TimeoutClient, -// "timeoutConnection": s.TimeoutConnection, -// "timeoutMember": s.TimeoutMember, -// "allowedCidrs": s.AllowedCidrs, -// "defaultPoolId": s.DefaultPoolId, -// "certificateAuthorities": s.CertificateAuthorities, -// "clientCertificate": s.ClientCertificate, -// "defaultCertificateAuthority": s.DefaultCertificateAuthority, -// "headers": s.Headers, -// } -// } - -// func (s *UpdateListenerRequest) ToRequestBody() interface{} { -// return s -// } - -// func (s *UpdateListenerRequest) WithCidrs(pcidrs ...string) IUpdateListenerRequest { -// if len(pcidrs) < 1 { -// return s -// } - -// s.AllowedCidrs = lstr.Join(pcidrs, ",") -// return s -// } - -// func (s *UpdateListenerRequest) WithTimeoutClient(ptoc int) IUpdateListenerRequest { -// s.TimeoutClient = ptoc -// return s -// } - -// func (s *UpdateListenerRequest) WithTimeoutConnection(ptoc int) IUpdateListenerRequest { -// s.TimeoutConnection = ptoc -// return s -// } - -// func (s *UpdateListenerRequest) WithTimeoutMember(ptom int) IUpdateListenerRequest { -// s.TimeoutMember = ptom -// return s -// } - -// func (s *UpdateListenerRequest) WithDefaultPoolId(ppoolId string) IUpdateListenerRequest { -// s.DefaultPoolId = ppoolId -// return s -// } - -// func (s *UpdateListenerRequest) WithHeaders(pheaders ...string) IUpdateListenerRequest { -// if len(pheaders) < 1 { -// return s -// } - -// s.Headers = &pheaders -// return s -// } - -// func (s *UpdateListenerRequest) WithCertificateAuthorities(pca ...string) IUpdateListenerRequest { -// s.CertificateAuthorities = &pca -// return s -// } - -// func (s *UpdateListenerRequest) WithClientCertificate(pclientCert string) IUpdateListenerRequest { -// s.ClientCertificate = &pclientCert -// return s -// } - -// func (s *UpdateListenerRequest) WithDefaultCertificateAuthority(pdefaultCA string) IUpdateListenerRequest { -// s.DefaultCertificateAuthority = &pdefaultCA -// return s -// } +var _ IListGlobalListenersRequest = &ListGlobalListenersRequest{} + +type ListGlobalListenersRequest struct { + lscommon.UserAgent + lscommon.LoadBalancerCommon +} + +func (s *ListGlobalListenersRequest) WithLoadBalancerId(plbId string) IListGlobalListenersRequest { + s.LoadBalancerId = plbId + return s +} + +func NewListGlobalListenersRequest(plbId string) IListGlobalListenersRequest { + opts := &ListGlobalListenersRequest{} + opts.LoadBalancerId = plbId + return opts +} + +// -------------------------------------------------- + +var _ ICreateGlobalListenerRequest = &CreateGlobalListenerRequest{} + +// WithAllowedCidrs(pcidrs ...string) ICreateGlobalListenerRequest +// WithDescription(pdesc string) ICreateGlobalListenerRequest +// WithHeaders(pheaders ...string) ICreateGlobalListenerRequest +// WithName(pname string) ICreateGlobalListenerRequest +// WithPort(pport int) ICreateGlobalListenerRequest +// WithProtocol(pprotocol GlobalListenerProtocol) ICreateGlobalListenerRequest +// WithTimeoutClient(ptoc int) ICreateGlobalListenerRequest +// WithTimeoutConnection(ptoc int) ICreateGlobalListenerRequest +// WithTimeoutMember(ptom int) ICreateGlobalListenerRequest +// WithDefaultPoolId(ppoolId string) ICreateGlobalListenerRequest +type CreateGlobalListenerRequest struct { + AllowedCidrs string `json:"allowedCidrs"` + Description string `json:"description"` + Headers []string `json:"headers"` + Name string `json:"name"` + Port int `json:"port"` + Protocol GlobalListenerProtocol `json:"protocol"` + TimeoutClient int `json:"timeoutClient"` + TimeoutConnection int `json:"timeoutConnection"` + TimeoutMember int `json:"timeoutMember"` + GlobalPoolId string `json:"globalPoolId"` + + lscommon.UserAgent + lscommon.LoadBalancerCommon +} + +func (s *CreateGlobalListenerRequest) WithAllowedCidrs(pcidrs ...string) ICreateGlobalListenerRequest { + s.AllowedCidrs = strings.Join(pcidrs, ",") + return s +} + +func (s *CreateGlobalListenerRequest) WithDescription(pdesc string) ICreateGlobalListenerRequest { + s.Description = pdesc + return s +} + +func (s *CreateGlobalListenerRequest) WithHeaders(pheaders ...string) ICreateGlobalListenerRequest { + s.Headers = pheaders + return s +} + +func (s *CreateGlobalListenerRequest) WithName(pname string) ICreateGlobalListenerRequest { + s.Name = pname + return s +} + +func (s *CreateGlobalListenerRequest) WithPort(pport int) ICreateGlobalListenerRequest { + s.Port = pport + return s +} + +func (s *CreateGlobalListenerRequest) WithProtocol(pprotocol GlobalListenerProtocol) ICreateGlobalListenerRequest { + s.Protocol = pprotocol + return s +} + +func (s *CreateGlobalListenerRequest) WithTimeoutClient(ptoc int) ICreateGlobalListenerRequest { + s.TimeoutClient = ptoc + return s +} + +func (s *CreateGlobalListenerRequest) WithTimeoutConnection(ptoc int) ICreateGlobalListenerRequest { + s.TimeoutConnection = ptoc + return s +} + +func (s *CreateGlobalListenerRequest) WithTimeoutMember(ptom int) ICreateGlobalListenerRequest { + s.TimeoutMember = ptom + return s +} + +func (s *CreateGlobalListenerRequest) WithGlobalPoolId(ppoolId string) ICreateGlobalListenerRequest { + s.GlobalPoolId = ppoolId + return s +} + +func (s *CreateGlobalListenerRequest) WithLoadBalancerId(plbid string) ICreateGlobalListenerRequest { + s.LoadBalancerId = plbid + return s +} + +func (s *CreateGlobalListenerRequest) ToRequestBody() interface{} { + return s +} + +func (s *CreateGlobalListenerRequest) ToMap() map[string]interface{} { + return map[string]interface{}{ + "allowedCidrs": s.AllowedCidrs, + "description": s.Description, + "headers": s.Headers, + "name": s.Name, + "port": s.Port, + "protocol": s.Protocol, + "timeoutClient": s.TimeoutClient, + "timeoutConnection": s.TimeoutConnection, + "timeoutMember": s.TimeoutMember, + "globalPoolId": s.GlobalPoolId, + } +} + +func NewCreateGlobalListenerRequest(plbId, name string) ICreateGlobalListenerRequest { + opts := &CreateGlobalListenerRequest{ + AllowedCidrs: "0.0.0.0/0", + Description: "", + Headers: nil, + Name: name, + Port: 80, + Protocol: GlobalListenerProtocolTCP, + TimeoutClient: 50, + TimeoutConnection: 5, + TimeoutMember: 50, + GlobalPoolId: "", + LoadBalancerCommon: lscommon.LoadBalancerCommon{ + LoadBalancerId: plbId, + }, + } + return opts +} + +// -------------------------------------------------- + +var _ IUpdateGlobalListenerRequest = &UpdateGlobalListenerRequest{} + +type UpdateGlobalListenerRequest struct { + AllowedCidrs string `json:"allowedCidrs"` + TimeoutClient int `json:"timeoutClient"` + TimeoutMember int `json:"timeoutMember"` + TimeoutConnection int `json:"timeoutConnection"` + Headers *string `json:"headers"` + GlobalPoolId string `json:"globalPoolId"` + + lscommon.UserAgent + lscommon.LoadBalancerCommon + lscommon.ListenerCommon +} + +func (s *UpdateGlobalListenerRequest) WithAllowedCidrs(pcidrs ...string) IUpdateGlobalListenerRequest { + s.AllowedCidrs = strings.Join(pcidrs, ",") + return s +} + +func (s *UpdateGlobalListenerRequest) WithTimeoutClient(ptoc int) IUpdateGlobalListenerRequest { + s.TimeoutClient = ptoc + return s +} + +func (s *UpdateGlobalListenerRequest) WithTimeoutMember(ptom int) IUpdateGlobalListenerRequest { + s.TimeoutMember = ptom + return s +} + +func (s *UpdateGlobalListenerRequest) WithTimeoutConnection(ptoc int) IUpdateGlobalListenerRequest { + s.TimeoutConnection = ptoc + return s +} + +func (s *UpdateGlobalListenerRequest) WithHeaders(pheaders ...string) IUpdateGlobalListenerRequest { + h := strings.Join(pheaders, ",") + s.Headers = &h + return s +} + +func (s *UpdateGlobalListenerRequest) WithGlobalPoolId(ppoolId string) IUpdateGlobalListenerRequest { + s.GlobalPoolId = ppoolId + return s +} + +func (s *UpdateGlobalListenerRequest) WithLoadBalancerId(plbid string) IUpdateGlobalListenerRequest { + s.LoadBalancerId = plbid + return s +} + +func (s *UpdateGlobalListenerRequest) WithListenerId(plid string) IUpdateGlobalListenerRequest { + s.ListenerId = plid + return s +} + +func (s *UpdateGlobalListenerRequest) ToRequestBody() interface{} { + return s +} + +func (s *UpdateGlobalListenerRequest) ToMap() map[string]interface{} { + return map[string]interface{}{ + "allowedCidrs": s.AllowedCidrs, + "timeoutClient": s.TimeoutClient, + "timeoutMember": s.TimeoutMember, + "timeoutConnection": s.TimeoutConnection, + "headers": s.Headers, + "globalPoolId": s.GlobalPoolId, + } +} + +func NewUpdateGlobalListenerRequest(plbId, plId string) IUpdateGlobalListenerRequest { + opts := &UpdateGlobalListenerRequest{ + AllowedCidrs: "0.0.0.0/0", + TimeoutClient: 50, + TimeoutMember: 50, + TimeoutConnection: 5, + Headers: nil, + GlobalPoolId: "", + LoadBalancerCommon: lscommon.LoadBalancerCommon{ + LoadBalancerId: plbId, + }, + ListenerCommon: lscommon.ListenerCommon{ + ListenerId: plId, + }, + } + return opts +} + +// -------------------------------------------------- + +var _ IDeleteGlobalListenerRequest = &DeleteGlobalListenerRequest{} + +type DeleteGlobalListenerRequest struct { + lscommon.UserAgent + lscommon.LoadBalancerCommon + lscommon.ListenerCommon +} + +func (s *DeleteGlobalListenerRequest) WithLoadBalancerId(plbid string) IDeleteGlobalListenerRequest { + s.LoadBalancerId = plbid + return s +} + +func (s *DeleteGlobalListenerRequest) WithListenerId(plid string) IDeleteGlobalListenerRequest { + s.ListenerId = plid + return s +} + +func NewDeleteGlobalListenerRequest(plbId, plId string) IDeleteGlobalListenerRequest { + opts := &DeleteGlobalListenerRequest{ + LoadBalancerCommon: lscommon.LoadBalancerCommon{ + LoadBalancerId: plbId, + }, + ListenerCommon: lscommon.ListenerCommon{ + ListenerId: plId, + }, + } + return opts +} diff --git a/vngcloud/services/loadbalancer/global/glb_listener_response.go b/vngcloud/services/loadbalancer/global/glb_listener_response.go index c484bf9..9af1351 100644 --- a/vngcloud/services/loadbalancer/global/glb_listener_response.go +++ b/vngcloud/services/loadbalancer/global/glb_listener_response.go @@ -1,81 +1,103 @@ package global -// import lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" +import lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" -// type CreateListenerResponse struct { -// UUID string `json:"uuid"` -// } +type GlobalListenersResponse struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt *string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Protocol string `json:"protocol"` + Port int `json:"port"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + GlobalPoolID string `json:"globalPoolId"` + TimeoutClient int `json:"timeoutClient"` + TimeoutMember int `json:"timeoutMember"` + TimeoutConnection int `json:"timeoutConnection"` + AllowedCidrs string `json:"allowedCidrs"` + Headers *string `json:"headers"` + Status string `json:"status"` +} -// type ListListenersByLoadBalancerIdResponse struct { -// Data []Listener `json:"data"` -// } +func (s *GlobalListenersResponse) ToEntityGlobalListener() *lsentity.GlobalListener { + return &lsentity.GlobalListener{ + CreatedAt: s.CreatedAt, + UpdatedAt: s.UpdatedAt, + DeletedAt: s.DeletedAt, + ID: s.ID, + Name: s.Name, + Description: s.Description, + Protocol: s.Protocol, + Port: s.Port, + GlobalLoadBalancerID: s.GlobalLoadBalancerID, + GlobalPoolID: s.GlobalPoolID, + TimeoutClient: s.TimeoutClient, + TimeoutMember: s.TimeoutMember, + TimeoutConnection: s.TimeoutConnection, + AllowedCidrs: s.AllowedCidrs, + Headers: s.Headers, + Status: s.Status, + } +} -// type GetListenerByIdResponse struct { -// Data Listener `json:"data"` -// } +type ListGlobalListenersResponse []GlobalListenersResponse -// type Listener struct { -// UUID string `json:"uuid"` -// Name string `json:"name"` -// Description string `json:"description,omitempty"` -// Protocol string `json:"protocol"` -// ProtocolPort int `json:"protocolPort"` -// ConnectionLimit int `json:"connectionLimit"` -// DefaultPoolId string `json:"defaultPoolId"` -// DefaultPoolName string `json:"defaultPoolName"` -// TimeoutClient int `json:"timeoutClient"` -// TimeoutMember int `json:"timeoutMember"` -// TimeoutConnection int `json:"timeoutConnection"` -// AllowedCidrs string `json:"allowedCidrs"` -// Headers []string `json:"headers"` -// CertificateAuthorities []string `json:"certificateAuthorities"` -// DisplayStatus string `json:"displayStatus"` -// CreatedAt string `json:"createdAt"` -// UpdatedAt string `json:"updatedAt"` -// DefaultCertificateAuthority *string `json:"defaultCertificateAuthority"` -// ClientCertificateAuthentication *string `json:"clientCertificateAuthentication"` -// ProgressStatus string `json:"progressStatus"` -// } +func (s ListGlobalListenersResponse) ToEntityListGlobalListeners() *lsentity.ListGlobalListeners { + listeners := &lsentity.ListGlobalListeners{} + for _, itemListener := range s { + listeners.Items = append(listeners.Items, itemListener.ToEntityGlobalListener()) + } + return listeners +} -// func (s *CreateListenerResponse) ToEntityListener() *lsentity.Listener { -// return &lsentity.Listener{ -// UUID: s.UUID, -// } -// } +// -------------------------------------------------- -// func (s *ListListenersByLoadBalancerIdResponse) ToEntityListListeners() *lsentity.ListListeners { -// listeners := &lsentity.ListListeners{} -// for _, itemListener := range s.Data { -// listeners.Add(itemListener.toEntityListener()) -// } -// return listeners -// } +type CreateGlobalListenerResponse GlobalListenersResponse -// func (s *Listener) toEntityListener() *lsentity.Listener { -// return &lsentity.Listener{ -// UUID: s.UUID, -// Name: s.Name, -// Description: s.Description, -// Protocol: s.Protocol, -// ProtocolPort: s.ProtocolPort, -// ConnectionLimit: s.ConnectionLimit, -// DefaultPoolId: s.DefaultPoolId, -// DefaultPoolName: s.DefaultPoolName, -// TimeoutClient: s.TimeoutClient, -// TimeoutMember: s.TimeoutMember, -// TimeoutConnection: s.TimeoutConnection, -// AllowedCidrs: s.AllowedCidrs, -// Headers: s.Headers, -// CertificateAuthorities: s.CertificateAuthorities, -// DisplayStatus: s.DisplayStatus, -// CreatedAt: s.CreatedAt, -// UpdatedAt: s.UpdatedAt, -// DefaultCertificateAuthority: s.DefaultCertificateAuthority, -// ClientCertificateAuthentication: s.ClientCertificateAuthentication, -// ProgressStatus: s.ProgressStatus, -// } -// } +func (s *CreateGlobalListenerResponse) ToEntityGlobalListener() *lsentity.GlobalListener { + return &lsentity.GlobalListener{ + CreatedAt: s.CreatedAt, + UpdatedAt: s.UpdatedAt, + DeletedAt: s.DeletedAt, + ID: s.ID, + Name: s.Name, + Description: s.Description, + Protocol: s.Protocol, + Port: s.Port, + GlobalLoadBalancerID: s.GlobalLoadBalancerID, + GlobalPoolID: s.GlobalPoolID, + TimeoutClient: s.TimeoutClient, + TimeoutMember: s.TimeoutMember, + TimeoutConnection: s.TimeoutConnection, + AllowedCidrs: s.AllowedCidrs, + Headers: s.Headers, + Status: s.Status, + } +} -// func (s *GetListenerByIdResponse) ToEntityListener() *lsentity.Listener { -// return s.Data.toEntityListener() -// } +// -------------------------------------------------- + +type UpdateGlobalListenerResponse GlobalListenersResponse + +func (s *UpdateGlobalListenerResponse) ToEntityGlobalListener() *lsentity.GlobalListener { + return &lsentity.GlobalListener{ + CreatedAt: s.CreatedAt, + UpdatedAt: s.UpdatedAt, + DeletedAt: s.DeletedAt, + ID: s.ID, + Name: s.Name, + Description: s.Description, + Protocol: s.Protocol, + Port: s.Port, + GlobalLoadBalancerID: s.GlobalLoadBalancerID, + GlobalPoolID: s.GlobalPoolID, + TimeoutClient: s.TimeoutClient, + TimeoutMember: s.TimeoutMember, + TimeoutConnection: s.TimeoutConnection, + AllowedCidrs: s.AllowedCidrs, + Headers: s.Headers, + Status: s.Status, + } +} diff --git a/vngcloud/services/loadbalancer/global/irequest.go b/vngcloud/services/loadbalancer/global/irequest.go index 011cbbf..b3725bd 100644 --- a/vngcloud/services/loadbalancer/global/irequest.go +++ b/vngcloud/services/loadbalancer/global/irequest.go @@ -48,11 +48,11 @@ type ICreateGlobalListenerRequest interface { WithTimeoutClient(ptoc int) ICreateGlobalListenerRequest WithTimeoutConnection(ptoc int) ICreateGlobalListenerRequest WithTimeoutMember(ptom int) ICreateGlobalListenerRequest - WithDefaultPoolId(ppoolId string) ICreateGlobalListenerRequest + WithGlobalPoolId(ppoolId string) ICreateGlobalListenerRequest WithLoadBalancerId(plbid string) ICreateGlobalListenerRequest + GetLoadBalancerId() string // AddCidrs(pcidrs ...string) ICreateGlobalListenerRequest - // GetLoadBalancerId() string ParseUserAgent() string ToRequestBody() interface{} @@ -182,3 +182,41 @@ type IBulkActionRequest interface { } // -------------------------------------------------------- + +type IListGlobalListenersRequest interface { + WithLoadBalancerId(plbId string) IListGlobalListenersRequest + GetLoadBalancerId() string // to use in request url + + ParseUserAgent() string +} + +// -------------------------------------------------------- + +type IUpdateGlobalListenerRequest interface { + WithAllowedCidrs(pcidrs ...string) IUpdateGlobalListenerRequest + WithTimeoutClient(ptoc int) IUpdateGlobalListenerRequest + WithTimeoutMember(ptom int) IUpdateGlobalListenerRequest + WithTimeoutConnection(ptoc int) IUpdateGlobalListenerRequest + WithHeaders(pheaders ...string) IUpdateGlobalListenerRequest + WithGlobalPoolId(ppoolId string) IUpdateGlobalListenerRequest + + WithLoadBalancerId(plbId string) IUpdateGlobalListenerRequest + WithListenerId(plistenerId string) IUpdateGlobalListenerRequest + GetLoadBalancerId() string // to use in request url + GetListenerId() string + + ParseUserAgent() string + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +// -------------------------------------------------------- + +type IDeleteGlobalListenerRequest interface { + WithLoadBalancerId(plbId string) IDeleteGlobalListenerRequest + WithListenerId(plistenerId string) IDeleteGlobalListenerRequest + GetLoadBalancerId() string // to use in request url + GetListenerId() string + + ParseUserAgent() string +} diff --git a/vngcloud/services/loadbalancer/global/url.go b/vngcloud/services/loadbalancer/global/url.go index d54ada2..4040c2e 100644 --- a/vngcloud/services/loadbalancer/global/url.go +++ b/vngcloud/services/loadbalancer/global/url.go @@ -66,3 +66,37 @@ func patchGlobalPoolMemberUrl(psc lsclient.IServiceClient, popts IPatchGlobalPoo "pool-members", ) } + +func listGlobalListenersUrl(psc lsclient.IServiceClient, popts IListGlobalListenersRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + "global-listeners", + ) +} + +func createGlobalListenerUrl(psc lsclient.IServiceClient, popts ICreateGlobalListenerRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + "global-listeners", + ) +} + +func updateGlobalListenerUrl(psc lsclient.IServiceClient, popts IUpdateGlobalListenerRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + "global-listeners", + popts.GetListenerId(), + ) +} + +func deleteGlobalListenerUrl(psc lsclient.IServiceClient, popts IDeleteGlobalListenerRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + "global-listeners", + popts.GetListenerId(), + ) +} diff --git a/vngcloud/services/loadbalancer/iloadbalancer.go b/vngcloud/services/loadbalancer/iloadbalancer.go index 6ecfd83..194c6d4 100644 --- a/vngcloud/services/loadbalancer/iloadbalancer.go +++ b/vngcloud/services/loadbalancer/iloadbalancer.go @@ -55,6 +55,12 @@ type ILoadBalancerServiceGlobal interface { ListGlobalPoolMembers(popts global.IListGlobalPoolMembersRequest) (*lsentity.ListGlobalPoolMembers, lserr.IError) PatchGlobalPoolMember(popts global.IPatchGlobalPoolMemberRequest) lserr.IError + ListGlobalListeners(popts global.IListGlobalListenersRequest) (*lsentity.ListGlobalListeners, lserr.IError) + CreateGlobalListener(popts global.ICreateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) + UpdateGlobalListener(popts global.IUpdateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) + DeleteGlobalListener(popts global.IDeleteGlobalListenerRequest) lserr.IError + // GetGlobalListenerById(popts global.IGetGlobalListenerByIdRequest) (*lsentity.GlobalListener, lserr.IError) + // GetGlobalLoadBalancerPoolById(popts global.IGetGlobalLoadBalancerPoolByIdRequest) (*lsentity.GlobalLoadBalancerPool, lserr.IError) // GetGlobalLoadBalancerPoolMemberById(popts global.IGetGlobalLoadBalancerPoolMemberByIdRequest) (*lsentity.GlobalLoadBalancerPoolMember, lserr.IError) // UpdateGlobalLoadBalancerPoolMember(popts global.IUpdateGlobalLoadBalancerPoolMemberRequest) lserr.IError @@ -68,11 +74,6 @@ type ILoadBalancerServiceGlobal interface { // CreateGlobalLoadBalancerHealthMonitor(popts global.ICreateGlobalLoadBalancerHealthMonitorRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) // UpdateGlobalLoadBalancerHealthMonitor(popts global.IUpdateGlobalLoadBalancerHealthMonitorRequest) lserr.IError // DeleteGlobalLoadBalancerHealthMonitorById(popts global.IDeleteGlobalLoadBalancerHealthMonitorByIdRequest) lserr.IError - // ListGlobalLoadBalancerListeners(popts global.IListGlobalLoadBalancerListenersRequest) (*lsentity.ListGlobalLoadBalancerListeners, lserr.IError) - // GetGlobalLoadBalancerListenerById(popts global.IGetGlobalLoadBalancerListenerByIdRequest) (*lsentity.GlobalLoadBalancerListener, lserr.IError) - // CreateGlobalLoadBalancerListener(popts global.ICreateGlobalLoadBalancerListenerRequest) (*lsentity.GlobalLoadBalancerListener, lserr.IError) - // UpdateGlobalLoadBalancerListener(popts global.IUpdateGlobalLoadBalancerListenerRequest) lserr.IError - // DeleteGlobalLoadBalancerListenerById(popts global.IDeleteGlobalLoadBalancerListenerByIdRequest) lserr.IError // ListGlobalLoadBalancerTags(popts global.IListGlobalLoadBalancerTagsRequest) (*lsentity.ListGlobalLoadBalancerTags, lserr.IError) // CreateGlobalLoadBalancerTags(popts global.ICreateGlobalLoadBalancerTagsRequest) lserr.IError // UpdateGlobalLoadBalancerTags(popts global.IUpdateGlobalLoadBalancerTagsRequest) lserr.IError From 6831108b3b193ac77bd21512fc510a7fb3795932 Mon Sep 17 00:00:00 2001 From: andrew Date: Wed, 25 Dec 2024 15:19:29 +0700 Subject: [PATCH 04/13] =?UTF-8?q?=F0=9F=8C=B1=20add:=20crud=20glb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/lb_global_test.go | 106 ++++-- vngcloud/services/loadbalancer/global/glb.go | 88 ++++- .../global/glb_listener_response.go | 10 +- .../loadbalancer/global/glb_request.go | 344 +++++------------- .../loadbalancer/global/glb_response.go | 177 +++++---- .../services/loadbalancer/global/irequest.go | 114 +++--- vngcloud/services/loadbalancer/global/url.go | 31 +- .../services/loadbalancer/iloadbalancer.go | 8 +- 8 files changed, 415 insertions(+), 463 deletions(-) diff --git a/test/lb_global_test.go b/test/lb_global_test.go index 8313935..1072319 100644 --- a/test/lb_global_test.go +++ b/test/lb_global_test.go @@ -6,31 +6,6 @@ import ( "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/global" ) -func TestListGlobalLoadBalancerSuccess(t *ltesting.T) { - vngcloud := validSdkConfig() - opt := global.NewListGlobalLoadBalancersRequest(0, 10) - lbs, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().ListGlobalLoadBalancers(opt) - if sdkerr != nil { - t.Fatalf("Expect nil but got %+v", sdkerr) - } - - if lbs == nil { - t.Fatalf("Expect not nil but got nil") - } - - t.Logf("Result: %+v", lbs) - for _, lb := range lbs.Items { - t.Logf("LB: %+v", lb) - for _, vip := range lb.Vips { - t.Logf(" - VIP: %+v", vip) - } - for _, domain := range lb.Domains { - t.Logf(" - Domain: %+v", domain) - } - } - t.Log("PASS") -} - func TestListGlobalPoolsSuccess(t *ltesting.T) { vngcloud := validSdkConfig() opt := global.NewListGlobalPoolsRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933") @@ -276,3 +251,84 @@ func TestDeleteGlobalListenerSuccess(t *ltesting.T) { t.Log("PASS") } + +// -------------------------------------------------- + +func TestListGlobalLoadBalancerSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewListGlobalLoadBalancersRequest(0, 10) + lbs, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().ListGlobalLoadBalancers(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if lbs == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Logf("Result: %+v", lbs) + for _, lb := range lbs.Items { + t.Logf("LB: %+v", lb) + for _, vip := range lb.Vips { + t.Logf(" - VIP: %+v", vip) + } + for _, domain := range lb.Domains { + t.Logf(" - Domain: %+v", domain) + } + } + t.Log("PASS") +} + +func TestCreateGlobalLoadBalancerSuccess(t *ltesting.T) { + pool := global.NewCreateGlobalPoolRequest("annd2-test-pool-5", global.GlobalPoolProtocolTCP). + WithLoadBalancerId("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933"). + WithHealthMonitor( + global.NewGlobalHealthMonitor(global.GlobalPoolHealthCheckProtocolHTTPs). + WithHealthCheckMethod("GET"). + WithPath("/sfdsaf"). + WithHttpVersion("1.1"). + WithSuccessCode("200"). + WithDomainName("example.com"), + ). + WithMembers( + global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100). + WithMembers( + global.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false), + ), + ) + listener := global.NewCreateGlobalListenerRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "annd2-test"). + WithDescription("hihi"). + WithPort(85). + WithTimeoutClient(50). + WithTimeoutConnection(5). + WithTimeoutMember(50). + WithGlobalPoolId("gpool-7000d491-b441-40a0-af01-8039baa8e346") + vngcloud := validSdkConfig() + opt := global.NewCreateGlobalLoadBalancerRequest("annd2-testtt"). + WithDescription("hihi"). + WithGlobalListener(listener). + WithGlobalPool(pool) + + lb, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().CreateGlobalLoadBalancer(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if lb == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Logf("Result: %+v", lb) + t.Log("PASS") +} + +func TestDeleteGlobalLoadBalancerSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewDeleteGlobalLoadBalancerRequest("glb-3fd57a7e-7bb3-4152-a329-adba6d779c4a") + sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().DeleteGlobalLoadBalancer(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + t.Log("PASS") +} diff --git a/vngcloud/services/loadbalancer/global/glb.go b/vngcloud/services/loadbalancer/global/glb.go index ec80a39..21c233d 100644 --- a/vngcloud/services/loadbalancer/global/glb.go +++ b/vngcloud/services/loadbalancer/global/glb.go @@ -8,26 +8,6 @@ import ( lserr "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/sdk_error" ) -func (s *LoadBalancerServiceGlobal) ListGlobalLoadBalancers(popts IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) { - url := listGlobalLoadBalancersUrl(s.VLBClient, popts) - resp := new(ListGlobalLoadBalancersResponse) - 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). - AppendCategories(lserr.ErrCatProductVlb) - } - - return resp.ToEntityListGlobalLoadBalancers(), nil -} - -// -------------------------------------------------- - func (s *LoadBalancerServiceGlobal) ListGlobalPools(popts IListGlobalPoolsRequest) (*lsentity.ListGlobalPools, lserr.IError) { url := listGlobalPoolsUrl(s.VLBClient, popts) resp := new(ListGlobalPoolsResponse) @@ -262,3 +242,71 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalListener(popts IDeleteGlobalList return nil } + +// -------------------------------------------------- + +func (s *LoadBalancerServiceGlobal) ListGlobalLoadBalancers(popts IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) { + url := listGlobalLoadBalancersUrl(s.VLBClient, popts) + resp := new(ListGlobalLoadBalancersResponse) + 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). + AppendCategories(lserr.ErrCatProductVlb) + } + + return resp.ToEntityListGlobalLoadBalancers(), nil +} + +// -------------------------------------------------- + +func (s *LoadBalancerServiceGlobal) CreateGlobalLoadBalancer(popts ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) { + url := createGlobalLoadBalancerUrl(s.VLBClient, popts) + resp := new(CreateGlobalLoadBalancerResponse) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(200). + WithJsonBody(popts.ToRequestBody()). + WithJsonResponse(resp). + WithJsonError(errResp) + + if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { + return nil, lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorLoadBalancerNotFound(errResp), + lserr.WithErrorLoadBalancerNotFound2(errResp), + lserr.WithErrorLoadBalancerNotReady(errResp), + // lserr.WithErrorLoadBalancerDuplicateName(errResp) + ). + WithParameters(popts.ToMap()). + AppendCategories(lserr.ErrCatProductVlb) + } + + return resp.ToEntityGlobalLoadBalancer(), nil +} + +// -------------------------------------------------- + +func (s *LoadBalancerServiceGlobal) DeleteGlobalLoadBalancer(popts IDeleteGlobalLoadBalancerRequest) lserr.IError { + url := deleteGlobalLoadBalancerUrl(s.VLBClient, popts) + errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + req := lsclient.NewRequest(). + WithHeader("User-Agent", popts.ParseUserAgent()). + WithOkCodes(202). + WithJsonError(errResp) + + if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { + return lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorLoadBalancerNotFound(errResp), + lserr.WithErrorLoadBalancerNotFound2(errResp), + lserr.WithErrorLoadBalancerNotReady(errResp)). + AppendCategories(lserr.ErrCatProductVlb) + } + + return nil +} diff --git a/vngcloud/services/loadbalancer/global/glb_listener_response.go b/vngcloud/services/loadbalancer/global/glb_listener_response.go index 9af1351..863ba14 100644 --- a/vngcloud/services/loadbalancer/global/glb_listener_response.go +++ b/vngcloud/services/loadbalancer/global/glb_listener_response.go @@ -2,7 +2,7 @@ package global import lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" -type GlobalListenersResponse struct { +type GlobalListenerResponse struct { CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` DeletedAt *string `json:"deletedAt"` @@ -21,7 +21,7 @@ type GlobalListenersResponse struct { Status string `json:"status"` } -func (s *GlobalListenersResponse) ToEntityGlobalListener() *lsentity.GlobalListener { +func (s *GlobalListenerResponse) ToEntityGlobalListener() *lsentity.GlobalListener { return &lsentity.GlobalListener{ CreatedAt: s.CreatedAt, UpdatedAt: s.UpdatedAt, @@ -42,7 +42,7 @@ func (s *GlobalListenersResponse) ToEntityGlobalListener() *lsentity.GlobalListe } } -type ListGlobalListenersResponse []GlobalListenersResponse +type ListGlobalListenersResponse []GlobalListenerResponse func (s ListGlobalListenersResponse) ToEntityListGlobalListeners() *lsentity.ListGlobalListeners { listeners := &lsentity.ListGlobalListeners{} @@ -54,7 +54,7 @@ func (s ListGlobalListenersResponse) ToEntityListGlobalListeners() *lsentity.Lis // -------------------------------------------------- -type CreateGlobalListenerResponse GlobalListenersResponse +type CreateGlobalListenerResponse GlobalListenerResponse func (s *CreateGlobalListenerResponse) ToEntityGlobalListener() *lsentity.GlobalListener { return &lsentity.GlobalListener{ @@ -79,7 +79,7 @@ func (s *CreateGlobalListenerResponse) ToEntityGlobalListener() *lsentity.Global // -------------------------------------------------- -type UpdateGlobalListenerResponse GlobalListenersResponse +type UpdateGlobalListenerResponse GlobalListenerResponse func (s *UpdateGlobalListenerResponse) ToEntityGlobalListener() *lsentity.GlobalListener { return &lsentity.GlobalListener{ diff --git a/vngcloud/services/loadbalancer/global/glb_request.go b/vngcloud/services/loadbalancer/global/glb_request.go index ac42bb2..d117bb9 100644 --- a/vngcloud/services/loadbalancer/global/glb_request.go +++ b/vngcloud/services/loadbalancer/global/glb_request.go @@ -7,6 +7,16 @@ import ( lstr "strings" ) +type ( + GlobalLoadBalancerType string +) + +const ( + GlobalLoadBalancerTypeLayer4 GlobalLoadBalancerType = "Layer 4" +) + +// -------------------------------------------------------------------------- + func NewListGlobalLoadBalancersRequest(offset, limit int) IListGlobalLoadBalancersRequest { opts := &ListGlobalLoadBalancersRequest{ Name: "", @@ -79,260 +89,88 @@ func (s *ListGlobalLoadBalancersRequest) GetDefaultQuery() string { } // -------------------------------------------------------------------------- -// -------------------------------------------------------------------------- -// -------------------------------------------------------------------------- + +var _ ICreateGlobalLoadBalancerRequest = &CreateGlobalLoadBalancerRequest{} + +type CreateGlobalLoadBalancerRequest struct { + Description string `json:"description"` + Name string `json:"name"` + Type GlobalLoadBalancerType `json:"type"` + GlobalListener ICreateGlobalListenerRequest `json:"globalListener"` + GlobalPool ICreateGlobalPoolRequest `json:"globalPool"` + + lscommon.UserAgent +} + +func (s *CreateGlobalLoadBalancerRequest) WithDescription(pdesc string) ICreateGlobalLoadBalancerRequest { + s.Description = pdesc + return s +} + +func (s *CreateGlobalLoadBalancerRequest) WithName(pname string) ICreateGlobalLoadBalancerRequest { + s.Name = pname + return s +} + +func (s *CreateGlobalLoadBalancerRequest) WithType(ptype GlobalLoadBalancerType) ICreateGlobalLoadBalancerRequest { + s.Type = ptype + return s +} + +func (s *CreateGlobalLoadBalancerRequest) WithGlobalListener(plistener ICreateGlobalListenerRequest) ICreateGlobalLoadBalancerRequest { + s.GlobalListener = plistener + return s +} + +func (s *CreateGlobalLoadBalancerRequest) WithGlobalPool(ppool ICreateGlobalPoolRequest) ICreateGlobalLoadBalancerRequest { + s.GlobalPool = ppool + return s +} + +func (s *CreateGlobalLoadBalancerRequest) ToRequestBody() interface{} { + return s +} + +func (s *CreateGlobalLoadBalancerRequest) ToMap() map[string]interface{} { + return map[string]interface{}{ + "description": s.Description, + "name": s.Name, + "type": s.Type, + "globalListener": s.GlobalListener, + "globalPool": s.GlobalPool, + } +} + +func NewCreateGlobalLoadBalancerRequest(name string) ICreateGlobalLoadBalancerRequest { + opts := &CreateGlobalLoadBalancerRequest{ + Description: "", + Name: name, + Type: GlobalLoadBalancerTypeLayer4, + GlobalListener: nil, + GlobalPool: nil, + } + return opts +} + // -------------------------------------------------------------------------- -type ( - GlobalLoadBalancerType string -) +var _ IDeleteGlobalLoadBalancerRequest = &DeleteGlobalLoadBalancerRequest{} -const ( - GlobalLoadBalancerTypeLayer4 GlobalLoadBalancerType = "Layer 4" -) +type DeleteGlobalLoadBalancerRequest struct { + lscommon.UserAgent + lscommon.LoadBalancerCommon +} + +func (s *DeleteGlobalLoadBalancerRequest) WithLoadBalancerId(plbId string) IDeleteGlobalLoadBalancerRequest { + s.LoadBalancerId = plbId + return s +} -// func NewCreateLoadBalancerRequest(pname, ppackageId, psubnetId string) ICreateLoadBalancerRequest { -// return &CreateLoadBalancerRequest{ -// Name: pname, -// PackageID: ppackageId, -// Scheme: InternetLoadBalancerScheme, -// SubnetID: psubnetId, -// Type: LoadBalancerTypeLayer4, -// } -// } - -// func NewResizeLoadBalancerRequest(plbId, packageID string) IResizeLoadBalancerRequest { -// return &ResizeLoadBalancerRequest{ -// LoadBalancerCommon: lscommon.LoadBalancerCommon{ -// LoadBalancerId: plbId, -// }, -// PackageID: packageID, -// } -// } - -// func NewListGlobalLoadBalancerPackagesRequest() IListGlobalLoadBalancerPackagesRequest { -// return new(ListGlobalLoadBalancerPackagesRequest) -// } - -// func NewGetGlobalLoadBalancerByIdRequest(plbId string) IGetGlobalLoadBalancerByIdRequest { -// opts := new(GetGlobalLoadBalancerByIdRequest) -// opts.LoadBalancerId = plbId -// return opts -// } - -// func (s *ListGlobalLoadBalancersRequest) WithName(pname string) IListGlobalLoadBalancersRequest { -// s.Name = pname -// return s -// } - -// func NewDeleteLoadBalancerByIdRequest(plbId string) IDeleteLoadBalancerByIdRequest { -// opts := new(DeleteLoadBalancerByIdRequest) -// opts.LoadBalancerId = plbId -// return opts -// } - -// type CreateLoadBalancerRequest struct { -// Name string `json:"name"` -// PackageID string `json:"packageId"` -// Scheme LoadBalancerScheme `json:"scheme"` -// AutoScalable bool `json:"autoScalable"` -// SubnetID string `json:"subnetId"` -// Type LoadBalancerType `json:"type"` -// Listener ICreateListenerRequest `json:"listener"` -// Pool ICreatePoolRequest `json:"pool"` -// Tags []lscommon.Tag `json:"tags,omitempty"` -// IsPoc bool `json:"isPoc"` - -// lscommon.UserAgent -// } - -// type ResizeLoadBalancerRequest struct { -// PackageID string `json:"packageId"` -// lscommon.UserAgent -// lscommon.LoadBalancerCommon -// } - -// type ListGlobalLoadBalancerPackagesRequest struct { -// lscommon.UserAgent -// } - -// type GetGlobalLoadBalancerByIdRequest struct { -// lscommon.UserAgent -// lscommon.LoadBalancerCommon -// } - -// type DeleteLoadBalancerByIdRequest struct { -// lscommon.UserAgent -// lscommon.LoadBalancerCommon -// } - -// type ResizeLoadBalancerByIdRequest struct { -// lscommon.UserAgent -// lscommon.LoadBalancerCommon - -// PackageId string `json:"packageId"` -// } - -// func (s *CreateLoadBalancerRequest) ToMap() map[string]interface{} { -// err := map[string]interface{}{ -// "name": s.Name, -// "packageId": s.PackageID, -// "scheme": s.Scheme, -// "autoScalable": s.AutoScalable, -// "subnetId": s.SubnetID, -// "type": s.Type, -// "tags": s.Tags, -// } - -// if s.Listener != nil { -// err["listener"] = s.Listener.ToMap() -// } - -// if s.Pool != nil { -// err["pool"] = s.Pool.ToMap() -// } - -// return err -// } - -// func (s *CreateLoadBalancerRequest) ToRequestBody() interface{} { -// if s.Pool != nil { -// s.Pool = s.Pool.ToRequestBody().(*CreatePoolRequest) -// } - -// if s.Listener != nil { -// s.Listener = s.Listener.ToRequestBody().(*CreateListenerRequest) -// } - -// return s -// } - -// func (s *CreateLoadBalancerRequest) AddUserAgent(pagent ...string) ICreateLoadBalancerRequest { -// s.UserAgent.AddUserAgent(pagent...) -// return s -// } -// func (s *CreateLoadBalancerRequest) WithListener(plistener ICreateListenerRequest) ICreateLoadBalancerRequest { -// s.Listener = plistener -// return s -// } - -// func (s *CreateLoadBalancerRequest) WithPool(ppool ICreatePoolRequest) ICreateLoadBalancerRequest { -// s.Pool = ppool -// return s -// } - -// func (s *CreateLoadBalancerRequest) WithTags(ptags ...string) ICreateLoadBalancerRequest { -// if s.Tags == nil { -// s.Tags = make([]lscommon.Tag, 0) -// } - -// if len(ptags)%2 != 0 { -// ptags = append(ptags, "none") -// } - -// for i := 0; i < len(ptags); i += 2 { -// s.Tags = append(s.Tags, lscommon.Tag{Key: ptags[i], Value: ptags[i+1]}) -// } - -// return s -// } - -// func (s *CreateLoadBalancerRequest) WithScheme(pscheme LoadBalancerScheme) ICreateLoadBalancerRequest { -// s.Scheme = pscheme -// return s -// } - -// func (s *CreateLoadBalancerRequest) WithAutoScalable(pautoScalable bool) ICreateLoadBalancerRequest { -// s.AutoScalable = pautoScalable -// return s -// } - -// func (s *CreateLoadBalancerRequest) WithPackageId(ppackageId string) ICreateLoadBalancerRequest { -// s.PackageID = ppackageId -// return s -// } - -// func (s *CreateLoadBalancerRequest) WithSubnetId(psubnetId string) ICreateLoadBalancerRequest { -// s.SubnetID = psubnetId -// return s -// } - -// func (s *CreateLoadBalancerRequest) WithType(ptype LoadBalancerType) ICreateLoadBalancerRequest { -// s.Type = ptype -// return s -// } - -// func (s *CreateLoadBalancerRequest) WithPoc(isPoc bool) ICreateLoadBalancerRequest { -// s.IsPoc = isPoc -// return s -// } - -// func (s *ResizeLoadBalancerRequest) ToRequestBody() interface{} { -// return s -// } - -// func (s *ResizeLoadBalancerRequest) AddUserAgent(pagent ...string) IResizeLoadBalancerRequest { -// s.UserAgent.AddUserAgent(pagent...) -// return s -// } - -// func (s *ResizeLoadBalancerRequest) WithPackageId(ppackageId string) IResizeLoadBalancerRequest { -// s.PackageID = ppackageId -// return s -// } - -// func (s *ListGlobalLoadBalancerPackagesRequest) AddUserAgent(pagent ...string) IListGlobalLoadBalancerPackagesRequest { -// s.UserAgent.AddUserAgent(pagent...) -// return s -// } - -// func (s *ListGlobalLoadBalancerPackagesRequest) ToMap() map[string]interface{} { -// return map[string]interface{}{} -// } - -// func (s *GetGlobalLoadBalancerByIdRequest) AddUserAgent(pagent ...string) IGetGlobalLoadBalancerByIdRequest { -// s.UserAgent.AddUserAgent(pagent...) -// return s -// } - -// if len(ptags)%2 != 0 { -// ptags = append(ptags, "") -// } - -// for i := 0; i < len(ptags); i += 2 { -// s.Tags = append(s.Tags, lscommon.Tag{Key: ptags[i], Value: ptags[i+1]}) -// } - -// return s -// } - -// var tuples []string -// for _, tag := range s.Tags { -// if tag.Key == "" { -// continue -// } - -// tuple := "tags=key:" + tag.Key -// if tag.Value != "" { -// tuple += ",value:" + tag.Value -// } -// tuples = append(tuples, tuple) -// } - -// if len(tuples) > 0 { -// return url.String() + "&" + lstr.Join(tuples, "&"), nil -// } - -// return url.String(), err -// } - -// func (s *ResizeLoadBalancerByIdRequest) ToMap() map[string]interface{} { -// return map[string]interface{}{ -// "packageId": s.PackageId, -// "loadBalancerId": s.LoadBalancerId, -// } -// } - -// func (s *ResizeLoadBalancerByIdRequest) ToRequestBody() interface{} { -// return s -// } +func NewDeleteGlobalLoadBalancerRequest(lbId string) IDeleteGlobalLoadBalancerRequest { + opts := &DeleteGlobalLoadBalancerRequest{ + LoadBalancerCommon: lscommon.LoadBalancerCommon{ + LoadBalancerId: lbId, + }, + } + return opts +} diff --git a/vngcloud/services/loadbalancer/global/glb_response.go b/vngcloud/services/loadbalancer/global/glb_response.go index 6e06f7d..3501c29 100644 --- a/vngcloud/services/loadbalancer/global/glb_response.go +++ b/vngcloud/services/loadbalancer/global/glb_response.go @@ -4,30 +4,23 @@ import ( lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" ) -type ListGlobalLoadBalancersResponse struct { - Items []GlobalLoadBalancer `json:"items"` - Limit int `json:"limit"` - Total int `json:"total"` - Offset int `json:"offset"` -} - type ( - GlobalLoadBalancer struct { - CreatedAt string `json:"createdAt"` - UpdatedAt string `json:"updatedAt"` - DeletedAt string `json:"deletedAt"` - ID string `json:"id"` - Name string `json:"name"` - Description string `json:"description"` - Status string `json:"status"` - Package string `json:"package"` - Type string `json:"type"` - UserId int `json:"userId"` - Vips []GlobalLoadBalancerVIP `json:"vips"` - Domains []GlobalLoadBalancerDomain `json:"domains"` + GlobalLoadBalancerResponse struct { + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Status string `json:"status"` + Package string `json:"package"` + Type string `json:"type"` + UserId int `json:"userId"` + Vips []GlobalLoadBalancerVIPResponse `json:"vips"` + Domains []GlobalLoadBalancerDomainResponse `json:"domains"` } - GlobalLoadBalancerVIP struct { + GlobalLoadBalancerVIPResponse struct { ID int `json:"id"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` @@ -38,7 +31,7 @@ type ( GlobalLoadBalancerID string `json:"globalLoadBalancerId"` } - GlobalLoadBalancerDomain struct { + GlobalLoadBalancerDomainResponse struct { CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` DeletedAt string `json:"deletedAt"` @@ -51,6 +44,60 @@ type ( } ) +func (s *GlobalLoadBalancerResponse) ToEntityGlobalLoadBalancer() *lsentity.GlobalLoadBalancer { + vips := make([]*lsentity.GlobalLoadBalancerVIP, 0) + for _, vip := range s.Vips { + vips = append(vips, &lsentity.GlobalLoadBalancerVIP{ + ID: vip.ID, + CreatedAt: vip.CreatedAt, + UpdatedAt: vip.UpdatedAt, + DeletedAt: vip.DeletedAt, + Address: vip.Address, + Status: vip.Status, + Region: vip.Region, + GlobalLoadBalancerID: vip.GlobalLoadBalancerID, + }) + } + + domains := make([]*lsentity.GlobalLoadBalancerDomain, 0) + for _, domain := range s.Domains { + domains = append(domains, &lsentity.GlobalLoadBalancerDomain{ + CreatedAt: domain.CreatedAt, + UpdatedAt: domain.UpdatedAt, + DeletedAt: domain.DeletedAt, + ID: domain.ID, + Hostname: domain.Hostname, + Status: domain.Status, + GlobalLoadBalancerID: domain.GlobalLoadBalancerID, + DNSHostedZoneID: domain.DNSHostedZoneID, + DNSServerID: domain.DNSServerID, + }) + } + + return &lsentity.GlobalLoadBalancer{ + CreatedAt: s.CreatedAt, + UpdatedAt: s.UpdatedAt, + DeletedAt: s.DeletedAt, + ID: s.ID, + Name: s.Name, + Description: s.Description, + Status: s.Status, + Package: s.Package, + Type: s.Type, + UserId: s.UserId, + Vips: vips, + Domains: domains, + } +} + +// -------------------------------------------------- +type ListGlobalLoadBalancersResponse struct { + Items []GlobalLoadBalancerResponse `json:"items"` + Limit int `json:"limit"` + Total int `json:"total"` + Offset int `json:"offset"` +} + func (s *ListGlobalLoadBalancersResponse) ToEntityListGlobalLoadBalancers() *lsentity.ListGlobalLoadBalancers { result := &lsentity.ListGlobalLoadBalancers{ Items: make([]*lsentity.GlobalLoadBalancer, 0), @@ -74,7 +121,7 @@ func (s *ListGlobalLoadBalancersResponse) ToEntityListGlobalLoadBalancers() *lse return result } -func (s *GlobalLoadBalancer) toEntityGlobalLoadBalancer() *lsentity.GlobalLoadBalancer { +func (s *GlobalLoadBalancerResponse) toEntityGlobalLoadBalancer() *lsentity.GlobalLoadBalancer { vips := make([]*lsentity.GlobalLoadBalancerVIP, 0) for _, vip := range s.Vips { vips = append(vips, &lsentity.GlobalLoadBalancerVIP{ @@ -120,76 +167,14 @@ func (s *GlobalLoadBalancer) toEntityGlobalLoadBalancer() *lsentity.GlobalLoadBa } } -// type CreateLoadBalancerResponse struct { -// UUID string `json:"uuid"` -// } - -// type ResizeLoadBalancerResponse struct { -// UUID string `json:"uuid"` -// } - -// func (s *ResizeLoadBalancerResponse) ToEntityLoadBalancer() *lsentity.LoadBalancer { -// return &lsentity.LoadBalancer{ -// UUID: s.UUID, -// } -// } - -// type ListLoadBalancerPackagesResponse struct { -// ListData []LoadBalancerPackageResponse `json:"listData"` -// } - -// type LoadBalancerPackageResponse struct { -// UUID string `json:"uuid"` -// Name string `json:"name"` -// Type string `json:"type"` -// ConnectionNumber int `json:"connectionNumber"` -// DataTransfer int `json:"dataTransfer"` -// Mode string `json:"mode"` -// LbType string `json:"lbType"` -// DisplayLbType string `json:"displayLbType"` -// } - -// type GetLoadBalancerByIdResponse struct { -// Data LoadBalancer `json:"data"` -// } - -// func (s *CreateLoadBalancerResponse) ToEntityLoadBalancer() *lsentity.LoadBalancer { -// return &lsentity.LoadBalancer{ -// UUID: s.UUID, -// } -// } - -// func (s *ListLoadBalancerPackagesResponse) ToEntityListLoadBalancerPackages() *lsentity.ListLoadBalancerPackages { -// if s == nil || s.ListData == nil || len(s.ListData) < 1 { -// return &lsentity.ListLoadBalancerPackages{ -// Items: make([]*lsentity.LoadBalancerPackage, 0), -// } -// } - -// result := &lsentity.ListLoadBalancerPackages{ -// Items: make([]*lsentity.LoadBalancerPackage, 0), -// } - -// for _, item := range s.ListData { -// result.Items = append(result.Items, &lsentity.LoadBalancerPackage{ -// UUID: item.UUID, -// Name: item.Name, -// Type: item.Type, -// ConnectionNumber: item.ConnectionNumber, -// DataTransfer: item.DataTransfer, -// Mode: item.Mode, -// LbType: item.LbType, -// DisplayLbType: item.DisplayLbType, -// }) -// } - -// return result -// } - -// func (s *GetLoadBalancerByIdResponse) ToEntityLoadBalancer() *lsentity.LoadBalancer { -// if s == nil { -// return nil -// } - -// return s.Data.toEntityLoadBalancer() -// } +// -------------------------------------------------- + +type CreateGlobalLoadBalancerResponse struct { + GlobalLoadBalancer GlobalLoadBalancerResponse `json:"globalLoadBalancer"` + GlobalListener GlobalListenerResponse `json:"globalListener"` + GlobalPool GlobalPoolResponse `json:"globalPool"` +} + +func (s *CreateGlobalLoadBalancerResponse) ToEntityGlobalLoadBalancer() *lsentity.GlobalLoadBalancer { + return s.GlobalLoadBalancer.ToEntityGlobalLoadBalancer() +} diff --git a/vngcloud/services/loadbalancer/global/irequest.go b/vngcloud/services/loadbalancer/global/irequest.go index b3725bd..e9e28aa 100644 --- a/vngcloud/services/loadbalancer/global/irequest.go +++ b/vngcloud/services/loadbalancer/global/irequest.go @@ -1,15 +1,5 @@ package global -type IListGlobalLoadBalancersRequest interface { - WithName(pname string) IListGlobalLoadBalancersRequest - WithTags(ptags ...string) IListGlobalLoadBalancersRequest - ToListQuery() (string, error) - ParseUserAgent() string - GetDefaultQuery() string -} - -// -------------------------------------------------------- - type IListGlobalPoolsRequest interface { WithLoadBalancerId(plbId string) IListGlobalPoolsRequest GetLoadBalancerId() string @@ -18,47 +8,6 @@ type IListGlobalPoolsRequest interface { // -------------------------------------------------------- -type ICreateGlobalLoadBalancerRequest interface { - WithDescription(pdesc string) ICreateGlobalLoadBalancerRequest - WithName(pname string) ICreateGlobalLoadBalancerRequest - WithType(ptype GlobalLoadBalancerType) ICreateGlobalLoadBalancerRequest - WithGlobalListener(plistener ICreateGlobalListenerRequest) ICreateGlobalLoadBalancerRequest - WithGlobalPool(ppool ICreateGlobalPoolRequest) ICreateGlobalLoadBalancerRequest - - // WithTags(ptags ...string) ICreateGlobalLoadBalancerRequest - // WithScheme(pscheme LoadBalancerScheme) ICreateGlobalLoadBalancerRequest - // WithAutoScalable(pautoScalable bool) ICreateGlobalLoadBalancerRequest - // WithPackageId(ppackageId string) ICreateGlobalLoadBalancerRequest - // WithSubnetId(psubnetId string) ICreateGlobalLoadBalancerRequest - // WithPoc(poc bool) ICreateGlobalLoadBalancerRequest - - AddUserAgent(pagent ...string) ICreateGlobalLoadBalancerRequest - ToRequestBody() interface{} - ToMap() map[string]interface{} - ParseUserAgent() string -} - -type ICreateGlobalListenerRequest interface { - WithAllowedCidrs(pcidrs ...string) ICreateGlobalListenerRequest - WithDescription(pdesc string) ICreateGlobalListenerRequest - WithHeaders(pheaders ...string) ICreateGlobalListenerRequest - WithName(pname string) ICreateGlobalListenerRequest - WithPort(pport int) ICreateGlobalListenerRequest - WithProtocol(pprotocol GlobalListenerProtocol) ICreateGlobalListenerRequest - WithTimeoutClient(ptoc int) ICreateGlobalListenerRequest - WithTimeoutConnection(ptoc int) ICreateGlobalListenerRequest - WithTimeoutMember(ptom int) ICreateGlobalListenerRequest - WithGlobalPoolId(ppoolId string) ICreateGlobalListenerRequest - - WithLoadBalancerId(plbid string) ICreateGlobalListenerRequest - GetLoadBalancerId() string - // AddCidrs(pcidrs ...string) ICreateGlobalListenerRequest - - ParseUserAgent() string - ToRequestBody() interface{} - ToMap() map[string]interface{} -} - type ICreateGlobalPoolRequest interface { WithAlgorithm(palgorithm GlobalPoolAlgorithm) ICreateGlobalPoolRequest WithDescription(pdesc string) ICreateGlobalPoolRequest @@ -192,6 +141,29 @@ type IListGlobalListenersRequest interface { // -------------------------------------------------------- +type ICreateGlobalListenerRequest interface { + WithAllowedCidrs(pcidrs ...string) ICreateGlobalListenerRequest + WithDescription(pdesc string) ICreateGlobalListenerRequest + WithHeaders(pheaders ...string) ICreateGlobalListenerRequest + WithName(pname string) ICreateGlobalListenerRequest + WithPort(pport int) ICreateGlobalListenerRequest + WithProtocol(pprotocol GlobalListenerProtocol) ICreateGlobalListenerRequest + WithTimeoutClient(ptoc int) ICreateGlobalListenerRequest + WithTimeoutConnection(ptoc int) ICreateGlobalListenerRequest + WithTimeoutMember(ptom int) ICreateGlobalListenerRequest + WithGlobalPoolId(ppoolId string) ICreateGlobalListenerRequest + + WithLoadBalancerId(plbid string) ICreateGlobalListenerRequest + GetLoadBalancerId() string + // AddCidrs(pcidrs ...string) ICreateGlobalListenerRequest + + ParseUserAgent() string + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +// -------------------------------------------------------- + type IUpdateGlobalListenerRequest interface { WithAllowedCidrs(pcidrs ...string) IUpdateGlobalListenerRequest WithTimeoutClient(ptoc int) IUpdateGlobalListenerRequest @@ -220,3 +192,43 @@ type IDeleteGlobalListenerRequest interface { ParseUserAgent() string } + +// -------------------------------------------------------- + +type IListGlobalLoadBalancersRequest interface { + WithName(pname string) IListGlobalLoadBalancersRequest + WithTags(ptags ...string) IListGlobalLoadBalancersRequest + ToListQuery() (string, error) + ParseUserAgent() string + GetDefaultQuery() string +} + +// -------------------------------------------------------- + +type ICreateGlobalLoadBalancerRequest interface { + WithDescription(pdesc string) ICreateGlobalLoadBalancerRequest + WithName(pname string) ICreateGlobalLoadBalancerRequest + WithType(ptype GlobalLoadBalancerType) ICreateGlobalLoadBalancerRequest + WithGlobalListener(plistener ICreateGlobalListenerRequest) ICreateGlobalLoadBalancerRequest + WithGlobalPool(ppool ICreateGlobalPoolRequest) ICreateGlobalLoadBalancerRequest + + // WithTags(ptags ...string) ICreateGlobalLoadBalancerRequest + // WithScheme(pscheme LoadBalancerScheme) ICreateGlobalLoadBalancerRequest + // WithAutoScalable(pautoScalable bool) ICreateGlobalLoadBalancerRequest + // WithPackageId(ppackageId string) ICreateGlobalLoadBalancerRequest + // WithSubnetId(psubnetId string) ICreateGlobalLoadBalancerRequest + // WithPoc(poc bool) ICreateGlobalLoadBalancerRequest + + ParseUserAgent() string + ToRequestBody() interface{} + ToMap() map[string]interface{} +} + +// -------------------------------------------------------- + +type IDeleteGlobalLoadBalancerRequest interface { + WithLoadBalancerId(plbId string) IDeleteGlobalLoadBalancerRequest + GetLoadBalancerId() string // to use in request url + + ParseUserAgent() string +} diff --git a/vngcloud/services/loadbalancer/global/url.go b/vngcloud/services/loadbalancer/global/url.go index 4040c2e..d17ebe6 100644 --- a/vngcloud/services/loadbalancer/global/url.go +++ b/vngcloud/services/loadbalancer/global/url.go @@ -2,15 +2,6 @@ package global import lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" -func listGlobalLoadBalancersUrl(psc lsclient.IServiceClient, popts IListGlobalLoadBalancersRequest) string { - query, err := popts.ToListQuery() - if err != nil { - query = popts.GetDefaultQuery() - } - - return psc.ServiceURL("global-load-balancers") + query -} - // ------------------------------------------------------------ func createGlobalPoolUrl(psc lsclient.IServiceClient, popts ICreateGlobalPoolRequest) string { @@ -100,3 +91,25 @@ func deleteGlobalListenerUrl(psc lsclient.IServiceClient, popts IDeleteGlobalLis popts.GetListenerId(), ) } + +// -------------------------------------------------------- + +func listGlobalLoadBalancersUrl(psc lsclient.IServiceClient, popts IListGlobalLoadBalancersRequest) string { + query, err := popts.ToListQuery() + if err != nil { + query = popts.GetDefaultQuery() + } + + return psc.ServiceURL("global-load-balancers") + query +} + +func createGlobalLoadBalancerUrl(psc lsclient.IServiceClient, popts ICreateGlobalLoadBalancerRequest) string { + return psc.ServiceURL("global-load-balancers") +} + +func deleteGlobalLoadBalancerUrl(psc lsclient.IServiceClient, popts IDeleteGlobalLoadBalancerRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + ) +} diff --git a/vngcloud/services/loadbalancer/iloadbalancer.go b/vngcloud/services/loadbalancer/iloadbalancer.go index 194c6d4..fcd5cc0 100644 --- a/vngcloud/services/loadbalancer/iloadbalancer.go +++ b/vngcloud/services/loadbalancer/iloadbalancer.go @@ -45,8 +45,6 @@ type ILoadBalancerServiceInternal interface { } type ILoadBalancerServiceGlobal interface { - ListGlobalLoadBalancers(popts global.IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) - ListGlobalPools(popts global.IListGlobalPoolsRequest) (*lsentity.ListGlobalPools, lserr.IError) CreateGlobalPool(popts global.ICreateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) UpdateGlobalPool(popts global.IUpdateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) @@ -61,14 +59,16 @@ type ILoadBalancerServiceGlobal interface { DeleteGlobalListener(popts global.IDeleteGlobalListenerRequest) lserr.IError // GetGlobalListenerById(popts global.IGetGlobalListenerByIdRequest) (*lsentity.GlobalListener, lserr.IError) + ListGlobalLoadBalancers(popts global.IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) + CreateGlobalLoadBalancer(popts global.ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) + DeleteGlobalLoadBalancer(popts global.IDeleteGlobalLoadBalancerRequest) lserr.IError + // GetGlobalLoadBalancerPoolById(popts global.IGetGlobalLoadBalancerPoolByIdRequest) (*lsentity.GlobalLoadBalancerPool, lserr.IError) // GetGlobalLoadBalancerPoolMemberById(popts global.IGetGlobalLoadBalancerPoolMemberByIdRequest) (*lsentity.GlobalLoadBalancerPoolMember, lserr.IError) // UpdateGlobalLoadBalancerPoolMember(popts global.IUpdateGlobalLoadBalancerPoolMemberRequest) lserr.IError // DeleteGlobalLoadBalancerPoolMemberById(popts global.IDeleteGlobalLoadBalancerPoolMemberByIdRequest) lserr.IError - // CreateGlobalLoadBalancer(popts global.ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) // UpdateGlobalLoadBalancer(popts global.IUpdateGlobalLoadBalancerRequest) lserr.IError // GetGlobalLoadBalancerById(popts global.IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) - // DeleteGlobalLoadBalancerById(popts global.IDeleteGlobalLoadBalancerByIdRequest) lserr.IError // ListGlobalLoadBalancerHealthMonitors(popts global.IListGlobalLoadBalancerHealthMonitorsRequest) (*lsentity.ListGlobalLoadBalancerHealthMonitors, lserr.IError) // GetGlobalLoadBalancerHealthMonitorById(popts global.IGetGlobalLoadBalancerHealthMonitorByIdRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) // CreateGlobalLoadBalancerHealthMonitor(popts global.ICreateGlobalLoadBalancerHealthMonitorRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) From bdb18ad1f4c7d96738bc71f2a60ca9a73cf6257a Mon Sep 17 00:00:00 2001 From: andrew Date: Thu, 26 Dec 2024 13:40:53 +0700 Subject: [PATCH 05/13] =?UTF-8?q?=F0=9F=8C=B1=20add:=20get=20glb=20by=20id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/lb_global_test.go | 22 ++++++++++++++++++ vngcloud/services/loadbalancer/global/glb.go | 20 ++++++++++++++++ .../loadbalancer/global/glb_request.go | 23 +++++++++++++++++++ .../loadbalancer/global/glb_response.go | 8 +++++++ .../services/loadbalancer/global/irequest.go | 9 ++++++++ vngcloud/services/loadbalancer/global/url.go | 7 ++++++ .../services/loadbalancer/iloadbalancer.go | 2 +- 7 files changed, 90 insertions(+), 1 deletion(-) diff --git a/test/lb_global_test.go b/test/lb_global_test.go index 1072319..a696fd2 100644 --- a/test/lb_global_test.go +++ b/test/lb_global_test.go @@ -332,3 +332,25 @@ func TestDeleteGlobalLoadBalancerSuccess(t *ltesting.T) { t.Log("PASS") } + +func TestGetGlobalLoadBalancerSuccess(t *ltesting.T) { + vngcloud := validSdkConfig() + opt := global.NewGetGlobalLoadBalancerByIdRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933") + lb, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().GetGlobalLoadBalancerById(opt) + if sdkerr != nil { + t.Fatalf("Expect nil but got %+v", sdkerr) + } + + if lb == nil { + t.Fatalf("Expect not nil but got nil") + } + + t.Logf("Result: %+v", lb) + for _, vip := range lb.Vips { + t.Logf(" - VIP: %+v", vip) + } + for _, domain := range lb.Domains { + t.Logf(" - Domain: %+v", domain) + } + t.Log("PASS") +} diff --git a/vngcloud/services/loadbalancer/global/glb.go b/vngcloud/services/loadbalancer/global/glb.go index 21c233d..eba50b7 100644 --- a/vngcloud/services/loadbalancer/global/glb.go +++ b/vngcloud/services/loadbalancer/global/glb.go @@ -310,3 +310,23 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalLoadBalancer(popts IDeleteGlobal return nil } + +// -------------------------------------------------- + +func (s *LoadBalancerServiceGlobal) GetGlobalLoadBalancerById(popts IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) { + url := getGlobalLoadBalancerByIdUrl(s.VLBClient, popts) + resp := new(GetGlobalLoadBalancerByIdResponse) + 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). + AppendCategories(lserr.ErrCatProductVlb) + } + + return resp.ToEntityGlobalLoadBalancer(), nil +} diff --git a/vngcloud/services/loadbalancer/global/glb_request.go b/vngcloud/services/loadbalancer/global/glb_request.go index d117bb9..673cf0d 100644 --- a/vngcloud/services/loadbalancer/global/glb_request.go +++ b/vngcloud/services/loadbalancer/global/glb_request.go @@ -174,3 +174,26 @@ func NewDeleteGlobalLoadBalancerRequest(lbId string) IDeleteGlobalLoadBalancerRe } return opts } + +// -------------------------------------------------------------------------- + +var _ IGetGlobalLoadBalancerByIdRequest = &GetGlobalLoadBalancerByIdRequest{} + +type GetGlobalLoadBalancerByIdRequest struct { + lscommon.UserAgent + lscommon.LoadBalancerCommon +} + +func (s *GetGlobalLoadBalancerByIdRequest) WithLoadBalancerId(plbId string) IGetGlobalLoadBalancerByIdRequest { + s.LoadBalancerId = plbId + return s +} + +func NewGetGlobalLoadBalancerByIdRequest(lbId string) IGetGlobalLoadBalancerByIdRequest { + opts := &GetGlobalLoadBalancerByIdRequest{ + LoadBalancerCommon: lscommon.LoadBalancerCommon{ + LoadBalancerId: lbId, + }, + } + return opts +} diff --git a/vngcloud/services/loadbalancer/global/glb_response.go b/vngcloud/services/loadbalancer/global/glb_response.go index 3501c29..f803f32 100644 --- a/vngcloud/services/loadbalancer/global/glb_response.go +++ b/vngcloud/services/loadbalancer/global/glb_response.go @@ -178,3 +178,11 @@ type CreateGlobalLoadBalancerResponse struct { func (s *CreateGlobalLoadBalancerResponse) ToEntityGlobalLoadBalancer() *lsentity.GlobalLoadBalancer { return s.GlobalLoadBalancer.ToEntityGlobalLoadBalancer() } + +// -------------------------------------------------- + +type GetGlobalLoadBalancerByIdResponse GlobalLoadBalancerResponse + +func (s *GetGlobalLoadBalancerByIdResponse) ToEntityGlobalLoadBalancer() *lsentity.GlobalLoadBalancer { + return (*GlobalLoadBalancerResponse)(s).ToEntityGlobalLoadBalancer() +} diff --git a/vngcloud/services/loadbalancer/global/irequest.go b/vngcloud/services/loadbalancer/global/irequest.go index e9e28aa..665f243 100644 --- a/vngcloud/services/loadbalancer/global/irequest.go +++ b/vngcloud/services/loadbalancer/global/irequest.go @@ -232,3 +232,12 @@ type IDeleteGlobalLoadBalancerRequest interface { ParseUserAgent() string } + +// -------------------------------------------------------- + +type IGetGlobalLoadBalancerByIdRequest interface { + WithLoadBalancerId(plbId string) IGetGlobalLoadBalancerByIdRequest + GetLoadBalancerId() string // to use in request url + + ParseUserAgent() string +} diff --git a/vngcloud/services/loadbalancer/global/url.go b/vngcloud/services/loadbalancer/global/url.go index d17ebe6..e9ac5a0 100644 --- a/vngcloud/services/loadbalancer/global/url.go +++ b/vngcloud/services/loadbalancer/global/url.go @@ -113,3 +113,10 @@ func deleteGlobalLoadBalancerUrl(psc lsclient.IServiceClient, popts IDeleteGloba popts.GetLoadBalancerId(), ) } + +func getGlobalLoadBalancerByIdUrl(psc lsclient.IServiceClient, popts IGetGlobalLoadBalancerByIdRequest) string { + return psc.ServiceURL( + "global-load-balancers", + popts.GetLoadBalancerId(), + ) +} diff --git a/vngcloud/services/loadbalancer/iloadbalancer.go b/vngcloud/services/loadbalancer/iloadbalancer.go index fcd5cc0..a1d91fd 100644 --- a/vngcloud/services/loadbalancer/iloadbalancer.go +++ b/vngcloud/services/loadbalancer/iloadbalancer.go @@ -62,13 +62,13 @@ type ILoadBalancerServiceGlobal interface { ListGlobalLoadBalancers(popts global.IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) CreateGlobalLoadBalancer(popts global.ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) DeleteGlobalLoadBalancer(popts global.IDeleteGlobalLoadBalancerRequest) lserr.IError + GetGlobalLoadBalancerById(popts global.IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) // GetGlobalLoadBalancerPoolById(popts global.IGetGlobalLoadBalancerPoolByIdRequest) (*lsentity.GlobalLoadBalancerPool, lserr.IError) // GetGlobalLoadBalancerPoolMemberById(popts global.IGetGlobalLoadBalancerPoolMemberByIdRequest) (*lsentity.GlobalLoadBalancerPoolMember, lserr.IError) // UpdateGlobalLoadBalancerPoolMember(popts global.IUpdateGlobalLoadBalancerPoolMemberRequest) lserr.IError // DeleteGlobalLoadBalancerPoolMemberById(popts global.IDeleteGlobalLoadBalancerPoolMemberByIdRequest) lserr.IError // UpdateGlobalLoadBalancer(popts global.IUpdateGlobalLoadBalancerRequest) lserr.IError - // GetGlobalLoadBalancerById(popts global.IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) // ListGlobalLoadBalancerHealthMonitors(popts global.IListGlobalLoadBalancerHealthMonitorsRequest) (*lsentity.ListGlobalLoadBalancerHealthMonitors, lserr.IError) // GetGlobalLoadBalancerHealthMonitorById(popts global.IGetGlobalLoadBalancerHealthMonitorByIdRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) // CreateGlobalLoadBalancerHealthMonitor(popts global.ICreateGlobalLoadBalancerHealthMonitorRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) From b2e9729afc9d063d94e5e78b6e3029c9a9668375 Mon Sep 17 00:00:00 2001 From: andrew Date: Thu, 26 Dec 2024 15:46:59 +0700 Subject: [PATCH 06/13] =?UTF-8?q?=F0=9F=8C=B1=20add:=20add=20health=20when?= =?UTF-8?q?=20get=20pool?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/lb_global_test.go | 1 + vngcloud/entity/loadbalancer_global.go | 25 ++++++++++--------- .../loadbalancer/global/glb_pool_response.go | 24 +++++++++++++++++- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/test/lb_global_test.go b/test/lb_global_test.go index a696fd2..fc44dbc 100644 --- a/test/lb_global_test.go +++ b/test/lb_global_test.go @@ -21,6 +21,7 @@ func TestListGlobalPoolsSuccess(t *ltesting.T) { t.Logf("Result: %+v", pools) for _, pool := range pools.Items { t.Logf("Pool: %+v", pool) + t.Logf("Health: %+v", pool.Health) } t.Log("PASS") } diff --git a/vngcloud/entity/loadbalancer_global.go b/vngcloud/entity/loadbalancer_global.go index 37e138a..b495659 100644 --- a/vngcloud/entity/loadbalancer_global.go +++ b/vngcloud/entity/loadbalancer_global.go @@ -46,18 +46,19 @@ type ListGlobalLoadBalancers struct { } type GlobalPool struct { - CreatedAt string `json:"createdAt"` - UpdatedAt string `json:"updatedAt"` - DeletedAt *string `json:"deletedAt"` - ID string `json:"id"` - Name string `json:"name"` - Description string `json:"description"` - GlobalLoadBalancerID string `json:"globalLoadBalancerId"` - Algorithm string `json:"algorithm"` - StickySession *string `json:"stickySession"` - TLSEnabled *string `json:"tlsEnabled"` - Protocol string `json:"protocol"` - Status string `json:"status"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` + DeletedAt *string `json:"deletedAt"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + GlobalLoadBalancerID string `json:"globalLoadBalancerId"` + Algorithm string `json:"algorithm"` + StickySession *string `json:"stickySession"` + TLSEnabled *string `json:"tlsEnabled"` + Protocol string `json:"protocol"` + Status string `json:"status"` + Health *GlobalPoolHealthMonitor `json:"health"` } type GlobalPoolHealthMonitor struct { diff --git a/vngcloud/services/loadbalancer/global/glb_pool_response.go b/vngcloud/services/loadbalancer/global/glb_pool_response.go index 834d8f8..a24057d 100644 --- a/vngcloud/services/loadbalancer/global/glb_pool_response.go +++ b/vngcloud/services/loadbalancer/global/glb_pool_response.go @@ -33,7 +33,7 @@ func (s *GlobalPoolResponse) ToEntityPool() *lsentity.GlobalPool { TLSEnabled: s.TLSEnabled, Protocol: s.Protocol, Status: s.Status, - // Health: s.Health.ToEntityHealthMonitor(), + Health: s.Health.ToEntityGlobalPoolHealthMonitor(), } } @@ -57,6 +57,28 @@ type HealthResponse struct { Status string `json:"status"` } +func (s *HealthResponse) ToEntityGlobalPoolHealthMonitor() *lsentity.GlobalPoolHealthMonitor { + return &lsentity.GlobalPoolHealthMonitor{ + CreatedAt: s.CreatedAt, + UpdatedAt: s.UpdatedAt, + DeletedAt: s.DeletedAt, + ID: s.ID, + GlobalPoolID: s.GlobalPoolID, + GlobalLoadBalancerID: s.GlobalLoadBalancerID, + Protocol: s.Protocol, + Path: s.Path, + Timeout: s.Timeout, + IntervalTime: s.IntervalTime, + HealthyThreshold: s.HealthyThreshold, + UnhealthyThreshold: s.UnhealthyThreshold, + DomainName: s.DomainName, + HTTPVersion: s.HttpVersion, + HTTPMethod: s.HttpMethod, + SuccessCode: s.SuccessCode, + Status: s.Status, + } +} + type GlobalPoolMemberResponse struct { CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` From fecbcc26ea5ff6ea13738cc341da84d134780149 Mon Sep 17 00:00:00 2001 From: andrew Date: Thu, 13 Feb 2025 16:57:19 +0700 Subject: [PATCH 07/13] =?UTF-8?q?=F0=9F=94=A8=20fix:=20add=20type=20for=20?= =?UTF-8?q?global=20pool=20member?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/lb_global_test.go | 25 ++++++++++--------- .../loadbalancer/global/glb_pool_requests.go | 18 +++++++++++-- .../services/loadbalancer/global/irequest.go | 1 + 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/test/lb_global_test.go b/test/lb_global_test.go index fc44dbc..5447b59 100644 --- a/test/lb_global_test.go +++ b/test/lb_global_test.go @@ -29,7 +29,7 @@ func TestListGlobalPoolsSuccess(t *ltesting.T) { func TestCreateGlobalPoolSuccess(t *ltesting.T) { vngcloud := validSdkConfig() member := global.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false) - poolMember := global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100) + poolMember := global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100, global.GlobalPoolMemberTypePublic) poolMember.WithMembers(member) opt := global.NewCreateGlobalPoolRequest("annd2-test-pool-4", global.GlobalPoolProtocolTCP). WithLoadBalancerId("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933"). @@ -56,7 +56,7 @@ func TestCreateGlobalPoolSuccess(t *ltesting.T) { func TestCreateGlobalPoolHTTPSSuccess(t *ltesting.T) { vngcloud := validSdkConfig() member := global.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false) - poolMember := global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100) + poolMember := global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100, global.GlobalPoolMemberTypePrivate) poolMember.WithMembers(member) opt := global.NewCreateGlobalPoolRequest("annd2-test-pool-5", global.GlobalPoolProtocolTCP). WithLoadBalancerId("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933"). @@ -155,24 +155,25 @@ func TestListGlobalPoolMembersSuccess(t *ltesting.T) { func TestPatchGlobalPoolMemberSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - createAction := global.NewPatchGlobalPoolCreateBulkActionRequest( - global.NewGlobalPoolMemberRequest("patch_name", "hcm", "net-86b7c84a-b3dd-4e6a-b66b-d28f36f3fc5f", 100).WithMembers( - global.NewGlobalMemberRequest("patch_name_4", "10.105.0.4", "sub-7ceeed28-2cad-4bcd-9a4a-a0041c6d6304", 80, 80, 1, false), - global.NewGlobalMemberRequest("patch_name_3", "10.105.0.3", "sub-a7fceae7-5ab5-4768-993f-8e6465f75050", 80, 80, 1, false), - ), - ) + // createAction := global.NewPatchGlobalPoolCreateBulkActionRequest( + // global.NewGlobalPoolMemberRequest("patch_name", "hcm", "net-86b7c84a-b3dd-4e6a-b66b-d28f36f3fc5f", 100).WithMembers( + // global.NewGlobalMemberRequest("patch_name_4", "10.105.0.4", "sub-7ceeed28-2cad-4bcd-9a4a-a0041c6d6304", 80, 80, 1, false), + // global.NewGlobalMemberRequest("patch_name_3", "10.105.0.3", "sub-a7fceae7-5ab5-4768-993f-8e6465f75050", 80, 80, 1, false), + // ), + // ) updateAction := global.NewPatchGlobalPoolUpdateBulkActionRequest("gpool-mem-1ea280e7-6739-4ede-9d6a-7d2e39036b2c", global.NewUpdateGlobalPoolMemberRequest(100).WithMembers( global.NewGlobalMemberRequest("patch_name_44", "10.105.0.44", "sub-7ceeed28-2cad-4bcd-9a4a-a0041c6d6304", 80, 80, 1, false), global.NewGlobalMemberRequest("patch_name_33", "10.105.0.33", "sub-a7fceae7-5ab5-4768-993f-8e6465f75050", 80, 80, 1, false), ), ) - deleteAction := global.NewPatchGlobalPoolDeleteBulkActionRequest("gpool-mem-e4a56d03-baf8-448b-98ab-404219fddede") + // deleteAction := global.NewPatchGlobalPoolDeleteBulkActionRequest("gpool-mem-e4a56d03-baf8-448b-98ab-404219fddede") opt := global.NewPatchGlobalPoolMemberRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "gpool-b31482ab-e84b-4768-a0dd-dacc4178a451"). WithBulkAction( - createAction, + // createAction, + // deleteAction, updateAction, - deleteAction) + ) sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().PatchGlobalPoolMember(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) @@ -292,7 +293,7 @@ func TestCreateGlobalLoadBalancerSuccess(t *ltesting.T) { WithDomainName("example.com"), ). WithMembers( - global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100). + global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100, global.GlobalPoolMemberTypePrivate). WithMembers( global.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false), ), diff --git a/vngcloud/services/loadbalancer/global/glb_pool_requests.go b/vngcloud/services/loadbalancer/global/glb_pool_requests.go index 2692df9..3aa4174 100644 --- a/vngcloud/services/loadbalancer/global/glb_pool_requests.go +++ b/vngcloud/services/loadbalancer/global/glb_pool_requests.go @@ -12,6 +12,8 @@ type ( GlobalPoolHealthCheckProtocol string GlobalPoolHealthCheckMethod string GlobalPoolHealthCheckHttpVersion string + + GlobalPoolMemberType string ) const ( @@ -42,6 +44,11 @@ const ( GlobalPoolHealthCheckHttpVersionHttp1Minor1 GlobalPoolHealthCheckHttpVersion = "1.1" ) +const ( + GlobalPoolMemberTypePublic GlobalPoolMemberType = "PUBLIC" + GlobalPoolMemberTypePrivate GlobalPoolMemberType = "PRIVATE" +) + // -------------------------------------------------------------------------- var _ IListGlobalPoolsRequest = &ListGlobalPoolsRequest{} @@ -273,7 +280,8 @@ type GlobalPoolMemberRequest struct { Description string `json:"description,omitempty"` Region string `json:"region"` TrafficDial int `json:"trafficDial"` - VPCID string `json:"vpcId"` + VPCID string `json:"vpcId"` // only need for private type + Type GlobalPoolMemberType `json:"type"` Members []IGlobalMemberRequest `json:"members"` lscommon.LoadBalancerCommon @@ -306,6 +314,11 @@ func (s *GlobalPoolMemberRequest) WithVPCID(pvpcId string) ICreateGlobalPoolMemb return s } +func (s *GlobalPoolMemberRequest) WithType(ptype GlobalPoolMemberType) ICreateGlobalPoolMemberRequest { + s.Type = ptype + return s +} + func (s *GlobalPoolMemberRequest) WithMembers(pmembers ...IGlobalMemberRequest) ICreateGlobalPoolMemberRequest { s.Members = append(s.Members, pmembers...) return s @@ -342,12 +355,13 @@ func (s *GlobalPoolMemberRequest) ToRequestBody() interface{} { return s } -func NewGlobalPoolMemberRequest(pname, pregion, pvpcId string, pdial int) ICreateGlobalPoolMemberRequest { +func NewGlobalPoolMemberRequest(pname, pregion, pvpcId string, pdial int, pType GlobalPoolMemberType) ICreateGlobalPoolMemberRequest { opts := &GlobalPoolMemberRequest{ Name: pname, Description: "", Region: pregion, TrafficDial: pdial, + Type: pType, VPCID: pvpcId, Members: make([]IGlobalMemberRequest, 0), } diff --git a/vngcloud/services/loadbalancer/global/irequest.go b/vngcloud/services/loadbalancer/global/irequest.go index 665f243..6c33c7b 100644 --- a/vngcloud/services/loadbalancer/global/irequest.go +++ b/vngcloud/services/loadbalancer/global/irequest.go @@ -48,6 +48,7 @@ type ICreateGlobalPoolMemberRequest interface { WithVPCID(pvpcID string) ICreateGlobalPoolMemberRequest WithTrafficDial(pdial int) ICreateGlobalPoolMemberRequest WithMembers(pmembers ...IGlobalMemberRequest) ICreateGlobalPoolMemberRequest + WithType(ptype GlobalPoolMemberType) ICreateGlobalPoolMemberRequest WithLoadBalancerId(plbId string) ICreateGlobalPoolMemberRequest WithPoolId(ppoolId string) ICreateGlobalPoolMemberRequest From cb5d230cceac19aed429d6f25082ac2424580f74 Mon Sep 17 00:00:00 2001 From: andrew Date: Thu, 13 Feb 2025 22:58:12 +0700 Subject: [PATCH 08/13] =?UTF-8?q?=E2=9A=A1=20update:=20handle=20error=20gl?= =?UTF-8?q?b?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vngcloud/sdk_error/error_codes.go | 6 ++ vngcloud/sdk_error/errors.go | 19 ++++- vngcloud/sdk_error/loadbalancer.go | 15 ++++ vngcloud/services/loadbalancer/global/glb.go | 88 +++++++------------- 4 files changed, 70 insertions(+), 58 deletions(-) diff --git a/vngcloud/sdk_error/error_codes.go b/vngcloud/sdk_error/error_codes.go index 1dcefa8..1fc01f4 100644 --- a/vngcloud/sdk_error/error_codes.go +++ b/vngcloud/sdk_error/error_codes.go @@ -155,3 +155,9 @@ const ( EcVNetworkLockOnProcess = ErrorCode("LockOnProcess") EcVNetworkEndpointTagNotFound = ErrorCode("EndpointTagNotFound") ) + +// Global Load Balancer + +const ( + EcGlobalLoadBalancerNotFound = ErrorCode("VngCloudGlobalLoadBalancerNotFound") +) diff --git a/vngcloud/sdk_error/errors.go b/vngcloud/sdk_error/errors.go index f3361fa..bcd5dcf 100644 --- a/vngcloud/sdk_error/errors.go +++ b/vngcloud/sdk_error/errors.go @@ -20,12 +20,19 @@ type ( ErrorCode string `json:"errorCode,omitempty"` Success bool `json:"success,omitempty"` } + + // {"code":"global_load_balancer_not_found","error":"Global load balancer is not found"} + GlobalLoadBalancerErrorResponse struct { + Code string `json:"code,omitempty"` + Error string `json:"error,omitempty"` + } ) const ( NormalErrorType = iota IamErrorType NetworkGatewayErrorType + GlobalLoadBalancerErrorType ) func NewErrorResponse(ptype int) IErrorRespone { @@ -34,6 +41,8 @@ func NewErrorResponse(ptype int) IErrorRespone { return new(IamErrorResponse) case ptype == NetworkGatewayErrorType: return new(NetworkGatewayErrorResponse) + case ptype == GlobalLoadBalancerErrorType: + return new(GlobalLoadBalancerErrorResponse) default: return new(NormalErrorResponse) } @@ -68,5 +77,13 @@ func (s *NetworkGatewayErrorResponse) GetMessage() string { } func (s *NetworkGatewayErrorResponse) GetError() error { - return lfmt.Errorf(s.ErrorCode) + return lfmt.Errorf("%s", s.ErrorCode) +} + +func (s *GlobalLoadBalancerErrorResponse) GetMessage() string { + return s.Error +} + +func (s *GlobalLoadBalancerErrorResponse) GetError() error { + return lfmt.Errorf("%s", s.Code) } diff --git a/vngcloud/sdk_error/loadbalancer.go b/vngcloud/sdk_error/loadbalancer.go index 3fd943d..311b264 100644 --- a/vngcloud/sdk_error/loadbalancer.go +++ b/vngcloud/sdk_error/loadbalancer.go @@ -281,3 +281,18 @@ func WithErrorLoadBalancerPackageNotFound(perrResp IErrorRespone) func(sdkError } } } + +func WithErrorGlobalLoadBalancerNotFound(perrResp IErrorRespone) func(sdkError IError) { + return func(sdkError IError) { + if perrResp == nil { + return + } + + errMsg := perrResp.GetMessage() + if lstr.Contains(lstr.ToLower(lstr.TrimSpace(errMsg)), lstr.ToLower("Global load balancer is not found")) { + sdkError.WithErrorCode(EcGlobalLoadBalancerNotFound). + WithMessage(errMsg). + WithErrors(perrResp.GetError()) + } + } +} diff --git a/vngcloud/services/loadbalancer/global/glb.go b/vngcloud/services/loadbalancer/global/glb.go index eba50b7..07e67c6 100644 --- a/vngcloud/services/loadbalancer/global/glb.go +++ b/vngcloud/services/loadbalancer/global/glb.go @@ -11,7 +11,7 @@ import ( func (s *LoadBalancerServiceGlobal) ListGlobalPools(popts IListGlobalPoolsRequest) (*lsentity.ListGlobalPools, lserr.IError) { url := listGlobalPoolsUrl(s.VLBClient, popts) resp := new(ListGlobalPoolsResponse) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(200). @@ -20,7 +20,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalPools(popts IListGlobalPoolsReques if _, sdkErr := s.VLBClient.Get(url, req); sdkErr != nil { return nil, lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp)). + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). WithKVparameters("loadBalancerId", popts.GetLoadBalancerId()). AppendCategories(lserr.ErrCatProductVlb) } @@ -33,7 +33,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalPools(popts IListGlobalPoolsReques func (s *LoadBalancerServiceGlobal) CreateGlobalPool(popts ICreateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) { url := createGlobalPoolUrl(s.VLBClient, popts) resp := new(CreateGlobalPoolResponse) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(202). @@ -44,10 +44,7 @@ func (s *LoadBalancerServiceGlobal) CreateGlobalPool(popts ICreateGlobalPoolRequ if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { fmt.Println("sdkErr: ", sdkErr) return nil, lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp), - lserr.WithErrorLoadBalancerNotReady(errResp), - lserr.WithErrorLoadBalancerDuplicatePoolName(errResp)). + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). WithParameters(popts.ToMap()). AppendCategories(lserr.ErrCatProductVlb) } @@ -60,7 +57,7 @@ func (s *LoadBalancerServiceGlobal) CreateGlobalPool(popts ICreateGlobalPoolRequ func (s *LoadBalancerServiceGlobal) UpdateGlobalPool(popts IUpdateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) { url := updateGlobalPoolUrl(s.VLBClient, popts) resp := new(UpdateGlobalPoolResponse) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(202). @@ -70,10 +67,7 @@ func (s *LoadBalancerServiceGlobal) UpdateGlobalPool(popts IUpdateGlobalPoolRequ if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { return nil, lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp), - lserr.WithErrorLoadBalancerNotReady(errResp), - lserr.WithErrorLoadBalancerDuplicatePoolName(errResp)). + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). WithParameters(popts.ToMap()). AppendCategories(lserr.ErrCatProductVlb) } @@ -85,7 +79,7 @@ func (s *LoadBalancerServiceGlobal) UpdateGlobalPool(popts IUpdateGlobalPoolRequ func (s *LoadBalancerServiceGlobal) DeleteGlobalPool(popts IDeleteGlobalPoolRequest) lserr.IError { url := deleteGlobalPoolUrl(s.VLBClient, popts) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(202). @@ -93,9 +87,7 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalPool(popts IDeleteGlobalPoolRequ if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { return lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp), - lserr.WithErrorLoadBalancerNotReady(errResp)). + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). AppendCategories(lserr.ErrCatProductVlb) } @@ -107,7 +99,7 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalPool(popts IDeleteGlobalPoolRequ func (s *LoadBalancerServiceGlobal) ListGlobalPoolMembers(popts IListGlobalPoolMembersRequest) (*lsentity.ListGlobalPoolMembers, lserr.IError) { url := listGlobalPoolMembersUrl(s.VLBClient, popts) resp := new(ListGlobalPoolMembersResponse) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(200). @@ -116,8 +108,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalPoolMembers(popts IListGlobalPoolM if _, sdkErr := s.VLBClient.Get(url, req); sdkErr != nil { return nil, lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp)). + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). AppendCategories(lserr.ErrCatProductVlb) } @@ -128,7 +119,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalPoolMembers(popts IListGlobalPoolM func (s *LoadBalancerServiceGlobal) PatchGlobalPoolMember(popts IPatchGlobalPoolMemberRequest) lserr.IError { url := patchGlobalPoolMemberUrl(s.VLBClient, popts) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(202). @@ -137,8 +128,8 @@ func (s *LoadBalancerServiceGlobal) PatchGlobalPoolMember(popts IPatchGlobalPool if _, sdkErr := s.VLBClient.Patch(url, req); sdkErr != nil { return lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp)). + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). + WithParameters(popts.ToMap()). AppendCategories(lserr.ErrCatProductVlb) } @@ -150,7 +141,7 @@ func (s *LoadBalancerServiceGlobal) PatchGlobalPoolMember(popts IPatchGlobalPool func (s *LoadBalancerServiceGlobal) ListGlobalListeners(popts IListGlobalListenersRequest) (*lsentity.ListGlobalListeners, lserr.IError) { url := listGlobalListenersUrl(s.VLBClient, popts) resp := new(ListGlobalListenersResponse) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(200). @@ -159,8 +150,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalListeners(popts IListGlobalListene if _, sdkErr := s.VLBClient.Get(url, req); sdkErr != nil { return nil, lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp)). + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). AppendCategories(lserr.ErrCatProductVlb) } @@ -172,7 +162,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalListeners(popts IListGlobalListene func (s *LoadBalancerServiceGlobal) CreateGlobalListener(popts ICreateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) { url := createGlobalListenerUrl(s.VLBClient, popts) resp := new(CreateGlobalListenerResponse) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(202). @@ -182,13 +172,9 @@ func (s *LoadBalancerServiceGlobal) CreateGlobalListener(popts ICreateGlobalList if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { return nil, lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp), - lserr.WithErrorLoadBalancerNotReady(errResp), - // lserr.WithErrorLoadBalancerDuplicateListenerName(errResp)). - // WithParameters(popts.ToMap()). - // AppendCategories(lserr.ErrCatProductVlb - ) + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). + WithParameters(popts.ToMap()). + AppendCategories(lserr.ErrCatProductVlb) } return resp.ToEntityGlobalListener(), nil @@ -199,7 +185,7 @@ func (s *LoadBalancerServiceGlobal) CreateGlobalListener(popts ICreateGlobalList func (s *LoadBalancerServiceGlobal) UpdateGlobalListener(popts IUpdateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) { url := updateGlobalListenerUrl(s.VLBClient, popts) resp := new(UpdateGlobalListenerResponse) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(202). @@ -209,11 +195,7 @@ func (s *LoadBalancerServiceGlobal) UpdateGlobalListener(popts IUpdateGlobalList if _, sdkErr := s.VLBClient.Put(url, req); sdkErr != nil { return nil, lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp), - lserr.WithErrorLoadBalancerNotReady(errResp), - // lserr.WithErrorLoadBalancerDuplicateListenerName(errResp) - ). + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). WithParameters(popts.ToMap()). AppendCategories(lserr.ErrCatProductVlb) @@ -226,7 +208,7 @@ func (s *LoadBalancerServiceGlobal) UpdateGlobalListener(popts IUpdateGlobalList func (s *LoadBalancerServiceGlobal) DeleteGlobalListener(popts IDeleteGlobalListenerRequest) lserr.IError { url := deleteGlobalListenerUrl(s.VLBClient, popts) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(202). @@ -234,9 +216,7 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalListener(popts IDeleteGlobalList if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { return lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp), - lserr.WithErrorLoadBalancerNotReady(errResp)). + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). AppendCategories(lserr.ErrCatProductVlb) } @@ -248,7 +228,7 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalListener(popts IDeleteGlobalList func (s *LoadBalancerServiceGlobal) ListGlobalLoadBalancers(popts IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) { url := listGlobalLoadBalancersUrl(s.VLBClient, popts) resp := new(ListGlobalLoadBalancersResponse) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(200). @@ -268,7 +248,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalLoadBalancers(popts IListGlobalLoa func (s *LoadBalancerServiceGlobal) CreateGlobalLoadBalancer(popts ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) { url := createGlobalLoadBalancerUrl(s.VLBClient, popts) resp := new(CreateGlobalLoadBalancerResponse) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(200). @@ -277,12 +257,7 @@ func (s *LoadBalancerServiceGlobal) CreateGlobalLoadBalancer(popts ICreateGlobal WithJsonError(errResp) if _, sdkErr := s.VLBClient.Post(url, req); sdkErr != nil { - return nil, lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp), - lserr.WithErrorLoadBalancerNotReady(errResp), - // lserr.WithErrorLoadBalancerDuplicateName(errResp) - ). + return nil, lserr.SdkErrorHandler(sdkErr, errResp). WithParameters(popts.ToMap()). AppendCategories(lserr.ErrCatProductVlb) } @@ -294,7 +269,7 @@ func (s *LoadBalancerServiceGlobal) CreateGlobalLoadBalancer(popts ICreateGlobal func (s *LoadBalancerServiceGlobal) DeleteGlobalLoadBalancer(popts IDeleteGlobalLoadBalancerRequest) lserr.IError { url := deleteGlobalLoadBalancerUrl(s.VLBClient, popts) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(202). @@ -302,9 +277,7 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalLoadBalancer(popts IDeleteGlobal if _, sdkErr := s.VLBClient.Delete(url, req); sdkErr != nil { return lserr.SdkErrorHandler(sdkErr, errResp, - lserr.WithErrorLoadBalancerNotFound(errResp), - lserr.WithErrorLoadBalancerNotFound2(errResp), - lserr.WithErrorLoadBalancerNotReady(errResp)). + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). AppendCategories(lserr.ErrCatProductVlb) } @@ -316,7 +289,7 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalLoadBalancer(popts IDeleteGlobal func (s *LoadBalancerServiceGlobal) GetGlobalLoadBalancerById(popts IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) { url := getGlobalLoadBalancerByIdUrl(s.VLBClient, popts) resp := new(GetGlobalLoadBalancerByIdResponse) - errResp := lserr.NewErrorResponse(lserr.NormalErrorType) + errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). WithOkCodes(200). @@ -324,7 +297,8 @@ func (s *LoadBalancerServiceGlobal) GetGlobalLoadBalancerById(popts IGetGlobalLo WithJsonError(errResp) if _, sdkErr := s.VLBClient.Get(url, req); sdkErr != nil { - return nil, lserr.SdkErrorHandler(sdkErr, errResp). + return nil, lserr.SdkErrorHandler(sdkErr, errResp, + lserr.WithErrorGlobalLoadBalancerNotFound(errResp)). AppendCategories(lserr.ErrCatProductVlb) } From 54498483a2f0cca556e32e38c48c524f64bf8e76 Mon Sep 17 00:00:00 2001 From: andrew Date: Fri, 14 Feb 2025 16:35:38 +0700 Subject: [PATCH 09/13] =?UTF-8?q?=F0=9F=8C=B1=20add:=20debug=20log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vngcloud/client/http.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vngcloud/client/http.go b/vngcloud/client/http.go index c1bde96..f6433ba 100644 --- a/vngcloud/client/http.go +++ b/vngcloud/client/http.go @@ -2,6 +2,7 @@ package client import ( lctx "context" + "fmt" lhttp "net/http" lstr "strings" lsync "sync" @@ -100,6 +101,7 @@ func (s *httpClient) DoRequest(purl string, preq IRequest) (*lreq.Response, lser req := s.client.R().SetContext(s.context).SetHeaders(s.getDefaultHeaders()).SetHeaders(preq.GetMoreHeaders()) if opt := preq.GetRequestBody(); opt != nil { req.SetBodyJsonMarshal(opt) + fmt.Println("RRRRRRRRRRRR: ", string(req.Body)) } if opt := preq.GetJsonResponse(); opt != nil { @@ -125,6 +127,10 @@ func (s *httpClient) DoRequest(purl string, preq IRequest) (*lreq.Response, lser resp, err = req.Patch(purl) } + fmt.Println(">>>>>>>>>>: ", resp) + fmt.Println("err: ", err) + fmt.Println("--------------------------------------------------------------------") + if err != nil && resp == nil { return resp, lserr.ErrorHandler(err) } From 8ecb96ee656f17649470eb7f1af8f03d5e11948b Mon Sep 17 00:00:00 2001 From: andrew Date: Tue, 18 Feb 2025 13:30:09 +0700 Subject: [PATCH 10/13] =?UTF-8?q?=F0=9F=8C=B1=20add:=20glb,=20package,=20p?= =?UTF-8?q?aymentFlow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/lb_global_test.go | 2 +- vngcloud/services/loadbalancer/global/glb.go | 2 +- .../loadbalancer/global/glb_request.go | 30 ++++++++++++++----- .../services/loadbalancer/global/irequest.go | 2 ++ 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/test/lb_global_test.go b/test/lb_global_test.go index 5447b59..716b771 100644 --- a/test/lb_global_test.go +++ b/test/lb_global_test.go @@ -309,7 +309,7 @@ func TestCreateGlobalLoadBalancerSuccess(t *ltesting.T) { opt := global.NewCreateGlobalLoadBalancerRequest("annd2-testtt"). WithDescription("hihi"). WithGlobalListener(listener). - WithGlobalPool(pool) + WithGlobalPool(pool).WithPackage("pkg-b02e62ab-a282-4faf-8732-a172ef497a7b") lb, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().CreateGlobalLoadBalancer(opt) if sdkerr != nil { diff --git a/vngcloud/services/loadbalancer/global/glb.go b/vngcloud/services/loadbalancer/global/glb.go index 07e67c6..7461ddb 100644 --- a/vngcloud/services/loadbalancer/global/glb.go +++ b/vngcloud/services/loadbalancer/global/glb.go @@ -251,7 +251,7 @@ func (s *LoadBalancerServiceGlobal) CreateGlobalLoadBalancer(popts ICreateGlobal errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). WithHeader("User-Agent", popts.ParseUserAgent()). - WithOkCodes(200). + WithOkCodes(202). WithJsonBody(popts.ToRequestBody()). WithJsonResponse(resp). WithJsonError(errResp) diff --git a/vngcloud/services/loadbalancer/global/glb_request.go b/vngcloud/services/loadbalancer/global/glb_request.go index 673cf0d..0449e55 100644 --- a/vngcloud/services/loadbalancer/global/glb_request.go +++ b/vngcloud/services/loadbalancer/global/glb_request.go @@ -8,11 +8,13 @@ import ( ) type ( - GlobalLoadBalancerType string + GlobalLoadBalancerType string + GlobalLoadBalancerPaymentFlow string ) const ( - GlobalLoadBalancerTypeLayer4 GlobalLoadBalancerType = "Layer 4" + GlobalLoadBalancerTypeLayer4 GlobalLoadBalancerType = "Layer 4" + GlobalLoadBalancerPaymentFlowAutomated GlobalLoadBalancerPaymentFlow = "automated" ) // -------------------------------------------------------------------------- @@ -93,11 +95,13 @@ func (s *ListGlobalLoadBalancersRequest) GetDefaultQuery() string { var _ ICreateGlobalLoadBalancerRequest = &CreateGlobalLoadBalancerRequest{} type CreateGlobalLoadBalancerRequest struct { - Description string `json:"description"` - Name string `json:"name"` - Type GlobalLoadBalancerType `json:"type"` - GlobalListener ICreateGlobalListenerRequest `json:"globalListener"` - GlobalPool ICreateGlobalPoolRequest `json:"globalPool"` + Description string `json:"description"` + Name string `json:"name"` + Type GlobalLoadBalancerType `json:"type"` + Package string `json:"package"` + PaymentFlow GlobalLoadBalancerPaymentFlow `json:"paymentFlow"` + GlobalListener ICreateGlobalListenerRequest `json:"globalListener"` + GlobalPool ICreateGlobalPoolRequest `json:"globalPool"` lscommon.UserAgent } @@ -117,6 +121,16 @@ func (s *CreateGlobalLoadBalancerRequest) WithType(ptype GlobalLoadBalancerType) return s } +func (s *CreateGlobalLoadBalancerRequest) WithPackage(ppackageId string) ICreateGlobalLoadBalancerRequest { + s.Package = ppackageId + return s +} + +func (s *CreateGlobalLoadBalancerRequest) WithPaymentFlow(ppaymentFlow GlobalLoadBalancerPaymentFlow) ICreateGlobalLoadBalancerRequest { + s.PaymentFlow = ppaymentFlow + return s +} + func (s *CreateGlobalLoadBalancerRequest) WithGlobalListener(plistener ICreateGlobalListenerRequest) ICreateGlobalLoadBalancerRequest { s.GlobalListener = plistener return s @@ -146,6 +160,8 @@ func NewCreateGlobalLoadBalancerRequest(name string) ICreateGlobalLoadBalancerRe Description: "", Name: name, Type: GlobalLoadBalancerTypeLayer4, + Package: "", + PaymentFlow: GlobalLoadBalancerPaymentFlowAutomated, GlobalListener: nil, GlobalPool: nil, } diff --git a/vngcloud/services/loadbalancer/global/irequest.go b/vngcloud/services/loadbalancer/global/irequest.go index 6c33c7b..296890b 100644 --- a/vngcloud/services/loadbalancer/global/irequest.go +++ b/vngcloud/services/loadbalancer/global/irequest.go @@ -212,6 +212,8 @@ type ICreateGlobalLoadBalancerRequest interface { WithType(ptype GlobalLoadBalancerType) ICreateGlobalLoadBalancerRequest WithGlobalListener(plistener ICreateGlobalListenerRequest) ICreateGlobalLoadBalancerRequest WithGlobalPool(ppool ICreateGlobalPoolRequest) ICreateGlobalLoadBalancerRequest + WithPackage(ppackageId string) ICreateGlobalLoadBalancerRequest + WithPaymentFlow(ppaymentFlow GlobalLoadBalancerPaymentFlow) ICreateGlobalLoadBalancerRequest // WithTags(ptags ...string) ICreateGlobalLoadBalancerRequest // WithScheme(pscheme LoadBalancerScheme) ICreateGlobalLoadBalancerRequest From 433f12a6248f7a0f9dd1479f7a027715153238c7 Mon Sep 17 00:00:00 2001 From: andrew Date: Thu, 20 Feb 2025 11:16:04 +0700 Subject: [PATCH 11/13] =?UTF-8?q?=F0=9F=94=A8=20fix:=20vlbEndpoint=20and?= =?UTF-8?q?=20vlbGlobalEndpoint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/client_config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/client_config.go b/client/client_config.go index 3cdffcb..d25aa7e 100644 --- a/client/client_config.go +++ b/client/client_config.go @@ -133,6 +133,6 @@ func (s *sdkConfigure) WithVNetworkEndpoint(pvnetworkEndpoint string) ISdkConfig } func (s *sdkConfigure) WithVLBGlobalEndpoint(pvlbEndpoint string) ISdkConfigure { - s.vlbEndpoint = ljutils.NormalizeURL(pvlbEndpoint) + s.vlbGlobalEndpoint = ljutils.NormalizeURL(pvlbEndpoint) return s } From f1513a63fd1207f8b8f5088075f2486a2b569cd8 Mon Sep 17 00:00:00 2001 From: andrew Date: Thu, 20 Feb 2025 11:42:51 +0700 Subject: [PATCH 12/13] =?UTF-8?q?=F0=9F=94=A8=20fix:=20temporary=20add=20g?= =?UTF-8?q?lb=20to=20vlb=20gateway,=20should=20split=20to=20new=20gateway?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/client.go | 4 ++-- client/client_config.go | 5 +++++ vngcloud/gateway/gateway.go | 10 ++++++++-- vngcloud/gateway/igateway.go | 1 + 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/client/client.go b/client/client.go index 05f31dd..7e2e5e1 100644 --- a/client/client.go +++ b/client/client.go @@ -108,7 +108,7 @@ func (s *client) WithProjectId(pprojectId string) IClient { } if s.vlbGateway != nil { - s.vlbGateway = lsgateway.NewVLBGateway(s.vlbGateway.GetEndpoint(), s.vserverGateway.GetEndpoint(), s.projectId, s.httpClient) + s.vlbGateway = lsgateway.NewVLBGateway(s.vlbGateway.GetEndpoint(), s.vlbGateway.GetGlobalEndpoint(), s.vserverGateway.GetEndpoint(), s.projectId, s.httpClient) } if s.vnetworkGateway != nil { @@ -143,7 +143,7 @@ func (s *client) Configure(psdkCfg ISdkConfigure) IClient { } if s.vlbGateway == nil && psdkCfg.GetVLBEndpoint() != "" && psdkCfg.GetVServerEndpoint() != "" { - s.vlbGateway = lsgateway.NewVLBGateway(psdkCfg.GetVLBEndpoint(), psdkCfg.GetVServerEndpoint(), s.projectId, s.httpClient) + s.vlbGateway = lsgateway.NewVLBGateway(psdkCfg.GetVLBEndpoint(), psdkCfg.GetVLBGlobalEndpoint(), psdkCfg.GetVServerEndpoint(), s.projectId, s.httpClient) } if s.vnetworkGateway == nil && psdkCfg.GetVNetworkEndpoint() != "" { diff --git a/client/client_config.go b/client/client_config.go index d25aa7e..f29dae4 100644 --- a/client/client_config.go +++ b/client/client_config.go @@ -12,6 +12,7 @@ type ( GetIamEndpoint() string GetVServerEndpoint() string GetVLBEndpoint() string + GetVLBGlobalEndpoint() string GetVNetworkEndpoint() string GetUserAgent() string WithUserId(puserId string) ISdkConfigure @@ -74,6 +75,10 @@ func (s *sdkConfigure) GetVLBEndpoint() string { return s.vlbEndpoint } +func (s *sdkConfigure) GetVLBGlobalEndpoint() string { + return s.vlbGlobalEndpoint +} + func (s *sdkConfigure) GetVNetworkEndpoint() string { return s.vnetworkEndpoint } diff --git a/vngcloud/gateway/gateway.go b/vngcloud/gateway/gateway.go index 507bdaf..56345e4 100644 --- a/vngcloud/gateway/gateway.go +++ b/vngcloud/gateway/gateway.go @@ -16,6 +16,7 @@ type vserverGateway struct { type vlbGateway struct { endpoint string // Hold the endpoint of the vLB service + globalEndpoint string // Hold the endpoint of the global vLB service vlbGatewayInternal IVLBGatewayInternal vlbGatewayV2 IVLBGatewayV2 globalLBGateway IVLBGatewayGlobal @@ -56,7 +57,7 @@ func NewVServerGateway(pendpoint, pprojectId string, phc lsclient.IHttpClient) I } } -func NewVLBGateway(plbEndpoint, pserverEndpoint, pprojectId string, phc lsclient.IHttpClient) IVLBGateway { +func NewVLBGateway(plbEndpoint, pglbEndpoint, pserverEndpoint, pprojectId string, phc lsclient.IHttpClient) IVLBGateway { vlbSvcV2 := lsclient.NewServiceClient(). WithEndpoint(plbEndpoint + "v2"). WithClient(phc). @@ -68,7 +69,7 @@ func NewVLBGateway(plbEndpoint, pserverEndpoint, pprojectId string, phc lsclient WithProjectId(pprojectId) vlbSvcGlobal := lsclient.NewServiceClient(). - WithEndpoint(plbEndpoint + "v1"). + WithEndpoint(pglbEndpoint + "v1"). WithClient(phc). WithProjectId(pprojectId) @@ -79,6 +80,7 @@ func NewVLBGateway(plbEndpoint, pserverEndpoint, pprojectId string, phc lsclient return &vlbGateway{ endpoint: plbEndpoint, + globalEndpoint: pglbEndpoint, vlbGatewayV2: NewVLBGatewayV2(vlbSvcV2, vserverSvcV2), vlbGatewayInternal: NewVLBGatewayInternal(vlbSvcIn), globalLBGateway: NewVLBGatewayGlobal(vlbSvcGlobal), @@ -139,6 +141,10 @@ func (s *vlbGateway) GetEndpoint() string { return s.endpoint } +func (s *vlbGateway) GetGlobalEndpoint() string { + return s.globalEndpoint +} + func (s *vnetworkGateway) V1() IVNetworkGatewayV1 { return s.vnetworkGatewayV1 } diff --git a/vngcloud/gateway/igateway.go b/vngcloud/gateway/igateway.go index fdc1089..a6219dc 100644 --- a/vngcloud/gateway/igateway.go +++ b/vngcloud/gateway/igateway.go @@ -68,6 +68,7 @@ type IVLBGateway interface { V2() IVLBGatewayV2 Global() IVLBGatewayGlobal GetEndpoint() string + GetGlobalEndpoint() string } type IVBackUpGateway interface{} From 1add148d6e9b737bbe92946cc69440823e72ff78 Mon Sep 17 00:00:00 2001 From: andrew Date: Tue, 4 Mar 2025 15:14:14 +0700 Subject: [PATCH 13/13] =?UTF-8?q?=F0=9F=94=A8=20fix:=20create=20new=20gate?= =?UTF-8?q?way=20for=20glb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + client/client.go | 13 +- client/client_config.go | 34 ++--- client/iclient.go | 1 + test/identity_test.go | 8 +- test/lb_global_test.go | 117 +++++++++--------- vngcloud/gateway/gateway.go | 66 +++++++--- vngcloud/gateway/igateway.go | 15 ++- vngcloud/gateway/vlb_gateway.go | 14 --- vngcloud/services/glb/iloadbalancer.go | 28 +++++ vngcloud/services/glb/loadbalancer.go | 12 ++ .../{loadbalancer/global => glb/v1}/base.go | 6 +- .../{loadbalancer/global => glb/v1}/glb.go | 30 ++--- .../global => glb/v1}/glb_listener_request.go | 2 +- .../v1}/glb_listener_response.go | 2 +- .../global => glb/v1}/glb_pool_requests.go | 2 +- .../global => glb/v1}/glb_pool_response.go | 2 +- .../global => glb/v1}/glb_request.go | 2 +- .../global => glb/v1}/glb_response.go | 2 +- .../global => glb/v1}/irequest.go | 2 +- .../{loadbalancer/global => glb/v1}/url.go | 2 +- .../services/loadbalancer/iloadbalancer.go | 46 ------- .../services/loadbalancer/loadbalancer.go | 7 -- 23 files changed, 216 insertions(+), 198 deletions(-) create mode 100644 vngcloud/services/glb/iloadbalancer.go create mode 100644 vngcloud/services/glb/loadbalancer.go rename vngcloud/services/{loadbalancer/global => glb/v1}/base.go (71%) rename vngcloud/services/{loadbalancer/global => glb/v1}/glb.go (83%) rename vngcloud/services/{loadbalancer/global => glb/v1}/glb_listener_request.go (99%) rename vngcloud/services/{loadbalancer/global => glb/v1}/glb_listener_response.go (99%) rename vngcloud/services/{loadbalancer/global => glb/v1}/glb_pool_requests.go (99%) rename vngcloud/services/{loadbalancer/global => glb/v1}/glb_pool_response.go (99%) rename vngcloud/services/{loadbalancer/global => glb/v1}/glb_request.go (99%) rename vngcloud/services/{loadbalancer/global => glb/v1}/glb_response.go (99%) rename vngcloud/services/{loadbalancer/global => glb/v1}/irequest.go (99%) rename vngcloud/services/{loadbalancer/global => glb/v1}/url.go (99%) diff --git a/.gitignore b/.gitignore index 46ca314..1e96816 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ TestResults.xml /tmp/ .idea /secret/ +test/env.yaml \ No newline at end of file diff --git a/client/client.go b/client/client.go index 7e2e5e1..8cfb7e4 100644 --- a/client/client.go +++ b/client/client.go @@ -28,6 +28,7 @@ type ( vlbGateway lsgateway.IVLBGateway vbackupGateway lsgateway.IVBackUpGateway vnetworkGateway lsgateway.IVNetworkGateway + glbGateway lsgateway.IGLBGateway } ) @@ -108,7 +109,7 @@ func (s *client) WithProjectId(pprojectId string) IClient { } if s.vlbGateway != nil { - s.vlbGateway = lsgateway.NewVLBGateway(s.vlbGateway.GetEndpoint(), s.vlbGateway.GetGlobalEndpoint(), s.vserverGateway.GetEndpoint(), s.projectId, s.httpClient) + s.vlbGateway = lsgateway.NewVLBGateway(s.vlbGateway.GetEndpoint(), s.vserverGateway.GetEndpoint(), s.projectId, s.httpClient) } if s.vnetworkGateway != nil { @@ -143,13 +144,17 @@ func (s *client) Configure(psdkCfg ISdkConfigure) IClient { } if s.vlbGateway == nil && psdkCfg.GetVLBEndpoint() != "" && psdkCfg.GetVServerEndpoint() != "" { - s.vlbGateway = lsgateway.NewVLBGateway(psdkCfg.GetVLBEndpoint(), psdkCfg.GetVLBGlobalEndpoint(), psdkCfg.GetVServerEndpoint(), s.projectId, s.httpClient) + s.vlbGateway = lsgateway.NewVLBGateway(psdkCfg.GetVLBEndpoint(), psdkCfg.GetVServerEndpoint(), s.projectId, s.httpClient) } if s.vnetworkGateway == nil && psdkCfg.GetVNetworkEndpoint() != "" { s.vnetworkGateway = lsgateway.NewVNetworkGateway(psdkCfg.GetVNetworkEndpoint(), psdkCfg.GetZoneId(), s.projectId, s.userId, s.httpClient) } + if s.glbGateway == nil && psdkCfg.GetGLBEndpoint() != "" { + s.glbGateway = lsgateway.NewGLBGateway(psdkCfg.GetGLBEndpoint(), s.httpClient) + } + s.httpClient.WithReauthFunc(lsclient.IamOauth2, s.usingIamOauth2AsAuthOption(psdkCfg)) s.userAgent = psdkCfg.GetUserAgent() @@ -176,6 +181,10 @@ func (s *client) VNetworkGateway() lsgateway.IVNetworkGateway { return s.vnetworkGateway } +func (s *client) GLBGateway() lsgateway.IGLBGateway { + return s.glbGateway +} + func (s *client) usingIamOauth2AsAuthOption(pauthConfig ISdkConfigure) func() (lsclient.ISdkAuthentication, lserr.IError) { authFunc := func() (lsclient.ISdkAuthentication, lserr.IError) { token, err := s.iamGateway.V2().IdentityService().GetAccessToken( diff --git a/client/client_config.go b/client/client_config.go index f29dae4..0a8058e 100644 --- a/client/client_config.go +++ b/client/client_config.go @@ -12,7 +12,7 @@ type ( GetIamEndpoint() string GetVServerEndpoint() string GetVLBEndpoint() string - GetVLBGlobalEndpoint() string + GetGLBEndpoint() string GetVNetworkEndpoint() string GetUserAgent() string WithUserId(puserId string) ISdkConfigure @@ -25,22 +25,22 @@ type ( WithVServerEndpoint(pvserverEndpoint string) ISdkConfigure WithVLBEndpoint(pvlbEndpoint string) ISdkConfigure WithVNetworkEndpoint(pvnetworkEndpoint string) ISdkConfigure - WithVLBGlobalEndpoint(pvlbEndpoint string) ISdkConfigure + WithGLBEndpoint(pvlbEndpoint string) ISdkConfigure } ) type sdkConfigure struct { - clientId string - clientSecret string - projectId string - zoneId string - userId string - iamEndpoint string - vserverEndpoint string - vlbEndpoint string - vlbGlobalEndpoint string - vnetworkEndpoint string - userAgent string + clientId string + clientSecret string + projectId string + zoneId string + userId string + iamEndpoint string + vserverEndpoint string + vlbEndpoint string + glbEndpoint string + vnetworkEndpoint string + userAgent string } func (s *sdkConfigure) GetClientId() string { @@ -75,8 +75,8 @@ func (s *sdkConfigure) GetVLBEndpoint() string { return s.vlbEndpoint } -func (s *sdkConfigure) GetVLBGlobalEndpoint() string { - return s.vlbGlobalEndpoint +func (s *sdkConfigure) GetGLBEndpoint() string { + return s.glbEndpoint } func (s *sdkConfigure) GetVNetworkEndpoint() string { @@ -137,7 +137,7 @@ func (s *sdkConfigure) WithVNetworkEndpoint(pvnetworkEndpoint string) ISdkConfig return s } -func (s *sdkConfigure) WithVLBGlobalEndpoint(pvlbEndpoint string) ISdkConfigure { - s.vlbGlobalEndpoint = ljutils.NormalizeURL(pvlbEndpoint) +func (s *sdkConfigure) WithGLBEndpoint(pvlbEndpoint string) ISdkConfigure { + s.glbEndpoint = ljutils.NormalizeURL(pvlbEndpoint) return s } diff --git a/client/iclient.go b/client/iclient.go index dd76449..bd34d9b 100644 --- a/client/iclient.go +++ b/client/iclient.go @@ -28,4 +28,5 @@ type IClient interface { VLBGateway() lsgateway.IVLBGateway VBackUpGateway() lsgateway.IVBackUpGateway VNetworkGateway() lsgateway.IVNetworkGateway + GLBGateway() lsgateway.IGLBGateway } diff --git a/test/identity_test.go b/test/identity_test.go index f6ac2e7..fb660c9 100644 --- a/test/identity_test.go +++ b/test/identity_test.go @@ -13,7 +13,7 @@ import ( ) func getEnv() (string, string) { - envFile, _ := lgodotenv.Read("/mnt/vayne/git-vngcloud/vngcloud-go-sdk/secret/env") + envFile, _ := lgodotenv.Read("./env.yaml") clientId := envFile["VNGCLOUD_CLIENT_ID"] clientSecret := envFile["VNGCLOUD_CLIENT_SECRET"] @@ -21,7 +21,7 @@ func getEnv() (string, string) { } func getEnvDevOps() (string, string) { - envFile, _ := lgodotenv.Read("/mnt/vayne/git-vngcloud/vngcloud-go-sdk/secret/env") + envFile, _ := lgodotenv.Read("./env.yaml") clientId := envFile["CLIENT_ID_DEVOPS"] clientSecret := envFile["CLIENT_SECRET_DEVOPS"] @@ -29,7 +29,7 @@ func getEnvDevOps() (string, string) { } func getValueOfEnv(pkey string) string { - envFile, _ := lgodotenv.Read("/mnt/vayne/git-vngcloud/vngcloud-go-sdk/secret/env") + envFile, _ := lgodotenv.Read("./env.yaml") value := envFile[pkey] return value } @@ -47,7 +47,7 @@ func validSdkConfig() lsclient.IClient { WithVLBEndpoint("https://hcm-3.api.vngcloud.vn/vserver/vlb-gateway"). WithVNetworkEndpoint("https://vnetwork-hcm03.vngcloud.vn/vnetwork-gateway/vnetwork"). WithVNetworkEndpoint("https://hcm-3.console.vngcloud.vn/vserver/vnetwork-gateway/vnetwork"). - WithVLBGlobalEndpoint("https://glb.console.vngcloud.vn/glb-controller/") + WithGLBEndpoint("https://glb.console.vngcloud.vn/glb-controller/") return lsclient.NewClient(lctx.TODO()).WithRetryCount(1).WithSleep(10).Configure(sdkConfig) } diff --git a/test/lb_global_test.go b/test/lb_global_test.go index 716b771..a6ec316 100644 --- a/test/lb_global_test.go +++ b/test/lb_global_test.go @@ -3,13 +3,13 @@ package test import ( ltesting "testing" - "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/global" + "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/glb/v1" ) func TestListGlobalPoolsSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - opt := global.NewListGlobalPoolsRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933") - pools, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().ListGlobalPools(opt) + opt := v1.NewListGlobalPoolsRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7") + pools, sdkerr := vngcloud.GLBGateway().V1().GLBService().ListGlobalPools(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } @@ -28,14 +28,14 @@ func TestListGlobalPoolsSuccess(t *ltesting.T) { func TestCreateGlobalPoolSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - member := global.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false) - poolMember := global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100, global.GlobalPoolMemberTypePublic) + member := v1.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false) + poolMember := v1.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100, v1.GlobalPoolMemberTypePublic) poolMember.WithMembers(member) - opt := global.NewCreateGlobalPoolRequest("annd2-test-pool-4", global.GlobalPoolProtocolTCP). - WithLoadBalancerId("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933"). - WithHealthMonitor(global.NewGlobalHealthMonitor(global.GlobalPoolHealthCheckProtocolTCP)). + opt := v1.NewCreateGlobalPoolRequest("annd2-test-pool-4", v1.GlobalPoolProtocolTCP). + WithLoadBalancerId("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7"). + WithHealthMonitor(v1.NewGlobalHealthMonitor(v1.GlobalPoolHealthCheckProtocolTCP)). WithMembers(poolMember) - pool, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().CreateGlobalPool(opt) + pool, sdkerr := vngcloud.GLBGateway().V1().GLBService().CreateGlobalPool(opt) if sdkerr != nil { t.Log(sdkerr.GetError()) @@ -55,13 +55,13 @@ func TestCreateGlobalPoolSuccess(t *ltesting.T) { func TestCreateGlobalPoolHTTPSSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - member := global.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false) - poolMember := global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100, global.GlobalPoolMemberTypePrivate) + member := v1.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false) + poolMember := v1.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100, v1.GlobalPoolMemberTypePrivate) poolMember.WithMembers(member) - opt := global.NewCreateGlobalPoolRequest("annd2-test-pool-5", global.GlobalPoolProtocolTCP). - WithLoadBalancerId("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933"). + opt := v1.NewCreateGlobalPoolRequest("annd2-test-pool-5", v1.GlobalPoolProtocolTCP). + WithLoadBalancerId("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7"). WithHealthMonitor( - global.NewGlobalHealthMonitor(global.GlobalPoolHealthCheckProtocolHTTPs). + v1.NewGlobalHealthMonitor(v1.GlobalPoolHealthCheckProtocolHTTPs). WithHealthCheckMethod("GET"). WithPath("/sfdsaf"). WithHttpVersion("1.1"). @@ -69,7 +69,7 @@ func TestCreateGlobalPoolHTTPSSuccess(t *ltesting.T) { WithDomainName("example.com"), ). WithMembers(poolMember) - pool, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().CreateGlobalPool(opt) + pool, sdkerr := vngcloud.GLBGateway().V1().GLBService().CreateGlobalPool(opt) if sdkerr != nil { t.Log(sdkerr.GetError()) @@ -89,15 +89,15 @@ func TestCreateGlobalPoolHTTPSSuccess(t *ltesting.T) { func TestUpdateGlobalPoolHTTPSSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - httpMonitor := global.NewGlobalHealthMonitor(global.GlobalPoolHealthCheckProtocolHTTPs). + httpMonitor := v1.NewGlobalHealthMonitor(v1.GlobalPoolHealthCheckProtocolHTTPs). WithDomainName("exampleee.com"). WithHealthCheckMethod("POST"). WithPath("/hghjgj"). WithHttpVersion("1.1") - opt := global.NewUpdateGlobalPoolRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "gpool-30c2a387-7912-4be7-8e3b-448ef16548ab"). + opt := v1.NewUpdateGlobalPoolRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7", "gpool-30c2a387-7912-4be7-8e3b-448ef16548ab"). WithHealthMonitor(httpMonitor) - pool, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().UpdateGlobalPool(opt) + pool, sdkerr := vngcloud.GLBGateway().V1().GLBService().UpdateGlobalPool(opt) if sdkerr != nil { t.Log(sdkerr.GetError()) @@ -117,8 +117,8 @@ func TestUpdateGlobalPoolHTTPSSuccess(t *ltesting.T) { func TestDeleteGlobalPoolSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - opt := global.NewDeleteGlobalPoolRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "gpool-1ffbe2f4-0bb5-4272-afe9-0dfa8a4365df") - sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().DeleteGlobalPool(opt) + opt := v1.NewDeleteGlobalPoolRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7", "gpool-1ffbe2f4-0bb5-4272-afe9-0dfa8a4365df") + sdkerr := vngcloud.GLBGateway().V1().GLBService().DeleteGlobalPool(opt) if sdkerr != nil { t.Log(sdkerr.GetError()) @@ -133,8 +133,8 @@ func TestDeleteGlobalPoolSuccess(t *ltesting.T) { func TestListGlobalPoolMembersSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - opt := global.NewListGlobalPoolMembersRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "gpool-0e2f3513-8a17-4fc9-b509-8d951fd25b03") - members, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().ListGlobalPoolMembers(opt) + opt := v1.NewListGlobalPoolMembersRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7", "gpool-0f4ba08b-e09d-4a1c-b953-523179cea006") + members, sdkerr := vngcloud.GLBGateway().V1().GLBService().ListGlobalPoolMembers(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } @@ -155,26 +155,27 @@ func TestListGlobalPoolMembersSuccess(t *ltesting.T) { func TestPatchGlobalPoolMemberSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - // createAction := global.NewPatchGlobalPoolCreateBulkActionRequest( - // global.NewGlobalPoolMemberRequest("patch_name", "hcm", "net-86b7c84a-b3dd-4e6a-b66b-d28f36f3fc5f", 100).WithMembers( - // global.NewGlobalMemberRequest("patch_name_4", "10.105.0.4", "sub-7ceeed28-2cad-4bcd-9a4a-a0041c6d6304", 80, 80, 1, false), - // global.NewGlobalMemberRequest("patch_name_3", "10.105.0.3", "sub-a7fceae7-5ab5-4768-993f-8e6465f75050", 80, 80, 1, false), - // ), - // ) - updateAction := global.NewPatchGlobalPoolUpdateBulkActionRequest("gpool-mem-1ea280e7-6739-4ede-9d6a-7d2e39036b2c", - global.NewUpdateGlobalPoolMemberRequest(100).WithMembers( - global.NewGlobalMemberRequest("patch_name_44", "10.105.0.44", "sub-7ceeed28-2cad-4bcd-9a4a-a0041c6d6304", 80, 80, 1, false), - global.NewGlobalMemberRequest("patch_name_33", "10.105.0.33", "sub-a7fceae7-5ab5-4768-993f-8e6465f75050", 80, 80, 1, false), + createAction := v1.NewPatchGlobalPoolCreateBulkActionRequest( + v1.NewGlobalPoolMemberRequest("patch_name", "hcm", "net-86b7c84a-b3dd-4e6a-b66b-d28f36f3fc5f", 100, v1.GlobalPoolMemberTypePublic). + WithMembers( + v1.NewGlobalMemberRequest("patch_name_4", "10.105.0.4", "sub-7ceeed28-2cad-4bcd-9a4a-a0041c6d6304", 80, 80, 1, false), + v1.NewGlobalMemberRequest("patch_name_3", "10.105.0.3", "sub-a7fceae7-5ab5-4768-993f-8e6465f75050", 80, 80, 1, false), + ), + ) + updateAction := v1.NewPatchGlobalPoolUpdateBulkActionRequest("gpool-mem-4568b7da-e82b-4417-b991-ac040967c0c1", + v1.NewUpdateGlobalPoolMemberRequest(100).WithMembers( + v1.NewGlobalMemberRequest("patch_name_44", "10.105.0.44", "sub-7ceeed28-2cad-4bcd-9a4a-a0041c6d6304", 80, 80, 1, false), + v1.NewGlobalMemberRequest("patch_name_33", "10.105.0.33", "sub-a7fceae7-5ab5-4768-993f-8e6465f75050", 80, 80, 1, false), ), ) - // deleteAction := global.NewPatchGlobalPoolDeleteBulkActionRequest("gpool-mem-e4a56d03-baf8-448b-98ab-404219fddede") - opt := global.NewPatchGlobalPoolMemberRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "gpool-b31482ab-e84b-4768-a0dd-dacc4178a451"). + // deleteAction := v1.NewPatchGlobalPoolDeleteBulkActionRequest("gpool-mem-e4a56d03-baf8-448b-98ab-404219fddede") + opt := v1.NewPatchGlobalPoolMemberRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7", "gpool-0f4ba08b-e09d-4a1c-b953-523179cea006"). WithBulkAction( - // createAction, + createAction, // deleteAction, updateAction, ) - sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().PatchGlobalPoolMember(opt) + sdkerr := vngcloud.GLBGateway().V1().GLBService().PatchGlobalPoolMember(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } @@ -184,8 +185,8 @@ func TestPatchGlobalPoolMemberSuccess(t *ltesting.T) { func TestListGlobalListenersSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - opt := global.NewListGlobalListenersRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933") - listeners, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().ListGlobalListeners(opt) + opt := v1.NewListGlobalListenersRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7") + listeners, sdkerr := vngcloud.GLBGateway().V1().GLBService().ListGlobalListeners(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } @@ -203,14 +204,14 @@ func TestListGlobalListenersSuccess(t *ltesting.T) { func TestCreateGlobalListenerSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - opt := global.NewCreateGlobalListenerRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "annd2-test"). + opt := v1.NewCreateGlobalListenerRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7", "annd2-test"). WithDescription("hihi"). WithPort(85). WithTimeoutClient(50). WithTimeoutConnection(5). WithTimeoutMember(50). WithGlobalPoolId("gpool-7000d491-b441-40a0-af01-8039baa8e346") - listener, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().CreateGlobalListener(opt) + listener, sdkerr := vngcloud.GLBGateway().V1().GLBService().CreateGlobalListener(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } @@ -225,12 +226,12 @@ func TestCreateGlobalListenerSuccess(t *ltesting.T) { func TestUpdateGlobalListenerSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - opt := global.NewUpdateGlobalListenerRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "glis-7ffc4f19-7218-4d38-8016-e3ad2401e3bd"). + opt := v1.NewUpdateGlobalListenerRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7", "glis-7ffc4f19-7218-4d38-8016-e3ad2401e3bd"). WithTimeoutClient(60). WithTimeoutConnection(6). WithTimeoutMember(60). WithGlobalPoolId("gpool-7000d491-b441-40a0-af01-8039baa8e346") - listener, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().UpdateGlobalListener(opt) + listener, sdkerr := vngcloud.GLBGateway().V1().GLBService().UpdateGlobalListener(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } @@ -245,8 +246,8 @@ func TestUpdateGlobalListenerSuccess(t *ltesting.T) { func TestDeleteGlobalListenerSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - opt := global.NewDeleteGlobalListenerRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "glis-7ffc4f19-7218-4d38-8016-e3ad2401e3bd") - sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().DeleteGlobalListener(opt) + opt := v1.NewDeleteGlobalListenerRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7", "glis-7ffc4f19-7218-4d38-8016-e3ad2401e3bd") + sdkerr := vngcloud.GLBGateway().V1().GLBService().DeleteGlobalListener(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } @@ -258,8 +259,8 @@ func TestDeleteGlobalListenerSuccess(t *ltesting.T) { func TestListGlobalLoadBalancerSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - opt := global.NewListGlobalLoadBalancersRequest(0, 10) - lbs, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().ListGlobalLoadBalancers(opt) + opt := v1.NewListGlobalLoadBalancersRequest(0, 10) + lbs, sdkerr := vngcloud.GLBGateway().V1().GLBService().ListGlobalLoadBalancers(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } @@ -282,10 +283,10 @@ func TestListGlobalLoadBalancerSuccess(t *ltesting.T) { } func TestCreateGlobalLoadBalancerSuccess(t *ltesting.T) { - pool := global.NewCreateGlobalPoolRequest("annd2-test-pool-5", global.GlobalPoolProtocolTCP). - WithLoadBalancerId("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933"). + pool := v1.NewCreateGlobalPoolRequest("annd2-test-pool-5", v1.GlobalPoolProtocolTCP). + WithLoadBalancerId("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7"). WithHealthMonitor( - global.NewGlobalHealthMonitor(global.GlobalPoolHealthCheckProtocolHTTPs). + v1.NewGlobalHealthMonitor(v1.GlobalPoolHealthCheckProtocolHTTPs). WithHealthCheckMethod("GET"). WithPath("/sfdsaf"). WithHttpVersion("1.1"). @@ -293,12 +294,12 @@ func TestCreateGlobalLoadBalancerSuccess(t *ltesting.T) { WithDomainName("example.com"), ). WithMembers( - global.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100, global.GlobalPoolMemberTypePrivate). + v1.NewGlobalPoolMemberRequest("p_name", "hcm", "net-80a4eb74-c7d9-46b4-9705-ffed0e2bc3c2", 100, v1.GlobalPoolMemberTypePrivate). WithMembers( - global.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false), + v1.NewGlobalMemberRequest("p_name", "10.105.0.4", "sub-8aa727dd-9857-472f-8766-ece41282d437", 80, 80, 1, false), ), ) - listener := global.NewCreateGlobalListenerRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933", "annd2-test"). + listener := v1.NewCreateGlobalListenerRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7", "annd2-test"). WithDescription("hihi"). WithPort(85). WithTimeoutClient(50). @@ -306,12 +307,12 @@ func TestCreateGlobalLoadBalancerSuccess(t *ltesting.T) { WithTimeoutMember(50). WithGlobalPoolId("gpool-7000d491-b441-40a0-af01-8039baa8e346") vngcloud := validSdkConfig() - opt := global.NewCreateGlobalLoadBalancerRequest("annd2-testtt"). + opt := v1.NewCreateGlobalLoadBalancerRequest("annd2-testtt"). WithDescription("hihi"). WithGlobalListener(listener). WithGlobalPool(pool).WithPackage("pkg-b02e62ab-a282-4faf-8732-a172ef497a7b") - lb, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().CreateGlobalLoadBalancer(opt) + lb, sdkerr := vngcloud.GLBGateway().V1().GLBService().CreateGlobalLoadBalancer(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } @@ -326,8 +327,8 @@ func TestCreateGlobalLoadBalancerSuccess(t *ltesting.T) { func TestDeleteGlobalLoadBalancerSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - opt := global.NewDeleteGlobalLoadBalancerRequest("glb-3fd57a7e-7bb3-4152-a329-adba6d779c4a") - sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().DeleteGlobalLoadBalancer(opt) + opt := v1.NewDeleteGlobalLoadBalancerRequest("glb-3fd57a7e-7bb3-4152-a329-adba6d779c4a") + sdkerr := vngcloud.GLBGateway().V1().GLBService().DeleteGlobalLoadBalancer(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } @@ -337,8 +338,8 @@ func TestDeleteGlobalLoadBalancerSuccess(t *ltesting.T) { func TestGetGlobalLoadBalancerSuccess(t *ltesting.T) { vngcloud := validSdkConfig() - opt := global.NewGetGlobalLoadBalancerByIdRequest("glb-d81be06b-5109-46ad-97d9-e97fe1aa7933") - lb, sdkerr := vngcloud.VLBGateway().Global().LoadBalancerService().GetGlobalLoadBalancerById(opt) + opt := v1.NewGetGlobalLoadBalancerByIdRequest("glb-2e550a10-8a9e-4e0e-9086-80d8297ca3f7") + lb, sdkerr := vngcloud.GLBGateway().V1().GLBService().GetGlobalLoadBalancerById(opt) if sdkerr != nil { t.Fatalf("Expect nil but got %+v", sdkerr) } diff --git a/vngcloud/gateway/gateway.go b/vngcloud/gateway/gateway.go index 56345e4..e1b6683 100644 --- a/vngcloud/gateway/gateway.go +++ b/vngcloud/gateway/gateway.go @@ -2,26 +2,33 @@ package gateway import ( lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" + "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/glb" ) +var _ IIamGateway = &iamGateway{} + type iamGateway struct { iamGatewayV2 IIamGatewayV2 } +var _ IVServerGateway = &vserverGateway{} + type vserverGateway struct { endpoint string // Hold the endpoint of the vServer service vserverGatewayV1 IVServerGatewayV1 vserverGatewayV2 IVServerGatewayV2 } +var _ IVLBGateway = &vlbGateway{} + type vlbGateway struct { endpoint string // Hold the endpoint of the vLB service - globalEndpoint string // Hold the endpoint of the global vLB service vlbGatewayInternal IVLBGatewayInternal vlbGatewayV2 IVLBGatewayV2 - globalLBGateway IVLBGatewayGlobal } +var _ IVNetworkGateway = &vnetworkGateway{} + type vnetworkGateway struct { endpoint string vnetworkGatewayV1 IVNetworkGatewayV1 @@ -57,7 +64,7 @@ func NewVServerGateway(pendpoint, pprojectId string, phc lsclient.IHttpClient) I } } -func NewVLBGateway(plbEndpoint, pglbEndpoint, pserverEndpoint, pprojectId string, phc lsclient.IHttpClient) IVLBGateway { +func NewVLBGateway(plbEndpoint, pserverEndpoint, pprojectId string, phc lsclient.IHttpClient) IVLBGateway { vlbSvcV2 := lsclient.NewServiceClient(). WithEndpoint(plbEndpoint + "v2"). WithClient(phc). @@ -68,11 +75,6 @@ func NewVLBGateway(plbEndpoint, pglbEndpoint, pserverEndpoint, pprojectId string WithClient(phc). WithProjectId(pprojectId) - vlbSvcGlobal := lsclient.NewServiceClient(). - WithEndpoint(pglbEndpoint + "v1"). - WithClient(phc). - WithProjectId(pprojectId) - vserverSvcV2 := lsclient.NewServiceClient(). WithEndpoint(pserverEndpoint + "v2"). WithClient(phc). @@ -80,10 +82,8 @@ func NewVLBGateway(plbEndpoint, pglbEndpoint, pserverEndpoint, pprojectId string return &vlbGateway{ endpoint: plbEndpoint, - globalEndpoint: pglbEndpoint, vlbGatewayV2: NewVLBGatewayV2(vlbSvcV2, vserverSvcV2), vlbGatewayInternal: NewVLBGatewayInternal(vlbSvcIn), - globalLBGateway: NewVLBGatewayGlobal(vlbSvcGlobal), } } @@ -129,10 +129,6 @@ func (s *vlbGateway) V2() IVLBGatewayV2 { return s.vlbGatewayV2 } -func (s *vlbGateway) Global() IVLBGatewayGlobal { - return s.globalLBGateway -} - func (s *vserverGateway) GetEndpoint() string { return s.endpoint } @@ -141,10 +137,6 @@ func (s *vlbGateway) GetEndpoint() string { return s.endpoint } -func (s *vlbGateway) GetGlobalEndpoint() string { - return s.globalEndpoint -} - func (s *vnetworkGateway) V1() IVNetworkGatewayV1 { return s.vnetworkGatewayV1 } @@ -156,3 +148,41 @@ func (s *vnetworkGateway) GetEndpoint() string { func (s *vnetworkGateway) InternalV1() IVNetworkGatewayInternalV1 { return s.vnetworkGatewayInternalV1 } + +var _ IGLBGateway = &glbGateway{} + +type glbGateway struct { + endpoint string + glbGatewayV1 IGLBGatewayV1 +} + +func NewGLBGateway(pendpoint string, phc lsclient.IHttpClient) IGLBGateway { + client := lsclient.NewServiceClient(). + WithEndpoint(pendpoint + "v1"). + WithClient(phc) + + return &glbGateway{ + endpoint: pendpoint, + glbGatewayV1: NewGLBGatewayV1(client), + } +} + +func (s *glbGateway) V1() IGLBGatewayV1 { + return s.glbGatewayV1 +} + +var _ IGLBGatewayV1 = &glbGatewayV1{} + +type glbGatewayV1 struct { + glbService glb.IGLBServiceV1 +} + +func (s *glbGatewayV1) GLBService() glb.IGLBServiceV1 { + return s.glbService +} + +func NewGLBGatewayV1(psvcClient lsclient.IServiceClient) IGLBGatewayV1 { + return &glbGatewayV1{ + glbService: glb.NewGLBServiceV1(psvcClient), + } +} diff --git a/vngcloud/gateway/igateway.go b/vngcloud/gateway/igateway.go index a6219dc..9d1dbda 100644 --- a/vngcloud/gateway/igateway.go +++ b/vngcloud/gateway/igateway.go @@ -2,6 +2,7 @@ package gateway import ( lscomputeSvc "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/compute" + "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/glb" lsidentitySvc "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/identity" lslbSvc "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer" lsnetworkSvc "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/network" @@ -47,10 +48,6 @@ type IVLBGatewayV2 interface { LoadBalancerService() lslbSvc.ILoadBalancerServiceV2 } -type IVLBGatewayGlobal interface { - LoadBalancerService() lslbSvc.ILoadBalancerServiceGlobal -} - type IVNetworkGatewayV1 interface { NetworkService() lsnetworkSvc.INetworkServiceV1 } @@ -66,9 +63,15 @@ type IVLBGatewayInternal interface { type IVLBGateway interface { Internal() IVLBGatewayInternal V2() IVLBGatewayV2 - Global() IVLBGatewayGlobal GetEndpoint() string - GetGlobalEndpoint() string } type IVBackUpGateway interface{} + +type IGLBGateway interface { + V1() IGLBGatewayV1 +} + +type IGLBGatewayV1 interface { + GLBService() glb.IGLBServiceV1 +} diff --git a/vngcloud/gateway/vlb_gateway.go b/vngcloud/gateway/vlb_gateway.go index d63873b..9b2b0c6 100644 --- a/vngcloud/gateway/vlb_gateway.go +++ b/vngcloud/gateway/vlb_gateway.go @@ -13,14 +13,6 @@ type vlbGatewayInternal struct { lbService lslbSvc.ILoadBalancerServiceInternal } -type vlbGatewayGlobal struct { - lbService lslbSvc.ILoadBalancerServiceGlobal -} - -func (s *vlbGatewayGlobal) LoadBalancerService() lslbSvc.ILoadBalancerServiceGlobal { - return s.lbService -} - func NewVLBGatewayV2(plbSvcClient, pserverSvcClient lsclient.IServiceClient) IVLBGatewayV2 { return &vlbGatewayV2{ lbService: lslbSvc.NewLoadBalancerServiceV2(plbSvcClient, pserverSvcClient), @@ -33,12 +25,6 @@ func NewVLBGatewayInternal(psvcClient lsclient.IServiceClient) IVLBGatewayIntern } } -func NewVLBGatewayGlobal(psvcClient lsclient.IServiceClient) IVLBGatewayGlobal { - return &vlbGatewayGlobal{ - lbService: lslbSvc.NewLoadBalancerServiceGlobal(psvcClient), - } -} - func (s *vlbGatewayInternal) LoadBalancerService() lslbSvc.ILoadBalancerServiceInternal { return s.lbService } diff --git a/vngcloud/services/glb/iloadbalancer.go b/vngcloud/services/glb/iloadbalancer.go new file mode 100644 index 0000000..73c24a5 --- /dev/null +++ b/vngcloud/services/glb/iloadbalancer.go @@ -0,0 +1,28 @@ +package glb + +import ( + lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" + lserr "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/sdk_error" + "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/glb/v1" +) + +type IGLBServiceV1 interface { + ListGlobalPools(popts v1.IListGlobalPoolsRequest) (*lsentity.ListGlobalPools, lserr.IError) + CreateGlobalPool(popts v1.ICreateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) + UpdateGlobalPool(popts v1.IUpdateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) + DeleteGlobalPool(popts v1.IDeleteGlobalPoolRequest) lserr.IError + + ListGlobalPoolMembers(popts v1.IListGlobalPoolMembersRequest) (*lsentity.ListGlobalPoolMembers, lserr.IError) + PatchGlobalPoolMember(popts v1.IPatchGlobalPoolMemberRequest) lserr.IError + + ListGlobalListeners(popts v1.IListGlobalListenersRequest) (*lsentity.ListGlobalListeners, lserr.IError) + CreateGlobalListener(popts v1.ICreateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) + UpdateGlobalListener(popts v1.IUpdateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) + DeleteGlobalListener(popts v1.IDeleteGlobalListenerRequest) lserr.IError + // GetGlobalListenerById(popts v1.IGetGlobalListenerByIdRequest) (*lsentity.GlobalListener, lserr.IError) + + ListGlobalLoadBalancers(popts v1.IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) + CreateGlobalLoadBalancer(popts v1.ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) + DeleteGlobalLoadBalancer(popts v1.IDeleteGlobalLoadBalancerRequest) lserr.IError + GetGlobalLoadBalancerById(popts v1.IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) +} diff --git a/vngcloud/services/glb/loadbalancer.go b/vngcloud/services/glb/loadbalancer.go new file mode 100644 index 0000000..189ab69 --- /dev/null +++ b/vngcloud/services/glb/loadbalancer.go @@ -0,0 +1,12 @@ +package glb + +import ( + lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" + v1 "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/glb/v1" +) + +func NewGLBServiceV1(psvcClient lsclient.IServiceClient) IGLBServiceV1 { + return &v1.GLBServiceV1{ + VLBClient: psvcClient, + } +} diff --git a/vngcloud/services/loadbalancer/global/base.go b/vngcloud/services/glb/v1/base.go similarity index 71% rename from vngcloud/services/loadbalancer/global/base.go rename to vngcloud/services/glb/v1/base.go index 4905dcb..7c5c865 100644 --- a/vngcloud/services/loadbalancer/global/base.go +++ b/vngcloud/services/glb/v1/base.go @@ -1,13 +1,13 @@ -package global +package v1 import lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" -type LoadBalancerServiceGlobal struct { +type GLBServiceV1 struct { VLBClient lsclient.IServiceClient VServerClient lsclient.IServiceClient } -func (s *LoadBalancerServiceGlobal) getProjectId() string { +func (s *GLBServiceV1) getProjectId() string { return s.VLBClient.GetProjectId() } diff --git a/vngcloud/services/loadbalancer/global/glb.go b/vngcloud/services/glb/v1/glb.go similarity index 83% rename from vngcloud/services/loadbalancer/global/glb.go rename to vngcloud/services/glb/v1/glb.go index 7461ddb..def10c5 100644 --- a/vngcloud/services/loadbalancer/global/glb.go +++ b/vngcloud/services/glb/v1/glb.go @@ -1,4 +1,4 @@ -package global +package v1 import ( "fmt" @@ -8,7 +8,7 @@ import ( lserr "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/sdk_error" ) -func (s *LoadBalancerServiceGlobal) ListGlobalPools(popts IListGlobalPoolsRequest) (*lsentity.ListGlobalPools, lserr.IError) { +func (s *GLBServiceV1) ListGlobalPools(popts IListGlobalPoolsRequest) (*lsentity.ListGlobalPools, lserr.IError) { url := listGlobalPoolsUrl(s.VLBClient, popts) resp := new(ListGlobalPoolsResponse) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) @@ -30,7 +30,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalPools(popts IListGlobalPoolsReques // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) CreateGlobalPool(popts ICreateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) { +func (s *GLBServiceV1) CreateGlobalPool(popts ICreateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) { url := createGlobalPoolUrl(s.VLBClient, popts) resp := new(CreateGlobalPoolResponse) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) @@ -54,7 +54,7 @@ func (s *LoadBalancerServiceGlobal) CreateGlobalPool(popts ICreateGlobalPoolRequ // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) UpdateGlobalPool(popts IUpdateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) { +func (s *GLBServiceV1) UpdateGlobalPool(popts IUpdateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) { url := updateGlobalPoolUrl(s.VLBClient, popts) resp := new(UpdateGlobalPoolResponse) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) @@ -77,7 +77,7 @@ func (s *LoadBalancerServiceGlobal) UpdateGlobalPool(popts IUpdateGlobalPoolRequ // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) DeleteGlobalPool(popts IDeleteGlobalPoolRequest) lserr.IError { +func (s *GLBServiceV1) DeleteGlobalPool(popts IDeleteGlobalPoolRequest) lserr.IError { url := deleteGlobalPoolUrl(s.VLBClient, popts) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). @@ -96,7 +96,7 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalPool(popts IDeleteGlobalPoolRequ // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) ListGlobalPoolMembers(popts IListGlobalPoolMembersRequest) (*lsentity.ListGlobalPoolMembers, lserr.IError) { +func (s *GLBServiceV1) ListGlobalPoolMembers(popts IListGlobalPoolMembersRequest) (*lsentity.ListGlobalPoolMembers, lserr.IError) { url := listGlobalPoolMembersUrl(s.VLBClient, popts) resp := new(ListGlobalPoolMembersResponse) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) @@ -117,7 +117,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalPoolMembers(popts IListGlobalPoolM // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) PatchGlobalPoolMember(popts IPatchGlobalPoolMemberRequest) lserr.IError { +func (s *GLBServiceV1) PatchGlobalPoolMember(popts IPatchGlobalPoolMemberRequest) lserr.IError { url := patchGlobalPoolMemberUrl(s.VLBClient, popts) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). @@ -138,7 +138,7 @@ func (s *LoadBalancerServiceGlobal) PatchGlobalPoolMember(popts IPatchGlobalPool // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) ListGlobalListeners(popts IListGlobalListenersRequest) (*lsentity.ListGlobalListeners, lserr.IError) { +func (s *GLBServiceV1) ListGlobalListeners(popts IListGlobalListenersRequest) (*lsentity.ListGlobalListeners, lserr.IError) { url := listGlobalListenersUrl(s.VLBClient, popts) resp := new(ListGlobalListenersResponse) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) @@ -159,7 +159,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalListeners(popts IListGlobalListene // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) CreateGlobalListener(popts ICreateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) { +func (s *GLBServiceV1) CreateGlobalListener(popts ICreateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) { url := createGlobalListenerUrl(s.VLBClient, popts) resp := new(CreateGlobalListenerResponse) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) @@ -182,7 +182,7 @@ func (s *LoadBalancerServiceGlobal) CreateGlobalListener(popts ICreateGlobalList // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) UpdateGlobalListener(popts IUpdateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) { +func (s *GLBServiceV1) UpdateGlobalListener(popts IUpdateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) { url := updateGlobalListenerUrl(s.VLBClient, popts) resp := new(UpdateGlobalListenerResponse) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) @@ -206,7 +206,7 @@ func (s *LoadBalancerServiceGlobal) UpdateGlobalListener(popts IUpdateGlobalList // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) DeleteGlobalListener(popts IDeleteGlobalListenerRequest) lserr.IError { +func (s *GLBServiceV1) DeleteGlobalListener(popts IDeleteGlobalListenerRequest) lserr.IError { url := deleteGlobalListenerUrl(s.VLBClient, popts) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). @@ -225,7 +225,7 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalListener(popts IDeleteGlobalList // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) ListGlobalLoadBalancers(popts IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) { +func (s *GLBServiceV1) ListGlobalLoadBalancers(popts IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) { url := listGlobalLoadBalancersUrl(s.VLBClient, popts) resp := new(ListGlobalLoadBalancersResponse) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) @@ -245,7 +245,7 @@ func (s *LoadBalancerServiceGlobal) ListGlobalLoadBalancers(popts IListGlobalLoa // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) CreateGlobalLoadBalancer(popts ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) { +func (s *GLBServiceV1) CreateGlobalLoadBalancer(popts ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) { url := createGlobalLoadBalancerUrl(s.VLBClient, popts) resp := new(CreateGlobalLoadBalancerResponse) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) @@ -267,7 +267,7 @@ func (s *LoadBalancerServiceGlobal) CreateGlobalLoadBalancer(popts ICreateGlobal // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) DeleteGlobalLoadBalancer(popts IDeleteGlobalLoadBalancerRequest) lserr.IError { +func (s *GLBServiceV1) DeleteGlobalLoadBalancer(popts IDeleteGlobalLoadBalancerRequest) lserr.IError { url := deleteGlobalLoadBalancerUrl(s.VLBClient, popts) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) req := lsclient.NewRequest(). @@ -286,7 +286,7 @@ func (s *LoadBalancerServiceGlobal) DeleteGlobalLoadBalancer(popts IDeleteGlobal // -------------------------------------------------- -func (s *LoadBalancerServiceGlobal) GetGlobalLoadBalancerById(popts IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) { +func (s *GLBServiceV1) GetGlobalLoadBalancerById(popts IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) { url := getGlobalLoadBalancerByIdUrl(s.VLBClient, popts) resp := new(GetGlobalLoadBalancerByIdResponse) errResp := lserr.NewErrorResponse(lserr.GlobalLoadBalancerErrorType) diff --git a/vngcloud/services/loadbalancer/global/glb_listener_request.go b/vngcloud/services/glb/v1/glb_listener_request.go similarity index 99% rename from vngcloud/services/loadbalancer/global/glb_listener_request.go rename to vngcloud/services/glb/v1/glb_listener_request.go index 8556156..ae24e63 100644 --- a/vngcloud/services/loadbalancer/global/glb_listener_request.go +++ b/vngcloud/services/glb/v1/glb_listener_request.go @@ -1,4 +1,4 @@ -package global +package v1 import ( "strings" diff --git a/vngcloud/services/loadbalancer/global/glb_listener_response.go b/vngcloud/services/glb/v1/glb_listener_response.go similarity index 99% rename from vngcloud/services/loadbalancer/global/glb_listener_response.go rename to vngcloud/services/glb/v1/glb_listener_response.go index 863ba14..2c77320 100644 --- a/vngcloud/services/loadbalancer/global/glb_listener_response.go +++ b/vngcloud/services/glb/v1/glb_listener_response.go @@ -1,4 +1,4 @@ -package global +package v1 import lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" diff --git a/vngcloud/services/loadbalancer/global/glb_pool_requests.go b/vngcloud/services/glb/v1/glb_pool_requests.go similarity index 99% rename from vngcloud/services/loadbalancer/global/glb_pool_requests.go rename to vngcloud/services/glb/v1/glb_pool_requests.go index 3aa4174..5ee0693 100644 --- a/vngcloud/services/loadbalancer/global/glb_pool_requests.go +++ b/vngcloud/services/glb/v1/glb_pool_requests.go @@ -1,4 +1,4 @@ -package global +package v1 import lscommon "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/common" diff --git a/vngcloud/services/loadbalancer/global/glb_pool_response.go b/vngcloud/services/glb/v1/glb_pool_response.go similarity index 99% rename from vngcloud/services/loadbalancer/global/glb_pool_response.go rename to vngcloud/services/glb/v1/glb_pool_response.go index a24057d..a0d182c 100644 --- a/vngcloud/services/loadbalancer/global/glb_pool_response.go +++ b/vngcloud/services/glb/v1/glb_pool_response.go @@ -1,4 +1,4 @@ -package global +package v1 import lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" diff --git a/vngcloud/services/loadbalancer/global/glb_request.go b/vngcloud/services/glb/v1/glb_request.go similarity index 99% rename from vngcloud/services/loadbalancer/global/glb_request.go rename to vngcloud/services/glb/v1/glb_request.go index 0449e55..37fad9d 100644 --- a/vngcloud/services/loadbalancer/global/glb_request.go +++ b/vngcloud/services/glb/v1/glb_request.go @@ -1,4 +1,4 @@ -package global +package v1 import ( lfmt "fmt" diff --git a/vngcloud/services/loadbalancer/global/glb_response.go b/vngcloud/services/glb/v1/glb_response.go similarity index 99% rename from vngcloud/services/loadbalancer/global/glb_response.go rename to vngcloud/services/glb/v1/glb_response.go index f803f32..8eef9cc 100644 --- a/vngcloud/services/loadbalancer/global/glb_response.go +++ b/vngcloud/services/glb/v1/glb_response.go @@ -1,4 +1,4 @@ -package global +package v1 import ( lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" diff --git a/vngcloud/services/loadbalancer/global/irequest.go b/vngcloud/services/glb/v1/irequest.go similarity index 99% rename from vngcloud/services/loadbalancer/global/irequest.go rename to vngcloud/services/glb/v1/irequest.go index 296890b..88df48f 100644 --- a/vngcloud/services/loadbalancer/global/irequest.go +++ b/vngcloud/services/glb/v1/irequest.go @@ -1,4 +1,4 @@ -package global +package v1 type IListGlobalPoolsRequest interface { WithLoadBalancerId(plbId string) IListGlobalPoolsRequest diff --git a/vngcloud/services/loadbalancer/global/url.go b/vngcloud/services/glb/v1/url.go similarity index 99% rename from vngcloud/services/loadbalancer/global/url.go rename to vngcloud/services/glb/v1/url.go index e9ac5a0..b5c382f 100644 --- a/vngcloud/services/loadbalancer/global/url.go +++ b/vngcloud/services/glb/v1/url.go @@ -1,4 +1,4 @@ -package global +package v1 import lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" diff --git a/vngcloud/services/loadbalancer/iloadbalancer.go b/vngcloud/services/loadbalancer/iloadbalancer.go index a1d91fd..47edbb6 100644 --- a/vngcloud/services/loadbalancer/iloadbalancer.go +++ b/vngcloud/services/loadbalancer/iloadbalancer.go @@ -3,7 +3,6 @@ package loadbalancer import ( lsentity "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/entity" lserr "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/sdk_error" - "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/global" lslbSvcIn "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/inter" lslbSvcV2 "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/v2" ) @@ -43,48 +42,3 @@ type ILoadBalancerServiceV2 interface { type ILoadBalancerServiceInternal interface { CreateLoadBalancer(popts lslbSvcIn.ICreateLoadBalancerRequest) (*lsentity.LoadBalancer, lserr.IError) } - -type ILoadBalancerServiceGlobal interface { - ListGlobalPools(popts global.IListGlobalPoolsRequest) (*lsentity.ListGlobalPools, lserr.IError) - CreateGlobalPool(popts global.ICreateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) - UpdateGlobalPool(popts global.IUpdateGlobalPoolRequest) (*lsentity.GlobalPool, lserr.IError) - DeleteGlobalPool(popts global.IDeleteGlobalPoolRequest) lserr.IError - - ListGlobalPoolMembers(popts global.IListGlobalPoolMembersRequest) (*lsentity.ListGlobalPoolMembers, lserr.IError) - PatchGlobalPoolMember(popts global.IPatchGlobalPoolMemberRequest) lserr.IError - - ListGlobalListeners(popts global.IListGlobalListenersRequest) (*lsentity.ListGlobalListeners, lserr.IError) - CreateGlobalListener(popts global.ICreateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) - UpdateGlobalListener(popts global.IUpdateGlobalListenerRequest) (*lsentity.GlobalListener, lserr.IError) - DeleteGlobalListener(popts global.IDeleteGlobalListenerRequest) lserr.IError - // GetGlobalListenerById(popts global.IGetGlobalListenerByIdRequest) (*lsentity.GlobalListener, lserr.IError) - - ListGlobalLoadBalancers(popts global.IListGlobalLoadBalancersRequest) (*lsentity.ListGlobalLoadBalancers, lserr.IError) - CreateGlobalLoadBalancer(popts global.ICreateGlobalLoadBalancerRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) - DeleteGlobalLoadBalancer(popts global.IDeleteGlobalLoadBalancerRequest) lserr.IError - GetGlobalLoadBalancerById(popts global.IGetGlobalLoadBalancerByIdRequest) (*lsentity.GlobalLoadBalancer, lserr.IError) - - // GetGlobalLoadBalancerPoolById(popts global.IGetGlobalLoadBalancerPoolByIdRequest) (*lsentity.GlobalLoadBalancerPool, lserr.IError) - // GetGlobalLoadBalancerPoolMemberById(popts global.IGetGlobalLoadBalancerPoolMemberByIdRequest) (*lsentity.GlobalLoadBalancerPoolMember, lserr.IError) - // UpdateGlobalLoadBalancerPoolMember(popts global.IUpdateGlobalLoadBalancerPoolMemberRequest) lserr.IError - // DeleteGlobalLoadBalancerPoolMemberById(popts global.IDeleteGlobalLoadBalancerPoolMemberByIdRequest) lserr.IError - // UpdateGlobalLoadBalancer(popts global.IUpdateGlobalLoadBalancerRequest) lserr.IError - // ListGlobalLoadBalancerHealthMonitors(popts global.IListGlobalLoadBalancerHealthMonitorsRequest) (*lsentity.ListGlobalLoadBalancerHealthMonitors, lserr.IError) - // GetGlobalLoadBalancerHealthMonitorById(popts global.IGetGlobalLoadBalancerHealthMonitorByIdRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) - // CreateGlobalLoadBalancerHealthMonitor(popts global.ICreateGlobalLoadBalancerHealthMonitorRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) - // UpdateGlobalLoadBalancerHealthMonitor(popts global.IUpdateGlobalLoadBalancerHealthMonitorRequest) lserr.IError - // DeleteGlobalLoadBalancerHealthMonitorById(popts global.IDeleteGlobalLoadBalancerHealthMonitorByIdRequest) lserr.IError - // ListGlobalLoadBalancerTags(popts global.IListGlobalLoadBalancerTagsRequest) (*lsentity.ListGlobalLoadBalancerTags, lserr.IError) - // CreateGlobalLoadBalancerTags(popts global.ICreateGlobalLoadBalancerTagsRequest) lserr.IError - // UpdateGlobalLoadBalancerTags(popts global.IUpdateGlobalLoadBalancerTagsRequest) lserr.IError - // ListGlobalLoadBalancerPolicies(popts global.IListGlobalLoadBalancerPoliciesRequest) (*lsentity.ListGlobalLoadBalancerPolicies, lserr.IError) - // GetGlobalLoadBalancerPolicyById(popts global.IGetGlobalLoadBalancerPolicyByIdRequest) (*lsentity.GlobalLoadBalancerPolicy, lserr.IError) - // CreateGlobalLoadBalancerPolicy(popts global.ICreateGlobalLoadBalancerPolicyRequest) (*lsentity.GlobalLoadBalancerPolicy, lserr.IError) - // UpdateGlobalLoadBalancerPolicy(popts global.IUpdateGlobalLoadBalancerPolicyRequest) lserr.IError - // DeleteGlobalLoadBalancerPolicyById(popts global.IDeleteGlobalLoadBalancerPolicyByIdRequest) lserr.IError - // GetGlobalLoadBalancerPoolById(popts global.IGetGlobalLoadBalancerPoolByIdRequest) (*lsentity.GlobalLoadBalancerPool, lserr.IError) - // GetGlobalLoadBalancerListenerById(popts global.IGetGlobalLoadBalancerListenerByIdRequest) (*lsentity.GlobalLoadBalancerListener, lserr.IError) - // GetGlobalLoadBalancerHealthMonitorById(popts global.IGetGlobalLoadBalancerHealthMonitorByIdRequest) (*lsentity.GlobalLoadBalancerHealthMonitor, lserr.IError) - // GetGlobalLoadBalancerPolicyById(popts global.IGetGlobalLoadBalancerPolicyByIdRequest) (*lsentity.GlobalLoadBalancerPolicy, lserr.IError) - // GetGlobalLoadBalancerPoolMemberById(popts global.IGetGlobalLoadBalancerPoolMemberByIdRequest) (*lsentity.GlobalLoadBalancerPoolMember, lserr.IError) -} diff --git a/vngcloud/services/loadbalancer/loadbalancer.go b/vngcloud/services/loadbalancer/loadbalancer.go index 259e06f..f02b2a9 100644 --- a/vngcloud/services/loadbalancer/loadbalancer.go +++ b/vngcloud/services/loadbalancer/loadbalancer.go @@ -2,7 +2,6 @@ package loadbalancer import ( lsclient "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/client" - "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/global" lsloadbalancerInternal "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/inter" lsloadbalancerV2 "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/services/loadbalancer/v2" ) @@ -19,9 +18,3 @@ func NewLoadBalancerServiceInternal(psvcClient lsclient.IServiceClient) ILoadBal VLBClient: psvcClient, } } - -func NewLoadBalancerServiceGlobal(psvcClient lsclient.IServiceClient) ILoadBalancerServiceGlobal { - return &global.LoadBalancerServiceGlobal{ - VLBClient: psvcClient, - } -}