-
Notifications
You must be signed in to change notification settings - Fork 1k
/
sandbox_cache.go
72 lines (58 loc) · 1.35 KB
/
sandbox_cache.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
// Copyright (c) 2020 Ant Financial
//
// SPDX-License-Identifier: Apache-2.0
//
package katamonitor
import (
"sync"
)
type sandboxCRIMetadata struct {
uid string
name string
namespace string
}
type sandboxCache struct {
*sync.Mutex
// the sandboxCRIMetadata links the sandbox id from the container manager to the pod metadata of kubernetes
sandboxes map[string]sandboxCRIMetadata
}
func (sc *sandboxCache) getSandboxList() []string {
sc.Lock()
defer sc.Unlock()
var sandboxList []string
for id := range sc.sandboxes {
sandboxList = append(sandboxList, id)
}
return sandboxList
}
func (sc *sandboxCache) deleteIfExists(id string) bool {
sc.Lock()
defer sc.Unlock()
if _, found := sc.sandboxes[id]; found {
delete(sc.sandboxes, id)
return true
}
// not in sandbox cache
return false
}
func (sc *sandboxCache) putIfNotExists(id string, value sandboxCRIMetadata) bool {
sc.Lock()
defer sc.Unlock()
if _, found := sc.sandboxes[id]; !found {
sc.sandboxes[id] = value
return true
}
// already in sandbox cache
return false
}
func (sc *sandboxCache) setCRIMetadata(id string, value sandboxCRIMetadata) {
sc.Lock()
defer sc.Unlock()
sc.sandboxes[id] = value
}
func (sc *sandboxCache) getCRIMetadata(id string) (sandboxCRIMetadata, bool) {
sc.Lock()
defer sc.Unlock()
metadata, ok := sc.sandboxes[id]
return metadata, ok
}