1515package client
1616
1717import (
18+ "context"
1819 "crypto/tls"
1920 "crypto/x509"
2021 "io/ioutil"
@@ -26,6 +27,7 @@ import (
2627
2728 "go.uber.org/zap"
2829 "k8s.io/client-go/tools/cache"
30+ "k8s.io/client-go/util/flowcontrol"
2931
3032 "github.com/oracle/oci-go-sdk/common"
3133 "github.com/oracle/oci-go-sdk/core"
@@ -40,18 +42,54 @@ type Interface interface {
4042 Networking () NetworkingInterface
4143}
4244
45+ // RateLimiter reader and writer.
46+ type RateLimiter struct {
47+ Reader flowcontrol.RateLimiter
48+ Writer flowcontrol.RateLimiter
49+ }
50+
51+ type computeClient interface {
52+ GetInstance (ctx context.Context , request core.GetInstanceRequest ) (response core.GetInstanceResponse , err error )
53+ ListInstances (ctx context.Context , request core.ListInstancesRequest ) (response core.ListInstancesResponse , err error )
54+ ListVnicAttachments (ctx context.Context , request core.ListVnicAttachmentsRequest ) (response core.ListVnicAttachmentsResponse , err error )
55+ }
56+
57+ type virtualNetworkClient interface {
58+ GetVnic (ctx context.Context , request core.GetVnicRequest ) (response core.GetVnicResponse , err error )
59+ GetSubnet (ctx context.Context , request core.GetSubnetRequest ) (response core.GetSubnetResponse , err error )
60+ GetSecurityList (ctx context.Context , request core.GetSecurityListRequest ) (response core.GetSecurityListResponse , err error )
61+ UpdateSecurityList (ctx context.Context , request core.UpdateSecurityListRequest ) (response core.UpdateSecurityListResponse , err error )
62+ }
63+
64+ type loadBalancerClient interface {
65+ GetLoadBalancer (ctx context.Context , request loadbalancer.GetLoadBalancerRequest ) (response loadbalancer.GetLoadBalancerResponse , err error )
66+ ListLoadBalancers (ctx context.Context , request loadbalancer.ListLoadBalancersRequest ) (response loadbalancer.ListLoadBalancersResponse , err error )
67+ CreateLoadBalancer (ctx context.Context , request loadbalancer.CreateLoadBalancerRequest ) (response loadbalancer.CreateLoadBalancerResponse , err error )
68+ DeleteLoadBalancer (ctx context.Context , request loadbalancer.DeleteLoadBalancerRequest ) (response loadbalancer.DeleteLoadBalancerResponse , err error )
69+ ListCertificates (ctx context.Context , request loadbalancer.ListCertificatesRequest ) (response loadbalancer.ListCertificatesResponse , err error )
70+ CreateCertificate (ctx context.Context , request loadbalancer.CreateCertificateRequest ) (response loadbalancer.CreateCertificateResponse , err error )
71+ GetWorkRequest (ctx context.Context , request loadbalancer.GetWorkRequestRequest ) (response loadbalancer.GetWorkRequestResponse , err error )
72+ CreateBackendSet (ctx context.Context , request loadbalancer.CreateBackendSetRequest ) (response loadbalancer.CreateBackendSetResponse , err error )
73+ UpdateBackendSet (ctx context.Context , request loadbalancer.UpdateBackendSetRequest ) (response loadbalancer.UpdateBackendSetResponse , err error )
74+ DeleteBackendSet (ctx context.Context , request loadbalancer.DeleteBackendSetRequest ) (response loadbalancer.DeleteBackendSetResponse , err error )
75+ CreateListener (ctx context.Context , request loadbalancer.CreateListenerRequest ) (response loadbalancer.CreateListenerResponse , err error )
76+ UpdateListener (ctx context.Context , request loadbalancer.UpdateListenerRequest ) (response loadbalancer.UpdateListenerResponse , err error )
77+ DeleteListener (ctx context.Context , request loadbalancer.DeleteListenerRequest ) (response loadbalancer.DeleteListenerResponse , err error )
78+ }
79+
4380type client struct {
44- compute * core.ComputeClient
45- network * core.VirtualNetworkClient
46- loadbalancer * loadbalancer.LoadBalancerClient
81+ compute computeClient
82+ network virtualNetworkClient
83+ loadbalancer loadBalancerClient
84+
85+ rateLimiter RateLimiter
4786
4887 subnetCache cache.Store
4988 logger * zap.SugaredLogger
5089}
5190
5291// New constructs an OCI API client.
53- func New (logger * zap.SugaredLogger , cp common.ConfigurationProvider ) (Interface , error ) {
54- logger = logger .Named ("ociClient" )
92+ func New (logger * zap.SugaredLogger , cp common.ConfigurationProvider , opRateLimiter * RateLimiter ) (Interface , error ) {
5593 compute , err := core .NewComputeClientWithConfigurationProvider (cp )
5694 if err != nil {
5795 return nil , errors .Wrap (err , "NewComputeClientWithConfigurationProvider" )
@@ -86,6 +124,7 @@ func New(logger *zap.SugaredLogger, cp common.ConfigurationProvider) (Interface,
86124 compute : & compute ,
87125 network : & network ,
88126 loadbalancer : & lb ,
127+ rateLimiter : * opRateLimiter ,
89128
90129 subnetCache : cache .NewTTLStore (subnetCacheKeyFn , time .Duration (24 )* time .Hour ),
91130 logger : logger ,
0 commit comments