1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- Copyright 2018 The Kubernetes Authors.
- 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 state
- import (
- "encoding/json"
- "k8s.io/kubernetes/pkg/kubelet/checkpointmanager"
- "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/checksum"
- )
- var _ checkpointmanager.Checkpoint = &CPUManagerCheckpoint{}
- // CPUManagerCheckpoint struct is used to store cpu/pod assignments in a checkpoint
- type CPUManagerCheckpoint struct {
- PolicyName string `json:"policyName"`
- DefaultCPUSet string `json:"defaultCpuSet"`
- Entries map[string]string `json:"entries,omitempty"`
- Checksum checksum.Checksum `json:"checksum"`
- }
- // NewCPUManagerCheckpoint returns an instance of Checkpoint
- func NewCPUManagerCheckpoint() *CPUManagerCheckpoint {
- return &CPUManagerCheckpoint{
- Entries: make(map[string]string),
- }
- }
- // MarshalCheckpoint returns marshalled checkpoint
- func (cp *CPUManagerCheckpoint) MarshalCheckpoint() ([]byte, error) {
- // make sure checksum wasn't set before so it doesn't affect output checksum
- cp.Checksum = 0
- cp.Checksum = checksum.New(cp)
- return json.Marshal(*cp)
- }
- // UnmarshalCheckpoint tries to unmarshal passed bytes to checkpoint
- func (cp *CPUManagerCheckpoint) UnmarshalCheckpoint(blob []byte) error {
- return json.Unmarshal(blob, cp)
- }
- // VerifyChecksum verifies that current checksum of checkpoint is valid
- func (cp *CPUManagerCheckpoint) VerifyChecksum() error {
- if cp.Checksum == 0 {
- // accept empty checksum for compatibility with old file backend
- return nil
- }
- ck := cp.Checksum
- cp.Checksum = 0
- err := ck.Verify(cp)
- cp.Checksum = ck
- return err
- }
|