Skip to content

Commit

Permalink
Rename ResourceRequirement (#5885)
Browse files Browse the repository at this point in the history
  • Loading branch information
Vaibhav Kamra authored and Ilya Kislenko committed Jun 22, 2019
1 parent f42f3df commit b46f598
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 66 deletions.
10 changes: 5 additions & 5 deletions pkg/filter/crd.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,19 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// CRDMatcher returns a ResourceMatcher that matches all CRs in this cluster.
func CRDMatcher(ctx context.Context, cli crdclient.Interface) (ResourceMatcher, error) {
// CRDMatcher returns a ResourceTypeMatcher that matches all CRs in this cluster.
func CRDMatcher(ctx context.Context, cli crdclient.Interface) (ResourceTypeMatcher, error) {
crds, err := cli.ApiextensionsV1beta1().CustomResourceDefinitions().List(metav1.ListOptions{})
if err != nil {
return nil, errors.Wrap(err, "Failed to query CRDs in cluster")
}
return crdsToMatcher(crds.Items), nil
}

func crdsToMatcher(crds []apiextensions.CustomResourceDefinition) ResourceMatcher {
gvrs := make(ResourceMatcher, 0, len(crds))
func crdsToMatcher(crds []apiextensions.CustomResourceDefinition) ResourceTypeMatcher {
gvrs := make(ResourceTypeMatcher, 0, len(crds))
for _, crd := range crds {
gvr := ResourceRequirement{
gvr := ResourceTypeRequirement{
Group: crd.Spec.Group,
Version: crd.Spec.Version,
Resource: crd.Spec.Names.Plural,
Expand Down
26 changes: 13 additions & 13 deletions pkg/filter/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,27 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
)

type ResourceRequirement struct {
type ResourceTypeRequirement struct {
Group string `json:"group,omitempty"`
Version string `json:"version,omitempty"`
Resource string `json:"resource,omitempty"`
}

func (r ResourceRequirement) Matches(gvr schema.GroupVersionResource) bool {
func (r ResourceTypeRequirement) Matches(gvr schema.GroupVersionResource) bool {
return matches(r.Group, gvr.Group) && matches(r.Version, gvr.Version) && matches(r.Resource, gvr.Resource)
}

func matches(sel, val string) bool {
return sel == "" || sel == val
}

type ResourceMatcher []ResourceRequirement
type ResourceTypeMatcher []ResourceTypeRequirement

func (g ResourceMatcher) Empty() bool {
func (g ResourceTypeMatcher) Empty() bool {
return len(g) == 0
}

func (g ResourceMatcher) Any(gvr schema.GroupVersionResource) bool {
func (g ResourceTypeMatcher) Any(gvr schema.GroupVersionResource) bool {
for _, req := range g {
if req.Matches(gvr) {
return true
Expand All @@ -33,7 +33,7 @@ func (g ResourceMatcher) Any(gvr schema.GroupVersionResource) bool {
return false
}

func (g ResourceMatcher) All(gvr schema.GroupVersionResource) bool {
func (g ResourceTypeMatcher) All(gvr schema.GroupVersionResource) bool {
for _, req := range g {
if !req.Matches(gvr) {
return false
Expand All @@ -44,16 +44,16 @@ func (g ResourceMatcher) All(gvr schema.GroupVersionResource) bool {

type GroupVersionResourceList []schema.GroupVersionResource

func (g GroupVersionResourceList) Include(ms ...ResourceMatcher) GroupVersionResourceList {
func (g GroupVersionResourceList) Include(ms ...ResourceTypeMatcher) GroupVersionResourceList {
return g.apply(ms, false)
}

func (g GroupVersionResourceList) Exclude(ms ...ResourceMatcher) GroupVersionResourceList {
func (g GroupVersionResourceList) Exclude(ms ...ResourceTypeMatcher) GroupVersionResourceList {
return g.apply(ms, true)
}

func (g GroupVersionResourceList) apply(ms []ResourceMatcher, exclude bool) GroupVersionResourceList {
m := joinResourceMatchers(ms...)
func (g GroupVersionResourceList) apply(ms []ResourceTypeMatcher, exclude bool) GroupVersionResourceList {
m := joinResourceTypeMatchers(ms...)
if m.Empty() {
return g
}
Expand All @@ -66,15 +66,15 @@ func (g GroupVersionResourceList) apply(ms []ResourceMatcher, exclude bool) Grou
return filtered
}

func joinResourceMatchers(ms ...ResourceMatcher) ResourceMatcher {
func joinResourceTypeMatchers(ms ...ResourceTypeMatcher) ResourceTypeMatcher {
n := 0
for _, m := range ms {
n += len(m)
}
gvr := make(ResourceMatcher, n)
gvr := make(ResourceTypeMatcher, n)
i := 0
for _, m := range ms {
copy(gvr[i:], []ResourceRequirement(m))
copy(gvr[i:], []ResourceTypeRequirement(m))
i += len(m)
}
return gvr
Expand Down
82 changes: 41 additions & 41 deletions pkg/filter/filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ var _ = Suite(&FilterSuite{})

func (s *FilterSuite) TestGVRRequirement(c *C) {
for _, tc := range []struct {
gvrr ResourceRequirement
gvrr ResourceTypeRequirement
gvr schema.GroupVersionResource
expected bool
}{
// Basic case
{
gvrr: ResourceRequirement{
gvrr: ResourceTypeRequirement{
Group: "",
Version: "",
Resource: "",
Expand All @@ -37,7 +37,7 @@ func (s *FilterSuite) TestGVRRequirement(c *C) {

// Case w/ Version Requirements
{
gvrr: ResourceRequirement{
gvrr: ResourceTypeRequirement{
Group: "",
Version: "v1",
Resource: "",
Expand All @@ -50,7 +50,7 @@ func (s *FilterSuite) TestGVRRequirement(c *C) {
expected: false,
},
{
gvrr: ResourceRequirement{
gvrr: ResourceTypeRequirement{
Group: "",
Version: "v1",
Resource: "",
Expand All @@ -63,7 +63,7 @@ func (s *FilterSuite) TestGVRRequirement(c *C) {
expected: false,
},
{
gvrr: ResourceRequirement{
gvrr: ResourceTypeRequirement{
Group: "",
Version: "v1",
Resource: "",
Expand All @@ -76,7 +76,7 @@ func (s *FilterSuite) TestGVRRequirement(c *C) {
expected: true,
},
{
gvrr: ResourceRequirement{
gvrr: ResourceTypeRequirement{
Group: "",
Version: "v1",
Resource: "",
Expand All @@ -91,7 +91,7 @@ func (s *FilterSuite) TestGVRRequirement(c *C) {

// Wrong group
{
gvrr: ResourceRequirement{
gvrr: ResourceTypeRequirement{
Group: "apps",
Version: "v1",
Resource: "services",
Expand All @@ -106,7 +106,7 @@ func (s *FilterSuite) TestGVRRequirement(c *C) {

// Wrong object
{
gvrr: ResourceRequirement{
gvrr: ResourceTypeRequirement{
Group: "",
Version: "v1",
Resource: "services",
Expand All @@ -124,17 +124,17 @@ func (s *FilterSuite) TestGVRRequirement(c *C) {
}

func (s *FilterSuite) TestGroupVersionResourceEmpty(c *C) {
var g ResourceMatcher
var g ResourceTypeMatcher
c.Assert(g.Empty(), Equals, true)
g = ResourceMatcher{}
g = ResourceTypeMatcher{}
c.Assert(g.Empty(), Equals, true)
g = ResourceMatcher{ResourceRequirement{}}
g = ResourceTypeMatcher{ResourceTypeRequirement{}}
c.Assert(g.Empty(), Equals, false)
}

func (s *FilterSuite) TestGroupVersionResourceAnyAll(c *C) {
for _, tc := range []struct {
g ResourceMatcher
g ResourceTypeMatcher
gvr schema.GroupVersionResource
any bool
all bool
Expand All @@ -147,48 +147,48 @@ func (s *FilterSuite) TestGroupVersionResourceAnyAll(c *C) {
all: true,
},
{
g: ResourceMatcher{},
g: ResourceTypeMatcher{},
gvr: schema.GroupVersionResource{},
any: false,
all: true,
},
{
g: ResourceMatcher{
ResourceRequirement{},
g: ResourceTypeMatcher{
ResourceTypeRequirement{},
},
gvr: schema.GroupVersionResource{},
any: true,
all: true,
},
{
g: ResourceMatcher{
ResourceRequirement{Group: "mygroup"},
g: ResourceTypeMatcher{
ResourceTypeRequirement{Group: "mygroup"},
},
gvr: schema.GroupVersionResource{Group: "mygroup"},
any: true,
all: true,
},
{
g: ResourceMatcher{
ResourceRequirement{Group: "mygroup"},
g: ResourceTypeMatcher{
ResourceTypeRequirement{Group: "mygroup"},
},
gvr: schema.GroupVersionResource{Group: "yourgroup"},
any: false,
all: false,
},
{
g: ResourceMatcher{
ResourceRequirement{Group: "mygroup"},
ResourceRequirement{Group: "yourgroup"},
g: ResourceTypeMatcher{
ResourceTypeRequirement{Group: "mygroup"},
ResourceTypeRequirement{Group: "yourgroup"},
},
gvr: schema.GroupVersionResource{Group: "yourgroup"},
any: true,
all: false,
},
{
g: ResourceMatcher{
ResourceRequirement{Group: "mygroup"},
ResourceRequirement{Group: "yourgroup"},
g: ResourceTypeMatcher{
ResourceTypeRequirement{Group: "mygroup"},
ResourceTypeRequirement{Group: "yourgroup"},
},
gvr: schema.GroupVersionResource{Group: "ourgroup"},
any: false,
Expand All @@ -202,7 +202,7 @@ func (s *FilterSuite) TestGroupVersionResourceAnyAll(c *C) {

func (s *FilterSuite) TestGroupVersionResourceIncludeExclude(c *C) {
for _, tc := range []struct {
m ResourceMatcher
m ResourceTypeMatcher
gvrs GroupVersionResourceList
include GroupVersionResourceList
exclude GroupVersionResourceList
Expand All @@ -220,7 +220,7 @@ func (s *FilterSuite) TestGroupVersionResourceIncludeExclude(c *C) {
},
},
{
m: ResourceMatcher{},
m: ResourceTypeMatcher{},
gvrs: []schema.GroupVersionResource{
schema.GroupVersionResource{},
},
Expand All @@ -232,7 +232,7 @@ func (s *FilterSuite) TestGroupVersionResourceIncludeExclude(c *C) {
},
},
{
m: ResourceMatcher{ResourceRequirement{}},
m: ResourceTypeMatcher{ResourceTypeRequirement{}},
gvrs: []schema.GroupVersionResource{
schema.GroupVersionResource{},
},
Expand All @@ -242,7 +242,7 @@ func (s *FilterSuite) TestGroupVersionResourceIncludeExclude(c *C) {
exclude: []schema.GroupVersionResource{},
},
{
m: ResourceMatcher{ResourceRequirement{}},
m: ResourceTypeMatcher{ResourceTypeRequirement{}},
gvrs: []schema.GroupVersionResource{
schema.GroupVersionResource{
Group: "mygroup",
Expand All @@ -256,8 +256,8 @@ func (s *FilterSuite) TestGroupVersionResourceIncludeExclude(c *C) {
exclude: []schema.GroupVersionResource{},
},
{
m: ResourceMatcher{
ResourceRequirement{
m: ResourceTypeMatcher{
ResourceTypeRequirement{
Group: "mygroup",
},
},
Expand All @@ -274,11 +274,11 @@ func (s *FilterSuite) TestGroupVersionResourceIncludeExclude(c *C) {
exclude: []schema.GroupVersionResource{},
},
{
m: ResourceMatcher{
ResourceRequirement{
m: ResourceTypeMatcher{
ResourceTypeRequirement{
Group: "mygroup",
},
ResourceRequirement{
ResourceTypeRequirement{
Version: "myversion",
},
},
Expand Down Expand Up @@ -341,18 +341,18 @@ func (s *FilterSuite) TestGroupVersionResourceIncludeExclude(c *C) {

func (s *FilterSuite) TestJoin(c *C) {
for _, tc := range []struct {
m []ResourceMatcher
out ResourceMatcher
m []ResourceTypeMatcher
out ResourceTypeMatcher
}{
{
m: []ResourceMatcher{ResourceMatcher{}, ResourceMatcher{}},
out: ResourceMatcher{},
m: []ResourceTypeMatcher{ResourceTypeMatcher{}, ResourceTypeMatcher{}},
out: ResourceTypeMatcher{},
},
{
m: []ResourceMatcher{ResourceMatcher{}, ResourceMatcher{}},
out: ResourceMatcher{},
m: []ResourceTypeMatcher{ResourceTypeMatcher{}, ResourceTypeMatcher{}},
out: ResourceTypeMatcher{},
},
} {
c.Check(joinResourceMatchers(tc.m...), DeepEquals, tc.out)
c.Check(joinResourceTypeMatchers(tc.m...), DeepEquals, tc.out)
}
}
4 changes: 2 additions & 2 deletions pkg/filter/unstructured.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func (s Specs) keys() GroupVersionResourceList {
return gvrs
}

func (s Specs) Include(ms ...ResourceMatcher) Specs {
func (s Specs) Include(ms ...ResourceTypeMatcher) Specs {
gvrs := s.keys().Include(ms...)
ret := make(Specs, len(gvrs))
for _, gvr := range gvrs {
Expand All @@ -24,7 +24,7 @@ func (s Specs) Include(ms ...ResourceMatcher) Specs {
return ret
}

func (s Specs) Exclude(ms ...ResourceMatcher) Specs {
func (s Specs) Exclude(ms ...ResourceTypeMatcher) Specs {
gvrs := s.keys().Exclude(ms...)
ret := make(Specs, len(gvrs))
for _, gvr := range gvrs {
Expand Down
Loading

0 comments on commit b46f598

Please sign in to comment.