-
Notifications
You must be signed in to change notification settings - Fork 24
/
file_client.go
41 lines (36 loc) · 1.07 KB
/
file_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
package extsecrets
import (
v1 "github.com/jenkins-x-plugins/jx-secret/pkg/apis/external/v1"
"github.com/jenkins-x/jx-helpers/v3/pkg/kyamls"
"github.com/jenkins-x/jx-logging/v3/pkg/log"
"github.com/pkg/errors"
)
var externalSecretFilter = kyamls.Filter{
Kinds: []string{"kubernetes-client.io/v1/ExternalSecret"},
}
func NewFileClient(dir string) Interface {
return &fileClient{dir}
}
type fileClient struct {
dir string
}
func (c *fileClient) List(ns string) ([]*v1.ExternalSecret, error) {
rNodes, err := kyamls.Collect(c.dir, externalSecretFilter)
if err != nil {
return nil, errors.Wrapf(err, "error retrieving external secrets from dir %s", c.dir)
}
var externalSecrets []*v1.ExternalSecret
for _, esNode := range rNodes {
es := &v1.ExternalSecret{}
doc := esNode.Document()
err = doc.Decode(es)
if err != nil {
log.Logger().Debugf("ignored file we could not decode it as a kubernetes resource: %s", err.Error())
continue
}
if ns == "" || es.ObjectMeta.Namespace == ns {
externalSecrets = append(externalSecrets, es)
}
}
return externalSecrets, nil
}