Skip to content

Commit

Permalink
Change PutEndpointSlice signature to PutEndpointSlices
Browse files Browse the repository at this point in the history
...to handle multiple headless EndpointSlices.

Signed-off-by: Tom Pantelis <[email protected]>
  • Loading branch information
tpantelis committed Jul 26, 2023
1 parent 576e572 commit 8a4369f
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 21 deletions.
22 changes: 11 additions & 11 deletions coredns/plugin/handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func testWithoutFallback() {

t.lh.Resolver.PutServiceImport(newServiceImport(namespace1, service1, mcsv1a1.ClusterSetIP))

t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1},
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1},
newEndpoint(serviceIP, "", true)))

rec = dnstest.NewRecorder(&test.ResponseWriter{})
Expand Down Expand Up @@ -164,7 +164,7 @@ func testWithoutFallback() {
BeforeEach(func() {
t.lh.Resolver.PutServiceImport(newServiceImport(namespace2, service1, mcsv1a1.ClusterSetIP))

t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace2, service1, clusterID, []mcsv1a1.ServicePort{port1},
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace2, service1, clusterID, []mcsv1a1.ServicePort{port1},
newEndpoint(serviceIP, "", true)))
})

Expand Down Expand Up @@ -322,7 +322,7 @@ func testWithFallback() {

t.lh.Resolver.PutServiceImport(newServiceImport(namespace1, service1, mcsv1a1.ClusterSetIP))

t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1},
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1},
newEndpoint(serviceIP, "", true)))

rec = dnstest.NewRecorder(&test.ResponseWriter{})
Expand Down Expand Up @@ -443,10 +443,10 @@ func testClusterStatus() {

t.lh.Resolver.PutServiceImport(newServiceImport(namespace1, service1, mcsv1a1.ClusterSetIP))

t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1},
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1},
newEndpoint(serviceIP, "", true)))

t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace1, service1, clusterID2, []mcsv1a1.ServicePort{port1, port2},
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace1, service1, clusterID2, []mcsv1a1.ServicePort{port1, port2},
newEndpoint(serviceIP2, "", true)))

rec = dnstest.NewRecorder(&test.ResponseWriter{})
Expand Down Expand Up @@ -584,7 +584,7 @@ func testHeadlessService() {
})

JustBeforeEach(func() {
t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1}, endpoints...))
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1}, endpoints...))
})

When("a headless service has no endpoints", func() {
Expand Down Expand Up @@ -720,7 +720,7 @@ func testHeadlessService() {
BeforeEach(func() {
t.lh.Resolver.PutServiceImport(newServiceImport(namespace1, service1, mcsv1a1.Headless))

t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace1, service1, clusterID2, []mcsv1a1.ServicePort{port1},
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace1, service1, clusterID2, []mcsv1a1.ServicePort{port1},
newEndpoint(endpointIP2, hostName2, true)))

endpoints = append(endpoints, newEndpoint(endpointIP, hostName1, true))
Expand Down Expand Up @@ -774,12 +774,12 @@ func testLocalService() {

t.lh.Resolver.PutServiceImport(newServiceImport(namespace1, service1, mcsv1a1.ClusterSetIP))

t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1},
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1},
newEndpoint(serviceIP, "", true)))

t.lh.Resolver.PutServiceImport(newServiceImport(namespace1, service1, mcsv1a1.ClusterSetIP))

t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace1, service1, clusterID2, []mcsv1a1.ServicePort{port1, port2},
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace1, service1, clusterID2, []mcsv1a1.ServicePort{port1, port2},
newEndpoint(serviceIP2, "", true)))

rec = dnstest.NewRecorder(&test.ResponseWriter{})
Expand Down Expand Up @@ -853,7 +853,7 @@ func testLocalService() {

When("service is in local and remote clusters and local has no active endpoints", func() {
BeforeEach(func() {
t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1},
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1},
newEndpoint(serviceIP, "", false)))
})

