Documentation ¶
Overview ¶
Package template contains generated code for the spy adapter testing. It should *ONLY* be used for testing Mixer.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( SupportedTmplInfo = map[string]template.Info{ sampleapa.TemplateName: { Name: sampleapa.TemplateName, Impl: "sampleapa", CtrCfg: &sampleapa.InstanceParam{}, Variety: istio_adapter_model_v1beta1.TEMPLATE_VARIETY_ATTRIBUTE_GENERATOR, BldrInterfaceName: sampleapa.TemplateName + "." + "HandlerBuilder", HndlrInterfaceName: sampleapa.TemplateName + "." + "Handler", BuilderSupportsTemplate: func(hndlrBuilder adapter.HandlerBuilder) bool { _, ok := hndlrBuilder.(sampleapa.HandlerBuilder) return ok }, HandlerSupportsTemplate: func(hndlr adapter.Handler) bool { _, ok := hndlr.(sampleapa.Handler) return ok }, InferType: func(cp proto.Message, tEvalFn template.TypeEvalFn) (proto.Message, error) { var BuildTemplate func(param *sampleapa.InstanceParam, path string) (proto.Message, error) _ = BuildTemplate BuildTemplate = func(param *sampleapa.InstanceParam, path string) (proto.Message, error) { if param == nil { return nil, nil } var err error = nil if param.Int64Primitive != "" { if t, e := tEvalFn(param.Int64Primitive); e != nil || t != istio_policy_v1beta1.INT64 { if e != nil { return nil, fmt.Errorf("failed to evaluate expression for field '%s': %v", path+"Int64Primitive", e) } return nil, fmt.Errorf("error type checking for field '%s': Evaluated expression type %v want %v", path+"Int64Primitive", t, istio_policy_v1beta1.INT64) } } if param.BoolPrimitive != "" { if t, e := tEvalFn(param.BoolPrimitive); e != nil || t != istio_policy_v1beta1.BOOL { if e != nil { return nil, fmt.Errorf("failed to evaluate expression for field '%s': %v", path+"BoolPrimitive", e) } return nil, fmt.Errorf("error type checking for field '%s': Evaluated expression type %v want %v", path+"BoolPrimitive", t, istio_policy_v1beta1.BOOL) } } if param.DoublePrimitive != "" { if t, e := tEvalFn(param.DoublePrimitive); e != nil || t != istio_policy_v1beta1.DOUBLE { if e != nil { return nil, fmt.Errorf("failed to evaluate expression for field '%s': %v", path+"DoublePrimitive", e) } return nil, fmt.Errorf("error type checking for field '%s': Evaluated expression type %v want %v", path+"DoublePrimitive", t, istio_policy_v1beta1.DOUBLE) } } if param.StringPrimitive != "" { if t, e := tEvalFn(param.StringPrimitive); e != nil || t != istio_policy_v1beta1.STRING { if e != nil { return nil, fmt.Errorf("failed to evaluate expression for field '%s': %v", path+"StringPrimitive", e) } return nil, fmt.Errorf("error type checking for field '%s': Evaluated expression type %v want %v", path+"StringPrimitive", t, istio_policy_v1beta1.STRING) } } return nil, err } instParam := cp.(*sampleapa.InstanceParam) const fullOutName = "sampleapa.output." for attr, exp := range instParam.AttributeBindings { expr := strings.Replace(exp, "$out.", fullOutName, -1) t1, err := tEvalFn(expr) if err != nil { return nil, fmt.Errorf("error evaluating AttributeBinding expression '%s' for attribute '%s': %v", expr, attr, err) } t2, err := tEvalFn(attr) if err != nil { return nil, fmt.Errorf("error evaluating AttributeBinding expression for attribute key '%s': %v", attr, err) } if t1 != t2 { return nil, fmt.Errorf( "error evaluating AttributeBinding: type '%v' for attribute '%s' does not match type '%s' for expression '%s'", t2, attr, t1, expr) } } return BuildTemplate(instParam, "") }, AttributeManifests: []*istio_policy_v1beta1.AttributeManifest{ { Attributes: map[string]*istio_policy_v1beta1.AttributeManifest_AttributeInfo{ "sampleapa.output.int64Primitive": { ValueType: istio_policy_v1beta1.INT64, }, "sampleapa.output.boolPrimitive": { ValueType: istio_policy_v1beta1.BOOL, }, "sampleapa.output.doublePrimitive": { ValueType: istio_policy_v1beta1.DOUBLE, }, "sampleapa.output.stringPrimitive": { ValueType: istio_policy_v1beta1.STRING, }, "sampleapa.output.stringMap": { ValueType: istio_policy_v1beta1.STRING_MAP, }, }, }, }, ProcessGenAttrs: func(ctx context.Context, instName string, inst proto.Message, attrs attribute.Bag, mapper expr.Evaluator, handler adapter.Handler) (*attribute.MutableBag, error) { var BuildTemplate func(instName string, param *sampleapa.InstanceParam, path string) ( *sampleapa.Instance, error) _ = BuildTemplate BuildTemplate = func(instName string, param *sampleapa.InstanceParam, path string) ( *sampleapa.Instance, error) { if param == nil { return nil, nil } var err error _ = err var Int64PrimitiveInterface interface{} var Int64Primitive int64 if param.Int64Primitive != "" { if Int64PrimitiveInterface, err = mapper.Eval(param.Int64Primitive, attrs); err == nil { Int64Primitive = Int64PrimitiveInterface.(int64) } } if err != nil { msg := fmt.Sprintf("failed to evaluate field '%s' for instance '%s': %v", path+"Int64Primitive", instName, err) log.Error(msg) return nil, errors.New(msg) } var BoolPrimitiveInterface interface{} var BoolPrimitive bool if param.BoolPrimitive != "" { if BoolPrimitiveInterface, err = mapper.Eval(param.BoolPrimitive, attrs); err == nil { BoolPrimitive = BoolPrimitiveInterface.(bool) } } if err != nil { msg := fmt.Sprintf("failed to evaluate field '%s' for instance '%s': %v", path+"BoolPrimitive", instName, err) log.Error(msg) return nil, errors.New(msg) } var DoublePrimitiveInterface interface{} var DoublePrimitive float64 if param.DoublePrimitive != "" { if DoublePrimitiveInterface, err = mapper.Eval(param.DoublePrimitive, attrs); err == nil { DoublePrimitive = DoublePrimitiveInterface.(float64) } } if err != nil { msg := fmt.Sprintf("failed to evaluate field '%s' for instance '%s': %v", path+"DoublePrimitive", instName, err) log.Error(msg) return nil, errors.New(msg) } var StringPrimitiveInterface interface{} var StringPrimitive string if param.StringPrimitive != "" { if StringPrimitiveInterface, err = mapper.Eval(param.StringPrimitive, attrs); err == nil { StringPrimitive = StringPrimitiveInterface.(string) } } if err != nil { msg := fmt.Sprintf("failed to evaluate field '%s' for instance '%s': %v", path+"StringPrimitive", instName, err) log.Error(msg) return nil, errors.New(msg) } _ = param return &sampleapa.Instance{ Name: instName, Int64Primitive: Int64Primitive, BoolPrimitive: BoolPrimitive, DoublePrimitive: DoublePrimitive, StringPrimitive: StringPrimitive, }, nil } instParam := inst.(*sampleapa.InstanceParam) instance, err := BuildTemplate(instName, instParam, "") if err != nil { return nil, err } out, err := handler.(sampleapa.Handler).GenerateSampleApaAttributes(ctx, instance) if err != nil { return nil, err } abag := attrs const fullOutName = "sampleapa.output." if out == nil { log.Debugf("Preprocess adapter returned nil output for instance name '%s'", instName) } else { abag = newWrapperAttrBag( func(name string) (value interface{}, found bool) { field := strings.TrimPrefix(name, fullOutName) if len(field) != len(name) && out.WasSet(field) { switch field { case "int64Primitive": return out.Int64Primitive, true case "boolPrimitive": return out.BoolPrimitive, true case "doublePrimitive": return out.DoublePrimitive, true case "stringPrimitive": return out.StringPrimitive, true case "stringMap": return out.StringMap, true default: return nil, false } } return attrs.Get(name) }, func() []string { return attrs.Names() }, func() { attrs.Done() }, func() string { return attrs.String() }, ) } resultBag := attribute.GetMutableBag(nil) for attrName, outExpr := range instParam.AttributeBindings { ex := strings.Replace(outExpr, "$out.", fullOutName, -1) val, err := mapper.Eval(ex, abag) if err != nil { return nil, err } switch v := val.(type) { case net.IP: if v4 := v.To4(); v4 != nil { resultBag.Set(attrName, []byte(v4)) continue } resultBag.Set(attrName, []byte(v.To16())) default: resultBag.Set(attrName, val) } } return resultBag, nil }, DispatchGenAttrs: func(ctx context.Context, handler adapter.Handler, inst interface{}, attrs attribute.Bag, mapper template.OutputMapperFn) (*attribute.MutableBag, error) { instance := inst.(*sampleapa.Instance) out, err := handler.(sampleapa.Handler).GenerateSampleApaAttributes(ctx, instance) if err != nil { return nil, err } // Construct a wrapper bag around the returned output message and pass it to the output mapper // to map $out values back to the destination attributes in the ambient context. const fullOutName = "sampleapa.output." outBag := newWrapperAttrBag( func(name string) (value interface{}, found bool) { field := strings.TrimPrefix(name, fullOutName) if len(field) != len(name) && out.WasSet(field) { switch field { case "int64Primitive": return out.Int64Primitive, true case "boolPrimitive": return out.BoolPrimitive, true case "doublePrimitive": return out.DoublePrimitive, true case "stringPrimitive": return out.StringPrimitive, true case "stringMap": return out.StringMap, true default: return nil, false } } return attrs.Get(name) }, func() []string { return attrs.Names() }, func() { attrs.Done() }, func() string { return attrs.String() }, ) return mapper(outBag) }, CreateInstanceBuilder: func(instanceName string, param proto.Message, expb *compiled.ExpressionBuilder) (template.InstanceBuilderFn, error) { if param == nil { return func(attr attribute.Bag) (interface{}, error) { return nil, nil }, nil } builder, errp := newBuilder_sampleapa_Template(expb, param.(*sampleapa.InstanceParam)) if !errp.IsNil() { return nil, errp.AsCompilationError(instanceName) } return func(attr attribute.Bag) (interface{}, error) { e, errp := builder.build(attr) if !errp.IsNil() { err := errp.AsEvaluationError(instanceName) log.Error(err.Error()) return nil, err } e.Name = instanceName return e, nil }, nil }, CreateOutputExpressions: func( instanceParam proto.Message, finder expr.AttributeDescriptorFinder, expb *compiled.ExpressionBuilder) (map[string]compiled.Expression, error) { var err error var expType istio_policy_v1beta1.ValueType param := instanceParam.(*sampleapa.InstanceParam) expressions := make(map[string]compiled.Expression, len(param.AttributeBindings)) const fullOutName = "sampleapa.output." for attrName, outExpr := range param.AttributeBindings { attrInfo := finder.GetAttribute(attrName) if attrInfo == nil { log.Warnf("attribute not found when mapping outputs: attr='%s', expr='%s'", attrName, outExpr) continue } ex := strings.Replace(outExpr, "$out.", fullOutName, -1) if expressions[attrName], expType, err = expb.Compile(ex); err != nil { return nil, err } if attrInfo.ValueType != expType { log.Warnf("attribute type mismatch: attr='%s', attrType='%v', expr='%s', exprType='%v'", attrName, attrInfo.ValueType, outExpr, expType) continue } } return expressions, nil }, }, samplecheck.TemplateName: { Name: samplecheck.TemplateName, Impl: "samplecheck", CtrCfg: &samplecheck.InstanceParam{}, Variety: istio_adapter_model_v1beta1.TEMPLATE_VARIETY_CHECK, BldrInterfaceName: samplecheck.TemplateName + "." + "HandlerBuilder", HndlrInterfaceName: samplecheck.TemplateName + "." + "Handler", BuilderSupportsTemplate: func(hndlrBuilder adapter.HandlerBuilder) bool { _, ok := hndlrBuilder.(samplecheck.HandlerBuilder) return ok }, HandlerSupportsTemplate: func(hndlr adapter.Handler) bool { _, ok := hndlr.(samplecheck.Handler) return ok }, InferType: func(cp proto.Message, tEvalFn template.TypeEvalFn) (proto.Message, error) { var BuildTemplate func(param *samplecheck.InstanceParam, path string) (*samplecheck.Type, error) _ = BuildTemplate BuildTemplate = func(param *samplecheck.InstanceParam, path string) (*samplecheck.Type, error) { if param == nil { return nil, nil } infrdType := &samplecheck.Type{} var err error = nil if param.StringPrimitive != "" { if t, e := tEvalFn(param.StringPrimitive); e != nil || t != istio_policy_v1beta1.STRING { if e != nil { return nil, fmt.Errorf("failed to evaluate expression for field '%s': %v", path+"StringPrimitive", e) } return nil, fmt.Errorf("error type checking for field '%s': Evaluated expression type %v want %v", path+"StringPrimitive", t, istio_policy_v1beta1.STRING) } } return infrdType, err } instParam := cp.(*samplecheck.InstanceParam) return BuildTemplate(instParam, "") }, SetType: func(types map[string]proto.Message, builder adapter.HandlerBuilder) { castedBuilder := builder.(samplecheck.HandlerBuilder) castedTypes := make(map[string]*samplecheck.Type, len(types)) for k, v := range types { v1 := v.(*samplecheck.Type) castedTypes[k] = v1 } castedBuilder.SetSampleCheckTypes(castedTypes) }, ProcessCheck: func(ctx context.Context, instName string, inst proto.Message, attrs attribute.Bag, mapper expr.Evaluator, handler adapter.Handler) (adapter.CheckResult, error) { var BuildTemplate func(instName string, param *samplecheck.InstanceParam, path string) ( *samplecheck.Instance, error) _ = BuildTemplate BuildTemplate = func(instName string, param *samplecheck.InstanceParam, path string) ( *samplecheck.Instance, error) { if param == nil { return nil, nil } var err error _ = err var StringPrimitiveInterface interface{} var StringPrimitive string if param.StringPrimitive != "" { if StringPrimitiveInterface, err = mapper.Eval(param.StringPrimitive, attrs); err == nil { StringPrimitive = StringPrimitiveInterface.(string) } } if err != nil { msg := fmt.Sprintf("failed to evaluate field '%s' for instance '%s': %v", path+"StringPrimitive", instName, err) log.Error(msg) return nil, errors.New(msg) } _ = param return &samplecheck.Instance{ Name: instName, StringPrimitive: StringPrimitive, }, nil } instParam := inst.(*samplecheck.InstanceParam) instance, err := BuildTemplate(instName, instParam, "") if err != nil { return adapter.CheckResult{}, err } return handler.(samplecheck.Handler).HandleSampleCheck(ctx, instance) }, DispatchCheck: func(ctx context.Context, handler adapter.Handler, inst interface{}) (adapter.CheckResult, error) { instance := inst.(*samplecheck.Instance) return handler.(samplecheck.Handler).HandleSampleCheck(ctx, instance) }, CreateInstanceBuilder: func(instanceName string, param proto.Message, expb *compiled.ExpressionBuilder) (template.InstanceBuilderFn, error) { if param == nil { return func(attr attribute.Bag) (interface{}, error) { return nil, nil }, nil } builder, errp := newBuilder_samplecheck_Template(expb, param.(*samplecheck.InstanceParam)) if !errp.IsNil() { return nil, errp.AsCompilationError(instanceName) } return func(attr attribute.Bag) (interface{}, error) { e, errp := builder.build(attr) if !errp.IsNil() { err := errp.AsEvaluationError(instanceName) log.Error(err.Error()) return nil, err } e.Name = instanceName return e, nil }, nil }, }, samplereport.TemplateName: { Name: samplereport.TemplateName, Impl: "samplereport", CtrCfg: &samplereport.InstanceParam{}, Variety: istio_adapter_model_v1beta1.TEMPLATE_VARIETY_REPORT, BldrInterfaceName: samplereport.TemplateName + "." + "HandlerBuilder", HndlrInterfaceName: samplereport.TemplateName + "." + "Handler", BuilderSupportsTemplate: func(hndlrBuilder adapter.HandlerBuilder) bool { _, ok := hndlrBuilder.(samplereport.HandlerBuilder) return ok }, HandlerSupportsTemplate: func(hndlr adapter.Handler) bool { _, ok := hndlr.(samplereport.Handler) return ok }, InferType: func(cp proto.Message, tEvalFn template.TypeEvalFn) (proto.Message, error) { var BuildTemplate func(param *samplereport.InstanceParam, path string) (*samplereport.Type, error) _ = BuildTemplate BuildTemplate = func(param *samplereport.InstanceParam, path string) (*samplereport.Type, error) { if param == nil { return nil, nil } infrdType := &samplereport.Type{} var err error = nil if param.Value == "" { infrdType.Value = istio_policy_v1beta1.VALUE_TYPE_UNSPECIFIED } else if infrdType.Value, err = tEvalFn(param.Value); err != nil { return nil, fmt.Errorf("failed to evaluate expression for field '%s'; %v", path+"Value", err) } infrdType.Dimensions = make(map[string]istio_policy_v1beta1.ValueType, len(param.Dimensions)) for k, v := range param.Dimensions { if infrdType.Dimensions[k], err = tEvalFn(v); err != nil { return nil, fmt.Errorf("failed to evaluate expression for field '%s%s[%s]'; %v", path, "Dimensions", k, err) } } return infrdType, err } instParam := cp.(*samplereport.InstanceParam) return BuildTemplate(instParam, "") }, SetType: func(types map[string]proto.Message, builder adapter.HandlerBuilder) { castedBuilder := builder.(samplereport.HandlerBuilder) castedTypes := make(map[string]*samplereport.Type, len(types)) for k, v := range types { v1 := v.(*samplereport.Type) castedTypes[k] = v1 } castedBuilder.SetSampleReportTypes(castedTypes) }, ProcessReport: func(ctx context.Context, insts map[string]proto.Message, attrs attribute.Bag, mapper expr.Evaluator, handler adapter.Handler) error { var BuildTemplate func(instName string, param *samplereport.InstanceParam, path string) ( *samplereport.Instance, error) _ = BuildTemplate BuildTemplate = func(instName string, param *samplereport.InstanceParam, path string) ( *samplereport.Instance, error) { if param == nil { return nil, nil } var err error _ = err var Value interface{} if param.Value != "" { Value, err = mapper.Eval(param.Value, attrs) } if err != nil { msg := fmt.Sprintf("failed to evaluate field '%s' for instance '%s': %v", path+"Value", instName, err) log.Error(msg) return nil, errors.New(msg) } Dimensions, err := template.EvalAll(param.Dimensions, attrs, mapper) if err != nil { msg := fmt.Sprintf("failed to evaluate field '%s' for instance '%s': %v", path+"Dimensions", instName, err) log.Error(msg) return nil, errors.New(msg) } _ = param return &samplereport.Instance{ Name: instName, Value: Value, Dimensions: Dimensions, }, nil } var instances []*samplereport.Instance for instName, inst := range insts { instance, err := BuildTemplate(instName, inst.(*samplereport.InstanceParam), "") if err != nil { return err } instances = append(instances, instance) } if err := handler.(samplereport.Handler).HandleSampleReport(ctx, instances); err != nil { return fmt.Errorf("failed to report all values: %v", err) } return nil }, DispatchReport: func(ctx context.Context, handler adapter.Handler, inst []interface{}) error { instances := make([]*samplereport.Instance, len(inst)) for i, instance := range inst { instances[i] = instance.(*samplereport.Instance) } if err := handler.(samplereport.Handler).HandleSampleReport(ctx, instances); err != nil { return fmt.Errorf("failed to report all values: %v", err) } return nil }, CreateInstanceBuilder: func(instanceName string, param proto.Message, expb *compiled.ExpressionBuilder) (template.InstanceBuilderFn, error) { if param == nil { return func(attr attribute.Bag) (interface{}, error) { return nil, nil }, nil } builder, errp := newBuilder_samplereport_Template(expb, param.(*samplereport.InstanceParam)) if !errp.IsNil() { return nil, errp.AsCompilationError(instanceName) } return func(attr attribute.Bag) (interface{}, error) { e, errp := builder.build(attr) if !errp.IsNil() { err := errp.AsEvaluationError(instanceName) log.Error(err.Error()) return nil, err } e.Name = instanceName return e, nil }, nil }, }, } )
Functions ¶
This section is empty.
Types ¶
This section is empty.
Directories ¶
Path | Synopsis |
---|---|
Package sampleapa is a generated protocol buffer package.
|
Package sampleapa is a generated protocol buffer package. |
Package samplecheck is a generated protocol buffer package.
|
Package samplecheck is a generated protocol buffer package. |
Package samplereport is a generated protocol buffer package.
|
Package samplereport is a generated protocol buffer package. |
Click to show internal directories.
Click to hide internal directories.