Skip to content

Commit 028c33d

Browse files
author
Amit Kumar Das
authored
fix(discovery): add retries to discover kubernetes api (#174)
Signed-off-by: AmitKumarDas <[email protected]>
1 parent de8c299 commit 028c33d

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

pkg/kubernetes/utility.go

+10
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,16 @@ func (u *Utility) setAPIResourceDiscoveryOrDefault(config UtilityConfig) {
173173
// this interval for these new CRDs to be discovered.
174174
d.Start(time.Duration(30) * time.Second)
175175

176+
// loop for a while till resources are discovered
177+
var count int
178+
for {
179+
if d.HasSynced() || count >= 5 {
180+
break
181+
}
182+
time.Sleep(1 * time.Second)
183+
count++
184+
}
185+
176186
u.apiResourceDiscovery = d
177187
}
178188

pkg/recipe/list.go

+17-4
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package recipe
1919
import (
2020
"fmt"
2121

22+
"github.com/pkg/errors"
2223
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
2324
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2425

@@ -53,14 +54,20 @@ func (l *Listable) listCRDs() (*types.ListResult, error) {
5354
var crd *v1beta1.CustomResourceDefinition
5455
err := UnstructToTyped(l.List.State, &crd)
5556
if err != nil {
56-
return nil, err
57+
return nil, errors.Wrapf(
58+
err,
59+
"Failed to transform unstruct instance to crd equivalent",
60+
)
5761
}
5862
// use crd client to list crds
5963
items, err := l.crdClient.
6064
CustomResourceDefinitions().
6165
List(metav1.ListOptions{})
6266
if err != nil {
63-
return nil, err
67+
return nil, errors.Wrapf(
68+
err,
69+
"Failed to list crds",
70+
)
6471
}
6572
return &types.ListResult{
6673
Phase: types.ListStatusPassed,
@@ -85,13 +92,19 @@ func (l *Listable) listResources() (*types.ListResult, error) {
8592
l.List.State.GetKind(),
8693
)
8794
if err != nil {
88-
return nil, err
95+
return nil, errors.Wrapf(
96+
err,
97+
"Failed to get resource client",
98+
)
8999
}
90100
items, err := client.
91101
Namespace(l.List.State.GetNamespace()).
92102
List(metav1.ListOptions{}) // TODO add label selector
93103
if err != nil {
94-
return nil, err
104+
return nil, errors.Wrapf(
105+
err,
106+
"Failed to list resources",
107+
)
95108
}
96109
return &types.ListResult{
97110
Phase: types.ListStatusPassed,

0 commit comments

Comments
 (0)