Skip to content

Commit a73133c

Browse files
committed
Move Endpoints{Lister,Watcher} to new package
1 parent 1a91389 commit a73133c

File tree

18 files changed

+525
-510
lines changed

18 files changed

+525
-510
lines changed

extension/observer/cfgardenobserver/extension.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"go.uber.org/zap"
2424

2525
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer"
26+
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/endpointswatcher"
2627
)
2728

2829
const (
@@ -34,7 +35,7 @@ const (
3435
)
3536

3637
type cfGardenObserver struct {
37-
*observer.EndpointsWatcher
38+
*endpointswatcher.EndpointsWatcher
3839
config *Config
3940
doneChan chan struct{}
4041
logger *zap.Logger
@@ -61,7 +62,7 @@ func newObserver(config *Config, logger *zap.Logger) (extension.Extension, error
6162
apps: make(map[string]*resource.App),
6263
doneChan: make(chan struct{}),
6364
}
64-
g.EndpointsWatcher = observer.NewEndpointsWatcher(g, config.RefreshInterval, logger)
65+
g.EndpointsWatcher = endpointswatcher.New(g, config.RefreshInterval, logger)
6566
return g, nil
6667
}
6768

extension/observer/dockerobserver/extension.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"golang.org/x/sync/errgroup"
1818

1919
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer"
20+
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/endpointswatcher"
2021
dcommon "github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/docker"
2122
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker"
2223
)
@@ -27,13 +28,12 @@ var (
2728
)
2829

2930
var (
30-
_ extension.Extension = (*dockerObserver)(nil)
31-
_ observer.EndpointsLister = (*dockerObserver)(nil)
32-
_ observer.Observable = (*dockerObserver)(nil)
31+
_ extension.Extension = (*dockerObserver)(nil)
32+
_ observer.Observable = (*dockerObserver)(nil)
3333
)
3434

3535
type dockerObserver struct {
36-
*observer.EndpointsWatcher
36+
*endpointswatcher.EndpointsWatcher
3737
logger *zap.Logger
3838
config *Config
3939
cancel context.CancelFunc
@@ -49,7 +49,7 @@ func newObserver(logger *zap.Logger, config *Config) (extension.Extension, error
4949
// Safe value provided on initialisation
5050
},
5151
}
52-
d.EndpointsWatcher = observer.NewEndpointsWatcher(d, time.Second, logger)
52+
d.EndpointsWatcher = endpointswatcher.New(d, time.Second, logger)
5353
return d, nil
5454
}
5555

extension/observer/ecstaskobserver/extension.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,21 @@ import (
1313
"go.uber.org/zap"
1414

1515
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer"
16+
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/endpointswatcher"
1617
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil"
1718
dcommon "github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/docker"
1819
)
1920

2021
const runningStatus = "RUNNING"
2122

2223
var (
23-
_ extension.Extension = (*ecsTaskObserver)(nil)
24-
_ observer.EndpointsLister = (*ecsTaskObserver)(nil)
25-
_ observer.Observable = (*ecsTaskObserver)(nil)
24+
_ extension.Extension = (*ecsTaskObserver)(nil)
25+
_ observer.Observable = (*ecsTaskObserver)(nil)
2626
)
2727

2828
type ecsTaskObserver struct {
2929
extension.Extension
30-
*observer.EndpointsWatcher
30+
*endpointswatcher.EndpointsWatcher
3131
config *Config
3232
metadataProvider ecsutil.MetadataProvider
3333
telemetry component.TelemetrySettings

extension/observer/ecstaskobserver/factory.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import (
1111
"go.opentelemetry.io/collector/component"
1212
"go.opentelemetry.io/collector/extension"
1313

14-
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer"
1514
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver/internal/metadata"
15+
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/endpointswatcher"
1616
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil"
1717
)
1818

@@ -63,7 +63,7 @@ func createExtension(
6363
e.Extension = baseExtension{
6464
ShutdownFunc: e.Shutdown,
6565
}
66-
e.EndpointsWatcher = observer.NewEndpointsWatcher(e, obsCfg.RefreshInterval, params.TelemetrySettings.Logger)
66+
e.EndpointsWatcher = endpointswatcher.New(e, obsCfg.RefreshInterval, params.TelemetrySettings.Logger)
6767

6868
return e, nil
6969
}

extension/observer/ecstaskobserver/factory_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"github.com/stretchr/testify/require"
1111
"go.opentelemetry.io/collector/extension/extensiontest"
1212

13-
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer"
13+
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/endpointswatcher"
1414
)
1515