Expand Down Expand Up @@ -884,7 +884,7 @@ func testSRVMultiplePorts() {

t.lh.Resolver.PutServiceImport(newServiceImport(namespace1, service1, mcsv1a1.ClusterSetIP))

t.lh.Resolver.PutEndpointSlice(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1, port2},
t.lh.Resolver.PutEndpointSlices(newEndpointSlice(namespace1, service1, clusterID, []mcsv1a1.ServicePort{port1, port2},
newEndpoint(endpointIP, "", true)))

rec = dnstest.NewRecorder(&test.ResponseWriter{})
Expand Down
6 changes: 3 additions & 3 deletions coredns/resolver/clusterip_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ func testClusterIPServiceMisc() {
When("a cluster's EndpointSlice is initially created before the ServiceImport", func() {
It("should eventually process them and return its DNS record", func() {
es := newClusterIPEndpointSlice(namespace1, service1, clusterID1, serviceIP1, true)
Expect(t.resolver.PutEndpointSlice(es)).To(BeTrue())
Expect(t.resolver.PutEndpointSlices(es)).To(BeTrue())

t.awaitDNSRecords(namespace1, service1, clusterID1, "", false)

Expand Down Expand Up @@ -412,7 +412,7 @@ func testClusterIPServiceMisc() {

t.resolver.PutServiceImport(serviceImport)

Expect(t.resolver.PutEndpointSlice(newClusterIPEndpointSlice(namespace1, service1, clusterID1, serviceIP1, true))).To(BeTrue())
Expect(t.resolver.PutEndpointSlices(newClusterIPEndpointSlice(namespace1, service1, clusterID1, serviceIP1, true))).To(BeTrue())

t.resolver.RemoveServiceImport(serviceImport)
})
Expand All @@ -435,7 +435,7 @@ func testClusterIPServiceMisc() {

t.resolver.PutServiceImport(serviceImport)

Expect(t.resolver.PutEndpointSlice(newClusterIPEndpointSlice(namespace1, service1, clusterID1, serviceIP1, true))).To(BeTrue())
Expect(t.resolver.PutEndpointSlices(newClusterIPEndpointSlice(namespace1, service1, clusterID1, serviceIP1, true))).To(BeTrue())

t.resolver.RemoveServiceImport(serviceImport)
})
Expand Down
2 changes: 1 addition & 1 deletion coredns/resolver/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func (c *controller) Stop() {
}

func (c *controller) onEndpointSliceCreateOrUpdate(obj runtime.Object, _ int) bool {
return c.resolver.PutEndpointSlice(obj.(*discovery.EndpointSlice))
return c.resolver.PutEndpointSlices(obj.(*discovery.EndpointSlice))
}

func (c *controller) onEndpointSliceDelete(obj runtime.Object, _ int) bool {
Expand Down
4 changes: 3 additions & 1 deletion coredns/resolver/endpoint_slice.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ import (

const maxRecordsToLog = 5

func (i *Interface) PutEndpointSlice(endpointSlice *discovery.EndpointSlice) bool {
func (i *Interface) PutEndpointSlices(endpointSlices ...*discovery.EndpointSlice) bool {
endpointSlice := endpointSlices[0]

key, clusterID, ok := getKeyInfoFrom(endpointSlice)
if !ok {
return false
Expand Down
2 changes: 1 addition & 1 deletion coredns/resolver/endpoint_slice_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import (
mcsv1a1 "sigs.k8s.io/mcs-api/pkg/apis/v1alpha1"
)

var _ = Describe("PutEndpointSlice", func() {
var _ = Describe("PutEndpointSlices", func() {
t := newTestDriver()

When("the EndpointSlice is missing the required labels", func() {
Expand Down
4 changes: 2 additions & 2 deletions coredns/resolver/headless_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,11 +169,11 @@ func testHeadlessService() {
constants.PublishNotReadyAddresses: strconv.FormatBool(true),
}

// If the local cluster EndpointSlice is created before the local K8s EndpointSlice, PutEndpointSlice should
// If the local cluster EndpointSlice is created before the local K8s EndpointSlice, PutEndpointSlices should
// return true to requeue.
eps := newEndpointSlice(namespace1, service1, clusterID1, nil)
eps.Annotations = annotations
Expect(t.resolver.PutEndpointSlice(eps)).To(BeTrue())
Expect(t.resolver.PutEndpointSlices(eps)).To(BeTrue())

eps1 := &discovery.EndpointSlice{
ObjectMeta: metav1.ObjectMeta{
Expand Down
2 changes: 1 addition & 1 deletion coredns/resolver/resolver_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ func (t *testDriver) testRoundRobin(ns, service string, serviceIPs ...string) {
}

func (t *testDriver) putEndpointSlice(es *discovery.EndpointSlice) {
Expect(t.resolver.PutEndpointSlice(es)).To(BeFalse())
Expect(t.resolver.PutEndpointSlices(es)).To(BeFalse())
}

func newAggregatedServiceImport(namespace, name string) *mcsv1a1.ServiceImport {
Expand Down
2 changes: 1 addition & 1 deletion coredns/resolver/service_import_migration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ var _ = Describe("ServiceImport migration", func() {
}}

delete(legacyEndpointSlice.Labels, constants.LabelIsHeadless)
t.resolver.PutEndpointSlice(legacyEndpointSlice)
t.resolver.PutEndpointSlices(legacyEndpointSlice)
})

When("a legacy per-cluster ServiceImport and EndpointSlice are created", func() {
Expand Down

0 comments on commit 8a4369f

Please sign in to comment.