...
1
16
17 package state
18
19 import (
20 "encoding/json"
21
22 "k8s.io/kubernetes/pkg/kubelet/checkpointmanager"
23 "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/checksum"
24 )
25
26 var _ checkpointmanager.Checkpoint = &MemoryManagerCheckpoint{}
27
28
29 type MemoryManagerCheckpoint struct {
30 PolicyName string `json:"policyName"`
31 MachineState NUMANodeMap `json:"machineState"`
32 Entries ContainerMemoryAssignments `json:"entries,omitempty"`
33 Checksum checksum.Checksum `json:"checksum"`
34 }
35
36
37 func NewMemoryManagerCheckpoint() *MemoryManagerCheckpoint {
38
39 return &MemoryManagerCheckpoint{
40 Entries: ContainerMemoryAssignments{},
41 MachineState: NUMANodeMap{},
42 }
43 }
44
45
46 func (mp *MemoryManagerCheckpoint) MarshalCheckpoint() ([]byte, error) {
47
48 mp.Checksum = 0
49 mp.Checksum = checksum.New(mp)
50 return json.Marshal(*mp)
51 }
52
53
54 func (mp *MemoryManagerCheckpoint) UnmarshalCheckpoint(blob []byte) error {
55 return json.Unmarshal(blob, mp)
56 }
57
58
59 func (mp *MemoryManagerCheckpoint) VerifyChecksum() error {
60 ck := mp.Checksum
61 mp.Checksum = 0
62 err := ck.Verify(mp)
63 mp.Checksum = ck
64 return err
65 }
66
View as plain text