mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-17 07:39:22 +00:00
include metadata in third party res list output
This commit is contained in:
parent
24c3be145c
commit
742447f8ce
@ -451,13 +451,6 @@ func (t *thirdPartyResourceDataDecoder) populateListResource(objIn *extensions.T
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
const template = `{
|
|
||||||
"kind": "%s",
|
|
||||||
"apiVersion": "%s",
|
|
||||||
"metadata": {},
|
|
||||||
"items": [ %s ]
|
|
||||||
}`
|
|
||||||
|
|
||||||
type thirdPartyResourceDataEncoder struct {
|
type thirdPartyResourceDataEncoder struct {
|
||||||
delegate runtime.Encoder
|
delegate runtime.Encoder
|
||||||
gvk unversioned.GroupVersionKind
|
gvk unversioned.GroupVersionKind
|
||||||
@ -488,18 +481,36 @@ func (t *thirdPartyResourceDataEncoder) Encode(obj runtime.Object, stream io.Wri
|
|||||||
case *extensions.ThirdPartyResourceData:
|
case *extensions.ThirdPartyResourceData:
|
||||||
return encodeToJSON(obj, stream)
|
return encodeToJSON(obj, stream)
|
||||||
case *extensions.ThirdPartyResourceDataList:
|
case *extensions.ThirdPartyResourceDataList:
|
||||||
// TODO: There must be a better way to do this...
|
// TODO: There are likely still better ways to do this...
|
||||||
dataStrings := make([]string, len(obj.Items))
|
listItems := make([]json.RawMessage, len(obj.Items))
|
||||||
|
|
||||||
for ix := range obj.Items {
|
for ix := range obj.Items {
|
||||||
buff := &bytes.Buffer{}
|
buff := &bytes.Buffer{}
|
||||||
err := encodeToJSON(&obj.Items[ix], buff)
|
err := encodeToJSON(&obj.Items[ix], buff)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
dataStrings[ix] = buff.String()
|
listItems[ix] = json.RawMessage(buff.Bytes())
|
||||||
}
|
}
|
||||||
gv := t.gvk.GroupVersion()
|
|
||||||
fmt.Fprintf(stream, template, t.gvk.Kind+"List", gv.String(), strings.Join(dataStrings, ","))
|
encMap := struct {
|
||||||
|
Kind string `json:"kind,omitempty"`
|
||||||
|
Items []json.RawMessage `json:"items"`
|
||||||
|
Metadata unversioned.ListMeta `json:"metadata,omitempty"`
|
||||||
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
|
}{
|
||||||
|
Kind: t.gvk.Kind + "List",
|
||||||
|
Items: listItems,
|
||||||
|
Metadata: obj.ListMeta,
|
||||||
|
APIVersion: t.gvk.GroupVersion().String(),
|
||||||
|
}
|
||||||
|
|
||||||
|
encBytes, err := json.Marshal(encMap)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprint(stream, string(encBytes))
|
||||||
return nil
|
return nil
|
||||||
case *versioned.InternalEvent:
|
case *versioned.InternalEvent:
|
||||||
event := &versioned.Event{}
|
event := &versioned.Event{}
|
||||||
|
Loading…
Reference in New Issue
Block a user