@@ -24,13 +24,11 @@ import (
2424
2525 lb "github.com/oracle/cluster-api-provider-oci/cloud/services/loadbalancer"
2626 nlb "github.com/oracle/cluster-api-provider-oci/cloud/services/networkloadbalancer"
27- wrs "github.com/oracle/cluster-api-provider-oci/cloud/services/workrequests"
2827
2928 "github.com/oracle/oci-go-sdk/v65/common"
3029 "github.com/oracle/oci-go-sdk/v65/core"
3130 "github.com/oracle/oci-go-sdk/v65/loadbalancer"
3231 "github.com/oracle/oci-go-sdk/v65/networkloadbalancer"
33- "github.com/oracle/oci-go-sdk/v65/workrequests"
3432
3533 "github.com/pkg/errors"
3634 "k8s.io/apimachinery/pkg/util/wait"
@@ -63,22 +61,8 @@ func IsNotFound(err error) bool {
6361 return ok && serviceErr .GetHTTPStatusCode () == http .StatusNotFound
6462}
6563
66- func FetchErrorsOnFailedWorkRequest (ctx context.Context , workRequestClient wrs.Client , workRequestId * string ) (done bool , err error ) {
67- resp , err := workRequestClient .ListWorkRequestErrors (ctx , workrequests.ListWorkRequestErrorsRequest {
68- WorkRequestId : workRequestId ,
69- })
70- if err != nil {
71- return false , errors .Wrapf (err , "Failed to fetch work-request-errors for failed workrequest: %s" , * workRequestId )
72- }
73- final_err := errors .Errorf ("WorkRequest %s failed" , * workRequestId )
74- for _ , wr_err := range resp .Items {
75- final_err = errors .Errorf ("%s, %s" , * wr_err .Message , final_err .Error ())
76- }
77- return false , final_err
78- }
79-
8064// AwaitNLBWorkRequest waits for the LB work request to either succeed, fail. See k8s.io/apimachinery/pkg/util/wait
81- func AwaitNLBWorkRequest (ctx context.Context , networkLoadBalancerClient nlb.NetworkLoadBalancerClient , workRequestClient wrs. Client , workRequestId * string ) (* networkloadbalancer.WorkRequest , error ) {
65+ func AwaitNLBWorkRequest (ctx context.Context , networkLoadBalancerClient nlb.NetworkLoadBalancerClient , workRequestId * string ) (* networkloadbalancer.WorkRequest , error ) {
8266 var wr * networkloadbalancer.WorkRequest
8367 immediate := true
8468 err := wait .PollUntilContextTimeout (ctx , WorkRequestPollInterval , WorkRequestTimeout , immediate , func (ctx context.Context ) (done bool , err error ) {
@@ -93,15 +77,27 @@ func AwaitNLBWorkRequest(ctx context.Context, networkLoadBalancerClient nlb.Netw
9377 wr = & twr .WorkRequest
9478 return true , nil
9579 case networkloadbalancer .OperationStatusFailed :
96- return FetchErrorsOnFailedWorkRequest (ctx , workRequestClient , workRequestId )
80+ wreq := networkloadbalancer.ListWorkRequestErrorsRequest {
81+ WorkRequestId : workRequestId ,
82+ CompartmentId : twr .CompartmentId ,
83+ }
84+ final_err := errors .Errorf ("WorkRequest %s failed" , * workRequestId )
85+ wresp , err := networkLoadBalancerClient .ListWorkRequestErrors (ctx , wreq )
86+ if err != nil {
87+ return false , errors .Wrap (final_err , "Failed to fetch the work-request-errors using nlb client" )
88+ }
89+ for _ , wr_err := range wresp .WorkRequestErrorCollection .Items {
90+ final_err = errors .Wrapf (final_err , "%s: %s" , * wr_err .Code , * wr_err .Message )
91+ }
92+ return false , final_err
9793 }
9894 return false , nil
9995 })
10096 return wr , err
10197}
10298
10399// AwaitLBWorkRequest waits for the LBaaS work request to either succeed, fail. See k8s.io/apimachinery/pkg/util/wait
104- func AwaitLBWorkRequest (ctx context.Context , loadBalancerClient lb.LoadBalancerClient , workRequestClient wrs. Client , workRequestId * string ) (* loadbalancer.WorkRequest , error ) {
100+ func AwaitLBWorkRequest (ctx context.Context , loadBalancerClient lb.LoadBalancerClient , workRequestId * string ) (* loadbalancer.WorkRequest , error ) {
105101 var wr * loadbalancer.WorkRequest
106102 immediate := true
107103 err := wait .PollUntilContextTimeout (ctx , WorkRequestPollInterval , WorkRequestTimeout , immediate , func (ctx context.Context ) (done bool , err error ) {
@@ -116,7 +112,11 @@ func AwaitLBWorkRequest(ctx context.Context, loadBalancerClient lb.LoadBalancerC
116112 wr = & twr .WorkRequest
117113 return true , nil
118114 case loadbalancer .WorkRequestLifecycleStateFailed :
119- return FetchErrorsOnFailedWorkRequest (ctx , workRequestClient , workRequestId )
115+ final_err := errors .Errorf ("WorkRequest %s failed" , * workRequestId )
116+ for _ , wreq := range twr .WorkRequest .ErrorDetails {
117+ final_err = errors .Wrapf (final_err , "%s: %s" , wreq .ErrorCode , * wreq .Message )
118+ }
119+ return false , final_err
120120 }
121121 return false , nil
122122 })
0 commit comments