/
client.go
67 lines (59 loc) · 1.96 KB
/
client.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package extsecrets
import (
"context"
"github.com/jenkins-x/jx-helpers/v3/pkg/knative_pkg/duck"
v1 "github.com/jenkins-x-plugins/jx-secret/pkg/apis/external/v1"
"github.com/pkg/errors"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/client-go/dynamic"
)
// Client an implementation of the interface
type client struct {
dynamicClient dynamic.Interface
}
//nolint:gocritic
func (c *client) List(ns string) ([]*v1.ExternalSecret, error) {
var client dynamic.ResourceInterface
if ns != "" {
client = c.dynamicClient.Resource(ExternalSecretsResource).Namespace(ns)
} else {
client = c.dynamicClient.Resource(ExternalSecretsResource)
}
resources, err := client.List(context.TODO(), metav1.ListOptions{})
if err != nil && apierrors.IsNotFound(err) {
err = nil
}
if err != nil {
return nil, errors.Wrap(err, "failed to find external secrets")
}
var answer []*v1.ExternalSecret
if resources != nil {
for k := range resources.Items {
u := resources.Items[k]
extSecret := &v1.ExternalSecret{}
err = FromUnstructured(&u, extSecret)
if err != nil {
return nil, errors.Wrapf(err, "failed to convert to ExternalSecret %s", u.GetName())
}
answer = append(answer, extSecret)
}
}
return answer, nil
}
// FromUnstructured converts from an unstructured object to a pointer to a structured type
func FromUnstructured(u *unstructured.Unstructured, structured interface{}) error {
if err := duck.FromUnstructured(u, structured); err != nil {
return errors.Wrapf(err, "failed to convert unstructured object to %#v", structured)
}
return nil
}
// ToStructured converts a resource to an unstructured type
func ToStructured(resource duck.OneOfOurs) (*unstructured.Unstructured, error) {
u, err := duck.ToUnstructured(resource)
if err != nil {
return nil, errors.Wrapf(err, "failed to convert resource %#v to Unstructured", resource)
}
return u, nil
}