1616
func TestFactoryCreatedExtensionIsEndpointsLister(t *testing.T) {
@@ -21,5 +21,5 @@ func TestFactoryCreatedExtensionIsEndpointsLister(t *testing.T) {
2121
eto, err := etoFactory.Create(context.Background(), extensiontest.NewNopSettings(etoFactory.Type()), cfg)
2222
require.NoError(t, err)
2323
require.NotNil(t, eto)
24-
require.Implements(t, (*observer.EndpointsLister)(nil), eto)
24+
require.Implements(t, (*endpointswatcher.EndpointsLister)(nil), eto)
2525
}

extension/observer/endpoints.go

-20
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"errors"
88
"fmt"
99
"net"
10-
"reflect"
1110
)
1211

1312
type (
@@ -105,25 +104,6 @@ func (e *Endpoint) String() string {
105104
return fmt.Sprintf("Endpoint{ID: %v, Target: %v, Details: %T%+v}", e.ID, e.Target, e.Details, e.Details)
106105
}
107106

108-
func (e Endpoint) equals(other Endpoint) bool {
109-
switch {
110-
case e.ID != other.ID:
111-
return false
112-
case e.Target != other.Target:
113-
return false
114-
case e.Details == nil && other.Details != nil:
115-
return false
116-
case other.Details == nil && e.Details != nil:
117-
return false
118-
case e.Details == nil && other.Details == nil:
119-
return true
120-
case e.Details.Type() != other.Details.Type():
121-
return false
122-
default:
123-
return reflect.DeepEqual(e.Details.Env(), other.Details.Env())
124-
}
125-
}
126-
127107
// K8sService is a discovered k8s service.
128108
type K8sService struct {
129109
// Name of the service.

extension/observer/endpoints_test.go

-175
Original file line numberDiff line numberDiff line change
@@ -305,178 +305,3 @@ func TestEndpointEnv(t *testing.T) {
305305
})
306306
}
307307
}
308-
309-
func TestEndpointEquals(t *testing.T) {
310-
tests := []struct {
311-
name string
312-
first Endpoint
313-
second Endpoint
314-
areEqual bool
315-
}{
316-
{
317-
name: "equal empty endpoints",
318-
first: Endpoint{}, second: Endpoint{},
319-
areEqual: true,
320-
},
321-
{
322-
name: "equal ID",
323-
first: Endpoint{ID: "id"},
324-
second: Endpoint{ID: "id"},
325-
areEqual: true,
326-
},
327-
{
328-
name: "unequal ID",
329-
first: Endpoint{ID: "first"},
330-
second: Endpoint{ID: "second"},
331-
areEqual: false,
332-
},
333-
{
334-
name: "equal Target",
335-
first: Endpoint{Target: "target"},
336-
second: Endpoint{Target: "target"},
337-
areEqual: true,
338-
},
339-
{
340-
name: "unequal Target",
341-
first: Endpoint{Target: "first"},
342-
second: Endpoint{Target: "second"},
343-
areEqual: false,
344-
},
345-
{
346-
name: "equal empty Port",
347-
first: Endpoint{Details: &Port{}},
348-
second: Endpoint{Details: &Port{}},
349-
areEqual: true,
350-
},
351-
{
352-
name: "equal Port Name",
353-
first: Endpoint{Details: &Port{Name: "port_name"}},
354-
second: Endpoint{Details: &Port{Name: "port_name"}},
355-
areEqual: true,
356-
},
357-
{
358-
name: "unequal Port Name",
359-
first: Endpoint{Details: &Port{Name: "first"}},
360-
second: Endpoint{Details: &Port{Name: "second"}},
361-
areEqual: false,
362-
},
363-
{
364-
name: "equal Port Port",
365-
first: Endpoint{Details: &Port{Port: 2379}},
366-
second: Endpoint{Details: &Port{Port: 2379}},
367-
areEqual: true,
368-
},
369-
{
370-
name: "unequal Port Port",
371-
first: Endpoint{Details: &Port{Port: 0}},
372-
second: Endpoint{Details: &Port{Port: 1}},
373-
areEqual: false,
374-
},
375-
{
376-
name: "equal Port Transport",
377-
first: Endpoint{Details: &Port{Transport: "transport"}},
378-
second: Endpoint{Details: &Port{Transport: "transport"}},
379-
areEqual: true,
380-
},
381-
{
382-
name: "unequal Port Transport",
383-
first: Endpoint{Details: &Port{Transport: "first"}},
384-
second: Endpoint{Details: &Port{Transport: "second"}},
385-
areEqual: false,
386-
},
387-
{
388-
name: "equal Port",
389-
first: Endpoint{
390-
ID: EndpointID("port_id"),
391-
Target: "192.68.73.2",
392-
Details: &Port{
393-
Name: "port_name",
394-
Pod: Pod{
395-
Name: "pod_name",
396-
Labels: map[string]string{
397-
"label_key": "label_val",
398-
},
399-
Annotations: map[string]string{
400-
"annotation_1": "value_1",
401-
},
402-
Namespace: "pod-namespace",
403-
UID: "pod-uid",
404-
},
405-
Port: 2379,
406-
Transport: ProtocolTCP,
407-
},
408-
},
409-
second: Endpoint{
410-
ID: EndpointID("port_id"),
411-
Target: "192.68.73.2",
412-
Details: &Port{
413-
Name: "port_name",
414-
Pod: Pod{
415-
Name: "pod_name",
416-
Labels: map[string]string{
417-
"label_key": "label_val",
418-
},
419-
Annotations: map[string]string{
420-
"annotation_1": "value_1",
421-
},
422-
Namespace: "pod-namespace",
423-
UID: "pod-uid",
424-
},
425-
Port: 2379,
426-
Transport: ProtocolTCP,
427-
},
428-
},
429-
areEqual: true,
430-
},
431-
{
432-
name: "unequal Port Pod Label",
433-
first: Endpoint{
434-
ID: EndpointID("port_id"),
435-
Target: "192.68.73.2",
436-
Details: &Port{
437-
Name: "port_name",
438-
Pod: Pod{
439-
Name: "pod_name",
440-
Labels: map[string]string{
441-
"key_one": "val_one",
442-
},
443-
Annotations: map[string]string{
444-
"annotation_1": "value_1",
445-
},
446-
Namespace: "pod-namespace",
447-
UID: "pod-uid",
448-
},
449-
Port: 2379,
450-
Transport: ProtocolTCP,
451-
},
452-
},
453-
second: Endpoint{
454-
ID: EndpointID("port_id"),
455-
Target: "192.68.73.2",
456-
Details: &Port{
457-
Name: "port_name",
458-
Pod: Pod{
459-
Name: "pod_name",
460-
Labels: map[string]string{
461-
"key_two": "val_two",
462-
},
463-
Annotations: map[string]string{
464-
"annotation_1": "value_1",
465-
},
466-
Namespace: "pod-namespace",
467-
UID: "pod-uid",
468-
},
469-
Port: 2379,
470-
Transport: ProtocolTCP,
471-
},
472-
},
473-
areEqual: false,
474-
},
475-
}
476-
for _, tt := range tests {
477-
t.Run(tt.name, func(t *testing.T) {
478-
require.Equal(t, tt.first.equals(tt.second), tt.areEqual)
479-
require.Equal(t, tt.second.equals(tt.first), tt.areEqual)
480-
})
481-
}
482-
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
// Package endpointswatcher provides a generic implementation of observer.Observable.
5+
//
6+
// This package is intended for observer implementations, and not observer consumers.
7+
package endpointswatcher // import "github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/endpointswatcher"

0 commit comments

Comments
 (0)