k3s/vendor/github.com/rancher/norman/parse/subcontext.go
Darren Shepherd fa08d6076c Update vendor
2019-01-11 21:58:27 -07:00

51 lines
1.4 KiB
Go

package parse
import (
"github.com/rancher/norman/types"
"github.com/rancher/norman/types/convert"
)
type DefaultSubContextAttributeProvider struct {
}
func (d *DefaultSubContextAttributeProvider) Query(apiContext *types.APIContext, schema *types.Schema) []*types.QueryCondition {
var result []*types.QueryCondition
for name, value := range d.create(apiContext, schema) {
result = append(result, types.NewConditionFromString(name, types.ModifierEQ, value))
}
return result
}
func (d *DefaultSubContextAttributeProvider) Create(apiContext *types.APIContext, schema *types.Schema) map[string]interface{} {
result := map[string]interface{}{}
for key, value := range d.create(apiContext, schema) {
result[key] = value
}
return result
}
func (d *DefaultSubContextAttributeProvider) create(apiContext *types.APIContext, schema *types.Schema) map[string]string {
result := map[string]string{}
for subContextSchemaID, value := range apiContext.SubContext {
subContextSchema := apiContext.Schemas.Schema(nil, subContextSchemaID)
if subContextSchema == nil {
continue
}
ref := convert.ToReference(subContextSchema.ID)
fullRef := convert.ToFullReference(subContextSchema.Version.Path, subContextSchema.ID)
for name, field := range schema.ResourceFields {
if field.Type == ref || field.Type == fullRef {
result[name] = value
break
}
}
}
return result
}