K8s: dashboards: fix conversion (#96648)

This commit is contained in:
Stephanie Hingtgen
2024-11-19 05:32:05 -07:00
committed by GitHub
parent 7e442efa9c
commit 6571451a57
4 changed files with 72 additions and 12 deletions
+12 -3
View File
@@ -44,6 +44,7 @@ var _ storage.Interface = (*Storage)(nil)
// Optional settings that apply to a single resource
type StorageOptions struct {
LargeObjectSupport LargeObjectSupport
InternalConversion func([]byte, runtime.Object) (runtime.Object, error)
}
// Storage implements storage.Interface and storage resources as JSON files on disk.
@@ -132,6 +133,14 @@ func (s *Storage) Versioner() storage.Versioner {
return s.versioner
}
func (s *Storage) convertToObject(data []byte, obj runtime.Object) (runtime.Object, error) {
if s.opts.InternalConversion != nil {
return s.opts.InternalConversion(data, obj)
}
obj, _, err := s.codec.Decode(data, nil, obj)
return obj, err
}
// Create adds a new object at a key unless it already exists. 'ttl' is time-to-live
// in seconds (0 means forever). If no error is returned and out is not nil, out will be
// set to the read value from database.
@@ -310,7 +319,7 @@ func (s *Storage) Get(ctx context.Context, key string, opts storage.GetOptions,
return resource.GetError(rsp.Error)
}
_, _, err = s.codec.Decode(rsp.Value, nil, objPtr)
_, err = s.convertToObject(rsp.Value, objPtr)
if err != nil {
return err
}
@@ -360,7 +369,7 @@ func (s *Storage) GetList(ctx context.Context, key string, opts storage.ListOpti
}
for _, item := range rsp.Items {
obj, _, err := s.codec.Decode(item.Value, nil, s.newFunc())
obj, err := s.convertToObject(item.Value, s.newFunc())
if err != nil {
return err
}
@@ -461,7 +470,7 @@ func (s *Storage) GuaranteedUpdate(
existingObj = s.newFunc()
if len(rsp.Value) > 0 {
created = false
_, _, err = s.codec.Decode(rsp.Value, nil, existingObj)
_, err = s.convertToObject(rsp.Value, existingObj)
if err != nil {
return err
}