diff --git a/pkg/kubelet/cm/dra/claiminfo.go b/pkg/kubelet/cm/dra/claiminfo.go index 73c437b9ade..9048c9bffbc 100644 --- a/pkg/kubelet/cm/dra/claiminfo.go +++ b/pkg/kubelet/cm/dra/claiminfo.go @@ -25,7 +25,7 @@ import ( resourceapi "k8s.io/api/resource/v1alpha3" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/sets" - state "k8s.io/kubernetes/pkg/kubelet/cm/dra/state" + "k8s.io/kubernetes/pkg/kubelet/cm/dra/state" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" ) @@ -40,8 +40,8 @@ type ClaimInfo struct { // claimInfoCache is a cache of processed resource claims keyed by namespace/claimname. type claimInfoCache struct { sync.RWMutex - state state.Checkpointer - claimInfo map[string]*ClaimInfo + checkpointer state.Checkpointer + claimInfo map[string]*ClaimInfo } // newClaimInfoFromClaim creates a new claim info from a resource claim. @@ -124,11 +124,11 @@ func newClaimInfoCache(stateDir, checkpointName string) (*claimInfoCache, error) } cache := &claimInfoCache{ - state: checkpointer, - claimInfo: make(map[string]*ClaimInfo), + checkpointer: checkpointer, + claimInfo: make(map[string]*ClaimInfo), } - entries, err := checkpoint.GetEntries() + entries, err := checkpoint.GetClaimInfoStateList() if err != nil { return nil, fmt.Errorf("error calling GetEntries() on checkpoint: %w", err) @@ -201,7 +201,7 @@ func (cache *claimInfoCache) syncToCheckpoint() error { if err != nil { return err } - return cache.state.Store(checkpoint) + return cache.checkpointer.Store(checkpoint) } // cdiDevicesAsList returns a list of CDIDevices from the provided claim info. diff --git a/pkg/kubelet/cm/dra/claiminfo_test.go b/pkg/kubelet/cm/dra/claiminfo_test.go index f9835389024..139ecc8c9e2 100644 --- a/pkg/kubelet/cm/dra/claiminfo_test.go +++ b/pkg/kubelet/cm/dra/claiminfo_test.go @@ -28,7 +28,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/sets" - state "k8s.io/kubernetes/pkg/kubelet/cm/dra/state" + "k8s.io/kubernetes/pkg/kubelet/cm/dra/state" ) // ClaimInfo test cases diff --git a/pkg/kubelet/cm/dra/manager.go b/pkg/kubelet/cm/dra/manager.go index 661deb78266..bd8416003fc 100644 --- a/pkg/kubelet/cm/dra/manager.go +++ b/pkg/kubelet/cm/dra/manager.go @@ -32,7 +32,7 @@ import ( "k8s.io/klog/v2" drapb "k8s.io/kubelet/pkg/apis/dra/v1alpha4" dra "k8s.io/kubernetes/pkg/kubelet/cm/dra/plugin" - state "k8s.io/kubernetes/pkg/kubelet/cm/dra/state" + "k8s.io/kubernetes/pkg/kubelet/cm/dra/state" "k8s.io/kubernetes/pkg/kubelet/config" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" ) diff --git a/pkg/kubelet/cm/dra/manager_test.go b/pkg/kubelet/cm/dra/manager_test.go index 32d21da2272..dc8f26a741a 100644 --- a/pkg/kubelet/cm/dra/manager_test.go +++ b/pkg/kubelet/cm/dra/manager_test.go @@ -40,7 +40,7 @@ import ( "k8s.io/dynamic-resource-allocation/resourceclaim" drapb "k8s.io/kubelet/pkg/apis/dra/v1alpha4" "k8s.io/kubernetes/pkg/kubelet/cm/dra/plugin" - state "k8s.io/kubernetes/pkg/kubelet/cm/dra/state" + "k8s.io/kubernetes/pkg/kubelet/cm/dra/state" ) const ( diff --git a/pkg/kubelet/cm/dra/state/checkpoint.go b/pkg/kubelet/cm/dra/state/checkpoint.go index c3976ff638c..bfbae956bbc 100644 --- a/pkg/kubelet/cm/dra/state/checkpoint.go +++ b/pkg/kubelet/cm/dra/state/checkpoint.go @@ -27,7 +27,7 @@ import ( const ( CheckpointAPIGroup = "checkpoint.dra.kubelet.k8s.io" CheckpointKind = "DRACheckpoint" - CheckpointAPIVersion = CheckpointAPIGroup + "/" + Version + CheckpointAPIVersion = CheckpointAPIGroup + "/v1" ) // Checkpoint represents a structure to store DRA checkpoint data @@ -40,7 +40,7 @@ type Checkpoint struct { type CheckpointData struct { metav1.TypeMeta - Entries ClaimInfoStateList + ClaimInfoStateList ClaimInfoStateList } // NewCheckpoint creates a new checkpoint from a list of claim info states @@ -50,7 +50,7 @@ func NewCheckpoint(data ClaimInfoStateList) (*Checkpoint, error) { Kind: CheckpointKind, APIVersion: CheckpointAPIVersion, }, - Entries: data, + ClaimInfoStateList: data, } cpDataBytes, err := json.Marshal(cpData) @@ -58,10 +58,12 @@ func NewCheckpoint(data ClaimInfoStateList) (*Checkpoint, error) { return nil, err } - return &Checkpoint{ + cp := &Checkpoint{ Data: string(cpDataBytes), Checksum: crc32.ChecksumIEEE(cpDataBytes), - }, nil + } + + return cp, nil } // MarshalCheckpoint marshals checkpoint to JSON @@ -94,12 +96,12 @@ func (cp *Checkpoint) VerifyChecksum() error { return nil } -// GetEntries returns list of claim info states from checkpoint -func (cp *Checkpoint) GetEntries() (ClaimInfoStateList, error) { - var cpData CheckpointData - if err := json.Unmarshal([]byte(cp.Data), &cpData); err != nil { +// GetClaimInfoStateList returns list of claim info states from checkpoint +func (cp *Checkpoint) GetClaimInfoStateList() (ClaimInfoStateList, error) { + var data CheckpointData + if err := json.Unmarshal([]byte(cp.Data), &data); err != nil { return nil, err } - return cpData.Entries, nil + return data.ClaimInfoStateList, nil } diff --git a/pkg/kubelet/cm/dra/state/checkpointer.go b/pkg/kubelet/cm/dra/state/checkpointer.go index bc1dc3fe54d..62f98029f85 100644 --- a/pkg/kubelet/cm/dra/state/checkpointer.go +++ b/pkg/kubelet/cm/dra/state/checkpointer.go @@ -46,6 +46,7 @@ func NewCheckpointer(stateDir, checkpointName string) (Checkpointer, error) { if err != nil { return nil, fmt.Errorf("failed to initialize checkpoint manager: %w", err) } + checkpointer := &checkpointer{ checkpointManager: checkpointManager, checkpointName: checkpointName, @@ -55,7 +56,7 @@ func NewCheckpointer(stateDir, checkpointName string) (Checkpointer, error) { } // GetOrCreate gets list of claim info states from a checkpoint -// or creates empty list it checkpoint doesn't exist yet +// or creates empty list if checkpoint doesn't exist func (sc *checkpointer) GetOrCreate() (*Checkpoint, error) { sc.Lock() defer sc.Unlock() diff --git a/pkg/kubelet/cm/dra/state/checkpointer_test.go b/pkg/kubelet/cm/dra/state/checkpointer_test.go index b3e4ae00816..a1290ae8e85 100644 --- a/pkg/kubelet/cm/dra/state/checkpointer_test.go +++ b/pkg/kubelet/cm/dra/state/checkpointer_test.go @@ -46,7 +46,7 @@ func TestCheckpointGetOrCreate(t *testing.T) { }, { description: "single-claim-info-state", - checkpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"Entries\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}}]}","Checksum":1597924435}`, + checkpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"ClaimInfoStateList\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}}]}","Checksum":1656016162}`, expectedClaimInfoStateList: ClaimInfoStateList{ { DriverState: map[string]DriverState{ @@ -70,7 +70,7 @@ func TestCheckpointGetOrCreate(t *testing.T) { }, { description: "claim-info-state-with-multiple-devices", - checkpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"Entries\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]},{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-2\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}}]}","Checksum":1812303514}`, + checkpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"ClaimInfoStateList\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]},{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-2\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}}]}","Checksum":3369508096}`, expectedClaimInfoStateList: ClaimInfoStateList{ { DriverState: map[string]DriverState{ @@ -100,7 +100,7 @@ func TestCheckpointGetOrCreate(t *testing.T) { }, { description: "two-claim-info-states", - checkpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"Entries\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example-1\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}},{\"ClaimUID\":\"4cf8db2d-06c0-7d70-1a51-e59b25b2c16c\",\"ClaimName\":\"example-2\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-2\",\"RequestNames\":null,\"CDIDeviceIDs\":null}]}}}]}","Checksum":3633532417}`, + checkpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"ClaimInfoStateList\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example-1\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}},{\"ClaimUID\":\"4cf8db2d-06c0-7d70-1a51-e59b25b2c16c\",\"ClaimName\":\"example-2\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-2\",\"RequestNames\":null,\"CDIDeviceIDs\":null}]}}}]}","Checksum":1582256999}`, expectedClaimInfoStateList: ClaimInfoStateList{ { DriverState: map[string]DriverState{ @@ -184,7 +184,7 @@ func TestCheckpointGetOrCreate(t *testing.T) { assert.ErrorContains(t, err, tc.expectedError) } else { require.NoError(t, err, "unexpected error") - stateList, err := checkpoint.GetEntries() + stateList, err := checkpoint.GetClaimInfoStateList() require.NoError(t, err, "could not get data entries from checkpoint") require.NoError(t, err) assert.Equal(t, tc.expectedClaimInfoStateList, stateList) @@ -221,10 +221,10 @@ func TestCheckpointStateStore(t *testing.T) { PodUIDs: sets.New("139cdb46-f989-4f17-9561-ca10cfb509a6"), }, }, - expectedCheckpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"Entries\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}}]}","Checksum":1597924435}`, + expectedCheckpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"ClaimInfoStateList\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}}]}","Checksum":1656016162}`, }, { - description: "single-claim-info-state-with-multiple-devices", + description: "claim-info-state-with-multiple-devices", claimInfoStateList: ClaimInfoStateList{ { DriverState: map[string]DriverState{ @@ -251,7 +251,7 @@ func TestCheckpointStateStore(t *testing.T) { PodUIDs: sets.New("139cdb46-f989-4f17-9561-ca10cfb509a6"), }, }, - expectedCheckpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"Entries\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]},{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-2\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}}]}","Checksum":1812303514}`, + expectedCheckpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"ClaimInfoStateList\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]},{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-2\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}}]}","Checksum":3369508096}`, }, { description: "two-claim-info-states", @@ -291,7 +291,7 @@ func TestCheckpointStateStore(t *testing.T) { PodUIDs: sets.New("139cdb46-f989-4f17-9561-ca10cfb509a6"), }, }, - expectedCheckpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"Entries\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example-1\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}},{\"ClaimUID\":\"4cf8db2d-06c0-7d70-1a51-e59b25b2c16c\",\"ClaimName\":\"example-2\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-2\",\"RequestNames\":null,\"CDIDeviceIDs\":null}]}}}]}","Checksum":3633532417}`, + expectedCheckpointContent: `{"Data":"{\"kind\":\"DRACheckpoint\",\"apiVersion\":\"checkpoint.dra.kubelet.k8s.io/v1\",\"ClaimInfoStateList\":[{\"ClaimUID\":\"067798be-454e-4be4-9047-1aa06aea63f7\",\"ClaimName\":\"example-1\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-1\",\"RequestNames\":[\"test request\"],\"CDIDeviceIDs\":[\"example.com/example=cdi-example\"]}]}}},{\"ClaimUID\":\"4cf8db2d-06c0-7d70-1a51-e59b25b2c16c\",\"ClaimName\":\"example-2\",\"Namespace\":\"default\",\"PodUIDs\":{\"139cdb46-f989-4f17-9561-ca10cfb509a6\":{}},\"DriverState\":{\"test-driver.cdi.k8s.io\":{\"Devices\":[{\"PoolName\":\"worker-1\",\"DeviceName\":\"dev-2\",\"RequestNames\":null,\"CDIDeviceIDs\":null}]}}}]}","Checksum":1582256999}`, }, } diff --git a/pkg/kubelet/cm/dra/state/state.go b/pkg/kubelet/cm/dra/state/state.go index 17e0a5e1682..045a9b6b2f4 100644 --- a/pkg/kubelet/cm/dra/state/state.go +++ b/pkg/kubelet/cm/dra/state/state.go @@ -21,10 +21,6 @@ import ( "k8s.io/apimachinery/pkg/util/sets" ) -const ( - Version = "v1" -) - type ClaimInfoStateList []ClaimInfoState // +k8s:deepcopy-gen=true