LibraryPanels: Support CRUD via apiserver (#113035)
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package libraryelements
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
|
||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||
"github.com/grafana/grafana/pkg/services/libraryelements/model"
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
)
|
||||
|
||||
func ToCreateLibraryElementCommand(raw runtime.Object) (*model.CreateLibraryElementCommand, error) {
|
||||
obj, err := utils.MetaAccessor(raw)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
folder := obj.GetFolder()
|
||||
cmd := &model.CreateLibraryElementCommand{
|
||||
UID: obj.GetName(),
|
||||
FolderUID: &folder,
|
||||
Kind: 1, // the only kind... LibraryPanel
|
||||
Name: obj.FindTitle("library panel"),
|
||||
}
|
||||
if cmd.UID == "" {
|
||||
if obj.GetGenerateName() == "" {
|
||||
return nil, fmt.Errorf("expecting either name or generateName property")
|
||||
}
|
||||
cmd.UID = obj.GetGenerateName() + util.GenerateShortUID()
|
||||
}
|
||||
cmd.Model, err = toRawMessage(raw)
|
||||
return cmd, err
|
||||
}
|
||||
|
||||
func ToPatchLibraryElementCommand(raw runtime.Object) (*model.PatchLibraryElementCommand, error) {
|
||||
obj, err := utils.MetaAccessor(raw)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
folder := obj.GetFolder()
|
||||
cmd := &model.PatchLibraryElementCommand{
|
||||
UID: obj.GetName(),
|
||||
FolderUID: &folder,
|
||||
Kind: 1, // the only kind... LibraryPanel
|
||||
Name: obj.FindTitle("library panel"),
|
||||
}
|
||||
cmd.Model, err = toRawMessage(raw)
|
||||
return cmd, err
|
||||
}
|
||||
|
||||
func toRawMessage(raw runtime.Object) (json.RawMessage, error) {
|
||||
switch obj := raw.(type) {
|
||||
case *v0alpha1.LibraryPanel:
|
||||
return json.Marshal(obj.Spec)
|
||||
}
|
||||
return nil, fmt.Errorf("unsupported library panel type: %T", raw)
|
||||
}
|
||||
Reference in New Issue
Block a user