15
15
package client
16
16
17
17
import (
18
+ "context"
18
19
"crypto/tls"
19
20
"crypto/x509"
20
21
"io/ioutil"
@@ -26,6 +27,7 @@ import (
26
27
27
28
"go.uber.org/zap"
28
29
"k8s.io/client-go/tools/cache"
30
+ "k8s.io/client-go/util/flowcontrol"
29
31
30
32
"github.com/oracle/oci-go-sdk/common"
31
33
"github.com/oracle/oci-go-sdk/core"
@@ -40,18 +42,54 @@ type Interface interface {
40
42
Networking () NetworkingInterface
41
43
}
42
44
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
+
43
80
type 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
47
86
48
87
subnetCache cache.Store
49
88
logger * zap.SugaredLogger
50
89
}
51
90
52
91
// 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 ) {
55
93
compute , err := core .NewComputeClientWithConfigurationProvider (cp )
56
94
if err != nil {
57
95
return nil , errors .Wrap (err , "NewComputeClientWithConfigurationProvider" )
@@ -86,6 +124,7 @@ func New(logger *zap.SugaredLogger, cp common.ConfigurationProvider) (Interface,
86
124
compute : & compute ,
87
125
network : & network ,
88
126
loadbalancer : & lb ,
127
+ rateLimiter : * opRateLimiter ,
89
128
90
129
subnetCache : cache .NewTTLStore (subnetCacheKeyFn , time .Duration (24 )* time .Hour ),
91
130
logger : logger ,
0 commit comments