Skip to content

Commit b022f7a

Browse files
committed
add methods to allow selection and exclusion of resources by gvkn
1 parent 68c3f91 commit b022f7a

File tree

9 files changed

+811
-62
lines changed

9 files changed

+811
-62
lines changed

go/fn/examples/example_filter_GVK_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,9 @@ func updateReplicas(rl *fn.ResourceList) (bool, error) {
3535
}
3636
var replicas int
3737
rl.FunctionConfig.GetOrDie(&replicas, "replicas")
38-
for i, obj := range rl.Items {
39-
if obj.IsGVK("apps/v1", "Deployment") {
40-
rl.Items[i].SetOrDie(replicas, "spec", "replicas")
41-
}
38+
deployments := rl.Items.SelectByGvk("apps/v1", "Deployment")
39+
for i := range deployments {
40+
rl.Items[i].SetOrDie(replicas, "spec", "replicas")
4241
}
4342
return true, nil
4443
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package example
2+
3+
import (
4+
"os"
5+
6+
"github.com/GoogleContainerTools/kpt-functions-sdk/go/fn"
7+
)
8+
9+
// This example implements a function that selectively includes or excludes some resources.
10+
11+
func Example_selectExclude() {
12+
if err := fn.AsMain(fn.ResourceListProcessorFunc(selectResources)); err != nil {
13+
os.Exit(1)
14+
}
15+
}
16+
17+
// selectResources keeps all resources with the GVK apps/v1 Deployment that do
18+
// NOT have the label foo=bar, and removes the rest.
19+
func selectResources(rl *fn.ResourceList) (bool, error) {
20+
rl.Items = rl.Items.SelectByGvk("apps/v1", "Deployment").
21+
ExcludeByLabels(map[string]string{"foo": "bar"})
22+
return true, nil
23+
}

go/fn/go.mod

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,39 @@ module github.com/GoogleContainerTools/kpt-functions-sdk/go/fn
33
go 1.17
44

55
require (
6-
github.com/google/go-cmp v0.5.5
6+
github.com/google/go-cmp v0.5.7
7+
github.com/stretchr/testify v1.7.1
78
// We must not include any core k8s modules (e.g. k8s.io/apimachinery) in
89
// the dependencies, depending on them will likely to cause version skew for
910
// consumers. The dependencies for tests and examples should be isolated.
1011
k8s.io/klog/v2 v2.60.1
11-
sigs.k8s.io/kustomize/kyaml v0.13.6
12+
sigs.k8s.io/kustomize/kyaml v0.13.7-0.20220418212550-9d5491c2e20c
1213
)
1314

1415
require (
1516
github.com/PuerkitoBio/purell v1.1.1 // indirect
1617
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
1718
github.com/davecgh/go-spew v1.1.1 // indirect
18-
github.com/go-errors/errors v1.0.1 // indirect
19+
github.com/go-errors/errors v1.4.2 // indirect
1920
github.com/go-logr/logr v1.2.0 // indirect
2021
github.com/go-openapi/jsonpointer v0.19.5 // indirect
21-
github.com/go-openapi/jsonreference v0.19.3 // indirect
22-
github.com/go-openapi/swag v0.19.5 // indirect
23-
github.com/kr/text v0.2.0 // indirect
24-
github.com/mailru/easyjson v0.7.0 // indirect
22+
github.com/go-openapi/jsonreference v0.19.6 // indirect
23+
github.com/go-openapi/swag v0.21.1 // indirect
24+
github.com/golang/protobuf v1.5.2 // indirect
25+
github.com/google/gnostic v0.5.7-v3refs // indirect
26+
github.com/josharian/intern v1.0.0 // indirect
27+
github.com/mailru/easyjson v0.7.7 // indirect
2528
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
26-
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
2729
github.com/pkg/errors v0.9.1 // indirect
2830
github.com/pmezard/go-difflib v1.0.0 // indirect
29-
github.com/stretchr/testify v1.7.0 // indirect
30-
github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca // indirect
31-
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect
31+
github.com/xlab/treeprint v1.1.0 // indirect
32+
golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect
3233
golang.org/x/text v0.3.7 // indirect
33-
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
34+
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect
35+
google.golang.org/protobuf v1.28.0 // indirect
36+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
3437
gopkg.in/yaml.v2 v2.4.0 // indirect
3538
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
36-
k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 // indirect
39+
k8s.io/kube-openapi v0.0.0-20220401212409-b28bf2818661 // indirect
40+
sigs.k8s.io/yaml v1.3.0 // indirect
3741
)

go/fn/go.sum

Lines changed: 40 additions & 22 deletions
Large diffs are not rendered by default.

go/fn/internal/test/go.mod

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,40 @@ replace github.com/GoogleContainerTools/kpt-functions-sdk/go/fn v0.0.0 => ../..
66

77
require (
88
github.com/GoogleContainerTools/kpt-functions-sdk/go/fn v0.0.0
9-
github.com/stretchr/testify v1.7.0
9+
github.com/stretchr/testify v1.7.1
1010
k8s.io/api v0.24.0
1111
k8s.io/apimachinery v0.24.0
12-
sigs.k8s.io/kustomize/kyaml v0.13.6
12+
sigs.k8s.io/kustomize/kyaml v0.13.7-0.20220418212550-9d5491c2e20c
1313
)
1414

1515
require (
1616
github.com/PuerkitoBio/purell v1.1.1 // indirect
1717
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
1818
github.com/davecgh/go-spew v1.1.1 // indirect
19-
github.com/go-errors/errors v1.0.1 // indirect
19+
github.com/go-errors/errors v1.4.2 // indirect
2020
github.com/go-logr/logr v1.2.0 // indirect
2121
github.com/go-openapi/jsonpointer v0.19.5 // indirect
22-
github.com/go-openapi/jsonreference v0.19.3 // indirect
23-
github.com/go-openapi/swag v0.19.5 // indirect
22+
github.com/go-openapi/jsonreference v0.19.6 // indirect
23+
github.com/go-openapi/swag v0.21.1 // indirect
2424
github.com/gogo/protobuf v1.3.2 // indirect
25+
github.com/golang/protobuf v1.5.2 // indirect
26+
github.com/google/gnostic v0.5.7-v3refs // indirect
2527
github.com/google/gofuzz v1.1.0 // indirect
28+
github.com/josharian/intern v1.0.0 // indirect
2629
github.com/json-iterator/go v1.1.12 // indirect
27-
github.com/mailru/easyjson v0.7.0 // indirect
30+
github.com/kr/pretty v0.2.1 // indirect
31+
github.com/mailru/easyjson v0.7.7 // indirect
2832
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
2933
github.com/modern-go/reflect2 v1.0.2 // indirect
3034
github.com/pmezard/go-difflib v1.0.0 // indirect
31-
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect
35+
golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect
3236
golang.org/x/text v0.3.7 // indirect
37+
google.golang.org/protobuf v1.28.0 // indirect
3338
gopkg.in/inf.v0 v0.9.1 // indirect
3439
gopkg.in/yaml.v2 v2.4.0 // indirect
3540
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
3641
k8s.io/klog/v2 v2.60.1 // indirect
37-
k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 // indirect
42+
k8s.io/kube-openapi v0.0.0-20220401212409-b28bf2818661 // indirect
3843
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect
3944
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect
4045
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect

0 commit comments

Comments
 (0)