mirror of
https://github.com/rancher/norman.git
synced 2025-09-17 23:59:36 +00:00
Add offspring controller
This commit is contained in:
45
types/mapper/annotation_field.go
Normal file
45
types/mapper/annotation_field.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package mapper
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/rancher/norman/types"
|
||||
"github.com/rancher/norman/types/convert"
|
||||
"github.com/rancher/norman/types/values"
|
||||
)
|
||||
|
||||
type AnnotationField struct {
|
||||
Field string
|
||||
Object bool
|
||||
}
|
||||
|
||||
func (e AnnotationField) FromInternal(data map[string]interface{}) {
|
||||
v, ok := values.RemoveValue(data, "annotations", "field.cattle.io/"+e.Field)
|
||||
if ok {
|
||||
if e.Object {
|
||||
data := map[string]interface{}{}
|
||||
//ignore error
|
||||
if err := json.Unmarshal([]byte(convert.ToString(v)), &data); err == nil {
|
||||
v = data
|
||||
}
|
||||
}
|
||||
|
||||
data[e.Field] = v
|
||||
}
|
||||
}
|
||||
|
||||
func (e AnnotationField) ToInternal(data map[string]interface{}) {
|
||||
v, ok := data[e.Field]
|
||||
if ok {
|
||||
if e.Object {
|
||||
if bytes, err := json.Marshal(v); err == nil {
|
||||
v = string(bytes)
|
||||
}
|
||||
}
|
||||
values.PutValue(data, v, "annotations", "field.cattle.io/"+e.Field)
|
||||
}
|
||||
}
|
||||
|
||||
func (e AnnotationField) ModifySchema(schema *types.Schema, schemas *types.Schemas) error {
|
||||
return validateField(e.Field, schema)
|
||||
}
|
@@ -26,6 +26,10 @@ func (e *Embed) FromInternal(data map[string]interface{}) {
|
||||
}
|
||||
|
||||
func (e *Embed) ToInternal(data map[string]interface{}) {
|
||||
if data == nil {
|
||||
return
|
||||
}
|
||||
|
||||
sub := map[string]interface{}{}
|
||||
for _, fieldName := range e.embeddedFields {
|
||||
if v, ok := data[fieldName]; ok {
|
||||
|
@@ -10,7 +10,7 @@ type LabelField struct {
|
||||
}
|
||||
|
||||
func (e LabelField) FromInternal(data map[string]interface{}) {
|
||||
v, ok := values.RemoveValue(data, "labels", "io.cattle.field."+e.Field)
|
||||
v, ok := values.RemoveValue(data, "labels", "field.cattle.io/"+e.Field)
|
||||
if ok {
|
||||
data[e.Field] = v
|
||||
}
|
||||
@@ -19,7 +19,7 @@ func (e LabelField) FromInternal(data map[string]interface{}) {
|
||||
func (e LabelField) ToInternal(data map[string]interface{}) {
|
||||
v, ok := data[e.Field]
|
||||
if ok {
|
||||
values.PutValue(data, v, "labels", "io.cattle.field."+e.Field)
|
||||
values.PutValue(data, v, "labels", "field.cattle.io/"+e.Field)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user