diff --git a/mixer/adapter/model/v1beta1/extensions.pb.go b/mixer/adapter/model/v1beta1/extensions.pb.go index 727cfd16e59..f32ff0ca57f 100644 --- a/mixer/adapter/model/v1beta1/extensions.pb.go +++ b/mixer/adapter/model/v1beta1/extensions.pb.go @@ -4,14 +4,18 @@ /* Package v1beta1 is a generated protocol buffer package. -This package defines the types that are used when creating Mixer templates. `ValueType` defined in this pacakge -is also used by adapters to know the underlying datatype of the instance fields. - It is generated from these files: mixer/adapter/model/v1beta1/extensions.proto + mixer/adapter/model/v1beta1/infrastructure_backend.proto mixer/adapter/model/v1beta1/type.proto It has these top-level messages: + CreateSessionRequest + CreateSessionResponse + ValidateRequest + ValidateResponse + CloseSessionRequest + CloseSessionResponse Value IPAddress Duration diff --git a/mixer/adapter/model/v1beta1/extensions.proto b/mixer/adapter/model/v1beta1/extensions.proto index e037b3256af..5a04b370a72 100644 --- a/mixer/adapter/model/v1beta1/extensions.proto +++ b/mixer/adapter/model/v1beta1/extensions.proto @@ -14,12 +14,6 @@ syntax = "proto3"; -// $title: Mixer Adapter Model -// $overview: Definitions used when creating Mixer templates -// $location: https://istio.io/docs/reference/config/mixer/istio.mixer.adapter.model.v1beta1.html - -// This package defines the types that are used when creating Mixer templates. `ValueType` defined in this pacakge -// is also used by adapters to know the underlying datatype of the instance fields. package istio.mixer.adapter.model.v1beta1; option go_package="istio.io/api/mixer/adapter/model/v1beta1"; diff --git a/mixer/adapter/model/v1beta1/infrastructure_backend.pb.go b/mixer/adapter/model/v1beta1/infrastructure_backend.pb.go new file mode 100644 index 00000000000..d32d82ef3be --- /dev/null +++ b/mixer/adapter/model/v1beta1/infrastructure_backend.pb.go @@ -0,0 +1,1974 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: mixer/adapter/model/v1beta1/infrastructure_backend.proto + +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" +import google_protobuf1 "github.com/gogo/protobuf/types" +import google_rpc "istio.io/gogo-genproto/googleapis/google/rpc" + +import strings "strings" +import reflect "reflect" +import sortkeys "github.com/gogo/protobuf/sortkeys" + +import context "golang.org/x/net/context" +import grpc "google.golang.org/grpc" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// Request message for `CreateSession` method. +type CreateSessionRequest struct { + // Adapter specific configuration. + AdapterConfig *google_protobuf1.Any `protobuf:"bytes,1,opt,name=adapter_config,json=adapterConfig" json:"adapter_config,omitempty"` + // Map of instance names to their template-specific inferred type. + InferredTypes map[string]*google_protobuf1.Any `protobuf:"bytes,2,rep,name=inferred_types,json=inferredTypes" json:"inferred_types,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` +} + +func (m *CreateSessionRequest) Reset() { *m = CreateSessionRequest{} } +func (*CreateSessionRequest) ProtoMessage() {} +func (*CreateSessionRequest) Descriptor() ([]byte, []int) { + return fileDescriptorInfrastructureBackend, []int{0} +} + +func (m *CreateSessionRequest) GetAdapterConfig() *google_protobuf1.Any { + if m != nil { + return m.AdapterConfig + } + return nil +} + +func (m *CreateSessionRequest) GetInferredTypes() map[string]*google_protobuf1.Any { + if m != nil { + return m.InferredTypes + } + return nil +} + +// Response message for `CreateSession` method. +type CreateSessionResponse struct { + // Id of the created session. + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + // The success/failure status of create session call. + Status *google_rpc.Status `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` +} + +func (m *CreateSessionResponse) Reset() { *m = CreateSessionResponse{} } +func (*CreateSessionResponse) ProtoMessage() {} +func (*CreateSessionResponse) Descriptor() ([]byte, []int) { + return fileDescriptorInfrastructureBackend, []int{1} +} + +func (m *CreateSessionResponse) GetSessionId() string { + if m != nil { + return m.SessionId + } + return "" +} + +func (m *CreateSessionResponse) GetStatus() *google_rpc.Status { + if m != nil { + return m.Status + } + return nil +} + +// Request message for `Validate` method. +type ValidateRequest struct { + // Adapter specific configuration. + AdapterConfig *google_protobuf1.Any `protobuf:"bytes,1,opt,name=adapter_config,json=adapterConfig" json:"adapter_config,omitempty"` + // Map of instance names to their template-specific inferred type. + InferredTypes map[string]*google_protobuf1.Any `protobuf:"bytes,2,rep,name=inferred_types,json=inferredTypes" json:"inferred_types,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` +} + +func (m *ValidateRequest) Reset() { *m = ValidateRequest{} } +func (*ValidateRequest) ProtoMessage() {} +func (*ValidateRequest) Descriptor() ([]byte, []int) { + return fileDescriptorInfrastructureBackend, []int{2} +} + +func (m *ValidateRequest) GetAdapterConfig() *google_protobuf1.Any { + if m != nil { + return m.AdapterConfig + } + return nil +} + +func (m *ValidateRequest) GetInferredTypes() map[string]*google_protobuf1.Any { + if m != nil { + return m.InferredTypes + } + return nil +} + +// Response message for `Validate` method. +type ValidateResponse struct { + // The success/failure status of validation call. + Status *google_rpc.Status `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` +} + +func (m *ValidateResponse) Reset() { *m = ValidateResponse{} } +func (*ValidateResponse) ProtoMessage() {} +func (*ValidateResponse) Descriptor() ([]byte, []int) { + return fileDescriptorInfrastructureBackend, []int{3} +} + +func (m *ValidateResponse) GetStatus() *google_rpc.Status { + if m != nil { + return m.Status + } + return nil +} + +// Request message for `CloseSession` method. +type CloseSessionRequest struct { + // Id of the session to be closed. + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` +} + +func (m *CloseSessionRequest) Reset() { *m = CloseSessionRequest{} } +func (*CloseSessionRequest) ProtoMessage() {} +func (*CloseSessionRequest) Descriptor() ([]byte, []int) { + return fileDescriptorInfrastructureBackend, []int{4} +} + +func (m *CloseSessionRequest) GetSessionId() string { + if m != nil { + return m.SessionId + } + return "" +} + +// Response message for `CloseSession` method. +type CloseSessionResponse struct { + // The success/failure status of close session call. + Status *google_rpc.Status `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` +} + +func (m *CloseSessionResponse) Reset() { *m = CloseSessionResponse{} } +func (*CloseSessionResponse) ProtoMessage() {} +func (*CloseSessionResponse) Descriptor() ([]byte, []int) { + return fileDescriptorInfrastructureBackend, []int{5} +} + +func (m *CloseSessionResponse) GetStatus() *google_rpc.Status { + if m != nil { + return m.Status + } + return nil +} + +func init() { + proto.RegisterType((*CreateSessionRequest)(nil), "istio.mixer.adapter.model.v1beta1.CreateSessionRequest") + proto.RegisterType((*CreateSessionResponse)(nil), "istio.mixer.adapter.model.v1beta1.CreateSessionResponse") + proto.RegisterType((*ValidateRequest)(nil), "istio.mixer.adapter.model.v1beta1.ValidateRequest") + proto.RegisterType((*ValidateResponse)(nil), "istio.mixer.adapter.model.v1beta1.ValidateResponse") + proto.RegisterType((*CloseSessionRequest)(nil), "istio.mixer.adapter.model.v1beta1.CloseSessionRequest") + proto.RegisterType((*CloseSessionResponse)(nil), "istio.mixer.adapter.model.v1beta1.CloseSessionResponse") +} +func (this *CreateSessionRequest) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*CreateSessionRequest) + if !ok { + that2, ok := that.(CreateSessionRequest) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.AdapterConfig.Equal(that1.AdapterConfig) { + return false + } + if len(this.InferredTypes) != len(that1.InferredTypes) { + return false + } + for i := range this.InferredTypes { + if !this.InferredTypes[i].Equal(that1.InferredTypes[i]) { + return false + } + } + return true +} +func (this *CreateSessionResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*CreateSessionResponse) + if !ok { + that2, ok := that.(CreateSessionResponse) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.SessionId != that1.SessionId { + return false + } + if !this.Status.Equal(that1.Status) { + return false + } + return true +} +func (this *ValidateRequest) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*ValidateRequest) + if !ok { + that2, ok := that.(ValidateRequest) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.AdapterConfig.Equal(that1.AdapterConfig) { + return false + } + if len(this.InferredTypes) != len(that1.InferredTypes) { + return false + } + for i := range this.InferredTypes { + if !this.InferredTypes[i].Equal(that1.InferredTypes[i]) { + return false + } + } + return true +} +func (this *ValidateResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*ValidateResponse) + if !ok { + that2, ok := that.(ValidateResponse) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.Status.Equal(that1.Status) { + return false + } + return true +} +func (this *CloseSessionRequest) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*CloseSessionRequest) + if !ok { + that2, ok := that.(CloseSessionRequest) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.SessionId != that1.SessionId { + return false + } + return true +} +func (this *CloseSessionResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*CloseSessionResponse) + if !ok { + that2, ok := that.(CloseSessionResponse) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.Status.Equal(that1.Status) { + return false + } + return true +} +func (this *CreateSessionRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 6) + s = append(s, "&v1beta1.CreateSessionRequest{") + if this.AdapterConfig != nil { + s = append(s, "AdapterConfig: "+fmt.Sprintf("%#v", this.AdapterConfig)+",\n") + } + keysForInferredTypes := make([]string, 0, len(this.InferredTypes)) + for k, _ := range this.InferredTypes { + keysForInferredTypes = append(keysForInferredTypes, k) + } + sortkeys.Strings(keysForInferredTypes) + mapStringForInferredTypes := "map[string]*google_protobuf1.Any{" + for _, k := range keysForInferredTypes { + mapStringForInferredTypes += fmt.Sprintf("%#v: %#v,", k, this.InferredTypes[k]) + } + mapStringForInferredTypes += "}" + if this.InferredTypes != nil { + s = append(s, "InferredTypes: "+mapStringForInferredTypes+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *CreateSessionResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 6) + s = append(s, "&v1beta1.CreateSessionResponse{") + s = append(s, "SessionId: "+fmt.Sprintf("%#v", this.SessionId)+",\n") + if this.Status != nil { + s = append(s, "Status: "+fmt.Sprintf("%#v", this.Status)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *ValidateRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 6) + s = append(s, "&v1beta1.ValidateRequest{") + if this.AdapterConfig != nil { + s = append(s, "AdapterConfig: "+fmt.Sprintf("%#v", this.AdapterConfig)+",\n") + } + keysForInferredTypes := make([]string, 0, len(this.InferredTypes)) + for k, _ := range this.InferredTypes { + keysForInferredTypes = append(keysForInferredTypes, k) + } + sortkeys.Strings(keysForInferredTypes) + mapStringForInferredTypes := "map[string]*google_protobuf1.Any{" + for _, k := range keysForInferredTypes { + mapStringForInferredTypes += fmt.Sprintf("%#v: %#v,", k, this.InferredTypes[k]) + } + mapStringForInferredTypes += "}" + if this.InferredTypes != nil { + s = append(s, "InferredTypes: "+mapStringForInferredTypes+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *ValidateResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&v1beta1.ValidateResponse{") + if this.Status != nil { + s = append(s, "Status: "+fmt.Sprintf("%#v", this.Status)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *CloseSessionRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&v1beta1.CloseSessionRequest{") + s = append(s, "SessionId: "+fmt.Sprintf("%#v", this.SessionId)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *CloseSessionResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&v1beta1.CloseSessionResponse{") + if this.Status != nil { + s = append(s, "Status: "+fmt.Sprintf("%#v", this.Status)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func valueToGoStringInfrastructureBackend(v interface{}, typ string) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// Client API for InfrastructureBackend service + +type InfrastructureBackendClient interface { + // Validates the handler configuration along with the template-specific instances that would be routed to that + // handler. The `CreateSession` for a specific handler configuration is invoked only if its associated `Validate` + // call has returned success. + Validate(ctx context.Context, in *ValidateRequest, opts ...grpc.CallOption) (*ValidateResponse, error) + // Creates a session for a given handler configuration and the template-specific instances that would be routed to + // that handler. For every handler configuration, Mixer creates a separate session by invoking `CreateSession` + // on the backend. + // + // `CreateSessionRequest` contains the adapter specific handler configuration and the inferred type information about + // the instances the handler would receive during request processing. + // + // `CreateSession` must return a `session_id` which Mixer uses to invoke template-specific Handle functions during + // request processing. The `session_id` provides the Handle functions a way to retrieve the necessary configuration + // associated with the session. Upon Mixer configuration change, Mixer will re-invoke `CreateSession` for all + // handler configurations whose existing sessions are invalidated or didn't existed. + // + // Backend is allowed to return the same session id if given the same configuration block. + // This would happen when multiple instances of Mixer in a deployment all create sessions with the same configuration. + // Note that given individial instances of Mixer can call `CloseSession`, reusing `session_id` by the backend + // assumes that the backend is doing reference counting. + // + // If the backend couldn't create a session for a specific handler configuration and + // returns non S_OK status, Mixer will not make request-time Handle calls associated with that handler configuration. + CreateSession(ctx context.Context, in *CreateSessionRequest, opts ...grpc.CallOption) (*CreateSessionResponse, error) + // Closes the session associated with the `session_id`. Mixer closes a session when its associated handler + // configuration or the instance configuration changes. Backend is supposed to cleanup all the resources associated + // with the session_id referenced by CloseSessionRequest. + CloseSession(ctx context.Context, in *CloseSessionRequest, opts ...grpc.CallOption) (*CloseSessionResponse, error) +} + +type infrastructureBackendClient struct { + cc *grpc.ClientConn +} + +func NewInfrastructureBackendClient(cc *grpc.ClientConn) InfrastructureBackendClient { + return &infrastructureBackendClient{cc} +} + +func (c *infrastructureBackendClient) Validate(ctx context.Context, in *ValidateRequest, opts ...grpc.CallOption) (*ValidateResponse, error) { + out := new(ValidateResponse) + err := grpc.Invoke(ctx, "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/Validate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *infrastructureBackendClient) CreateSession(ctx context.Context, in *CreateSessionRequest, opts ...grpc.CallOption) (*CreateSessionResponse, error) { + out := new(CreateSessionResponse) + err := grpc.Invoke(ctx, "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/CreateSession", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *infrastructureBackendClient) CloseSession(ctx context.Context, in *CloseSessionRequest, opts ...grpc.CallOption) (*CloseSessionResponse, error) { + out := new(CloseSessionResponse) + err := grpc.Invoke(ctx, "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/CloseSession", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for InfrastructureBackend service + +type InfrastructureBackendServer interface { + // Validates the handler configuration along with the template-specific instances that would be routed to that + // handler. The `CreateSession` for a specific handler configuration is invoked only if its associated `Validate` + // call has returned success. + Validate(context.Context, *ValidateRequest) (*ValidateResponse, error) + // Creates a session for a given handler configuration and the template-specific instances that would be routed to + // that handler. For every handler configuration, Mixer creates a separate session by invoking `CreateSession` + // on the backend. + // + // `CreateSessionRequest` contains the adapter specific handler configuration and the inferred type information about + // the instances the handler would receive during request processing. + // + // `CreateSession` must return a `session_id` which Mixer uses to invoke template-specific Handle functions during + // request processing. The `session_id` provides the Handle functions a way to retrieve the necessary configuration + // associated with the session. Upon Mixer configuration change, Mixer will re-invoke `CreateSession` for all + // handler configurations whose existing sessions are invalidated or didn't existed. + // + // Backend is allowed to return the same session id if given the same configuration block. + // This would happen when multiple instances of Mixer in a deployment all create sessions with the same configuration. + // Note that given individial instances of Mixer can call `CloseSession`, reusing `session_id` by the backend + // assumes that the backend is doing reference counting. + // + // If the backend couldn't create a session for a specific handler configuration and + // returns non S_OK status, Mixer will not make request-time Handle calls associated with that handler configuration. + CreateSession(context.Context, *CreateSessionRequest) (*CreateSessionResponse, error) + // Closes the session associated with the `session_id`. Mixer closes a session when its associated handler + // configuration or the instance configuration changes. Backend is supposed to cleanup all the resources associated + // with the session_id referenced by CloseSessionRequest. + CloseSession(context.Context, *CloseSessionRequest) (*CloseSessionResponse, error) +} + +func RegisterInfrastructureBackendServer(s *grpc.Server, srv InfrastructureBackendServer) { + s.RegisterService(&_InfrastructureBackend_serviceDesc, srv) +} + +func _InfrastructureBackend_Validate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ValidateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InfrastructureBackendServer).Validate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/Validate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InfrastructureBackendServer).Validate(ctx, req.(*ValidateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _InfrastructureBackend_CreateSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateSessionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InfrastructureBackendServer).CreateSession(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/CreateSession", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InfrastructureBackendServer).CreateSession(ctx, req.(*CreateSessionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _InfrastructureBackend_CloseSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CloseSessionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InfrastructureBackendServer).CloseSession(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/CloseSession", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InfrastructureBackendServer).CloseSession(ctx, req.(*CloseSessionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _InfrastructureBackend_serviceDesc = grpc.ServiceDesc{ + ServiceName: "istio.mixer.adapter.model.v1beta1.InfrastructureBackend", + HandlerType: (*InfrastructureBackendServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Validate", + Handler: _InfrastructureBackend_Validate_Handler, + }, + { + MethodName: "CreateSession", + Handler: _InfrastructureBackend_CreateSession_Handler, + }, + { + MethodName: "CloseSession", + Handler: _InfrastructureBackend_CloseSession_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "mixer/adapter/model/v1beta1/infrastructure_backend.proto", +} + +func (m *CreateSessionRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CreateSessionRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.AdapterConfig != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(m.AdapterConfig.Size())) + n1, err := m.AdapterConfig.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + } + if len(m.InferredTypes) > 0 { + for k, _ := range m.InferredTypes { + dAtA[i] = 0x12 + i++ + v := m.InferredTypes[k] + msgSize := 0 + if v != nil { + msgSize = v.Size() + msgSize += 1 + sovInfrastructureBackend(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovInfrastructureBackend(uint64(len(k))) + msgSize + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + if v != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(v.Size())) + n2, err := v.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + } + } + } + return i, nil +} + +func (m *CreateSessionResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CreateSessionResponse) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.SessionId) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(len(m.SessionId))) + i += copy(dAtA[i:], m.SessionId) + } + if m.Status != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + } + return i, nil +} + +func (m *ValidateRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ValidateRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.AdapterConfig != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(m.AdapterConfig.Size())) + n4, err := m.AdapterConfig.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + } + if len(m.InferredTypes) > 0 { + for k, _ := range m.InferredTypes { + dAtA[i] = 0x12 + i++ + v := m.InferredTypes[k] + msgSize := 0 + if v != nil { + msgSize = v.Size() + msgSize += 1 + sovInfrastructureBackend(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovInfrastructureBackend(uint64(len(k))) + msgSize + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + if v != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(v.Size())) + n5, err := v.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + } + } + } + return i, nil +} + +func (m *ValidateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ValidateResponse) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Status != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(m.Status.Size())) + n6, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + return i, nil +} + +func (m *CloseSessionRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CloseSessionRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.SessionId) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(len(m.SessionId))) + i += copy(dAtA[i:], m.SessionId) + } + return i, nil +} + +func (m *CloseSessionResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CloseSessionResponse) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Status != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintInfrastructureBackend(dAtA, i, uint64(m.Status.Size())) + n7, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + return i, nil +} + +func encodeVarintInfrastructureBackend(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *CreateSessionRequest) Size() (n int) { + var l int + _ = l + if m.AdapterConfig != nil { + l = m.AdapterConfig.Size() + n += 1 + l + sovInfrastructureBackend(uint64(l)) + } + if len(m.InferredTypes) > 0 { + for k, v := range m.InferredTypes { + _ = k + _ = v + l = 0 + if v != nil { + l = v.Size() + l += 1 + sovInfrastructureBackend(uint64(l)) + } + mapEntrySize := 1 + len(k) + sovInfrastructureBackend(uint64(len(k))) + l + n += mapEntrySize + 1 + sovInfrastructureBackend(uint64(mapEntrySize)) + } + } + return n +} + +func (m *CreateSessionResponse) Size() (n int) { + var l int + _ = l + l = len(m.SessionId) + if l > 0 { + n += 1 + l + sovInfrastructureBackend(uint64(l)) + } + if m.Status != nil { + l = m.Status.Size() + n += 1 + l + sovInfrastructureBackend(uint64(l)) + } + return n +} + +func (m *ValidateRequest) Size() (n int) { + var l int + _ = l + if m.AdapterConfig != nil { + l = m.AdapterConfig.Size() + n += 1 + l + sovInfrastructureBackend(uint64(l)) + } + if len(m.InferredTypes) > 0 { + for k, v := range m.InferredTypes { + _ = k + _ = v + l = 0 + if v != nil { + l = v.Size() + l += 1 + sovInfrastructureBackend(uint64(l)) + } + mapEntrySize := 1 + len(k) + sovInfrastructureBackend(uint64(len(k))) + l + n += mapEntrySize + 1 + sovInfrastructureBackend(uint64(mapEntrySize)) + } + } + return n +} + +func (m *ValidateResponse) Size() (n int) { + var l int + _ = l + if m.Status != nil { + l = m.Status.Size() + n += 1 + l + sovInfrastructureBackend(uint64(l)) + } + return n +} + +func (m *CloseSessionRequest) Size() (n int) { + var l int + _ = l + l = len(m.SessionId) + if l > 0 { + n += 1 + l + sovInfrastructureBackend(uint64(l)) + } + return n +} + +func (m *CloseSessionResponse) Size() (n int) { + var l int + _ = l + if m.Status != nil { + l = m.Status.Size() + n += 1 + l + sovInfrastructureBackend(uint64(l)) + } + return n +} + +func sovInfrastructureBackend(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozInfrastructureBackend(x uint64) (n int) { + return sovInfrastructureBackend(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *CreateSessionRequest) String() string { + if this == nil { + return "nil" + } + keysForInferredTypes := make([]string, 0, len(this.InferredTypes)) + for k, _ := range this.InferredTypes { + keysForInferredTypes = append(keysForInferredTypes, k) + } + sortkeys.Strings(keysForInferredTypes) + mapStringForInferredTypes := "map[string]*google_protobuf1.Any{" + for _, k := range keysForInferredTypes { + mapStringForInferredTypes += fmt.Sprintf("%v: %v,", k, this.InferredTypes[k]) + } + mapStringForInferredTypes += "}" + s := strings.Join([]string{`&CreateSessionRequest{`, + `AdapterConfig:` + strings.Replace(fmt.Sprintf("%v", this.AdapterConfig), "Any", "google_protobuf1.Any", 1) + `,`, + `InferredTypes:` + mapStringForInferredTypes + `,`, + `}`, + }, "") + return s +} +func (this *CreateSessionResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CreateSessionResponse{`, + `SessionId:` + fmt.Sprintf("%v", this.SessionId) + `,`, + `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "Status", "google_rpc.Status", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ValidateRequest) String() string { + if this == nil { + return "nil" + } + keysForInferredTypes := make([]string, 0, len(this.InferredTypes)) + for k, _ := range this.InferredTypes { + keysForInferredTypes = append(keysForInferredTypes, k) + } + sortkeys.Strings(keysForInferredTypes) + mapStringForInferredTypes := "map[string]*google_protobuf1.Any{" + for _, k := range keysForInferredTypes { + mapStringForInferredTypes += fmt.Sprintf("%v: %v,", k, this.InferredTypes[k]) + } + mapStringForInferredTypes += "}" + s := strings.Join([]string{`&ValidateRequest{`, + `AdapterConfig:` + strings.Replace(fmt.Sprintf("%v", this.AdapterConfig), "Any", "google_protobuf1.Any", 1) + `,`, + `InferredTypes:` + mapStringForInferredTypes + `,`, + `}`, + }, "") + return s +} +func (this *ValidateResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ValidateResponse{`, + `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "Status", "google_rpc.Status", 1) + `,`, + `}`, + }, "") + return s +} +func (this *CloseSessionRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CloseSessionRequest{`, + `SessionId:` + fmt.Sprintf("%v", this.SessionId) + `,`, + `}`, + }, "") + return s +} +func (this *CloseSessionResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CloseSessionResponse{`, + `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "Status", "google_rpc.Status", 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringInfrastructureBackend(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CreateSessionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CreateSessionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AdapterConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AdapterConfig == nil { + m.AdapterConfig = &google_protobuf1.Any{} + } + if err := m.AdapterConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InferredTypes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.InferredTypes == nil { + m.InferredTypes = make(map[string]*google_protobuf1.Any) + } + var mapkey string + var mapvalue *google_protobuf1.Any + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue = &google_protobuf1.Any{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + } else { + iNdEx = entryPreIndex + skippy, err := skipInfrastructureBackend(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthInfrastructureBackend + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.InferredTypes[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipInfrastructureBackend(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthInfrastructureBackend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CreateSessionResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CreateSessionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CreateSessionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SessionId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Status == nil { + m.Status = &google_rpc.Status{} + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipInfrastructureBackend(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthInfrastructureBackend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ValidateRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ValidateRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ValidateRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AdapterConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AdapterConfig == nil { + m.AdapterConfig = &google_protobuf1.Any{} + } + if err := m.AdapterConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InferredTypes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.InferredTypes == nil { + m.InferredTypes = make(map[string]*google_protobuf1.Any) + } + var mapkey string + var mapvalue *google_protobuf1.Any + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue = &google_protobuf1.Any{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + } else { + iNdEx = entryPreIndex + skippy, err := skipInfrastructureBackend(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthInfrastructureBackend + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.InferredTypes[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipInfrastructureBackend(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthInfrastructureBackend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ValidateResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ValidateResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ValidateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Status == nil { + m.Status = &google_rpc.Status{} + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipInfrastructureBackend(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthInfrastructureBackend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CloseSessionRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CloseSessionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CloseSessionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SessionId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipInfrastructureBackend(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthInfrastructureBackend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CloseSessionResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CloseSessionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CloseSessionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthInfrastructureBackend + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Status == nil { + m.Status = &google_rpc.Status{} + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipInfrastructureBackend(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthInfrastructureBackend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipInfrastructureBackend(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthInfrastructureBackend + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowInfrastructureBackend + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipInfrastructureBackend(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthInfrastructureBackend = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowInfrastructureBackend = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("mixer/adapter/model/v1beta1/infrastructure_backend.proto", fileDescriptorInfrastructureBackend) +} + +var fileDescriptorInfrastructureBackend = []byte{ + // 523 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x54, 0x41, 0x6b, 0x13, 0x41, + 0x14, 0xce, 0x24, 0x58, 0xec, 0xd4, 0xd4, 0x32, 0xa6, 0x18, 0x17, 0x1c, 0x6a, 0x4e, 0xa1, 0x87, + 0x59, 0x9a, 0x8a, 0x0d, 0x0a, 0x82, 0x09, 0x3d, 0xc4, 0x63, 0x2a, 0x05, 0xbd, 0x84, 0xc9, 0xee, + 0x4b, 0x18, 0xba, 0xdd, 0xd9, 0xce, 0xcc, 0x16, 0xf7, 0x64, 0xf1, 0x17, 0x88, 0x78, 0xf6, 0xec, + 0x4f, 0xf1, 0xd8, 0xa3, 0x47, 0xb3, 0x5e, 0x3c, 0xf6, 0x27, 0x48, 0x77, 0x27, 0xb4, 0x49, 0x35, + 0xed, 0x8a, 0xe0, 0x6d, 0x99, 0xf7, 0xbe, 0xf7, 0x7d, 0xef, 0x7b, 0xef, 0x2d, 0x6e, 0x1f, 0x8a, + 0xb7, 0xa0, 0x5c, 0xee, 0xf3, 0xc8, 0x80, 0x72, 0x0f, 0xa5, 0x0f, 0x81, 0x7b, 0xbc, 0x35, 0x04, + 0xc3, 0xb7, 0x5c, 0x11, 0x8e, 0x14, 0xd7, 0x46, 0xc5, 0x9e, 0x89, 0x15, 0x0c, 0x86, 0xdc, 0x3b, + 0x80, 0xd0, 0x67, 0x91, 0x92, 0x46, 0x92, 0x47, 0x42, 0x1b, 0x21, 0x59, 0x86, 0x67, 0x16, 0xcf, + 0x32, 0x3c, 0xb3, 0x78, 0xe7, 0xc1, 0x58, 0xca, 0x71, 0x00, 0x6e, 0x06, 0x18, 0xc6, 0x23, 0x97, + 0x87, 0x49, 0x8e, 0x76, 0xee, 0xdb, 0x90, 0x8a, 0x3c, 0x57, 0x1b, 0x6e, 0x62, 0x9d, 0x07, 0x1a, + 0x9f, 0xcb, 0xb8, 0xd6, 0x55, 0xc0, 0x0d, 0xec, 0x81, 0xd6, 0x42, 0x86, 0x7d, 0x38, 0x8a, 0x41, + 0x1b, 0xf2, 0x0c, 0xaf, 0x5a, 0x96, 0x81, 0x27, 0xc3, 0x91, 0x18, 0xd7, 0xd1, 0x06, 0x6a, 0xae, + 0xb4, 0x6a, 0x2c, 0x2f, 0xc5, 0xa6, 0x2c, 0xec, 0x45, 0x98, 0xf4, 0xab, 0x36, 0xb7, 0x9b, 0xa5, + 0x92, 0x23, 0xbc, 0x2a, 0xc2, 0x11, 0x28, 0x05, 0xfe, 0xc0, 0x24, 0x11, 0xe8, 0x7a, 0x79, 0xa3, + 0xd2, 0x5c, 0x69, 0xbd, 0x64, 0xd7, 0x76, 0xc1, 0x7e, 0xa7, 0x86, 0xf5, 0x6c, 0xb5, 0x57, 0xe7, + 0xc5, 0x76, 0x43, 0xa3, 0x92, 0x7e, 0x55, 0x5c, 0x7e, 0x73, 0xf6, 0x31, 0xb9, 0x9a, 0x44, 0xd6, + 0x70, 0xe5, 0x00, 0x92, 0x4c, 0xfa, 0x72, 0xff, 0xfc, 0x93, 0x6c, 0xe2, 0x5b, 0xc7, 0x3c, 0x88, + 0xa1, 0x5e, 0x5e, 0xd0, 0x4e, 0x9e, 0xf2, 0xb4, 0xdc, 0x46, 0x8d, 0x21, 0x5e, 0x9f, 0x53, 0xa4, + 0x23, 0x19, 0x6a, 0x20, 0x0f, 0x31, 0xd6, 0xf9, 0xd3, 0x40, 0xf8, 0x96, 0x61, 0xd9, 0xbe, 0xf4, + 0x7c, 0xb2, 0x89, 0x97, 0x72, 0xa3, 0x2d, 0x11, 0x99, 0x12, 0xa9, 0xc8, 0x63, 0x7b, 0x59, 0xa4, + 0x6f, 0x33, 0x1a, 0x9f, 0xca, 0xf8, 0xee, 0x3e, 0x0f, 0x84, 0xcf, 0x0d, 0xfc, 0x13, 0xff, 0x83, + 0x3f, 0xf8, 0xbf, 0x7b, 0x03, 0xff, 0xe7, 0x84, 0xfc, 0x47, 0xeb, 0x9f, 0xe3, 0xb5, 0x0b, 0x31, + 0xd6, 0xf5, 0x0b, 0x5b, 0xd1, 0xb5, 0xb6, 0x3e, 0xc6, 0xf7, 0xba, 0x81, 0xd4, 0xf3, 0x9b, 0xbd, + 0x78, 0x70, 0x8d, 0x0e, 0xae, 0xcd, 0xa2, 0x8a, 0x33, 0xb7, 0x3e, 0x56, 0xf0, 0x7a, 0x6f, 0xe6, + 0x9a, 0x3b, 0xf9, 0x31, 0x13, 0x8d, 0x6f, 0x4f, 0x7b, 0x22, 0xad, 0xe2, 0xd3, 0x70, 0xb6, 0x0b, + 0x61, 0xac, 0xf4, 0xf7, 0x08, 0x57, 0x67, 0x96, 0x98, 0xec, 0xfc, 0xe5, 0x21, 0x3a, 0xed, 0xe2, + 0x40, 0x2b, 0xe2, 0x1d, 0xbe, 0x73, 0xd9, 0x57, 0xf2, 0xe4, 0x26, 0x95, 0xae, 0x8e, 0xcf, 0xd9, + 0x29, 0x8c, 0xcb, 0x05, 0x74, 0x5e, 0x9f, 0x4e, 0x68, 0xe9, 0xdb, 0x84, 0x96, 0xce, 0x26, 0x14, + 0x9d, 0xa4, 0x14, 0x7d, 0x49, 0x29, 0xfa, 0x9a, 0x52, 0x74, 0x9a, 0x52, 0xf4, 0x3d, 0xa5, 0xe8, + 0x67, 0x4a, 0x4b, 0x67, 0x29, 0x45, 0x1f, 0x7e, 0xd0, 0xd2, 0x9b, 0x66, 0xce, 0x22, 0xa4, 0xcb, + 0x23, 0xe1, 0x2e, 0xf8, 0x6d, 0x9f, 0x20, 0x34, 0x5c, 0xca, 0x56, 0x78, 0xfb, 0x57, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x07, 0x94, 0xef, 0x33, 0xdf, 0x05, 0x00, 0x00, +} diff --git a/mixer/adapter/model/v1beta1/infrastructure_backend.proto b/mixer/adapter/model/v1beta1/infrastructure_backend.proto new file mode 100644 index 00000000000..a3d112d93a2 --- /dev/null +++ b/mixer/adapter/model/v1beta1/infrastructure_backend.proto @@ -0,0 +1,116 @@ +// Copyright 2018 Istio Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +// $title: Mixer Adapter Model +// $overview: Definitions used to create adapters and templates +// $location: https://istio.io/docs/reference/config/mixer/istio.mixer.adapter.model.v1beta1.html + +// This package defines the service and types used by adapter code to serve requests from Mixer. +// This package also defines the types that are used to create Mixer templates. +package istio.mixer.adapter.model.v1beta1; + +option go_package="istio.io/api/mixer/adapter/model/v1beta1"; +option cc_generic_services = true; + +import "google/protobuf/any.proto"; +import "google/rpc/status.proto"; + +// `InfrastructureBackend` is implemented by backends that wants to provide telemetry and policy functionality to Mixer as an +// out of process adapter. +// +// `InfrastructureBackend` allows Mixer and the backends to have a session based model. In a session based model, Mixer passes +// the relevant configuration state to the backend only once and estabilshes a session using a session identifier. +// All future communications between Mixer and the backend uses the session identifier which refers to the previously +// passed in configuration data. +// +// For a given `InfrastructureBackend`, Mixer calls the `Validate` function, followed by `CreateSession`. The `session_id` +// returned from `CreateSession` is used to make subsequent request-time Handle calls and the eventual `CloseSession` function. +// Mixer assumes that, given the `session_id`, the backend can retrieve the necessary context to serve the +// Handle calls that contains the request-time payload (template-specific instance protobuf). +service InfrastructureBackend { + // Validates the handler configuration along with the template-specific instances that would be routed to that + // handler. The `CreateSession` for a specific handler configuration is invoked only if its associated `Validate` + // call has returned success. + rpc Validate(ValidateRequest) returns (ValidateResponse); + + // Creates a session for a given handler configuration and the template-specific instances that would be routed to + // that handler. For every handler configuration, Mixer creates a separate session by invoking `CreateSession` + // on the backend. + // + // `CreateSessionRequest` contains the adapter specific handler configuration and the inferred type information about + // the instances the handler would receive during request processing. + // + // `CreateSession` must return a `session_id` which Mixer uses to invoke template-specific Handle functions during + // request processing. The `session_id` provides the Handle functions a way to retrieve the necessary configuration + // associated with the session. Upon Mixer configuration change, Mixer will re-invoke `CreateSession` for all + // handler configurations whose existing sessions are invalidated or didn't existed. + // + // Backend is allowed to return the same session id if given the same configuration block. + // This would happen when multiple instances of Mixer in a deployment all create sessions with the same configuration. + // Note that given individial instances of Mixer can call `CloseSession`, reusing `session_id` by the backend + // assumes that the backend is doing reference counting. + // + // If the backend couldn't create a session for a specific handler configuration and + // returns non S_OK status, Mixer will not make request-time Handle calls associated with that handler configuration. + rpc CreateSession(CreateSessionRequest) returns (CreateSessionResponse); + + // Closes the session associated with the `session_id`. Mixer closes a session when its associated handler + // configuration or the instance configuration changes. Backend is supposed to cleanup all the resources associated + // with the session_id referenced by CloseSessionRequest. + rpc CloseSession(CloseSessionRequest) returns (CloseSessionResponse); +} + +// Request message for `CreateSession` method. +message CreateSessionRequest { + // Adapter specific configuration. + google.protobuf.Any adapter_config = 1; + // Map of instance names to their template-specific inferred type. + map inferred_types = 2; +} + +// Response message for `CreateSession` method. +message CreateSessionResponse { + // Id of the created session. + string session_id = 1; + // The success/failure status of create session call. + google.rpc.Status status = 2; +} + +// Request message for `Validate` method. +message ValidateRequest { + // Adapter specific configuration. + google.protobuf.Any adapter_config = 1; + // Map of instance names to their template-specific inferred type. + map inferred_types = 2; +} + +// Response message for `Validate` method. +message ValidateResponse { + // The success/failure status of validation call. + google.rpc.Status status = 1; +} + +// Request message for `CloseSession` method. +message CloseSessionRequest { + // Id of the session to be closed. + string session_id = 1; +} + +// Response message for `CloseSession` method. +message CloseSessionResponse { + // The success/failure status of close session call. + google.rpc.Status status = 1; +} diff --git a/mixer/adapter/model/v1beta1/istio.mixer.adapter.model.v1beta1.pb.html b/mixer/adapter/model/v1beta1/istio.mixer.adapter.model.v1beta1.pb.html index ecd9c9eb80d..706c0876c0f 100644 --- a/mixer/adapter/model/v1beta1/istio.mixer.adapter.model.v1beta1.pb.html +++ b/mixer/adapter/model/v1beta1/istio.mixer.adapter.model.v1beta1.pb.html @@ -1,35 +1,199 @@ --- title: Mixer Adapter Model -overview: Definitions used when creating Mixer templates +overview: Definitions used to create adapters and templates location: https://istio.io/docs/reference/config/mixer/istio.mixer.adapter.model.v1beta1.html layout: protoc-gen-docs -number_of_entries: 8 +number_of_entries: 16 --- -

This package defines the types that are used when creating Mixer templates. ValueType defined in this pacakge -is also used by adapters to know the underlying datatype of the instance fields.

+

This package defines the service and types used by adapter code to serve requests from Mixer. +This package also defines the types that are used to create Mixer templates.

-

DNSName

+

Services

+

InfrastructureBackend

+
+

InfrastructureBackend is implemented by backends that wants to provide telemetry and policy functionality to Mixer as an +out of process adapter.

+ +

InfrastructureBackend allows Mixer and the backends to have a session based model. In a session based model, Mixer passes +the relevant configuration state to the backend only once and estabilshes a session using a session identifier. +All future communications between Mixer and the backend uses the session identifier which refers to the previously +passed in configuration data.

+ +

For a given InfrastructureBackend, Mixer calls the Validate function, followed by CreateSession. The session_id +returned from CreateSession is used to make subsequent request-time Handle calls and the eventual CloseSession function. +Mixer assumes that, given the session_id, the backend can retrieve the necessary context to serve the +Handle calls that contains the request-time payload (template-specific instance protobuf).

+ +
rpc Validate(ValidateRequest) returns (ValidateResponse)
+
+

Validates the handler configuration along with the template-specific instances that would be routed to that +handler. The CreateSession for a specific handler configuration is invoked only if its associated Validate +call has returned success.

+ +
rpc CreateSession(CreateSessionRequest) returns (CreateSessionResponse)
+
+

Creates a session for a given handler configuration and the template-specific instances that would be routed to +that handler. For every handler configuration, Mixer creates a separate session by invoking CreateSession +on the backend.

+ +

CreateSessionRequest contains the adapter specific handler configuration and the inferred type information about +the instances the handler would receive during request processing.

+ +

CreateSession must return a session_id which Mixer uses to invoke template-specific Handle functions during +request processing. The session_id provides the Handle functions a way to retrieve the necessary configuration +associated with the session. Upon Mixer configuration change, Mixer will re-invoke CreateSession for all +handler configurations whose existing sessions are invalidated or didn’t existed.

+ +

Backend is allowed to return the same session id if given the same configuration block. +This would happen when multiple instances of Mixer in a deployment all create sessions with the same configuration. +Note that given individial instances of Mixer can call CloseSession, reusing session_id by the backend +assumes that the backend is doing reference counting.

+ +

If the backend couldn’t create a session for a specific handler configuration and +returns non S_OK status, Mixer will not make request-time Handle calls associated with that handler configuration.

+ +
rpc CloseSession(CloseSessionRequest) returns (CloseSessionResponse)
+
+

Closes the session associated with the session_id. Mixer closes a session when its associated handler +configuration or the instance configuration changes. Backend is supposed to cleanup all the resources associated +with the session_id referenced by CloseSessionRequest.

+ +
+

Types

+

CloseSessionRequest

+
+

Request message for CloseSession method.

+ + + + + + + + + + + + + + + + +
FieldTypeDescription
sessionIdstring +

Id of the session to be closed.

+ +
+
+

CloseSessionResponse

+
+

Response message for CloseSession method.

+ + + + + + + + + + + + + + + + +
FieldTypeDescription
statusgoogle.rpc.Status +

The success/failure status of close session call.

+ +
+
+

CreateSessionRequest

+
+

Request message for CreateSession method.

+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
adapterConfiggoogle.protobuf.Any +

Adapter specific configuration.

+ +
inferredTypesmap<string, google.protobuf.Any> +

Map of instance names to their template-specific inferred type.

+ +
+
+

CreateSessionResponse

+
+

Response message for CreateSession method.

+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
sessionIdstring +

Id of the created session.

+ +
statusgoogle.rpc.Status +

The success/failure status of create session call.

+ +
+
+

DNSName

DNSName is used inside templates for fields that are of ValueType “DNS_NAME”

-

Duration

+

Duration

Duration is used inside templates for fields that are of ValueType “DURATION”

-

EmailAddress

+

EmailAddress

EmailAddress is used inside templates for fields that are of ValueType “EMAIL_ADDRESS” DO NOT USE !! Under Development

-

IPAddress

+

IPAddress

IPAddress is used inside templates for fields that are of ValueType “IP_ADDRESS”

-

TemplateVariety

+

TemplateVariety

The available varieties of templates, controlling the semantics of what an adapter does with each instance.

@@ -72,20 +236,174 @@

TemplateVariety

-

TimeStamp

+

TimeStamp

TimeStamp is used inside templates for fields that are of ValueType “TIMESTAMP”

-

Uri

+

Uri

Uri is used inside templates for fields that are of ValueType “URI” DO NOT USE ! Under Development

-

Value

+

ValidateRequest

+
+

Request message for Validate method.

+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
adapterConfiggoogle.protobuf.Any +

Adapter specific configuration.

+ +
inferredTypesmap<string, google.protobuf.Any> +

Map of instance names to their template-specific inferred type.

+ +
+
+

ValidateResponse

+
+

Response message for Validate method.

+ + + + + + + + + + + + + + + + +
FieldTypeDescription
statusgoogle.rpc.Status +

The success/failure status of validation call.

+ +
+
+

Value

Value is used inside templates for fields that have dynamic types. The actual datatype of the field depends on the datatype of the expression used in the operator configuration.

+

google.rpc.Status

+
+

The Status type defines a logical error model that is suitable for different +programming environments, including REST APIs and RPC APIs. It is used by +gRPC. The error model is designed to be:

+ +
    +
  • Simple to use and understand for most users
  • +
  • Flexible enough to meet unexpected needs
  • +
+ +

Overview

+ +

The Status message contains three pieces of data: error code, error message, +and error details. The error code should be an enum value of +google.rpc.Code, but it may accept additional error codes if needed. The +error message should be a developer-facing English message that helps +developers understand and resolve the error. If a localized user-facing +error message is needed, put the localized message in the error details or +localize it in the client. The optional error details may contain arbitrary +information about the error. There is a predefined set of error detail types +in the package google.rpc that can be used for common error conditions.

+ +

Language mapping

+ +

The Status message is the logical representation of the error model, but it +is not necessarily the actual wire format. When the Status message is +exposed in different client libraries and different wire protocols, it can be +mapped differently. For example, it will likely be mapped to some exceptions +in Java, but more likely mapped to some error codes in C.

+ +

Other uses

+ +

The error model and the Status message can be used in a variety of +environments, either with or without APIs, to provide a +consistent developer experience across different environments.

+ +

Example uses of this error model include:

+ +
    +
  • Partial errors. If a service needs to return partial errors to the client, +it may embed the Status in the normal response to indicate the partial +errors.

  • + +
  • Workflow errors. A typical workflow has multiple steps. Each step may +have a Status message for error reporting.

  • + +
  • Batch operations. If a client uses batch request and batch response, the +Status message should be used directly inside batch response, one for +each error sub-response.

  • + +
  • Asynchronous operations. If an API call embeds asynchronous operation +results in its response, the status of those operations should be +represented directly using the Status message.

  • + +
  • Logging. If some API errors are stored in logs, the message Status could +be used directly after any stripping needed for security/privacy reasons.

  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
codeint32 +

The status code, which should be an enum value of google.rpc.Code.

+ +
messagestring +

A developer-facing error message, which should be in English. Any +user-facing error message should be localized and sent in the +google.rpc.Status.details field, or localized by the client.

+ +
detailsgoogle.protobuf.Any[] +

A list of messages that carry the error details. There is a common set of +message types for APIs to use.

+ +
+