-
Notifications
You must be signed in to change notification settings - Fork 0
/
events.go
83 lines (66 loc) · 2.09 KB
/
events.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*
Copyright 2018-2019 Gravitational, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package services
import (
"context"
"github.com/gravitational/teleport/lib/backend"
)
// Watch sets up watch on the event
type Watch struct {
// Name is used for debugging purposes
Name string
// Kinds specifies kinds of objects to watch
// and whether to load secret data for them
Kinds []WatchKind
// QueueSize is an optional queue size
QueueSize int
// MetricComponent is used for reporting
MetricComponent string
}
// WatchKind specifies resource kind to watch
type WatchKind struct {
// Kind is a resource kind to watch
Kind string
// Name is an optional specific resource type to watch,
// if specified only the events with a specific resource
// name will be sent
Name string
// LoadSecrets specifies whether to load secrets
LoadSecrets bool
}
// Event represents an event that happened in the backend
type Event struct {
// Type is the event type
Type backend.OpType
// Resource is a modified or deleted resource
// in case of deleted resources, only resource header
// will be provided
Resource Resource
}
// Events returns new events interface
type Events interface {
// NewWatcher returns a new event watcher
NewWatcher(ctx context.Context, watch Watch) (Watcher, error)
}
// Watcher returns watcher
type Watcher interface {
// Events returns channel with events
Events() <-chan Event
// Done returns the channel signalling the closure
Done() <-chan struct{}
// Close closes the watcher and releases
// all associated resources
Close() error
// Error returns error associated with watcher
Error() error
}