-
Notifications
You must be signed in to change notification settings - Fork 2.9k
/
ccnpstatus.go
45 lines (38 loc) · 1.67 KB
/
ccnpstatus.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
// Copyright 2019-2020 Authors of Cilium
//
// 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 k8s
import (
"path"
"time"
"github.com/cilium/cilium/pkg/kvstore"
"k8s.io/client-go/tools/cache"
)
// CCNPStatusesPath is the KVStore key prefix for CCNP status
var CCNPStatusesPath = path.Join(kvstore.BaseKeyPrefix, "state", "ccnpstatuses", "v2")
// CCNPStatusEventHandler handles status updates events for all the CCNPs
// in the cluster. Upon creation of Clusterwide policies, it will start a
// controller for that CNP which handles sending of updates for that CCNP to
// the kubernetes API server. Upon receiving eventes from the key-value store
// it will send the update for the CCNP corresponding to the status update to
// the controller for that CCNP.
type CCNPStatusEventHandler struct {
*CNPStatusEventHandler
}
// NewCCNPStatusEventHandler returns a new CCNPStatusEventHandler.
// which is more or less a wrapper around the CNPStatusEventHandler itself.
func NewCCNPStatusEventHandler(k8sStore cache.Store, updateInterval time.Duration) *CCNPStatusEventHandler {
return &CCNPStatusEventHandler{
CNPStatusEventHandler: NewCNPStatusEventHandler(k8sStore, updateInterval),
}
}