Ability to retain specialised pods for poolmanager functions (#2830)

- added retainPods flag to take in the number of specialized pods to retain
- add retainPods in both the create function and update function command
- modify crd keys to be typed instead of string
- keep track of function generation in case of update function operation
- add delete handler function to make sure specialized pods are deleted in case function is deleted

---------

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Signed-off-by: Pranoy Kundu <pranoy1998k@gmail.com>
Co-authored-by: Pranoy Kundu <pranoy1998k@gmail.com>
This commit is contained in:
Sanket Sudake
2023-09-27 13:33:19 +05:30
committed by GitHub
co-authored by Pranoy Kundu
parent 657aee7cc2
commit 56b49dcee8
26 changed files with 405 additions and 211 deletions
+46 -10
View File
@@ -20,21 +20,57 @@ import (
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
)
// CacheKey : Given metadata, create a key that uniquely identifies the contents
// of the object. Since resourceVersion changes on every update and
// UIDs are unique, uid+resourceVersion identifies the
// content. (ResourceVersion may also update on status updates, so
// this will result in some unnecessary cache misses. That should be
// ok.)
func CacheKey(metadata *metav1.ObjectMeta) string {
return fmt.Sprintf("%v_%v", metadata.UID, metadata.ResourceVersion)
type CacheKeyUR struct {
UID types.UID
ResourceVersion string
}
func (ck CacheKeyUR) String() string {
return fmt.Sprintf("%v_%v", ck.UID, ck.ResourceVersion)
}
type CacheKeyURG struct {
UID types.UID
ResourceVersion string
Generation int64
}
func (ck CacheKeyURG) String() string {
return fmt.Sprintf("%v_%v_%v", ck.UID, ck.ResourceVersion, ck.Generation)
}
// CacheKeyForUID create a key that uniquely identifies the
// of the object. Since resourceVersion changes on every update and
// UIDs are unique, we don't use resource version here
func CacheKeyUID(metadata *metav1.ObjectMeta) string {
return fmt.Sprintf("%v", metadata.UID)
func CacheKeyUIDFromMeta(metadata *metav1.ObjectMeta) types.UID {
return metadata.UID
}
// CacheKeyURFromMeta : Given metadata, create a key that uniquely identifies the contents
// of the object. Since resourceVersion changes on every update and
// UIDs are unique, uid+resourceVersion identifies the
// content. (ResourceVersion may also update on status updates, so
// this will result in some unnecessary cache misses. That should be
// ok.)
func CacheKeyURFromMeta(metadata *metav1.ObjectMeta) CacheKeyUR {
return CacheKeyUR{
UID: metadata.UID,
ResourceVersion: metadata.ResourceVersion,
}
}
// CacheKeyURGFromMeta : Given metadata, create a key that uniquely identifies the contents
// of the object. Since resourceVersion changes on every update and
// UIDs are unique, uid+resourceVersion identifies the
// content.
// Generation is also included to identify latest generation of the object.
func CacheKeyURGFromMeta(metadata *metav1.ObjectMeta) CacheKeyURG {
return CacheKeyURG{
UID: metadata.UID,
ResourceVersion: metadata.ResourceVersion,
Generation: metadata.Generation,
}
}