@@ -27,8 +27,10 @@ import (
2727 "time"
2828
2929 "github.com/arangodb/go-driver"
30+ api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
3031 "github.com/arangodb/kube-arangodb/pkg/logging"
3132 "github.com/arangodb/kube-arangodb/pkg/util"
33+ "github.com/arangodb/kube-arangodb/pkg/util/errors"
3234 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector"
3335 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoclustersynchronization"
3436 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangomember"
@@ -45,6 +47,7 @@ import (
4547 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/throttle"
4648 "github.com/arangodb/kube-arangodb/pkg/util/kclient"
4749 "github.com/rs/zerolog"
50+ meta "k8s.io/apimachinery/pkg/apis/meta/v1"
4851)
4952
5053var (
@@ -99,26 +102,36 @@ type inspectorLoader interface {
99102
100103var _ inspector.Inspector = & inspectorState {}
101104
102- func NewInspector (throttles throttle.Components , client kclient.Client , namespace string ) inspector.Inspector {
105+ func NewInspector (throttles throttle.Components , client kclient.Client , namespace , deploymentName string ) inspector.Inspector {
103106 if throttles == nil {
104107 throttles = throttle .NewAlwaysThrottleComponents ()
105108 }
106109
107110 i := & inspectorState {
108- namespace : namespace ,
109- client : client ,
110- throttles : throttles ,
111- logger : logging .GlobalLogger ().MustGetLogger (logging .LoggerNameInspector ),
111+ namespace : namespace ,
112+ deploymentName : deploymentName ,
113+ client : client ,
114+ throttles : throttles ,
115+ logger : logging .GlobalLogger ().MustGetLogger (logging .LoggerNameInspector ),
112116 }
113117
114118 return i
115119}
116120
121+ type inspectorStateDeploymentResult struct {
122+ depl * api.ArangoDeployment
123+ err error
124+ }
125+
117126type inspectorState struct {
118127 lock sync.Mutex
119128
120- namespace string
121- client kclient.Client
129+ namespace string
130+ deploymentName string
131+
132+ deploymentResult * inspectorStateDeploymentResult
133+
134+ client kclient.Client
122135
123136 last time.Time
124137
@@ -144,6 +157,14 @@ type inspectorState struct {
144157 initialised bool
145158}
146159
160+ func (i * inspectorState ) GetCurrentArangoDeployment () (* api.ArangoDeployment , error ) {
161+ if i .deploymentResult == nil {
162+ return nil , errors .Newf ("Deployment not initialised" )
163+ }
164+
165+ return i .deploymentResult .depl , i .deploymentResult .err
166+ }
167+
147168func (i * inspectorState ) Endpoints () endpoints.Definition {
148169 return i .endpoints
149170}
@@ -248,6 +269,12 @@ func (i *inspectorState) refreshInThreads(ctx context.Context, threads int, load
248269 }
249270
250271 start := time .Now ()
272+ i .logger .Debug ().Msg ("Pre-inspector refresh start" )
273+ d , err := i .client .Arango ().DatabaseV1 ().ArangoDeployments (i .namespace ).Get (context .Background (), i .deploymentName , meta.GetOptions {})
274+ n .deploymentResult = & inspectorStateDeploymentResult {
275+ depl : d ,
276+ err : err ,
277+ }
251278
252279 i .logger .Debug ().Msg ("Inspector refresh start" )
253280
@@ -298,6 +325,8 @@ func (i *inspectorState) refreshInThreads(ctx context.Context, threads int, load
298325 loaders [id ].Copy (n , i , true )
299326 }
300327
328+ i .deploymentResult = n .deploymentResult
329+
301330 i .throttles = n .throttles
302331
303332 i .last = time .Now ()
@@ -361,6 +390,7 @@ func (i *inspectorState) validate() error {
361390func (i * inspectorState ) copyCore () * inspectorState {
362391 return & inspectorState {
363392 namespace : i .namespace ,
393+ deploymentName : i .deploymentName ,
364394 client : i .client ,
365395 pods : i .pods ,
366396 secrets : i .secrets ,
@@ -376,6 +406,7 @@ func (i *inspectorState) copyCore() *inspectorState {
376406 throttles : i .throttles .Copy (),
377407 versionInfo : i .versionInfo ,
378408 endpoints : i .endpoints ,
409+ deploymentResult : i .deploymentResult ,
379410 logger : i .logger ,
380411 }
381412}
0 commit comments