From 3f4c3d9cc9411e43e9b9807274285c4e858b2e29 Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Thu, 27 Jul 2017 13:43:22 -0700 Subject: [PATCH 01/24] Add base data types --- pkg/types/BUILD.bazel | 17 + pkg/types/invocationevent/BUILD.bazel | 8 + pkg/types/invocationevent/invocationevent.go | 15 + pkg/types/types.pb.go | 374 +++++++++++++++++++ pkg/types/types.proto | 72 ++++ pkg/util/util.go | 1 + pkg/version/BUILD.bazel | 7 + pkg/version/version.go | 3 + 8 files changed, 497 insertions(+) create mode 100644 pkg/types/BUILD.bazel create mode 100644 pkg/types/invocationevent/BUILD.bazel create mode 100644 pkg/types/invocationevent/invocationevent.go create mode 100644 pkg/types/types.pb.go create mode 100644 pkg/types/types.proto create mode 100644 pkg/util/util.go create mode 100644 pkg/version/BUILD.bazel create mode 100644 pkg/version/version.go diff --git a/pkg/types/BUILD.bazel b/pkg/types/BUILD.bazel new file mode 100644 index 00000000..55fed719 --- /dev/null +++ b/pkg/types/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["types.pb.go"], + visibility = ["//visibility:public"], + deps = [ + "//vendor/github.com/golang/protobuf/proto:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes/timestamp:go_default_library", + ], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["types.proto"], + visibility = ["//visibility:public"], +) diff --git a/pkg/types/invocationevent/BUILD.bazel b/pkg/types/invocationevent/BUILD.bazel new file mode 100644 index 00000000..f41c55f0 --- /dev/null +++ b/pkg/types/invocationevent/BUILD.bazel @@ -0,0 +1,8 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["invocationevent.go"], + visibility = ["//visibility:public"], + deps = ["//pkg/types:go_default_library"], +) diff --git a/pkg/types/invocationevent/invocationevent.go b/pkg/types/invocationevent/invocationevent.go new file mode 100644 index 00000000..5930511f --- /dev/null +++ b/pkg/types/invocationevent/invocationevent.go @@ -0,0 +1,15 @@ +package invocationevent + +import ( + "fmt" + "github.com/fission/fission-workflow/pkg/types" +) + +// Parse attempts to convert a string-based flag to the appropriate InvocationEvent. +func Parse(flag string) (types.InvocationEvent, error) { + val, ok := types.InvocationEvent_value[flag] + if !ok { + return 0, fmt.Errorf("Unknown InvocationEvent '%s'", flag) + } + return types.InvocationEvent(val), nil +} diff --git a/pkg/types/types.pb.go b/pkg/types/types.pb.go new file mode 100644 index 00000000..3cf8d458 --- /dev/null +++ b/pkg/types/types.pb.go @@ -0,0 +1,374 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: pkg/types/types.proto + +/* +Package types is a generated protocol buffer package. + +It is generated from these files: + pkg/types/types.proto + +It has these top-level messages: + Workflow + WorkflowInvocation + Empty + WorkflowInvocationSpec + WorkflowInvocationStatus + WorkflowInvocationContainer +*/ +package types + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type WorkflowEvents int32 + +const ( + WorkflowEvents_WORKFLOW_CREATED WorkflowEvents = 0 + WorkflowEvents_WORKFLOW_UPDATED WorkflowEvents = 1 + WorkflowEvents_WORKFLOW_DELETED WorkflowEvents = 2 +) + +var WorkflowEvents_name = map[int32]string{ + 0: "WORKFLOW_CREATED", + 1: "WORKFLOW_UPDATED", + 2: "WORKFLOW_DELETED", +} +var WorkflowEvents_value = map[string]int32{ + "WORKFLOW_CREATED": 0, + "WORKFLOW_UPDATED": 1, + "WORKFLOW_DELETED": 2, +} + +func (x WorkflowEvents) String() string { + return proto.EnumName(WorkflowEvents_name, int32(x)) +} +func (WorkflowEvents) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +type InvocationEvent int32 + +const ( + InvocationEvent_TASK_STARTED InvocationEvent = 0 + InvocationEvent_TASK_SKIPPED InvocationEvent = 1 + InvocationEvent_TASK_HEARTBEAT InvocationEvent = 2 + InvocationEvent_TASK_SUCCEEDED InvocationEvent = 3 + InvocationEvent_TASK_FAILED InvocationEvent = 4 + InvocationEvent_TASK_ABORTED InvocationEvent = 5 + InvocationEvent_INVOCATION_CREATED InvocationEvent = 6 + InvocationEvent_INVOCATION_COMPLETED InvocationEvent = 7 + InvocationEvent_INVOCATION_CANCELED InvocationEvent = 8 +) + +var InvocationEvent_name = map[int32]string{ + 0: "TASK_STARTED", + 1: "TASK_SKIPPED", + 2: "TASK_HEARTBEAT", + 3: "TASK_SUCCEEDED", + 4: "TASK_FAILED", + 5: "TASK_ABORTED", + 6: "INVOCATION_CREATED", + 7: "INVOCATION_COMPLETED", + 8: "INVOCATION_CANCELED", +} +var InvocationEvent_value = map[string]int32{ + "TASK_STARTED": 0, + "TASK_SKIPPED": 1, + "TASK_HEARTBEAT": 2, + "TASK_SUCCEEDED": 3, + "TASK_FAILED": 4, + "TASK_ABORTED": 5, + "INVOCATION_CREATED": 6, + "INVOCATION_COMPLETED": 7, + "INVOCATION_CANCELED": 8, +} + +func (x InvocationEvent) String() string { + return proto.EnumName(InvocationEvent_name, int32(x)) +} +func (InvocationEvent) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +type WorkflowInvocation_Status int32 + +const ( + WorkflowInvocation_UNKNOWN WorkflowInvocation_Status = 0 + WorkflowInvocation_SCHEDULED WorkflowInvocation_Status = 1 + WorkflowInvocation_IN_PROGRESS WorkflowInvocation_Status = 2 + WorkflowInvocation_SUCCEEDED WorkflowInvocation_Status = 3 + WorkflowInvocation_FAILED WorkflowInvocation_Status = 4 + WorkflowInvocation_ABORTED WorkflowInvocation_Status = 5 +) + +var WorkflowInvocation_Status_name = map[int32]string{ + 0: "UNKNOWN", + 1: "SCHEDULED", + 2: "IN_PROGRESS", + 3: "SUCCEEDED", + 4: "FAILED", + 5: "ABORTED", +} +var WorkflowInvocation_Status_value = map[string]int32{ + "UNKNOWN": 0, + "SCHEDULED": 1, + "IN_PROGRESS": 2, + "SUCCEEDED": 3, + "FAILED": 4, + "ABORTED": 5, +} + +func (x WorkflowInvocation_Status) String() string { + return proto.EnumName(WorkflowInvocation_Status_name, int32(x)) +} +func (WorkflowInvocation_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } + +type WorkflowInvocationStatus_Status int32 + +const ( + WorkflowInvocationStatus_UNKNOWN WorkflowInvocationStatus_Status = 0 + WorkflowInvocationStatus_SCHEDULED WorkflowInvocationStatus_Status = 1 + WorkflowInvocationStatus_IN_PROGRESS WorkflowInvocationStatus_Status = 2 + WorkflowInvocationStatus_SUCCEEDED WorkflowInvocationStatus_Status = 3 + WorkflowInvocationStatus_FAILED WorkflowInvocationStatus_Status = 4 + WorkflowInvocationStatus_ABORTED WorkflowInvocationStatus_Status = 5 +) + +var WorkflowInvocationStatus_Status_name = map[int32]string{ + 0: "UNKNOWN", + 1: "SCHEDULED", + 2: "IN_PROGRESS", + 3: "SUCCEEDED", + 4: "FAILED", + 5: "ABORTED", +} +var WorkflowInvocationStatus_Status_value = map[string]int32{ + "UNKNOWN": 0, + "SCHEDULED": 1, + "IN_PROGRESS": 2, + "SUCCEEDED": 3, + "FAILED": 4, + "ABORTED": 5, +} + +func (x WorkflowInvocationStatus_Status) String() string { + return proto.EnumName(WorkflowInvocationStatus_Status_name, int32(x)) +} +func (WorkflowInvocationStatus_Status) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{4, 0} +} + +type Workflow struct { + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"` +} + +func (m *Workflow) Reset() { *m = Workflow{} } +func (m *Workflow) String() string { return proto.CompactTextString(m) } +func (*Workflow) ProtoMessage() {} +func (*Workflow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *Workflow) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *Workflow) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Workflow) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +type WorkflowInvocation struct { + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + WorkflowId string `protobuf:"bytes,2,opt,name=workflowId" json:"workflowId,omitempty"` + Status WorkflowInvocation_Status `protobuf:"varint,3,opt,name=status,enum=WorkflowInvocation_Status" json:"status,omitempty"` +} + +func (m *WorkflowInvocation) Reset() { *m = WorkflowInvocation{} } +func (m *WorkflowInvocation) String() string { return proto.CompactTextString(m) } +func (*WorkflowInvocation) ProtoMessage() {} +func (*WorkflowInvocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *WorkflowInvocation) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *WorkflowInvocation) GetWorkflowId() string { + if m != nil { + return m.WorkflowId + } + return "" +} + +func (m *WorkflowInvocation) GetStatus() WorkflowInvocation_Status { + if m != nil { + return m.Status + } + return WorkflowInvocation_UNKNOWN +} + +// Util +type Empty struct { +} + +func (m *Empty) Reset() { *m = Empty{} } +func (m *Empty) String() string { return proto.CompactTextString(m) } +func (*Empty) ProtoMessage() {} +func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +type WorkflowInvocationSpec struct { + WorkflowId string `protobuf:"bytes,2,opt,name=workflowId" json:"workflowId,omitempty"` +} + +func (m *WorkflowInvocationSpec) Reset() { *m = WorkflowInvocationSpec{} } +func (m *WorkflowInvocationSpec) String() string { return proto.CompactTextString(m) } +func (*WorkflowInvocationSpec) ProtoMessage() {} +func (*WorkflowInvocationSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +func (m *WorkflowInvocationSpec) GetWorkflowId() string { + if m != nil { + return m.WorkflowId + } + return "" +} + +type WorkflowInvocationStatus struct { + Status WorkflowInvocationStatus_Status `protobuf:"varint,1,opt,name=status,enum=WorkflowInvocationStatus_Status" json:"status,omitempty"` + UpdatedAt *google_protobuf.Timestamp `protobuf:"bytes,2,opt,name=updatedAt" json:"updatedAt,omitempty"` + CreatedAt *google_protobuf.Timestamp `protobuf:"bytes,3,opt,name=createdAt" json:"createdAt,omitempty"` +} + +func (m *WorkflowInvocationStatus) Reset() { *m = WorkflowInvocationStatus{} } +func (m *WorkflowInvocationStatus) String() string { return proto.CompactTextString(m) } +func (*WorkflowInvocationStatus) ProtoMessage() {} +func (*WorkflowInvocationStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +func (m *WorkflowInvocationStatus) GetStatus() WorkflowInvocationStatus_Status { + if m != nil { + return m.Status + } + return WorkflowInvocationStatus_UNKNOWN +} + +func (m *WorkflowInvocationStatus) GetUpdatedAt() *google_protobuf.Timestamp { + if m != nil { + return m.UpdatedAt + } + return nil +} + +func (m *WorkflowInvocationStatus) GetCreatedAt() *google_protobuf.Timestamp { + if m != nil { + return m.CreatedAt + } + return nil +} + +type WorkflowInvocationContainer struct { + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + Spec *WorkflowInvocationSpec `protobuf:"bytes,2,opt,name=spec" json:"spec,omitempty"` + Status *WorkflowInvocationStatus `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"` +} + +func (m *WorkflowInvocationContainer) Reset() { *m = WorkflowInvocationContainer{} } +func (m *WorkflowInvocationContainer) String() string { return proto.CompactTextString(m) } +func (*WorkflowInvocationContainer) ProtoMessage() {} +func (*WorkflowInvocationContainer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func (m *WorkflowInvocationContainer) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *WorkflowInvocationContainer) GetSpec() *WorkflowInvocationSpec { + if m != nil { + return m.Spec + } + return nil +} + +func (m *WorkflowInvocationContainer) GetStatus() *WorkflowInvocationStatus { + if m != nil { + return m.Status + } + return nil +} + +func init() { + proto.RegisterType((*Workflow)(nil), "Workflow") + proto.RegisterType((*WorkflowInvocation)(nil), "WorkflowInvocation") + proto.RegisterType((*Empty)(nil), "Empty") + proto.RegisterType((*WorkflowInvocationSpec)(nil), "WorkflowInvocationSpec") + proto.RegisterType((*WorkflowInvocationStatus)(nil), "WorkflowInvocationStatus") + proto.RegisterType((*WorkflowInvocationContainer)(nil), "WorkflowInvocationContainer") + proto.RegisterEnum("WorkflowEvents", WorkflowEvents_name, WorkflowEvents_value) + proto.RegisterEnum("InvocationEvent", InvocationEvent_name, InvocationEvent_value) + proto.RegisterEnum("WorkflowInvocation_Status", WorkflowInvocation_Status_name, WorkflowInvocation_Status_value) + proto.RegisterEnum("WorkflowInvocationStatus_Status", WorkflowInvocationStatus_Status_name, WorkflowInvocationStatus_Status_value) +} + +func init() { proto.RegisterFile("pkg/types/types.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 531 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x92, 0x41, 0x6e, 0xda, 0x40, + 0x14, 0x86, 0x63, 0x43, 0x20, 0x3c, 0x5a, 0xb0, 0xa6, 0x69, 0xe2, 0x52, 0xa9, 0x8d, 0xbc, 0xaa, + 0x52, 0xc9, 0xa8, 0x74, 0xc3, 0xd6, 0xb1, 0x27, 0xc5, 0x82, 0xda, 0x68, 0x6c, 0xca, 0xaa, 0x42, + 0x0e, 0x4c, 0x90, 0x95, 0xe0, 0xb1, 0xf0, 0x40, 0x94, 0x43, 0xf4, 0x1c, 0x3d, 0x4c, 0x0f, 0xd0, + 0xeb, 0x54, 0x1e, 0x63, 0x07, 0x4a, 0xa2, 0xac, 0xb2, 0x41, 0xf8, 0x9b, 0xff, 0xfd, 0xf3, 0xfe, + 0xf7, 0x06, 0xde, 0xc6, 0x37, 0xf3, 0x36, 0xbf, 0x8f, 0x69, 0x92, 0xfd, 0xea, 0xf1, 0x92, 0x71, + 0xd6, 0xfa, 0x38, 0x67, 0x6c, 0x7e, 0x4b, 0xdb, 0xe2, 0xeb, 0x6a, 0x75, 0xdd, 0xe6, 0xe1, 0x82, + 0x26, 0x3c, 0x58, 0xc4, 0x99, 0x40, 0xeb, 0xc1, 0xd1, 0x98, 0x2d, 0x6f, 0xae, 0x6f, 0xd9, 0x1d, + 0x6a, 0x80, 0x1c, 0xce, 0x54, 0xe9, 0x4c, 0xfa, 0x54, 0x23, 0x72, 0x38, 0x43, 0x08, 0xca, 0x51, + 0xb0, 0xa0, 0xaa, 0x2c, 0x88, 0xf8, 0x8f, 0x54, 0xa8, 0xae, 0xe9, 0x32, 0x09, 0x59, 0xa4, 0x96, + 0x04, 0xce, 0x3f, 0xb5, 0xbf, 0x12, 0xa0, 0xdc, 0xca, 0x8e, 0xd6, 0x6c, 0x1a, 0xf0, 0x90, 0x45, + 0x7b, 0xa6, 0x1f, 0x00, 0xee, 0x72, 0xd5, 0x6c, 0x63, 0xbd, 0x45, 0x50, 0x07, 0x2a, 0x09, 0x0f, + 0xf8, 0x2a, 0x11, 0xfe, 0x8d, 0x4e, 0x4b, 0xdf, 0x37, 0xd5, 0x3d, 0xa1, 0x20, 0x1b, 0xa5, 0xf6, + 0x13, 0x2a, 0x19, 0x41, 0x75, 0xa8, 0x8e, 0x9c, 0xbe, 0xe3, 0x8e, 0x1d, 0xe5, 0x00, 0xbd, 0x86, + 0x9a, 0x67, 0xf6, 0xb0, 0x35, 0x1a, 0x60, 0x4b, 0x91, 0x50, 0x13, 0xea, 0xb6, 0x33, 0x19, 0x12, + 0xf7, 0x1b, 0xc1, 0x9e, 0xa7, 0xc8, 0xe2, 0x7c, 0x64, 0x9a, 0x18, 0x5b, 0xd8, 0x52, 0x4a, 0x08, + 0xa0, 0x72, 0x69, 0xd8, 0xa9, 0xb6, 0x9c, 0xfa, 0x18, 0x17, 0x2e, 0xf1, 0xb1, 0xa5, 0x1c, 0x6a, + 0x55, 0x38, 0xc4, 0x8b, 0x98, 0xdf, 0x6b, 0x5d, 0x38, 0xd9, 0x6f, 0xc6, 0x8b, 0xe9, 0xf4, 0xb9, + 0x54, 0xda, 0x6f, 0x19, 0xd4, 0x47, 0x4a, 0xb3, 0xa6, 0xbb, 0x45, 0x64, 0x49, 0x44, 0x3e, 0xd3, + 0x9f, 0x92, 0xfe, 0x17, 0x1c, 0x75, 0xa1, 0xb6, 0x8a, 0x67, 0x01, 0xa7, 0x33, 0x83, 0x8b, 0x5b, + 0xeb, 0x9d, 0x96, 0x9e, 0xad, 0x5c, 0xcf, 0x57, 0xae, 0xfb, 0xf9, 0xca, 0xc9, 0x83, 0x38, 0xad, + 0x9c, 0x2e, 0xe9, 0xa6, 0xb2, 0xf4, 0x7c, 0x65, 0x21, 0x7e, 0xe9, 0x61, 0xff, 0x92, 0xe0, 0xfd, + 0x7e, 0x7c, 0x93, 0x45, 0x3c, 0x08, 0x23, 0xba, 0xdc, 0x7b, 0x4f, 0x9f, 0xa1, 0x9c, 0xc4, 0x74, + 0xba, 0x49, 0x7f, 0xaa, 0x3f, 0xbe, 0x20, 0x22, 0x44, 0xe8, 0xcb, 0xce, 0xe3, 0xaa, 0x77, 0xde, + 0x3d, 0x39, 0xe9, 0x7c, 0xc4, 0xe7, 0x04, 0x1a, 0xb9, 0x06, 0xaf, 0x69, 0xc4, 0x13, 0x74, 0x0c, + 0xca, 0xd8, 0x25, 0xfd, 0xcb, 0x81, 0x3b, 0x9e, 0x98, 0x04, 0x1b, 0x69, 0xdf, 0x07, 0x3b, 0x74, + 0x34, 0xb4, 0x04, 0x95, 0x76, 0xa8, 0x85, 0x07, 0x38, 0xa5, 0xf2, 0xf9, 0x1f, 0x09, 0x9a, 0x0f, + 0x17, 0x0a, 0x5b, 0xa4, 0xc0, 0x2b, 0xdf, 0xf0, 0xfa, 0x13, 0xcf, 0x37, 0x48, 0xe6, 0x58, 0x90, + 0xbe, 0x3d, 0x1c, 0x0a, 0x37, 0x04, 0x0d, 0x41, 0x7a, 0xd8, 0x20, 0xfe, 0x05, 0x36, 0x7c, 0x45, + 0x2e, 0xd8, 0xf6, 0x70, 0x9b, 0x50, 0x17, 0xac, 0x98, 0x70, 0x6e, 0x55, 0x8c, 0x19, 0x9d, 0x00, + 0xb2, 0x9d, 0x1f, 0xae, 0x69, 0xf8, 0xb6, 0xeb, 0x14, 0x31, 0x2a, 0x48, 0x85, 0xe3, 0x6d, 0xee, + 0x7e, 0x1f, 0x66, 0x4d, 0x57, 0xd1, 0x29, 0xbc, 0xd9, 0x3e, 0x31, 0x1c, 0x13, 0xa7, 0xe6, 0x47, + 0x57, 0x15, 0xf1, 0x5e, 0xbe, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x94, 0x89, 0xd2, 0x83, + 0x04, 0x00, 0x00, +} diff --git a/pkg/types/types.proto b/pkg/types/types.proto new file mode 100644 index 00000000..d1fd86f1 --- /dev/null +++ b/pkg/types/types.proto @@ -0,0 +1,72 @@ +syntax = "proto3"; + +import "google/protobuf/timestamp.proto"; + +message Workflow { + string id = 1; + string name = 2; + string version = 3; + // TODO add internals +} + +message WorkflowInvocation { // TODO move to SPEC and STATUS + string id = 1; + string workflowId = 2; + enum Status { + UNKNOWN = 0; + SCHEDULED = 1; + IN_PROGRESS = 2; + SUCCEEDED = 3; + FAILED = 4; + ABORTED = 5; + } + Status status = 3; +// repeated Log logs = 4; + // TODO more about status +} + +enum WorkflowEvents { + WORKFLOW_CREATED = 0; + WORKFLOW_UPDATED = 1; + WORKFLOW_DELETED = 2; +} + +enum InvocationEvent { + TASK_STARTED = 0; // origin: Engine + TASK_SKIPPED = 1; // origin: Feedback + TASK_HEARTBEAT = 2; // origin: Engine + TASK_SUCCEEDED = 3; // origin: Feedback + TASK_FAILED = 4; // origin: Feedback + TASK_ABORTED = 5; // origin: Engine + INVOCATION_CREATED = 6; // origin: User/Engine + INVOCATION_COMPLETED = 7; // origin: Engine + INVOCATION_CANCELED = 8; // origin: User/Engine +} + +// Util +message Empty {} + +message WorkflowInvocationSpec { + string workflowId = 2; +} + +message WorkflowInvocationStatus { + enum Status { + UNKNOWN = 0; + SCHEDULED = 1; + IN_PROGRESS = 2; + SUCCEEDED = 3; + FAILED = 4; + ABORTED = 5; + } + Status status = 1; + google.protobuf.Timestamp updatedAt = 2; + google.protobuf.Timestamp createdAt = 3; + // TODO status nodes +} + +message WorkflowInvocationContainer { + string id = 1; + WorkflowInvocationSpec spec = 2; + WorkflowInvocationStatus status = 3; +} \ No newline at end of file diff --git a/pkg/util/util.go b/pkg/util/util.go new file mode 100644 index 00000000..c7d86821 --- /dev/null +++ b/pkg/util/util.go @@ -0,0 +1 @@ +package util diff --git a/pkg/version/BUILD.bazel b/pkg/version/BUILD.bazel new file mode 100644 index 00000000..50c8abfa --- /dev/null +++ b/pkg/version/BUILD.bazel @@ -0,0 +1,7 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["version.go"], + visibility = ["//visibility:public"], +) diff --git a/pkg/version/version.go b/pkg/version/version.go new file mode 100644 index 00000000..aa240084 --- /dev/null +++ b/pkg/version/version.go @@ -0,0 +1,3 @@ +package version + +var VERSION = "UNKNOWN" From 4ed49c3a11876de60773c921a05ed1e391849100 Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Thu, 27 Jul 2017 13:44:07 -0700 Subject: [PATCH 02/24] Add eventstore based on NATS streaming --- pkg/eventstore/BUILD.bazel | 27 +++ pkg/eventstore/client.go | 32 +++ pkg/eventstore/eventids/BUILD.bazel | 8 + pkg/eventstore/eventids/eventids.go | 50 +++++ pkg/eventstore/events/BUILD.bazel | 12 ++ pkg/eventstore/events/events.go | 17 ++ pkg/eventstore/eventstore.pb.go | 172 ++++++++++++++++ pkg/eventstore/eventstore.proto | 25 +++ pkg/eventstore/nats/BUILD.bazel | 17 ++ pkg/eventstore/nats/client.go | 303 ++++++++++++++++++++++++++++ pkg/eventstore/nats/nats.go | 47 +++++ 11 files changed, 710 insertions(+) create mode 100644 pkg/eventstore/BUILD.bazel create mode 100644 pkg/eventstore/client.go create mode 100644 pkg/eventstore/eventids/BUILD.bazel create mode 100644 pkg/eventstore/eventids/eventids.go create mode 100644 pkg/eventstore/events/BUILD.bazel create mode 100644 pkg/eventstore/events/events.go create mode 100644 pkg/eventstore/eventstore.pb.go create mode 100644 pkg/eventstore/eventstore.proto create mode 100644 pkg/eventstore/nats/BUILD.bazel create mode 100644 pkg/eventstore/nats/client.go create mode 100644 pkg/eventstore/nats/nats.go diff --git a/pkg/eventstore/BUILD.bazel b/pkg/eventstore/BUILD.bazel new file mode 100644 index 00000000..ad7a6ee6 --- /dev/null +++ b/pkg/eventstore/BUILD.bazel @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = [ + "client.go", + "eventstore.pb.go", + ], + visibility = ["//visibility:public"], + deps = [ + "//vendor/github.com/golang/protobuf/proto:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes/any:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes/timestamp:go_default_library", + ], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["eventstore.proto"], + visibility = ["//visibility:public"], +) + +go_test( + name = "go_default_test", + srcs = ["fs_test.go"], + library = ":go_default_library", +) diff --git a/pkg/eventstore/client.go b/pkg/eventstore/client.go new file mode 100644 index 00000000..18ce0ace --- /dev/null +++ b/pkg/eventstore/client.go @@ -0,0 +1,32 @@ +package eventstore + +import ( + "io" +) + +// Client V2 +type Client interface { + io.Closer + // Replays all events for subject, and continues to watch afterwards. + Subscribe(config *SubscriptionConfig) (Subscription, error) + + Get(subject string, id string) (*Event, error) // Stan.StartAtSequence // Convenience function, uses subscribe in the background + + Append(event *Event) error + + // To replay existing: subscription.close() -> subscribe(subscription.Config()) + Replay(subject string, subscription Subscription) error +} + +type Subscription interface { + io.Closer + Config() *SubscriptionConfig +} + +// TODO Make concurrency-proof +type SubscriptionConfig struct { + Subject string + EventCh chan *Event + //StartAt string // Enum: FROM(0)...NOW + //FinishAt string // Enum: FROM(0)...NOW +} diff --git a/pkg/eventstore/eventids/BUILD.bazel b/pkg/eventstore/eventids/BUILD.bazel new file mode 100644 index 00000000..9606b3b5 --- /dev/null +++ b/pkg/eventstore/eventids/BUILD.bazel @@ -0,0 +1,8 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["eventids.go"], + visibility = ["//visibility:public"], + deps = ["//pkg/eventstore:go_default_library"], +) diff --git a/pkg/eventstore/eventids/eventids.go b/pkg/eventstore/eventids/eventids.go new file mode 100644 index 00000000..d8655a5d --- /dev/null +++ b/pkg/eventstore/eventids/eventids.go @@ -0,0 +1,50 @@ +package eventids + +import ( + "fmt" + "github.com/fission/fission-workflow/pkg/eventstore" + "strings" +) + +const ( + SUBJECT_SEPARATOR = "." + ID_SEPARATOR = "#" +) + +/* +Format of a stringified EventID: .# +*/ +func ParseString(stringifiedEventId string) (*eventstore.EventID, error) { + eventId := &eventstore.EventID{} + p := strings.Split(stringifiedEventId, ID_SEPARATOR) + + switch len(p) { + case 1: + eventId.Id = p[0] + case 2: + eventId.Id = p[1] + eventId.Subjects = strings.Split(p[0], SUBJECT_SEPARATOR) + default: + return nil, fmt.Errorf("Could not parse invalid EventID '%s'", stringifiedEventId) + } + + return eventId, nil +} + +func ToString(eventId *eventstore.EventID) string { + return fmt.Sprintf("%s%s%s", + strings.Join(eventId.GetSubjects(), SUBJECT_SEPARATOR), + ID_SEPARATOR, + eventId.GetId()) +} + +func New(subjects []string, id string) *eventstore.EventID { + return &eventstore.EventID{ + Subjects: subjects, + Id: id, + } +} + +func NewSubject(subjects ...string) *eventstore.EventID { + return New(subjects, "") +} diff --git a/pkg/eventstore/events/BUILD.bazel b/pkg/eventstore/events/BUILD.bazel new file mode 100644 index 00000000..b3782e07 --- /dev/null +++ b/pkg/eventstore/events/BUILD.bazel @@ -0,0 +1,12 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["events.go"], + visibility = ["//visibility:public"], + deps = [ + "//pkg/eventstore:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes/any:go_default_library", + ], +) diff --git a/pkg/eventstore/events/events.go b/pkg/eventstore/events/events.go new file mode 100644 index 00000000..6790e743 --- /dev/null +++ b/pkg/eventstore/events/events.go @@ -0,0 +1,17 @@ +package events + +import ( + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/golang/protobuf/ptypes" + "github.com/golang/protobuf/ptypes/any" +) + +// Utility package for working with events +func New(eventId *eventstore.EventID, eventType string, payload *any.Any) *eventstore.Event { + return &eventstore.Event{ + EventId: eventId, + Type: eventType, + Time: ptypes.TimestampNow(), + Data: payload, + } +} diff --git a/pkg/eventstore/eventstore.pb.go b/pkg/eventstore/eventstore.pb.go new file mode 100644 index 00000000..aa18b0df --- /dev/null +++ b/pkg/eventstore/eventstore.pb.go @@ -0,0 +1,172 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: pkg/eventstore/eventstore.proto + +/* +Package eventstore is a generated protocol buffer package. + +It is generated from these files: + pkg/eventstore/eventstore.proto + +It has these top-level messages: + Event + EventID + SubjectEvent +*/ +package eventstore + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import google_protobuf "github.com/golang/protobuf/ptypes/any" +import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type SubjectEvent_Type int32 + +const ( + SubjectEvent_CREATED SubjectEvent_Type = 0 + SubjectEvent_CLOSED SubjectEvent_Type = 1 +) + +var SubjectEvent_Type_name = map[int32]string{ + 0: "CREATED", + 1: "CLOSED", +} +var SubjectEvent_Type_value = map[string]int32{ + "CREATED": 0, + "CLOSED": 1, +} + +func (x SubjectEvent_Type) String() string { + return proto.EnumName(SubjectEvent_Type_name, int32(x)) +} +func (SubjectEvent_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } + +type Event struct { + EventId *EventID `protobuf:"bytes,1,opt,name=eventId" json:"eventId,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"` + Time *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=time" json:"time,omitempty"` + Data *google_protobuf.Any `protobuf:"bytes,4,opt,name=data" json:"data,omitempty"` +} + +func (m *Event) Reset() { *m = Event{} } +func (m *Event) String() string { return proto.CompactTextString(m) } +func (*Event) ProtoMessage() {} +func (*Event) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *Event) GetEventId() *EventID { + if m != nil { + return m.EventId + } + return nil +} + +func (m *Event) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *Event) GetTime() *google_protobuf1.Timestamp { + if m != nil { + return m.Time + } + return nil +} + +func (m *Event) GetData() *google_protobuf.Any { + if m != nil { + return m.Data + } + return nil +} + +type EventID struct { + Subjects []string `protobuf:"bytes,1,rep,name=subjects" json:"subjects,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` +} + +func (m *EventID) Reset() { *m = EventID{} } +func (m *EventID) String() string { return proto.CompactTextString(m) } +func (*EventID) ProtoMessage() {} +func (*EventID) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *EventID) GetSubjects() []string { + if m != nil { + return m.Subjects + } + return nil +} + +func (m *EventID) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +type SubjectEvent struct { + Subject string `protobuf:"bytes,1,opt,name=subject" json:"subject,omitempty"` + Type SubjectEvent_Type `protobuf:"varint,2,opt,name=type,enum=SubjectEvent_Type" json:"type,omitempty"` +} + +func (m *SubjectEvent) Reset() { *m = SubjectEvent{} } +func (m *SubjectEvent) String() string { return proto.CompactTextString(m) } +func (*SubjectEvent) ProtoMessage() {} +func (*SubjectEvent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +func (m *SubjectEvent) GetSubject() string { + if m != nil { + return m.Subject + } + return "" +} + +func (m *SubjectEvent) GetType() SubjectEvent_Type { + if m != nil { + return m.Type + } + return SubjectEvent_CREATED +} + +func init() { + proto.RegisterType((*Event)(nil), "Event") + proto.RegisterType((*EventID)(nil), "EventID") + proto.RegisterType((*SubjectEvent)(nil), "SubjectEvent") + proto.RegisterEnum("SubjectEvent_Type", SubjectEvent_Type_name, SubjectEvent_Type_value) +} + +func init() { proto.RegisterFile("pkg/eventstore/eventstore.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 277 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x8f, 0xc1, 0x6a, 0x83, 0x40, + 0x10, 0x86, 0xbb, 0x89, 0x8d, 0x71, 0x52, 0x42, 0x18, 0x7a, 0xd8, 0x7a, 0x51, 0x3c, 0x14, 0x4f, + 0x2b, 0xa4, 0xf4, 0x01, 0x42, 0xf4, 0x10, 0x28, 0x14, 0x36, 0xbe, 0x80, 0xd6, 0xad, 0xd8, 0x36, + 0x6a, 0xe3, 0xa6, 0xe0, 0xa3, 0xf4, 0x6d, 0x8b, 0xa3, 0x16, 0x69, 0x6f, 0xf3, 0xf3, 0x7f, 0x33, + 0xf3, 0xff, 0xe0, 0xd4, 0xef, 0x79, 0xa0, 0xbe, 0x54, 0xa9, 0x1b, 0x5d, 0x9d, 0xd5, 0x64, 0x14, + 0xf5, 0xb9, 0xd2, 0x95, 0x7d, 0x97, 0x57, 0x55, 0xfe, 0xa1, 0x02, 0x52, 0xe9, 0xe5, 0x35, 0x48, + 0xca, 0x76, 0xb0, 0x9c, 0xbf, 0x96, 0x2e, 0x4e, 0xaa, 0xd1, 0xc9, 0xa9, 0xee, 0x01, 0xef, 0x9b, + 0xc1, 0x75, 0xd4, 0x1d, 0x44, 0x0f, 0x4c, 0xba, 0x7c, 0xc8, 0x38, 0x73, 0x99, 0xbf, 0xda, 0x2e, + 0x05, 0x19, 0x87, 0x50, 0x8e, 0x06, 0x22, 0x18, 0xba, 0xad, 0x15, 0x9f, 0xb9, 0xcc, 0xb7, 0x24, + 0xcd, 0x28, 0xc0, 0xe8, 0x8e, 0xf2, 0x39, 0x2d, 0xd9, 0xa2, 0xff, 0x28, 0xc6, 0x8f, 0x22, 0x1e, + 0x3f, 0x4a, 0xe2, 0xd0, 0x07, 0x23, 0x4b, 0x74, 0xc2, 0x0d, 0xe2, 0x6f, 0xff, 0xf1, 0xbb, 0xb2, + 0x95, 0x44, 0x78, 0x8f, 0x60, 0x0e, 0x09, 0xd0, 0x86, 0x65, 0x73, 0x49, 0xdf, 0xd4, 0x8b, 0x6e, + 0x38, 0x73, 0xe7, 0xbe, 0x25, 0x7f, 0x35, 0xae, 0x61, 0x56, 0x64, 0x43, 0xa4, 0x59, 0x91, 0x79, + 0x9f, 0x70, 0x73, 0xec, 0xbd, 0xbe, 0x18, 0x07, 0x73, 0x60, 0xa9, 0x98, 0x25, 0x47, 0x89, 0xf7, + 0x93, 0x3a, 0xeb, 0x2d, 0x8a, 0xe9, 0x9a, 0x88, 0xdb, 0x5a, 0xf5, 0x15, 0x3d, 0x07, 0x8c, 0x4e, + 0xe1, 0x0a, 0xcc, 0xbd, 0x8c, 0x76, 0x71, 0x14, 0x6e, 0xae, 0x10, 0x60, 0xb1, 0x7f, 0x7a, 0x3e, + 0x46, 0xe1, 0x86, 0xa5, 0x0b, 0x4a, 0xff, 0xf0, 0x13, 0x00, 0x00, 0xff, 0xff, 0xc4, 0x17, 0x79, + 0x4e, 0xab, 0x01, 0x00, 0x00, +} diff --git a/pkg/eventstore/eventstore.proto b/pkg/eventstore/eventstore.proto new file mode 100644 index 00000000..5226ade8 --- /dev/null +++ b/pkg/eventstore/eventstore.proto @@ -0,0 +1,25 @@ +syntax = "proto3"; + +import "google/protobuf/any.proto"; +import "google/protobuf/timestamp.proto"; + +message Event { + EventID eventId = 1; + string type = 2; + google.protobuf.Timestamp time = 3; + google.protobuf.Any data = 4; +} + +message EventID { + repeated string subjects = 1; + string id = 2; +} + +message SubjectEvent { + string subject = 1; + enum Type { + CREATED = 0; + CLOSED = 1; + } + Type type = 2; +} \ No newline at end of file diff --git a/pkg/eventstore/nats/BUILD.bazel b/pkg/eventstore/nats/BUILD.bazel new file mode 100644 index 00000000..a4df6818 --- /dev/null +++ b/pkg/eventstore/nats/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "client.go", + "nats.go", + ], + visibility = ["//visibility:public"], + deps = [ + "//pkg/eventstore:go_default_library", + "//vendor/github.com/golang/protobuf/proto:go_default_library", + "//vendor/github.com/nats-io/go-nats:go_default_library", + "//vendor/github.com/nats-io/go-nats-streaming:go_default_library", + "//vendor/github.com/sirupsen/logrus:go_default_library", + ], +) diff --git a/pkg/eventstore/nats/client.go b/pkg/eventstore/nats/client.go new file mode 100644 index 00000000..7fa3743a --- /dev/null +++ b/pkg/eventstore/nats/client.go @@ -0,0 +1,303 @@ +package nats + +import ( + "strings" + + "fmt" + + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/golang/protobuf/proto" + "github.com/nats-io/go-nats-streaming" + "github.com/sirupsen/logrus" +) + +// TODO use logrus with fields +type Client struct { + conn *Conn + subscriptions []*Subscription +} + +const ( + SUBJECT_ACTIVITY = "_activity" +) + +func New(conn *Conn) eventstore.Client { + return &Client{conn, []*Subscription{}} +} + +// Wildcards are allowed in the subject +// TODO address other config fields other than subject and eventCh +func (nc *Client) Subscribe(config *eventstore.SubscriptionConfig) (eventstore.Subscription, error) { + query := config.Subject + if len(query) == 0 { + return nil, fmt.Errorf("Subscribe requires a subject.") + } + + if config.EventCh == nil { + return nil, fmt.Errorf("Subscribe requires a event channel to emit the events to.") + } + + sub := &Subscription{ + config: config, + sources: map[string]stan.Subscription{}, + } + + if !hasWildcard(query) { + stanSub, err := nc.subscribeSingle(&eventstore.SubscriptionConfig{ + Subject: query, + EventCh: config.EventCh, + // TODO address other config params as well + }) + if err != nil { + return nil, err + } + sub.sources[query] = stanSub + return sub, nil + } + + activitySubject := toActivitySubject(query) + + metaSub, err := nc.conn.Subscribe(activitySubject, func(msg *stan.Msg) { + subjectEvent := &eventstore.SubjectEvent{} + err := proto.Unmarshal(msg.Data, subjectEvent) + if err != nil { + logrus.Errorf("Failed to retrieve event from msg '%v'", msg) + } + logrus.WithFields(logrus.Fields{ + "subject": activitySubject, + "event": subjectEvent, + }).Debug("NatsClient received activity.") + + // Although the activity channel should be specific to one query, recheck if subject falls in range of query. + if !queryMatches(subjectEvent.GetSubject(), query) { + logrus.Warnf("Received invalid subjectEvent '%v' on activity subject '%s'", subjectEvent, activitySubject) + return + } + + switch subjectEvent.GetType() { + case eventstore.SubjectEvent_CREATED: + if _, ok := sub.sources[subjectEvent.GetSubject()]; !ok { + stanSub, err := nc.subscribeSingle(&eventstore.SubscriptionConfig{ + Subject: subjectEvent.GetSubject(), + EventCh: config.EventCh, + // TODO address other config params as well + }) + if err != nil { + logrus.Errorf("Failed to subscribe to subject '%v': %v", subjectEvent, err) + } + sub.sources[subjectEvent.GetSubject()] = stanSub + } + default: + // TODO notify subscription that subject has been closed, close channel, whatever + panic(fmt.Sprintf("Unknown SubjectEvent: %v", subjectEvent)) + } + }, stan.DeliverAllAvailable()) + if err != nil { + panic(err) + return nil, err + } + + sub.sources[activitySubject] = metaSub + nc.subscriptions = append(nc.subscriptions, sub) + + logrus.WithFields(logrus.Fields{ + "config": config, + "subject": activitySubject, + }).Debug("Subscribed to activity subject") + + return sub, nil +} + +func (nc *Client) subscribeSingle(config *eventstore.SubscriptionConfig) (stan.Subscription, error) { + if hasWildcard(config.Subject) { + logrus.Panicf("subscribeSingle does not support wildcards in subject '%s'", config.Subject) + } + + logrus.WithFields(logrus.Fields{ + "config": config, + "subject": config.Subject, + }).Debug("Subscribed to subject.") + + return nc.conn.Subscribe(config.Subject, func(msg *stan.Msg) { + event, err := unmarshalMsg(msg) + if err != nil { + logrus.Errorf("Failed to retrieve event from msg '%v'", msg) + } + config.EventCh <- event + }, stan.DeliverAllAvailable()) +} + +func (nc *Client) Get(subject string, id string) (*eventstore.Event, error) { + panic("implement me") +} + +func (nc *Client) Append(event *eventstore.Event) error { + invokeSubject := createSubject(event.GetEventId()) + data, err := proto.Marshal(event) + if err != nil { + return err + } + + err = nc.conn.Publish(invokeSubject, data) + if err != nil { + panic(err) + return err + } + + // Announce subject activity on notification thread, because of missing wildcards in NATS streaming + err = nc.publishActivity(&eventstore.SubjectEvent{ + Subject: invokeSubject, + Type: eventstore.SubjectEvent_CREATED, // TODO infer from context if created or closed + }) + if err != nil { + logrus.Warnf("Failed to publish subject '%s' to activity subject '%s': %v", invokeSubject, + toActivitySubject(invokeSubject), err) + } + logrus.WithFields(logrus.Fields{ + "subject": invokeSubject, + "event": event, + }).Info("Published event to event store.") + + return nil +} + +func (nc *Client) publishActivity(activity *eventstore.SubjectEvent) error { + subjectData, err := proto.Marshal(activity) + if err != nil { + return err + } + + subject := toActivitySubject(activity.GetSubject()) + err = nc.conn.Publish(subject, subjectData) + if err != nil { + return err + } + + logrus.WithFields(logrus.Fields{ + "subject": subject, + "event": activity, + }).Debug("Published activity event to event store.") + + return nil +} + +// Replay re-emits events for subject for subscription +func (nc *Client) Replay(subject string, context eventstore.Subscription) error { + sub, ok := context.(*Subscription) + if !ok { + return fmt.Errorf("Subscription '%v' has to be of type Subscription to be replayed", context) + } + + source, ok := sub.sources[subject] + if !ok { + return fmt.Errorf("Subject '%s' does not belong to the current subscription '%v'", subject, context) + } + + if err := source.Close(); err != nil { + return fmt.Errorf("Failed to close existing source '%s', due to: %v", subject, err) + } + + stanSub, err := nc.subscribeSingle(&eventstore.SubscriptionConfig{ + Subject: subject, + EventCh: context.Config().EventCh, + }) + if err != nil { + return err + } + + sub.sources[subject] = stanSub + + return nil +} + +func (nc *Client) Close() error { + for _, sub := range nc.subscriptions { + if err := sub.Close(); err != nil { + return fmt.Errorf("Failed to close subscription for '%s' due to: %v", sub, err) + } + } + + return nc.conn.Close() +} + +/* + + Subscription + +*/ +// TODO make concurrency-proof +type Subscription struct { + config *eventstore.SubscriptionConfig + sources map[string]stan.Subscription +} + +func (ns *Subscription) Close() error { + for subject, sub := range ns.sources { + if err := sub.Close(); err != nil { + return fmt.Errorf("Failed to close subscription for '%s' due to: %v", subject, err) + } + } + close(ns.config.EventCh) + return nil +} + +func (ns *Subscription) Config() *eventstore.SubscriptionConfig { + return ns.config +} + +/* + + Utility functions + +*/ +func toActivitySubject(subject string) string { + // For now, just broadcast on a common subject + return SUBJECT_ACTIVITY +} + +func unmarshalMsg(msg *stan.Msg) (*eventstore.Event, error) { + e := &eventstore.Event{} + err := proto.Unmarshal(msg.Data, e) + if err != nil { + return nil, err + } + + e.EventId.Id = fmt.Sprintf("%s", msg.Sequence) + return e, nil +} + +func hasWildcard(subject string) bool { + return strings.ContainsAny(subject, "*>") +} + +func queryMatches(subject string, query string) bool { + subjectParts := strings.Split(subject, ".") + queryParts := strings.Split(query, ".") + + for key, part := range subjectParts { + if part == "" { + return false + } + + if len(query) < key { + return false + } + + if queryParts[key] == ">" { + return true + } + + if queryParts[key] == "*" { + continue + } + + if queryParts[key] != part { + return false + } + } + return true +} + +func createSubject(event *eventstore.EventID) string { + return strings.Join(event.GetSubjects(), ".") +} diff --git a/pkg/eventstore/nats/nats.go b/pkg/eventstore/nats/nats.go new file mode 100644 index 00000000..6c947278 --- /dev/null +++ b/pkg/eventstore/nats/nats.go @@ -0,0 +1,47 @@ +package nats + +import ( + "github.com/nats-io/go-nats" + "github.com/nats-io/go-nats-streaming" +) + +// Wrapper of 'stan' package to augment the API +type Conn struct { + conn stan.Conn +} + +func NewConn(conn stan.Conn) *Conn { + return &Conn{conn} +} + +func (sm *Conn) Publish(subject string, data []byte) error { + return sm.conn.Publish(subject, data) +} + +func (sm *Conn) PublishAsync(subject string, data []byte, ah stan.AckHandler) (string, error) { + return sm.conn.PublishAsync(subject, data, ah) +} + +func (sm *Conn) Subscribe(subject string, cb stan.MsgHandler, opts ...stan.SubscriptionOption) (stan.Subscription, error) { + return sm.conn.Subscribe(subject, cb, opts...) +} + +func (sm *Conn) QueueSubscribe(subject, qgroup string, cb stan.MsgHandler, opts ...stan.SubscriptionOption) (stan.Subscription, error) { + return sm.conn.QueueSubscribe(subject, qgroup, cb, opts...) +} + +func (sm *Conn) Close() error { + return sm.conn.Close() +} + +func (sm *Conn) NatsConn() *nats.Conn { + return sm.conn.NatsConn() +} + +// Augmented functions + +func (sm *Conn) SubscribeChan(subject string, msgChan chan *stan.Msg, opts ...stan.SubscriptionOption) (stan.Subscription, error) { + return sm.conn.Subscribe(subject, func(msg *stan.Msg) { + msgChan <- msg + }, opts...) +} From 6782607177187ae2446f1b2cfad9798ffec8f3e3 Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Thu, 27 Jul 2017 13:50:14 -0700 Subject: [PATCH 03/24] Add initial workflow invocation projection --- pkg/cache/BUILD.bazel | 7 + pkg/cache/cache.go | 55 ++++++ pkg/projector/BUILD.bazel | 11 ++ pkg/projector/project/BUILD.bazel | 16 ++ pkg/projector/project/invocation/BUILD.bazel | 13 ++ .../project/invocation/invocation.go | 83 ++++++++ pkg/projector/project/projector.go | 178 ++++++++++++++++++ pkg/projector/projection.go | 35 ++++ 8 files changed, 398 insertions(+) create mode 100644 pkg/cache/BUILD.bazel create mode 100644 pkg/cache/cache.go create mode 100644 pkg/projector/BUILD.bazel create mode 100644 pkg/projector/project/BUILD.bazel create mode 100644 pkg/projector/project/invocation/BUILD.bazel create mode 100644 pkg/projector/project/invocation/invocation.go create mode 100644 pkg/projector/project/projector.go create mode 100644 pkg/projector/projection.go diff --git a/pkg/cache/BUILD.bazel b/pkg/cache/BUILD.bazel new file mode 100644 index 00000000..9cc612be --- /dev/null +++ b/pkg/cache/BUILD.bazel @@ -0,0 +1,7 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["cache.go"], + visibility = ["//visibility:public"], +) diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go new file mode 100644 index 00000000..e5909af1 --- /dev/null +++ b/pkg/cache/cache.go @@ -0,0 +1,55 @@ +package cache + +type Cache interface { + Put(key string, data interface{}) error + Get(Key string) (interface{}, bool) + Delete(key string) error + List() map[string]interface{} +} + +type NoCache struct{} + +func (nc *NoCache) Put(key string, data interface{}) error { + return nil +} + +func (nc *NoCache) Get(Key string) (interface{}, bool) { + return nil, false +} + +func (nc *NoCache) Delete(key string) error { + return nil +} + +func (nc *NoCache) List() map[string]interface{} { + return map[string]interface{}{} +} + +type MapCache struct { + store map[string]interface{} +} + +func NewMapCache() *MapCache { + return &MapCache{ + store: map[string]interface{}{}, + } +} + +func (mc *MapCache) Put(key string, data interface{}) error { + mc.store[key] = data + return nil +} + +func (mc *MapCache) Get(key string) (interface{}, bool) { + val, exists := mc.store[key] + return val, exists +} + +func (mc *MapCache) Delete(key string) error { + delete(mc.store, key) + return nil +} + +func (mc *MapCache) List() map[string]interface{} { + return mc.store +} diff --git a/pkg/projector/BUILD.bazel b/pkg/projector/BUILD.bazel new file mode 100644 index 00000000..7d1184fa --- /dev/null +++ b/pkg/projector/BUILD.bazel @@ -0,0 +1,11 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["projection.go"], + visibility = ["//visibility:public"], + deps = [ + "//pkg/eventstore:go_default_library", + "//pkg/types:go_default_library", + ], +) diff --git a/pkg/projector/project/BUILD.bazel b/pkg/projector/project/BUILD.bazel new file mode 100644 index 00000000..c9128aa4 --- /dev/null +++ b/pkg/projector/project/BUILD.bazel @@ -0,0 +1,16 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["projector.go"], + visibility = ["//visibility:public"], + deps = [ + "//pkg/cache:go_default_library", + "//pkg/eventstore:go_default_library", + "//pkg/projector/project/invocation:go_default_library", + "//pkg/types:go_default_library", + "//pkg/types/invocationevent:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes:go_default_library", + "//vendor/github.com/sirupsen/logrus:go_default_library", + ], +) diff --git a/pkg/projector/project/invocation/BUILD.bazel b/pkg/projector/project/invocation/BUILD.bazel new file mode 100644 index 00000000..d285e415 --- /dev/null +++ b/pkg/projector/project/invocation/BUILD.bazel @@ -0,0 +1,13 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["invocation.go"], + visibility = ["//visibility:public"], + deps = [ + "//pkg/eventstore:go_default_library", + "//pkg/types:go_default_library", + "//pkg/types/invocationevent:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes:go_default_library", + ], +) diff --git a/pkg/projector/project/invocation/invocation.go b/pkg/projector/project/invocation/invocation.go new file mode 100644 index 00000000..eae2cfb6 --- /dev/null +++ b/pkg/projector/project/invocation/invocation.go @@ -0,0 +1,83 @@ +package invocation + +import ( + "errors" + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/fission/fission-workflow/pkg/types" + "github.com/fission/fission-workflow/pkg/types/invocationevent" + "github.com/golang/protobuf/ptypes" +) + +/* + Invocation Projection +*/ +type reduceFunc func(invocation types.WorkflowInvocationContainer, event *eventstore.Event) (newState *types.WorkflowInvocationContainer, err error) + +var eventMapping = map[types.InvocationEvent]reduceFunc{ + types.InvocationEvent_INVOCATION_CREATED: created, + types.InvocationEvent_INVOCATION_CANCELED: canceled, + types.InvocationEvent_INVOCATION_COMPLETED: completed, +} + +func Initial() *types.WorkflowInvocationContainer { + return &types.WorkflowInvocationContainer{} +} + +func From(events ...*eventstore.Event) (currentState *types.WorkflowInvocationContainer, err error) { + return Apply(*Initial(), events...) +} + +func Apply(currentState types.WorkflowInvocationContainer, events ...*eventstore.Event) (newState *types.WorkflowInvocationContainer, err error) { + // Check if it is indeed next event (maybe wrap in a projectionContainer) + newState = ¤tState + for _, event := range events { + + eventType, err := invocationevent.Parse(event.GetType()) + if err != nil { + return nil, err + } + newState, err = eventMapping[eventType](currentState, event) + if err != nil { + return nil, err + } + } + + return newState, nil +} + +func created(currentState types.WorkflowInvocationContainer, event *eventstore.Event) (newState *types.WorkflowInvocationContainer, err error) { + // Check if state + if currentState != (types.WorkflowInvocationContainer{}) { + return nil, errors.New("invalid event") // TODO fix errors + } + + spec := &types.WorkflowInvocationSpec{} + err = ptypes.UnmarshalAny(event.Data, spec) + + currentState.Id = event.GetEventId().GetSubjects()[1] // TODO remove this hardcoding + currentState.Spec = spec + currentState.Status = &types.WorkflowInvocationStatus{ + Status: types.WorkflowInvocationStatus_UNKNOWN, + CreatedAt: event.GetTime(), + UpdatedAt: event.GetTime(), + } + + // TODO only allow spec to be added + return ¤tState, nil +} + +func canceled(currentState types.WorkflowInvocationContainer, event *eventstore.Event) (newState *types.WorkflowInvocationContainer, err error) { + // Canceling non-existent / already invocationCanceled invocation does nothing + if currentState == (types.WorkflowInvocationContainer{}) { + return nil, errors.New("Unknown state") // TODO fix errors + } + currentState.GetStatus().Status = types.WorkflowInvocationStatus_ABORTED + return ¤tState, nil +} + +func completed(currentState types.WorkflowInvocationContainer, event *eventstore.Event) (newState *types.WorkflowInvocationContainer, err error) { + // TODO do some state checking + + currentState.GetStatus().Status = types.WorkflowInvocationStatus_SUCCEEDED + return ¤tState, nil +} diff --git a/pkg/projector/project/projector.go b/pkg/projector/project/projector.go new file mode 100644 index 00000000..ade1a613 --- /dev/null +++ b/pkg/projector/project/projector.go @@ -0,0 +1,178 @@ +package project + +import ( + "time" + + "io" + + "github.com/fission/fission-workflow/pkg/cache" + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/fission/fission-workflow/pkg/projector/project/invocation" + "github.com/fission/fission-workflow/pkg/types" + "github.com/fission/fission-workflow/pkg/types/invocationevent" + "github.com/golang/protobuf/ptypes" + "github.com/sirupsen/logrus" +) + +// Per object type view only!!! +type InvocationProjector interface { + io.Closer + // Get projection from cache or attempt to replay it. + Get(subject string) (*types.WorkflowInvocationContainer, error) + + Cache() cache.Cache + + // Replays events, if it already exists, it is invalidated and replayed + // Populates cache + Fetch(subject string) error + + // Suscribe to updates in this projector + Subscribe(updateCh chan *InvocationNotification) error +} + +// In order to avoid leaking eventstore details +type InvocationNotification struct { + Id string + Data *types.WorkflowInvocationContainer + Type types.InvocationEvent + Time time.Time +} + +type invocationProjector struct { + esClient eventstore.Client + cache cache.Cache // TODO ensure concurrent + sub eventstore.Subscription + updateChan chan *eventstore.Event + subscribers []chan *InvocationNotification +} + +func NewInvocationProjector(esClient eventstore.Client, cache cache.Cache) InvocationProjector { + + updateChan := make(chan *eventstore.Event) + + projector := &invocationProjector{ + esClient: esClient, + cache: cache, + updateChan: updateChan, + } + + go func() { + defer logrus.Debug("InvocationProjector update loop has shutdown.") + for event := range projector.updateChan { + invocationId := event.EventId.Subjects[1] // TODO fix hardcoded lookup + + currentState := projector.getCache(invocationId) + if currentState == nil { + currentState = invocation.Initial() + } + + newState, err := invocation.Apply(*currentState, event) + if err != nil { + // TODO better error handling (e.g. retry / replay) + logrus.WithFields(logrus.Fields{ + "err": err, + "currentState": currentState, + "event": event, + }).Error("Failed to apply event to state") + continue + } + + err = projector.cache.Put(invocationId, newState) + if err != nil { + logrus.WithFields(logrus.Fields{ + "err": err, + "invocationId": invocationId, + "state": newState, + "event": event, + }).Warn("Failed to put invocation into cache.") + } + + timestamp, err := ptypes.Timestamp(event.Time) + if err != nil { + logrus.WithFields(logrus.Fields{ + "event": event, + }).Warn("Could not parse timestamp, using fallback time.") + timestamp = time.Now() + } + + invocationEventType, err := invocationevent.Parse(event.Type) + if err != nil { + logrus.WithFields(logrus.Fields{ + "event": event, + "types": event.Type, + "err": err, + }).Warn("Failed to parse event type") + invocationEventType = -1 + } + + notification := &InvocationNotification{ + Id: invocationId, + Data: newState, + Type: invocationEventType, + Time: timestamp, + } + + // TODO should judge whether to send notification (old messages not) + for _, c := range projector.subscribers { + select { + case c <- notification: + logrus.WithField("notification", notification).Debug("Notified subscriber.") + default: + logrus.WithField("notification", notification). + Debug("Failed to notify subscriber chan because of blocked channel.") + } + } + } + }() + + return projector +} + +func (ip *invocationProjector) getCache(subject string) *types.WorkflowInvocationContainer { + raw, ok := ip.cache.Get(subject) + if !ok { + return nil + } + invocation, ok := raw.(*types.WorkflowInvocationContainer) + if !ok { + logrus.Warnf("Cache contains invalid invocation '%v'. Invalidating key.", raw) + ip.cache.Delete(subject) + } + return invocation +} + +// Get projection from cache or attempt to replay it. +func (ip *invocationProjector) Get(subject string) (*types.WorkflowInvocationContainer, error) { + panic("not implemented") +} + +// Invalidate deletes any projection of the subject. A next get of the subject will require replaying of the events. +func (ip *invocationProjector) Invalidate(subject string) error { + return ip.cache.Delete(subject) +} + +func (ip *invocationProjector) Fetch(subject string) error { + _, err := ip.esClient.Subscribe(&eventstore.SubscriptionConfig{ + Subject: subject, + EventCh: ip.updateChan, // TODO provide clean channel that multiplexes into actual one + }) + return err +} + +// TODO Maybe add identifier per consumer +func (ip *invocationProjector) Subscribe(updateCh chan *InvocationNotification) error { + ip.subscribers = append(ip.subscribers, updateCh) + return nil +} + +func (ip *invocationProjector) Cache() cache.Cache { + return ip.cache +} + +func (ip *invocationProjector) Close() error { + // Close channel + for _, ch := range ip.subscribers { + close(ch) + } + return nil +} diff --git a/pkg/projector/projection.go b/pkg/projector/projection.go new file mode 100644 index 00000000..b8985cda --- /dev/null +++ b/pkg/projector/projection.go @@ -0,0 +1,35 @@ +package projector + +import ( + "time" + + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/fission/fission-workflow/pkg/types" +) + +type Projection interface { + // It does not make assumptions about the sequence of events. + Apply(state *types.WorkflowInvocationContainer, event ...*eventstore.Event) error + + Initial() *types.WorkflowInvocationContainer +} + +// Per object type view only!!! +type Projector interface { + // Get projection from cache or attempt to replay it. + Get(subject string) (*types.WorkflowInvocationContainer, error) + + // Replays events, if it already exists, it is invalidated and replayed + Fetch(subject string) error + + // Suscribe to updates in this projector + Subscribe(chan *InvocationNotification) error +} + +// In order to avoid leaking eventstore details +type InvocationNotification struct { + Id string + Data *types.WorkflowInvocationContainer + Type types.InvocationEvent + Time *time.Time +} From 6643984f9dfad6862345af04551ab7aa603b26e6 Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Thu, 27 Jul 2017 13:50:42 -0700 Subject: [PATCH 04/24] Add initial api + apiserver --- pkg/api/BUILD.bazel | 21 + pkg/api/invocation.go | 58 +++ pkg/apiserver/BUILD.bazel | 33 ++ pkg/apiserver/admin.go | 16 + pkg/apiserver/apiserver.pb.go | 710 +++++++++++++++++++++++++++ pkg/apiserver/apiserver.pb.gw.go | 618 +++++++++++++++++++++++ pkg/apiserver/apiserver.proto | 126 +++++ pkg/apiserver/apiserver.swagger.json | 333 +++++++++++++ pkg/apiserver/invocation.go | 43 ++ pkg/apiserver/workflow.go | 77 +++ 10 files changed, 2035 insertions(+) create mode 100644 pkg/api/BUILD.bazel create mode 100644 pkg/api/invocation.go create mode 100644 pkg/apiserver/BUILD.bazel create mode 100644 pkg/apiserver/admin.go create mode 100644 pkg/apiserver/apiserver.pb.go create mode 100644 pkg/apiserver/apiserver.pb.gw.go create mode 100644 pkg/apiserver/apiserver.proto create mode 100644 pkg/apiserver/apiserver.swagger.json create mode 100644 pkg/apiserver/invocation.go create mode 100644 pkg/apiserver/workflow.go diff --git a/pkg/api/BUILD.bazel b/pkg/api/BUILD.bazel new file mode 100644 index 00000000..5e5bed4b --- /dev/null +++ b/pkg/api/BUILD.bazel @@ -0,0 +1,21 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["invocation.go"], + visibility = ["//visibility:public"], + deps = [ + "//pkg/eventstore:go_default_library", + "//pkg/eventstore/eventids:go_default_library", + "//pkg/eventstore/events:go_default_library", + "//pkg/types:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes:go_default_library", + "//vendor/github.com/satori/go.uuid:go_default_library", + ], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["api.proto"], + visibility = ["//visibility:public"], +) diff --git a/pkg/api/invocation.go b/pkg/api/invocation.go new file mode 100644 index 00000000..e3dd6030 --- /dev/null +++ b/pkg/api/invocation.go @@ -0,0 +1,58 @@ +package api + +import ( + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/fission/fission-workflow/pkg/eventstore/eventids" + "github.com/fission/fission-workflow/pkg/eventstore/events" + "github.com/fission/fission-workflow/pkg/types" + "github.com/golang/protobuf/ptypes" + "github.com/satori/go.uuid" +) + +const ( + INVOCATION_SUBJECT = "invocation" +) + +type InvocationApi struct { + esClient eventstore.Client +} + +func NewInvocationApi(esClient eventstore.Client) *InvocationApi { + return &InvocationApi{esClient} +} + +// Commands +func (ia *InvocationApi) Invoke(invocation *types.WorkflowInvocationSpec) (string, error) { + // TODO validation + id := uuid.NewV4().String() + + data, err := ptypes.MarshalAny(invocation) + if err != nil { + return "", err + } + + event := events.New(ia.createSubject(id), types.InvocationEvent_INVOCATION_CREATED.String(), data) + + err = ia.esClient.Append(event) + if err != nil { + return "", err + } + + return id, nil +} + +func (ia *InvocationApi) Cancel(invocationId string) error { + // TODO validation + + event := events.New(ia.createSubject(invocationId), types.InvocationEvent_INVOCATION_CANCELED.String(), nil) + + err := ia.esClient.Append(event) + if err != nil { + return err + } + return nil +} + +func (ia *InvocationApi) createSubject(invocationId string) *eventstore.EventID { + return eventids.NewSubject(INVOCATION_SUBJECT, invocationId) +} diff --git a/pkg/apiserver/BUILD.bazel b/pkg/apiserver/BUILD.bazel new file mode 100644 index 00000000..4388e008 --- /dev/null +++ b/pkg/apiserver/BUILD.bazel @@ -0,0 +1,33 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "admin.go", + "apiserver.pb.go", + "apiserver.pb.gw.go", + "invocation.go", + "workflow.go", + ], + visibility = ["//visibility:public"], + deps = [ + "//pkg/api:go_default_library", + "//pkg/eventstore:go_default_library", + "//pkg/types:go_default_library", + "//vendor/github.com/golang/protobuf/proto:go_default_library", + "//vendor/github.com/grpc-ecosystem/grpc-gateway/runtime:go_default_library", + "//vendor/github.com/grpc-ecosystem/grpc-gateway/utilities:go_default_library", + "//vendor/golang.org/x/net/context:go_default_library", + "//vendor/google.golang.org/genproto/googleapis/api/annotations:go_default_library", + "//vendor/google.golang.org/grpc:go_default_library", + "//vendor/google.golang.org/grpc/codes:go_default_library", + "//vendor/google.golang.org/grpc/grpclog:go_default_library", + "//vendor/google.golang.org/grpc/status:go_default_library", + ], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["apiserver.proto"], + visibility = ["//visibility:public"], +) diff --git a/pkg/apiserver/admin.go b/pkg/apiserver/admin.go new file mode 100644 index 00000000..2461c793 --- /dev/null +++ b/pkg/apiserver/admin.go @@ -0,0 +1,16 @@ +package apiserver + +import ( + "github.com/fission/fission-workflow/pkg/types" + "golang.org/x/net/context" +) + +type GrpcAdminApiServer struct { +} + +func (as *GrpcAdminApiServer) Status(ctx context.Context, _ *types.Empty) (*Health, error) { + + return &Health{ + Status: "OK!", + }, nil +} diff --git a/pkg/apiserver/apiserver.pb.go b/pkg/apiserver/apiserver.pb.go new file mode 100644 index 00000000..f1d9c3ee --- /dev/null +++ b/pkg/apiserver/apiserver.pb.go @@ -0,0 +1,710 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: pkg/apiserver/apiserver.proto + +/* +Package apiserver is a generated protocol buffer package. + +It is generated from these files: + pkg/apiserver/apiserver.proto + +It has these top-level messages: + WorkflowIdentifier + SearchWorkflowRequest + SearchWorkflowResponse + WorkflowInvocationIdentifier + WorkflowInvocationQuery + WorkflowInvocationList + WorkflowInvocationGetReponse + Health +*/ +package apiserver + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import types "github.com/fission/fission-workflow/pkg/types" +import eventstore "github.com/fission/fission-workflow/pkg/eventstore" +import _ "google.golang.org/genproto/googleapis/api/annotations" + +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type WorkflowIdentifier struct { + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` +} + +func (m *WorkflowIdentifier) Reset() { *m = WorkflowIdentifier{} } +func (m *WorkflowIdentifier) String() string { return proto.CompactTextString(m) } +func (*WorkflowIdentifier) ProtoMessage() {} +func (*WorkflowIdentifier) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *WorkflowIdentifier) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +type SearchWorkflowRequest struct { +} + +func (m *SearchWorkflowRequest) Reset() { *m = SearchWorkflowRequest{} } +func (m *SearchWorkflowRequest) String() string { return proto.CompactTextString(m) } +func (*SearchWorkflowRequest) ProtoMessage() {} +func (*SearchWorkflowRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +type SearchWorkflowResponse struct { + Data []*types.Workflow `protobuf:"bytes,1,rep,name=data" json:"data,omitempty"` +} + +func (m *SearchWorkflowResponse) Reset() { *m = SearchWorkflowResponse{} } +func (m *SearchWorkflowResponse) String() string { return proto.CompactTextString(m) } +func (*SearchWorkflowResponse) ProtoMessage() {} +func (*SearchWorkflowResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +func (m *SearchWorkflowResponse) GetData() []*types.Workflow { + if m != nil { + return m.Data + } + return nil +} + +type WorkflowInvocationIdentifier struct { + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` +} + +func (m *WorkflowInvocationIdentifier) Reset() { *m = WorkflowInvocationIdentifier{} } +func (m *WorkflowInvocationIdentifier) String() string { return proto.CompactTextString(m) } +func (*WorkflowInvocationIdentifier) ProtoMessage() {} +func (*WorkflowInvocationIdentifier) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +func (m *WorkflowInvocationIdentifier) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +type WorkflowInvocationQuery struct { + Subject string `protobuf:"bytes,1,opt,name=subject" json:"subject,omitempty"` +} + +func (m *WorkflowInvocationQuery) Reset() { *m = WorkflowInvocationQuery{} } +func (m *WorkflowInvocationQuery) String() string { return proto.CompactTextString(m) } +func (*WorkflowInvocationQuery) ProtoMessage() {} +func (*WorkflowInvocationQuery) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +func (m *WorkflowInvocationQuery) GetSubject() string { + if m != nil { + return m.Subject + } + return "" +} + +type WorkflowInvocationList struct { + Invocations []string `protobuf:"bytes,1,rep,name=invocations" json:"invocations,omitempty"` +} + +func (m *WorkflowInvocationList) Reset() { *m = WorkflowInvocationList{} } +func (m *WorkflowInvocationList) String() string { return proto.CompactTextString(m) } +func (*WorkflowInvocationList) ProtoMessage() {} +func (*WorkflowInvocationList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func (m *WorkflowInvocationList) GetInvocations() []string { + if m != nil { + return m.Invocations + } + return nil +} + +type WorkflowInvocationGetReponse struct { + Events []*eventstore.Event `protobuf:"bytes,1,rep,name=events" json:"events,omitempty"` +} + +func (m *WorkflowInvocationGetReponse) Reset() { *m = WorkflowInvocationGetReponse{} } +func (m *WorkflowInvocationGetReponse) String() string { return proto.CompactTextString(m) } +func (*WorkflowInvocationGetReponse) ProtoMessage() {} +func (*WorkflowInvocationGetReponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } + +func (m *WorkflowInvocationGetReponse) GetEvents() []*eventstore.Event { + if m != nil { + return m.Events + } + return nil +} + +type Health struct { + Status string `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` +} + +func (m *Health) Reset() { *m = Health{} } +func (m *Health) String() string { return proto.CompactTextString(m) } +func (*Health) ProtoMessage() {} +func (*Health) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } + +func (m *Health) GetStatus() string { + if m != nil { + return m.Status + } + return "" +} + +func init() { + proto.RegisterType((*WorkflowIdentifier)(nil), "apiserver.WorkflowIdentifier") + proto.RegisterType((*SearchWorkflowRequest)(nil), "apiserver.SearchWorkflowRequest") + proto.RegisterType((*SearchWorkflowResponse)(nil), "apiserver.SearchWorkflowResponse") + proto.RegisterType((*WorkflowInvocationIdentifier)(nil), "apiserver.WorkflowInvocationIdentifier") + proto.RegisterType((*WorkflowInvocationQuery)(nil), "apiserver.WorkflowInvocationQuery") + proto.RegisterType((*WorkflowInvocationList)(nil), "apiserver.WorkflowInvocationList") + proto.RegisterType((*WorkflowInvocationGetReponse)(nil), "apiserver.WorkflowInvocationGetReponse") + proto.RegisterType((*Health)(nil), "apiserver.Health") +} + +// 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 WorkflowAPI service + +type WorkflowAPIClient interface { + Create(ctx context.Context, in *types.Workflow, opts ...grpc.CallOption) (*types.Workflow, error) + Get(ctx context.Context, in *WorkflowIdentifier, opts ...grpc.CallOption) (*types.Workflow, error) + Search(ctx context.Context, in *SearchWorkflowRequest, opts ...grpc.CallOption) (*SearchWorkflowResponse, error) +} + +type workflowAPIClient struct { + cc *grpc.ClientConn +} + +func NewWorkflowAPIClient(cc *grpc.ClientConn) WorkflowAPIClient { + return &workflowAPIClient{cc} +} + +func (c *workflowAPIClient) Create(ctx context.Context, in *types.Workflow, opts ...grpc.CallOption) (*types.Workflow, error) { + out := new(types.Workflow) + err := grpc.Invoke(ctx, "/apiserver.WorkflowAPI/Create", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *workflowAPIClient) Get(ctx context.Context, in *WorkflowIdentifier, opts ...grpc.CallOption) (*types.Workflow, error) { + out := new(types.Workflow) + err := grpc.Invoke(ctx, "/apiserver.WorkflowAPI/Get", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *workflowAPIClient) Search(ctx context.Context, in *SearchWorkflowRequest, opts ...grpc.CallOption) (*SearchWorkflowResponse, error) { + out := new(SearchWorkflowResponse) + err := grpc.Invoke(ctx, "/apiserver.WorkflowAPI/Search", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for WorkflowAPI service + +type WorkflowAPIServer interface { + Create(context.Context, *types.Workflow) (*types.Workflow, error) + Get(context.Context, *WorkflowIdentifier) (*types.Workflow, error) + Search(context.Context, *SearchWorkflowRequest) (*SearchWorkflowResponse, error) +} + +func RegisterWorkflowAPIServer(s *grpc.Server, srv WorkflowAPIServer) { + s.RegisterService(&_WorkflowAPI_serviceDesc, srv) +} + +func _WorkflowAPI_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.Workflow) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkflowAPIServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.WorkflowAPI/Create", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkflowAPIServer).Create(ctx, req.(*types.Workflow)) + } + return interceptor(ctx, in, info, handler) +} + +func _WorkflowAPI_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WorkflowIdentifier) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkflowAPIServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.WorkflowAPI/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkflowAPIServer).Get(ctx, req.(*WorkflowIdentifier)) + } + return interceptor(ctx, in, info, handler) +} + +func _WorkflowAPI_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchWorkflowRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkflowAPIServer).Search(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.WorkflowAPI/Search", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkflowAPIServer).Search(ctx, req.(*SearchWorkflowRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _WorkflowAPI_serviceDesc = grpc.ServiceDesc{ + ServiceName: "apiserver.WorkflowAPI", + HandlerType: (*WorkflowAPIServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _WorkflowAPI_Create_Handler, + }, + { + MethodName: "Get", + Handler: _WorkflowAPI_Get_Handler, + }, + { + MethodName: "Search", + Handler: _WorkflowAPI_Search_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "pkg/apiserver/apiserver.proto", +} + +// Client API for WorkflowInvocationAPI service + +type WorkflowInvocationAPIClient interface { + // Create a new workflow invocation + // + // In case the invocation specification is missing fields or contains invalid fields, a HTTP 400 is returned. + Invoke(ctx context.Context, in *types.WorkflowInvocationSpec, opts ...grpc.CallOption) (*WorkflowInvocationIdentifier, error) + // Cancel a workflow invocation + // + // This action is irreverisble. A canceled invocation cannot be resumed or restarted. + // In case that an invocation already is canceled, has failed or has completed, nothing happens. + // In case that an invocation does not exist a HTTP 404 error status is returned. + Cancel(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*types.Empty, error) + // Get the specification and status of a workflow invocation + // + // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. + // To lighten the request load, consider using a more specific request. + Get(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*WorkflowInvocationGetReponse, error) + // Search for workflow invocations based on a query + // + // By default the search returns at most 10 workflow invocations in no specific order. + Search(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*WorkflowInvocationList, error) +} + +type workflowInvocationAPIClient struct { + cc *grpc.ClientConn +} + +func NewWorkflowInvocationAPIClient(cc *grpc.ClientConn) WorkflowInvocationAPIClient { + return &workflowInvocationAPIClient{cc} +} + +func (c *workflowInvocationAPIClient) Invoke(ctx context.Context, in *types.WorkflowInvocationSpec, opts ...grpc.CallOption) (*WorkflowInvocationIdentifier, error) { + out := new(WorkflowInvocationIdentifier) + err := grpc.Invoke(ctx, "/apiserver.WorkflowInvocationAPI/Invoke", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *workflowInvocationAPIClient) Cancel(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*types.Empty, error) { + out := new(types.Empty) + err := grpc.Invoke(ctx, "/apiserver.WorkflowInvocationAPI/Cancel", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *workflowInvocationAPIClient) Get(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*WorkflowInvocationGetReponse, error) { + out := new(WorkflowInvocationGetReponse) + err := grpc.Invoke(ctx, "/apiserver.WorkflowInvocationAPI/Get", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *workflowInvocationAPIClient) Search(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*WorkflowInvocationList, error) { + out := new(WorkflowInvocationList) + err := grpc.Invoke(ctx, "/apiserver.WorkflowInvocationAPI/Search", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for WorkflowInvocationAPI service + +type WorkflowInvocationAPIServer interface { + // Create a new workflow invocation + // + // In case the invocation specification is missing fields or contains invalid fields, a HTTP 400 is returned. + Invoke(context.Context, *types.WorkflowInvocationSpec) (*WorkflowInvocationIdentifier, error) + // Cancel a workflow invocation + // + // This action is irreverisble. A canceled invocation cannot be resumed or restarted. + // In case that an invocation already is canceled, has failed or has completed, nothing happens. + // In case that an invocation does not exist a HTTP 404 error status is returned. + Cancel(context.Context, *WorkflowInvocationIdentifier) (*types.Empty, error) + // Get the specification and status of a workflow invocation + // + // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. + // To lighten the request load, consider using a more specific request. + Get(context.Context, *WorkflowInvocationIdentifier) (*WorkflowInvocationGetReponse, error) + // Search for workflow invocations based on a query + // + // By default the search returns at most 10 workflow invocations in no specific order. + Search(context.Context, *types.Empty) (*WorkflowInvocationList, error) +} + +func RegisterWorkflowInvocationAPIServer(s *grpc.Server, srv WorkflowInvocationAPIServer) { + s.RegisterService(&_WorkflowInvocationAPI_serviceDesc, srv) +} + +func _WorkflowInvocationAPI_Invoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.WorkflowInvocationSpec) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkflowInvocationAPIServer).Invoke(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.WorkflowInvocationAPI/Invoke", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkflowInvocationAPIServer).Invoke(ctx, req.(*types.WorkflowInvocationSpec)) + } + return interceptor(ctx, in, info, handler) +} + +func _WorkflowInvocationAPI_Cancel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WorkflowInvocationIdentifier) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkflowInvocationAPIServer).Cancel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.WorkflowInvocationAPI/Cancel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkflowInvocationAPIServer).Cancel(ctx, req.(*WorkflowInvocationIdentifier)) + } + return interceptor(ctx, in, info, handler) +} + +func _WorkflowInvocationAPI_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WorkflowInvocationIdentifier) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkflowInvocationAPIServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.WorkflowInvocationAPI/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkflowInvocationAPIServer).Get(ctx, req.(*WorkflowInvocationIdentifier)) + } + return interceptor(ctx, in, info, handler) +} + +func _WorkflowInvocationAPI_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkflowInvocationAPIServer).Search(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.WorkflowInvocationAPI/Search", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkflowInvocationAPIServer).Search(ctx, req.(*types.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +var _WorkflowInvocationAPI_serviceDesc = grpc.ServiceDesc{ + ServiceName: "apiserver.WorkflowInvocationAPI", + HandlerType: (*WorkflowInvocationAPIServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Invoke", + Handler: _WorkflowInvocationAPI_Invoke_Handler, + }, + { + MethodName: "Cancel", + Handler: _WorkflowInvocationAPI_Cancel_Handler, + }, + { + MethodName: "Get", + Handler: _WorkflowInvocationAPI_Get_Handler, + }, + { + MethodName: "Search", + Handler: _WorkflowInvocationAPI_Search_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "pkg/apiserver/apiserver.proto", +} + +// Client API for AdminAPI service + +type AdminAPIClient interface { + Status(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*Health, error) +} + +type adminAPIClient struct { + cc *grpc.ClientConn +} + +func NewAdminAPIClient(cc *grpc.ClientConn) AdminAPIClient { + return &adminAPIClient{cc} +} + +func (c *adminAPIClient) Status(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*Health, error) { + out := new(Health) + err := grpc.Invoke(ctx, "/apiserver.AdminAPI/Status", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for AdminAPI service + +type AdminAPIServer interface { + Status(context.Context, *types.Empty) (*Health, error) +} + +func RegisterAdminAPIServer(s *grpc.Server, srv AdminAPIServer) { + s.RegisterService(&_AdminAPI_serviceDesc, srv) +} + +func _AdminAPI_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminAPIServer).Status(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.AdminAPI/Status", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminAPIServer).Status(ctx, req.(*types.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +var _AdminAPI_serviceDesc = grpc.ServiceDesc{ + ServiceName: "apiserver.AdminAPI", + HandlerType: (*AdminAPIServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Status", + Handler: _AdminAPI_Status_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "pkg/apiserver/apiserver.proto", +} + +// Client API for FissionEnvironmentProxy service + +type FissionEnvironmentProxyClient interface { + Specialize(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) + Invoke(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) +} + +type fissionEnvironmentProxyClient struct { + cc *grpc.ClientConn +} + +func NewFissionEnvironmentProxyClient(cc *grpc.ClientConn) FissionEnvironmentProxyClient { + return &fissionEnvironmentProxyClient{cc} +} + +func (c *fissionEnvironmentProxyClient) Specialize(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { + out := new(types.Empty) + err := grpc.Invoke(ctx, "/apiserver.FissionEnvironmentProxy/Specialize", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *fissionEnvironmentProxyClient) Invoke(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { + out := new(types.Empty) + err := grpc.Invoke(ctx, "/apiserver.FissionEnvironmentProxy/Invoke", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for FissionEnvironmentProxy service + +type FissionEnvironmentProxyServer interface { + Specialize(context.Context, *types.Empty) (*types.Empty, error) + Invoke(context.Context, *types.Empty) (*types.Empty, error) +} + +func RegisterFissionEnvironmentProxyServer(s *grpc.Server, srv FissionEnvironmentProxyServer) { + s.RegisterService(&_FissionEnvironmentProxy_serviceDesc, srv) +} + +func _FissionEnvironmentProxy_Specialize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FissionEnvironmentProxyServer).Specialize(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.FissionEnvironmentProxy/Specialize", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FissionEnvironmentProxyServer).Specialize(ctx, req.(*types.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _FissionEnvironmentProxy_Invoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FissionEnvironmentProxyServer).Invoke(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.FissionEnvironmentProxy/Invoke", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FissionEnvironmentProxyServer).Invoke(ctx, req.(*types.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +var _FissionEnvironmentProxy_serviceDesc = grpc.ServiceDesc{ + ServiceName: "apiserver.FissionEnvironmentProxy", + HandlerType: (*FissionEnvironmentProxyServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Specialize", + Handler: _FissionEnvironmentProxy_Specialize_Handler, + }, + { + MethodName: "Invoke", + Handler: _FissionEnvironmentProxy_Invoke_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "pkg/apiserver/apiserver.proto", +} + +func init() { proto.RegisterFile("pkg/apiserver/apiserver.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 595 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0x4f, 0x6f, 0x12, 0x5f, + 0x14, 0xfd, 0x01, 0xbf, 0x4c, 0x3b, 0x97, 0x88, 0xed, 0xd3, 0x02, 0x99, 0x14, 0x83, 0x2f, 0x26, + 0x36, 0x4d, 0x9c, 0x89, 0xd4, 0xc4, 0xd8, 0x85, 0xb1, 0x21, 0x48, 0x9b, 0xb8, 0xa8, 0xb0, 0x70, + 0xeb, 0x30, 0x73, 0x81, 0x27, 0xf0, 0xde, 0x74, 0xde, 0x83, 0x8a, 0xc6, 0x8d, 0x7b, 0x57, 0x7e, + 0x34, 0xbf, 0x82, 0x6b, 0x3f, 0x83, 0x99, 0xff, 0x63, 0x87, 0x10, 0x36, 0xf0, 0xde, 0x9d, 0x33, + 0xe7, 0x9e, 0x7b, 0xcf, 0xc9, 0x40, 0xcb, 0x9b, 0x4d, 0x2c, 0xdb, 0x63, 0x12, 0xfd, 0x15, 0xfa, + 0xd9, 0xc9, 0xf4, 0x7c, 0xa1, 0x04, 0xd1, 0xd3, 0x82, 0xf1, 0x6a, 0xc2, 0xd4, 0x74, 0x39, 0x32, + 0x1d, 0xb1, 0xb0, 0xc6, 0x4c, 0x4a, 0x26, 0x78, 0xf2, 0xff, 0xec, 0x56, 0xf8, 0xb3, 0xf1, 0x5c, + 0xdc, 0x5a, 0x01, 0x9b, 0x5a, 0x7b, 0x28, 0xa3, 0xdf, 0x88, 0xc5, 0xe8, 0xee, 0xfa, 0x2a, 0xae, + 0x90, 0x2b, 0xa9, 0x84, 0x8f, 0xb9, 0x63, 0x4c, 0x72, 0x3c, 0x11, 0x62, 0x32, 0xc7, 0x40, 0xa2, + 0x65, 0x73, 0x2e, 0x94, 0xad, 0x98, 0xe0, 0x71, 0x0b, 0xfa, 0x04, 0xc8, 0x87, 0x98, 0xe9, 0xca, + 0x45, 0xae, 0xd8, 0x98, 0xa1, 0x4f, 0x6a, 0x50, 0x66, 0x6e, 0xb3, 0xd4, 0x2e, 0x9d, 0xe8, 0x83, + 0x32, 0x73, 0x69, 0x03, 0x8e, 0x86, 0x68, 0xfb, 0xce, 0x34, 0xc1, 0x0e, 0xf0, 0x66, 0x89, 0x52, + 0xd1, 0x97, 0x50, 0xbf, 0xfb, 0x40, 0x7a, 0x82, 0x4b, 0x24, 0x2d, 0xf8, 0xdf, 0xb5, 0x95, 0xdd, + 0x2c, 0xb5, 0x2b, 0x27, 0xd5, 0x8e, 0x6e, 0xa6, 0x80, 0xb0, 0x4c, 0x4d, 0x38, 0x4e, 0xfb, 0xf2, + 0x95, 0x70, 0x42, 0x51, 0x5b, 0x14, 0x9c, 0x41, 0xa3, 0x88, 0x7f, 0xbf, 0x44, 0x7f, 0x4d, 0x9a, + 0xb0, 0x27, 0x97, 0xa3, 0x4f, 0xe8, 0xa8, 0x18, 0x9f, 0x5c, 0xe9, 0x39, 0xd4, 0x8b, 0x2f, 0xbd, + 0x63, 0x52, 0x91, 0x36, 0x54, 0x59, 0x5a, 0x91, 0xa1, 0x48, 0x7d, 0x90, 0x2f, 0xd1, 0xd7, 0x9b, + 0x04, 0xf6, 0x51, 0x0d, 0x30, 0x9a, 0xef, 0x11, 0x68, 0xd1, 0xaa, 0xe3, 0x09, 0x35, 0xb3, 0x17, + 0x5c, 0x07, 0x71, 0x95, 0xb6, 0x41, 0xbb, 0x44, 0x7b, 0xae, 0xa6, 0xa4, 0x0e, 0x9a, 0x54, 0xb6, + 0x5a, 0xca, 0x58, 0x5e, 0x7c, 0xeb, 0xfc, 0x29, 0x41, 0x35, 0x69, 0x71, 0x71, 0x7d, 0x45, 0x5e, + 0x80, 0xd6, 0xf5, 0xd1, 0x56, 0x48, 0xb2, 0x6d, 0x19, 0xd9, 0x91, 0x3e, 0xfc, 0xfe, 0xeb, 0xf7, + 0xcf, 0x72, 0x8d, 0xea, 0x56, 0xe2, 0xfd, 0x79, 0xe9, 0x94, 0xf4, 0xa1, 0xd2, 0x47, 0x45, 0x5a, + 0x66, 0x16, 0xc1, 0xa2, 0xa1, 0x79, 0x9a, 0x7a, 0x48, 0x73, 0x40, 0x6a, 0x29, 0x8d, 0xf5, 0x95, + 0xb9, 0xdf, 0xc8, 0x47, 0xd0, 0x22, 0x2b, 0x49, 0x3b, 0xc7, 0xb5, 0xd1, 0x76, 0xe3, 0xf1, 0x16, + 0x44, 0xe4, 0x3f, 0x3d, 0x0c, 0xdb, 0x54, 0x49, 0xa6, 0xb6, 0xf3, 0xa3, 0x02, 0x47, 0xc5, 0x9d, + 0x06, 0xa3, 0x8f, 0x40, 0x0b, 0x0a, 0x33, 0x24, 0x0d, 0xb3, 0x88, 0x18, 0x7a, 0xe8, 0x18, 0x4f, + 0x37, 0x0d, 0xb8, 0x21, 0x39, 0xc9, 0x7c, 0xb4, 0x6a, 0x65, 0x76, 0x06, 0x8b, 0x1a, 0x82, 0xd6, + 0xb5, 0xb9, 0x83, 0x73, 0xb2, 0x2b, 0x95, 0xa1, 0x99, 0xbd, 0x85, 0xa7, 0xd6, 0xb4, 0x19, 0x52, + 0x92, 0xd3, 0x83, 0x1c, 0x65, 0xb4, 0xb4, 0x9b, 0x68, 0xfb, 0x3b, 0x33, 0x6e, 0x07, 0x66, 0xf1, + 0x4a, 0x5a, 0x92, 0x62, 0xcb, 0xcb, 0xd4, 0xa7, 0x58, 0xde, 0x3f, 0x6e, 0x6c, 0xce, 0x3b, 0x7d, + 0x10, 0xd2, 0xdd, 0x23, 0xf9, 0xa5, 0x74, 0xde, 0xc0, 0xfe, 0x85, 0xbb, 0x60, 0x3c, 0x0e, 0xdf, + 0x30, 0x8c, 0x65, 0xca, 0x7a, 0x98, 0x63, 0x8d, 0x92, 0x4c, 0xef, 0x87, 0x2c, 0x3a, 0xd9, 0xb3, + 0xe2, 0x08, 0x7b, 0xd0, 0x78, 0x1b, 0x7d, 0x8f, 0x7a, 0x7c, 0xc5, 0x7c, 0xc1, 0x17, 0xc8, 0xd5, + 0xb5, 0x2f, 0x3e, 0xaf, 0xc9, 0x73, 0x80, 0xc0, 0x37, 0x66, 0xcf, 0xd9, 0x17, 0x4c, 0x49, 0x93, + 0x8d, 0x66, 0x7a, 0x64, 0x06, 0xa2, 0x69, 0x0a, 0xee, 0xc2, 0xf7, 0x43, 0x78, 0x99, 0xfc, 0x37, + 0xd2, 0xc2, 0xcf, 0xd6, 0xd9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf8, 0xdb, 0xab, 0x54, 0x80, + 0x05, 0x00, 0x00, +} diff --git a/pkg/apiserver/apiserver.pb.gw.go b/pkg/apiserver/apiserver.pb.gw.go new file mode 100644 index 00000000..9bc3345d --- /dev/null +++ b/pkg/apiserver/apiserver.pb.gw.go @@ -0,0 +1,618 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: pkg/apiserver/apiserver.proto + +/* +Package apiserver is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package apiserver + +import ( + "io" + "net/http" + + "github.com/fission/fission-workflow/pkg/types" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "golang.org/x/net/context" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/status" +) + +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray + +func request_WorkflowAPI_Create_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq types.Workflow + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_WorkflowAPI_Get_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq WorkflowIdentifier + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := client.Get(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_WorkflowAPI_Search_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SearchWorkflowRequest + var metadata runtime.ServerMetadata + + msg, err := client.Search(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_WorkflowInvocationAPI_Invoke_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowInvocationAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq types.WorkflowInvocationSpec + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Invoke(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_WorkflowInvocationAPI_Cancel_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowInvocationAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq WorkflowInvocationIdentifier + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := client.Cancel(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_WorkflowInvocationAPI_Get_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowInvocationAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq WorkflowInvocationIdentifier + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := client.Get(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_WorkflowInvocationAPI_Search_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowInvocationAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq types.Empty + var metadata runtime.ServerMetadata + + msg, err := client.Search(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_AdminAPI_Status_0(ctx context.Context, marshaler runtime.Marshaler, client AdminAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq types.Empty + var metadata runtime.ServerMetadata + + msg, err := client.Status(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_FissionEnvironmentProxy_Specialize_0(ctx context.Context, marshaler runtime.Marshaler, client FissionEnvironmentProxyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq types.Empty + var metadata runtime.ServerMetadata + + msg, err := client.Specialize(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +// RegisterWorkflowAPIHandlerFromEndpoint is same as RegisterWorkflowAPIHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterWorkflowAPIHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterWorkflowAPIHandler(ctx, mux, conn) +} + +// RegisterWorkflowAPIHandler registers the http handlers for service WorkflowAPI to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterWorkflowAPIHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + client := NewWorkflowAPIClient(conn) + + mux.Handle("POST", pattern_WorkflowAPI_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_WorkflowAPI_Create_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_WorkflowAPI_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_WorkflowAPI_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_WorkflowAPI_Get_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_WorkflowAPI_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_WorkflowAPI_Search_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_WorkflowAPI_Search_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_WorkflowAPI_Search_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_WorkflowAPI_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"workflow"}, "")) + + pattern_WorkflowAPI_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"workflow", "id"}, "")) + + pattern_WorkflowAPI_Search_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"workflow"}, "")) +) + +var ( + forward_WorkflowAPI_Create_0 = runtime.ForwardResponseMessage + + forward_WorkflowAPI_Get_0 = runtime.ForwardResponseMessage + + forward_WorkflowAPI_Search_0 = runtime.ForwardResponseMessage +) + +// RegisterWorkflowInvocationAPIHandlerFromEndpoint is same as RegisterWorkflowInvocationAPIHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterWorkflowInvocationAPIHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterWorkflowInvocationAPIHandler(ctx, mux, conn) +} + +// RegisterWorkflowInvocationAPIHandler registers the http handlers for service WorkflowInvocationAPI to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterWorkflowInvocationAPIHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + client := NewWorkflowInvocationAPIClient(conn) + + mux.Handle("POST", pattern_WorkflowInvocationAPI_Invoke_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_WorkflowInvocationAPI_Invoke_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_WorkflowInvocationAPI_Invoke_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_WorkflowInvocationAPI_Cancel_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_WorkflowInvocationAPI_Cancel_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_WorkflowInvocationAPI_Cancel_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_WorkflowInvocationAPI_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_WorkflowInvocationAPI_Get_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_WorkflowInvocationAPI_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_WorkflowInvocationAPI_Search_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_WorkflowInvocationAPI_Search_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_WorkflowInvocationAPI_Search_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_WorkflowInvocationAPI_Invoke_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"invocation"}, "")) + + pattern_WorkflowInvocationAPI_Cancel_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"invocation", "id"}, "")) + + pattern_WorkflowInvocationAPI_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"invocation", "id"}, "")) + + pattern_WorkflowInvocationAPI_Search_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"invocation"}, "")) +) + +var ( + forward_WorkflowInvocationAPI_Invoke_0 = runtime.ForwardResponseMessage + + forward_WorkflowInvocationAPI_Cancel_0 = runtime.ForwardResponseMessage + + forward_WorkflowInvocationAPI_Get_0 = runtime.ForwardResponseMessage + + forward_WorkflowInvocationAPI_Search_0 = runtime.ForwardResponseMessage +) + +// RegisterAdminAPIHandlerFromEndpoint is same as RegisterAdminAPIHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterAdminAPIHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterAdminAPIHandler(ctx, mux, conn) +} + +// RegisterAdminAPIHandler registers the http handlers for service AdminAPI to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterAdminAPIHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + client := NewAdminAPIClient(conn) + + mux.Handle("GET", pattern_AdminAPI_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminAPI_Status_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminAPI_Status_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_AdminAPI_Status_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"status"}, "")) +) + +var ( + forward_AdminAPI_Status_0 = runtime.ForwardResponseMessage +) + +// RegisterFissionEnvironmentProxyHandlerFromEndpoint is same as RegisterFissionEnvironmentProxyHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterFissionEnvironmentProxyHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterFissionEnvironmentProxyHandler(ctx, mux, conn) +} + +// RegisterFissionEnvironmentProxyHandler registers the http handlers for service FissionEnvironmentProxy to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterFissionEnvironmentProxyHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + client := NewFissionEnvironmentProxyClient(conn) + + mux.Handle("GET", pattern_FissionEnvironmentProxy_Specialize_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_FissionEnvironmentProxy_Specialize_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_FissionEnvironmentProxy_Specialize_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_FissionEnvironmentProxy_Specialize_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"specialize"}, "")) +) + +var ( + forward_FissionEnvironmentProxy_Specialize_0 = runtime.ForwardResponseMessage +) diff --git a/pkg/apiserver/apiserver.proto b/pkg/apiserver/apiserver.proto new file mode 100644 index 00000000..be1fd372 --- /dev/null +++ b/pkg/apiserver/apiserver.proto @@ -0,0 +1,126 @@ +syntax = "proto3"; + +import "github.com/fission/fission-workflow/pkg/types/types.proto"; +import "github.com/fission/fission-workflow/pkg/eventstore/eventstore.proto"; +import "google/api/annotations.proto"; + +package apiserver; + +service WorkflowAPI { + rpc Create (Workflow) returns (Workflow) { + option (google.api.http) = { + post: "/workflow" + body: "*" + }; + } + + rpc Get (WorkflowIdentifier) returns (Workflow) { + option (google.api.http) = { + get: "/workflow/{id}" + }; + } + + rpc Search (SearchWorkflowRequest) returns (SearchWorkflowResponse) { + option (google.api.http) = { + get: "/workflow" + }; + } +} + +message WorkflowIdentifier { + string id = 1; +} + +message SearchWorkflowRequest { +} + +message SearchWorkflowResponse { + repeated Workflow data = 1; +} + +// The WorkflowInvocationAPI specifies the the externally exposed actions available for workflow invocations. +service WorkflowInvocationAPI { + + // Create a new workflow invocation + // + // In case the invocation specification is missing fields or contains invalid fields, a HTTP 400 is returned. + rpc Invoke (WorkflowInvocationSpec) returns (WorkflowInvocationIdentifier) { + option (google.api.http) = { + post: "/invocation" + body: "*" + }; + } + + // Cancel a workflow invocation + // + // This action is irreverisble. A canceled invocation cannot be resumed or restarted. + // In case that an invocation already is canceled, has failed or has completed, nothing happens. + // In case that an invocation does not exist a HTTP 404 error status is returned. + rpc Cancel (WorkflowInvocationIdentifier) returns (Empty) { + option (google.api.http) = { + delete: "/invocation/{id}" + }; + } + + // Get the specification and status of a workflow invocation + // + // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. + // To lighten the request load, consider using a more specific request. + rpc Get (WorkflowInvocationIdentifier) returns (WorkflowInvocationGetReponse) { + option (google.api.http) = { + get: "/invocation/{id}" + }; + } + + // Search for workflow invocations based on a query + // + // By default the search returns at most 10 workflow invocations in no specific order. + rpc Search (Empty) returns (WorkflowInvocationList) { + option (google.api.http) = { + get: "/invocation" + }; + } +} + +message WorkflowInvocationIdentifier { + string id = 1; +} + +message WorkflowInvocationQuery { + string subject = 1; +} + +message WorkflowInvocationList { + repeated string invocations = 1; +} + +message WorkflowInvocationGetReponse { + repeated Event events = 1; +} + + +service AdminAPI { + rpc Status (Empty) returns (Health) { + option (google.api.http) = { + get: "/status" + }; + } +} + +message Health { + string status = 1; +} + +service FissionEnvironmentProxy { + rpc Specialize (Empty) returns (Empty) { + option (google.api.http) = { + get: "/specialize" + }; + } + + rpc Invoke (Empty) returns (Empty) { + option (google.api.http) = { + get: "" + }; + } +} diff --git a/pkg/apiserver/apiserver.swagger.json b/pkg/apiserver/apiserver.swagger.json new file mode 100644 index 00000000..e1d45457 --- /dev/null +++ b/pkg/apiserver/apiserver.swagger.json @@ -0,0 +1,333 @@ +{ + "swagger": "2.0", + "info": { + "title": "pkg/apiserver/apiserver.proto", + "version": "version not set" + }, + "schemes": [ + "http", + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/invocation": { + "get": { + "summary": "Search for workflow invocations based on a query", + "description": "By default the search returns at most 10 workflow invocations in no specific order.", + "operationId": "Search", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/apiserverWorkflowInvocationList" + } + } + }, + "tags": [ + "WorkflowInvocationAPI" + ] + }, + "post": { + "summary": "Create a new workflow invocation", + "description": "In case the invocation specification is missing fields or contains invalid fields, a HTTP 400 is returned.", + "operationId": "Invoke", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/apiserverWorkflowInvocationIdentifier" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/WorkflowInvocationSpec" + } + } + ], + "tags": [ + "WorkflowInvocationAPI" + ] + } + }, + "/invocation/{id}": { + "get": { + "summary": "Get the specification and status of a workflow invocation", + "description": "Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs.\nTo lighten the request load, consider using a more specific request.", + "operationId": "Get", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/apiserverWorkflowInvocationGetReponse" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "WorkflowInvocationAPI" + ] + }, + "delete": { + "summary": "Cancel a workflow invocation", + "description": "This action is irreverisble. A canceled invocation cannot be resumed or restarted.\nIn case that an invocation already is canceled, has failed or has completed, nothing happens.\nIn case that an invocation does not exist a HTTP 404 error status is returned.", + "operationId": "Cancel", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/Empty" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "WorkflowInvocationAPI" + ] + } + }, + "/specialize": { + "get": { + "operationId": "Specialize", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/Empty" + } + } + }, + "tags": [ + "FissionEnvironmentProxy" + ] + } + }, + "/status": { + "get": { + "operationId": "Status", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/apiserverHealth" + } + } + }, + "tags": [ + "AdminAPI" + ] + } + }, + "/workflow": { + "get": { + "operationId": "Search", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/apiserverSearchWorkflowResponse" + } + } + }, + "tags": [ + "WorkflowAPI" + ] + }, + "post": { + "operationId": "Create", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/Workflow" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Workflow" + } + } + ], + "tags": [ + "WorkflowAPI" + ] + } + }, + "/workflow/{id}": { + "get": { + "operationId": "Get", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/Workflow" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "WorkflowAPI" + ] + } + } + }, + "definitions": { + "Empty": { + "type": "object", + "title": "Util" + }, + "Event": { + "type": "object", + "properties": { + "eventId": { + "$ref": "#/definitions/EventID" + }, + "type": { + "type": "string" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "data": { + "$ref": "#/definitions/protobufAny" + } + } + }, + "EventID": { + "type": "object", + "properties": { + "subjects": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + } + } + }, + "Workflow": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "WorkflowInvocationSpec": { + "type": "object", + "properties": { + "workflowId": { + "type": "string" + } + } + }, + "apiserverHealth": { + "type": "object", + "properties": { + "status": { + "type": "string" + } + } + }, + "apiserverSearchWorkflowResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/Workflow" + } + } + } + }, + "apiserverWorkflowInvocationGetReponse": { + "type": "object", + "properties": { + "events": { + "type": "array", + "items": { + "$ref": "#/definitions/Event" + } + } + } + }, + "apiserverWorkflowInvocationIdentifier": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "apiserverWorkflowInvocationList": { + "type": "object", + "properties": { + "invocations": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "description": "A URL/resource name whose content describes the type of the\nserialized protocol buffer message.\n\nFor URLs which use the scheme `http`, `https`, or no scheme, the\nfollowing restrictions and interpretations apply:\n\n* If no scheme is provided, `https` is assumed.\n* The last segment of the URL's path must represent the fully\n qualified name of the type (as in `path/google.protobuf.Duration`).\n The name should be in a canonical form (e.g., leading \".\" is\n not accepted).\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + }, + "value": { + "type": "string", + "format": "byte", + "description": "Must be a valid serialized protocol buffer of the above specified type." + } + }, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + } + } +} diff --git a/pkg/apiserver/invocation.go b/pkg/apiserver/invocation.go new file mode 100644 index 00000000..ec14f010 --- /dev/null +++ b/pkg/apiserver/invocation.go @@ -0,0 +1,43 @@ +package apiserver + +import ( + "github.com/fission/fission-workflow/pkg/api" + "github.com/fission/fission-workflow/pkg/types" + "golang.org/x/net/context" +) + +// Events all belong to the same invocation ID, but have different sequence numbers. EventID: # +// TODO might need to optimize the bucket use in boltdb +type grpcInvocationApiServer struct { + api *api.InvocationApi +} + +func NewGrpcInvocationApiServer(api *api.InvocationApi) WorkflowInvocationAPIServer { + return &grpcInvocationApiServer{api} +} + +func (gi *grpcInvocationApiServer) Invoke(ctx context.Context, invocation *types.WorkflowInvocationSpec) (*WorkflowInvocationIdentifier, error) { + eventId, err := gi.api.Invoke(invocation) + if err != nil { + return nil, err + } + + return &WorkflowInvocationIdentifier{eventId}, nil +} + +func (gi *grpcInvocationApiServer) Cancel(ctx context.Context, invocationId *WorkflowInvocationIdentifier) (*types.Empty, error) { + err := gi.api.Cancel(invocationId.GetId()) + if err != nil { + return nil, err + } + + return &types.Empty{}, nil +} + +func (gi *grpcInvocationApiServer) Get(context.Context, *WorkflowInvocationIdentifier) (*WorkflowInvocationGetReponse, error) { + panic("implement me") +} + +func (gi *grpcInvocationApiServer) Search(context.Context, *types.Empty) (*WorkflowInvocationList, error) { + panic("implement me") +} diff --git a/pkg/apiserver/workflow.go b/pkg/apiserver/workflow.go new file mode 100644 index 00000000..8895c0fe --- /dev/null +++ b/pkg/apiserver/workflow.go @@ -0,0 +1,77 @@ +package apiserver + +import ( + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/fission/fission-workflow/pkg/types" + "golang.org/x/net/context" +) + +// TODO move logic to gRPC-less code +type GrpcWorkflowApiServer struct { + esClient eventstore.Client + //projector *projector.WorkflowProjector +} + +func NewGrpcWorkflowApiServer(esClient eventstore.Client) *GrpcWorkflowApiServer { + // TODO es: check if available + return &GrpcWorkflowApiServer{ + esClient: esClient, + //projector: projector.NewWorkflowProjector(esClient), + } +} + +// TODO validate workflow +func (ga *GrpcWorkflowApiServer) Create(ctx context.Context, workflow *types.Workflow) (*types.Workflow, error) { + //workflow.Id = uuid.NewV4().String() + // + //b, err := ptypes.MarshalAny(workflow) + //if err != nil { + // return nil, err + //} + // + //event := events.New(eventids.New([]string{"WORKFLOWS"}, workflow.GetId()), + // types.WorkflowEvents_WORKFLOW_CREATED.String(), b) + // + ////updatedEvent, err := ga.esClient.Append(event) + //if err != nil { + // return nil, err + //} + // + ////updatedWorkflow, err := projector.GetWorkflowFromEvent(updatedEvent) + //if err != nil { + // return nil, err + //} + + return nil, nil +} + +func (ga *GrpcWorkflowApiServer) Get(ctx context.Context, workflowId *WorkflowIdentifier) (*types.Workflow, error) { + // wf, err := ga.projector.GetWorkflow(workflowId.GetId()) + // if err != nil { + // return nil, err + // } + // if wf == nil { + // return nil, status.Errorf(codes.NotFound, "Workflow with id '%s' not found.", workflowId.GetId()) + // } + // return wf, nil + panic("not implemented") +} + +func (ga *GrpcWorkflowApiServer) Search(ctx context.Context, query *SearchWorkflowRequest) (*SearchWorkflowResponse, error) { + //wfEvents, err := ga.esClient.Events(eventids.NewSubject("WORKFLOWS")) + //if err != nil { + // return nil, err + //} + //var results []*types.Workflow + //for _, wfEvent := range wfEvents { + // //wf, err := projector.GetWorkflowFromEvent(wfEvent) + // if err != nil { + // return nil, err + // } + // results = append(results, wf) + //} + //return &SearchWorkflowResponse{ + // Data: results, + //}, nil + return nil, nil +} From 4b45bf82ca46f0db189ec348522829900f5f9409 Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Thu, 27 Jul 2017 13:51:12 -0700 Subject: [PATCH 05/24] Add controller and scheduler prototypes --- pkg/controller/BUILD.bazel | 25 ++++ pkg/controller/controller.pb.go | 37 ++++++ pkg/controller/controller.proto | 2 + pkg/controller/server.go | 111 ++++++++++++++++ pkg/scheduler/BUILD.bazel | 23 ++++ pkg/scheduler/scheduler.go | 8 ++ pkg/scheduler/scheduler.pb.go | 221 ++++++++++++++++++++++++++++++++ pkg/scheduler/scheduler.proto | 32 +++++ 8 files changed, 459 insertions(+) create mode 100644 pkg/controller/BUILD.bazel create mode 100644 pkg/controller/controller.pb.go create mode 100644 pkg/controller/controller.proto create mode 100644 pkg/controller/server.go create mode 100644 pkg/scheduler/BUILD.bazel create mode 100644 pkg/scheduler/scheduler.go create mode 100644 pkg/scheduler/scheduler.pb.go create mode 100644 pkg/scheduler/scheduler.proto diff --git a/pkg/controller/BUILD.bazel b/pkg/controller/BUILD.bazel new file mode 100644 index 00000000..d147539a --- /dev/null +++ b/pkg/controller/BUILD.bazel @@ -0,0 +1,25 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "controller.pb.go", + "server.go", + ], + visibility = ["//visibility:public"], + deps = [ + "//pkg/eventstore:go_default_library", + "//pkg/projector/project:go_default_library", + "//pkg/scheduler:go_default_library", + "//pkg/types:go_default_library", + "//pkg/types/invocationevent:go_default_library", + "//vendor/github.com/golang/protobuf/proto:go_default_library", + "//vendor/github.com/sirupsen/logrus:go_default_library", + ], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["controller.proto"], + visibility = ["//visibility:public"], +) diff --git a/pkg/controller/controller.pb.go b/pkg/controller/controller.pb.go new file mode 100644 index 00000000..8387017f --- /dev/null +++ b/pkg/controller/controller.pb.go @@ -0,0 +1,37 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: pkg/controller/controller.proto + +/* +Package controller is a generated protocol buffer package. + +It is generated from these files: + pkg/controller/controller.proto + +It has these top-level messages: +*/ +package controller + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +func init() { proto.RegisterFile("pkg/controller/controller.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 53 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2f, 0xc8, 0x4e, 0xd7, + 0x4f, 0xce, 0xcf, 0x2b, 0x29, 0xca, 0xcf, 0xc9, 0x49, 0x2d, 0x42, 0x62, 0xea, 0x15, 0x14, 0xe5, + 0x97, 0xe4, 0x27, 0xb1, 0x81, 0x29, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x62, 0x59, 0x4f, + 0xdd, 0x29, 0x00, 0x00, 0x00, +} diff --git a/pkg/controller/controller.proto b/pkg/controller/controller.proto new file mode 100644 index 00000000..596fc55b --- /dev/null +++ b/pkg/controller/controller.proto @@ -0,0 +1,2 @@ +syntax = "proto3"; + diff --git a/pkg/controller/server.go b/pkg/controller/server.go new file mode 100644 index 00000000..3f7392ca --- /dev/null +++ b/pkg/controller/server.go @@ -0,0 +1,111 @@ +package controller + +import ( + "fmt" + "time" + + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/fission/fission-workflow/pkg/projector/project" + "github.com/fission/fission-workflow/pkg/scheduler" + "github.com/fission/fission-workflow/pkg/types" + "github.com/fission/fission-workflow/pkg/types/invocationevent" + "github.com/sirupsen/logrus" +) + +const ( + NOTIFICATION_BUFFER = 100 + TICK_SPEED = time.Duration(10) * time.Second + INVOCATION_SUBJECT = "invocation" +) + +type InvocationController struct { + invocationProjector project.InvocationProjector + scheduler *scheduler.WorkflowScheduler + notifyChan chan *project.InvocationNotification // TODO more complex => discard notifications of the same invocation +} + +// Does not deal with Workflows (notifications) +func NewController(projector project.InvocationProjector, + workflowScheduler *scheduler.WorkflowScheduler) *InvocationController { + return &InvocationController{ + invocationProjector: projector, + scheduler: workflowScheduler, + } +} + +// Blocking control loop +func (cr *InvocationController) Run() { + + logrus.Debug("Running controller init...") + + // Subscribe to invocation creations + cr.notifyChan = make(chan *project.InvocationNotification, NOTIFICATION_BUFFER) + err := cr.invocationProjector.Fetch(fmt.Sprintf("%s.>", INVOCATION_SUBJECT)) + if err != nil { + panic(err) + } + err = cr.invocationProjector.Subscribe(cr.notifyChan) // TODO provide clean channel that multiplexes into actual one + if err != nil { + panic(err) + } + + logrus.Debug("Init done. Entering control loop.") + + ticker := time.NewTicker(TICK_SPEED) + go func() { // Notification lane + for { + notification := <-cr.notifyChan + logrus.WithField("notification", notification).Info("Handling notification.") + cr.handleNotification(notification) + } + }() + for { // Control lane + <-ticker.C + cr.handleControlLoopTick() + } +} + +func (cr *InvocationController) onInvocationEvent(container *types.WorkflowInvocationContainer, cause *eventstore.Event) { + println("controller event trigger!") + flag, _ := invocationevent.Parse(cause.GetType()) + switch flag { + case types.InvocationEvent_INVOCATION_CREATED: + fallthrough + case types.InvocationEvent_TASK_FAILED: + fallthrough + case types.InvocationEvent_TASK_SUCCEEDED: + fallthrough + case types.InvocationEvent_TASK_HEARTBEAT: + fmt.Printf("Should evaluate now!\n") + default: + fmt.Printf("Doing nothing! (%v) (%v)\n", container, cause) + } +} + +func (cr *InvocationController) handleNotification(notification *project.InvocationNotification) { + println("controller event trigger!") + switch notification.Type { + case types.InvocationEvent_INVOCATION_CREATED: + fallthrough + case types.InvocationEvent_TASK_FAILED: + fallthrough + case types.InvocationEvent_TASK_SUCCEEDED: + fallthrough + case types.InvocationEvent_TASK_HEARTBEAT: + fmt.Printf("Should evaluate now!\n") + default: + fmt.Printf("Doing nothing! (%v)\n", notification) + } +} + +func (cr *InvocationController) handleControlLoopTick() { + logrus.Debug("Running controller control loop tick") + // Options: refresh projection, send ping, cancel invocation + logrus.Debug("cache: %v", cr.invocationProjector.Cache().List()) +} + +func (cr *InvocationController) Close() { + logrus.Debug("Closing controller...") + cr.invocationProjector.Close() + close(cr.notifyChan) +} diff --git a/pkg/scheduler/BUILD.bazel b/pkg/scheduler/BUILD.bazel new file mode 100644 index 00000000..b2c67fa8 --- /dev/null +++ b/pkg/scheduler/BUILD.bazel @@ -0,0 +1,23 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "scheduler.go", + "scheduler.pb.go", + ], + visibility = ["//visibility:public"], + deps = [ + "//pkg/types:go_default_library", + "//vendor/github.com/golang/protobuf/proto:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes/timestamp:go_default_library", + "//vendor/golang.org/x/net/context:go_default_library", + "//vendor/google.golang.org/grpc:go_default_library", + ], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["scheduler.proto"], + visibility = ["//visibility:public"], +) diff --git a/pkg/scheduler/scheduler.go b/pkg/scheduler/scheduler.go new file mode 100644 index 00000000..ff5a7c70 --- /dev/null +++ b/pkg/scheduler/scheduler.go @@ -0,0 +1,8 @@ +package scheduler + +type WorkflowScheduler struct { +} + +func (ws *WorkflowScheduler) Evaluate(request *ScheduleRequest) (*Schedule, error) { + return nil, nil +} diff --git a/pkg/scheduler/scheduler.pb.go b/pkg/scheduler/scheduler.pb.go new file mode 100644 index 00000000..08e2bb57 --- /dev/null +++ b/pkg/scheduler/scheduler.pb.go @@ -0,0 +1,221 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: pkg/scheduler/scheduler.proto + +/* +Package scheduler is a generated protocol buffer package. + +It is generated from these files: + pkg/scheduler/scheduler.proto + +It has these top-level messages: + Schedule + ScheduledNode + ScheduleRequest +*/ +package scheduler + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import types "github.com/fission/fission-workflow/pkg/types" +import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" + +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type Schedule struct { + InvocationId string `protobuf:"bytes,1,opt,name=invocationId" json:"invocationId,omitempty"` + CreatedAt *google_protobuf.Timestamp `protobuf:"bytes,2,opt,name=createdAt" json:"createdAt,omitempty"` + Nodes []*ScheduledNode `protobuf:"bytes,3,rep,name=nodes" json:"nodes,omitempty"` +} + +func (m *Schedule) Reset() { *m = Schedule{} } +func (m *Schedule) String() string { return proto.CompactTextString(m) } +func (*Schedule) ProtoMessage() {} +func (*Schedule) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *Schedule) GetInvocationId() string { + if m != nil { + return m.InvocationId + } + return "" +} + +func (m *Schedule) GetCreatedAt() *google_protobuf.Timestamp { + if m != nil { + return m.CreatedAt + } + return nil +} + +func (m *Schedule) GetNodes() []*ScheduledNode { + if m != nil { + return m.Nodes + } + return nil +} + +type ScheduledNode struct { + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + TaskId string `protobuf:"bytes,2,opt,name=taskId" json:"taskId,omitempty"` +} + +func (m *ScheduledNode) Reset() { *m = ScheduledNode{} } +func (m *ScheduledNode) String() string { return proto.CompactTextString(m) } +func (*ScheduledNode) ProtoMessage() {} +func (*ScheduledNode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *ScheduledNode) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *ScheduledNode) GetTaskId() string { + if m != nil { + return m.TaskId + } + return "" +} + +type ScheduleRequest struct { + Workflow *types.Workflow `protobuf:"bytes,1,opt,name=workflow" json:"workflow,omitempty"` + Invocation *types.WorkflowInvocation `protobuf:"bytes,2,opt,name=invocation" json:"invocation,omitempty"` +} + +func (m *ScheduleRequest) Reset() { *m = ScheduleRequest{} } +func (m *ScheduleRequest) String() string { return proto.CompactTextString(m) } +func (*ScheduleRequest) ProtoMessage() {} +func (*ScheduleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +func (m *ScheduleRequest) GetWorkflow() *types.Workflow { + if m != nil { + return m.Workflow + } + return nil +} + +func (m *ScheduleRequest) GetInvocation() *types.WorkflowInvocation { + if m != nil { + return m.Invocation + } + return nil +} + +func init() { + proto.RegisterType((*Schedule)(nil), "Schedule") + proto.RegisterType((*ScheduledNode)(nil), "ScheduledNode") + proto.RegisterType((*ScheduleRequest)(nil), "ScheduleRequest") +} + +// 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 Scheduler service + +type SchedulerClient interface { + Evaluate(ctx context.Context, in *ScheduleRequest, opts ...grpc.CallOption) (*Schedule, error) +} + +type schedulerClient struct { + cc *grpc.ClientConn +} + +func NewSchedulerClient(cc *grpc.ClientConn) SchedulerClient { + return &schedulerClient{cc} +} + +func (c *schedulerClient) Evaluate(ctx context.Context, in *ScheduleRequest, opts ...grpc.CallOption) (*Schedule, error) { + out := new(Schedule) + err := grpc.Invoke(ctx, "/Scheduler/evaluate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Scheduler service + +type SchedulerServer interface { + Evaluate(context.Context, *ScheduleRequest) (*Schedule, error) +} + +func RegisterSchedulerServer(s *grpc.Server, srv SchedulerServer) { + s.RegisterService(&_Scheduler_serviceDesc, srv) +} + +func _Scheduler_Evaluate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ScheduleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SchedulerServer).Evaluate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/Scheduler/Evaluate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SchedulerServer).Evaluate(ctx, req.(*ScheduleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Scheduler_serviceDesc = grpc.ServiceDesc{ + ServiceName: "Scheduler", + HandlerType: (*SchedulerServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "evaluate", + Handler: _Scheduler_Evaluate_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "pkg/scheduler/scheduler.proto", +} + +func init() { proto.RegisterFile("pkg/scheduler/scheduler.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 310 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0xcf, 0x4a, 0xc3, 0x40, + 0x10, 0xc6, 0x4d, 0x8b, 0xa5, 0x99, 0x6a, 0x95, 0x15, 0xa4, 0x14, 0xc4, 0x12, 0x14, 0xea, 0xc1, + 0x0d, 0xa4, 0xe0, 0x9f, 0xa3, 0xc7, 0x5e, 0x3c, 0xac, 0x82, 0xe7, 0x34, 0x3b, 0x4d, 0x97, 0x26, + 0x99, 0x98, 0xdd, 0xb4, 0xf8, 0x12, 0x3e, 0xb3, 0x98, 0x64, 0x13, 0xeb, 0x25, 0xd9, 0xf9, 0xe6, + 0x9b, 0xf9, 0xcd, 0x0c, 0x5c, 0xe5, 0xdb, 0xd8, 0xd7, 0xd1, 0x06, 0x65, 0x99, 0x60, 0xd1, 0xbd, + 0x78, 0x5e, 0x90, 0xa1, 0xe9, 0x73, 0xac, 0xcc, 0xa6, 0x5c, 0xf1, 0x88, 0x52, 0x7f, 0xad, 0xb4, + 0x56, 0x94, 0xd9, 0xff, 0xfd, 0x9e, 0x8a, 0xed, 0x3a, 0xa1, 0xbd, 0xff, 0xdb, 0xc2, 0x7c, 0xe5, + 0xa8, 0xeb, 0x6f, 0x53, 0x7a, 0x1d, 0x13, 0xc5, 0x09, 0xfa, 0x55, 0xb4, 0x2a, 0xd7, 0xbe, 0x51, + 0x29, 0x6a, 0x13, 0xa6, 0x79, 0x6d, 0xf0, 0xbe, 0x1d, 0x18, 0xbe, 0x35, 0x3c, 0xe6, 0xc1, 0x89, + 0xca, 0x76, 0x14, 0x85, 0x46, 0x51, 0xb6, 0x94, 0x13, 0x67, 0xe6, 0xcc, 0x5d, 0x71, 0xa0, 0xb1, + 0x27, 0x70, 0xa3, 0x02, 0x43, 0x83, 0xf2, 0xc5, 0x4c, 0x7a, 0x33, 0x67, 0x3e, 0x0a, 0xa6, 0xbc, + 0xa6, 0x70, 0x4b, 0xe1, 0xef, 0x96, 0x22, 0x3a, 0x33, 0xbb, 0x81, 0xe3, 0x8c, 0x24, 0xea, 0x49, + 0x7f, 0xd6, 0x9f, 0x8f, 0x82, 0x31, 0xb7, 0x5c, 0xf9, 0x4a, 0x12, 0x45, 0x9d, 0xf4, 0x1e, 0xe1, + 0xf4, 0x40, 0x67, 0x63, 0xe8, 0x29, 0x3b, 0x4a, 0x4f, 0x49, 0x76, 0x09, 0x03, 0x13, 0xea, 0xed, + 0x52, 0x56, 0x74, 0x57, 0x34, 0x91, 0x97, 0xc2, 0x99, 0x2d, 0x14, 0xf8, 0x59, 0xa2, 0x36, 0xec, + 0x16, 0x86, 0xf6, 0x3e, 0x55, 0x83, 0x51, 0xe0, 0xf2, 0x8f, 0x46, 0x10, 0x6d, 0x8a, 0x2d, 0x00, + 0xba, 0x15, 0x9b, 0x9d, 0x2e, 0x5a, 0xe3, 0xb2, 0x4d, 0x89, 0x3f, 0xb6, 0xe0, 0x01, 0x5c, 0x8b, + 0x2b, 0xd8, 0x1d, 0x0c, 0x71, 0x17, 0x26, 0x65, 0x68, 0x90, 0x9d, 0xf3, 0x7f, 0x63, 0x4c, 0xdd, + 0x56, 0xf1, 0x8e, 0x56, 0x83, 0xea, 0x48, 0x8b, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa5, 0xc8, + 0x5d, 0xd3, 0xf4, 0x01, 0x00, 0x00, +} diff --git a/pkg/scheduler/scheduler.proto b/pkg/scheduler/scheduler.proto new file mode 100644 index 00000000..13bff26b --- /dev/null +++ b/pkg/scheduler/scheduler.proto @@ -0,0 +1,32 @@ +syntax = "proto3"; + +import "github.com/fission/fission-workflow/pkg/types/types.proto"; +import "google/protobuf/timestamp.proto"; + +service Scheduler { + + + rpc evaluate (ScheduleRequest) returns (Schedule) {} +} + +message Schedule { + string invocationId = 1; + google.protobuf.Timestamp createdAt = 2; + repeated ScheduledNode nodes = 3; + // TODo Expected next evaluation +} + +message ScheduledNode { + string id = 1; // Of the task in(!) the workflow + string taskId = 2; // Name + // TODO uint32 priority = 4; // Compared to others + // TODO google.protobuf.Timestamp startAfter = 3; // Needed? + // TODO map env = 5; + // TODO placement constraints / function scheduler instructions + // TODO communication / routing +} + +message ScheduleRequest { + Workflow workflow = 1; + WorkflowInvocation invocation = 2; // TODO with spec and status +} \ No newline at end of file From 12395152143dfce1540c7263ce9d1d57daf9dc43 Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Thu, 27 Jul 2017 13:52:46 -0700 Subject: [PATCH 06/24] Add preliminary docs --- Docs/api/.swagger-codegen-ignore | 23 + Docs/api/.swagger-codegen/VERSION | 1 + Docs/api/index.html | 861 ++++++++++++++++++++++++++++++ Docs/terminology.md | 11 + Docs/wip/models.md | 73 +++ 5 files changed, 969 insertions(+) create mode 100644 Docs/api/.swagger-codegen-ignore create mode 100644 Docs/api/.swagger-codegen/VERSION create mode 100644 Docs/api/index.html create mode 100644 Docs/terminology.md create mode 100644 Docs/wip/models.md diff --git a/Docs/api/.swagger-codegen-ignore b/Docs/api/.swagger-codegen-ignore new file mode 100644 index 00000000..c5fa491b --- /dev/null +++ b/Docs/api/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/Docs/api/.swagger-codegen/VERSION b/Docs/api/.swagger-codegen/VERSION new file mode 100644 index 00000000..6b4d1577 --- /dev/null +++ b/Docs/api/.swagger-codegen/VERSION @@ -0,0 +1 @@ +2.2.3 \ No newline at end of file diff --git a/Docs/api/index.html b/Docs/api/index.html new file mode 100644 index 00000000..caeb4cf4 --- /dev/null +++ b/Docs/api/index.html @@ -0,0 +1,861 @@ + + + + pkg/apiserver/apiserver.proto + + + +

pkg/apiserver/apiserver.proto

+
No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+
More information: https://helloreverb.com
+
Contact Info: hello@helloreverb.com
+
Version: version not set
+
BasePath:
+
All rights reserved
+
http://apache.org/licenses/LICENSE-2.0.html
+

Access

+ +

Methods

+ [ Jump to Models ] + +

Table of Contents

+
+

AdminAPI

+ +

FissionEnvironmentProxy

+ +

WorkflowAPI

+ +

WorkflowInvocationAPI

+ + +

AdminAPI

+
+
+ Up +
get /status
+
(status)
+
+ + +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ + + + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "status" : "aeiou"
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ + apiserverHealth +
+
+

FissionEnvironmentProxy

+
+
+ Up +
get /specialize
+
(specialize)
+
+ + +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ + + + + +

Return type

+
+ Empty + +
+ + + +

Example data

+
Content-Type: application/json
+
{ }
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ + Empty +
+
+

WorkflowAPI

+
+
+ Up +
post /workflow
+
(create)
+
+ + +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ +

Request body

+
+
body Workflow (required)
+ +
Body Parameter
+ +
+ + + + +

Return type

+
+ Workflow + +
+ + + +

Example data

+
Content-Type: application/json
+
{
+  "name" : "aeiou",
+  "id" : "aeiou",
+  "version" : "aeiou"
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ + Workflow +
+
+
+
+ Up +
get /workflow/{id}
+
(get)
+
+ +

Path parameters

+
+
id (required)
+ +
Path Parameter
+
+ +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ + + + + +

Return type

+
+ Workflow + +
+ + + +

Example data

+
Content-Type: application/json
+
{
+  "name" : "aeiou",
+  "id" : "aeiou",
+  "version" : "aeiou"
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ + Workflow +
+
+
+
+ Up +
get /workflow
+
(search)
+
+ + +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ + + + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "data" : [ {
+    "name" : "aeiou",
+    "id" : "aeiou",
+    "version" : "aeiou"
+  } ]
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ + apiserverSearchWorkflowResponse +
+
+

WorkflowInvocationAPI

+
+
+ Up +
delete /invocation/{id}
+
Cancel a workflow invocation (cancel)
+
This action is irreverisble. A canceled invocation cannot be resumed or restarted. +In case that an invocation already is canceled, has failed or has completed, nothing happens. +In case that an invocation does not exist a HTTP 404 error status is returned.
+ +

Path parameters

+
+
id (required)
+ +
Path Parameter
+
+ +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ + + + + +

Return type

+
+ Empty + +
+ + + +

Example data

+
Content-Type: application/json
+
{ }
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ + Empty +
+
+
+
+ Up +
get /invocation/{id}
+
Get the specification and status of a workflow invocation (get)
+
Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. +To lighten the request load, consider using a more specific request.
+ +

Path parameters

+
+
id (required)
+ +
Path Parameter
+
+ +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ + + + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "events" : [ {
+    "eventId" : {
+      "subjects" : [ "aeiou" ],
+      "id" : "aeiou"
+    },
+    "data" : {
+      "value" : "aeiou",
+      "type_url" : "aeiou"
+    },
+    "time" : "2000-01-23T04:56:07.000+00:00",
+    "type" : "aeiou"
+  } ]
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ + apiserverWorkflowInvocationGetReponse +
+
+
+
+ Up +
post /invocation
+
Create a new workflow invocation (invoke)
+
In case the invocation specification is missing fields or contains invalid fields, a HTTP 400 is returned.
+ + +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ +

Request body

+
+
body WorkflowInvocationSpec (required)
+ +
Body Parameter
+ +
+ + + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "id" : "aeiou"
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ + apiserverWorkflowInvocationIdentifier +
+
+
+
+ Up +
get /invocation
+
Search for workflow invocations based on a query (search)
+
By default the search returns at most 10 workflow invocations in no specific order.
+ + +

Consumes

+ This API call consumes the following media types via the Content-Type request header: +
    +
  • application/json
  • +
+ + + + + +

Return type

+ + + + +

Example data

+
Content-Type: application/json
+
{
+  "invocations" : [ "aeiou" ]
+}
+ +

Produces

+ This API call produces the following media types according to the Accept request header; + the media type will be conveyed by the Content-Type response header. +
    +
  • application/json
  • +
+ +

Responses

+

200

+ + apiserverWorkflowInvocationList +
+
+ +

Models

+ [ Jump to Methods ] + +

Table of Contents

+
    +
  1. Empty - Util
  2. +
  3. Event -
  4. +
  5. EventID -
  6. +
  7. Workflow -
  8. +
  9. WorkflowInvocationSpec -
  10. +
  11. apiserverHealth -
  12. +
  13. apiserverSearchWorkflowResponse -
  14. +
  15. apiserverWorkflowInvocationGetReponse -
  16. +
  17. apiserverWorkflowInvocationIdentifier -
  18. +
  19. apiserverWorkflowInvocationList -
  20. +
  21. protobufAny -
  22. +
+ +
+

Empty - Util Up

+
+
+
+
+
+

Event - Up

+
+
+
eventId (optional)
+
type (optional)
+
time (optional)
Date format: date-time
+
data (optional)
+
+
+
+

EventID - Up

+
+
+
subjects (optional)
+
id (optional)
+
+
+
+

Workflow - Up

+
+
+
id (optional)
+
name (optional)
+
version (optional)
+
+
+
+

WorkflowInvocationSpec - Up

+
+
+
workflowId (optional)
+
+
+
+

apiserverHealth - Up

+
+
+
status (optional)
+
+
+ + + +
+

apiserverWorkflowInvocationList - Up

+
+
+
invocations (optional)
+
+
+
+

protobufAny - Up

+

Any contains an arbitrary serialized protocol buffer message along with a +URL that describes the type of the serialized message.

+

Protobuf library provides support to pack/unpack Any values in the form +of utility functions or additional generated methods of the Any type.

+

Example 1: Pack and unpack a message in C++.

+
Foo foo = ...;
+Any any;
+any.PackFrom(foo);
+...
+if (any.UnpackTo(&foo)) {
+  ...
+}
+
+

Example 2: Pack and unpack a message in Java.

+
Foo foo = ...;
+Any any = Any.pack(foo);
+...
+if (any.is(Foo.class)) {
+  foo = any.unpack(Foo.class);
+}
+
+

Example 3: Pack and unpack a message in Python.

+
foo = Foo(...)
+any = Any()
+any.Pack(foo)
+...
+if any.Is(Foo.DESCRIPTOR):
+  any.Unpack(foo)
+  ...
+
+

The pack methods provided by protobuf library will by default use +'type.googleapis.com/full.type.name' as the type URL and the unpack +methods only use the fully qualified type name after the last '/' +in the type URL, for example "foo.bar.com/x/y.z" will yield type +name "y.z".

+

JSON

+

The JSON representation of an Any value uses the regular +representation of the deserialized, embedded message, with an +additional field @type which contains the type URL. Example:

+
package google.profile;
+message Person {
+  string first_name = 1;
+  string last_name = 2;
+}
+
+{
+  "@type": "type.googleapis.com/google.profile.Person",
+  "firstName": <string>,
+  "lastName": <string>
+}
+
+

If the embedded message type is well-known and has a custom JSON +representation, that representation will be embedded adding a field +value which holds the custom JSON in addition to the @type +field. Example (for message [google.protobuf.Duration][]):

+
{
+  "@type": "type.googleapis.com/google.protobuf.Duration",
+  "value": "1.212s"
+}
+
+
+
+
type_url (optional)
String

A URL/resource name whose content describes the type of the +serialized protocol buffer message.

+

For URLs which use the scheme http, https, or no scheme, the +following restrictions and interpretations apply:

+
    +
  • If no scheme is provided, https is assumed.
  • +
  • The last segment of the URL's path must represent the fully +qualified name of the type (as in path/google.protobuf.Duration). +The name should be in a canonical form (e.g., leading "." is +not accepted).
  • +
  • An HTTP GET on the URL must yield a [google.protobuf.Type][] +value in binary format, or produce an error.
  • +
  • Applications are allowed to cache lookup results based on the +URL, or have them precompiled into a binary to avoid any +lookup. Therefore, binary compatibility needs to be preserved +on changes to types. (Use versioned type names to manage +breaking changes.)
  • +
+

Schemes other than http, https (or the empty scheme) might be +used with implementation specific semantics.

+
+
value (optional)
byte[] Must be a valid serialized protocol buffer of the above specified type. format: byte
+
+
+ + diff --git a/Docs/terminology.md b/Docs/terminology.md new file mode 100644 index 00000000..5ad203ee --- /dev/null +++ b/Docs/terminology.md @@ -0,0 +1,11 @@ +# Terminology + + ### Task + The executable units in a workflow. In this case all tasks are Fission Functions. + + + ### Invocation + The (intent to perform) execution of a task. + + ### Workflow Engine + The core part of the Workflow Management System, responsible for the scheduling and controlling of workflow. diff --git a/Docs/wip/models.md b/Docs/wip/models.md new file mode 100644 index 00000000..5f1092e6 --- /dev/null +++ b/Docs/wip/models.md @@ -0,0 +1,73 @@ +# Models + +## Workflow + + +## WorkflowInvocation + +A WorkflowInvocation consists of a spec and a status. + +The spec consists of the data provided to the Workflow Engine in order to start the actual WorkflowInvocation. +After it is supplied to the Workflow Engine it is considered to be immutable. +The only way to manipulate is by canceling the invocation. + +WorkflowInvocation +``` +ID +Spec +Status +``` + +WorkflowInvocationSpec +``` +InvocationID +WorkflowID +ExecuteAfter +Constraints{} +``` +- `InvocationID` is a unique identifier for the WorkflowInvocation provided by the engine. +- `WorkflowID` is the identifier of the associated Workflow. +- `ExecuteAfter` indicates when the workflow should be executed. It defaults to 'now'. +- `Constraints` TODO: things like deadline, priority, location, etc.. + +Event types +- `WORKFLOW_CREATED` + + +WorkflowInvocationStatus +``` +InvocationID +Status +LastUpdate +LastHeartbeatTime +``` +- `InvocationID` is a unique identifier for the WorkflowInvocation provided by the engine. +- `Status` is a value indicating the general status of the invocation. Possible values: NOT_STARTED|IN_PROGRESS|SUCCEEDED|FAILED|ABORTED|UNKNOWN. +- `LastUpdate` holds the last WorkflowInvocationEvent (without data). + +WorkflowInvocationEvent +``` +ID +InvocationID +Time +Type +Metadata{taskId : 1234} +[DATA] +``` + +Event types: +- `TASK_STARTED` A task has started executing. +- `TASK_HEARTBEAT` A task has responded to a heartbeat check of the Workflow Engine. +- `TASK_SUCCEEDED` A task has succeeded. +- `TASK_FAILED` A task has failed. +- `TASK_ABORTED` A task was aborted by the engine +- `TASK_SKIPPED` A task was skipped by the engine. E.g. If/else condition +- TODO indicate some decision/branch/etc (e.g. IF/ELSE, MAP) + +Valid Task transitions: +- `S -> TASK_STARTED|TASK_SKIPPED` +- `TASK_STARTED -> !(TASK_STARTED|TASK_SKIPPED)` +- `TASK_HEARTBEAT -> !(TASK_STARTED|TASK_SKIPPED)` + +References +- https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md From 6475f213707834f211275f24692908b6cce70617 Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Thu, 27 Jul 2017 17:33:45 -0700 Subject: [PATCH 07/24] Add get-functionality to event store --- BUILD.bazel | 3 +- cmd/fission-workflow/BUILD.bazel | 13 ++ cmd/fission-workflow/fission-workflow.go | 5 + cmd/workflow-engine/BUILD.bazel | 17 ++ cmd/workflow-engine/app/BUILD.bazel | 20 +++ cmd/workflow-engine/app/bootstrap.go | 91 ++++++++++ cmd/workflow-engine/workflow-engine.go | 16 ++ pkg/api/BUILD.bazel | 2 + pkg/api/invocation.go | 15 +- pkg/apiserver/apiserver.pb.go | 207 ++++++++--------------- pkg/apiserver/apiserver.pb.gw.go | 108 ++---------- pkg/apiserver/apiserver.proto | 24 +-- pkg/apiserver/apiserver.swagger.json | 140 ++++----------- pkg/apiserver/invocation.go | 4 +- pkg/controller/server.go | 2 +- pkg/eventstore/client.go | 2 +- pkg/eventstore/eventids/eventids.go | 9 +- pkg/eventstore/nats/client.go | 21 ++- pkg/eventstore/nats/nats.go | 105 ++++++++++-- pkg/projector/project/projector.go | 179 +++++++++++--------- pkg/util/BUILD.bazel | 7 + 21 files changed, 530 insertions(+), 460 deletions(-) create mode 100644 cmd/fission-workflow/BUILD.bazel create mode 100644 cmd/fission-workflow/fission-workflow.go create mode 100644 cmd/workflow-engine/BUILD.bazel create mode 100644 cmd/workflow-engine/app/BUILD.bazel create mode 100644 cmd/workflow-engine/app/bootstrap.go create mode 100644 cmd/workflow-engine/workflow-engine.go create mode 100644 pkg/util/BUILD.bazel diff --git a/BUILD.bazel b/BUILD.bazel index d6650741..f6b75472 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,4 +1,3 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_prefix") +load("@io_bazel_rules_go//go:def.bzl", "go_prefix") go_prefix("github.com/fission/fission-workflow") - diff --git a/cmd/fission-workflow/BUILD.bazel b/cmd/fission-workflow/BUILD.bazel new file mode 100644 index 00000000..ceeb9dbe --- /dev/null +++ b/cmd/fission-workflow/BUILD.bazel @@ -0,0 +1,13 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "go_default_library", + srcs = ["fission-workflow.go"], + visibility = ["//visibility:private"], +) + +go_binary( + name = "fission-workflow", + library = ":go_default_library", + visibility = ["//visibility:public"], +) diff --git a/cmd/fission-workflow/fission-workflow.go b/cmd/fission-workflow/fission-workflow.go new file mode 100644 index 00000000..9fd8348a --- /dev/null +++ b/cmd/fission-workflow/fission-workflow.go @@ -0,0 +1,5 @@ +package main + +func main() { + println("hello world!") +} diff --git a/cmd/workflow-engine/BUILD.bazel b/cmd/workflow-engine/BUILD.bazel new file mode 100644 index 00000000..47095c3d --- /dev/null +++ b/cmd/workflow-engine/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "go_default_library", + srcs = ["workflow-engine.go"], + visibility = ["//visibility:private"], + deps = [ + "//cmd/workflow-engine/app:go_default_library", + "//vendor/github.com/sirupsen/logrus:go_default_library", + ], +) + +go_binary( + name = "workflow-engine", + library = ":go_default_library", + visibility = ["//visibility:public"], +) diff --git a/cmd/workflow-engine/app/BUILD.bazel b/cmd/workflow-engine/app/BUILD.bazel new file mode 100644 index 00000000..6c69d3ae --- /dev/null +++ b/cmd/workflow-engine/app/BUILD.bazel @@ -0,0 +1,20 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["bootstrap.go"], + visibility = ["//visibility:public"], + deps = [ + "//pkg/api:go_default_library", + "//pkg/apiserver:go_default_library", + "//pkg/cache:go_default_library", + "//pkg/controller:go_default_library", + "//pkg/eventstore/nats:go_default_library", + "//pkg/projector/project:go_default_library", + "//pkg/scheduler:go_default_library", + "//vendor/github.com/grpc-ecosystem/grpc-gateway/runtime:go_default_library", + "//vendor/github.com/nats-io/go-nats-streaming:go_default_library", + "//vendor/github.com/sirupsen/logrus:go_default_library", + "//vendor/google.golang.org/grpc:go_default_library", + ], +) diff --git a/cmd/workflow-engine/app/bootstrap.go b/cmd/workflow-engine/app/bootstrap.go new file mode 100644 index 00000000..e90a6272 --- /dev/null +++ b/cmd/workflow-engine/app/bootstrap.go @@ -0,0 +1,91 @@ +package app + +import ( + "context" + "net" + "net/http" + + "github.com/fission/fission-workflow/pkg/api" + "github.com/fission/fission-workflow/pkg/apiserver" + "github.com/fission/fission-workflow/pkg/cache" + "github.com/fission/fission-workflow/pkg/controller" + "github.com/fission/fission-workflow/pkg/eventstore/nats" + "github.com/fission/fission-workflow/pkg/projector/project" + "github.com/fission/fission-workflow/pkg/scheduler" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/nats-io/go-nats-streaming" + log "github.com/sirupsen/logrus" + "google.golang.org/grpc" +) + +const ( + GRPC_ADDRESS = ":5555" + API_GATEWAY_ADDRESS = ":8080" +) + +// Blocking +func Run(ctx context.Context) { + // (shared) gRPC server + lis, err := net.Listen("tcp", GRPC_ADDRESS) + if err != nil { + log.Fatalf("failed to listen: %v", err) + } + conn, err := grpc.Dial(GRPC_ADDRESS, grpc.WithInsecure()) + if err != nil { + log.Fatalf("did not connect: %v", err) + } + grpcServer := grpc.NewServer() + defer grpcServer.GracefulStop() + defer conn.Close() + defer lis.Close() + + // EventStore + natsConn, err := stan.Connect("test-cluster", "test-client") + if err != nil { + panic(err) + } + //natsClient := nats.NewNatsClient(nats.NewConn(natsConn)) + natsClient2 := nats.New(nats.NewConn(natsConn)) + cache := cache.NewMapCache() + + // API gRPC Server + //workflowServer := apiserver.NewGrpcWorkflowApiServer(natsClient) + adminServer := &apiserver.GrpcAdminApiServer{} + invocationApi := api.NewInvocationApi(natsClient2) + invocationServer := apiserver.NewGrpcInvocationApiServer(invocationApi) + //apiserver.RegisterWorkflowAPIServer(grpcServer, workflowServer) + apiserver.RegisterAdminAPIServer(grpcServer, adminServer) + apiserver.RegisterWorkflowInvocationAPIServer(grpcServer, invocationServer) + + // API Gateway server + mux := runtime.NewServeMux() + opts := []grpc.DialOption{grpc.WithInsecure()} + err = apiserver.RegisterWorkflowAPIHandlerFromEndpoint(ctx, mux, GRPC_ADDRESS, opts) + if err != nil { + panic(err) + } + err = apiserver.RegisterAdminAPIHandlerFromEndpoint(ctx, mux, GRPC_ADDRESS, opts) + if err != nil { + panic(err) + } + err = apiserver.RegisterWorkflowInvocationAPIHandlerFromEndpoint(ctx, mux, GRPC_ADDRESS, opts) + if err != nil { + panic(err) + } + + log.Info("Serving HTTP API gateway at: ", API_GATEWAY_ADDRESS) + go http.ListenAndServe(API_GATEWAY_ADDRESS, mux) + + // Controller + invocationProjector := project.NewInvocationProjector(natsClient2, cache) + s := &scheduler.WorkflowScheduler{} + ctr := controller.NewController(invocationProjector, s) + defer ctr.Close() + go ctr.Run() + + // Serve gRPC server + log.Info("Serving gRPC services at: ", lis.Addr()) + if err := grpcServer.Serve(lis); err != nil { + log.Fatalf("failed to serve: %v", err) + } +} diff --git a/cmd/workflow-engine/workflow-engine.go b/cmd/workflow-engine/workflow-engine.go new file mode 100644 index 00000000..d1af2ae0 --- /dev/null +++ b/cmd/workflow-engine/workflow-engine.go @@ -0,0 +1,16 @@ +package main + +import ( + "context" + "github.com/fission/fission-workflow/cmd/workflow-engine/app" + "github.com/sirupsen/logrus" +) + +func main() { + logrus.SetLevel(logrus.DebugLevel) + ctx := context.Background() + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + app.Run(ctx) +} diff --git a/pkg/api/BUILD.bazel b/pkg/api/BUILD.bazel index 5e5bed4b..0687ff9f 100644 --- a/pkg/api/BUILD.bazel +++ b/pkg/api/BUILD.bazel @@ -5,9 +5,11 @@ go_library( srcs = ["invocation.go"], visibility = ["//visibility:public"], deps = [ + "//pkg/cache:go_default_library", "//pkg/eventstore:go_default_library", "//pkg/eventstore/eventids:go_default_library", "//pkg/eventstore/events:go_default_library", + "//pkg/projector/project:go_default_library", "//pkg/types:go_default_library", "//vendor/github.com/golang/protobuf/ptypes:go_default_library", "//vendor/github.com/satori/go.uuid:go_default_library", diff --git a/pkg/api/invocation.go b/pkg/api/invocation.go index e3dd6030..a9a69f05 100644 --- a/pkg/api/invocation.go +++ b/pkg/api/invocation.go @@ -1,9 +1,11 @@ package api import ( + "github.com/fission/fission-workflow/pkg/cache" "github.com/fission/fission-workflow/pkg/eventstore" "github.com/fission/fission-workflow/pkg/eventstore/eventids" "github.com/fission/fission-workflow/pkg/eventstore/events" + "github.com/fission/fission-workflow/pkg/projector/project" "github.com/fission/fission-workflow/pkg/types" "github.com/golang/protobuf/ptypes" "github.com/satori/go.uuid" @@ -14,11 +16,12 @@ const ( ) type InvocationApi struct { - esClient eventstore.Client + esClient eventstore.Client + Projector project.InvocationProjector } func NewInvocationApi(esClient eventstore.Client) *InvocationApi { - return &InvocationApi{esClient} + return &InvocationApi{esClient, project.NewInvocationProjector(esClient, cache.NewMapCache())} } // Commands @@ -56,3 +59,11 @@ func (ia *InvocationApi) Cancel(invocationId string) error { func (ia *InvocationApi) createSubject(invocationId string) *eventstore.EventID { return eventids.NewSubject(INVOCATION_SUBJECT, invocationId) } + +func (ia *InvocationApi) Get(invocationId string) (*types.WorkflowInvocationContainer, error) { + return ia.Projector.Get(invocationId) +} + +// Get(invocationID) + +// Future: Search/List (time-based, workflow-based, status-based) diff --git a/pkg/apiserver/apiserver.pb.go b/pkg/apiserver/apiserver.pb.go index f1d9c3ee..0f3d11ab 100644 --- a/pkg/apiserver/apiserver.pb.go +++ b/pkg/apiserver/apiserver.pb.go @@ -186,7 +186,6 @@ const _ = grpc.SupportPackageIsVersion4 type WorkflowAPIClient interface { Create(ctx context.Context, in *types.Workflow, opts ...grpc.CallOption) (*types.Workflow, error) Get(ctx context.Context, in *WorkflowIdentifier, opts ...grpc.CallOption) (*types.Workflow, error) - Search(ctx context.Context, in *SearchWorkflowRequest, opts ...grpc.CallOption) (*SearchWorkflowResponse, error) } type workflowAPIClient struct { @@ -215,21 +214,11 @@ func (c *workflowAPIClient) Get(ctx context.Context, in *WorkflowIdentifier, opt return out, nil } -func (c *workflowAPIClient) Search(ctx context.Context, in *SearchWorkflowRequest, opts ...grpc.CallOption) (*SearchWorkflowResponse, error) { - out := new(SearchWorkflowResponse) - err := grpc.Invoke(ctx, "/apiserver.WorkflowAPI/Search", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // Server API for WorkflowAPI service type WorkflowAPIServer interface { Create(context.Context, *types.Workflow) (*types.Workflow, error) Get(context.Context, *WorkflowIdentifier) (*types.Workflow, error) - Search(context.Context, *SearchWorkflowRequest) (*SearchWorkflowResponse, error) } func RegisterWorkflowAPIServer(s *grpc.Server, srv WorkflowAPIServer) { @@ -272,24 +261,6 @@ func _WorkflowAPI_Get_Handler(srv interface{}, ctx context.Context, dec func(int return interceptor(ctx, in, info, handler) } -func _WorkflowAPI_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchWorkflowRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(WorkflowAPIServer).Search(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/apiserver.WorkflowAPI/Search", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowAPIServer).Search(ctx, req.(*SearchWorkflowRequest)) - } - return interceptor(ctx, in, info, handler) -} - var _WorkflowAPI_serviceDesc = grpc.ServiceDesc{ ServiceName: "apiserver.WorkflowAPI", HandlerType: (*WorkflowAPIServer)(nil), @@ -302,10 +273,6 @@ var _WorkflowAPI_serviceDesc = grpc.ServiceDesc{ MethodName: "Get", Handler: _WorkflowAPI_Get_Handler, }, - { - MethodName: "Search", - Handler: _WorkflowAPI_Search_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "pkg/apiserver/apiserver.proto", @@ -328,11 +295,7 @@ type WorkflowInvocationAPIClient interface { // // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. // To lighten the request load, consider using a more specific request. - Get(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*WorkflowInvocationGetReponse, error) - // Search for workflow invocations based on a query - // - // By default the search returns at most 10 workflow invocations in no specific order. - Search(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*WorkflowInvocationList, error) + Get(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*types.WorkflowInvocationContainer, error) } type workflowInvocationAPIClient struct { @@ -361,8 +324,8 @@ func (c *workflowInvocationAPIClient) Cancel(ctx context.Context, in *WorkflowIn return out, nil } -func (c *workflowInvocationAPIClient) Get(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*WorkflowInvocationGetReponse, error) { - out := new(WorkflowInvocationGetReponse) +func (c *workflowInvocationAPIClient) Get(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*types.WorkflowInvocationContainer, error) { + out := new(types.WorkflowInvocationContainer) err := grpc.Invoke(ctx, "/apiserver.WorkflowInvocationAPI/Get", in, out, c.cc, opts...) if err != nil { return nil, err @@ -370,15 +333,6 @@ func (c *workflowInvocationAPIClient) Get(ctx context.Context, in *WorkflowInvoc return out, nil } -func (c *workflowInvocationAPIClient) Search(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*WorkflowInvocationList, error) { - out := new(WorkflowInvocationList) - err := grpc.Invoke(ctx, "/apiserver.WorkflowInvocationAPI/Search", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // Server API for WorkflowInvocationAPI service type WorkflowInvocationAPIServer interface { @@ -396,11 +350,7 @@ type WorkflowInvocationAPIServer interface { // // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. // To lighten the request load, consider using a more specific request. - Get(context.Context, *WorkflowInvocationIdentifier) (*WorkflowInvocationGetReponse, error) - // Search for workflow invocations based on a query - // - // By default the search returns at most 10 workflow invocations in no specific order. - Search(context.Context, *types.Empty) (*WorkflowInvocationList, error) + Get(context.Context, *WorkflowInvocationIdentifier) (*types.WorkflowInvocationContainer, error) } func RegisterWorkflowInvocationAPIServer(s *grpc.Server, srv WorkflowInvocationAPIServer) { @@ -461,24 +411,6 @@ func _WorkflowInvocationAPI_Get_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } -func _WorkflowInvocationAPI_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(WorkflowInvocationAPIServer).Search(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/apiserver.WorkflowInvocationAPI/Search", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowInvocationAPIServer).Search(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) -} - var _WorkflowInvocationAPI_serviceDesc = grpc.ServiceDesc{ ServiceName: "apiserver.WorkflowInvocationAPI", HandlerType: (*WorkflowInvocationAPIServer)(nil), @@ -495,10 +427,6 @@ var _WorkflowInvocationAPI_serviceDesc = grpc.ServiceDesc{ MethodName: "Get", Handler: _WorkflowInvocationAPI_Get_Handler, }, - { - MethodName: "Search", - Handler: _WorkflowInvocationAPI_Search_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "pkg/apiserver/apiserver.proto", @@ -568,97 +496,97 @@ var _AdminAPI_serviceDesc = grpc.ServiceDesc{ Metadata: "pkg/apiserver/apiserver.proto", } -// Client API for FissionEnvironmentProxy service +// Client API for FunctionApi service -type FissionEnvironmentProxyClient interface { +type FunctionApiClient interface { Specialize(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) Invoke(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) } -type fissionEnvironmentProxyClient struct { +type functionApiClient struct { cc *grpc.ClientConn } -func NewFissionEnvironmentProxyClient(cc *grpc.ClientConn) FissionEnvironmentProxyClient { - return &fissionEnvironmentProxyClient{cc} +func NewFunctionApiClient(cc *grpc.ClientConn) FunctionApiClient { + return &functionApiClient{cc} } -func (c *fissionEnvironmentProxyClient) Specialize(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { +func (c *functionApiClient) Specialize(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { out := new(types.Empty) - err := grpc.Invoke(ctx, "/apiserver.FissionEnvironmentProxy/Specialize", in, out, c.cc, opts...) + err := grpc.Invoke(ctx, "/apiserver.FunctionApi/Specialize", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -func (c *fissionEnvironmentProxyClient) Invoke(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { +func (c *functionApiClient) Invoke(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { out := new(types.Empty) - err := grpc.Invoke(ctx, "/apiserver.FissionEnvironmentProxy/Invoke", in, out, c.cc, opts...) + err := grpc.Invoke(ctx, "/apiserver.FunctionApi/Invoke", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// Server API for FissionEnvironmentProxy service +// Server API for FunctionApi service -type FissionEnvironmentProxyServer interface { +type FunctionApiServer interface { Specialize(context.Context, *types.Empty) (*types.Empty, error) Invoke(context.Context, *types.Empty) (*types.Empty, error) } -func RegisterFissionEnvironmentProxyServer(s *grpc.Server, srv FissionEnvironmentProxyServer) { - s.RegisterService(&_FissionEnvironmentProxy_serviceDesc, srv) +func RegisterFunctionApiServer(s *grpc.Server, srv FunctionApiServer) { + s.RegisterService(&_FunctionApi_serviceDesc, srv) } -func _FissionEnvironmentProxy_Specialize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { +func _FunctionApi_Specialize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(types.Empty) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(FissionEnvironmentProxyServer).Specialize(ctx, in) + return srv.(FunctionApiServer).Specialize(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/apiserver.FissionEnvironmentProxy/Specialize", + FullMethod: "/apiserver.FunctionApi/Specialize", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FissionEnvironmentProxyServer).Specialize(ctx, req.(*types.Empty)) + return srv.(FunctionApiServer).Specialize(ctx, req.(*types.Empty)) } return interceptor(ctx, in, info, handler) } -func _FissionEnvironmentProxy_Invoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { +func _FunctionApi_Invoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(types.Empty) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(FissionEnvironmentProxyServer).Invoke(ctx, in) + return srv.(FunctionApiServer).Invoke(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/apiserver.FissionEnvironmentProxy/Invoke", + FullMethod: "/apiserver.FunctionApi/Invoke", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FissionEnvironmentProxyServer).Invoke(ctx, req.(*types.Empty)) + return srv.(FunctionApiServer).Invoke(ctx, req.(*types.Empty)) } return interceptor(ctx, in, info, handler) } -var _FissionEnvironmentProxy_serviceDesc = grpc.ServiceDesc{ - ServiceName: "apiserver.FissionEnvironmentProxy", - HandlerType: (*FissionEnvironmentProxyServer)(nil), +var _FunctionApi_serviceDesc = grpc.ServiceDesc{ + ServiceName: "apiserver.FunctionApi", + HandlerType: (*FunctionApiServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "Specialize", - Handler: _FissionEnvironmentProxy_Specialize_Handler, + Handler: _FunctionApi_Specialize_Handler, }, { MethodName: "Invoke", - Handler: _FissionEnvironmentProxy_Invoke_Handler, + Handler: _FunctionApi_Invoke_Handler, }, }, Streams: []grpc.StreamDesc{}, @@ -668,43 +596,40 @@ var _FissionEnvironmentProxy_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("pkg/apiserver/apiserver.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 595 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0x4f, 0x6f, 0x12, 0x5f, - 0x14, 0xfd, 0x01, 0xbf, 0x4c, 0x3b, 0x97, 0x88, 0xed, 0xd3, 0x02, 0x99, 0x14, 0x83, 0x2f, 0x26, - 0x36, 0x4d, 0x9c, 0x89, 0xd4, 0xc4, 0xd8, 0x85, 0xb1, 0x21, 0x48, 0x9b, 0xb8, 0xa8, 0xb0, 0x70, - 0xeb, 0x30, 0x73, 0x81, 0x27, 0xf0, 0xde, 0x74, 0xde, 0x83, 0x8a, 0xc6, 0x8d, 0x7b, 0x57, 0x7e, - 0x34, 0xbf, 0x82, 0x6b, 0x3f, 0x83, 0x99, 0xff, 0x63, 0x87, 0x10, 0x36, 0xf0, 0xde, 0x9d, 0x33, - 0xe7, 0x9e, 0x7b, 0xcf, 0xc9, 0x40, 0xcb, 0x9b, 0x4d, 0x2c, 0xdb, 0x63, 0x12, 0xfd, 0x15, 0xfa, - 0xd9, 0xc9, 0xf4, 0x7c, 0xa1, 0x04, 0xd1, 0xd3, 0x82, 0xf1, 0x6a, 0xc2, 0xd4, 0x74, 0x39, 0x32, - 0x1d, 0xb1, 0xb0, 0xc6, 0x4c, 0x4a, 0x26, 0x78, 0xf2, 0xff, 0xec, 0x56, 0xf8, 0xb3, 0xf1, 0x5c, - 0xdc, 0x5a, 0x01, 0x9b, 0x5a, 0x7b, 0x28, 0xa3, 0xdf, 0x88, 0xc5, 0xe8, 0xee, 0xfa, 0x2a, 0xae, - 0x90, 0x2b, 0xa9, 0x84, 0x8f, 0xb9, 0x63, 0x4c, 0x72, 0x3c, 0x11, 0x62, 0x32, 0xc7, 0x40, 0xa2, - 0x65, 0x73, 0x2e, 0x94, 0xad, 0x98, 0xe0, 0x71, 0x0b, 0xfa, 0x04, 0xc8, 0x87, 0x98, 0xe9, 0xca, - 0x45, 0xae, 0xd8, 0x98, 0xa1, 0x4f, 0x6a, 0x50, 0x66, 0x6e, 0xb3, 0xd4, 0x2e, 0x9d, 0xe8, 0x83, - 0x32, 0x73, 0x69, 0x03, 0x8e, 0x86, 0x68, 0xfb, 0xce, 0x34, 0xc1, 0x0e, 0xf0, 0x66, 0x89, 0x52, - 0xd1, 0x97, 0x50, 0xbf, 0xfb, 0x40, 0x7a, 0x82, 0x4b, 0x24, 0x2d, 0xf8, 0xdf, 0xb5, 0x95, 0xdd, - 0x2c, 0xb5, 0x2b, 0x27, 0xd5, 0x8e, 0x6e, 0xa6, 0x80, 0xb0, 0x4c, 0x4d, 0x38, 0x4e, 0xfb, 0xf2, - 0x95, 0x70, 0x42, 0x51, 0x5b, 0x14, 0x9c, 0x41, 0xa3, 0x88, 0x7f, 0xbf, 0x44, 0x7f, 0x4d, 0x9a, - 0xb0, 0x27, 0x97, 0xa3, 0x4f, 0xe8, 0xa8, 0x18, 0x9f, 0x5c, 0xe9, 0x39, 0xd4, 0x8b, 0x2f, 0xbd, - 0x63, 0x52, 0x91, 0x36, 0x54, 0x59, 0x5a, 0x91, 0xa1, 0x48, 0x7d, 0x90, 0x2f, 0xd1, 0xd7, 0x9b, - 0x04, 0xf6, 0x51, 0x0d, 0x30, 0x9a, 0xef, 0x11, 0x68, 0xd1, 0xaa, 0xe3, 0x09, 0x35, 0xb3, 0x17, - 0x5c, 0x07, 0x71, 0x95, 0xb6, 0x41, 0xbb, 0x44, 0x7b, 0xae, 0xa6, 0xa4, 0x0e, 0x9a, 0x54, 0xb6, - 0x5a, 0xca, 0x58, 0x5e, 0x7c, 0xeb, 0xfc, 0x29, 0x41, 0x35, 0x69, 0x71, 0x71, 0x7d, 0x45, 0x5e, - 0x80, 0xd6, 0xf5, 0xd1, 0x56, 0x48, 0xb2, 0x6d, 0x19, 0xd9, 0x91, 0x3e, 0xfc, 0xfe, 0xeb, 0xf7, - 0xcf, 0x72, 0x8d, 0xea, 0x56, 0xe2, 0xfd, 0x79, 0xe9, 0x94, 0xf4, 0xa1, 0xd2, 0x47, 0x45, 0x5a, - 0x66, 0x16, 0xc1, 0xa2, 0xa1, 0x79, 0x9a, 0x7a, 0x48, 0x73, 0x40, 0x6a, 0x29, 0x8d, 0xf5, 0x95, - 0xb9, 0xdf, 0xc8, 0x47, 0xd0, 0x22, 0x2b, 0x49, 0x3b, 0xc7, 0xb5, 0xd1, 0x76, 0xe3, 0xf1, 0x16, - 0x44, 0xe4, 0x3f, 0x3d, 0x0c, 0xdb, 0x54, 0x49, 0xa6, 0xb6, 0xf3, 0xa3, 0x02, 0x47, 0xc5, 0x9d, - 0x06, 0xa3, 0x8f, 0x40, 0x0b, 0x0a, 0x33, 0x24, 0x0d, 0xb3, 0x88, 0x18, 0x7a, 0xe8, 0x18, 0x4f, - 0x37, 0x0d, 0xb8, 0x21, 0x39, 0xc9, 0x7c, 0xb4, 0x6a, 0x65, 0x76, 0x06, 0x8b, 0x1a, 0x82, 0xd6, - 0xb5, 0xb9, 0x83, 0x73, 0xb2, 0x2b, 0x95, 0xa1, 0x99, 0xbd, 0x85, 0xa7, 0xd6, 0xb4, 0x19, 0x52, - 0x92, 0xd3, 0x83, 0x1c, 0x65, 0xb4, 0xb4, 0x9b, 0x68, 0xfb, 0x3b, 0x33, 0x6e, 0x07, 0x66, 0xf1, - 0x4a, 0x5a, 0x92, 0x62, 0xcb, 0xcb, 0xd4, 0xa7, 0x58, 0xde, 0x3f, 0x6e, 0x6c, 0xce, 0x3b, 0x7d, - 0x10, 0xd2, 0xdd, 0x23, 0xf9, 0xa5, 0x74, 0xde, 0xc0, 0xfe, 0x85, 0xbb, 0x60, 0x3c, 0x0e, 0xdf, - 0x30, 0x8c, 0x65, 0xca, 0x7a, 0x98, 0x63, 0x8d, 0x92, 0x4c, 0xef, 0x87, 0x2c, 0x3a, 0xd9, 0xb3, - 0xe2, 0x08, 0x7b, 0xd0, 0x78, 0x1b, 0x7d, 0x8f, 0x7a, 0x7c, 0xc5, 0x7c, 0xc1, 0x17, 0xc8, 0xd5, - 0xb5, 0x2f, 0x3e, 0xaf, 0xc9, 0x73, 0x80, 0xc0, 0x37, 0x66, 0xcf, 0xd9, 0x17, 0x4c, 0x49, 0x93, - 0x8d, 0x66, 0x7a, 0x64, 0x06, 0xa2, 0x69, 0x0a, 0xee, 0xc2, 0xf7, 0x43, 0x78, 0x99, 0xfc, 0x37, - 0xd2, 0xc2, 0xcf, 0xd6, 0xd9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf8, 0xdb, 0xab, 0x54, 0x80, - 0x05, 0x00, 0x00, + // 553 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x5d, 0x6f, 0xd3, 0x30, + 0x14, 0xa5, 0x1d, 0xca, 0x96, 0x1b, 0x31, 0x86, 0x61, 0x5d, 0x15, 0x6d, 0xa8, 0xb2, 0x90, 0x98, + 0x26, 0x91, 0x88, 0x0e, 0x09, 0xb1, 0x07, 0xc4, 0x54, 0x8d, 0x32, 0x89, 0x07, 0x68, 0x1f, 0x78, + 0x76, 0x93, 0xdb, 0xd6, 0xb4, 0xb5, 0x43, 0xec, 0x74, 0x2a, 0x88, 0x17, 0x9e, 0x79, 0xe3, 0xcf, + 0xf0, 0x3f, 0xf8, 0x0b, 0xfc, 0x10, 0x14, 0xe7, 0xab, 0x5a, 0x2a, 0xd4, 0x97, 0xd6, 0xbe, 0x3e, + 0x3e, 0xe7, 0xdc, 0x7b, 0x1c, 0x38, 0x89, 0x66, 0x13, 0x9f, 0x45, 0x5c, 0x61, 0xbc, 0xc4, 0xb8, + 0x5a, 0x79, 0x51, 0x2c, 0xb5, 0x24, 0x76, 0x59, 0x70, 0x5f, 0x4d, 0xb8, 0x9e, 0x26, 0x23, 0x2f, + 0x90, 0x0b, 0x7f, 0xcc, 0x95, 0xe2, 0x52, 0x14, 0xff, 0xcf, 0x6e, 0x64, 0x3c, 0x1b, 0xcf, 0xe5, + 0x8d, 0x9f, 0xb2, 0xe9, 0x55, 0x84, 0x2a, 0xfb, 0xcd, 0x58, 0xdc, 0xde, 0xb6, 0x57, 0x71, 0x89, + 0x42, 0x2b, 0x2d, 0x63, 0x5c, 0x5b, 0xe6, 0x24, 0xc7, 0x13, 0x29, 0x27, 0x73, 0x4c, 0x2d, 0xfa, + 0x4c, 0x08, 0xa9, 0x99, 0xe6, 0x52, 0xe4, 0x12, 0xf4, 0x09, 0x90, 0x4f, 0x39, 0xd3, 0x75, 0x88, + 0x42, 0xf3, 0x31, 0xc7, 0x98, 0xec, 0x43, 0x93, 0x87, 0xed, 0x46, 0xa7, 0x71, 0x6a, 0x0f, 0x9a, + 0x3c, 0xa4, 0x47, 0x70, 0x38, 0x44, 0x16, 0x07, 0xd3, 0x02, 0x3b, 0xc0, 0x2f, 0x09, 0x2a, 0x4d, + 0x5f, 0x42, 0xeb, 0xf6, 0x81, 0x8a, 0xa4, 0x50, 0x48, 0x4e, 0xe0, 0x6e, 0xc8, 0x34, 0x6b, 0x37, + 0x3a, 0x3b, 0xa7, 0x4e, 0xd7, 0xf6, 0x4a, 0x80, 0x29, 0x53, 0x0f, 0x8e, 0x4b, 0x5d, 0xb1, 0x94, + 0x81, 0x31, 0xf5, 0x1f, 0x07, 0xe7, 0x70, 0x54, 0xc7, 0x7f, 0x4c, 0x30, 0x5e, 0x91, 0x36, 0xec, + 0xaa, 0x64, 0xf4, 0x19, 0x03, 0x9d, 0xe3, 0x8b, 0x2d, 0xbd, 0x80, 0x56, 0xfd, 0xd2, 0x7b, 0xae, + 0x34, 0xe9, 0x80, 0xc3, 0xcb, 0x8a, 0x32, 0x26, 0xed, 0xc1, 0x7a, 0x89, 0xbe, 0xde, 0x64, 0xb0, + 0x8f, 0x7a, 0x80, 0x59, 0x7f, 0x8f, 0xc1, 0xca, 0x46, 0x9d, 0x77, 0x68, 0x79, 0x57, 0xe9, 0x76, + 0x90, 0x57, 0x69, 0x07, 0xac, 0x77, 0xc8, 0xe6, 0x7a, 0x4a, 0x5a, 0x60, 0x29, 0xcd, 0x74, 0xa2, + 0x72, 0x7b, 0xf9, 0xae, 0xfb, 0xb3, 0x01, 0x4e, 0x21, 0x71, 0xf9, 0xe1, 0x9a, 0xbc, 0x00, 0xab, + 0x17, 0x23, 0xd3, 0x48, 0xaa, 0x69, 0xb9, 0xd5, 0x92, 0x3e, 0xfa, 0xf1, 0xe7, 0xef, 0xaf, 0xe6, + 0x3e, 0xb5, 0xfd, 0x22, 0xfb, 0x8b, 0xc6, 0x19, 0xe9, 0xc3, 0x4e, 0x1f, 0x35, 0x39, 0xf1, 0xaa, + 0x27, 0x58, 0x0f, 0x74, 0x9d, 0xa6, 0x65, 0x68, 0x0e, 0xc8, 0x7e, 0x49, 0xe3, 0x7f, 0xe3, 0xe1, + 0xf7, 0xee, 0xef, 0x26, 0x1c, 0xd6, 0x3b, 0x4e, 0x8d, 0x8d, 0xc0, 0x4a, 0x0b, 0x33, 0x24, 0x47, + 0x5e, 0x1d, 0x31, 0x8c, 0x30, 0x70, 0x9f, 0x6e, 0x92, 0xdf, 0x90, 0x6b, 0xa1, 0x4e, 0x1d, 0xbf, + 0x1a, 0x76, 0xda, 0xc6, 0x10, 0xac, 0x1e, 0x13, 0x01, 0xce, 0xc9, 0xb6, 0x54, 0xae, 0xe5, 0x5d, + 0x2d, 0x22, 0xbd, 0xa2, 0x6d, 0x43, 0x49, 0xce, 0x0e, 0xd6, 0x28, 0x4d, 0x4b, 0x64, 0x9c, 0xcd, + 0x66, 0x6b, 0xc6, 0xe3, 0x0d, 0xc7, 0x3d, 0x29, 0x34, 0xe3, 0x02, 0xe3, 0x42, 0x87, 0xd4, 0x74, + 0xba, 0x6f, 0x60, 0xef, 0x32, 0x5c, 0x70, 0x91, 0xa7, 0x38, 0x34, 0xf9, 0x92, 0xdc, 0x9f, 0xfb, + 0x60, 0x4d, 0x3e, 0x7b, 0x12, 0xf4, 0xbe, 0xa1, 0xb2, 0xc9, 0xae, 0x9f, 0xbf, 0x85, 0x10, 0x9c, + 0xb7, 0x89, 0x08, 0xcc, 0xc4, 0x23, 0x4e, 0x9e, 0x03, 0xa4, 0x63, 0xe5, 0x6c, 0xce, 0xbf, 0x62, + 0x49, 0x54, 0x34, 0xfc, 0xd0, 0xdc, 0xbe, 0x47, 0x1c, 0x5f, 0x55, 0x20, 0x5a, 0x86, 0x74, 0x1b, + 0xbe, 0x67, 0xe0, 0x4d, 0x72, 0x67, 0x64, 0x99, 0x6f, 0xfe, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x01, 0x43, 0xe2, 0x27, 0xbd, 0x04, 0x00, 0x00, } diff --git a/pkg/apiserver/apiserver.pb.gw.go b/pkg/apiserver/apiserver.pb.gw.go index 9bc3345d..dc7cc8af 100644 --- a/pkg/apiserver/apiserver.pb.gw.go +++ b/pkg/apiserver/apiserver.pb.gw.go @@ -69,15 +69,6 @@ func request_WorkflowAPI_Get_0(ctx context.Context, marshaler runtime.Marshaler, } -func request_WorkflowAPI_Search_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SearchWorkflowRequest - var metadata runtime.ServerMetadata - - msg, err := client.Search(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - func request_WorkflowInvocationAPI_Invoke_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowInvocationAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq types.WorkflowInvocationSpec var metadata runtime.ServerMetadata @@ -145,15 +136,6 @@ func request_WorkflowInvocationAPI_Get_0(ctx context.Context, marshaler runtime. } -func request_WorkflowInvocationAPI_Search_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowInvocationAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty - var metadata runtime.ServerMetadata - - msg, err := client.Search(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - func request_AdminAPI_Status_0(ctx context.Context, marshaler runtime.Marshaler, client AdminAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq types.Empty var metadata runtime.ServerMetadata @@ -163,7 +145,7 @@ func request_AdminAPI_Status_0(ctx context.Context, marshaler runtime.Marshaler, } -func request_FissionEnvironmentProxy_Specialize_0(ctx context.Context, marshaler runtime.Marshaler, client FissionEnvironmentProxyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func request_FunctionApi_Specialize_0(ctx context.Context, marshaler runtime.Marshaler, client FunctionApiClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq types.Empty var metadata runtime.ServerMetadata @@ -260,35 +242,6 @@ func RegisterWorkflowAPIHandler(ctx context.Context, mux *runtime.ServeMux, conn }) - mux.Handle("GET", pattern_WorkflowAPI_Search_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(ctx) - defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_WorkflowAPI_Search_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_WorkflowAPI_Search_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - return nil } @@ -296,16 +249,12 @@ var ( pattern_WorkflowAPI_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"workflow"}, "")) pattern_WorkflowAPI_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"workflow", "id"}, "")) - - pattern_WorkflowAPI_Search_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"workflow"}, "")) ) var ( forward_WorkflowAPI_Create_0 = runtime.ForwardResponseMessage forward_WorkflowAPI_Get_0 = runtime.ForwardResponseMessage - - forward_WorkflowAPI_Search_0 = runtime.ForwardResponseMessage ) // RegisterWorkflowInvocationAPIHandlerFromEndpoint is same as RegisterWorkflowInvocationAPIHandler but @@ -425,35 +374,6 @@ func RegisterWorkflowInvocationAPIHandler(ctx context.Context, mux *runtime.Serv }) - mux.Handle("GET", pattern_WorkflowInvocationAPI_Search_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(ctx) - defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_WorkflowInvocationAPI_Search_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_WorkflowInvocationAPI_Search_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - return nil } @@ -463,8 +383,6 @@ var ( pattern_WorkflowInvocationAPI_Cancel_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"invocation", "id"}, "")) pattern_WorkflowInvocationAPI_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"invocation", "id"}, "")) - - pattern_WorkflowInvocationAPI_Search_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"invocation"}, "")) ) var ( @@ -473,8 +391,6 @@ var ( forward_WorkflowInvocationAPI_Cancel_0 = runtime.ForwardResponseMessage forward_WorkflowInvocationAPI_Get_0 = runtime.ForwardResponseMessage - - forward_WorkflowInvocationAPI_Search_0 = runtime.ForwardResponseMessage ) // RegisterAdminAPIHandlerFromEndpoint is same as RegisterAdminAPIHandler but @@ -547,9 +463,9 @@ var ( forward_AdminAPI_Status_0 = runtime.ForwardResponseMessage ) -// RegisterFissionEnvironmentProxyHandlerFromEndpoint is same as RegisterFissionEnvironmentProxyHandler but +// RegisterFunctionApiHandlerFromEndpoint is same as RegisterFunctionApiHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterFissionEnvironmentProxyHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { +func RegisterFunctionApiHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err @@ -569,15 +485,15 @@ func RegisterFissionEnvironmentProxyHandlerFromEndpoint(ctx context.Context, mux }() }() - return RegisterFissionEnvironmentProxyHandler(ctx, mux, conn) + return RegisterFunctionApiHandler(ctx, mux, conn) } -// RegisterFissionEnvironmentProxyHandler registers the http handlers for service FissionEnvironmentProxy to "mux". +// RegisterFunctionApiHandler registers the http handlers for service FunctionApi to "mux". // The handlers forward requests to the grpc endpoint over "conn". -func RegisterFissionEnvironmentProxyHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - client := NewFissionEnvironmentProxyClient(conn) +func RegisterFunctionApiHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + client := NewFunctionApiClient(conn) - mux.Handle("GET", pattern_FissionEnvironmentProxy_Specialize_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_FunctionApi_Specialize_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(ctx) defer cancel() if cn, ok := w.(http.CloseNotifier); ok { @@ -595,14 +511,14 @@ func RegisterFissionEnvironmentProxyHandler(ctx context.Context, mux *runtime.Se runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_FissionEnvironmentProxy_Specialize_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_FunctionApi_Specialize_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_FissionEnvironmentProxy_Specialize_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_FunctionApi_Specialize_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -610,9 +526,9 @@ func RegisterFissionEnvironmentProxyHandler(ctx context.Context, mux *runtime.Se } var ( - pattern_FissionEnvironmentProxy_Specialize_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"specialize"}, "")) + pattern_FunctionApi_Specialize_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"specialize"}, "")) ) var ( - forward_FissionEnvironmentProxy_Specialize_0 = runtime.ForwardResponseMessage + forward_FunctionApi_Specialize_0 = runtime.ForwardResponseMessage ) diff --git a/pkg/apiserver/apiserver.proto b/pkg/apiserver/apiserver.proto index be1fd372..35a1cf56 100644 --- a/pkg/apiserver/apiserver.proto +++ b/pkg/apiserver/apiserver.proto @@ -20,11 +20,11 @@ service WorkflowAPI { }; } - rpc Search (SearchWorkflowRequest) returns (SearchWorkflowResponse) { - option (google.api.http) = { - get: "/workflow" - }; - } +// rpc Search (SearchWorkflowRequest) returns (SearchWorkflowResponse) { +// option (google.api.http) = { +// get: "/workflow" +// }; +// } } message WorkflowIdentifier { @@ -66,7 +66,7 @@ service WorkflowInvocationAPI { // // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. // To lighten the request load, consider using a more specific request. - rpc Get (WorkflowInvocationIdentifier) returns (WorkflowInvocationGetReponse) { + rpc Get (WorkflowInvocationIdentifier) returns (WorkflowInvocationContainer) { option (google.api.http) = { get: "/invocation/{id}" }; @@ -75,11 +75,11 @@ service WorkflowInvocationAPI { // Search for workflow invocations based on a query // // By default the search returns at most 10 workflow invocations in no specific order. - rpc Search (Empty) returns (WorkflowInvocationList) { - option (google.api.http) = { - get: "/invocation" - }; - } +// rpc Search (Empty) returns (WorkflowInvocationList) { +// option (google.api.http) = { +// get: "/invocation" +// }; +// } } message WorkflowInvocationIdentifier { @@ -111,7 +111,7 @@ message Health { string status = 1; } -service FissionEnvironmentProxy { +service FunctionApi { rpc Specialize (Empty) returns (Empty) { option (google.api.http) = { get: "/specialize" diff --git a/pkg/apiserver/apiserver.swagger.json b/pkg/apiserver/apiserver.swagger.json index e1d45457..e2cb2276 100644 --- a/pkg/apiserver/apiserver.swagger.json +++ b/pkg/apiserver/apiserver.swagger.json @@ -16,22 +16,6 @@ ], "paths": { "/invocation": { - "get": { - "summary": "Search for workflow invocations based on a query", - "description": "By default the search returns at most 10 workflow invocations in no specific order.", - "operationId": "Search", - "responses": { - "200": { - "description": "", - "schema": { - "$ref": "#/definitions/apiserverWorkflowInvocationList" - } - } - }, - "tags": [ - "WorkflowInvocationAPI" - ] - }, "post": { "summary": "Create a new workflow invocation", "description": "In case the invocation specification is missing fields or contains invalid fields, a HTTP 400 is returned.", @@ -68,7 +52,7 @@ "200": { "description": "", "schema": { - "$ref": "#/definitions/apiserverWorkflowInvocationGetReponse" + "$ref": "#/definitions/WorkflowInvocationContainer" } } }, @@ -121,7 +105,7 @@ } }, "tags": [ - "FissionEnvironmentProxy" + "FunctionApi" ] } }, @@ -142,20 +126,6 @@ } }, "/workflow": { - "get": { - "operationId": "Search", - "responses": { - "200": { - "description": "", - "schema": { - "$ref": "#/definitions/apiserverSearchWorkflowResponse" - } - } - }, - "tags": [ - "WorkflowAPI" - ] - }, "post": { "operationId": "Create", "responses": { @@ -211,49 +181,31 @@ "type": "object", "title": "Util" }, - "Event": { + "Workflow": { "type": "object", "properties": { - "eventId": { - "$ref": "#/definitions/EventID" - }, - "type": { + "id": { "type": "string" }, - "time": { - "type": "string", - "format": "date-time" - }, - "data": { - "$ref": "#/definitions/protobufAny" - } - } - }, - "EventID": { - "type": "object", - "properties": { - "subjects": { - "type": "array", - "items": { - "type": "string" - } + "name": { + "type": "string" }, - "id": { + "version": { "type": "string" } } }, - "Workflow": { + "WorkflowInvocationContainer": { "type": "object", "properties": { "id": { "type": "string" }, - "name": { - "type": "string" + "spec": { + "$ref": "#/definitions/WorkflowInvocationSpec" }, - "version": { - "type": "string" + "status": { + "$ref": "#/definitions/WorkflowInvocationStatus" } } }, @@ -265,33 +217,39 @@ } } }, - "apiserverHealth": { + "WorkflowInvocationStatus": { "type": "object", "properties": { "status": { - "type": "string" + "$ref": "#/definitions/WorkflowInvocationStatusStatus" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "createdAt": { + "type": "string", + "format": "date-time" } } }, - "apiserverSearchWorkflowResponse": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/Workflow" - } - } - } + "WorkflowInvocationStatusStatus": { + "type": "string", + "enum": [ + "UNKNOWN", + "SCHEDULED", + "IN_PROGRESS", + "SUCCEEDED", + "FAILED", + "ABORTED" + ], + "default": "UNKNOWN" }, - "apiserverWorkflowInvocationGetReponse": { + "apiserverHealth": { "type": "object", "properties": { - "events": { - "type": "array", - "items": { - "$ref": "#/definitions/Event" - } + "status": { + "type": "string" } } }, @@ -302,32 +260,6 @@ "type": "string" } } - }, - "apiserverWorkflowInvocationList": { - "type": "object", - "properties": { - "invocations": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "protobufAny": { - "type": "object", - "properties": { - "type_url": { - "type": "string", - "description": "A URL/resource name whose content describes the type of the\nserialized protocol buffer message.\n\nFor URLs which use the scheme `http`, `https`, or no scheme, the\nfollowing restrictions and interpretations apply:\n\n* If no scheme is provided, `https` is assumed.\n* The last segment of the URL's path must represent the fully\n qualified name of the type (as in `path/google.protobuf.Duration`).\n The name should be in a canonical form (e.g., leading \".\" is\n not accepted).\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." - }, - "value": { - "type": "string", - "format": "byte", - "description": "Must be a valid serialized protocol buffer of the above specified type." - } - }, - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" } } } diff --git a/pkg/apiserver/invocation.go b/pkg/apiserver/invocation.go index ec14f010..36117c75 100644 --- a/pkg/apiserver/invocation.go +++ b/pkg/apiserver/invocation.go @@ -34,8 +34,8 @@ func (gi *grpcInvocationApiServer) Cancel(ctx context.Context, invocationId *Wor return &types.Empty{}, nil } -func (gi *grpcInvocationApiServer) Get(context.Context, *WorkflowInvocationIdentifier) (*WorkflowInvocationGetReponse, error) { - panic("implement me") +func (gi *grpcInvocationApiServer) Get(ctx context.Context, invocationId *WorkflowInvocationIdentifier) (*types.WorkflowInvocationContainer, error) { + return gi.api.Get(invocationId.GetId()) } func (gi *grpcInvocationApiServer) Search(context.Context, *types.Empty) (*WorkflowInvocationList, error) { diff --git a/pkg/controller/server.go b/pkg/controller/server.go index 3f7392ca..4a189d85 100644 --- a/pkg/controller/server.go +++ b/pkg/controller/server.go @@ -40,7 +40,7 @@ func (cr *InvocationController) Run() { // Subscribe to invocation creations cr.notifyChan = make(chan *project.InvocationNotification, NOTIFICATION_BUFFER) - err := cr.invocationProjector.Fetch(fmt.Sprintf("%s.>", INVOCATION_SUBJECT)) + err := cr.invocationProjector.Watch(fmt.Sprintf("%s.>", INVOCATION_SUBJECT)) if err != nil { panic(err) } diff --git a/pkg/eventstore/client.go b/pkg/eventstore/client.go index 18ce0ace..7d58262a 100644 --- a/pkg/eventstore/client.go +++ b/pkg/eventstore/client.go @@ -10,7 +10,7 @@ type Client interface { // Replays all events for subject, and continues to watch afterwards. Subscribe(config *SubscriptionConfig) (Subscription, error) - Get(subject string, id string) (*Event, error) // Stan.StartAtSequence // Convenience function, uses subscribe in the background + Get(subject string) ([]*Event, error) // Stan.StartAtSequence // Convenience function, uses subscribe in the background Append(event *Event) error diff --git a/pkg/eventstore/eventids/eventids.go b/pkg/eventstore/eventids/eventids.go index d8655a5d..d0efa19c 100644 --- a/pkg/eventstore/eventids/eventids.go +++ b/pkg/eventstore/eventids/eventids.go @@ -32,10 +32,11 @@ func ParseString(stringifiedEventId string) (*eventstore.EventID, error) { } func ToString(eventId *eventstore.EventID) string { - return fmt.Sprintf("%s%s%s", - strings.Join(eventId.GetSubjects(), SUBJECT_SEPARATOR), - ID_SEPARATOR, - eventId.GetId()) + s := strings.Join(eventId.GetSubjects(), SUBJECT_SEPARATOR) + if len(eventId.GetId()) > 0 { + s = s + ID_SEPARATOR + eventId.GetId() + } + return s } func New(subjects []string, id string) *eventstore.EventID { diff --git a/pkg/eventstore/nats/client.go b/pkg/eventstore/nats/client.go index 7fa3743a..1c0caa91 100644 --- a/pkg/eventstore/nats/client.go +++ b/pkg/eventstore/nats/client.go @@ -127,8 +127,25 @@ func (nc *Client) subscribeSingle(config *eventstore.SubscriptionConfig) (stan.S }, stan.DeliverAllAvailable()) } -func (nc *Client) Get(subject string, id string) (*eventstore.Event, error) { - panic("implement me") +func (nc *Client) Get(subject string) ([]*eventstore.Event, error) { + if hasWildcard(subject) { + logrus.Panicf("subscribeSingle does not support wildcards in subject '%s'", subject) + } + + msgs, err := nc.conn.MsgSeqRange(subject, FIRST_MSG, MOST_RECENT_MSG) + if err != nil { + return nil, err + } + results := []*eventstore.Event{} + for _, msg := range msgs { + event, err := unmarshalMsg(msg) + if err != nil { + return nil, err + } + results = append(results, event) + } + + return results, nil } func (nc *Client) Append(event *eventstore.Event) error { diff --git a/pkg/eventstore/nats/nats.go b/pkg/eventstore/nats/nats.go index 6c947278..a22ddf0a 100644 --- a/pkg/eventstore/nats/nats.go +++ b/pkg/eventstore/nats/nats.go @@ -1,6 +1,9 @@ package nats import ( + "fmt" + "time" + "github.com/nats-io/go-nats" "github.com/nats-io/go-nats-streaming" ) @@ -14,34 +17,108 @@ func NewConn(conn stan.Conn) *Conn { return &Conn{conn} } -func (sm *Conn) Publish(subject string, data []byte) error { - return sm.conn.Publish(subject, data) +func (cn *Conn) Publish(subject string, data []byte) error { + return cn.conn.Publish(subject, data) } -func (sm *Conn) PublishAsync(subject string, data []byte, ah stan.AckHandler) (string, error) { - return sm.conn.PublishAsync(subject, data, ah) +func (cn *Conn) PublishAsync(subject string, data []byte, ah stan.AckHandler) (string, error) { + return cn.conn.PublishAsync(subject, data, ah) } -func (sm *Conn) Subscribe(subject string, cb stan.MsgHandler, opts ...stan.SubscriptionOption) (stan.Subscription, error) { - return sm.conn.Subscribe(subject, cb, opts...) +func (cn *Conn) Subscribe(subject string, cb stan.MsgHandler, opts ...stan.SubscriptionOption) (stan.Subscription, error) { + return cn.conn.Subscribe(subject, cb, opts...) } -func (sm *Conn) QueueSubscribe(subject, qgroup string, cb stan.MsgHandler, opts ...stan.SubscriptionOption) (stan.Subscription, error) { - return sm.conn.QueueSubscribe(subject, qgroup, cb, opts...) +func (cn *Conn) QueueSubscribe(subject, qgroup string, cb stan.MsgHandler, opts ...stan.SubscriptionOption) (stan.Subscription, error) { + return cn.conn.QueueSubscribe(subject, qgroup, cb, opts...) } -func (sm *Conn) Close() error { - return sm.conn.Close() +func (cn *Conn) Close() error { + return cn.conn.Close() } -func (sm *Conn) NatsConn() *nats.Conn { - return sm.conn.NatsConn() +func (cn *Conn) NatsConn() *nats.Conn { + return cn.conn.NatsConn() } // Augmented functions -func (sm *Conn) SubscribeChan(subject string, msgChan chan *stan.Msg, opts ...stan.SubscriptionOption) (stan.Subscription, error) { - return sm.conn.Subscribe(subject, func(msg *stan.Msg) { +func (cn *Conn) SubscribeChan(subject string, msgChan chan *stan.Msg, opts ...stan.SubscriptionOption) (stan.Subscription, error) { + return cn.conn.Subscribe(subject, func(msg *stan.Msg) { msgChan <- msg }, opts...) } + +// Python style element selector (-1 = len(events)-1) + +const MOST_RECENT_MSG uint64 = 0 +const FIRST_MSG uint64 = 1 + +// 0 == current +func (cn *Conn) Msg(subject string, seqId uint64) (*stan.Msg, error) { + msgRange, err := cn.MsgSeqRange(subject, seqId, seqId) + if err != nil { + return nil, err + } + if len(msgRange) == 0 { + return nil, nil + } + return msgRange[0], nil +} + +// 0 == 1 +func (cn *Conn) MsgSeqRange(subject string, seqStart uint64, seqEnd uint64) ([]*stan.Msg, error) { + // Find boundary if 0 + if seqEnd == 0 { + rightBound := make(chan uint64) + + leftSub, err := cn.conn.Subscribe(subject, func(msg *stan.Msg) { + rightBound <- msg.Sequence + msg.Sub.Close() + msg.Ack() + }, stan.MaxInflight(1), stan.SetManualAckMode(), stan.StartWithLastReceived()) + if err != nil { + return nil, err + } + defer leftSub.Close() + select { + case seqEnd = <-rightBound: + case <-time.After(time.Duration(10) * time.Second): + return nil, fmt.Errorf("MsgSeqRange timed out while finding boundary for subject '%s'", subject) + } + } + + if seqStart > seqEnd { + return nil, fmt.Errorf("seqStart '%v' can not be larger than seqEnd '%v'.", seqStart, seqEnd) + } + + // Subscribe until boundary + leftBoundOptions := []stan.SubscriptionOption{stan.MaxInflight(1), stan.SetManualAckMode()} + if seqStart == 0 { + leftBoundOptions = append(leftBoundOptions, stan.StartWithLastReceived()) + } else { + leftBoundOptions = append(leftBoundOptions, stan.StartAtSequence(seqStart)) + } + + result := []*stan.Msg{} + c := make(chan *stan.Msg) + sub, err := cn.conn.Subscribe(subject, func(msg *stan.Msg) { + defer msg.Ack() + // TODO maybe add a timeout here too? + c <- msg + if msg.Sequence == seqEnd { + msg.Sub.Close() + close(c) + } + }, leftBoundOptions...) + if err != nil { + return nil, err + } + defer sub.Close() + + for msg := range c { + result = append(result, msg) + } + + return result, nil +} diff --git a/pkg/projector/project/projector.go b/pkg/projector/project/projector.go index ade1a613..f2ad4fa2 100644 --- a/pkg/projector/project/projector.go +++ b/pkg/projector/project/projector.go @@ -24,7 +24,7 @@ type InvocationProjector interface { // Replays events, if it already exists, it is invalidated and replayed // Populates cache - Fetch(subject string) error + Watch(query string) error // Suscribe to updates in this projector Subscribe(updateCh chan *InvocationNotification) error @@ -47,85 +47,13 @@ type invocationProjector struct { } func NewInvocationProjector(esClient eventstore.Client, cache cache.Cache) InvocationProjector { - - updateChan := make(chan *eventstore.Event) - - projector := &invocationProjector{ + p := &invocationProjector{ esClient: esClient, cache: cache, - updateChan: updateChan, + updateChan: make(chan *eventstore.Event), } - - go func() { - defer logrus.Debug("InvocationProjector update loop has shutdown.") - for event := range projector.updateChan { - invocationId := event.EventId.Subjects[1] // TODO fix hardcoded lookup - - currentState := projector.getCache(invocationId) - if currentState == nil { - currentState = invocation.Initial() - } - - newState, err := invocation.Apply(*currentState, event) - if err != nil { - // TODO better error handling (e.g. retry / replay) - logrus.WithFields(logrus.Fields{ - "err": err, - "currentState": currentState, - "event": event, - }).Error("Failed to apply event to state") - continue - } - - err = projector.cache.Put(invocationId, newState) - if err != nil { - logrus.WithFields(logrus.Fields{ - "err": err, - "invocationId": invocationId, - "state": newState, - "event": event, - }).Warn("Failed to put invocation into cache.") - } - - timestamp, err := ptypes.Timestamp(event.Time) - if err != nil { - logrus.WithFields(logrus.Fields{ - "event": event, - }).Warn("Could not parse timestamp, using fallback time.") - timestamp = time.Now() - } - - invocationEventType, err := invocationevent.Parse(event.Type) - if err != nil { - logrus.WithFields(logrus.Fields{ - "event": event, - "types": event.Type, - "err": err, - }).Warn("Failed to parse event type") - invocationEventType = -1 - } - - notification := &InvocationNotification{ - Id: invocationId, - Data: newState, - Type: invocationEventType, - Time: timestamp, - } - - // TODO should judge whether to send notification (old messages not) - for _, c := range projector.subscribers { - select { - case c <- notification: - logrus.WithField("notification", notification).Debug("Notified subscriber.") - default: - logrus.WithField("notification", notification). - Debug("Failed to notify subscriber chan because of blocked channel.") - } - } - } - }() - - return projector + go p.Run() + return p } func (ip *invocationProjector) getCache(subject string) *types.WorkflowInvocationContainer { @@ -142,8 +70,28 @@ func (ip *invocationProjector) getCache(subject string) *types.WorkflowInvocatio } // Get projection from cache or attempt to replay it. +// Get should work without having to watch! func (ip *invocationProjector) Get(subject string) (*types.WorkflowInvocationContainer, error) { - panic("not implemented") + cached := ip.getCache(subject) + if cached != nil { + return cached, nil + } + + events, err := ip.esClient.Get("invocation." + subject) + if err != nil { + return nil, err + } + + var resultState *types.WorkflowInvocationContainer + for _, event := range events { + updatedState, err := ip.applyUpdate(event) + if err != nil { + logrus.Error(err) + } + resultState = updatedState + } + + return resultState, nil } // Invalidate deletes any projection of the subject. A next get of the subject will require replaying of the events. @@ -151,7 +99,7 @@ func (ip *invocationProjector) Invalidate(subject string) error { return ip.cache.Delete(subject) } -func (ip *invocationProjector) Fetch(subject string) error { +func (ip *invocationProjector) Watch(subject string) error { _, err := ip.esClient.Subscribe(&eventstore.SubscriptionConfig{ Subject: subject, EventCh: ip.updateChan, // TODO provide clean channel that multiplexes into actual one @@ -176,3 +124,76 @@ func (ip *invocationProjector) Close() error { } return nil } + +func (ip *invocationProjector) Run() { + defer logrus.Debug("InvocationProjector update loop has shutdown.") + for event := range ip.updateChan { + updatedState, err := ip.applyUpdate(event) + if err != nil { + logrus.WithFields(logrus.Fields{ + "err": err, + "updatedState": updatedState, + "event": event, + }).Error("Failed to apply event to state") + } + + timestamp, err := ptypes.Timestamp(event.Time) + if err != nil { + logrus.WithFields(logrus.Fields{ + "event": event, + }).Warn("Could not parse timestamp, using fallback time.") + timestamp = time.Now() + } + + invocationEventType, err := invocationevent.Parse(event.Type) + if err != nil { + logrus.WithFields(logrus.Fields{ + "event": event, + "types": event.Type, + "err": err, + }).Warn("Failed to parse event type") + invocationEventType = -1 + } + + // TODO should judge whether to send notification (old messages not) + ip.notifySubscribers(&InvocationNotification{ + Id: updatedState.GetId(), + Data: updatedState, + Type: invocationEventType, + Time: timestamp, + }) + } +} + +func (ip *invocationProjector) applyUpdate(event *eventstore.Event) (*types.WorkflowInvocationContainer, error) { + invocationId := event.EventId.Subjects[1] // TODO fix hardcoded lookup + + currentState := ip.getCache(invocationId) + if currentState == nil { + currentState = invocation.Initial() + } + + newState, err := invocation.Apply(*currentState, event) + if err != nil { + // TODO improve error handling (e.g. retry / replay) + return nil, err + } + + err = ip.cache.Put(invocationId, newState) + if err != nil { + return nil, err + } + return newState, nil +} + +func (ip *invocationProjector) notifySubscribers(notification *InvocationNotification) { + for _, c := range ip.subscribers { + select { + case c <- notification: + logrus.WithField("notification", notification).Debug("Notified subscriber.") + default: + logrus.WithField("notification", notification). + Debug("Failed to notify subscriber chan because of blocked channel.") + } + } +} diff --git a/pkg/util/BUILD.bazel b/pkg/util/BUILD.bazel new file mode 100644 index 00000000..d5080460 --- /dev/null +++ b/pkg/util/BUILD.bazel @@ -0,0 +1,7 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["util.go"], + visibility = ["//visibility:public"], +) From 55412dc411d7e870926e6a2936b7536c67593812 Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Fri, 28 Jul 2017 12:43:19 -0700 Subject: [PATCH 08/24] Add Subject-search capability to event store NATS client --- pkg/eventstore/client.go | 3 ++ pkg/eventstore/nats/client.go | 62 ++++++++++++++++++++++++++++++----- pkg/eventstore/nats/nats.go | 1 + 3 files changed, 58 insertions(+), 8 deletions(-) diff --git a/pkg/eventstore/client.go b/pkg/eventstore/client.go index 7d58262a..7724bc88 100644 --- a/pkg/eventstore/client.go +++ b/pkg/eventstore/client.go @@ -16,6 +16,9 @@ type Client interface { // To replay existing: subscription.close() -> subscribe(subscription.Config()) Replay(subject string, subscription Subscription) error + + // Lists subjects matching the query + Subjects(query string) ([]string, error) } type Subscription interface { diff --git a/pkg/eventstore/nats/client.go b/pkg/eventstore/nats/client.go index 1c0caa91..1ddf56b8 100644 --- a/pkg/eventstore/nats/client.go +++ b/pkg/eventstore/nats/client.go @@ -61,7 +61,12 @@ func (nc *Client) Subscribe(config *eventstore.SubscriptionConfig) (eventstore.S subjectEvent := &eventstore.SubjectEvent{} err := proto.Unmarshal(msg.Data, subjectEvent) if err != nil { - logrus.Errorf("Failed to retrieve event from msg '%v'", msg) + logrus.WithFields(logrus.Fields{ + "msg": subjectEvent, + "query": query, + "activitySubject": activitySubject, + }).Warnf("Failed to parse subjectEvent.") + return } logrus.WithFields(logrus.Fields{ "subject": activitySubject, @@ -70,7 +75,11 @@ func (nc *Client) Subscribe(config *eventstore.SubscriptionConfig) (eventstore.S // Although the activity channel should be specific to one query, recheck if subject falls in range of query. if !queryMatches(subjectEvent.GetSubject(), query) { - logrus.Warnf("Received invalid subjectEvent '%v' on activity subject '%s'", subjectEvent, activitySubject) + logrus.WithFields(logrus.Fields{ + "activitySubject": activitySubject, + "subscribeSubject": query, + "subjectEvent": subjectEvent, + }).Debug("Ignoring activity event, because it does not match subscription subject.") return } @@ -132,6 +141,8 @@ func (nc *Client) Get(subject string) ([]*eventstore.Event, error) { logrus.Panicf("subscribeSingle does not support wildcards in subject '%s'", subject) } + logrus.WithField("subject", subject).Debug("GET events from event store") + msgs, err := nc.conn.MsgSeqRange(subject, FIRST_MSG, MOST_RECENT_MSG) if err != nil { return nil, err @@ -148,6 +159,37 @@ func (nc *Client) Get(subject string) ([]*eventstore.Event, error) { return results, nil } +func (nc *Client) Subjects(query string) ([]string, error) { + + logrus.WithField("query", query).Debug("LIST subjects from event store") + + activitySubject := toActivitySubject(query) + + msgs, err := nc.conn.MsgSeqRange(activitySubject, FIRST_MSG, MOST_RECENT_MSG) + if err != nil { + return nil, err + } + results := []string{} + for _, msg := range msgs { + subjectEvent := &eventstore.SubjectEvent{} + err := proto.Unmarshal(msg.Data, subjectEvent) + if err != nil { + logrus.WithFields(logrus.Fields{ + "msg": subjectEvent, + "query": query, + "activitySubject": activitySubject, + }).Warnf("Failed to parse subjectEvent.") + continue + } + + if queryMatches(subjectEvent.GetSubject(), query) { + results = append(results, subjectEvent.GetSubject()) + } + } + + return results, nil +} + func (nc *Client) Append(event *eventstore.Event) error { invokeSubject := createSubject(event.GetEventId()) data, err := proto.Marshal(event) @@ -162,18 +204,22 @@ func (nc *Client) Append(event *eventstore.Event) error { } // Announce subject activity on notification thread, because of missing wildcards in NATS streaming - err = nc.publishActivity(&eventstore.SubjectEvent{ + activitySubject := toActivitySubject(invokeSubject) + activityEvent := &eventstore.SubjectEvent{ Subject: invokeSubject, Type: eventstore.SubjectEvent_CREATED, // TODO infer from context if created or closed - }) + } + err = nc.publishActivity(activityEvent) if err != nil { logrus.Warnf("Failed to publish subject '%s' to activity subject '%s': %v", invokeSubject, - toActivitySubject(invokeSubject), err) + activitySubject, err) } logrus.WithFields(logrus.Fields{ - "subject": invokeSubject, - "event": event, - }).Info("Published event to event store.") + "subject": invokeSubject, + "event": event, + "activitySubject": activitySubject, + "activityEvent": activityEvent, + }).Info("PUBLISH event to event store.") return nil } diff --git a/pkg/eventstore/nats/nats.go b/pkg/eventstore/nats/nats.go index a22ddf0a..a191a70e 100644 --- a/pkg/eventstore/nats/nats.go +++ b/pkg/eventstore/nats/nats.go @@ -66,6 +66,7 @@ func (cn *Conn) Msg(subject string, seqId uint64) (*stan.Msg, error) { return msgRange[0], nil } +// TODO use channel as output to enable backpressure // 0 == 1 func (cn *Conn) MsgSeqRange(subject string, seqStart uint64, seqEnd uint64) ([]*stan.Msg, error) { // Find boundary if 0 From 15ee77974a1fd2f23b2e6aa102a4caf4a4d992bc Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Fri, 28 Jul 2017 12:43:34 -0700 Subject: [PATCH 09/24] Add workflowApi --- pkg/api/BUILD.bazel | 8 +- pkg/api/function.go | 36 ++++ pkg/api/invocation.go | 3 +- pkg/api/workflow.go | 69 +++++++ pkg/apiserver/BUILD.bazel | 1 + pkg/apiserver/apiserver.pb.go | 124 +++++++----- pkg/apiserver/apiserver.pb.gw.go | 44 +++- pkg/apiserver/apiserver.proto | 16 +- pkg/apiserver/apiserver.swagger.json | 77 +++++-- pkg/apiserver/workflow.go | 80 +++----- pkg/cache/BUILD.bazel | 1 + pkg/cache/cache.go | 17 ++ pkg/controller/server.go | 3 +- pkg/projector/project/BUILD.bazel | 7 +- pkg/projector/project/invocation/BUILD.bazel | 8 +- .../project/invocation/invocation.go | 22 +- .../project/{ => invocation}/projector.go | 49 ++--- pkg/projector/project/types.go | 48 +++++ pkg/projector/project/workflow/BUILD.bazel | 18 ++ pkg/projector/project/workflow/projector.go | 129 ++++++++++++ pkg/projector/project/workflow/workflow.go | 70 +++++++ pkg/types/BUILD.bazel | 5 +- pkg/types/types.pb.go | 190 +++++++++++------- pkg/types/types.proto | 30 ++- pkg/types/typeutils.go | 19 ++ 25 files changed, 811 insertions(+), 263 deletions(-) create mode 100644 pkg/api/function.go create mode 100644 pkg/api/workflow.go rename pkg/projector/project/{ => invocation}/projector.go (77%) create mode 100644 pkg/projector/project/types.go create mode 100644 pkg/projector/project/workflow/BUILD.bazel create mode 100644 pkg/projector/project/workflow/projector.go create mode 100644 pkg/projector/project/workflow/workflow.go create mode 100644 pkg/types/typeutils.go diff --git a/pkg/api/BUILD.bazel b/pkg/api/BUILD.bazel index 0687ff9f..012c0244 100644 --- a/pkg/api/BUILD.bazel +++ b/pkg/api/BUILD.bazel @@ -2,7 +2,11 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", - srcs = ["invocation.go"], + srcs = [ + "function.go", + "invocation.go", + "workflow.go", + ], visibility = ["//visibility:public"], deps = [ "//pkg/cache:go_default_library", @@ -10,6 +14,8 @@ go_library( "//pkg/eventstore/eventids:go_default_library", "//pkg/eventstore/events:go_default_library", "//pkg/projector/project:go_default_library", + "//pkg/projector/project/invocation:go_default_library", + "//pkg/projector/project/workflow:go_default_library", "//pkg/types:go_default_library", "//vendor/github.com/golang/protobuf/ptypes:go_default_library", "//vendor/github.com/satori/go.uuid:go_default_library", diff --git a/pkg/api/function.go b/pkg/api/function.go new file mode 100644 index 00000000..06684c3d --- /dev/null +++ b/pkg/api/function.go @@ -0,0 +1,36 @@ +package api + +// Towards environment (Fission) +// Should not be exposed externally, used by controller & co +type FunctionApi interface { + // Request function invocation + Invoke() + + // Cancel function invocation + Cancel() + + // Request status update of function + Status() +} + +// Towards engine +type FunctionHandlerApi interface { + // Handler to update the status of the function invocation + UpdateStatus() +} + +type FunctionInvocation interface { + Id() FunctionInvocationMetadata + Spec() FunctionInvocationSpec + Status() FunctionInvocationStatus +} + +type FunctionInvocationSpec interface { + // Strategy +} + +type FunctionInvocationStatus interface { +} + +type FunctionInvocationMetadata interface { +} diff --git a/pkg/api/invocation.go b/pkg/api/invocation.go index a9a69f05..affb61a7 100644 --- a/pkg/api/invocation.go +++ b/pkg/api/invocation.go @@ -6,6 +6,7 @@ import ( "github.com/fission/fission-workflow/pkg/eventstore/eventids" "github.com/fission/fission-workflow/pkg/eventstore/events" "github.com/fission/fission-workflow/pkg/projector/project" + "github.com/fission/fission-workflow/pkg/projector/project/invocation" "github.com/fission/fission-workflow/pkg/types" "github.com/golang/protobuf/ptypes" "github.com/satori/go.uuid" @@ -21,7 +22,7 @@ type InvocationApi struct { } func NewInvocationApi(esClient eventstore.Client) *InvocationApi { - return &InvocationApi{esClient, project.NewInvocationProjector(esClient, cache.NewMapCache())} + return &InvocationApi{esClient, invocation.NewInvocationProjector(esClient, cache.NewMapCache())} } // Commands diff --git a/pkg/api/workflow.go b/pkg/api/workflow.go new file mode 100644 index 00000000..bff0949c --- /dev/null +++ b/pkg/api/workflow.go @@ -0,0 +1,69 @@ +package api + +import ( + "github.com/fission/fission-workflow/pkg/cache" + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/fission/fission-workflow/pkg/eventstore/eventids" + "github.com/fission/fission-workflow/pkg/eventstore/events" + "github.com/fission/fission-workflow/pkg/projector/project" + "github.com/fission/fission-workflow/pkg/projector/project/workflow" + "github.com/fission/fission-workflow/pkg/types" + "github.com/golang/protobuf/ptypes" + "github.com/satori/go.uuid" +) + +const ( + WORKFLOW_SUBJECT = "workflows" +) + +type WorkflowApi struct { + esClient eventstore.Client + Projector project.WorkflowProjector +} + +func NewWorkflowApi(esClient eventstore.Client) *WorkflowApi { + return &WorkflowApi{esClient, workflow.NewWorkflowProjector(esClient, cache.NewMapCache())} +} + +func (wa *WorkflowApi) Create(workflow *types.WorkflowSpec) (string, error) { + // TODO validation + id := uuid.NewV4().String() + + data, err := ptypes.MarshalAny(workflow) + if err != nil { + return "", err + } + + eventId := eventids.NewSubject(WORKFLOW_SUBJECT, id) + event := events.New(eventId, types.WorkflowEvent_WORKFLOW_CREATED.String(), data) + err = wa.esClient.Append(event) + if err != nil { + return "", err + } + + return id, nil +} + +func (wa *WorkflowApi) Delete(id string) error { + // TODO validation + eventId := eventids.NewSubject(WORKFLOW_SUBJECT, id) + + event := events.New(eventId, types.WorkflowEvent_WORKFLOW_CREATED.String(), nil) + + err := wa.esClient.Append(event) + if err != nil { + return err + } + return nil +} + +func (wa *WorkflowApi) Get(id string) (*types.Workflow, error) { + return wa.Projector.Get(id) +} + +// TODO Support queries +// TODO support filtering; not fetching all +// Lists all the ids of all workflows, watched by the projector +func (wa *WorkflowApi) List(query string) ([]string, error) { + return wa.Projector.List(query) +} diff --git a/pkg/apiserver/BUILD.bazel b/pkg/apiserver/BUILD.bazel index 4388e008..9743436e 100644 --- a/pkg/apiserver/BUILD.bazel +++ b/pkg/apiserver/BUILD.bazel @@ -17,6 +17,7 @@ go_library( "//vendor/github.com/golang/protobuf/proto:go_default_library", "//vendor/github.com/grpc-ecosystem/grpc-gateway/runtime:go_default_library", "//vendor/github.com/grpc-ecosystem/grpc-gateway/utilities:go_default_library", + "//vendor/github.com/sirupsen/logrus:go_default_library", "//vendor/golang.org/x/net/context:go_default_library", "//vendor/google.golang.org/genproto/googleapis/api/annotations:go_default_library", "//vendor/google.golang.org/grpc:go_default_library", diff --git a/pkg/apiserver/apiserver.pb.go b/pkg/apiserver/apiserver.pb.go index 0f3d11ab..7099e524 100644 --- a/pkg/apiserver/apiserver.pb.go +++ b/pkg/apiserver/apiserver.pb.go @@ -67,7 +67,7 @@ func (*SearchWorkflowRequest) ProtoMessage() {} func (*SearchWorkflowRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } type SearchWorkflowResponse struct { - Data []*types.Workflow `protobuf:"bytes,1,rep,name=data" json:"data,omitempty"` + Workflows []string `protobuf:"bytes,1,rep,name=workflows" json:"workflows,omitempty"` } func (m *SearchWorkflowResponse) Reset() { *m = SearchWorkflowResponse{} } @@ -75,9 +75,9 @@ func (m *SearchWorkflowResponse) String() string { return proto.Compa func (*SearchWorkflowResponse) ProtoMessage() {} func (*SearchWorkflowResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } -func (m *SearchWorkflowResponse) GetData() []*types.Workflow { +func (m *SearchWorkflowResponse) GetWorkflows() []string { if m != nil { - return m.Data + return m.Workflows } return nil } @@ -184,7 +184,8 @@ const _ = grpc.SupportPackageIsVersion4 // Client API for WorkflowAPI service type WorkflowAPIClient interface { - Create(ctx context.Context, in *types.Workflow, opts ...grpc.CallOption) (*types.Workflow, error) + Create(ctx context.Context, in *types.WorkflowSpec, opts ...grpc.CallOption) (*WorkflowIdentifier, error) + List(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*SearchWorkflowResponse, error) Get(ctx context.Context, in *WorkflowIdentifier, opts ...grpc.CallOption) (*types.Workflow, error) } @@ -196,8 +197,8 @@ func NewWorkflowAPIClient(cc *grpc.ClientConn) WorkflowAPIClient { return &workflowAPIClient{cc} } -func (c *workflowAPIClient) Create(ctx context.Context, in *types.Workflow, opts ...grpc.CallOption) (*types.Workflow, error) { - out := new(types.Workflow) +func (c *workflowAPIClient) Create(ctx context.Context, in *types.WorkflowSpec, opts ...grpc.CallOption) (*WorkflowIdentifier, error) { + out := new(WorkflowIdentifier) err := grpc.Invoke(ctx, "/apiserver.WorkflowAPI/Create", in, out, c.cc, opts...) if err != nil { return nil, err @@ -205,6 +206,15 @@ func (c *workflowAPIClient) Create(ctx context.Context, in *types.Workflow, opts return out, nil } +func (c *workflowAPIClient) List(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*SearchWorkflowResponse, error) { + out := new(SearchWorkflowResponse) + err := grpc.Invoke(ctx, "/apiserver.WorkflowAPI/List", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *workflowAPIClient) Get(ctx context.Context, in *WorkflowIdentifier, opts ...grpc.CallOption) (*types.Workflow, error) { out := new(types.Workflow) err := grpc.Invoke(ctx, "/apiserver.WorkflowAPI/Get", in, out, c.cc, opts...) @@ -217,7 +227,8 @@ func (c *workflowAPIClient) Get(ctx context.Context, in *WorkflowIdentifier, opt // Server API for WorkflowAPI service type WorkflowAPIServer interface { - Create(context.Context, *types.Workflow) (*types.Workflow, error) + Create(context.Context, *types.WorkflowSpec) (*WorkflowIdentifier, error) + List(context.Context, *types.Empty) (*SearchWorkflowResponse, error) Get(context.Context, *WorkflowIdentifier) (*types.Workflow, error) } @@ -226,7 +237,7 @@ func RegisterWorkflowAPIServer(s *grpc.Server, srv WorkflowAPIServer) { } func _WorkflowAPI_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Workflow) + in := new(types.WorkflowSpec) if err := dec(in); err != nil { return nil, err } @@ -238,7 +249,25 @@ func _WorkflowAPI_Create_Handler(srv interface{}, ctx context.Context, dec func( FullMethod: "/apiserver.WorkflowAPI/Create", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowAPIServer).Create(ctx, req.(*types.Workflow)) + return srv.(WorkflowAPIServer).Create(ctx, req.(*types.WorkflowSpec)) + } + return interceptor(ctx, in, info, handler) +} + +func _WorkflowAPI_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkflowAPIServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.WorkflowAPI/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkflowAPIServer).List(ctx, req.(*types.Empty)) } return interceptor(ctx, in, info, handler) } @@ -269,6 +298,10 @@ var _WorkflowAPI_serviceDesc = grpc.ServiceDesc{ MethodName: "Create", Handler: _WorkflowAPI_Create_Handler, }, + { + MethodName: "List", + Handler: _WorkflowAPI_List_Handler, + }, { MethodName: "Get", Handler: _WorkflowAPI_Get_Handler, @@ -596,40 +629,41 @@ var _FunctionApi_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("pkg/apiserver/apiserver.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 553 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x5d, 0x6f, 0xd3, 0x30, - 0x14, 0xa5, 0x1d, 0xca, 0x96, 0x1b, 0x31, 0x86, 0x61, 0x5d, 0x15, 0x6d, 0xa8, 0xb2, 0x90, 0x98, - 0x26, 0x91, 0x88, 0x0e, 0x09, 0xb1, 0x07, 0xc4, 0x54, 0x8d, 0x32, 0x89, 0x07, 0x68, 0x1f, 0x78, - 0x76, 0x93, 0xdb, 0xd6, 0xb4, 0xb5, 0x43, 0xec, 0x74, 0x2a, 0x88, 0x17, 0x9e, 0x79, 0xe3, 0xcf, - 0xf0, 0x3f, 0xf8, 0x0b, 0xfc, 0x10, 0x14, 0xe7, 0xab, 0x5a, 0x2a, 0xd4, 0x97, 0xd6, 0xbe, 0x3e, - 0x3e, 0xe7, 0xdc, 0x7b, 0x1c, 0x38, 0x89, 0x66, 0x13, 0x9f, 0x45, 0x5c, 0x61, 0xbc, 0xc4, 0xb8, - 0x5a, 0x79, 0x51, 0x2c, 0xb5, 0x24, 0x76, 0x59, 0x70, 0x5f, 0x4d, 0xb8, 0x9e, 0x26, 0x23, 0x2f, - 0x90, 0x0b, 0x7f, 0xcc, 0x95, 0xe2, 0x52, 0x14, 0xff, 0xcf, 0x6e, 0x64, 0x3c, 0x1b, 0xcf, 0xe5, - 0x8d, 0x9f, 0xb2, 0xe9, 0x55, 0x84, 0x2a, 0xfb, 0xcd, 0x58, 0xdc, 0xde, 0xb6, 0x57, 0x71, 0x89, - 0x42, 0x2b, 0x2d, 0x63, 0x5c, 0x5b, 0xe6, 0x24, 0xc7, 0x13, 0x29, 0x27, 0x73, 0x4c, 0x2d, 0xfa, - 0x4c, 0x08, 0xa9, 0x99, 0xe6, 0x52, 0xe4, 0x12, 0xf4, 0x09, 0x90, 0x4f, 0x39, 0xd3, 0x75, 0x88, - 0x42, 0xf3, 0x31, 0xc7, 0x98, 0xec, 0x43, 0x93, 0x87, 0xed, 0x46, 0xa7, 0x71, 0x6a, 0x0f, 0x9a, - 0x3c, 0xa4, 0x47, 0x70, 0x38, 0x44, 0x16, 0x07, 0xd3, 0x02, 0x3b, 0xc0, 0x2f, 0x09, 0x2a, 0x4d, - 0x5f, 0x42, 0xeb, 0xf6, 0x81, 0x8a, 0xa4, 0x50, 0x48, 0x4e, 0xe0, 0x6e, 0xc8, 0x34, 0x6b, 0x37, - 0x3a, 0x3b, 0xa7, 0x4e, 0xd7, 0xf6, 0x4a, 0x80, 0x29, 0x53, 0x0f, 0x8e, 0x4b, 0x5d, 0xb1, 0x94, - 0x81, 0x31, 0xf5, 0x1f, 0x07, 0xe7, 0x70, 0x54, 0xc7, 0x7f, 0x4c, 0x30, 0x5e, 0x91, 0x36, 0xec, - 0xaa, 0x64, 0xf4, 0x19, 0x03, 0x9d, 0xe3, 0x8b, 0x2d, 0xbd, 0x80, 0x56, 0xfd, 0xd2, 0x7b, 0xae, - 0x34, 0xe9, 0x80, 0xc3, 0xcb, 0x8a, 0x32, 0x26, 0xed, 0xc1, 0x7a, 0x89, 0xbe, 0xde, 0x64, 0xb0, - 0x8f, 0x7a, 0x80, 0x59, 0x7f, 0x8f, 0xc1, 0xca, 0x46, 0x9d, 0x77, 0x68, 0x79, 0x57, 0xe9, 0x76, - 0x90, 0x57, 0x69, 0x07, 0xac, 0x77, 0xc8, 0xe6, 0x7a, 0x4a, 0x5a, 0x60, 0x29, 0xcd, 0x74, 0xa2, - 0x72, 0x7b, 0xf9, 0xae, 0xfb, 0xb3, 0x01, 0x4e, 0x21, 0x71, 0xf9, 0xe1, 0x9a, 0xbc, 0x00, 0xab, - 0x17, 0x23, 0xd3, 0x48, 0xaa, 0x69, 0xb9, 0xd5, 0x92, 0x3e, 0xfa, 0xf1, 0xe7, 0xef, 0xaf, 0xe6, - 0x3e, 0xb5, 0xfd, 0x22, 0xfb, 0x8b, 0xc6, 0x19, 0xe9, 0xc3, 0x4e, 0x1f, 0x35, 0x39, 0xf1, 0xaa, - 0x27, 0x58, 0x0f, 0x74, 0x9d, 0xa6, 0x65, 0x68, 0x0e, 0xc8, 0x7e, 0x49, 0xe3, 0x7f, 0xe3, 0xe1, - 0xf7, 0xee, 0xef, 0x26, 0x1c, 0xd6, 0x3b, 0x4e, 0x8d, 0x8d, 0xc0, 0x4a, 0x0b, 0x33, 0x24, 0x47, - 0x5e, 0x1d, 0x31, 0x8c, 0x30, 0x70, 0x9f, 0x6e, 0x92, 0xdf, 0x90, 0x6b, 0xa1, 0x4e, 0x1d, 0xbf, - 0x1a, 0x76, 0xda, 0xc6, 0x10, 0xac, 0x1e, 0x13, 0x01, 0xce, 0xc9, 0xb6, 0x54, 0xae, 0xe5, 0x5d, - 0x2d, 0x22, 0xbd, 0xa2, 0x6d, 0x43, 0x49, 0xce, 0x0e, 0xd6, 0x28, 0x4d, 0x4b, 0x64, 0x9c, 0xcd, - 0x66, 0x6b, 0xc6, 0xe3, 0x0d, 0xc7, 0x3d, 0x29, 0x34, 0xe3, 0x02, 0xe3, 0x42, 0x87, 0xd4, 0x74, - 0xba, 0x6f, 0x60, 0xef, 0x32, 0x5c, 0x70, 0x91, 0xa7, 0x38, 0x34, 0xf9, 0x92, 0xdc, 0x9f, 0xfb, - 0x60, 0x4d, 0x3e, 0x7b, 0x12, 0xf4, 0xbe, 0xa1, 0xb2, 0xc9, 0xae, 0x9f, 0xbf, 0x85, 0x10, 0x9c, - 0xb7, 0x89, 0x08, 0xcc, 0xc4, 0x23, 0x4e, 0x9e, 0x03, 0xa4, 0x63, 0xe5, 0x6c, 0xce, 0xbf, 0x62, - 0x49, 0x54, 0x34, 0xfc, 0xd0, 0xdc, 0xbe, 0x47, 0x1c, 0x5f, 0x55, 0x20, 0x5a, 0x86, 0x74, 0x1b, - 0xbe, 0x67, 0xe0, 0x4d, 0x72, 0x67, 0x64, 0x99, 0x6f, 0xfe, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x01, 0x43, 0xe2, 0x27, 0xbd, 0x04, 0x00, 0x00, + // 575 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcd, 0x6e, 0xd3, 0x40, + 0x10, 0x26, 0x29, 0x72, 0xeb, 0xb1, 0x5a, 0xda, 0x85, 0xa6, 0x91, 0x95, 0xa2, 0xb0, 0x42, 0xa2, + 0xaa, 0x84, 0x2d, 0x52, 0x84, 0x44, 0x0f, 0x88, 0x2a, 0x94, 0x50, 0xa9, 0x07, 0x48, 0x0e, 0x9c, + 0x1d, 0x7b, 0x92, 0x2c, 0x49, 0x76, 0x8d, 0x77, 0x9d, 0x2a, 0x20, 0x2e, 0xbc, 0x02, 0x2f, 0xc3, + 0x7b, 0xf0, 0x0a, 0x9c, 0x78, 0x0a, 0xe4, 0xf5, 0x5f, 0x54, 0x47, 0x55, 0x2e, 0x89, 0xf7, 0xf3, + 0xec, 0xf7, 0x7d, 0xf3, 0xcd, 0xc8, 0x70, 0x1c, 0x4e, 0xc7, 0xae, 0x17, 0x32, 0x89, 0xd1, 0x02, + 0xa3, 0xf2, 0xc9, 0x09, 0x23, 0xa1, 0x04, 0x31, 0x0b, 0xc0, 0x7e, 0x3d, 0x66, 0x6a, 0x12, 0x0f, + 0x1d, 0x5f, 0xcc, 0xdd, 0x11, 0x93, 0x92, 0x09, 0x9e, 0xff, 0x3f, 0xbf, 0x11, 0xd1, 0x74, 0x34, + 0x13, 0x37, 0x6e, 0xc2, 0xa6, 0x96, 0x21, 0xca, 0xf4, 0x37, 0x65, 0xb1, 0xbb, 0x9b, 0x5e, 0xc5, + 0x05, 0x72, 0x25, 0x95, 0x88, 0x70, 0xe5, 0x31, 0x23, 0x69, 0x8d, 0x85, 0x18, 0xcf, 0x30, 0xb1, + 0xe8, 0x7a, 0x9c, 0x0b, 0xe5, 0x29, 0x26, 0x78, 0x26, 0x41, 0x9f, 0x02, 0xf9, 0x9c, 0x31, 0x5d, + 0x05, 0xc8, 0x15, 0x1b, 0x31, 0x8c, 0xc8, 0x1e, 0xd4, 0x59, 0xd0, 0xac, 0xb5, 0x6b, 0x27, 0x66, + 0xbf, 0xce, 0x02, 0x7a, 0x04, 0x87, 0x03, 0xf4, 0x22, 0x7f, 0x92, 0xd7, 0xf6, 0xf1, 0x6b, 0x8c, + 0x52, 0xd1, 0x57, 0xd0, 0xb8, 0xfd, 0x42, 0x86, 0x82, 0x4b, 0x24, 0x2d, 0x30, 0x73, 0x8b, 0xb2, + 0x59, 0x6b, 0x6f, 0x9d, 0x98, 0xfd, 0x12, 0xa0, 0x0e, 0xb4, 0x0a, 0x59, 0xbe, 0x10, 0xbe, 0xf6, + 0x74, 0x87, 0x81, 0x33, 0x38, 0xaa, 0xd6, 0x7f, 0x8a, 0x31, 0x5a, 0x92, 0x26, 0x6c, 0xcb, 0x78, + 0xf8, 0x05, 0x7d, 0x95, 0xd5, 0xe7, 0x47, 0x7a, 0x0e, 0x8d, 0xea, 0xa5, 0x6b, 0x26, 0x15, 0x69, + 0x83, 0xc5, 0x0a, 0x24, 0xb7, 0xb7, 0x0a, 0xd1, 0x37, 0xeb, 0x0c, 0xf6, 0x50, 0xf5, 0x31, 0x6d, + 0xef, 0x31, 0x18, 0x69, 0xd2, 0xfa, 0xb2, 0xd5, 0x31, 0x9c, 0xcb, 0xe4, 0xd8, 0xcf, 0x50, 0xda, + 0x06, 0xe3, 0x03, 0x7a, 0x33, 0x35, 0x21, 0x0d, 0x30, 0xa4, 0xf2, 0x54, 0x2c, 0x33, 0x7b, 0xd9, + 0xa9, 0xf3, 0xaf, 0x06, 0x56, 0x2e, 0x71, 0xf1, 0xf1, 0x8a, 0x5c, 0x83, 0xd1, 0x8d, 0xd0, 0x53, + 0x48, 0x76, 0x9d, 0x1c, 0x1f, 0x84, 0xe8, 0xdb, 0xc7, 0x4e, 0xb9, 0x5d, 0xd5, 0x59, 0xd1, 0x47, + 0x3f, 0xff, 0xfc, 0xfd, 0x55, 0xdf, 0xa3, 0xa6, 0x9b, 0xc7, 0x7b, 0x5e, 0x3b, 0x25, 0xef, 0xe0, + 0xbe, 0xee, 0xd4, 0x70, 0x2e, 0xe7, 0xa1, 0x5a, 0xda, 0x4f, 0x56, 0x48, 0xd6, 0x4f, 0x8c, 0x1e, + 0x68, 0x22, 0x8b, 0x94, 0x44, 0xa4, 0x07, 0x5b, 0x3d, 0x54, 0xe4, 0x6e, 0x07, 0xb6, 0x59, 0x80, + 0xb4, 0xa1, 0x39, 0xf6, 0xc9, 0x5e, 0xc1, 0xe1, 0x7e, 0x67, 0xc1, 0x8f, 0xce, 0xef, 0x3a, 0x1c, + 0x56, 0xf3, 0x4c, 0xda, 0x1e, 0x82, 0x91, 0x00, 0x53, 0x24, 0x47, 0x4e, 0xb5, 0x42, 0x07, 0xf0, + 0x6c, 0x9d, 0xfc, 0x9a, 0xad, 0xc9, 0xd5, 0xa9, 0xe5, 0x96, 0xa3, 0x4c, 0xc2, 0x18, 0x80, 0xd1, + 0xf5, 0xb8, 0x8f, 0x33, 0xb2, 0x29, 0x95, 0x9d, 0xe5, 0x46, 0x9b, 0x9a, 0x92, 0x9c, 0xee, 0xaf, + 0x50, 0xea, 0x96, 0xc8, 0x28, 0xcd, 0x66, 0x63, 0xc6, 0xd6, 0x9a, 0xd7, 0x5d, 0xc1, 0x95, 0xc7, + 0x38, 0x46, 0xb9, 0x0e, 0xa9, 0xe8, 0x74, 0xde, 0xc2, 0xce, 0x45, 0x30, 0x67, 0x3a, 0xac, 0x97, + 0x60, 0x0c, 0xf4, 0xf6, 0x14, 0x73, 0x3d, 0x58, 0x91, 0x4f, 0x17, 0x8e, 0x3e, 0xd0, 0x54, 0x26, + 0xd9, 0x76, 0xb3, 0x4d, 0x0b, 0xc0, 0x7a, 0x1f, 0x73, 0x5f, 0x27, 0x1e, 0x32, 0xf2, 0x02, 0x20, + 0x89, 0x95, 0x79, 0x33, 0xf6, 0x0d, 0x0b, 0xa2, 0xbc, 0xe1, 0x87, 0xfa, 0xf6, 0x2e, 0xb1, 0x5c, + 0x59, 0x16, 0xd1, 0x62, 0x48, 0xb7, 0xcb, 0x77, 0x74, 0x79, 0x9d, 0xdc, 0x1b, 0x1a, 0xfa, 0x83, + 0x72, 0xf6, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xab, 0x6e, 0x15, 0x74, 0x1a, 0x05, 0x00, 0x00, } diff --git a/pkg/apiserver/apiserver.pb.gw.go b/pkg/apiserver/apiserver.pb.gw.go index dc7cc8af..08b888e6 100644 --- a/pkg/apiserver/apiserver.pb.gw.go +++ b/pkg/apiserver/apiserver.pb.gw.go @@ -30,7 +30,7 @@ var _ = runtime.String var _ = utilities.NewDoubleArray func request_WorkflowAPI_Create_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Workflow + var protoReq types.WorkflowSpec var metadata runtime.ServerMetadata if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil { @@ -42,6 +42,15 @@ func request_WorkflowAPI_Create_0(ctx context.Context, marshaler runtime.Marshal } +func request_WorkflowAPI_List_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq types.Empty + var metadata runtime.ServerMetadata + + msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + func request_WorkflowAPI_Get_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq WorkflowIdentifier var metadata runtime.ServerMetadata @@ -213,6 +222,35 @@ func RegisterWorkflowAPIHandler(ctx context.Context, mux *runtime.ServeMux, conn }) + mux.Handle("GET", pattern_WorkflowAPI_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_WorkflowAPI_List_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_WorkflowAPI_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_WorkflowAPI_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -248,12 +286,16 @@ func RegisterWorkflowAPIHandler(ctx context.Context, mux *runtime.ServeMux, conn var ( pattern_WorkflowAPI_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"workflow"}, "")) + pattern_WorkflowAPI_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"workflow"}, "")) + pattern_WorkflowAPI_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"workflow", "id"}, "")) ) var ( forward_WorkflowAPI_Create_0 = runtime.ForwardResponseMessage + forward_WorkflowAPI_List_0 = runtime.ForwardResponseMessage + forward_WorkflowAPI_Get_0 = runtime.ForwardResponseMessage ) diff --git a/pkg/apiserver/apiserver.proto b/pkg/apiserver/apiserver.proto index 35a1cf56..075238a8 100644 --- a/pkg/apiserver/apiserver.proto +++ b/pkg/apiserver/apiserver.proto @@ -7,24 +7,24 @@ import "google/api/annotations.proto"; package apiserver; service WorkflowAPI { - rpc Create (Workflow) returns (Workflow) { + rpc Create (WorkflowSpec) returns (WorkflowIdentifier) { option (google.api.http) = { post: "/workflow" body: "*" }; } + rpc List (Empty) returns (SearchWorkflowResponse) { + option (google.api.http) = { + get: "/workflow" + }; + } + rpc Get (WorkflowIdentifier) returns (Workflow) { option (google.api.http) = { get: "/workflow/{id}" }; } - -// rpc Search (SearchWorkflowRequest) returns (SearchWorkflowResponse) { -// option (google.api.http) = { -// get: "/workflow" -// }; -// } } message WorkflowIdentifier { @@ -35,7 +35,7 @@ message SearchWorkflowRequest { } message SearchWorkflowResponse { - repeated Workflow data = 1; + repeated string workflows = 1; } // The WorkflowInvocationAPI specifies the the externally exposed actions available for workflow invocations. diff --git a/pkg/apiserver/apiserver.swagger.json b/pkg/apiserver/apiserver.swagger.json index e2cb2276..c7ff728f 100644 --- a/pkg/apiserver/apiserver.swagger.json +++ b/pkg/apiserver/apiserver.swagger.json @@ -126,13 +126,27 @@ } }, "/workflow": { + "get": { + "operationId": "List", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/apiserverSearchWorkflowResponse" + } + } + }, + "tags": [ + "WorkflowAPI" + ] + }, "post": { "operationId": "Create", "responses": { "200": { "description": "", "schema": { - "$ref": "#/definitions/Workflow" + "$ref": "#/definitions/apiserverWorkflowIdentifier" } } }, @@ -142,7 +156,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/Workflow" + "$ref": "#/definitions/WorkflowSpec" } } ], @@ -181,25 +195,36 @@ "type": "object", "title": "Util" }, - "Workflow": { + "ObjectMetadata": { "type": "object", "properties": { "id": { "type": "string" }, - "name": { - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time", + "title": "string namespace = 2;\n string name = 3;" + } + }, + "title": "TODO decide on these \u003e" + }, + "Workflow": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/ObjectMetadata" }, - "version": { - "type": "string" + "spec": { + "$ref": "#/definitions/WorkflowSpec" } } }, "WorkflowInvocationContainer": { "type": "object", "properties": { - "id": { - "type": "string" + "metadata": { + "$ref": "#/definitions/ObjectMetadata" }, "spec": { "$ref": "#/definitions/WorkflowInvocationSpec" @@ -226,10 +251,6 @@ "updatedAt": { "type": "string", "format": "date-time" - }, - "createdAt": { - "type": "string", - "format": "date-time" } } }, @@ -245,6 +266,17 @@ ], "default": "UNKNOWN" }, + "WorkflowSpec": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, "apiserverHealth": { "type": "object", "properties": { @@ -253,6 +285,25 @@ } } }, + "apiserverSearchWorkflowResponse": { + "type": "object", + "properties": { + "workflows": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "apiserverWorkflowIdentifier": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, "apiserverWorkflowInvocationIdentifier": { "type": "object", "properties": { diff --git a/pkg/apiserver/workflow.go b/pkg/apiserver/workflow.go index 8895c0fe..4af3827b 100644 --- a/pkg/apiserver/workflow.go +++ b/pkg/apiserver/workflow.go @@ -1,77 +1,49 @@ package apiserver import ( - "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/fission/fission-workflow/pkg/api" "github.com/fission/fission-workflow/pkg/types" + "github.com/sirupsen/logrus" "golang.org/x/net/context" ) // TODO move logic to gRPC-less code type GrpcWorkflowApiServer struct { - esClient eventstore.Client - //projector *projector.WorkflowProjector + api *api.WorkflowApi } -func NewGrpcWorkflowApiServer(esClient eventstore.Client) *GrpcWorkflowApiServer { +func NewGrpcWorkflowApiServer(api *api.WorkflowApi) *GrpcWorkflowApiServer { // TODO es: check if available - return &GrpcWorkflowApiServer{ - esClient: esClient, - //projector: projector.NewWorkflowProjector(esClient), + wf := &GrpcWorkflowApiServer{ + api: api, } + + err := wf.api.Projector.Watch("workflows.>") + if err != nil { + logrus.Warnf("Failed to watch for workflows, because '%v'.", err) + } + + return wf } // TODO validate workflow -func (ga *GrpcWorkflowApiServer) Create(ctx context.Context, workflow *types.Workflow) (*types.Workflow, error) { - //workflow.Id = uuid.NewV4().String() - // - //b, err := ptypes.MarshalAny(workflow) - //if err != nil { - // return nil, err - //} - // - //event := events.New(eventids.New([]string{"WORKFLOWS"}, workflow.GetId()), - // types.WorkflowEvents_WORKFLOW_CREATED.String(), b) - // - ////updatedEvent, err := ga.esClient.Append(event) - //if err != nil { - // return nil, err - //} - // - ////updatedWorkflow, err := projector.GetWorkflowFromEvent(updatedEvent) - //if err != nil { - // return nil, err - //} +func (ga *GrpcWorkflowApiServer) Create(ctx context.Context, wf *types.WorkflowSpec) (*WorkflowIdentifier, error) { + id, err := ga.api.Create(wf) + if err != nil { + return nil, err + } - return nil, nil + return &WorkflowIdentifier{id}, nil } func (ga *GrpcWorkflowApiServer) Get(ctx context.Context, workflowId *WorkflowIdentifier) (*types.Workflow, error) { - // wf, err := ga.projector.GetWorkflow(workflowId.GetId()) - // if err != nil { - // return nil, err - // } - // if wf == nil { - // return nil, status.Errorf(codes.NotFound, "Workflow with id '%s' not found.", workflowId.GetId()) - // } - // return wf, nil - panic("not implemented") + return ga.api.Get(workflowId.GetId()) } -func (ga *GrpcWorkflowApiServer) Search(ctx context.Context, query *SearchWorkflowRequest) (*SearchWorkflowResponse, error) { - //wfEvents, err := ga.esClient.Events(eventids.NewSubject("WORKFLOWS")) - //if err != nil { - // return nil, err - //} - //var results []*types.Workflow - //for _, wfEvent := range wfEvents { - // //wf, err := projector.GetWorkflowFromEvent(wfEvent) - // if err != nil { - // return nil, err - // } - // results = append(results, wf) - //} - //return &SearchWorkflowResponse{ - // Data: results, - //}, nil - return nil, nil +func (ga *GrpcWorkflowApiServer) List(ctx context.Context, req *types.Empty) (*SearchWorkflowResponse, error) { + wfs, err := ga.api.List("*") + if err != nil { + return nil, err + } + return &SearchWorkflowResponse{wfs}, nil } diff --git a/pkg/cache/BUILD.bazel b/pkg/cache/BUILD.bazel index 9cc612be..c89f88a2 100644 --- a/pkg/cache/BUILD.bazel +++ b/pkg/cache/BUILD.bazel @@ -4,4 +4,5 @@ go_library( name = "go_default_library", srcs = ["cache.go"], visibility = ["//visibility:public"], + deps = ["//vendor/github.com/sirupsen/logrus:go_default_library"], ) diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index e5909af1..503edbf0 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -1,5 +1,7 @@ package cache +import "github.com/sirupsen/logrus" + type Cache interface { Put(key string, data interface{}) error Get(Key string) (interface{}, bool) @@ -37,16 +39,31 @@ func NewMapCache() *MapCache { func (mc *MapCache) Put(key string, data interface{}) error { mc.store[key] = data + logrus.WithFields(logrus.Fields{ + "key": key, + "val": data, + "cacheSize": len(mc.store), + }).Debug("PUT kv-pair in cache.") return nil } func (mc *MapCache) Get(key string) (interface{}, bool) { val, exists := mc.store[key] + logrus.WithFields(logrus.Fields{ + "key": key, + "val": val, + "present": exists, + "cacheSize": len(mc.store), + }).Debug("GET kv-pair from cache.") return val, exists } func (mc *MapCache) Delete(key string) error { delete(mc.store, key) + logrus.WithFields(logrus.Fields{ + "key": key, + "cacheSize": len(mc.store), + }).Debug("DELETE kv-pair in cache.") return nil } diff --git a/pkg/controller/server.go b/pkg/controller/server.go index 4a189d85..cb789480 100644 --- a/pkg/controller/server.go +++ b/pkg/controller/server.go @@ -99,9 +99,8 @@ func (cr *InvocationController) handleNotification(notification *project.Invocat } func (cr *InvocationController) handleControlLoopTick() { - logrus.Debug("Running controller control loop tick") + logrus.Debug("Controller tick...") // Options: refresh projection, send ping, cancel invocation - logrus.Debug("cache: %v", cr.invocationProjector.Cache().List()) } func (cr *InvocationController) Close() { diff --git a/pkg/projector/project/BUILD.bazel b/pkg/projector/project/BUILD.bazel index c9128aa4..fabb5ff6 100644 --- a/pkg/projector/project/BUILD.bazel +++ b/pkg/projector/project/BUILD.bazel @@ -2,15 +2,10 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", - srcs = ["projector.go"], + srcs = ["types.go"], visibility = ["//visibility:public"], deps = [ "//pkg/cache:go_default_library", - "//pkg/eventstore:go_default_library", - "//pkg/projector/project/invocation:go_default_library", "//pkg/types:go_default_library", - "//pkg/types/invocationevent:go_default_library", - "//vendor/github.com/golang/protobuf/ptypes:go_default_library", - "//vendor/github.com/sirupsen/logrus:go_default_library", ], ) diff --git a/pkg/projector/project/invocation/BUILD.bazel b/pkg/projector/project/invocation/BUILD.bazel index d285e415..41bf3394 100644 --- a/pkg/projector/project/invocation/BUILD.bazel +++ b/pkg/projector/project/invocation/BUILD.bazel @@ -2,12 +2,18 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", - srcs = ["invocation.go"], + srcs = [ + "invocation.go", + "projector.go", + ], visibility = ["//visibility:public"], deps = [ + "//pkg/cache:go_default_library", "//pkg/eventstore:go_default_library", + "//pkg/projector/project:go_default_library", "//pkg/types:go_default_library", "//pkg/types/invocationevent:go_default_library", "//vendor/github.com/golang/protobuf/ptypes:go_default_library", + "//vendor/github.com/sirupsen/logrus:go_default_library", ], ) diff --git a/pkg/projector/project/invocation/invocation.go b/pkg/projector/project/invocation/invocation.go index eae2cfb6..f7da1dea 100644 --- a/pkg/projector/project/invocation/invocation.go +++ b/pkg/projector/project/invocation/invocation.go @@ -2,6 +2,7 @@ package invocation import ( "errors" + "github.com/fission/fission-workflow/pkg/eventstore" "github.com/fission/fission-workflow/pkg/types" "github.com/fission/fission-workflow/pkg/types/invocationevent" @@ -54,16 +55,17 @@ func created(currentState types.WorkflowInvocationContainer, event *eventstore.E spec := &types.WorkflowInvocationSpec{} err = ptypes.UnmarshalAny(event.Data, spec) - currentState.Id = event.GetEventId().GetSubjects()[1] // TODO remove this hardcoding - currentState.Spec = spec - currentState.Status = &types.WorkflowInvocationStatus{ - Status: types.WorkflowInvocationStatus_UNKNOWN, - CreatedAt: event.GetTime(), - UpdatedAt: event.GetTime(), - } - - // TODO only allow spec to be added - return ¤tState, nil + return &types.WorkflowInvocationContainer{ + Metadata: &types.ObjectMetadata{ + Id: event.GetEventId().GetSubjects()[1], // TODO remove this hardcoding, + CreatedAt: event.GetTime(), + }, + Spec: spec, + Status: &types.WorkflowInvocationStatus{ + Status: types.WorkflowInvocationStatus_UNKNOWN, + UpdatedAt: ptypes.TimestampNow(), + }, + }, nil } func canceled(currentState types.WorkflowInvocationContainer, event *eventstore.Event) (newState *types.WorkflowInvocationContainer, err error) { diff --git a/pkg/projector/project/projector.go b/pkg/projector/project/invocation/projector.go similarity index 77% rename from pkg/projector/project/projector.go rename to pkg/projector/project/invocation/projector.go index f2ad4fa2..a5fc43f8 100644 --- a/pkg/projector/project/projector.go +++ b/pkg/projector/project/invocation/projector.go @@ -1,52 +1,26 @@ -package project +package invocation import ( "time" - "io" - "github.com/fission/fission-workflow/pkg/cache" "github.com/fission/fission-workflow/pkg/eventstore" - "github.com/fission/fission-workflow/pkg/projector/project/invocation" + "github.com/fission/fission-workflow/pkg/projector/project" "github.com/fission/fission-workflow/pkg/types" "github.com/fission/fission-workflow/pkg/types/invocationevent" "github.com/golang/protobuf/ptypes" "github.com/sirupsen/logrus" ) -// Per object type view only!!! -type InvocationProjector interface { - io.Closer - // Get projection from cache or attempt to replay it. - Get(subject string) (*types.WorkflowInvocationContainer, error) - - Cache() cache.Cache - - // Replays events, if it already exists, it is invalidated and replayed - // Populates cache - Watch(query string) error - - // Suscribe to updates in this projector - Subscribe(updateCh chan *InvocationNotification) error -} - -// In order to avoid leaking eventstore details -type InvocationNotification struct { - Id string - Data *types.WorkflowInvocationContainer - Type types.InvocationEvent - Time time.Time -} - type invocationProjector struct { esClient eventstore.Client cache cache.Cache // TODO ensure concurrent sub eventstore.Subscription updateChan chan *eventstore.Event - subscribers []chan *InvocationNotification + subscribers []chan *project.InvocationNotification } -func NewInvocationProjector(esClient eventstore.Client, cache cache.Cache) InvocationProjector { +func NewInvocationProjector(esClient eventstore.Client, cache cache.Cache) project.InvocationProjector { p := &invocationProjector{ esClient: esClient, cache: cache, @@ -77,7 +51,7 @@ func (ip *invocationProjector) Get(subject string) (*types.WorkflowInvocationCon return cached, nil } - events, err := ip.esClient.Get("invocation." + subject) + events, err := ip.esClient.Get("invocation." + subject) // TODO Fix hardcode subject if err != nil { return nil, err } @@ -108,7 +82,7 @@ func (ip *invocationProjector) Watch(subject string) error { } // TODO Maybe add identifier per consumer -func (ip *invocationProjector) Subscribe(updateCh chan *InvocationNotification) error { +func (ip *invocationProjector) Subscribe(updateCh chan *project.InvocationNotification) error { ip.subscribers = append(ip.subscribers, updateCh) return nil } @@ -156,8 +130,8 @@ func (ip *invocationProjector) Run() { } // TODO should judge whether to send notification (old messages not) - ip.notifySubscribers(&InvocationNotification{ - Id: updatedState.GetId(), + ip.notifySubscribers(&project.InvocationNotification{ + Id: updatedState.GetMetadata().GetId(), Data: updatedState, Type: invocationEventType, Time: timestamp, @@ -166,14 +140,15 @@ func (ip *invocationProjector) Run() { } func (ip *invocationProjector) applyUpdate(event *eventstore.Event) (*types.WorkflowInvocationContainer, error) { + logrus.WithField("event", event).Debug("InvocationProjector handling event.") invocationId := event.EventId.Subjects[1] // TODO fix hardcoded lookup currentState := ip.getCache(invocationId) if currentState == nil { - currentState = invocation.Initial() + currentState = Initial() } - newState, err := invocation.Apply(*currentState, event) + newState, err := Apply(*currentState, event) if err != nil { // TODO improve error handling (e.g. retry / replay) return nil, err @@ -186,7 +161,7 @@ func (ip *invocationProjector) applyUpdate(event *eventstore.Event) (*types.Work return newState, nil } -func (ip *invocationProjector) notifySubscribers(notification *InvocationNotification) { +func (ip *invocationProjector) notifySubscribers(notification *project.InvocationNotification) { for _, c := range ip.subscribers { select { case c <- notification: diff --git a/pkg/projector/project/types.go b/pkg/projector/project/types.go new file mode 100644 index 00000000..a32f37e5 --- /dev/null +++ b/pkg/projector/project/types.go @@ -0,0 +1,48 @@ +package project + +import ( + "io" + "time" + + "github.com/fission/fission-workflow/pkg/cache" + "github.com/fission/fission-workflow/pkg/types" +) + +type WorkflowProjector interface { + io.Closer + // Get projection from cache or attempt to replay it. + Get(subject string) (*types.Workflow, error) + + Cache() cache.Cache + + // Replays events, if it already exists, it is invalidated and replayed + // Populates cache + Watch(query string) error + + // Lists all subjects that fit the query + List(query string) ([]string, error) +} + +type InvocationProjector interface { + io.Closer + // Get projection from cache or attempt to replay it. + Get(subject string) (*types.WorkflowInvocationContainer, error) + + Cache() cache.Cache + + // Replays events, if it already exists, it is invalidated and replayed + // Populates cache + Watch(query string) error + + // Suscribe to updates on subjects watched by this projector + Subscribe(updateCh chan *InvocationNotification) error +} + +// TODO generify +// In order to avoid leaking eventstore details +type InvocationNotification struct { + Id string + Data *types.WorkflowInvocationContainer + Type types.InvocationEvent + Time time.Time +} diff --git a/pkg/projector/project/workflow/BUILD.bazel b/pkg/projector/project/workflow/BUILD.bazel new file mode 100644 index 00000000..6faa0316 --- /dev/null +++ b/pkg/projector/project/workflow/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "projector.go", + "workflow.go", + ], + visibility = ["//visibility:public"], + deps = [ + "//pkg/cache:go_default_library", + "//pkg/eventstore:go_default_library", + "//pkg/projector/project:go_default_library", + "//pkg/types:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes:go_default_library", + "//vendor/github.com/sirupsen/logrus:go_default_library", + ], +) diff --git a/pkg/projector/project/workflow/projector.go b/pkg/projector/project/workflow/projector.go new file mode 100644 index 00000000..5b931fca --- /dev/null +++ b/pkg/projector/project/workflow/projector.go @@ -0,0 +1,129 @@ +package workflow + +import ( + "github.com/fission/fission-workflow/pkg/cache" + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/fission/fission-workflow/pkg/projector/project" + "github.com/fission/fission-workflow/pkg/types" + "github.com/sirupsen/logrus" + "strings" +) + +type workflowProjector struct { + esClient eventstore.Client + cache cache.Cache // TODO ensure concurrent + updateChan chan *eventstore.Event +} + +func NewWorkflowProjector(esClient eventstore.Client, cache cache.Cache) project.WorkflowProjector { + p := &workflowProjector{ + esClient: esClient, + cache: cache, + updateChan: make(chan *eventstore.Event), + } + go p.Run() + return p +} + +func (wp *workflowProjector) Get(subject string) (*types.Workflow, error) { + cached := wp.getCache(subject) + if cached != nil { + return cached, nil + } + + events, err := wp.esClient.Get("workflows." + subject) // TODO Fix hardcode subject + if err != nil { + return nil, err + } + + var resultState *types.Workflow + for _, event := range events { + updatedState, err := wp.applyUpdate(event) + if err != nil { + logrus.Error(err) + } + resultState = updatedState + } + + return resultState, nil +} + +func (wp *workflowProjector) Watch(subject string) error { + _, err := wp.esClient.Subscribe(&eventstore.SubscriptionConfig{ + Subject: subject, + EventCh: wp.updateChan, // TODO provide clean channel that multiplexes into actual one + }) + return err +} + +func (wp *workflowProjector) Cache() cache.Cache { + return wp.cache +} + +func (wp *workflowProjector) Close() error { + return nil +} + +func (wp *workflowProjector) List(query string) ([]string, error) { + + subjects, err := wp.esClient.Subjects("workflows." + query) // TODO fix this hardcode + if err != nil { + return nil, err + } + // Strip the subject + results := make([]string, len(subjects)) + for key, subject := range subjects { + p := strings.SplitN(subject, ".", 2) + results[key] = p[1] // TODO fix this hardcode + } + return results, nil +} + +func (wp *workflowProjector) Run() { + defer logrus.Debug("WorkflowProjector update loop has shutdown.") + for event := range wp.updateChan { + updatedState, err := wp.applyUpdate(event) + if err != nil { + logrus.WithFields(logrus.Fields{ + "err": err, + "updatedState": updatedState, + "event": event, + }).Error("Failed to apply event to state") + } + } +} + +func (wp *workflowProjector) getCache(subject string) *types.Workflow { + raw, ok := wp.cache.Get(subject) + if !ok { + return nil + } + wf, ok := raw.(*types.Workflow) + if !ok { + logrus.Warnf("Cache contains invalid wf '%v'. Invalidating key.", raw) + _ = wp.cache.Delete(subject) + } + return wf +} + +func (wp *workflowProjector) applyUpdate(event *eventstore.Event) (*types.Workflow, error) { + logrus.WithField("event", event).Debug("WorkflowProjector handling event.") + invocationId := event.EventId.Subjects[1] // TODO fix hardcoded lookup + + currentState := wp.getCache(invocationId) + if currentState == nil { + currentState = Initial() + } + + newState, err := Apply(*currentState, event) + if err != nil { + // TODO improve error handling (e.g. retry / replay) + return nil, err + } + + err = wp.cache.Put(invocationId, newState) + if err != nil { + return nil, err + } + return newState, nil +} diff --git a/pkg/projector/project/workflow/workflow.go b/pkg/projector/project/workflow/workflow.go new file mode 100644 index 00000000..929af133 --- /dev/null +++ b/pkg/projector/project/workflow/workflow.go @@ -0,0 +1,70 @@ +package workflow + +import ( + "errors" + + "github.com/fission/fission-workflow/pkg/eventstore" + "github.com/fission/fission-workflow/pkg/types" + "github.com/golang/protobuf/ptypes" + "github.com/sirupsen/logrus" +) + +type reduceFunc func(currentState types.Workflow, event *eventstore.Event) (newState *types.Workflow, err error) + +var eventMapping = map[types.WorkflowEvent]reduceFunc{ + types.WorkflowEvent_WORKFLOW_CREATED: created, + types.WorkflowEvent_WORKFLOW_DELETED: skip, + types.WorkflowEvent_WORKFLOW_UPDATED: skip, +} + +func Initial() *types.Workflow { + return &types.Workflow{} +} + +func From(events ...*eventstore.Event) (currentState *types.Workflow, err error) { + return Apply(*Initial(), events...) +} + +func Apply(currentState types.Workflow, events ...*eventstore.Event) (newState *types.Workflow, err error) { + // Check if it is indeed next event (maybe wrap in a projectionContainer) + newState = ¤tState + for _, event := range events { + + eventType, err := types.ParseWorkflowEvent(event.GetType()) + if err != nil { + return nil, err + } + + newState, err = eventMapping[eventType](currentState, event) + if err != nil { + return nil, err + } + } + + return newState, nil +} + +func created(currentState types.Workflow, event *eventstore.Event) (newState *types.Workflow, err error) { + if currentState != (types.Workflow{}) { + return nil, errors.New("invalid event") // TODO fix errors + } + + spec := &types.WorkflowSpec{} + err = ptypes.UnmarshalAny(event.Data, spec) + + return &types.Workflow{ + Metadata: &types.ObjectMetadata{ + Id: event.GetEventId().GetSubjects()[1], // TODO remove this hardcoding + CreatedAt: event.GetTime(), + }, + Spec: spec, + }, nil +} + +func skip(currentState types.Workflow, event *eventstore.Event) (newState *types.Workflow, err error) { + logrus.WithFields(logrus.Fields{ + "currentState": currentState, + "event": event, + }).Debug("Skipping unimplemented event.") + return ¤tState, nil +} diff --git a/pkg/types/BUILD.bazel b/pkg/types/BUILD.bazel index 55fed719..9da8f34d 100644 --- a/pkg/types/BUILD.bazel +++ b/pkg/types/BUILD.bazel @@ -2,7 +2,10 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", - srcs = ["types.pb.go"], + srcs = [ + "types.pb.go", + "typeutils.go", + ], visibility = ["//visibility:public"], deps = [ "//vendor/github.com/golang/protobuf/proto:go_default_library", diff --git a/pkg/types/types.pb.go b/pkg/types/types.pb.go index 3cf8d458..40173b31 100644 --- a/pkg/types/types.pb.go +++ b/pkg/types/types.pb.go @@ -9,11 +9,13 @@ It is generated from these files: It has these top-level messages: Workflow + WorkflowSpec WorkflowInvocation Empty WorkflowInvocationSpec WorkflowInvocationStatus WorkflowInvocationContainer + ObjectMetadata */ package types @@ -33,29 +35,29 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package -type WorkflowEvents int32 +type WorkflowEvent int32 const ( - WorkflowEvents_WORKFLOW_CREATED WorkflowEvents = 0 - WorkflowEvents_WORKFLOW_UPDATED WorkflowEvents = 1 - WorkflowEvents_WORKFLOW_DELETED WorkflowEvents = 2 + WorkflowEvent_WORKFLOW_CREATED WorkflowEvent = 0 + WorkflowEvent_WORKFLOW_UPDATED WorkflowEvent = 1 + WorkflowEvent_WORKFLOW_DELETED WorkflowEvent = 2 ) -var WorkflowEvents_name = map[int32]string{ +var WorkflowEvent_name = map[int32]string{ 0: "WORKFLOW_CREATED", 1: "WORKFLOW_UPDATED", 2: "WORKFLOW_DELETED", } -var WorkflowEvents_value = map[string]int32{ +var WorkflowEvent_value = map[string]int32{ "WORKFLOW_CREATED": 0, "WORKFLOW_UPDATED": 1, "WORKFLOW_DELETED": 2, } -func (x WorkflowEvents) String() string { - return proto.EnumName(WorkflowEvents_name, int32(x)) +func (x WorkflowEvent) String() string { + return proto.EnumName(WorkflowEvent_name, int32(x)) } -func (WorkflowEvents) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } +func (WorkflowEvent) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } type InvocationEvent int32 @@ -130,7 +132,7 @@ var WorkflowInvocation_Status_value = map[string]int32{ func (x WorkflowInvocation_Status) String() string { return proto.EnumName(WorkflowInvocation_Status_name, int32(x)) } -func (WorkflowInvocation_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } +func (WorkflowInvocation_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } type WorkflowInvocationStatus_Status int32 @@ -164,13 +166,12 @@ func (x WorkflowInvocationStatus_Status) String() string { return proto.EnumName(WorkflowInvocationStatus_Status_name, int32(x)) } func (WorkflowInvocationStatus_Status) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{4, 0} + return fileDescriptor0, []int{5, 0} } type Workflow struct { - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"` + Metadata *ObjectMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"` + Spec *WorkflowSpec `protobuf:"bytes,2,opt,name=spec" json:"spec,omitempty"` } func (m *Workflow) Reset() { *m = Workflow{} } @@ -178,21 +179,38 @@ func (m *Workflow) String() string { return proto.CompactTextString(m func (*Workflow) ProtoMessage() {} func (*Workflow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } -func (m *Workflow) GetId() string { +func (m *Workflow) GetMetadata() *ObjectMetadata { if m != nil { - return m.Id + return m.Metadata } - return "" + return nil +} + +func (m *Workflow) GetSpec() *WorkflowSpec { + if m != nil { + return m.Spec + } + return nil } -func (m *Workflow) GetName() string { +type WorkflowSpec struct { + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` +} + +func (m *WorkflowSpec) Reset() { *m = WorkflowSpec{} } +func (m *WorkflowSpec) String() string { return proto.CompactTextString(m) } +func (*WorkflowSpec) ProtoMessage() {} +func (*WorkflowSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *WorkflowSpec) GetName() string { if m != nil { return m.Name } return "" } -func (m *Workflow) GetVersion() string { +func (m *WorkflowSpec) GetVersion() string { if m != nil { return m.Version } @@ -208,7 +226,7 @@ type WorkflowInvocation struct { func (m *WorkflowInvocation) Reset() { *m = WorkflowInvocation{} } func (m *WorkflowInvocation) String() string { return proto.CompactTextString(m) } func (*WorkflowInvocation) ProtoMessage() {} -func (*WorkflowInvocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } +func (*WorkflowInvocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } func (m *WorkflowInvocation) GetId() string { if m != nil { @@ -238,7 +256,7 @@ type Empty struct { func (m *Empty) Reset() { *m = Empty{} } func (m *Empty) String() string { return proto.CompactTextString(m) } func (*Empty) ProtoMessage() {} -func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } +func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } type WorkflowInvocationSpec struct { WorkflowId string `protobuf:"bytes,2,opt,name=workflowId" json:"workflowId,omitempty"` @@ -247,7 +265,7 @@ type WorkflowInvocationSpec struct { func (m *WorkflowInvocationSpec) Reset() { *m = WorkflowInvocationSpec{} } func (m *WorkflowInvocationSpec) String() string { return proto.CompactTextString(m) } func (*WorkflowInvocationSpec) ProtoMessage() {} -func (*WorkflowInvocationSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } +func (*WorkflowInvocationSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } func (m *WorkflowInvocationSpec) GetWorkflowId() string { if m != nil { @@ -259,13 +277,12 @@ func (m *WorkflowInvocationSpec) GetWorkflowId() string { type WorkflowInvocationStatus struct { Status WorkflowInvocationStatus_Status `protobuf:"varint,1,opt,name=status,enum=WorkflowInvocationStatus_Status" json:"status,omitempty"` UpdatedAt *google_protobuf.Timestamp `protobuf:"bytes,2,opt,name=updatedAt" json:"updatedAt,omitempty"` - CreatedAt *google_protobuf.Timestamp `protobuf:"bytes,3,opt,name=createdAt" json:"createdAt,omitempty"` } func (m *WorkflowInvocationStatus) Reset() { *m = WorkflowInvocationStatus{} } func (m *WorkflowInvocationStatus) String() string { return proto.CompactTextString(m) } func (*WorkflowInvocationStatus) ProtoMessage() {} -func (*WorkflowInvocationStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } +func (*WorkflowInvocationStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } func (m *WorkflowInvocationStatus) GetStatus() WorkflowInvocationStatus_Status { if m != nil { @@ -281,29 +298,22 @@ func (m *WorkflowInvocationStatus) GetUpdatedAt() *google_protobuf.Timestamp { return nil } -func (m *WorkflowInvocationStatus) GetCreatedAt() *google_protobuf.Timestamp { - if m != nil { - return m.CreatedAt - } - return nil -} - type WorkflowInvocationContainer struct { - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - Spec *WorkflowInvocationSpec `protobuf:"bytes,2,opt,name=spec" json:"spec,omitempty"` - Status *WorkflowInvocationStatus `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"` + Metadata *ObjectMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"` + Spec *WorkflowInvocationSpec `protobuf:"bytes,2,opt,name=spec" json:"spec,omitempty"` + Status *WorkflowInvocationStatus `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"` } func (m *WorkflowInvocationContainer) Reset() { *m = WorkflowInvocationContainer{} } func (m *WorkflowInvocationContainer) String() string { return proto.CompactTextString(m) } func (*WorkflowInvocationContainer) ProtoMessage() {} -func (*WorkflowInvocationContainer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } +func (*WorkflowInvocationContainer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } -func (m *WorkflowInvocationContainer) GetId() string { +func (m *WorkflowInvocationContainer) GetMetadata() *ObjectMetadata { if m != nil { - return m.Id + return m.Metadata } - return "" + return nil } func (m *WorkflowInvocationContainer) GetSpec() *WorkflowInvocationSpec { @@ -320,14 +330,43 @@ func (m *WorkflowInvocationContainer) GetStatus() *WorkflowInvocationStatus { return nil } +// TODO decide on these > +type ObjectMetadata struct { + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + // string namespace = 2; + // string name = 3; + CreatedAt *google_protobuf.Timestamp `protobuf:"bytes,3,opt,name=createdAt" json:"createdAt,omitempty"` +} + +func (m *ObjectMetadata) Reset() { *m = ObjectMetadata{} } +func (m *ObjectMetadata) String() string { return proto.CompactTextString(m) } +func (*ObjectMetadata) ProtoMessage() {} +func (*ObjectMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } + +func (m *ObjectMetadata) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *ObjectMetadata) GetCreatedAt() *google_protobuf.Timestamp { + if m != nil { + return m.CreatedAt + } + return nil +} + func init() { proto.RegisterType((*Workflow)(nil), "Workflow") + proto.RegisterType((*WorkflowSpec)(nil), "WorkflowSpec") proto.RegisterType((*WorkflowInvocation)(nil), "WorkflowInvocation") proto.RegisterType((*Empty)(nil), "Empty") proto.RegisterType((*WorkflowInvocationSpec)(nil), "WorkflowInvocationSpec") proto.RegisterType((*WorkflowInvocationStatus)(nil), "WorkflowInvocationStatus") proto.RegisterType((*WorkflowInvocationContainer)(nil), "WorkflowInvocationContainer") - proto.RegisterEnum("WorkflowEvents", WorkflowEvents_name, WorkflowEvents_value) + proto.RegisterType((*ObjectMetadata)(nil), "ObjectMetadata") + proto.RegisterEnum("WorkflowEvent", WorkflowEvent_name, WorkflowEvent_value) proto.RegisterEnum("InvocationEvent", InvocationEvent_name, InvocationEvent_value) proto.RegisterEnum("WorkflowInvocation_Status", WorkflowInvocation_Status_name, WorkflowInvocation_Status_value) proto.RegisterEnum("WorkflowInvocationStatus_Status", WorkflowInvocationStatus_Status_name, WorkflowInvocationStatus_Status_value) @@ -336,39 +375,42 @@ func init() { func init() { proto.RegisterFile("pkg/types/types.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 531 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x92, 0x41, 0x6e, 0xda, 0x40, - 0x14, 0x86, 0x63, 0x43, 0x20, 0x3c, 0x5a, 0xb0, 0xa6, 0x69, 0xe2, 0x52, 0xa9, 0x8d, 0xbc, 0xaa, - 0x52, 0xc9, 0xa8, 0x74, 0xc3, 0xd6, 0xb1, 0x27, 0xc5, 0x82, 0xda, 0x68, 0x6c, 0xca, 0xaa, 0x42, - 0x0e, 0x4c, 0x90, 0x95, 0xe0, 0xb1, 0xf0, 0x40, 0x94, 0x43, 0xf4, 0x1c, 0x3d, 0x4c, 0x0f, 0xd0, - 0xeb, 0x54, 0x1e, 0x63, 0x07, 0x4a, 0xa2, 0xac, 0xb2, 0x41, 0xf8, 0x9b, 0xff, 0xfd, 0xf3, 0xfe, - 0xf7, 0x06, 0xde, 0xc6, 0x37, 0xf3, 0x36, 0xbf, 0x8f, 0x69, 0x92, 0xfd, 0xea, 0xf1, 0x92, 0x71, - 0xd6, 0xfa, 0x38, 0x67, 0x6c, 0x7e, 0x4b, 0xdb, 0xe2, 0xeb, 0x6a, 0x75, 0xdd, 0xe6, 0xe1, 0x82, - 0x26, 0x3c, 0x58, 0xc4, 0x99, 0x40, 0xeb, 0xc1, 0xd1, 0x98, 0x2d, 0x6f, 0xae, 0x6f, 0xd9, 0x1d, - 0x6a, 0x80, 0x1c, 0xce, 0x54, 0xe9, 0x4c, 0xfa, 0x54, 0x23, 0x72, 0x38, 0x43, 0x08, 0xca, 0x51, - 0xb0, 0xa0, 0xaa, 0x2c, 0x88, 0xf8, 0x8f, 0x54, 0xa8, 0xae, 0xe9, 0x32, 0x09, 0x59, 0xa4, 0x96, - 0x04, 0xce, 0x3f, 0xb5, 0xbf, 0x12, 0xa0, 0xdc, 0xca, 0x8e, 0xd6, 0x6c, 0x1a, 0xf0, 0x90, 0x45, - 0x7b, 0xa6, 0x1f, 0x00, 0xee, 0x72, 0xd5, 0x6c, 0x63, 0xbd, 0x45, 0x50, 0x07, 0x2a, 0x09, 0x0f, - 0xf8, 0x2a, 0x11, 0xfe, 0x8d, 0x4e, 0x4b, 0xdf, 0x37, 0xd5, 0x3d, 0xa1, 0x20, 0x1b, 0xa5, 0xf6, - 0x13, 0x2a, 0x19, 0x41, 0x75, 0xa8, 0x8e, 0x9c, 0xbe, 0xe3, 0x8e, 0x1d, 0xe5, 0x00, 0xbd, 0x86, - 0x9a, 0x67, 0xf6, 0xb0, 0x35, 0x1a, 0x60, 0x4b, 0x91, 0x50, 0x13, 0xea, 0xb6, 0x33, 0x19, 0x12, - 0xf7, 0x1b, 0xc1, 0x9e, 0xa7, 0xc8, 0xe2, 0x7c, 0x64, 0x9a, 0x18, 0x5b, 0xd8, 0x52, 0x4a, 0x08, - 0xa0, 0x72, 0x69, 0xd8, 0xa9, 0xb6, 0x9c, 0xfa, 0x18, 0x17, 0x2e, 0xf1, 0xb1, 0xa5, 0x1c, 0x6a, - 0x55, 0x38, 0xc4, 0x8b, 0x98, 0xdf, 0x6b, 0x5d, 0x38, 0xd9, 0x6f, 0xc6, 0x8b, 0xe9, 0xf4, 0xb9, - 0x54, 0xda, 0x6f, 0x19, 0xd4, 0x47, 0x4a, 0xb3, 0xa6, 0xbb, 0x45, 0x64, 0x49, 0x44, 0x3e, 0xd3, - 0x9f, 0x92, 0xfe, 0x17, 0x1c, 0x75, 0xa1, 0xb6, 0x8a, 0x67, 0x01, 0xa7, 0x33, 0x83, 0x8b, 0x5b, - 0xeb, 0x9d, 0x96, 0x9e, 0xad, 0x5c, 0xcf, 0x57, 0xae, 0xfb, 0xf9, 0xca, 0xc9, 0x83, 0x38, 0xad, - 0x9c, 0x2e, 0xe9, 0xa6, 0xb2, 0xf4, 0x7c, 0x65, 0x21, 0x7e, 0xe9, 0x61, 0xff, 0x92, 0xe0, 0xfd, - 0x7e, 0x7c, 0x93, 0x45, 0x3c, 0x08, 0x23, 0xba, 0xdc, 0x7b, 0x4f, 0x9f, 0xa1, 0x9c, 0xc4, 0x74, - 0xba, 0x49, 0x7f, 0xaa, 0x3f, 0xbe, 0x20, 0x22, 0x44, 0xe8, 0xcb, 0xce, 0xe3, 0xaa, 0x77, 0xde, - 0x3d, 0x39, 0xe9, 0x7c, 0xc4, 0xe7, 0x04, 0x1a, 0xb9, 0x06, 0xaf, 0x69, 0xc4, 0x13, 0x74, 0x0c, - 0xca, 0xd8, 0x25, 0xfd, 0xcb, 0x81, 0x3b, 0x9e, 0x98, 0x04, 0x1b, 0x69, 0xdf, 0x07, 0x3b, 0x74, - 0x34, 0xb4, 0x04, 0x95, 0x76, 0xa8, 0x85, 0x07, 0x38, 0xa5, 0xf2, 0xf9, 0x1f, 0x09, 0x9a, 0x0f, - 0x17, 0x0a, 0x5b, 0xa4, 0xc0, 0x2b, 0xdf, 0xf0, 0xfa, 0x13, 0xcf, 0x37, 0x48, 0xe6, 0x58, 0x90, - 0xbe, 0x3d, 0x1c, 0x0a, 0x37, 0x04, 0x0d, 0x41, 0x7a, 0xd8, 0x20, 0xfe, 0x05, 0x36, 0x7c, 0x45, - 0x2e, 0xd8, 0xf6, 0x70, 0x9b, 0x50, 0x17, 0xac, 0x98, 0x70, 0x6e, 0x55, 0x8c, 0x19, 0x9d, 0x00, - 0xb2, 0x9d, 0x1f, 0xae, 0x69, 0xf8, 0xb6, 0xeb, 0x14, 0x31, 0x2a, 0x48, 0x85, 0xe3, 0x6d, 0xee, - 0x7e, 0x1f, 0x66, 0x4d, 0x57, 0xd1, 0x29, 0xbc, 0xd9, 0x3e, 0x31, 0x1c, 0x13, 0xa7, 0xe6, 0x47, - 0x57, 0x15, 0xf1, 0x5e, 0xbe, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x94, 0x89, 0xd2, 0x83, - 0x04, 0x00, 0x00, + // 585 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x52, 0xcf, 0x4e, 0xdb, 0x4c, + 0x1c, 0xc4, 0x06, 0x12, 0xf2, 0x0b, 0x24, 0xd6, 0x7e, 0x7c, 0xe0, 0x52, 0xa9, 0xa5, 0x3e, 0x21, + 0x90, 0x1c, 0x35, 0xbd, 0xe4, 0xd0, 0x8b, 0xb1, 0x97, 0x62, 0x25, 0xd8, 0xe9, 0xda, 0x69, 0x24, + 0xa4, 0x2a, 0x72, 0xe2, 0x25, 0x72, 0x21, 0xb6, 0x15, 0x6f, 0x82, 0x78, 0xa5, 0xbe, 0x4a, 0x1f, + 0xa0, 0x4f, 0xd1, 0x77, 0xa8, 0xb2, 0xfe, 0x43, 0xd2, 0x80, 0x50, 0x0f, 0xbd, 0x58, 0xde, 0xd9, + 0xd9, 0xd9, 0x9d, 0xf9, 0x0d, 0xfc, 0x1f, 0xdf, 0x8e, 0x1b, 0xec, 0x21, 0xa6, 0x49, 0xfa, 0x55, + 0xe3, 0x69, 0xc4, 0xa2, 0xa3, 0xb7, 0xe3, 0x28, 0x1a, 0xdf, 0xd1, 0x06, 0x5f, 0x0d, 0x67, 0x37, + 0x0d, 0x16, 0x4c, 0x68, 0xc2, 0xbc, 0x49, 0x9c, 0x12, 0x94, 0x6b, 0xd8, 0xe9, 0x47, 0xd3, 0xdb, + 0x9b, 0xbb, 0xe8, 0x1e, 0x9d, 0xc1, 0xce, 0x84, 0x32, 0xcf, 0xf7, 0x98, 0x27, 0x0b, 0xc7, 0xc2, + 0x49, 0xb5, 0x59, 0x57, 0xed, 0xe1, 0x37, 0x3a, 0x62, 0x57, 0x19, 0x4c, 0x0a, 0x02, 0x7a, 0x07, + 0x5b, 0x49, 0x4c, 0x47, 0xb2, 0xc8, 0x89, 0x7b, 0x6a, 0xae, 0xe2, 0xc4, 0x74, 0x44, 0xf8, 0x96, + 0xf2, 0x11, 0x76, 0x97, 0x51, 0x84, 0x60, 0x2b, 0xf4, 0x26, 0x94, 0x6b, 0x57, 0x08, 0xff, 0x47, + 0x32, 0x94, 0xe7, 0x74, 0x9a, 0x04, 0x51, 0xc8, 0x95, 0x2a, 0x24, 0x5f, 0x2a, 0x3f, 0x05, 0x40, + 0xf9, 0x71, 0x33, 0x9c, 0x47, 0x23, 0x8f, 0x05, 0x51, 0x88, 0x6a, 0x20, 0x06, 0x7e, 0x26, 0x21, + 0x06, 0x3e, 0x7a, 0x03, 0x70, 0x9f, 0xb3, 0xfc, 0x4c, 0x63, 0x09, 0x41, 0x4d, 0x28, 0x25, 0xcc, + 0x63, 0xb3, 0x44, 0xde, 0x3c, 0x16, 0x4e, 0x6a, 0xcd, 0x23, 0x75, 0x5d, 0x54, 0x75, 0x38, 0x83, + 0x64, 0x4c, 0xe5, 0x2b, 0x94, 0x52, 0x04, 0x55, 0xa1, 0xdc, 0xb3, 0xda, 0x96, 0xdd, 0xb7, 0xa4, + 0x0d, 0xb4, 0x07, 0x15, 0x47, 0xbf, 0xc4, 0x46, 0xaf, 0x83, 0x0d, 0x49, 0x40, 0x75, 0xa8, 0x9a, + 0xd6, 0xa0, 0x4b, 0xec, 0x4f, 0x04, 0x3b, 0x8e, 0x24, 0xf2, 0xfd, 0x9e, 0xae, 0x63, 0x6c, 0x60, + 0x43, 0xda, 0x44, 0x00, 0xa5, 0x0b, 0xcd, 0x5c, 0x70, 0xb7, 0x16, 0x3a, 0xda, 0xb9, 0x4d, 0x5c, + 0x6c, 0x48, 0xdb, 0x4a, 0x19, 0xb6, 0xf1, 0x24, 0x66, 0x0f, 0x4a, 0x0b, 0x0e, 0xd6, 0x1f, 0xc3, + 0xa3, 0x7a, 0xc1, 0x95, 0xf2, 0x4b, 0x00, 0xf9, 0x89, 0xa3, 0xe9, 0xa3, 0x5b, 0x85, 0x65, 0x81, + 0x5b, 0x3e, 0x56, 0x9f, 0xa3, 0xfe, 0x61, 0x1c, 0xb5, 0xa0, 0x32, 0x8b, 0x7d, 0x8f, 0x51, 0x5f, + 0x63, 0xd9, 0x64, 0x8f, 0xd4, 0xb4, 0x42, 0x6a, 0x5e, 0x21, 0xd5, 0xcd, 0x2b, 0x44, 0x1e, 0xc9, + 0xff, 0x3a, 0xb2, 0xef, 0x02, 0xbc, 0x5e, 0x37, 0xa1, 0x47, 0x21, 0xf3, 0x82, 0x90, 0x4e, 0xff, + 0xae, 0xba, 0x67, 0x2b, 0xd5, 0x3d, 0x54, 0x9f, 0x9e, 0x41, 0x5a, 0x62, 0xf4, 0x7e, 0xa5, 0x3f, + 0xd5, 0xe6, 0xab, 0x67, 0xc3, 0x2c, 0xea, 0x73, 0x0d, 0xb5, 0xd5, 0xbb, 0xd7, 0x4a, 0xdb, 0x82, + 0xca, 0x68, 0x4a, 0xb3, 0x9c, 0x37, 0x5f, 0xce, 0xb9, 0x20, 0x9f, 0x7e, 0x86, 0xbd, 0xfc, 0x7e, + 0x3c, 0xa7, 0x21, 0x43, 0xfb, 0x20, 0xf5, 0x6d, 0xd2, 0xbe, 0xe8, 0xd8, 0xfd, 0x81, 0x4e, 0xb0, + 0xb6, 0xc8, 0x6b, 0x63, 0x05, 0xed, 0x75, 0x0d, 0x8e, 0x0a, 0x2b, 0xa8, 0x81, 0x3b, 0x78, 0x81, + 0x8a, 0xa7, 0x3f, 0x04, 0xa8, 0x3f, 0x7a, 0x49, 0x55, 0x25, 0xd8, 0x75, 0x35, 0xa7, 0x3d, 0x70, + 0x5c, 0x8d, 0xa4, 0x8a, 0x05, 0xd2, 0x36, 0xbb, 0x5d, 0xae, 0x86, 0xa0, 0xc6, 0x91, 0x4b, 0xac, + 0x11, 0xf7, 0x1c, 0x6b, 0xae, 0x24, 0x16, 0xd8, 0xf2, 0x50, 0xeb, 0x50, 0xe5, 0x58, 0x31, 0xd9, + 0x5c, 0xaa, 0x18, 0x2f, 0x3a, 0x00, 0x64, 0x5a, 0x5f, 0x6c, 0x5d, 0x73, 0x4d, 0xdb, 0x2a, 0x6c, + 0x94, 0x90, 0x0c, 0xfb, 0xcb, 0xb8, 0x7d, 0xd5, 0x4d, 0x1f, 0x5d, 0x46, 0x87, 0xf0, 0xdf, 0xf2, + 0x8e, 0x66, 0xe9, 0x78, 0x21, 0xbe, 0x33, 0x2c, 0xf1, 0xfc, 0x3e, 0xfc, 0x0e, 0x00, 0x00, 0xff, + 0xff, 0x63, 0x33, 0xe6, 0xbd, 0x11, 0x05, 0x00, 0x00, } diff --git a/pkg/types/types.proto b/pkg/types/types.proto index d1fd86f1..59079cba 100644 --- a/pkg/types/types.proto +++ b/pkg/types/types.proto @@ -3,12 +3,16 @@ syntax = "proto3"; import "google/protobuf/timestamp.proto"; message Workflow { - string id = 1; - string name = 2; - string version = 3; + ObjectMetadata metadata = 1; + WorkflowSpec spec = 2; // TODO add internals } +message WorkflowSpec { + string name = 1; + string version = 2; +} + message WorkflowInvocation { // TODO move to SPEC and STATUS string id = 1; string workflowId = 2; @@ -25,7 +29,7 @@ message WorkflowInvocation { // TODO move to SPEC and STATUS // TODO more about status } -enum WorkflowEvents { +enum WorkflowEvent { WORKFLOW_CREATED = 0; WORKFLOW_UPDATED = 1; WORKFLOW_DELETED = 2; @@ -53,20 +57,28 @@ message WorkflowInvocationSpec { message WorkflowInvocationStatus { enum Status { UNKNOWN = 0; - SCHEDULED = 1; - IN_PROGRESS = 2; + SCHEDULED = 1; // Arrived at engine, but not yet schedu + IN_PROGRESS = 2; // Scheduled SUCCEEDED = 3; FAILED = 4; ABORTED = 5; } Status status = 1; google.protobuf.Timestamp updatedAt = 2; - google.protobuf.Timestamp createdAt = 3; // TODO status nodes } message WorkflowInvocationContainer { - string id = 1; + ObjectMetadata metadata = 1; WorkflowInvocationSpec spec = 2; WorkflowInvocationStatus status = 3; -} \ No newline at end of file +} + + +// TODO decide on these > +message ObjectMetadata { + string id = 1; +// string namespace = 2; +// string name = 3; + google.protobuf.Timestamp createdAt = 3; +} diff --git a/pkg/types/typeutils.go b/pkg/types/typeutils.go new file mode 100644 index 00000000..8b8398ac --- /dev/null +++ b/pkg/types/typeutils.go @@ -0,0 +1,19 @@ +package types + +import "fmt" + +func ParseInvocationEvent(flag string) (InvocationEvent, error) { + val, ok := InvocationEvent_value[flag] + if !ok { + return 0, fmt.Errorf("Unknown InvocationEvent '%s'", flag) + } + return InvocationEvent(val), nil +} + +func ParseWorkflowEvent(flag string) (WorkflowEvent, error) { + val, ok := WorkflowEvent_value[flag] + if !ok { + return 0, fmt.Errorf("Unknown WorkflowEvent '%s'", flag) + } + return WorkflowEvent(val), nil +} From 855a13aedb1041e2d4e518138e3b947500106f6c Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Fri, 28 Jul 2017 12:44:09 -0700 Subject: [PATCH 10/24] Update workflow-engine app --- cmd/workflow-engine/app/BUILD.bazel | 2 +- cmd/workflow-engine/app/bootstrap.go | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cmd/workflow-engine/app/BUILD.bazel b/cmd/workflow-engine/app/BUILD.bazel index 6c69d3ae..632a1002 100644 --- a/cmd/workflow-engine/app/BUILD.bazel +++ b/cmd/workflow-engine/app/BUILD.bazel @@ -10,7 +10,7 @@ go_library( "//pkg/cache:go_default_library", "//pkg/controller:go_default_library", "//pkg/eventstore/nats:go_default_library", - "//pkg/projector/project:go_default_library", + "//pkg/projector/project/invocation:go_default_library", "//pkg/scheduler:go_default_library", "//vendor/github.com/grpc-ecosystem/grpc-gateway/runtime:go_default_library", "//vendor/github.com/nats-io/go-nats-streaming:go_default_library", diff --git a/cmd/workflow-engine/app/bootstrap.go b/cmd/workflow-engine/app/bootstrap.go index e90a6272..392e112b 100644 --- a/cmd/workflow-engine/app/bootstrap.go +++ b/cmd/workflow-engine/app/bootstrap.go @@ -10,7 +10,7 @@ import ( "github.com/fission/fission-workflow/pkg/cache" "github.com/fission/fission-workflow/pkg/controller" "github.com/fission/fission-workflow/pkg/eventstore/nats" - "github.com/fission/fission-workflow/pkg/projector/project" + "github.com/fission/fission-workflow/pkg/projector/project/invocation" "github.com/fission/fission-workflow/pkg/scheduler" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/nats-io/go-nats-streaming" @@ -44,16 +44,18 @@ func Run(ctx context.Context) { if err != nil { panic(err) } - //natsClient := nats.NewNatsClient(nats.NewConn(natsConn)) - natsClient2 := nats.New(nats.NewConn(natsConn)) + natsClient := nats.New(nats.NewConn(natsConn)) cache := cache.NewMapCache() + // Setup API + workflowApi := api.NewWorkflowApi(natsClient) + invocationApi := api.NewInvocationApi(natsClient) + // API gRPC Server - //workflowServer := apiserver.NewGrpcWorkflowApiServer(natsClient) + workflowServer := apiserver.NewGrpcWorkflowApiServer(workflowApi) adminServer := &apiserver.GrpcAdminApiServer{} - invocationApi := api.NewInvocationApi(natsClient2) invocationServer := apiserver.NewGrpcInvocationApiServer(invocationApi) - //apiserver.RegisterWorkflowAPIServer(grpcServer, workflowServer) + apiserver.RegisterWorkflowAPIServer(grpcServer, workflowServer) apiserver.RegisterAdminAPIServer(grpcServer, adminServer) apiserver.RegisterWorkflowInvocationAPIServer(grpcServer, invocationServer) @@ -77,7 +79,7 @@ func Run(ctx context.Context) { go http.ListenAndServe(API_GATEWAY_ADDRESS, mux) // Controller - invocationProjector := project.NewInvocationProjector(natsClient2, cache) + invocationProjector := invocation.NewInvocationProjector(natsClient, cache) s := &scheduler.WorkflowScheduler{} ctr := controller.NewController(invocationProjector, s) defer ctr.Close() From f8e3b2f4bc35b7878719a2c55a8e53f4d549420d Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Fri, 28 Jul 2017 13:05:55 -0700 Subject: [PATCH 11/24] Add list functionality to invocationApi --- pkg/api/invocation.go | 6 +- pkg/apiserver/apiserver.pb.go | 108 ++++++++++++------ pkg/apiserver/apiserver.pb.gw.go | 42 +++++++ pkg/apiserver/apiserver.proto | 15 +-- pkg/apiserver/apiserver.swagger.json | 25 ++++ pkg/apiserver/invocation.go | 8 +- pkg/eventstore/nats/client.go | 13 ++- pkg/projector/project/invocation/projector.go | 13 +++ pkg/projector/project/types.go | 3 + 9 files changed, 180 insertions(+), 53 deletions(-) diff --git a/pkg/api/invocation.go b/pkg/api/invocation.go index affb61a7..035cec53 100644 --- a/pkg/api/invocation.go +++ b/pkg/api/invocation.go @@ -65,6 +65,6 @@ func (ia *InvocationApi) Get(invocationId string) (*types.WorkflowInvocationCont return ia.Projector.Get(invocationId) } -// Get(invocationID) - -// Future: Search/List (time-based, workflow-based, status-based) +func (ia *InvocationApi) List(query string) ([]string, error) { + return ia.Projector.List(query) +} diff --git a/pkg/apiserver/apiserver.pb.go b/pkg/apiserver/apiserver.pb.go index 7099e524..d5a97ccc 100644 --- a/pkg/apiserver/apiserver.pb.go +++ b/pkg/apiserver/apiserver.pb.go @@ -324,6 +324,7 @@ type WorkflowInvocationAPIClient interface { // In case that an invocation already is canceled, has failed or has completed, nothing happens. // In case that an invocation does not exist a HTTP 404 error status is returned. Cancel(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*types.Empty, error) + List(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*WorkflowInvocationList, error) // Get the specification and status of a workflow invocation // // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. @@ -357,6 +358,15 @@ func (c *workflowInvocationAPIClient) Cancel(ctx context.Context, in *WorkflowIn return out, nil } +func (c *workflowInvocationAPIClient) List(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*WorkflowInvocationList, error) { + out := new(WorkflowInvocationList) + err := grpc.Invoke(ctx, "/apiserver.WorkflowInvocationAPI/List", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *workflowInvocationAPIClient) Get(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*types.WorkflowInvocationContainer, error) { out := new(types.WorkflowInvocationContainer) err := grpc.Invoke(ctx, "/apiserver.WorkflowInvocationAPI/Get", in, out, c.cc, opts...) @@ -379,6 +389,7 @@ type WorkflowInvocationAPIServer interface { // In case that an invocation already is canceled, has failed or has completed, nothing happens. // In case that an invocation does not exist a HTTP 404 error status is returned. Cancel(context.Context, *WorkflowInvocationIdentifier) (*types.Empty, error) + List(context.Context, *types.Empty) (*WorkflowInvocationList, error) // Get the specification and status of a workflow invocation // // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. @@ -426,6 +437,24 @@ func _WorkflowInvocationAPI_Cancel_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _WorkflowInvocationAPI_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkflowInvocationAPIServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/apiserver.WorkflowInvocationAPI/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkflowInvocationAPIServer).List(ctx, req.(*types.Empty)) + } + return interceptor(ctx, in, info, handler) +} + func _WorkflowInvocationAPI_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(WorkflowInvocationIdentifier) if err := dec(in); err != nil { @@ -456,6 +485,10 @@ var _WorkflowInvocationAPI_serviceDesc = grpc.ServiceDesc{ MethodName: "Cancel", Handler: _WorkflowInvocationAPI_Cancel_Handler, }, + { + MethodName: "List", + Handler: _WorkflowInvocationAPI_List_Handler, + }, { MethodName: "Get", Handler: _WorkflowInvocationAPI_Get_Handler, @@ -629,41 +662,42 @@ var _FunctionApi_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("pkg/apiserver/apiserver.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 575 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0x26, 0x29, 0x72, 0xeb, 0xb1, 0x5a, 0xda, 0x85, 0xa6, 0x91, 0x95, 0xa2, 0xb0, 0x42, 0xa2, - 0xaa, 0x84, 0x2d, 0x52, 0x84, 0x44, 0x0f, 0x88, 0x2a, 0x94, 0x50, 0xa9, 0x07, 0x48, 0x0e, 0x9c, - 0x1d, 0x7b, 0x92, 0x2c, 0x49, 0x76, 0x8d, 0x77, 0x9d, 0x2a, 0x20, 0x2e, 0xbc, 0x02, 0x2f, 0xc3, - 0x7b, 0xf0, 0x0a, 0x9c, 0x78, 0x0a, 0xe4, 0xf5, 0x5f, 0x54, 0x47, 0x55, 0x2e, 0x89, 0xf7, 0xf3, - 0xec, 0xf7, 0x7d, 0xf3, 0xcd, 0xc8, 0x70, 0x1c, 0x4e, 0xc7, 0xae, 0x17, 0x32, 0x89, 0xd1, 0x02, - 0xa3, 0xf2, 0xc9, 0x09, 0x23, 0xa1, 0x04, 0x31, 0x0b, 0xc0, 0x7e, 0x3d, 0x66, 0x6a, 0x12, 0x0f, - 0x1d, 0x5f, 0xcc, 0xdd, 0x11, 0x93, 0x92, 0x09, 0x9e, 0xff, 0x3f, 0xbf, 0x11, 0xd1, 0x74, 0x34, - 0x13, 0x37, 0x6e, 0xc2, 0xa6, 0x96, 0x21, 0xca, 0xf4, 0x37, 0x65, 0xb1, 0xbb, 0x9b, 0x5e, 0xc5, - 0x05, 0x72, 0x25, 0x95, 0x88, 0x70, 0xe5, 0x31, 0x23, 0x69, 0x8d, 0x85, 0x18, 0xcf, 0x30, 0xb1, - 0xe8, 0x7a, 0x9c, 0x0b, 0xe5, 0x29, 0x26, 0x78, 0x26, 0x41, 0x9f, 0x02, 0xf9, 0x9c, 0x31, 0x5d, - 0x05, 0xc8, 0x15, 0x1b, 0x31, 0x8c, 0xc8, 0x1e, 0xd4, 0x59, 0xd0, 0xac, 0xb5, 0x6b, 0x27, 0x66, - 0xbf, 0xce, 0x02, 0x7a, 0x04, 0x87, 0x03, 0xf4, 0x22, 0x7f, 0x92, 0xd7, 0xf6, 0xf1, 0x6b, 0x8c, - 0x52, 0xd1, 0x57, 0xd0, 0xb8, 0xfd, 0x42, 0x86, 0x82, 0x4b, 0x24, 0x2d, 0x30, 0x73, 0x8b, 0xb2, - 0x59, 0x6b, 0x6f, 0x9d, 0x98, 0xfd, 0x12, 0xa0, 0x0e, 0xb4, 0x0a, 0x59, 0xbe, 0x10, 0xbe, 0xf6, - 0x74, 0x87, 0x81, 0x33, 0x38, 0xaa, 0xd6, 0x7f, 0x8a, 0x31, 0x5a, 0x92, 0x26, 0x6c, 0xcb, 0x78, - 0xf8, 0x05, 0x7d, 0x95, 0xd5, 0xe7, 0x47, 0x7a, 0x0e, 0x8d, 0xea, 0xa5, 0x6b, 0x26, 0x15, 0x69, - 0x83, 0xc5, 0x0a, 0x24, 0xb7, 0xb7, 0x0a, 0xd1, 0x37, 0xeb, 0x0c, 0xf6, 0x50, 0xf5, 0x31, 0x6d, - 0xef, 0x31, 0x18, 0x69, 0xd2, 0xfa, 0xb2, 0xd5, 0x31, 0x9c, 0xcb, 0xe4, 0xd8, 0xcf, 0x50, 0xda, - 0x06, 0xe3, 0x03, 0x7a, 0x33, 0x35, 0x21, 0x0d, 0x30, 0xa4, 0xf2, 0x54, 0x2c, 0x33, 0x7b, 0xd9, - 0xa9, 0xf3, 0xaf, 0x06, 0x56, 0x2e, 0x71, 0xf1, 0xf1, 0x8a, 0x5c, 0x83, 0xd1, 0x8d, 0xd0, 0x53, - 0x48, 0x76, 0x9d, 0x1c, 0x1f, 0x84, 0xe8, 0xdb, 0xc7, 0x4e, 0xb9, 0x5d, 0xd5, 0x59, 0xd1, 0x47, - 0x3f, 0xff, 0xfc, 0xfd, 0x55, 0xdf, 0xa3, 0xa6, 0x9b, 0xc7, 0x7b, 0x5e, 0x3b, 0x25, 0xef, 0xe0, - 0xbe, 0xee, 0xd4, 0x70, 0x2e, 0xe7, 0xa1, 0x5a, 0xda, 0x4f, 0x56, 0x48, 0xd6, 0x4f, 0x8c, 0x1e, - 0x68, 0x22, 0x8b, 0x94, 0x44, 0xa4, 0x07, 0x5b, 0x3d, 0x54, 0xe4, 0x6e, 0x07, 0xb6, 0x59, 0x80, - 0xb4, 0xa1, 0x39, 0xf6, 0xc9, 0x5e, 0xc1, 0xe1, 0x7e, 0x67, 0xc1, 0x8f, 0xce, 0xef, 0x3a, 0x1c, - 0x56, 0xf3, 0x4c, 0xda, 0x1e, 0x82, 0x91, 0x00, 0x53, 0x24, 0x47, 0x4e, 0xb5, 0x42, 0x07, 0xf0, - 0x6c, 0x9d, 0xfc, 0x9a, 0xad, 0xc9, 0xd5, 0xa9, 0xe5, 0x96, 0xa3, 0x4c, 0xc2, 0x18, 0x80, 0xd1, - 0xf5, 0xb8, 0x8f, 0x33, 0xb2, 0x29, 0x95, 0x9d, 0xe5, 0x46, 0x9b, 0x9a, 0x92, 0x9c, 0xee, 0xaf, - 0x50, 0xea, 0x96, 0xc8, 0x28, 0xcd, 0x66, 0x63, 0xc6, 0xd6, 0x9a, 0xd7, 0x5d, 0xc1, 0x95, 0xc7, - 0x38, 0x46, 0xb9, 0x0e, 0xa9, 0xe8, 0x74, 0xde, 0xc2, 0xce, 0x45, 0x30, 0x67, 0x3a, 0xac, 0x97, - 0x60, 0x0c, 0xf4, 0xf6, 0x14, 0x73, 0x3d, 0x58, 0x91, 0x4f, 0x17, 0x8e, 0x3e, 0xd0, 0x54, 0x26, - 0xd9, 0x76, 0xb3, 0x4d, 0x0b, 0xc0, 0x7a, 0x1f, 0x73, 0x5f, 0x27, 0x1e, 0x32, 0xf2, 0x02, 0x20, - 0x89, 0x95, 0x79, 0x33, 0xf6, 0x0d, 0x0b, 0xa2, 0xbc, 0xe1, 0x87, 0xfa, 0xf6, 0x2e, 0xb1, 0x5c, - 0x59, 0x16, 0xd1, 0x62, 0x48, 0xb7, 0xcb, 0x77, 0x74, 0x79, 0x9d, 0xdc, 0x1b, 0x1a, 0xfa, 0x83, - 0x72, 0xf6, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xab, 0x6e, 0x15, 0x74, 0x1a, 0x05, 0x00, 0x00, + // 586 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0xcf, 0x6e, 0xd3, 0x4e, + 0x10, 0xc7, 0x7f, 0x49, 0x7f, 0x72, 0xeb, 0x89, 0x5a, 0xda, 0x81, 0xa6, 0x51, 0x94, 0xa2, 0xb0, + 0x42, 0xa2, 0xaa, 0x84, 0x2d, 0x52, 0x84, 0x44, 0x0f, 0x88, 0x2a, 0xb4, 0xa5, 0x52, 0x0f, 0x90, + 0x1c, 0x38, 0x3b, 0xce, 0x24, 0x5d, 0x9a, 0xee, 0x1a, 0xef, 0xba, 0x55, 0x41, 0x48, 0x88, 0x57, + 0xe0, 0xd1, 0x78, 0x05, 0x4e, 0x3c, 0x05, 0xf2, 0xfa, 0xaf, 0x6a, 0xab, 0xca, 0x25, 0xf1, 0x8e, + 0x67, 0x3f, 0xf3, 0x9d, 0xef, 0x8c, 0x0c, 0xbb, 0xc1, 0xe5, 0xdc, 0xf5, 0x02, 0xae, 0x28, 0xbc, + 0xa6, 0xb0, 0x78, 0x72, 0x82, 0x50, 0x6a, 0x89, 0x76, 0x1e, 0xe8, 0xbe, 0x9e, 0x73, 0x7d, 0x11, + 0x4d, 0x1c, 0x5f, 0x5e, 0xb9, 0x33, 0xae, 0x14, 0x97, 0x22, 0xfb, 0x7f, 0x7e, 0x23, 0xc3, 0xcb, + 0xd9, 0x42, 0xde, 0xb8, 0x31, 0x4d, 0xdf, 0x06, 0xa4, 0x92, 0xdf, 0x84, 0xd2, 0x1d, 0x2e, 0x7b, + 0x95, 0xae, 0x49, 0x68, 0xa5, 0x65, 0x48, 0xa5, 0xc7, 0x14, 0xd2, 0x9b, 0x4b, 0x39, 0x5f, 0x50, + 0x2c, 0xd1, 0xf5, 0x84, 0x90, 0xda, 0xd3, 0x5c, 0x8a, 0xb4, 0x04, 0x7b, 0x0a, 0xf8, 0x29, 0x25, + 0x9d, 0x4d, 0x49, 0x68, 0x3e, 0xe3, 0x14, 0xe2, 0x06, 0x34, 0xf9, 0xb4, 0xd3, 0xe8, 0x37, 0xf6, + 0xec, 0x51, 0x93, 0x4f, 0xd9, 0x0e, 0x6c, 0x8f, 0xc9, 0x0b, 0xfd, 0x8b, 0x2c, 0x77, 0x44, 0x5f, + 0x22, 0x52, 0x9a, 0xbd, 0x82, 0xf6, 0xdd, 0x17, 0x2a, 0x90, 0x42, 0x11, 0xf6, 0xc0, 0xce, 0x24, + 0xaa, 0x4e, 0xa3, 0xbf, 0xb2, 0x67, 0x8f, 0x8a, 0x00, 0x73, 0xa0, 0x97, 0x97, 0x15, 0xd7, 0xd2, + 0x37, 0x9a, 0xee, 0x11, 0x70, 0x00, 0x3b, 0xd5, 0xfc, 0x8f, 0x11, 0x85, 0xb7, 0xd8, 0x81, 0x55, + 0x15, 0x4d, 0x3e, 0x93, 0xaf, 0xd3, 0xfc, 0xec, 0xc8, 0x0e, 0xa1, 0x5d, 0xbd, 0x74, 0xce, 0x95, + 0xc6, 0x3e, 0xb4, 0x78, 0x1e, 0xc9, 0xe4, 0x95, 0x43, 0xec, 0x4d, 0x9d, 0xc0, 0x53, 0xd2, 0x23, + 0x4a, 0xda, 0x7b, 0x0c, 0x56, 0xe2, 0xb4, 0xb9, 0xdc, 0x1a, 0x58, 0xce, 0x71, 0x7c, 0x1c, 0xa5, + 0x51, 0xd6, 0x07, 0xeb, 0x3d, 0x79, 0x0b, 0x7d, 0x81, 0x6d, 0xb0, 0x94, 0xf6, 0x74, 0xa4, 0x52, + 0x79, 0xe9, 0x69, 0xf0, 0xb7, 0x01, 0xad, 0xac, 0xc4, 0xd1, 0x87, 0x33, 0x3c, 0x07, 0x6b, 0x18, + 0x92, 0xa7, 0x09, 0xd7, 0x9d, 0x2c, 0x3e, 0x0e, 0xc8, 0xef, 0xee, 0x3a, 0xc5, 0x76, 0x55, 0x67, + 0xc5, 0x1e, 0xfd, 0xfc, 0xfd, 0xe7, 0x57, 0x73, 0x83, 0xd9, 0x6e, 0x66, 0xef, 0x61, 0x63, 0x1f, + 0xdf, 0xc1, 0xff, 0xa6, 0x53, 0xcb, 0x39, 0xbe, 0x0a, 0xf4, 0x6d, 0xf7, 0x49, 0x09, 0x52, 0x3f, + 0x31, 0xb6, 0x65, 0x40, 0x2d, 0x2c, 0x40, 0x78, 0x0a, 0x2b, 0xa7, 0xa4, 0xf1, 0x7e, 0x05, 0x5d, + 0x3b, 0x0f, 0xb2, 0xb6, 0x61, 0x6c, 0xe2, 0x46, 0xce, 0x70, 0xbf, 0xf1, 0xe9, 0xf7, 0xc1, 0x8f, + 0x15, 0xd8, 0xae, 0xfa, 0x19, 0xb7, 0x3d, 0x01, 0x2b, 0x0e, 0x5c, 0x12, 0xee, 0x38, 0xd5, 0x0c, + 0x63, 0xc0, 0xb3, 0xba, 0xf2, 0x35, 0x5b, 0x93, 0x55, 0x67, 0x2d, 0xb7, 0x18, 0x65, 0x6c, 0xc6, + 0x18, 0xac, 0xa1, 0x27, 0x7c, 0x5a, 0xe0, 0xb2, 0xa8, 0x6e, 0xea, 0x1b, 0xeb, 0x18, 0x24, 0xee, + 0x6f, 0x96, 0x90, 0xa6, 0x25, 0x3c, 0xb9, 0xc7, 0xe1, 0xfa, 0xb5, 0x63, 0x0f, 0x0d, 0x6c, 0x1d, + 0xcb, 0xfa, 0x70, 0x96, 0x78, 0xbc, 0xb4, 0xb2, 0x5e, 0xcd, 0xeb, 0xa1, 0x14, 0xda, 0xe3, 0x82, + 0xc2, 0x4c, 0x2f, 0x56, 0xf4, 0x0e, 0xde, 0xc2, 0xda, 0xd1, 0xf4, 0x8a, 0x1b, 0xd3, 0x5f, 0x82, + 0x35, 0x36, 0x5b, 0x98, 0xab, 0xdf, 0x2a, 0x95, 0x4f, 0x16, 0x97, 0x3d, 0x30, 0x28, 0x1b, 0x57, + 0xdd, 0x74, 0x63, 0xa7, 0xd0, 0x3a, 0x89, 0x84, 0x6f, 0x26, 0x17, 0x70, 0x7c, 0x01, 0x10, 0x8f, + 0x87, 0x7b, 0x0b, 0xfe, 0x95, 0x72, 0x50, 0x66, 0x5c, 0xd1, 0xab, 0x2a, 0x92, 0x58, 0x3e, 0xec, + 0xbb, 0xe9, 0x6b, 0x26, 0xbd, 0x89, 0xff, 0x4d, 0x2c, 0xf3, 0x61, 0x3a, 0xf8, 0x17, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0xeb, 0x1c, 0xc3, 0x62, 0x05, 0x00, 0x00, } diff --git a/pkg/apiserver/apiserver.pb.gw.go b/pkg/apiserver/apiserver.pb.gw.go index 08b888e6..39411ec1 100644 --- a/pkg/apiserver/apiserver.pb.gw.go +++ b/pkg/apiserver/apiserver.pb.gw.go @@ -118,6 +118,15 @@ func request_WorkflowInvocationAPI_Cancel_0(ctx context.Context, marshaler runti } +func request_WorkflowInvocationAPI_List_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowInvocationAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq types.Empty + var metadata runtime.ServerMetadata + + msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + func request_WorkflowInvocationAPI_Get_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowInvocationAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq WorkflowInvocationIdentifier var metadata runtime.ServerMetadata @@ -387,6 +396,35 @@ func RegisterWorkflowInvocationAPIHandler(ctx context.Context, mux *runtime.Serv }) + mux.Handle("GET", pattern_WorkflowInvocationAPI_List_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_WorkflowInvocationAPI_List_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_WorkflowInvocationAPI_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_WorkflowInvocationAPI_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -424,6 +462,8 @@ var ( pattern_WorkflowInvocationAPI_Cancel_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"invocation", "id"}, "")) + pattern_WorkflowInvocationAPI_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"invocation"}, "")) + pattern_WorkflowInvocationAPI_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"invocation", "id"}, "")) ) @@ -432,6 +472,8 @@ var ( forward_WorkflowInvocationAPI_Cancel_0 = runtime.ForwardResponseMessage + forward_WorkflowInvocationAPI_List_0 = runtime.ForwardResponseMessage + forward_WorkflowInvocationAPI_Get_0 = runtime.ForwardResponseMessage ) diff --git a/pkg/apiserver/apiserver.proto b/pkg/apiserver/apiserver.proto index 075238a8..9163112e 100644 --- a/pkg/apiserver/apiserver.proto +++ b/pkg/apiserver/apiserver.proto @@ -62,6 +62,12 @@ service WorkflowInvocationAPI { }; } + rpc List (Empty) returns (WorkflowInvocationList) { + option (google.api.http) = { + get: "/invocation" + }; + } + // Get the specification and status of a workflow invocation // // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. @@ -71,15 +77,6 @@ service WorkflowInvocationAPI { get: "/invocation/{id}" }; } - - // Search for workflow invocations based on a query - // - // By default the search returns at most 10 workflow invocations in no specific order. -// rpc Search (Empty) returns (WorkflowInvocationList) { -// option (google.api.http) = { -// get: "/invocation" -// }; -// } } message WorkflowInvocationIdentifier { diff --git a/pkg/apiserver/apiserver.swagger.json b/pkg/apiserver/apiserver.swagger.json index c7ff728f..5fc36dc8 100644 --- a/pkg/apiserver/apiserver.swagger.json +++ b/pkg/apiserver/apiserver.swagger.json @@ -16,6 +16,20 @@ ], "paths": { "/invocation": { + "get": { + "operationId": "List", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/apiserverWorkflowInvocationList" + } + } + }, + "tags": [ + "WorkflowInvocationAPI" + ] + }, "post": { "summary": "Create a new workflow invocation", "description": "In case the invocation specification is missing fields or contains invalid fields, a HTTP 400 is returned.", @@ -311,6 +325,17 @@ "type": "string" } } + }, + "apiserverWorkflowInvocationList": { + "type": "object", + "properties": { + "invocations": { + "type": "array", + "items": { + "type": "string" + } + } + } } } } diff --git a/pkg/apiserver/invocation.go b/pkg/apiserver/invocation.go index 36117c75..f89e3a71 100644 --- a/pkg/apiserver/invocation.go +++ b/pkg/apiserver/invocation.go @@ -38,6 +38,10 @@ func (gi *grpcInvocationApiServer) Get(ctx context.Context, invocationId *Workfl return gi.api.Get(invocationId.GetId()) } -func (gi *grpcInvocationApiServer) Search(context.Context, *types.Empty) (*WorkflowInvocationList, error) { - panic("implement me") +func (gi *grpcInvocationApiServer) List(context.Context, *types.Empty) (*WorkflowInvocationList, error) { + invocations, err := gi.api.List("*") + if err != nil { + return nil, err + } + return &WorkflowInvocationList{invocations}, nil } diff --git a/pkg/eventstore/nats/client.go b/pkg/eventstore/nats/client.go index 1ddf56b8..b611a7b3 100644 --- a/pkg/eventstore/nats/client.go +++ b/pkg/eventstore/nats/client.go @@ -169,7 +169,7 @@ func (nc *Client) Subjects(query string) ([]string, error) { if err != nil { return nil, err } - results := []string{} + subjectCount := map[string]int{} for _, msg := range msgs { subjectEvent := &eventstore.SubjectEvent{} err := proto.Unmarshal(msg.Data, subjectEvent) @@ -183,10 +183,19 @@ func (nc *Client) Subjects(query string) ([]string, error) { } if queryMatches(subjectEvent.GetSubject(), query) { - results = append(results, subjectEvent.GetSubject()) + count := 1 + if c, ok := subjectCount[subjectEvent.GetSubject()]; ok { + count += c + } + subjectCount[subjectEvent.GetSubject()] = count } } + results := []string{} + for subject := range subjectCount { + results = append(results, subject) + } + return results, nil } diff --git a/pkg/projector/project/invocation/projector.go b/pkg/projector/project/invocation/projector.go index a5fc43f8..6cab6970 100644 --- a/pkg/projector/project/invocation/projector.go +++ b/pkg/projector/project/invocation/projector.go @@ -10,6 +10,7 @@ import ( "github.com/fission/fission-workflow/pkg/types/invocationevent" "github.com/golang/protobuf/ptypes" "github.com/sirupsen/logrus" + "strings" ) type invocationProjector struct { @@ -87,6 +88,18 @@ func (ip *invocationProjector) Subscribe(updateCh chan *project.InvocationNotifi return nil } +func (ip *invocationProjector) List(query string) ([]string, error) { + subjects, err := ip.esClient.Subjects("invocation." + query) // TODO fix this hardcode + if err != nil { + return nil, err + } + results := make([]string, len(subjects)) + for key, subject := range subjects { + results[key] = strings.SplitN(subject, ".", 2)[1] // TODO fix this hardcode + } + return results, nil +} + func (ip *invocationProjector) Cache() cache.Cache { return ip.cache } diff --git a/pkg/projector/project/types.go b/pkg/projector/project/types.go index a32f37e5..73645379 100644 --- a/pkg/projector/project/types.go +++ b/pkg/projector/project/types.go @@ -34,6 +34,9 @@ type InvocationProjector interface { // Populates cache Watch(query string) error + // Lists all subjects that fit the query + List(query string) ([]string, error) + // Suscribe to updates on subjects watched by this projector Subscribe(updateCh chan *InvocationNotification) error } From 93d13c3adfe369fbe4345d7f7bb2edf614393509 Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Mon, 31 Jul 2017 10:43:21 -0700 Subject: [PATCH 12/24] Add initial function interface --- cmd/workflow-engine/app/BUILD.bazel | 1 + cmd/workflow-engine/app/bootstrap.go | 12 ++ pkg/api/BUILD.bazel | 3 + pkg/api/function.go | 64 +++++-- pkg/apiserver/BUILD.bazel | 2 + pkg/apiserver/admin.go | 4 +- pkg/apiserver/apiserver.pb.go | 197 ++++++++----------- pkg/apiserver/apiserver.pb.gw.go | 39 ++-- pkg/apiserver/apiserver.proto | 22 +-- pkg/apiserver/apiserver.swagger.json | 109 ++++++++--- pkg/apiserver/function.go | 19 ++ pkg/apiserver/invocation.go | 7 +- pkg/apiserver/workflow.go | 3 +- pkg/eventstore/nats/client.go | 1 - pkg/scheduler/scheduler.pb.go | 48 ++--- pkg/scheduler/scheduler.proto | 4 +- pkg/types/types.pb.go | 276 ++++++++++++++++----------- pkg/types/types.proto | 83 ++++---- 18 files changed, 536 insertions(+), 358 deletions(-) create mode 100644 pkg/apiserver/function.go diff --git a/cmd/workflow-engine/app/BUILD.bazel b/cmd/workflow-engine/app/BUILD.bazel index 632a1002..bfd2b5f3 100644 --- a/cmd/workflow-engine/app/BUILD.bazel +++ b/cmd/workflow-engine/app/BUILD.bazel @@ -12,6 +12,7 @@ go_library( "//pkg/eventstore/nats:go_default_library", "//pkg/projector/project/invocation:go_default_library", "//pkg/scheduler:go_default_library", + "//vendor/github.com/fission/fission/poolmgr/client:go_default_library", "//vendor/github.com/grpc-ecosystem/grpc-gateway/runtime:go_default_library", "//vendor/github.com/nats-io/go-nats-streaming:go_default_library", "//vendor/github.com/sirupsen/logrus:go_default_library", diff --git a/cmd/workflow-engine/app/bootstrap.go b/cmd/workflow-engine/app/bootstrap.go index 392e112b..332646fa 100644 --- a/cmd/workflow-engine/app/bootstrap.go +++ b/cmd/workflow-engine/app/bootstrap.go @@ -12,6 +12,7 @@ import ( "github.com/fission/fission-workflow/pkg/eventstore/nats" "github.com/fission/fission-workflow/pkg/projector/project/invocation" "github.com/fission/fission-workflow/pkg/scheduler" + "github.com/fission/fission/poolmgr/client" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/nats-io/go-nats-streaming" log "github.com/sirupsen/logrus" @@ -47,17 +48,24 @@ func Run(ctx context.Context) { natsClient := nats.New(nats.NewConn(natsConn)) cache := cache.NewMapCache() + // Fission client + poolmgrClient := client.MakeClient("http://192.168.99.100:32101") + // Setup API workflowApi := api.NewWorkflowApi(natsClient) invocationApi := api.NewInvocationApi(natsClient) + functionApi := api.NewFissionFunctionApi(poolmgrClient) // API gRPC Server workflowServer := apiserver.NewGrpcWorkflowApiServer(workflowApi) adminServer := &apiserver.GrpcAdminApiServer{} invocationServer := apiserver.NewGrpcInvocationApiServer(invocationApi) + functionServer := apiserver.NewGrpcFunctionApiServer(functionApi) + apiserver.RegisterWorkflowAPIServer(grpcServer, workflowServer) apiserver.RegisterAdminAPIServer(grpcServer, adminServer) apiserver.RegisterWorkflowInvocationAPIServer(grpcServer, invocationServer) + apiserver.RegisterFunctionEnvApiServer(grpcServer, functionServer) // API Gateway server mux := runtime.NewServeMux() @@ -74,6 +82,10 @@ func Run(ctx context.Context) { if err != nil { panic(err) } + err = apiserver.RegisterFunctionEnvApiHandlerFromEndpoint(ctx, mux, GRPC_ADDRESS, opts) + if err != nil { + panic(err) + } log.Info("Serving HTTP API gateway at: ", API_GATEWAY_ADDRESS) go http.ListenAndServe(API_GATEWAY_ADDRESS, mux) diff --git a/pkg/api/BUILD.bazel b/pkg/api/BUILD.bazel index 012c0244..36e23b65 100644 --- a/pkg/api/BUILD.bazel +++ b/pkg/api/BUILD.bazel @@ -17,8 +17,11 @@ go_library( "//pkg/projector/project/invocation:go_default_library", "//pkg/projector/project/workflow:go_default_library", "//pkg/types:go_default_library", + "//vendor/github.com/fission/fission:go_default_library", + "//vendor/github.com/fission/fission/poolmgr/client:go_default_library", "//vendor/github.com/golang/protobuf/ptypes:go_default_library", "//vendor/github.com/satori/go.uuid:go_default_library", + "//vendor/github.com/sirupsen/logrus:go_default_library", ], ) diff --git a/pkg/api/function.go b/pkg/api/function.go index 06684c3d..a90f7b22 100644 --- a/pkg/api/function.go +++ b/pkg/api/function.go @@ -1,16 +1,28 @@ package api +import ( + "fmt" + "io/ioutil" + "net/http" + + "github.com/fission/fission" + "github.com/fission/fission-workflow/pkg/types" + "github.com/fission/fission/poolmgr/client" + "github.com/sirupsen/logrus" +) + // Towards environment (Fission) // Should not be exposed externally, used by controller & co -type FunctionApi interface { - // Request function invocation - Invoke() +type FunctionEnvApi interface { + // Request function invocation (Async) + Invoke(fn *types.FunctionInvocationSpec) (string, error) + InvokeSync(fn *types.FunctionInvocationSpec) (*types.FunctionInvocation, error) // Cancel function invocation - Cancel() + //Cancel(id string) error // Request status update of function - Status() + //Status() } // Towards engine @@ -19,18 +31,44 @@ type FunctionHandlerApi interface { UpdateStatus() } -type FunctionInvocation interface { - Id() FunctionInvocationMetadata - Spec() FunctionInvocationSpec - Status() FunctionInvocationStatus +type FissionFunctionEnvApi struct { + poolmgr *client.Client } -type FunctionInvocationSpec interface { - // Strategy +func NewFissionFunctionApi(fission *client.Client) FunctionEnvApi { + return &FissionFunctionEnvApi{fission} } -type FunctionInvocationStatus interface { +func (fi *FissionFunctionEnvApi) InvokeSync(fn *types.FunctionInvocationSpec) (*types.FunctionInvocation, error) { + meta := &fission.Metadata{ + Name: fn.GetName(), + Uid: fn.GetId(), + // TODO deal with uid + } + logrus.WithFields(logrus.Fields{ + "metadata": meta, + }).Debug("Invoking Fission function.") + //serviceUrl, err := fi.poolmgr.GetServiceForFunction(meta) + //if err != nil { + // return nil, err + //} + serviceUrl := fmt.Sprintf("http://192.168.99.100:31314/fission-function/%s", fn.GetName()) + + resp, err := http.Get(serviceUrl) // TODO allow specifying of http method + if err != nil { + panic(err) + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + panic(err) + } + fmt.Printf("Resp: (%s)", body) + + return &types.FunctionInvocation{}, nil } -type FunctionInvocationMetadata interface { +func (fi *FissionFunctionEnvApi) Invoke(fn *types.FunctionInvocationSpec) (string, error) { + panic("implement me") } diff --git a/pkg/apiserver/BUILD.bazel b/pkg/apiserver/BUILD.bazel index 9743436e..fb090590 100644 --- a/pkg/apiserver/BUILD.bazel +++ b/pkg/apiserver/BUILD.bazel @@ -6,6 +6,7 @@ go_library( "admin.go", "apiserver.pb.go", "apiserver.pb.gw.go", + "function.go", "invocation.go", "workflow.go", ], @@ -15,6 +16,7 @@ go_library( "//pkg/eventstore:go_default_library", "//pkg/types:go_default_library", "//vendor/github.com/golang/protobuf/proto:go_default_library", + "//vendor/github.com/golang/protobuf/ptypes/empty:go_default_library", "//vendor/github.com/grpc-ecosystem/grpc-gateway/runtime:go_default_library", "//vendor/github.com/grpc-ecosystem/grpc-gateway/utilities:go_default_library", "//vendor/github.com/sirupsen/logrus:go_default_library", diff --git a/pkg/apiserver/admin.go b/pkg/apiserver/admin.go index 2461c793..2a7598c8 100644 --- a/pkg/apiserver/admin.go +++ b/pkg/apiserver/admin.go @@ -1,14 +1,14 @@ package apiserver import ( - "github.com/fission/fission-workflow/pkg/types" + "github.com/golang/protobuf/ptypes/empty" "golang.org/x/net/context" ) type GrpcAdminApiServer struct { } -func (as *GrpcAdminApiServer) Status(ctx context.Context, _ *types.Empty) (*Health, error) { +func (as *GrpcAdminApiServer) Status(ctx context.Context, _ *empty.Empty) (*Health, error) { return &Health{ Status: "OK!", diff --git a/pkg/apiserver/apiserver.pb.go b/pkg/apiserver/apiserver.pb.go index d5a97ccc..ce976460 100644 --- a/pkg/apiserver/apiserver.pb.go +++ b/pkg/apiserver/apiserver.pb.go @@ -24,6 +24,7 @@ import fmt "fmt" import math "math" import types "github.com/fission/fission-workflow/pkg/types" import eventstore "github.com/fission/fission-workflow/pkg/eventstore" +import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" import _ "google.golang.org/genproto/googleapis/api/annotations" import ( @@ -185,7 +186,7 @@ const _ = grpc.SupportPackageIsVersion4 type WorkflowAPIClient interface { Create(ctx context.Context, in *types.WorkflowSpec, opts ...grpc.CallOption) (*WorkflowIdentifier, error) - List(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*SearchWorkflowResponse, error) + List(ctx context.Context, in *google_protobuf2.Empty, opts ...grpc.CallOption) (*SearchWorkflowResponse, error) Get(ctx context.Context, in *WorkflowIdentifier, opts ...grpc.CallOption) (*types.Workflow, error) } @@ -206,7 +207,7 @@ func (c *workflowAPIClient) Create(ctx context.Context, in *types.WorkflowSpec, return out, nil } -func (c *workflowAPIClient) List(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*SearchWorkflowResponse, error) { +func (c *workflowAPIClient) List(ctx context.Context, in *google_protobuf2.Empty, opts ...grpc.CallOption) (*SearchWorkflowResponse, error) { out := new(SearchWorkflowResponse) err := grpc.Invoke(ctx, "/apiserver.WorkflowAPI/List", in, out, c.cc, opts...) if err != nil { @@ -228,7 +229,7 @@ func (c *workflowAPIClient) Get(ctx context.Context, in *WorkflowIdentifier, opt type WorkflowAPIServer interface { Create(context.Context, *types.WorkflowSpec) (*WorkflowIdentifier, error) - List(context.Context, *types.Empty) (*SearchWorkflowResponse, error) + List(context.Context, *google_protobuf2.Empty) (*SearchWorkflowResponse, error) Get(context.Context, *WorkflowIdentifier) (*types.Workflow, error) } @@ -255,7 +256,7 @@ func _WorkflowAPI_Create_Handler(srv interface{}, ctx context.Context, dec func( } func _WorkflowAPI_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) + in := new(google_protobuf2.Empty) if err := dec(in); err != nil { return nil, err } @@ -267,7 +268,7 @@ func _WorkflowAPI_List_Handler(srv interface{}, ctx context.Context, dec func(in FullMethod: "/apiserver.WorkflowAPI/List", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowAPIServer).List(ctx, req.(*types.Empty)) + return srv.(WorkflowAPIServer).List(ctx, req.(*google_protobuf2.Empty)) } return interceptor(ctx, in, info, handler) } @@ -323,8 +324,8 @@ type WorkflowInvocationAPIClient interface { // This action is irreverisble. A canceled invocation cannot be resumed or restarted. // In case that an invocation already is canceled, has failed or has completed, nothing happens. // In case that an invocation does not exist a HTTP 404 error status is returned. - Cancel(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*types.Empty, error) - List(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*WorkflowInvocationList, error) + Cancel(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) + List(ctx context.Context, in *google_protobuf2.Empty, opts ...grpc.CallOption) (*WorkflowInvocationList, error) // Get the specification and status of a workflow invocation // // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. @@ -349,8 +350,8 @@ func (c *workflowInvocationAPIClient) Invoke(ctx context.Context, in *types.Work return out, nil } -func (c *workflowInvocationAPIClient) Cancel(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) +func (c *workflowInvocationAPIClient) Cancel(ctx context.Context, in *WorkflowInvocationIdentifier, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { + out := new(google_protobuf2.Empty) err := grpc.Invoke(ctx, "/apiserver.WorkflowInvocationAPI/Cancel", in, out, c.cc, opts...) if err != nil { return nil, err @@ -358,7 +359,7 @@ func (c *workflowInvocationAPIClient) Cancel(ctx context.Context, in *WorkflowIn return out, nil } -func (c *workflowInvocationAPIClient) List(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*WorkflowInvocationList, error) { +func (c *workflowInvocationAPIClient) List(ctx context.Context, in *google_protobuf2.Empty, opts ...grpc.CallOption) (*WorkflowInvocationList, error) { out := new(WorkflowInvocationList) err := grpc.Invoke(ctx, "/apiserver.WorkflowInvocationAPI/List", in, out, c.cc, opts...) if err != nil { @@ -388,8 +389,8 @@ type WorkflowInvocationAPIServer interface { // This action is irreverisble. A canceled invocation cannot be resumed or restarted. // In case that an invocation already is canceled, has failed or has completed, nothing happens. // In case that an invocation does not exist a HTTP 404 error status is returned. - Cancel(context.Context, *WorkflowInvocationIdentifier) (*types.Empty, error) - List(context.Context, *types.Empty) (*WorkflowInvocationList, error) + Cancel(context.Context, *WorkflowInvocationIdentifier) (*google_protobuf2.Empty, error) + List(context.Context, *google_protobuf2.Empty) (*WorkflowInvocationList, error) // Get the specification and status of a workflow invocation // // Get returns three different aspects of the workflow invocation, namely the spec (specification), status and logs. @@ -438,7 +439,7 @@ func _WorkflowInvocationAPI_Cancel_Handler(srv interface{}, ctx context.Context, } func _WorkflowInvocationAPI_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) + in := new(google_protobuf2.Empty) if err := dec(in); err != nil { return nil, err } @@ -450,7 +451,7 @@ func _WorkflowInvocationAPI_List_Handler(srv interface{}, ctx context.Context, d FullMethod: "/apiserver.WorkflowInvocationAPI/List", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowInvocationAPIServer).List(ctx, req.(*types.Empty)) + return srv.(WorkflowInvocationAPIServer).List(ctx, req.(*google_protobuf2.Empty)) } return interceptor(ctx, in, info, handler) } @@ -501,7 +502,7 @@ var _WorkflowInvocationAPI_serviceDesc = grpc.ServiceDesc{ // Client API for AdminAPI service type AdminAPIClient interface { - Status(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*Health, error) + Status(ctx context.Context, in *google_protobuf2.Empty, opts ...grpc.CallOption) (*Health, error) } type adminAPIClient struct { @@ -512,7 +513,7 @@ func NewAdminAPIClient(cc *grpc.ClientConn) AdminAPIClient { return &adminAPIClient{cc} } -func (c *adminAPIClient) Status(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*Health, error) { +func (c *adminAPIClient) Status(ctx context.Context, in *google_protobuf2.Empty, opts ...grpc.CallOption) (*Health, error) { out := new(Health) err := grpc.Invoke(ctx, "/apiserver.AdminAPI/Status", in, out, c.cc, opts...) if err != nil { @@ -524,7 +525,7 @@ func (c *adminAPIClient) Status(ctx context.Context, in *types.Empty, opts ...gr // Server API for AdminAPI service type AdminAPIServer interface { - Status(context.Context, *types.Empty) (*Health, error) + Status(context.Context, *google_protobuf2.Empty) (*Health, error) } func RegisterAdminAPIServer(s *grpc.Server, srv AdminAPIServer) { @@ -532,7 +533,7 @@ func RegisterAdminAPIServer(s *grpc.Server, srv AdminAPIServer) { } func _AdminAPI_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) + in := new(google_protobuf2.Empty) if err := dec(in); err != nil { return nil, err } @@ -544,7 +545,7 @@ func _AdminAPI_Status_Handler(srv interface{}, ctx context.Context, dec func(int FullMethod: "/apiserver.AdminAPI/Status", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AdminAPIServer).Status(ctx, req.(*types.Empty)) + return srv.(AdminAPIServer).Status(ctx, req.(*google_protobuf2.Empty)) } return interceptor(ctx, in, info, handler) } @@ -562,97 +563,66 @@ var _AdminAPI_serviceDesc = grpc.ServiceDesc{ Metadata: "pkg/apiserver/apiserver.proto", } -// Client API for FunctionApi service +// Client API for FunctionEnvApi service -type FunctionApiClient interface { - Specialize(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) - Invoke(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) +type FunctionEnvApiClient interface { + // Debug purposes + Invoke(ctx context.Context, in *types.FunctionInvocationSpec, opts ...grpc.CallOption) (*types.FunctionInvocation, error) } -type functionApiClient struct { +type functionEnvApiClient struct { cc *grpc.ClientConn } -func NewFunctionApiClient(cc *grpc.ClientConn) FunctionApiClient { - return &functionApiClient{cc} +func NewFunctionEnvApiClient(cc *grpc.ClientConn) FunctionEnvApiClient { + return &functionEnvApiClient{cc} } -func (c *functionApiClient) Specialize(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := grpc.Invoke(ctx, "/apiserver.FunctionApi/Specialize", in, out, c.cc, opts...) +func (c *functionEnvApiClient) Invoke(ctx context.Context, in *types.FunctionInvocationSpec, opts ...grpc.CallOption) (*types.FunctionInvocation, error) { + out := new(types.FunctionInvocation) + err := grpc.Invoke(ctx, "/apiserver.FunctionEnvApi/Invoke", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -func (c *functionApiClient) Invoke(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := grpc.Invoke(ctx, "/apiserver.FunctionApi/Invoke", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for FunctionApi service +// Server API for FunctionEnvApi service -type FunctionApiServer interface { - Specialize(context.Context, *types.Empty) (*types.Empty, error) - Invoke(context.Context, *types.Empty) (*types.Empty, error) +type FunctionEnvApiServer interface { + // Debug purposes + Invoke(context.Context, *types.FunctionInvocationSpec) (*types.FunctionInvocation, error) } -func RegisterFunctionApiServer(s *grpc.Server, srv FunctionApiServer) { - s.RegisterService(&_FunctionApi_serviceDesc, srv) +func RegisterFunctionEnvApiServer(s *grpc.Server, srv FunctionEnvApiServer) { + s.RegisterService(&_FunctionEnvApi_serviceDesc, srv) } -func _FunctionApi_Specialize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) +func _FunctionEnvApi_Invoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.FunctionInvocationSpec) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(FunctionApiServer).Specialize(ctx, in) + return srv.(FunctionEnvApiServer).Invoke(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/apiserver.FunctionApi/Specialize", + FullMethod: "/apiserver.FunctionEnvApi/Invoke", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FunctionApiServer).Specialize(ctx, req.(*types.Empty)) + return srv.(FunctionEnvApiServer).Invoke(ctx, req.(*types.FunctionInvocationSpec)) } return interceptor(ctx, in, info, handler) } -func _FunctionApi_Invoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FunctionApiServer).Invoke(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/apiserver.FunctionApi/Invoke", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FunctionApiServer).Invoke(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) -} - -var _FunctionApi_serviceDesc = grpc.ServiceDesc{ - ServiceName: "apiserver.FunctionApi", - HandlerType: (*FunctionApiServer)(nil), +var _FunctionEnvApi_serviceDesc = grpc.ServiceDesc{ + ServiceName: "apiserver.FunctionEnvApi", + HandlerType: (*FunctionEnvApiServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "Specialize", - Handler: _FunctionApi_Specialize_Handler, - }, { MethodName: "Invoke", - Handler: _FunctionApi_Invoke_Handler, + Handler: _FunctionEnvApi_Invoke_Handler, }, }, Streams: []grpc.StreamDesc{}, @@ -662,42 +632,43 @@ var _FunctionApi_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("pkg/apiserver/apiserver.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 586 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0xcf, 0x6e, 0xd3, 0x4e, - 0x10, 0xc7, 0x7f, 0x49, 0x7f, 0x72, 0xeb, 0x89, 0x5a, 0xda, 0x81, 0xa6, 0x51, 0x94, 0xa2, 0xb0, - 0x42, 0xa2, 0xaa, 0x84, 0x2d, 0x52, 0x84, 0x44, 0x0f, 0x88, 0x2a, 0xb4, 0xa5, 0x52, 0x0f, 0x90, - 0x1c, 0x38, 0x3b, 0xce, 0x24, 0x5d, 0x9a, 0xee, 0x1a, 0xef, 0xba, 0x55, 0x41, 0x48, 0x88, 0x57, - 0xe0, 0xd1, 0x78, 0x05, 0x4e, 0x3c, 0x05, 0xf2, 0xfa, 0xaf, 0x6a, 0xab, 0xca, 0x25, 0xf1, 0x8e, - 0x67, 0x3f, 0xf3, 0x9d, 0xef, 0x8c, 0x0c, 0xbb, 0xc1, 0xe5, 0xdc, 0xf5, 0x02, 0xae, 0x28, 0xbc, - 0xa6, 0xb0, 0x78, 0x72, 0x82, 0x50, 0x6a, 0x89, 0x76, 0x1e, 0xe8, 0xbe, 0x9e, 0x73, 0x7d, 0x11, - 0x4d, 0x1c, 0x5f, 0x5e, 0xb9, 0x33, 0xae, 0x14, 0x97, 0x22, 0xfb, 0x7f, 0x7e, 0x23, 0xc3, 0xcb, - 0xd9, 0x42, 0xde, 0xb8, 0x31, 0x4d, 0xdf, 0x06, 0xa4, 0x92, 0xdf, 0x84, 0xd2, 0x1d, 0x2e, 0x7b, - 0x95, 0xae, 0x49, 0x68, 0xa5, 0x65, 0x48, 0xa5, 0xc7, 0x14, 0xd2, 0x9b, 0x4b, 0x39, 0x5f, 0x50, - 0x2c, 0xd1, 0xf5, 0x84, 0x90, 0xda, 0xd3, 0x5c, 0x8a, 0xb4, 0x04, 0x7b, 0x0a, 0xf8, 0x29, 0x25, - 0x9d, 0x4d, 0x49, 0x68, 0x3e, 0xe3, 0x14, 0xe2, 0x06, 0x34, 0xf9, 0xb4, 0xd3, 0xe8, 0x37, 0xf6, - 0xec, 0x51, 0x93, 0x4f, 0xd9, 0x0e, 0x6c, 0x8f, 0xc9, 0x0b, 0xfd, 0x8b, 0x2c, 0x77, 0x44, 0x5f, - 0x22, 0x52, 0x9a, 0xbd, 0x82, 0xf6, 0xdd, 0x17, 0x2a, 0x90, 0x42, 0x11, 0xf6, 0xc0, 0xce, 0x24, - 0xaa, 0x4e, 0xa3, 0xbf, 0xb2, 0x67, 0x8f, 0x8a, 0x00, 0x73, 0xa0, 0x97, 0x97, 0x15, 0xd7, 0xd2, - 0x37, 0x9a, 0xee, 0x11, 0x70, 0x00, 0x3b, 0xd5, 0xfc, 0x8f, 0x11, 0x85, 0xb7, 0xd8, 0x81, 0x55, - 0x15, 0x4d, 0x3e, 0x93, 0xaf, 0xd3, 0xfc, 0xec, 0xc8, 0x0e, 0xa1, 0x5d, 0xbd, 0x74, 0xce, 0x95, - 0xc6, 0x3e, 0xb4, 0x78, 0x1e, 0xc9, 0xe4, 0x95, 0x43, 0xec, 0x4d, 0x9d, 0xc0, 0x53, 0xd2, 0x23, - 0x4a, 0xda, 0x7b, 0x0c, 0x56, 0xe2, 0xb4, 0xb9, 0xdc, 0x1a, 0x58, 0xce, 0x71, 0x7c, 0x1c, 0xa5, - 0x51, 0xd6, 0x07, 0xeb, 0x3d, 0x79, 0x0b, 0x7d, 0x81, 0x6d, 0xb0, 0x94, 0xf6, 0x74, 0xa4, 0x52, - 0x79, 0xe9, 0x69, 0xf0, 0xb7, 0x01, 0xad, 0xac, 0xc4, 0xd1, 0x87, 0x33, 0x3c, 0x07, 0x6b, 0x18, - 0x92, 0xa7, 0x09, 0xd7, 0x9d, 0x2c, 0x3e, 0x0e, 0xc8, 0xef, 0xee, 0x3a, 0xc5, 0x76, 0x55, 0x67, - 0xc5, 0x1e, 0xfd, 0xfc, 0xfd, 0xe7, 0x57, 0x73, 0x83, 0xd9, 0x6e, 0x66, 0xef, 0x61, 0x63, 0x1f, - 0xdf, 0xc1, 0xff, 0xa6, 0x53, 0xcb, 0x39, 0xbe, 0x0a, 0xf4, 0x6d, 0xf7, 0x49, 0x09, 0x52, 0x3f, - 0x31, 0xb6, 0x65, 0x40, 0x2d, 0x2c, 0x40, 0x78, 0x0a, 0x2b, 0xa7, 0xa4, 0xf1, 0x7e, 0x05, 0x5d, - 0x3b, 0x0f, 0xb2, 0xb6, 0x61, 0x6c, 0xe2, 0x46, 0xce, 0x70, 0xbf, 0xf1, 0xe9, 0xf7, 0xc1, 0x8f, - 0x15, 0xd8, 0xae, 0xfa, 0x19, 0xb7, 0x3d, 0x01, 0x2b, 0x0e, 0x5c, 0x12, 0xee, 0x38, 0xd5, 0x0c, - 0x63, 0xc0, 0xb3, 0xba, 0xf2, 0x35, 0x5b, 0x93, 0x55, 0x67, 0x2d, 0xb7, 0x18, 0x65, 0x6c, 0xc6, - 0x18, 0xac, 0xa1, 0x27, 0x7c, 0x5a, 0xe0, 0xb2, 0xa8, 0x6e, 0xea, 0x1b, 0xeb, 0x18, 0x24, 0xee, - 0x6f, 0x96, 0x90, 0xa6, 0x25, 0x3c, 0xb9, 0xc7, 0xe1, 0xfa, 0xb5, 0x63, 0x0f, 0x0d, 0x6c, 0x1d, - 0xcb, 0xfa, 0x70, 0x96, 0x78, 0xbc, 0xb4, 0xb2, 0x5e, 0xcd, 0xeb, 0xa1, 0x14, 0xda, 0xe3, 0x82, - 0xc2, 0x4c, 0x2f, 0x56, 0xf4, 0x0e, 0xde, 0xc2, 0xda, 0xd1, 0xf4, 0x8a, 0x1b, 0xd3, 0x5f, 0x82, - 0x35, 0x36, 0x5b, 0x98, 0xab, 0xdf, 0x2a, 0x95, 0x4f, 0x16, 0x97, 0x3d, 0x30, 0x28, 0x1b, 0x57, - 0xdd, 0x74, 0x63, 0xa7, 0xd0, 0x3a, 0x89, 0x84, 0x6f, 0x26, 0x17, 0x70, 0x7c, 0x01, 0x10, 0x8f, - 0x87, 0x7b, 0x0b, 0xfe, 0x95, 0x72, 0x50, 0x66, 0x5c, 0xd1, 0xab, 0x2a, 0x92, 0x58, 0x3e, 0xec, - 0xbb, 0xe9, 0x6b, 0x26, 0xbd, 0x89, 0xff, 0x4d, 0x2c, 0xf3, 0x61, 0x3a, 0xf8, 0x17, 0x00, 0x00, - 0xff, 0xff, 0xdf, 0xeb, 0x1c, 0xc3, 0x62, 0x05, 0x00, 0x00, + // 603 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0xd1, 0x6a, 0xd4, 0x4c, + 0x14, 0x26, 0xed, 0x4f, 0xfa, 0xe7, 0x2c, 0x5d, 0xdb, 0xa9, 0xdd, 0x2e, 0x71, 0x2b, 0xeb, 0x20, + 0x58, 0x0a, 0x26, 0xb0, 0x05, 0xc1, 0x5e, 0x08, 0x65, 0xad, 0xb5, 0xd0, 0x8b, 0xba, 0x15, 0xbd, + 0x13, 0xb2, 0xd9, 0x93, 0xed, 0xd8, 0xed, 0x4c, 0xcc, 0x4c, 0xb6, 0x14, 0xf1, 0xc6, 0x57, 0xf0, + 0x05, 0x7c, 0x27, 0x5f, 0xc1, 0xa7, 0xf0, 0x4a, 0x32, 0xc9, 0x64, 0x43, 0x93, 0x96, 0x7a, 0xb3, + 0x9b, 0x39, 0x67, 0xe6, 0xfb, 0xbe, 0x73, 0xbe, 0x0f, 0xb6, 0xe3, 0x8b, 0xa9, 0x1f, 0xc4, 0x4c, + 0x62, 0x32, 0xc7, 0x64, 0xf1, 0xe5, 0xc5, 0x89, 0x50, 0x82, 0x38, 0x65, 0xc1, 0x7d, 0x39, 0x65, + 0xea, 0x3c, 0x1d, 0x7b, 0xa1, 0xb8, 0xf4, 0x23, 0x26, 0x25, 0x13, 0xdc, 0xfc, 0x3f, 0xbf, 0x12, + 0xc9, 0x45, 0x34, 0x13, 0x57, 0x7e, 0x86, 0xa6, 0xae, 0x63, 0x94, 0xf9, 0x6f, 0x8e, 0xe2, 0x0e, + 0xef, 0xfb, 0x14, 0xe7, 0xc8, 0x95, 0x54, 0x22, 0xc1, 0xca, 0x67, 0x01, 0xf2, 0x68, 0x2a, 0xc4, + 0x74, 0x86, 0xbe, 0x3e, 0x8d, 0xd3, 0xc8, 0xc7, 0xcb, 0x58, 0x5d, 0x17, 0xcd, 0x5e, 0xd1, 0x0c, + 0x62, 0xe6, 0x07, 0x9c, 0x0b, 0x15, 0x28, 0x26, 0x78, 0xc1, 0x4f, 0x9f, 0x02, 0xf9, 0x58, 0xd0, + 0x1c, 0x4f, 0x90, 0x2b, 0x16, 0x31, 0x4c, 0x48, 0x1b, 0x96, 0xd8, 0xa4, 0x6b, 0xf5, 0xad, 0x1d, + 0x67, 0xb4, 0xc4, 0x26, 0x74, 0x0b, 0x36, 0xcf, 0x30, 0x48, 0xc2, 0x73, 0x73, 0x77, 0x84, 0x5f, + 0x52, 0x94, 0x8a, 0xbe, 0x80, 0xce, 0xcd, 0x86, 0x8c, 0x05, 0x97, 0x48, 0x7a, 0xe0, 0x18, 0xfd, + 0xb2, 0x6b, 0xf5, 0x97, 0x77, 0x9c, 0xd1, 0xa2, 0x40, 0x3d, 0xe8, 0x95, 0xb4, 0x7c, 0x2e, 0x42, + 0xad, 0xe9, 0x0e, 0x01, 0x7b, 0xb0, 0x55, 0xbf, 0xff, 0x2e, 0xc5, 0xe4, 0x9a, 0x74, 0x61, 0x45, + 0xa6, 0xe3, 0xcf, 0x18, 0xaa, 0xe2, 0xbe, 0x39, 0xd2, 0x7d, 0xe8, 0xd4, 0x1f, 0x9d, 0x30, 0xa9, + 0x48, 0x1f, 0x5a, 0xac, 0xac, 0x18, 0x79, 0xd5, 0x12, 0x7d, 0xd5, 0x24, 0xf0, 0x08, 0xd5, 0x08, + 0xf3, 0xf1, 0x1e, 0x83, 0x9d, 0xdb, 0xa0, 0x1f, 0xb7, 0x06, 0xb6, 0x77, 0x98, 0x1d, 0x47, 0x45, + 0x95, 0xf6, 0xc1, 0x7e, 0x8b, 0xc1, 0x4c, 0x9d, 0x93, 0x0e, 0xd8, 0x52, 0x05, 0x2a, 0x95, 0x85, + 0xbc, 0xe2, 0x34, 0xf8, 0x63, 0x41, 0xcb, 0x50, 0x1c, 0x9c, 0x1e, 0x93, 0x13, 0xb0, 0x87, 0x09, + 0x06, 0x0a, 0xc9, 0xaa, 0x67, 0xea, 0x67, 0x31, 0x86, 0xee, 0xb6, 0xb7, 0x88, 0x5e, 0xdd, 0x2b, + 0xfa, 0xf0, 0xfb, 0xaf, 0xdf, 0x3f, 0x96, 0xda, 0xd4, 0xf1, 0xcd, 0x7a, 0xf7, 0xad, 0x5d, 0xf2, + 0x1e, 0xfe, 0xd3, 0x93, 0x76, 0xbc, 0xdc, 0x7e, 0xcf, 0x64, 0xc3, 0x3b, 0xcc, 0xb2, 0xe1, 0x3e, + 0xa9, 0x80, 0x36, 0x3b, 0x48, 0xd7, 0x35, 0x70, 0x8b, 0x2c, 0x80, 0xc9, 0x11, 0x2c, 0x1f, 0xa1, + 0x22, 0x77, 0x2b, 0x72, 0x9d, 0xb2, 0x48, 0x3b, 0x1a, 0x63, 0x8d, 0xb4, 0x4b, 0x0c, 0xff, 0x2b, + 0x9b, 0x7c, 0x1b, 0xfc, 0x5c, 0x86, 0xcd, 0xfa, 0x7e, 0xb3, 0x35, 0x8c, 0xc1, 0xce, 0x0a, 0x17, + 0x48, 0xb6, 0xbc, 0xfa, 0x0d, 0xbd, 0x90, 0x67, 0x4d, 0xf4, 0x0d, 0x29, 0x32, 0xec, 0xb4, 0xe5, + 0x2f, 0xac, 0xcd, 0x96, 0x13, 0x82, 0x3d, 0x0c, 0x78, 0x88, 0x33, 0x72, 0x5f, 0x28, 0xf7, 0x96, + 0x3d, 0xd2, 0xae, 0xa6, 0x20, 0xbb, 0x6b, 0x15, 0x0a, 0x3d, 0x22, 0xf9, 0xf0, 0x0f, 0x0e, 0x34, + 0xc7, 0x94, 0x6e, 0x68, 0xf0, 0x55, 0x52, 0xd5, 0x4f, 0xa2, 0xdc, 0x83, 0x7b, 0x2b, 0xef, 0x35, + 0xb4, 0x87, 0x82, 0xab, 0x80, 0x71, 0x4c, 0x8c, 0x7e, 0x52, 0xd3, 0x3f, 0x38, 0x85, 0xff, 0x0f, + 0x26, 0x97, 0x4c, 0x9b, 0xf2, 0x1a, 0xec, 0x33, 0x9d, 0xda, 0x5b, 0xa7, 0x59, 0xaf, 0xc8, 0xc9, + 0x83, 0x4f, 0x1f, 0x68, 0x68, 0x87, 0xac, 0xf8, 0x45, 0xe2, 0x3f, 0x41, 0xfb, 0x4d, 0xca, 0xc3, + 0x8c, 0xe2, 0x90, 0xcf, 0x0f, 0x62, 0x96, 0x65, 0xbe, 0x34, 0xdb, 0xb4, 0x6e, 0x98, 0xbd, 0xd1, + 0xd0, 0xa8, 0x64, 0x3e, 0x2a, 0x9a, 0xfb, 0xd6, 0xee, 0xd8, 0xd6, 0x9a, 0xf6, 0xfe, 0x06, 0x00, + 0x00, 0xff, 0xff, 0xab, 0xb9, 0xeb, 0xb9, 0xb9, 0x05, 0x00, 0x00, } diff --git a/pkg/apiserver/apiserver.pb.gw.go b/pkg/apiserver/apiserver.pb.gw.go index 39411ec1..96806d49 100644 --- a/pkg/apiserver/apiserver.pb.gw.go +++ b/pkg/apiserver/apiserver.pb.gw.go @@ -14,6 +14,7 @@ import ( "github.com/fission/fission-workflow/pkg/types" "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/ptypes/empty" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/grpc-ecosystem/grpc-gateway/utilities" "golang.org/x/net/context" @@ -43,7 +44,7 @@ func request_WorkflowAPI_Create_0(ctx context.Context, marshaler runtime.Marshal } func request_WorkflowAPI_List_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq empty.Empty var metadata runtime.ServerMetadata msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -119,7 +120,7 @@ func request_WorkflowInvocationAPI_Cancel_0(ctx context.Context, marshaler runti } func request_WorkflowInvocationAPI_List_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowInvocationAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq empty.Empty var metadata runtime.ServerMetadata msg, err := client.List(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -155,7 +156,7 @@ func request_WorkflowInvocationAPI_Get_0(ctx context.Context, marshaler runtime. } func request_AdminAPI_Status_0(ctx context.Context, marshaler runtime.Marshaler, client AdminAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq empty.Empty var metadata runtime.ServerMetadata msg, err := client.Status(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -163,11 +164,15 @@ func request_AdminAPI_Status_0(ctx context.Context, marshaler runtime.Marshaler, } -func request_FunctionApi_Specialize_0(ctx context.Context, marshaler runtime.Marshaler, client FunctionApiClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty +func request_FunctionEnvApi_Invoke_0(ctx context.Context, marshaler runtime.Marshaler, client FunctionEnvApiClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq types.FunctionInvocationSpec var metadata runtime.ServerMetadata - msg, err := client.Specialize(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Invoke(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } @@ -547,9 +552,9 @@ var ( forward_AdminAPI_Status_0 = runtime.ForwardResponseMessage ) -// RegisterFunctionApiHandlerFromEndpoint is same as RegisterFunctionApiHandler but +// RegisterFunctionEnvApiHandlerFromEndpoint is same as RegisterFunctionEnvApiHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterFunctionApiHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { +func RegisterFunctionEnvApiHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err @@ -569,15 +574,15 @@ func RegisterFunctionApiHandlerFromEndpoint(ctx context.Context, mux *runtime.Se }() }() - return RegisterFunctionApiHandler(ctx, mux, conn) + return RegisterFunctionEnvApiHandler(ctx, mux, conn) } -// RegisterFunctionApiHandler registers the http handlers for service FunctionApi to "mux". +// RegisterFunctionEnvApiHandler registers the http handlers for service FunctionEnvApi to "mux". // The handlers forward requests to the grpc endpoint over "conn". -func RegisterFunctionApiHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - client := NewFunctionApiClient(conn) +func RegisterFunctionEnvApiHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + client := NewFunctionEnvApiClient(conn) - mux.Handle("GET", pattern_FunctionApi_Specialize_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_FunctionEnvApi_Invoke_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(ctx) defer cancel() if cn, ok := w.(http.CloseNotifier); ok { @@ -595,14 +600,14 @@ func RegisterFunctionApiHandler(ctx context.Context, mux *runtime.ServeMux, conn runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_FunctionApi_Specialize_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_FunctionEnvApi_Invoke_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_FunctionApi_Specialize_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_FunctionEnvApi_Invoke_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -610,9 +615,9 @@ func RegisterFunctionApiHandler(ctx context.Context, mux *runtime.ServeMux, conn } var ( - pattern_FunctionApi_Specialize_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"specialize"}, "")) + pattern_FunctionEnvApi_Invoke_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"function"}, "")) ) var ( - forward_FunctionApi_Specialize_0 = runtime.ForwardResponseMessage + forward_FunctionEnvApi_Invoke_0 = runtime.ForwardResponseMessage ) diff --git a/pkg/apiserver/apiserver.proto b/pkg/apiserver/apiserver.proto index 9163112e..ea64dd00 100644 --- a/pkg/apiserver/apiserver.proto +++ b/pkg/apiserver/apiserver.proto @@ -2,6 +2,7 @@ syntax = "proto3"; import "github.com/fission/fission-workflow/pkg/types/types.proto"; import "github.com/fission/fission-workflow/pkg/eventstore/eventstore.proto"; +import "google/protobuf/empty.proto"; import "google/api/annotations.proto"; package apiserver; @@ -14,7 +15,7 @@ service WorkflowAPI { }; } - rpc List (Empty) returns (SearchWorkflowResponse) { + rpc List (google.protobuf.Empty) returns (SearchWorkflowResponse) { option (google.api.http) = { get: "/workflow" }; @@ -56,13 +57,13 @@ service WorkflowInvocationAPI { // This action is irreverisble. A canceled invocation cannot be resumed or restarted. // In case that an invocation already is canceled, has failed or has completed, nothing happens. // In case that an invocation does not exist a HTTP 404 error status is returned. - rpc Cancel (WorkflowInvocationIdentifier) returns (Empty) { + rpc Cancel (WorkflowInvocationIdentifier) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/invocation/{id}" }; } - rpc List (Empty) returns (WorkflowInvocationList) { + rpc List (google.protobuf.Empty) returns (WorkflowInvocationList) { option (google.api.http) = { get: "/invocation" }; @@ -97,7 +98,7 @@ message WorkflowInvocationGetReponse { service AdminAPI { - rpc Status (Empty) returns (Health) { + rpc Status (google.protobuf.Empty) returns (Health) { option (google.api.http) = { get: "/status" }; @@ -108,16 +109,13 @@ message Health { string status = 1; } -service FunctionApi { - rpc Specialize (Empty) returns (Empty) { - option (google.api.http) = { - get: "/specialize" - }; - } +service FunctionEnvApi { - rpc Invoke (Empty) returns (Empty) { + // Debug purposes + rpc Invoke (FunctionInvocationSpec) returns (FunctionInvocation) { option (google.api.http) = { - get: "" + post: "/function" + body: "*" }; } } diff --git a/pkg/apiserver/apiserver.swagger.json b/pkg/apiserver/apiserver.swagger.json index 5fc36dc8..c3659950 100644 --- a/pkg/apiserver/apiserver.swagger.json +++ b/pkg/apiserver/apiserver.swagger.json @@ -15,6 +15,33 @@ "application/json" ], "paths": { + "/function": { + "post": { + "summary": "Debug purposes", + "operationId": "Invoke", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/FunctionInvocation" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/FunctionInvocationSpec" + } + } + ], + "tags": [ + "FunctionEnvApi" + ] + } + }, "/invocation": { "get": { "operationId": "List", @@ -90,7 +117,7 @@ "200": { "description": "", "schema": { - "$ref": "#/definitions/Empty" + "$ref": "#/definitions/protobufEmpty" } } }, @@ -107,22 +134,6 @@ ] } }, - "/specialize": { - "get": { - "operationId": "Specialize", - "responses": { - "200": { - "description": "", - "schema": { - "$ref": "#/definitions/Empty" - } - } - }, - "tags": [ - "FunctionApi" - ] - } - }, "/status": { "get": { "operationId": "Status", @@ -205,9 +216,56 @@ } }, "definitions": { - "Empty": { + "FunctionInvocation": { "type": "object", - "title": "Util" + "properties": { + "metadata": { + "$ref": "#/definitions/ObjectMetadata" + }, + "spec": { + "$ref": "#/definitions/FunctionInvocationSpec" + }, + "status": { + "$ref": "#/definitions/FunctionInvocationStatus" + } + }, + "title": "Function Invocation Model" + }, + "FunctionInvocationSpec": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + } + }, + "FunctionInvocationStatus": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/FunctionInvocationStatusStatus" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + } + } + }, + "FunctionInvocationStatusStatus": { + "type": "string", + "enum": [ + "UNKNOWN", + "SCHEDULED", + "IN_PROGRESS", + "SUCCEEDED", + "FAILED", + "ABORTED", + "SKIPPED" + ], + "default": "UNKNOWN" }, "ObjectMetadata": { "type": "object", @@ -221,7 +279,7 @@ "title": "string namespace = 2;\n string name = 3;" } }, - "title": "TODO decide on these \u003e" + "title": "Common" }, "Workflow": { "type": "object", @@ -232,7 +290,8 @@ "spec": { "$ref": "#/definitions/WorkflowSpec" } - } + }, + "title": "Workflow Model" }, "WorkflowInvocationContainer": { "type": "object", @@ -254,7 +313,8 @@ "workflowId": { "type": "string" } - } + }, + "title": "Workflow Invocation Model" }, "WorkflowInvocationStatus": { "type": "object", @@ -336,6 +396,11 @@ } } } + }, + "protobufEmpty": { + "type": "object", + "description": "service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "title": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:" } } } diff --git a/pkg/apiserver/function.go b/pkg/apiserver/function.go new file mode 100644 index 00000000..b12ff8b4 --- /dev/null +++ b/pkg/apiserver/function.go @@ -0,0 +1,19 @@ +package apiserver + +import ( + "github.com/fission/fission-workflow/pkg/api" + "github.com/fission/fission-workflow/pkg/types" + "golang.org/x/net/context" +) + +type GrpcFunctionApiServer struct { + api api.FunctionEnvApi +} + +func NewGrpcFunctionApiServer(api api.FunctionEnvApi) FunctionEnvApiServer { + return &GrpcFunctionApiServer{api} +} + +func (gf *GrpcFunctionApiServer) Invoke(ctx context.Context, fn *types.FunctionInvocationSpec) (*types.FunctionInvocation, error) { + return gf.api.InvokeSync(fn) +} diff --git a/pkg/apiserver/invocation.go b/pkg/apiserver/invocation.go index f89e3a71..5142d4e2 100644 --- a/pkg/apiserver/invocation.go +++ b/pkg/apiserver/invocation.go @@ -3,6 +3,7 @@ package apiserver import ( "github.com/fission/fission-workflow/pkg/api" "github.com/fission/fission-workflow/pkg/types" + "github.com/golang/protobuf/ptypes/empty" "golang.org/x/net/context" ) @@ -25,20 +26,20 @@ func (gi *grpcInvocationApiServer) Invoke(ctx context.Context, invocation *types return &WorkflowInvocationIdentifier{eventId}, nil } -func (gi *grpcInvocationApiServer) Cancel(ctx context.Context, invocationId *WorkflowInvocationIdentifier) (*types.Empty, error) { +func (gi *grpcInvocationApiServer) Cancel(ctx context.Context, invocationId *WorkflowInvocationIdentifier) (*empty.Empty, error) { err := gi.api.Cancel(invocationId.GetId()) if err != nil { return nil, err } - return &types.Empty{}, nil + return &empty.Empty{}, nil } func (gi *grpcInvocationApiServer) Get(ctx context.Context, invocationId *WorkflowInvocationIdentifier) (*types.WorkflowInvocationContainer, error) { return gi.api.Get(invocationId.GetId()) } -func (gi *grpcInvocationApiServer) List(context.Context, *types.Empty) (*WorkflowInvocationList, error) { +func (gi *grpcInvocationApiServer) List(context.Context, *empty.Empty) (*WorkflowInvocationList, error) { invocations, err := gi.api.List("*") if err != nil { return nil, err diff --git a/pkg/apiserver/workflow.go b/pkg/apiserver/workflow.go index 4af3827b..2146565b 100644 --- a/pkg/apiserver/workflow.go +++ b/pkg/apiserver/workflow.go @@ -3,6 +3,7 @@ package apiserver import ( "github.com/fission/fission-workflow/pkg/api" "github.com/fission/fission-workflow/pkg/types" + "github.com/golang/protobuf/ptypes/empty" "github.com/sirupsen/logrus" "golang.org/x/net/context" ) @@ -40,7 +41,7 @@ func (ga *GrpcWorkflowApiServer) Get(ctx context.Context, workflowId *WorkflowId return ga.api.Get(workflowId.GetId()) } -func (ga *GrpcWorkflowApiServer) List(ctx context.Context, req *types.Empty) (*SearchWorkflowResponse, error) { +func (ga *GrpcWorkflowApiServer) List(ctx context.Context, req *empty.Empty) (*SearchWorkflowResponse, error) { wfs, err := ga.api.List("*") if err != nil { return nil, err diff --git a/pkg/eventstore/nats/client.go b/pkg/eventstore/nats/client.go index b611a7b3..e88ac2d1 100644 --- a/pkg/eventstore/nats/client.go +++ b/pkg/eventstore/nats/client.go @@ -208,7 +208,6 @@ func (nc *Client) Append(event *eventstore.Event) error { err = nc.conn.Publish(invokeSubject, data) if err != nil { - panic(err) return err } diff --git a/pkg/scheduler/scheduler.pb.go b/pkg/scheduler/scheduler.pb.go index 08e2bb57..16f5b0e0 100644 --- a/pkg/scheduler/scheduler.pb.go +++ b/pkg/scheduler/scheduler.pb.go @@ -93,8 +93,8 @@ func (m *ScheduledNode) GetTaskId() string { } type ScheduleRequest struct { - Workflow *types.Workflow `protobuf:"bytes,1,opt,name=workflow" json:"workflow,omitempty"` - Invocation *types.WorkflowInvocation `protobuf:"bytes,2,opt,name=invocation" json:"invocation,omitempty"` + Workflow *types.Workflow `protobuf:"bytes,1,opt,name=workflow" json:"workflow,omitempty"` + Invocation *types.WorkflowInvocationContainer `protobuf:"bytes,2,opt,name=invocation" json:"invocation,omitempty"` } func (m *ScheduleRequest) Reset() { *m = ScheduleRequest{} } @@ -109,7 +109,7 @@ func (m *ScheduleRequest) GetWorkflow() *types.Workflow { return nil } -func (m *ScheduleRequest) GetInvocation() *types.WorkflowInvocation { +func (m *ScheduleRequest) GetInvocation() *types.WorkflowInvocationContainer { if m != nil { return m.Invocation } @@ -197,25 +197,25 @@ var _Scheduler_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("pkg/scheduler/scheduler.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 310 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0xcf, 0x4a, 0xc3, 0x40, - 0x10, 0xc6, 0x4d, 0x8b, 0xa5, 0x99, 0x6a, 0x95, 0x15, 0xa4, 0x14, 0xc4, 0x12, 0x14, 0xea, 0xc1, - 0x0d, 0xa4, 0xe0, 0x9f, 0xa3, 0xc7, 0x5e, 0x3c, 0xac, 0x82, 0xe7, 0x34, 0x3b, 0x4d, 0x97, 0x26, - 0x99, 0x98, 0xdd, 0xb4, 0xf8, 0x12, 0x3e, 0xb3, 0x98, 0x64, 0x13, 0xeb, 0x25, 0xd9, 0xf9, 0xe6, - 0x9b, 0xf9, 0xcd, 0x0c, 0x5c, 0xe5, 0xdb, 0xd8, 0xd7, 0xd1, 0x06, 0x65, 0x99, 0x60, 0xd1, 0xbd, - 0x78, 0x5e, 0x90, 0xa1, 0xe9, 0x73, 0xac, 0xcc, 0xa6, 0x5c, 0xf1, 0x88, 0x52, 0x7f, 0xad, 0xb4, - 0x56, 0x94, 0xd9, 0xff, 0xfd, 0x9e, 0x8a, 0xed, 0x3a, 0xa1, 0xbd, 0xff, 0xdb, 0xc2, 0x7c, 0xe5, - 0xa8, 0xeb, 0x6f, 0x53, 0x7a, 0x1d, 0x13, 0xc5, 0x09, 0xfa, 0x55, 0xb4, 0x2a, 0xd7, 0xbe, 0x51, - 0x29, 0x6a, 0x13, 0xa6, 0x79, 0x6d, 0xf0, 0xbe, 0x1d, 0x18, 0xbe, 0x35, 0x3c, 0xe6, 0xc1, 0x89, - 0xca, 0x76, 0x14, 0x85, 0x46, 0x51, 0xb6, 0x94, 0x13, 0x67, 0xe6, 0xcc, 0x5d, 0x71, 0xa0, 0xb1, - 0x27, 0x70, 0xa3, 0x02, 0x43, 0x83, 0xf2, 0xc5, 0x4c, 0x7a, 0x33, 0x67, 0x3e, 0x0a, 0xa6, 0xbc, - 0xa6, 0x70, 0x4b, 0xe1, 0xef, 0x96, 0x22, 0x3a, 0x33, 0xbb, 0x81, 0xe3, 0x8c, 0x24, 0xea, 0x49, - 0x7f, 0xd6, 0x9f, 0x8f, 0x82, 0x31, 0xb7, 0x5c, 0xf9, 0x4a, 0x12, 0x45, 0x9d, 0xf4, 0x1e, 0xe1, - 0xf4, 0x40, 0x67, 0x63, 0xe8, 0x29, 0x3b, 0x4a, 0x4f, 0x49, 0x76, 0x09, 0x03, 0x13, 0xea, 0xed, - 0x52, 0x56, 0x74, 0x57, 0x34, 0x91, 0x97, 0xc2, 0x99, 0x2d, 0x14, 0xf8, 0x59, 0xa2, 0x36, 0xec, - 0x16, 0x86, 0xf6, 0x3e, 0x55, 0x83, 0x51, 0xe0, 0xf2, 0x8f, 0x46, 0x10, 0x6d, 0x8a, 0x2d, 0x00, - 0xba, 0x15, 0x9b, 0x9d, 0x2e, 0x5a, 0xe3, 0xb2, 0x4d, 0x89, 0x3f, 0xb6, 0xe0, 0x01, 0x5c, 0x8b, - 0x2b, 0xd8, 0x1d, 0x0c, 0x71, 0x17, 0x26, 0x65, 0x68, 0x90, 0x9d, 0xf3, 0x7f, 0x63, 0x4c, 0xdd, - 0x56, 0xf1, 0x8e, 0x56, 0x83, 0xea, 0x48, 0x8b, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa5, 0xc8, - 0x5d, 0xd3, 0xf4, 0x01, 0x00, 0x00, + // 319 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0x4f, 0x4b, 0xf3, 0x40, + 0x10, 0xc6, 0xdf, 0xb4, 0xbc, 0xa5, 0x99, 0x6a, 0x95, 0x3d, 0x48, 0x29, 0x8a, 0x25, 0x28, 0xd4, + 0x83, 0x1b, 0x88, 0xe0, 0x1f, 0xf0, 0x22, 0x9e, 0x7a, 0xf1, 0xb0, 0x0a, 0x9e, 0xb7, 0xd9, 0x69, + 0xba, 0x34, 0xcd, 0xc4, 0xec, 0xa6, 0xc5, 0x2f, 0xe1, 0x67, 0x16, 0x93, 0x6c, 0x6a, 0xbd, 0x24, + 0x3b, 0xcf, 0x3c, 0x33, 0xbf, 0x99, 0x81, 0xb3, 0x7c, 0x95, 0x84, 0x26, 0x5e, 0xa2, 0x2a, 0x53, + 0x2c, 0x76, 0x2f, 0x9e, 0x17, 0x64, 0x69, 0xfc, 0x90, 0x68, 0xbb, 0x2c, 0xe7, 0x3c, 0xa6, 0x75, + 0xb8, 0xd0, 0xc6, 0x68, 0xca, 0xdc, 0xff, 0x7a, 0x4b, 0xc5, 0x6a, 0x91, 0xd2, 0x36, 0xfc, 0x69, + 0x61, 0x3f, 0x73, 0x34, 0xf5, 0xb7, 0x29, 0x3d, 0x4f, 0x88, 0x92, 0x14, 0xc3, 0x2a, 0x9a, 0x97, + 0x8b, 0xd0, 0xea, 0x35, 0x1a, 0x2b, 0xd7, 0x79, 0x6d, 0x08, 0xbe, 0x3c, 0xe8, 0xbf, 0x36, 0x3c, + 0x16, 0xc0, 0x81, 0xce, 0x36, 0x14, 0x4b, 0xab, 0x29, 0x9b, 0xa9, 0x91, 0x37, 0xf1, 0xa6, 0xbe, + 0xd8, 0xd3, 0xd8, 0x3d, 0xf8, 0x71, 0x81, 0xd2, 0xa2, 0x7a, 0xb2, 0xa3, 0xce, 0xc4, 0x9b, 0x0e, + 0xa2, 0x31, 0xaf, 0x29, 0xdc, 0x51, 0xf8, 0x9b, 0xa3, 0x88, 0x9d, 0x99, 0x5d, 0xc0, 0xff, 0x8c, + 0x14, 0x9a, 0x51, 0x77, 0xd2, 0x9d, 0x0e, 0xa2, 0x21, 0x77, 0x5c, 0xf5, 0x42, 0x0a, 0x45, 0x9d, + 0x0c, 0xee, 0xe0, 0x70, 0x4f, 0x67, 0x43, 0xe8, 0x68, 0x37, 0x4a, 0x47, 0x2b, 0x76, 0x02, 0x3d, + 0x2b, 0xcd, 0x6a, 0xa6, 0x2a, 0xba, 0x2f, 0x9a, 0x28, 0xd8, 0xc0, 0x91, 0x2b, 0x14, 0xf8, 0x51, + 0xa2, 0xb1, 0xec, 0x12, 0xfa, 0xee, 0x3e, 0x55, 0x83, 0x41, 0xe4, 0xf3, 0xf7, 0x46, 0x10, 0x6d, + 0x8a, 0x3d, 0x02, 0xec, 0x56, 0x6c, 0x76, 0x3a, 0x6d, 0x8d, 0xb3, 0x36, 0xf5, 0x4c, 0x99, 0x95, + 0x3a, 0xc3, 0x42, 0xfc, 0xf2, 0x47, 0xb7, 0xe0, 0x3b, 0x6e, 0xc1, 0xae, 0xa0, 0x8f, 0x1b, 0x99, + 0x96, 0xd2, 0x22, 0x3b, 0xe6, 0x7f, 0xe6, 0x19, 0xfb, 0xad, 0x12, 0xfc, 0x9b, 0xf7, 0xaa, 0x6b, + 0xdd, 0x7c, 0x07, 0x00, 0x00, 0xff, 0xff, 0xc7, 0xa8, 0xd9, 0xcb, 0xfd, 0x01, 0x00, 0x00, } diff --git a/pkg/scheduler/scheduler.proto b/pkg/scheduler/scheduler.proto index 13bff26b..18cdbba4 100644 --- a/pkg/scheduler/scheduler.proto +++ b/pkg/scheduler/scheduler.proto @@ -28,5 +28,5 @@ message ScheduledNode { message ScheduleRequest { Workflow workflow = 1; - WorkflowInvocation invocation = 2; // TODO with spec and status -} \ No newline at end of file + WorkflowInvocationContainer invocation = 2; // TODO with spec and status +} diff --git a/pkg/types/types.pb.go b/pkg/types/types.pb.go index 40173b31..8041aefc 100644 --- a/pkg/types/types.pb.go +++ b/pkg/types/types.pb.go @@ -8,14 +8,15 @@ It is generated from these files: pkg/types/types.proto It has these top-level messages: + ObjectMetadata Workflow WorkflowSpec - WorkflowInvocation - Empty + FunctionInvocation + FunctionInvocationSpec + FunctionInvocationStatus WorkflowInvocationSpec WorkflowInvocationStatus WorkflowInvocationContainer - ObjectMetadata */ package types @@ -35,6 +36,7 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package +// Event Types type WorkflowEvent int32 const ( @@ -101,38 +103,43 @@ func (x InvocationEvent) String() string { } func (InvocationEvent) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } -type WorkflowInvocation_Status int32 +type FunctionInvocationStatus_Status int32 const ( - WorkflowInvocation_UNKNOWN WorkflowInvocation_Status = 0 - WorkflowInvocation_SCHEDULED WorkflowInvocation_Status = 1 - WorkflowInvocation_IN_PROGRESS WorkflowInvocation_Status = 2 - WorkflowInvocation_SUCCEEDED WorkflowInvocation_Status = 3 - WorkflowInvocation_FAILED WorkflowInvocation_Status = 4 - WorkflowInvocation_ABORTED WorkflowInvocation_Status = 5 + FunctionInvocationStatus_UNKNOWN FunctionInvocationStatus_Status = 0 + FunctionInvocationStatus_SCHEDULED FunctionInvocationStatus_Status = 1 + FunctionInvocationStatus_IN_PROGRESS FunctionInvocationStatus_Status = 2 + FunctionInvocationStatus_SUCCEEDED FunctionInvocationStatus_Status = 3 + FunctionInvocationStatus_FAILED FunctionInvocationStatus_Status = 4 + FunctionInvocationStatus_ABORTED FunctionInvocationStatus_Status = 5 + FunctionInvocationStatus_SKIPPED FunctionInvocationStatus_Status = 6 ) -var WorkflowInvocation_Status_name = map[int32]string{ +var FunctionInvocationStatus_Status_name = map[int32]string{ 0: "UNKNOWN", 1: "SCHEDULED", 2: "IN_PROGRESS", 3: "SUCCEEDED", 4: "FAILED", 5: "ABORTED", + 6: "SKIPPED", } -var WorkflowInvocation_Status_value = map[string]int32{ +var FunctionInvocationStatus_Status_value = map[string]int32{ "UNKNOWN": 0, "SCHEDULED": 1, "IN_PROGRESS": 2, "SUCCEEDED": 3, "FAILED": 4, "ABORTED": 5, + "SKIPPED": 6, } -func (x WorkflowInvocation_Status) String() string { - return proto.EnumName(WorkflowInvocation_Status_name, int32(x)) +func (x FunctionInvocationStatus_Status) String() string { + return proto.EnumName(FunctionInvocationStatus_Status_name, int32(x)) +} +func (FunctionInvocationStatus_Status) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{5, 0} } -func (WorkflowInvocation_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } type WorkflowInvocationStatus_Status int32 @@ -166,9 +173,37 @@ func (x WorkflowInvocationStatus_Status) String() string { return proto.EnumName(WorkflowInvocationStatus_Status_name, int32(x)) } func (WorkflowInvocationStatus_Status) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{5, 0} + return fileDescriptor0, []int{7, 0} +} + +// Common +type ObjectMetadata struct { + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + // string namespace = 2; + // string name = 3; + CreatedAt *google_protobuf.Timestamp `protobuf:"bytes,3,opt,name=createdAt" json:"createdAt,omitempty"` +} + +func (m *ObjectMetadata) Reset() { *m = ObjectMetadata{} } +func (m *ObjectMetadata) String() string { return proto.CompactTextString(m) } +func (*ObjectMetadata) ProtoMessage() {} +func (*ObjectMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *ObjectMetadata) GetId() string { + if m != nil { + return m.Id + } + return "" } +func (m *ObjectMetadata) GetCreatedAt() *google_protobuf.Timestamp { + if m != nil { + return m.CreatedAt + } + return nil +} + +// Workflow Model type Workflow struct { Metadata *ObjectMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"` Spec *WorkflowSpec `protobuf:"bytes,2,opt,name=spec" json:"spec,omitempty"` @@ -177,7 +212,7 @@ type Workflow struct { func (m *Workflow) Reset() { *m = Workflow{} } func (m *Workflow) String() string { return proto.CompactTextString(m) } func (*Workflow) ProtoMessage() {} -func (*Workflow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } +func (*Workflow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (m *Workflow) GetMetadata() *ObjectMetadata { if m != nil { @@ -201,7 +236,7 @@ type WorkflowSpec struct { func (m *WorkflowSpec) Reset() { *m = WorkflowSpec{} } func (m *WorkflowSpec) String() string { return proto.CompactTextString(m) } func (*WorkflowSpec) ProtoMessage() {} -func (*WorkflowSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } +func (*WorkflowSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } func (m *WorkflowSpec) GetName() string { if m != nil { @@ -217,55 +252,96 @@ func (m *WorkflowSpec) GetVersion() string { return "" } -type WorkflowInvocation struct { - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - WorkflowId string `protobuf:"bytes,2,opt,name=workflowId" json:"workflowId,omitempty"` - Status WorkflowInvocation_Status `protobuf:"varint,3,opt,name=status,enum=WorkflowInvocation_Status" json:"status,omitempty"` +// Function Invocation Model +type FunctionInvocation struct { + Metadata *ObjectMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"` + Spec *FunctionInvocationSpec `protobuf:"bytes,2,opt,name=spec" json:"spec,omitempty"` + Status *FunctionInvocationStatus `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"` } -func (m *WorkflowInvocation) Reset() { *m = WorkflowInvocation{} } -func (m *WorkflowInvocation) String() string { return proto.CompactTextString(m) } -func (*WorkflowInvocation) ProtoMessage() {} -func (*WorkflowInvocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } +func (m *FunctionInvocation) Reset() { *m = FunctionInvocation{} } +func (m *FunctionInvocation) String() string { return proto.CompactTextString(m) } +func (*FunctionInvocation) ProtoMessage() {} +func (*FunctionInvocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } -func (m *WorkflowInvocation) GetId() string { +func (m *FunctionInvocation) GetMetadata() *ObjectMetadata { if m != nil { - return m.Id + return m.Metadata + } + return nil +} + +func (m *FunctionInvocation) GetSpec() *FunctionInvocationSpec { + if m != nil { + return m.Spec + } + return nil +} + +func (m *FunctionInvocation) GetStatus() *FunctionInvocationStatus { + if m != nil { + return m.Status + } + return nil +} + +type FunctionInvocationSpec struct { + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` +} + +func (m *FunctionInvocationSpec) Reset() { *m = FunctionInvocationSpec{} } +func (m *FunctionInvocationSpec) String() string { return proto.CompactTextString(m) } +func (*FunctionInvocationSpec) ProtoMessage() {} +func (*FunctionInvocationSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +func (m *FunctionInvocationSpec) GetName() string { + if m != nil { + return m.Name } return "" } -func (m *WorkflowInvocation) GetWorkflowId() string { +func (m *FunctionInvocationSpec) GetId() string { if m != nil { - return m.WorkflowId + return m.Id } return "" } -func (m *WorkflowInvocation) GetStatus() WorkflowInvocation_Status { +type FunctionInvocationStatus struct { + Status FunctionInvocationStatus_Status `protobuf:"varint,1,opt,name=status,enum=FunctionInvocationStatus_Status" json:"status,omitempty"` + UpdatedAt *google_protobuf.Timestamp `protobuf:"bytes,2,opt,name=updatedAt" json:"updatedAt,omitempty"` +} + +func (m *FunctionInvocationStatus) Reset() { *m = FunctionInvocationStatus{} } +func (m *FunctionInvocationStatus) String() string { return proto.CompactTextString(m) } +func (*FunctionInvocationStatus) ProtoMessage() {} +func (*FunctionInvocationStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func (m *FunctionInvocationStatus) GetStatus() FunctionInvocationStatus_Status { if m != nil { return m.Status } - return WorkflowInvocation_UNKNOWN + return FunctionInvocationStatus_UNKNOWN } -// Util -type Empty struct { +func (m *FunctionInvocationStatus) GetUpdatedAt() *google_protobuf.Timestamp { + if m != nil { + return m.UpdatedAt + } + return nil } -func (m *Empty) Reset() { *m = Empty{} } -func (m *Empty) String() string { return proto.CompactTextString(m) } -func (*Empty) ProtoMessage() {} -func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - +// Workflow Invocation Model type WorkflowInvocationSpec struct { - WorkflowId string `protobuf:"bytes,2,opt,name=workflowId" json:"workflowId,omitempty"` + WorkflowId string `protobuf:"bytes,1,opt,name=workflowId" json:"workflowId,omitempty"` } func (m *WorkflowInvocationSpec) Reset() { *m = WorkflowInvocationSpec{} } func (m *WorkflowInvocationSpec) String() string { return proto.CompactTextString(m) } func (*WorkflowInvocationSpec) ProtoMessage() {} -func (*WorkflowInvocationSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } +func (*WorkflowInvocationSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } func (m *WorkflowInvocationSpec) GetWorkflowId() string { if m != nil { @@ -282,7 +358,7 @@ type WorkflowInvocationStatus struct { func (m *WorkflowInvocationStatus) Reset() { *m = WorkflowInvocationStatus{} } func (m *WorkflowInvocationStatus) String() string { return proto.CompactTextString(m) } func (*WorkflowInvocationStatus) ProtoMessage() {} -func (*WorkflowInvocationStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } +func (*WorkflowInvocationStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } func (m *WorkflowInvocationStatus) GetStatus() WorkflowInvocationStatus_Status { if m != nil { @@ -307,7 +383,7 @@ type WorkflowInvocationContainer struct { func (m *WorkflowInvocationContainer) Reset() { *m = WorkflowInvocationContainer{} } func (m *WorkflowInvocationContainer) String() string { return proto.CompactTextString(m) } func (*WorkflowInvocationContainer) ProtoMessage() {} -func (*WorkflowInvocationContainer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } +func (*WorkflowInvocationContainer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } func (m *WorkflowInvocationContainer) GetMetadata() *ObjectMetadata { if m != nil { @@ -330,87 +406,63 @@ func (m *WorkflowInvocationContainer) GetStatus() *WorkflowInvocationStatus { return nil } -// TODO decide on these > -type ObjectMetadata struct { - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // string namespace = 2; - // string name = 3; - CreatedAt *google_protobuf.Timestamp `protobuf:"bytes,3,opt,name=createdAt" json:"createdAt,omitempty"` -} - -func (m *ObjectMetadata) Reset() { *m = ObjectMetadata{} } -func (m *ObjectMetadata) String() string { return proto.CompactTextString(m) } -func (*ObjectMetadata) ProtoMessage() {} -func (*ObjectMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ObjectMetadata) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *ObjectMetadata) GetCreatedAt() *google_protobuf.Timestamp { - if m != nil { - return m.CreatedAt - } - return nil -} - func init() { + proto.RegisterType((*ObjectMetadata)(nil), "ObjectMetadata") proto.RegisterType((*Workflow)(nil), "Workflow") proto.RegisterType((*WorkflowSpec)(nil), "WorkflowSpec") - proto.RegisterType((*WorkflowInvocation)(nil), "WorkflowInvocation") - proto.RegisterType((*Empty)(nil), "Empty") + proto.RegisterType((*FunctionInvocation)(nil), "FunctionInvocation") + proto.RegisterType((*FunctionInvocationSpec)(nil), "FunctionInvocationSpec") + proto.RegisterType((*FunctionInvocationStatus)(nil), "FunctionInvocationStatus") proto.RegisterType((*WorkflowInvocationSpec)(nil), "WorkflowInvocationSpec") proto.RegisterType((*WorkflowInvocationStatus)(nil), "WorkflowInvocationStatus") proto.RegisterType((*WorkflowInvocationContainer)(nil), "WorkflowInvocationContainer") - proto.RegisterType((*ObjectMetadata)(nil), "ObjectMetadata") proto.RegisterEnum("WorkflowEvent", WorkflowEvent_name, WorkflowEvent_value) proto.RegisterEnum("InvocationEvent", InvocationEvent_name, InvocationEvent_value) - proto.RegisterEnum("WorkflowInvocation_Status", WorkflowInvocation_Status_name, WorkflowInvocation_Status_value) + proto.RegisterEnum("FunctionInvocationStatus_Status", FunctionInvocationStatus_Status_name, FunctionInvocationStatus_Status_value) proto.RegisterEnum("WorkflowInvocationStatus_Status", WorkflowInvocationStatus_Status_name, WorkflowInvocationStatus_Status_value) } func init() { proto.RegisterFile("pkg/types/types.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 585 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x52, 0xcf, 0x4e, 0xdb, 0x4c, - 0x1c, 0xc4, 0x06, 0x12, 0xf2, 0x0b, 0x24, 0xd6, 0x7e, 0x7c, 0xe0, 0x52, 0xa9, 0xa5, 0x3e, 0x21, - 0x90, 0x1c, 0x35, 0xbd, 0xe4, 0xd0, 0x8b, 0xb1, 0x97, 0x62, 0x25, 0xd8, 0xe9, 0xda, 0x69, 0x24, - 0xa4, 0x2a, 0x72, 0xe2, 0x25, 0x72, 0x21, 0xb6, 0x15, 0x6f, 0x82, 0x78, 0xa5, 0xbe, 0x4a, 0x1f, - 0xa0, 0x4f, 0xd1, 0x77, 0xa8, 0xb2, 0xfe, 0x43, 0xd2, 0x80, 0x50, 0x0f, 0xbd, 0x58, 0xde, 0xd9, - 0xd9, 0xd9, 0x9d, 0xf9, 0x0d, 0xfc, 0x1f, 0xdf, 0x8e, 0x1b, 0xec, 0x21, 0xa6, 0x49, 0xfa, 0x55, - 0xe3, 0x69, 0xc4, 0xa2, 0xa3, 0xb7, 0xe3, 0x28, 0x1a, 0xdf, 0xd1, 0x06, 0x5f, 0x0d, 0x67, 0x37, - 0x0d, 0x16, 0x4c, 0x68, 0xc2, 0xbc, 0x49, 0x9c, 0x12, 0x94, 0x6b, 0xd8, 0xe9, 0x47, 0xd3, 0xdb, - 0x9b, 0xbb, 0xe8, 0x1e, 0x9d, 0xc1, 0xce, 0x84, 0x32, 0xcf, 0xf7, 0x98, 0x27, 0x0b, 0xc7, 0xc2, - 0x49, 0xb5, 0x59, 0x57, 0xed, 0xe1, 0x37, 0x3a, 0x62, 0x57, 0x19, 0x4c, 0x0a, 0x02, 0x7a, 0x07, - 0x5b, 0x49, 0x4c, 0x47, 0xb2, 0xc8, 0x89, 0x7b, 0x6a, 0xae, 0xe2, 0xc4, 0x74, 0x44, 0xf8, 0x96, - 0xf2, 0x11, 0x76, 0x97, 0x51, 0x84, 0x60, 0x2b, 0xf4, 0x26, 0x94, 0x6b, 0x57, 0x08, 0xff, 0x47, - 0x32, 0x94, 0xe7, 0x74, 0x9a, 0x04, 0x51, 0xc8, 0x95, 0x2a, 0x24, 0x5f, 0x2a, 0x3f, 0x05, 0x40, - 0xf9, 0x71, 0x33, 0x9c, 0x47, 0x23, 0x8f, 0x05, 0x51, 0x88, 0x6a, 0x20, 0x06, 0x7e, 0x26, 0x21, - 0x06, 0x3e, 0x7a, 0x03, 0x70, 0x9f, 0xb3, 0xfc, 0x4c, 0x63, 0x09, 0x41, 0x4d, 0x28, 0x25, 0xcc, - 0x63, 0xb3, 0x44, 0xde, 0x3c, 0x16, 0x4e, 0x6a, 0xcd, 0x23, 0x75, 0x5d, 0x54, 0x75, 0x38, 0x83, - 0x64, 0x4c, 0xe5, 0x2b, 0x94, 0x52, 0x04, 0x55, 0xa1, 0xdc, 0xb3, 0xda, 0x96, 0xdd, 0xb7, 0xa4, - 0x0d, 0xb4, 0x07, 0x15, 0x47, 0xbf, 0xc4, 0x46, 0xaf, 0x83, 0x0d, 0x49, 0x40, 0x75, 0xa8, 0x9a, - 0xd6, 0xa0, 0x4b, 0xec, 0x4f, 0x04, 0x3b, 0x8e, 0x24, 0xf2, 0xfd, 0x9e, 0xae, 0x63, 0x6c, 0x60, - 0x43, 0xda, 0x44, 0x00, 0xa5, 0x0b, 0xcd, 0x5c, 0x70, 0xb7, 0x16, 0x3a, 0xda, 0xb9, 0x4d, 0x5c, - 0x6c, 0x48, 0xdb, 0x4a, 0x19, 0xb6, 0xf1, 0x24, 0x66, 0x0f, 0x4a, 0x0b, 0x0e, 0xd6, 0x1f, 0xc3, - 0xa3, 0x7a, 0xc1, 0x95, 0xf2, 0x4b, 0x00, 0xf9, 0x89, 0xa3, 0xe9, 0xa3, 0x5b, 0x85, 0x65, 0x81, - 0x5b, 0x3e, 0x56, 0x9f, 0xa3, 0xfe, 0x61, 0x1c, 0xb5, 0xa0, 0x32, 0x8b, 0x7d, 0x8f, 0x51, 0x5f, - 0x63, 0xd9, 0x64, 0x8f, 0xd4, 0xb4, 0x42, 0x6a, 0x5e, 0x21, 0xd5, 0xcd, 0x2b, 0x44, 0x1e, 0xc9, - 0xff, 0x3a, 0xb2, 0xef, 0x02, 0xbc, 0x5e, 0x37, 0xa1, 0x47, 0x21, 0xf3, 0x82, 0x90, 0x4e, 0xff, - 0xae, 0xba, 0x67, 0x2b, 0xd5, 0x3d, 0x54, 0x9f, 0x9e, 0x41, 0x5a, 0x62, 0xf4, 0x7e, 0xa5, 0x3f, - 0xd5, 0xe6, 0xab, 0x67, 0xc3, 0x2c, 0xea, 0x73, 0x0d, 0xb5, 0xd5, 0xbb, 0xd7, 0x4a, 0xdb, 0x82, - 0xca, 0x68, 0x4a, 0xb3, 0x9c, 0x37, 0x5f, 0xce, 0xb9, 0x20, 0x9f, 0x7e, 0x86, 0xbd, 0xfc, 0x7e, - 0x3c, 0xa7, 0x21, 0x43, 0xfb, 0x20, 0xf5, 0x6d, 0xd2, 0xbe, 0xe8, 0xd8, 0xfd, 0x81, 0x4e, 0xb0, - 0xb6, 0xc8, 0x6b, 0x63, 0x05, 0xed, 0x75, 0x0d, 0x8e, 0x0a, 0x2b, 0xa8, 0x81, 0x3b, 0x78, 0x81, - 0x8a, 0xa7, 0x3f, 0x04, 0xa8, 0x3f, 0x7a, 0x49, 0x55, 0x25, 0xd8, 0x75, 0x35, 0xa7, 0x3d, 0x70, - 0x5c, 0x8d, 0xa4, 0x8a, 0x05, 0xd2, 0x36, 0xbb, 0x5d, 0xae, 0x86, 0xa0, 0xc6, 0x91, 0x4b, 0xac, - 0x11, 0xf7, 0x1c, 0x6b, 0xae, 0x24, 0x16, 0xd8, 0xf2, 0x50, 0xeb, 0x50, 0xe5, 0x58, 0x31, 0xd9, - 0x5c, 0xaa, 0x18, 0x2f, 0x3a, 0x00, 0x64, 0x5a, 0x5f, 0x6c, 0x5d, 0x73, 0x4d, 0xdb, 0x2a, 0x6c, - 0x94, 0x90, 0x0c, 0xfb, 0xcb, 0xb8, 0x7d, 0xd5, 0x4d, 0x1f, 0x5d, 0x46, 0x87, 0xf0, 0xdf, 0xf2, - 0x8e, 0x66, 0xe9, 0x78, 0x21, 0xbe, 0x33, 0x2c, 0xf1, 0xfc, 0x3e, 0xfc, 0x0e, 0x00, 0x00, 0xff, - 0xff, 0x63, 0x33, 0xe6, 0xbd, 0x11, 0x05, 0x00, 0x00, + // 610 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x53, 0xcf, 0x4e, 0xdb, 0x4c, + 0x1c, 0xc4, 0x86, 0xcf, 0x90, 0x5f, 0x20, 0xb1, 0xf6, 0xa3, 0xe0, 0x52, 0xa9, 0xa5, 0x3e, 0x21, + 0x90, 0x8c, 0x4a, 0x2f, 0x1c, 0xb8, 0x18, 0x7b, 0x29, 0x56, 0xc0, 0x4e, 0xd7, 0x4e, 0x23, 0x21, + 0x55, 0xc8, 0x38, 0x0b, 0x32, 0x10, 0xdb, 0x8a, 0x37, 0xa0, 0x3e, 0x4e, 0xaf, 0x7d, 0x95, 0x3e, + 0x4b, 0x5f, 0xa0, 0xa7, 0xca, 0xeb, 0x3f, 0x49, 0x4a, 0xac, 0xaa, 0x6a, 0x7b, 0x89, 0xbc, 0xb3, + 0x93, 0xf9, 0xcd, 0xce, 0xce, 0xc2, 0xb3, 0xe4, 0xee, 0x66, 0x9f, 0x7d, 0x4a, 0x68, 0x9a, 0xff, + 0x6a, 0xc9, 0x28, 0x66, 0xf1, 0xd6, 0xab, 0x9b, 0x38, 0xbe, 0xb9, 0xa7, 0xfb, 0x7c, 0x75, 0x35, + 0xbe, 0xde, 0x67, 0xe1, 0x90, 0xa6, 0xcc, 0x1f, 0x26, 0x39, 0x41, 0xbd, 0x80, 0x96, 0x73, 0x75, + 0x4b, 0x03, 0x76, 0x4e, 0x99, 0x3f, 0xf0, 0x99, 0x8f, 0x5a, 0x20, 0x86, 0x03, 0x45, 0xd8, 0x16, + 0x76, 0x1a, 0x44, 0x0c, 0x07, 0xe8, 0x10, 0x1a, 0xc1, 0x88, 0xfa, 0x8c, 0x0e, 0x74, 0xa6, 0x2c, + 0x6e, 0x0b, 0x3b, 0xcd, 0x83, 0x2d, 0x2d, 0x97, 0xd5, 0x4a, 0x59, 0xcd, 0x2b, 0x65, 0xc9, 0x84, + 0xac, 0x5e, 0xc0, 0x4a, 0x3f, 0x1e, 0xdd, 0x5d, 0xdf, 0xc7, 0x8f, 0x68, 0x0f, 0x56, 0x86, 0xc5, + 0x04, 0xae, 0xdd, 0x3c, 0x68, 0x6b, 0xb3, 0x83, 0x49, 0x45, 0x40, 0xaf, 0x61, 0x29, 0x4d, 0x68, + 0xa0, 0x88, 0x9c, 0xb8, 0xa6, 0x95, 0x2a, 0x6e, 0x42, 0x03, 0xc2, 0xb7, 0xd4, 0x23, 0x58, 0x9d, + 0x46, 0x11, 0x82, 0xa5, 0xc8, 0x1f, 0xd2, 0xc2, 0x37, 0xff, 0x46, 0x0a, 0x2c, 0x3f, 0xd0, 0x51, + 0x1a, 0xc6, 0x11, 0x57, 0x6a, 0x90, 0x72, 0xa9, 0x7e, 0x16, 0x00, 0x9d, 0x8c, 0xa3, 0x80, 0x85, + 0x71, 0x64, 0x45, 0x0f, 0x71, 0xe0, 0x67, 0x5f, 0xbf, 0x67, 0x72, 0x6f, 0xc6, 0xe4, 0xa6, 0xf6, + 0x54, 0x6f, 0x62, 0x17, 0xbd, 0x01, 0x29, 0x65, 0x3e, 0x1b, 0xa7, 0x45, 0x82, 0xcf, 0xe7, 0xd1, + 0x39, 0x81, 0x14, 0x44, 0xf5, 0x08, 0x36, 0xe6, 0x4b, 0xce, 0x3d, 0x6b, 0x7e, 0x6b, 0x62, 0x79, + 0x6b, 0xea, 0x77, 0x01, 0x94, 0xba, 0x11, 0xe8, 0xb0, 0x72, 0x93, 0x49, 0xb4, 0x0e, 0xb6, 0x6b, + 0xdd, 0x68, 0xb3, 0xa6, 0xb2, 0x32, 0x8c, 0x93, 0x41, 0x51, 0x06, 0xf1, 0xd7, 0x65, 0xa8, 0xc8, + 0xea, 0x2d, 0x48, 0xc5, 0xf4, 0x26, 0x2c, 0xf7, 0xec, 0x8e, 0xed, 0xf4, 0x6d, 0x79, 0x01, 0xad, + 0x41, 0xc3, 0x35, 0x4e, 0xb1, 0xd9, 0x3b, 0xc3, 0xa6, 0x2c, 0xa0, 0x36, 0x34, 0x2d, 0xfb, 0xb2, + 0x4b, 0x9c, 0x77, 0x04, 0xbb, 0xae, 0x2c, 0xf2, 0xfd, 0x9e, 0x61, 0x60, 0x6c, 0x62, 0x53, 0x5e, + 0x44, 0x00, 0xd2, 0x89, 0x6e, 0x65, 0xdc, 0xa5, 0x4c, 0x47, 0x3f, 0x76, 0x88, 0x87, 0x4d, 0xf9, + 0xbf, 0x6c, 0xe1, 0x76, 0xac, 0x6e, 0x17, 0x9b, 0xb2, 0xa4, 0x1e, 0xc2, 0x46, 0x59, 0x8e, 0x9f, + 0xa2, 0x7b, 0x09, 0xf0, 0x58, 0xee, 0x94, 0x25, 0x9f, 0x42, 0xd4, 0x6f, 0x02, 0x28, 0x73, 0xfe, + 0x5a, 0x17, 0x5b, 0x1d, 0xf5, 0xef, 0xc5, 0xf6, 0xf1, 0x9f, 0xc6, 0xa6, 0x7e, 0x11, 0xe0, 0xc5, + 0xd3, 0x43, 0x18, 0x71, 0xc4, 0xfc, 0x30, 0xa2, 0xa3, 0x3f, 0x7b, 0x11, 0xf3, 0xef, 0xa0, 0xf6, + 0x45, 0xd4, 0x85, 0x59, 0xa6, 0xb8, 0xfb, 0x1e, 0xd6, 0x4a, 0x0e, 0x7e, 0xa0, 0x11, 0x43, 0xeb, + 0x20, 0xf7, 0x1d, 0xd2, 0x39, 0x39, 0x73, 0xfa, 0x97, 0x06, 0xc1, 0x7a, 0x76, 0xa6, 0x85, 0x19, + 0xb4, 0xd7, 0x35, 0x39, 0x2a, 0xcc, 0xa0, 0x26, 0x3e, 0xc3, 0x19, 0x2a, 0xee, 0x7e, 0x15, 0xa0, + 0x3d, 0x99, 0x97, 0xab, 0xca, 0xb0, 0xea, 0xe9, 0x6e, 0xe7, 0xd2, 0xf5, 0x74, 0x92, 0x2b, 0x56, + 0x48, 0xd1, 0x30, 0x01, 0x21, 0x68, 0x71, 0xe4, 0x14, 0xeb, 0xc4, 0x3b, 0xc6, 0xba, 0x27, 0x8b, + 0x15, 0x36, 0x1d, 0x7c, 0x1b, 0x9a, 0x1c, 0xab, 0xd2, 0x2f, 0xa5, 0x26, 0xcd, 0xdd, 0x00, 0x64, + 0xd9, 0x1f, 0x1c, 0x43, 0xf7, 0x2c, 0xc7, 0xae, 0x8e, 0x21, 0x21, 0x05, 0xd6, 0xa7, 0x71, 0xe7, + 0xbc, 0x9b, 0x9b, 0x5e, 0x46, 0x9b, 0xf0, 0xff, 0xf4, 0x8e, 0x6e, 0x1b, 0x38, 0x13, 0x5f, 0xb9, + 0x92, 0x78, 0x97, 0xde, 0xfe, 0x08, 0x00, 0x00, 0xff, 0xff, 0x27, 0x60, 0x21, 0x68, 0x0d, 0x06, + 0x00, 0x00, } diff --git a/pkg/types/types.proto b/pkg/types/types.proto index 59079cba..0f3b99eb 100644 --- a/pkg/types/types.proto +++ b/pkg/types/types.proto @@ -2,33 +2,16 @@ syntax = "proto3"; import "google/protobuf/timestamp.proto"; -message Workflow { - ObjectMetadata metadata = 1; - WorkflowSpec spec = 2; - // TODO add internals -} - -message WorkflowSpec { - string name = 1; - string version = 2; -} - -message WorkflowInvocation { // TODO move to SPEC and STATUS +// Common +message ObjectMetadata { string id = 1; - string workflowId = 2; - enum Status { - UNKNOWN = 0; - SCHEDULED = 1; - IN_PROGRESS = 2; - SUCCEEDED = 3; - FAILED = 4; - ABORTED = 5; - } - Status status = 3; -// repeated Log logs = 4; - // TODO more about status + // string namespace = 2; + // string name = 3; + google.protobuf.Timestamp createdAt = 3; } + +// Event Types enum WorkflowEvent { WORKFLOW_CREATED = 0; WORKFLOW_UPDATED = 1; @@ -47,11 +30,48 @@ enum InvocationEvent { INVOCATION_CANCELED = 8; // origin: User/Engine } -// Util -message Empty {} +// Workflow Model +message Workflow { + ObjectMetadata metadata = 1; + WorkflowSpec spec = 2; + // TODO add internals +} +message WorkflowSpec { + string name = 1; + string version = 2; +} + +// Function Invocation Model +message FunctionInvocation { + ObjectMetadata metadata = 1; + FunctionInvocationSpec spec = 2; + FunctionInvocationStatus status = 3; +} + +message FunctionInvocationSpec { + string name = 1; + string id = 2; +} + +message FunctionInvocationStatus { + enum Status { + UNKNOWN = 0; + SCHEDULED = 1; // Arrived at engine, but not yet schedu + IN_PROGRESS = 2; // Scheduled + SUCCEEDED = 3; + FAILED = 4; + ABORTED = 5; + SKIPPED = 6; + } + Status status = 1; + google.protobuf.Timestamp updatedAt = 2; +} + + +// Workflow Invocation Model message WorkflowInvocationSpec { - string workflowId = 2; + string workflowId = 1; } message WorkflowInvocationStatus { @@ -73,12 +93,3 @@ message WorkflowInvocationContainer { WorkflowInvocationSpec spec = 2; WorkflowInvocationStatus status = 3; } - - -// TODO decide on these > -message ObjectMetadata { - string id = 1; -// string namespace = 2; -// string name = 3; - google.protobuf.Timestamp createdAt = 3; -} From 15d9379e8e31345fff59710465a9fdb362992a4e Mon Sep 17 00:00:00 2001 From: erwinvaneyk Date: Mon, 31 Jul 2017 14:48:50 -0700 Subject: [PATCH 13/24] Set NATS url and clusterId through env --- build/Dockerfile | 3 ++ build/build-linux.sh | 2 + build/docker.sh | 11 +++++ build/fission-workflow.yaml | 38 +++++++++++++++++ build/workflow-engine | Bin 0 -> 12437634 bytes cmd/fission-workflow/fission-workflow.go | 50 ++++++++++++++++++++++- cmd/workflow-engine/app/bootstrap.go | 20 +++++++-- cmd/workflow-engine/workflow-engine.go | 35 +++++++++++++++- pkg/api/function.go | 11 +++-- 9 files changed, 158 insertions(+), 12 deletions(-) create mode 100644 build/Dockerfile create mode 100755 build/build-linux.sh create mode 100755 build/docker.sh create mode 100644 build/fission-workflow.yaml create mode 100755 build/workflow-engine diff --git a/build/Dockerfile b/build/Dockerfile new file mode 100644 index 00000000..77e4d5bf --- /dev/null +++ b/build/Dockerfile @@ -0,0 +1,3 @@ +FROM alpine + +ADD workflow-engine /workflow-engine diff --git a/build/build-linux.sh b/build/build-linux.sh new file mode 100755 index 00000000..261d681c --- /dev/null +++ b/build/build-linux.sh @@ -0,0 +1,2 @@ +#!/bin/sh +GOOS=linux GOARCH=386 go build github.com/fission/fission-workflow/cmd/workflow-engine/ diff --git a/build/docker.sh b/build/docker.sh new file mode 100755 index 00000000..065f9bb0 --- /dev/null +++ b/build/docker.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -e +set -x + +if [ ! -f ./workflow-engine ]; then + echo "Executable './workflow-engine' not found!" + exit 1; +fi + +docker build --tag="fission/fission-workflow" . diff --git a/build/fission-workflow.yaml b/build/fission-workflow.yaml new file mode 100644 index 00000000..f515db68 --- /dev/null +++ b/build/fission-workflow.yaml @@ -0,0 +1,38 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: workflow-engine + namespace: fission +spec: + replicas: 1 + template: + metadata: + labels: + svc: workflow-engine + spec: + containers: + - name: workflow-engine + image: fission/fission-workflow + command: ["/workflow-engine"] + imagePullPolicy: IfNotPresent + env: + - name: EVENT_STORE_URL + value: nats://nats-streaming:4222 + - name: EVENT_STORE_CLUSTER + value: fissionMQTrigger +--- +apiVersion: v1 +kind: Service +metadata: + name: workflow-engine + namespace: fission + labels: + svc: workflow-engine +spec: + type: NodePort + ports: + - port: 80 + targetPort: 8080 + nodePort: 31319 + selector: + svc: workflow-engine diff --git a/build/workflow-engine b/build/workflow-engine new file mode 100755 index 0000000000000000000000000000000000000000..d9063ba1f8b648e794aab28de3e115b06c7029ca GIT binary patch literal 12437634 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 z zeNT&W_z~c1zP=R0UxFp*wW;H#p`hx?ma>;3PNO-!(fLv*m!~qDLq&& z+_VM6nALIn$}C=KZQplb;=uJ};=m|r1ke09uL5X?!_04N9NLxx4){1Rc;mX6whYnq zqznbpa`H;9J?Q=)m?PVsc&ZSVu607HV>y8c{d75b4A*uDOBW=Qax%1^WHw7qq(ls` zQYj~P*}i6~B`0=<%gUgf7*}luAIzjkWR3sr>G8kH9{=8%d=S#0p#DH4cqc#O+F0KFeI zHDkx}SbIyFA1(o{EmcTbJB{uy;tV22X8C%E7V1OSsC_kDLK~5001F7fYxG=-minAfOap+Uq zi8viHXPk{|Vpv#()=OfanC@OZ&YqauEYVAr2%-eWLTZ}Te`3iS7T6`Zd?V@u7E9tG zsq>5|dFk)$l3iKyZM1|UqSYy))!Wh+%|dJ)#uG?29u_EH__kdcW|hOZTo?$(8}EbQ zKeT>)FABpRwAz^f`rtQ-$5koXK0(+~a~H$9ncJL;?}o>&z!4mn`-vQglX0$Do@K=# zAf^Bh)AT}l5j2f%F0T2E>#k4JK1ZxCgph~xE8%9)43jS>v@rI+5a-JUlVt0wSB1U` z-Jp@|4y_K>HqHv;13A-x;XQXE7aua1hAv>&pehGLkm_H!9(T>^nqcZCmRFUiH_^^|S zEs`9@1E7G3?L^#_TQj093*ajA5z~gLBc}0E^Pymd>48{JrD0AT>LLb-4;p*6!83|; zaop|wg^l9zgnhC=5zu{Ri-Kho^f~p2?*4v&U0U2(wts=J{zk7wht36YOkKuDHorav z_@+&4_eVf)8ZG-n@jy738=L%@tv`U^a-8;E+0#@b@3*^9?stf5po-V5f>s>Hd(X1u zt7#=6hItxF8dC(2{BpY|$Fag0vM2M`peKXalWhDS5cvDs5SubWGIuRr4s{IGnsBP{ zW|eD2kKnz>1_Lz~SvHeblF0J{>5BofxNAd==uEnXgX-9ik=lKIoBHTmV z*2~2TEf!cdOOg`{#cPWe9iHoOrZj9rypn8a_ z!{{;7iRJ6~feUAxqQtrDMekOJ63Qa~AU#;8pV9ahmUrep@xIUDh@#Z=Et)%s8ISYd zttfq-0~yNQo1h|aOtHR6sUMG@7`9#xU3@`e`(oV99{#cu8o^G){DO7-#*#Q!#2c$h z;|E+bZoyu~z6VB5@yu*)ZSCcl`KiOPo5wuga5zE^eeQAi*T-27e=eQJ3}FozBjxc* z=sX;!fhI&CtrRz(;gNT-x)@a*K17Z~4#d2J>H(11YHs=i>KdGv*?}X>q(7r9u-n+5 z1isr#M;nF#GErl0sW1Sdv_ufxn8UR$ zE}R(}PJQU^#mj8t%!?f3bA&OB=;K0KDMOYzF&;-?!8lcBShE4~HsZ|aE;GoAc8!~u zu@}Z3n9`cTMU4^6_z)T7%aCv!g~~FDn8ElFY||+=Uc!nUPQ0Fzz-V^bt+-fcH8PCT zM2BjgwMFeDqW9VTWN3Vor5A3Rm-Vm~3_pd-|J#fd5aN0#A-}_gb1A3$%fNY zlt(*~PcvKJhd?*J({s9AR!qZB6Q{=nm=pLJY}u@k{3}JXM)wZe7}sGN4~jMl{$c|< znfR2TEa?YXv1u_*lx#oC_9QmlI>e?$L}zvP>yvHZ!X{iOqqYytKI)9{#94@TMOl0R{T!wS^96l%)XhQ z0O)Rtjh=TjSICM}Q~lb*FQah3kMwI=;1UB#C71Iqgh;bn-72Q31fla|&ku8seqhoNH30~lkRV! z_6P^1c+1pNpBMUx2`4!2i?9Rhaux58pcu3i6kt`=ELuM#^QZ@e0ff zISlGd0@h{<20|FTcyVoK^#Sn)1X2%V_962(4D2^iaSknz&1PfxJ`zVA@o!@n4;+Fs z&1OYM=se~Nq!z;VPUq$eq|TK{j+BqGNs03rueM`&wC8s|cysluCBUg~yH7#KHwXv-qIp^3!&1 z?z*1GbKj9Ph-jk%dR`|8wojWJEZ(ccUqOam-N^~T_wR4M0B;5=y6KKp`+Vv~-_7F;Pu^_bGz-64H!uaXu4fwe6Zd6oRbW_og8`Yb*XoxG! z)(bhx3N(Op>7c`d_zX*O6@<^W#X6>60koh=zXZ%Y+!3KPP(|Tl)(e$5Kk1@X-_I|n z_`!lko*Y&#`1!RFG=#kT645pcg0g5((T(W%QOcs_{E|@#(twd%>v7ld!_*vmYB$)t zq9uq~$UGHdEH*!C0>}~V|FHHZ@KsgU9)A+|dv7M}d;ib>pU)@voU_NZ*Is+=wbx#I?dsXmTS#E=|H7J^OjhGxC^F5xrm%8z zB)Y<0v)$W3&YcyP+)96(c&l?~ggc&0cMZoYeac& zC&FK075>M6q*$6w`1j5aCd%es7r%Yi!u=x4w6-jj=~O{^w`$uU=ivpwV1zPB*a(#=3kUm_e(YBhNd(tFNRzeAdTseS|$FrFu_i7v~b3yke` z*^B)EZJ;#)+luImW80oXlu5%dJ?Ed4%+PLH!IAqOVuie_eQmt%3;1uM#M|5-{F6*& zt?rziJRSRrZccOTvnd0R7Pg5?v=*=C{n3`JHhE7PpUB-qTGsOJni*U|Is;J|LgOlo zNn~w~kl3vm@*Q_DHL%kR)9tL>5^35IW>i#75+U~lk~>2%@PcX!T}RTk2o}aMUe2c; zBNINEB8xw6Xjmh&vz7qc4s%wjqEByQe`qzD}RU>3{qY&@_YVo~JYm3^QM4q(G*EzS9U*pr0`*#yQuL3RJe*6N!(M7vK{VP1QerDCxl4vg zA?KOq2C2-G3jJ$Y zd7J@2{6Rm`;9tRx$~97v9IWsG{-(QW1b53zuN_KlgbTmUeA3? zIdADVf2V#2|C8U!EeZ7yGyX%&G?3tumaG+~AG(4&o9=&AcQ)0Jbi;YJmTox54e!)I zYKi;=KfMjvfF~KydN`pFKq}#ujf?JJ*uB9?(k=XN;D0Uuuk;xk<7PltiLp`cn6zda z`PRc)f3AXZsRSo}y=cx*jjI7P+Rf6>rYMiw@c2wnU+e|m4M;1yR@_1iglDF|y@LDP z>XHds9Xk!0Od^>i)Bo%S)W0VxN&e18R?LjJ$_)+Q{tNP@SVf_;62%ltcX_l95g_S5 z+ixf_pvT(|C`#{XXJZb_VEUZ1p=_0xEnCguIFx3+j#p`6aCgjwSvniI?Db9j_c$AH zB~0n@N8PKr%sbM2GO@9Aen>5uUO3M1uhMC3L>Nt$xv^&$iU*k0kwpeX+xtb|`6M>X zg2YU?m4)|9qwgGx74kCs2!=!Oh1EoP-|yf0UccF$vz09RM}_1+b}^cjrFrKwCFVz# z9*%Z0*FT_`aG-Mu&7jk3F&?UZPBU={Ao-1)b_N^OXFJK>p#0wCobzEUjB{O2Q7&WgHic~mJGg8O0>ielVQD4EfPQQ>5M9%l3ulv1&hplsHUn$Lwd*ZWM?!l9Dnu3`5Nv8F$Tb^#YzPHZ=J>xl!LTL4 z3w>7og~A%DVys(hYI$cI`uzg?Xxr@MTZK`mX3$Lk%V-l4AKVaD$YSuVwJF4zsCMza z0YZC+54CWA@iK6sLwSAl3)8-k*t@_MH>efR*{QA$C{I=ab_t$;HATc*`{w^_;yyBm z0r4|x0L~DZa-&=^=6_C^{ulh;Z}`_52nV_|%?i*xEqbK5?hY?pbxB>O8+y31m5ZC6 zTrB{>d;s8o2ZK)lqJu2}Cx@OzFr;SsAn!~H^};(pxKvsrmTJO$$Upb>uHi(uSfhU( zyD*Uf%YYpEI`Dxpq5J&rpl^-U64skurXA;ezW>Fb-KrgAaX$YGWdD@&`R9T!9}9bR zXtvuZ$;PE!nS5$*iiZ)B|Lq~#9Ri12mr~ZUBoceW6PbGt<1D(TBA8xBQC$DX55G>B zN|po0T>l{ZSZ=69m+|$hq7HvLJ9SBC=DIP7N()8pd1rPa8#&9vI+`Ij9g*l8r#r7i zThn3q1%Ic&wCE=8E%|Kgo8heOOaOUu`TK@~4;4oc7_n!5qn|gp@wPgAn&pND*o92x zt#9|^EBkD|Wc3~@nY~;U2*9-HnojGQ;f+0UVe#y9xuzau(f@P=c*)@+;Lq)Op``Oi?x&4l)q_oq#O zw%9<9SujWt(9W?aQ$~xWJPU}|(DeVv`8UFp);3`L z)@LA$`;vr_c=n=??8w|ZZ9Qv!j1bdwxfZZC)*?;AdFLwb=2emAfxON>B=#4X_b${! zEkzI$ZH_MIvxoGHa=^V~#>LJZGu*F9X3W!4VmhhZYbWZkj-E6NV zoSe?f4y-MH#o;}>l$z2wo-}tDDNTq9fe6+UQ7}b8J_qa~p{^yOe%h_7VlR*(O$qs*oTs&%Z^ET=neoS zO)GeFwpf5S*m9zc_``N%a57shqV7Czuv!(HuCxZO%`5)AiU7gD&U_-?nfB`xNS_x- zAI%6rdTeVd{49lUv+(CM$HlfFoq6F~dhIwrZz=pdF5QdC`ul&S&)-p2bWaG`yBa6k zbcw9c@HYdEu+*7)g08=5_&#B>n!+cfmN=Cib=-o5?+(n8Lh2j8qy_1FzniZOpUO3L zyPV}^9d1s?D((5a%rBRYR&K5v>V{@hN`L0u%2jnIIBO6;pL1(!`S^gd#3S)B+_2kO zV?s>)F@MKR!h(ul0rNAzcK!wbpke1hP(j1+X7g`FeA+c%7C2Za3_HF=|0%0T^^0r9 z4b3mzlVLaUnq4NXeWXkP=Pux^umW|dL;M3IV<<#ij zWO(a0f|_&Vn-xx0sjbM8YxQ-EXFS?%!m2Ni=z_rPxUv50c7#bnTOs8znVjZ;XS$B0$OnKiW1-^N*^kHQfqb1!An&^~Qc?on#}oAU-eAL%sNY z=JDhcRjpe53nAO6ZSA>0-O&H0<$I$7*R_$}`u07AIEmR|SF9zSlXz{bj%#e~2WKG)v=- zKj-&M+Ty1vTGtDfNnJ#A3&}-9-+(tnP&GANN&oi_4@z#=4H;I7W(i{TVr z!Fx4fBY6&?RsJRaW3q-iSl565&# zevJ)j7<61jQn-fCM4o}NX_odRXkF|QNRv@;BMktD?4zw=(HBaw*(7@UtUn@if36&X zePeP|UP+zh6g#qV?LDIcZ6MTu7gx6vCU|6^hJVAAp%clnH z??=DktE?@u^tal2lcV0uMNVN!*&5Qbp*kTr{+#XqI5=V|F}T2)ts=xd{eS!x{C%r0 z{`$fz=95^Haz`~(kgNM`@XvKkx(+jDW^s|_xD1q|yK?QdpR=iTSAo4spT&gDT_Jgl zt8qBxysZC$_0EJMoO!hF&CU9#^}Wojql~~%);71WM1^frF&kRnD9Czc-Zpfq+nh-y zQ7zj(FMx0818`q>u`32%2|cL%#7uCntbHUYMVr|8Kp?-JUv4gNCz<8*WG0xeBY}`Z zgG-tOb*1ufavDuNn|nzcxHw9v3Eo9j(VZa@>w40Y(8IMH&EX1=Fh;fnoEe-$D#9rXL(T_T_ zd}=E3Chdd`6gjc=arc`=YzOWJX&CHr%LE5=*Z(Wn2VAaQz;}y3%GyoQMbV@Bh-Yne zzF7n~nhi_W?=D{BTxvwjC+?avbiHWaZ!ZLd1|cQ4vb7=NT&h)%ral7~T~@NeD+9%1 zo?u1NR*`TMj{Azkr8TK*X`C(b zzxN4@JbU%<1G~7s=E5M|yTyLAb*J;nfi2F)^}FOpyt8;y)^aV6ySLR}{tY3;zu;FOIz3|6dQwlUhsx*K2EYr~C zIo;F^`@XM~Q+r)bd}5F?yL-x&ma?~@$HU+2217gx*^m*oYJHKX6@Id2V%e{vl-%i+fhdxuh;sqHQQyC9h%C@Fcgm zA~_N0+iONPvX9c#3UT=zQ&q_BuB*4r#Ow?T@dqa|NJ$G|wN2Ybg)+N_l&b zQY)rZnTuJJd*R-POR7leUqBN8b_o0l)x_*kDP8(kRPDQL%reM-#U{5G-Zec%nr7aX z7SuGPdrdD`P1pA_x!MS%R8rnO<%5>8_egkxl>V=+xs$JM8(e6{5Gq$^2pTw&F{vphxtdA&Kk+Zyy;8o6>^0_ zp8dM9-Al_ph&;Qlc)gd$C8t+@Wqn*+^W);}&f2o&2`;l<`>JbdGz|hsMQc1G`er}o zyOE-5w4x^Qm3`oTy{dBk)De+qXW?BeQIgY&dCTU=lLr|g7sA|I*T1I=?^}x7BTsJf zLO39Gjyap-58{V;->}a3K7Zmk>wpc9G5mAUWAz^I)2<8nE6%J!4PO8^;!BzUmqFQS z>vw7@T~{p6HX*+SKVIUx$y9J-uO@w&Hk6YI*BEw6i| zclvRi%(u zwl2PpPIJ16$KTp(a*gm&gw!TUr5ZtFr1M(*uTtCwuGrZ2(qg=nns(#kj(Xw;+N_=; z)pN3k;JAhCdC|6z^BR-zs-V8t3vFk;7iETs^D6Ep;2JDmPB=@6M{O zJUsQ*XiI2JmirrOpv;b)Mai%O^|vlsk1qxKc=#6rmtqZ&1{I6*Rv(mzDhVaT-^RZpQT9X3hBp=VYtSed1?8O?= zO0~&}yKm>bDM@UEY3-OlHt^*bX-MX9M`^ZcjptOh)qTkg{Y>f{t}LtEUYF&3Fsvo^ zTjiZl%lE#d^6nky10(#H4EO!huhQUAgBgGv`fzdzZ7R5o&T4@wH9j&npu!n>g zPG8d{l^KO()6IpITk4898+T?^WNE3a1sYC`wibd_xIiL)>P|@-e-Y)-?h=L^UP(y1 zd{IMa?XI}IKw-3=BYXG)Jo$efasgw(?DS_mDboX@RP+zzRF(0U(qD5ggglM19wbTp z^~6e7N^p)Xq}hJ^aEy1GKSRC2DzYllOAj!WOIl>zua0#mg(`Q~opoTjG|vr;tUd`S8x_dIx92x;2CcaK4xBzEB;H{P-~9)Ci) z)Zv521bRpiBH>-j*aCk7B8?Z`xFXddUsQ+u(dKg`ZSYV;ULF$NL;jBx@gbWEUigo_ z=FfW+HHbWZy_LE8$yAvoD)XG1)yV>6;Y9`r7g$lI)Ba}XPo)eza+@hLjpLNnaCe%dFH>Jn%TsB{b!Zul|Vybs~;keBaoeF6%$I` zhn^Q}(TTE&m#2_{aVF<`ZWNNpkef{V#TY~BNkUR8;e0~)F0u>toUW6g{wIDA0i|ds zN4EoInq>v7Gu2I-x+hYC4-q)PVoTsqqu@tO-m$@3c?>R@b5ZZwH6-5^dr~i=*;71<@sQ;o%MI~K-z3F9IdYeCir15_RY5K(9 zPQQfQnnH)QS3jK~s$5++$el7IefyZm((}AgH{L9Bl;K}a|EO~H)OVcq(Ovxm3q1CD zs)opEDklKUR%HFZyl-?CuZb*e!HC6jg)-9pvNmWbv(542ANj8>0p`1Vz}y=i{AFW5 z72Pw%wZ$!cT8{x)zO4?~&<>TYx*WQljLb%{CC--U8~wQ4q7gcA8}i_5H^Sp)L_0Gh zO^?Hw9ptoG5iU8b;*!Ig2ym~|&ge)I&8$2WiC(CnuZOhOJUl2e4~M&AFB8nRQ>U70 zttX2>(F7o=rGJN1uCKe$8v{ztaki{~TV2Wh)kG9!ZE-#r<80@(BmogcsSst?AQ>5C zpV}%^XLyBK(IeF9Xd$N47_ZVG1eT)dpIiT?ift*DpjVXDmj03oNW@OtrK_c`B$Ly+ zOky%a{o}}!`gWGYpGHJZRkudl_xVc5FQX9PelpUqoDPsV!W|_8j zc+m*0A&IOsM^?TUY5s3bPzmJD3L)TOEznd%V6-zM64hywzw)nHrQ|?+AVTWAn6oLm zD>8ePWR&R9(Db|Pb}kBM%uLT+)}(RYq_(zN&|$( zTUqs#wKB7EZ(SKVCeQzjbNF&(W!`UOY!hj>aoi$Jxv{SAF)#$O^S<2=I>WpmN81l_ zU+CueuQA5E4CmIQEDh+Rvv^0=VbEIcjT|6obf*2r<3MER7rFlYpyE;fT&rplE#LxE zm`+i*CICRWH$2n3>Y%e(8BABCK<5~j>}_-o+x0G9c>Y5vCS45P{HAMdral_mD-m!= ziT~#LHeqLiy9$7ooHfb++_yDNKi*3{H-ov~UynRTJ(C=h9Hf;G`QK8+VIusmTgG?x zq$(Y%N+VV&3X5~Jd^qqC6H4UC-CS55_v&qUb*Dua@KOK#5%(pMM(nTSq%` z*YC_~+$Ab>-Vm1APpzV@oF5Ea$Af2-+#@uyHW`kCKh5+x(M8i*Eh?!6Pkr9ICRw z{lOz1Jl+Z(+wAe2V2HIN!6f`Z_|29z0c}za;4;qf z8}YCDmd11SKU2fA7_=lyCYTE*{WOcwZnPY$;#%!$N$LFd7URv*@E4l5odTIarBy}d&E)}F@ETS(ePt;3=gluoo20I1 zG-$UciCdo8D$~cx+;B=y%M(dK<=VPoJkd#JpV)Zl=iEmxse%2SDDFGF@K?W)YA%QI z()>b91EGNMh4wi16?+^A9<@Q>Z9fDR$*tGE?Vs9T?VkykTp&<_3;CGloAmWeNh1$u zGd%4z?q5`x@vMm@Qjbw4MqixSmdLf)3(XF4 z^|M^tkhhcKKv2LZ&W0$H{5PQ!ReQ_#xpOL8lK4&DZ$wRSXzjeC%eRon)+vFD|f0N zSWf4qP5UB9Ov-t?vkp5SU95Y3$u!y71YXo@F|#jQ?R?}M#$)r2=$nz*t4%18OjJReNinA#Slp)IrpQU)IN2c;h~&dwm&l7Cc}eu`dy}Fsl3Ug$04_hUypc-lPxY?p zPy2HduserE3tZf+Ipd{a>p%yvQpgNvd-TnFlXA?Ftn~+0TK=49t8T5p@Wj~~*YRjv z-)}Y1e3lq!KnWl((tK2`X(m{YIY+OgGsc2?@hPbVGDmO;v&ZWMxjn4b)-<8Draq&kG zK_0{xY5s(UW0V+a*2dv;gZTLis1q-dQ52Z4VaE2TEm&rj)U%HICN<;+J@`75A*nfW{%1`mO1t0`KLRFMmw+3C()G$38~vlt`b&5$Q1Q7cDu8h0C__w0l^eo_uJ;z zr+vlgD_R$Cu=;GZvaWb{)_x-wx&e}@?;;r;jUpu1*&p8-JrMEyTn{jd8Fjk|nW|98;;u_MeYl#^?^RbAkyEYVK- zyptD$jE*{sk3v$0 zD~1v|O0)D^elf&QCc`6ExUKPikjE70?H0QCJT@NE$YUD=FBP|Dz2^8;&I&QAE1We| zoN#zAIfQ9_Nsw#$DrYrJF<7@x8x>i4eOhAqb!BlJY4-hKB(5vonswNlh=x<%cr{9s z+=TTMtJ~O}2#<)rhvVCwqqMp-xt5sXShKym`yp#Xiv{UNQCW~8lvo!wy=w^g&$Q^< z5%2C#dL!XIAb2NOwpzJaDz23Ly3O&$f2fe-6h;bbd9reS?1>jk%0d2s$YA#ZGI2&;UD8*7Rqzi0c=eOqy0MY=NV- zf7kTA{++KD??^)XdhwC0c)AvElbmg+-FBOZ#Ts;VJT6$x|B*q2n|5xwh zEPdpYY4unDdC6lb{!jiW8{GwO1t!VgD~8&TGR5am(#!D)#$MMv19cLjJMhNL`ixGP zjj8*Bm*29G`0?}exTI~&%$PstHIl*NMCsyAobbSs@CEFlktaq7x+#q2-txkgQr2Tv1+>j2K& zJi}l)#8`?u|6N1mQr326Bs2Xyup-((YI{!5b=!cnkAePDEV5 z9<^L^1OT${a4{OL$g{N-m87Vh7`)xltQ6WEFEHw9vEd`!CsT$muiDdI7+J`ZrTo!7b> z-0`z90JlbNZ78Y|j^rk28%^R|tCTjJLCw}fn7^ZCf;Ykt&~$kVII?n$PPtD+1ppa?-rk?4mZ3CBg}Ni&#zV(S|@ zkW*4{7CipkC#}+I2h!O3By<;khMgcI?4x`c!((8!snxHSzC02z-{Cl*7BU9sHTJtEJ_};oy4LCW}9zEZ--9iYtROu z#lz(5sH+!qRJ(Y8^Siv_nr(a5#^988F6G%QZrfCnb!48Y*7$?Q_Ba|;4#G{fYWqVkx0i1ux8@kyW7;Ac3#DoAvpe79kpd;BV6ySmz&)4RPd{5)uH>=VlLe|WBS zM}HhD$JUu9tuMcPUxRm#)XPQYPtxD=JAN<=mA9${FXi}@~+KIP=WuYod#%8s?8eH zA-^zabBPZ5N_|;y;0+BF-twHb)`O=Hd$(-c^VFU;sErevUT7e(nauOzMpSxq07o_M zW_Iwewx)aGFFl>2&=Ruw+}fZi?!#H2x+Z_#`r?Q5n*Rj>``s7lg2zDwt*jbl z7a$dI(qbiCc~93xmDN2X9Z-v8Eb z0}2@=&N-VDs?@6~7g6Ncj3g9gQK&%^^i92pIG1|;G>AA=n@Z)rc;pJ<&wp{dm1gNS z)4?f`O(iJ>gVm;Jf9rbFdKRW@mR8ZJ$wv1#g#5b`C8atp2>$jC7V%@Xz6yWkvQ#r| zL$tt}>Cc`C${+28^1k@)pxuGK3nB<1K}4c|Ac)%vg8AFDUS58}HKE-Ep&2epnt&D( zN2CR;w7J=7>HgxEtn~$KJ%bmF6Arv@5)}(}X7vl*YqMF@d7%N$MYZ_*5iZ}_U`Wm+ zc?k3iL*PO>(@eiWC+&g{jM;{R2(#Pp3NAOfIDg-Pm=mQQLzS=eaXcsSfV zmt|%JtNT3v>i;&l3V=eKyaa=22~ZqqEouXSJoSgw)H3($_Cmti-pXYB2uu%|S=-7;48U6mi5`UURg?5>O-(PJ$+1gCY z5?(Zjwr-{OGLb4|s+xU9@I-{M(;>3UO!Mzb)Io)uS`Lm0)=i5Z%BjCFdT@Z<05(Jk zt^4<2(%^*~&P$m!UZ5f_8HYZ2^kwGy50NU(&;J<^uJr$Ash^*m8ZUBI;}(^7z^=Fa+DZ;8smt%=PB7#Q8bx+PS3uwk^* z;pXdz#^ue+8w#8EH%QcmMvTQEHK+OWey-J*&Vjz4lWO`Yih0*G!}KM+LDC}iN~XDL zxSBj_gMf?w#5wFF?IF6QIag^!CW&;cxpQr;fZNYxkyTwqrgbYab}3zs0mbKdNWQ`M z!~0OG|MGN5M+dMIvqbOlGOa3@8*;t*ot#j?Zy`t&Letk6wy=K)MPa0Nj;2ibH#C?H zc%!TxclozbMf}%^@)OpTfJ;L}^CADYN34& z%VPyN?MdNFpvEXuwZDBDpgfTP#U6dyd*i<^|F|RQ%ajl31*y@a6?$UKa8C#&5iMzvwt^X>?|!26MS+^fDZ)X>I*{uWjLB7XELlJ}z#)k6327G44Y39KxZN?jZO} zkU?TTcf?{N&dZ&_mi|V^rw<0!iNE$aX*?@wS?FISZRT2LDQfs zUwr~Q^>QpP()QY)8TcVWv&BnspS7L;t^Q`*S%2F7N7KG03*K;tx#+5gLKz8GV$ z84Wv|V5~dOP3v0mWyIGf1P{EqK0>#PwZHl_7Xm!*e^(VQIxfG(Mv^k4dq#GF?M9QqU5U}Q#lL)z_4AaJ^3Y7dQN@skgu@B>qKY15lr1=cOoD&JP7P7d zaFj>Qy8zU=Jmh}0RKt!veJJUW1_`Ni4NW+4<_|cuM$j54n}6a+@6t)ux0=@Ho4vWS&8mPp3vXKp%oR1$7*%-4D6B(W0TwUYp&yQOFX{>ke zzve1Rb2>0Wx|8wQjpY66zmb7fnz=m?8e$!xMu}3GvTOUR>l$7y$^Vi7S^U*&?_td*#a|a4po*5{l zXMnp}jp3tVNm@0*$T~IBd>`N3Cn+t_WWCC64ECB4WMh(#G;L;BD!j5I($uDR`ERQ= z9|Mo_8CiO5+!P&!StSN7(6H%-D`By*+t*xAx=zI-KF-Y)t>C>0|6_hQk9+r8Z+1P63x^f85HsJt@hav+NtvV@>I}13n}2?AMBBzukE+PK!2hf-Cau zyI5h)YbBv>3Rc0K7fZt*<{x#50mjp4qpxZ`b~?9$MnCQ>-tT1(#3=9M%H6Yuxs`CM zD&1=tS$b~{@3_hPa;I|)>KggggzHRwRJj+XAFJFw^EGiP|0emSn<=vnf9E_rE`*A*%vdN{+y3uPYX#@mbZvo-MvD=F7{DiMbeAV!rtZv{rg$xrNWW>MUrgcDlo4@q4 zqL$}M$Q?ToX3sU~k?7l}FKRq^>Y_-~YXtL}w+M>Aqm;Xh!m;%lcG`hW4qcoBje97V z{kR#6Lr3ay`Vrc!i9H?+(puGd$3R;fXg;ifL^SZLm5@>Ae>D-O@Z{u~f8JvZ2zH7z zPn`iIB(CN=o2PWdT&(%G^~_`}!AMb{nT#T}KrZrMyU$K8l~P`blbE@_U#_OYl>9q` z+Sq<;I1_MdplQmib+0YLX=k%kTNn@~o3M*Pt2U_#6UT}A{=J^HT>7Y@Wa+MzPLlDYV9+!MgJyhU&`jVtUU>P_t-)CE!na?XTK|n! zsh3#^E}b8{E>PUh^m61Pl1pB0XPcYrOHc;0Ygpm5;aR`GJ8mTBGRJcACHSi5>nrZK zn&4|JU*+z&+Td$EUuU?^X6ivee*s}|GqT$ z&f3cTb=x9K?;N?9v%HHN*1309MV8)m{*tDaCG}-xTbnGMNPBnuZABdqV*mAgB}u90{VN_YMiWw(KKYI)Hlg442f|-t@_prh@jKxB zLEif6mm_l#+`)GN^jhdbn2{z9L?MG`GtY6`V*Qug0lHNfV+Q<|;B14Ly$DBVGSe!G z$|slxSV;Ww=h$3;_PqF8?u0yy!oJ7$vYO%6hS< z=N6Q0b$HYkxCQCF$)Sgp?FM7J*{)S!L9J0>CjJt5mi|? zBMv~PhyP#*$_`dIu&zROnHW3+or`kYFUm_JExVbuV&9aiRoBCRA_wW>JN;2eQ@C8{ zHOQ8r;_x4|s8BDL@ng?Y_xOMQHWfj;9Mtqu*@bJe>W^RCEKG z{5m;u7VU)PAlgaHLk}Uo;QEnCjo+MQ?Emu2pJZMnC*URW22O*^F?7;@zP-@c-xf9mTc+$D_ti1NHLcvOByTt@=Gk!Epa!*=&cxK{FD_no& z%`|r)N&4y=@1m_y^#;Kx{wXKH{ zA5U$KotULdPfP?7W&kIfN1DGk=ysV2tqKqoltiT-{`-xz?yPRDGkl<{O|5#O`5oAAid#>c0zi7(%oVt@hNT* zg(;%5kwdZgySkNNVM}~tS7-9p7k_hEV?_5%potUP)t5=fob98nOWH>pD%wW}lfvj= zPDq|D)wZjSm50XYD2MF7S zoeKB;9n}f#Nb`@N9jsEoh8y0ev5i45c6KWc>~cqZsPB5@ZpeKHTF1zf+agaMOFs-l zJYG+h3}FC^xgv_0$zGn5uK~+<&A?Soz71xh4v6KrgPFdjN|2Sy#A(Tc0tU-YCb~YY zyJz|bmltn9$bGOiE5^t}t7;r$aKJJ41ze{^e5u^H&NZzN3-V9EYc4D8;x&Lb(Yd_B zxoD*5RkX00SaLF8_~jT0o^v}Ol!@f6sZBV?<)k#bl7NP$bw3QX)!nWCm zd}>N`TXDR39j|s{<2LnReSb4B;{Mb?fr47qa6VL+EQ`BlT;z@r0tbC$CPh%hcFc@+ z$joR*@iD@7sJtCn2TUgD|Gb(r>|IT!ERAf@L2vs@zu1KoArgd0K&8V2Ubwhhe1NnY zQb?;JRT0=tCBCg&;zVIG7@|zAdP4qX-Qs%}R^#T}FGn~p-HR%7f_x8GRRw*E7Mo^* zh_PNR-iG}?$CvL!~cjoLR11}k90>F)u0h^r;OAJ)t#cP;d1vW^(Jpa zTZX5M-+evW@JU?KaC6 zyD(-T-v1b$DnmJLKPnv6L6??ZW1iAZ2Nga)_n8&{Fo^!-@R| z(#l)NC9z5bl3)}80plq-iei681tjT5$T{l^N!kMfhGA~a1b({75H}=bh}M#>aqZ+7 zKMRYCf%A#6e3=(Lc`fsS?i=Z1*?sx-YS0ngBVEH3kr$Ogq_?=i%r+JR3JmuKn+Z<> z#<^!EVYJi}aW<}s10WKN<>sDg#`_P<23{LPQ`~Xo=IBrC6M8<279mpw5>vpt#u7q1 z_#Iy|9_gx^95s=59EVRNZ^*r7_#nG4)woA<3+!SE3_rm+xX*N3mT`_q^9}G7N*f$- z$bl18YVJ)!tq;q4k>`jYD)$K0ZKn!`5iu|00DLu1z{<_3O0m}oJ4tcVgn&W5$gKg; zA|azExM3TxEgG)%5R?$Py>Xh)w(!CDHxjKUMt;lq1m$*`0svEv^-;PYAo0~{8B~; z{ckJ|P>q(q#FEhqZ|~*GYA`7cmRo2na_sexwHJQ6SE>VOFDOq&eLO~5d2bF;%764q z`3fnmJk2+hmt*BE?Um}+L3uq!1mCCdX#D(|mYw6YW2E7doH@_LNjsI~Wm z+ftZeX2xDJSsv7)^8VAx8_+9N{~%R3L0hD|*wU@&RqqbiB?#%k{RddRgL~Z>|7TJf zUV?D|wncz~AYQ5#efJM3I5AF7^P7|DHDWkz(UtyrOTVudpZj_;JtVGD7g?&_oa1)zA8>v)~HJLQm2I>u)Re6Bk37bhTR)z4!Z@?sMK*UO< zN&m~&VR~YJ#`OB~yYrdy6E-1kO@&)E5(T*3cE7l_copy5X0@Cvl$uW>UC@B&LGFx4 z8Qt?5Sn17o5y-VxdfjBN6ZNW1GEC!W3uh>_NQoW_&l>N~o)YlC93ka0t@Ixyq1n1I zUMp8c7ButiU6ejbvQ%AtAX&MgIV`wQnb)7n;yyIS>A;XUD03!mbua-`{q@{wEZd~S zMOyB41(ll{I0wM?dPcn6l1&(oXomOn%C?3O+o*4^j5d-!y?u=NyEmafzQ+F~WEzk) zvFR)${6DYPKabOb?28L3##4E5CU)T zBe;!|O-KlP%BF{cWaUk1UQLCA{FHM)YdkMsznwUjuw-VEHoU#DG$B>GjVcpNYb>+O z3TbZVX^Uk4HJzGB+Pd3SO{FBQh~ldhfRb6rk>*#g$ViKCC$!v~{}=(FSkj<7xEl~S zicP@!y0WxlwdTU%a_(p4R@Onu5_dvw{zAS7t)&EQ&6T5{c5mlCa+W0~jkX|yGDk@o zeTi4*s2y3yWc1!}3e_jt1}@TKr)!1Dj5`^rpk#2@m|*zG99T!8d1(0;@!rF1Bv86Oxi@N}D~o{#_R_ zYl+T{nTMBYVUhC!zhq}A+M+kpXS}Gl#NBFIgE{&8ly>lk{I-X8@+&~v!*3>2ENM86+Xs)?RyJo{>i~+M)&X+&x%oNnk?BWrvV=9WSdrw*#TMpW4 z+6iYqq9U{Th2Df0|GmA^rd3f1Ba64Oi8p`R*~AXKP37q*4CM)JmgfSTtOgC$Fy}4T z32T6R;R1n4&1C}Y8I0l#N!AcuHZfQYcDALrv56dVN2$^59Ok*B)JP|YU0=4!d4JHc zbh#4A8@LZ^DU0jSZ_dm7isKA`i6czvnkT9MROKZFaH~E3g{l-lT}192%M?~7Cufa* z!~fuy8BD)9>VxhmA)6>W#|<}e!ySaIhyN-B750=fn+r z7p8958y0B6$fO(gxZ=Y=)o>aR>!+GhXt?k*8SpEPFrbyC5lRK)C5hrSWwF$^@7A z2OgNjuLP9l_aIl-NE%H$N!iP9ew{Fg-;)1=gNMlpta&*RxStKiPLkGn+Q9IaynYNU zr%kkx)hG5YV(GV|X2=z3eu2_g+85SJ8c_)tHN^biTS*DX{rg}+UU*1iK)-)E<0kv8 zUVzxhOioNE^#-Iz?7po6vs;xmV9zHH_=n~LEHs>!#K2?B3JDCbCH_CiFs2heG_~6( z>KZvtjt%AT9-7qCRI93>y{cZzgJ4U;tDVAj#<#qjZ+#D;yk?3QHU`EpjnKlC;d%-H zHQgAC^~Wxt_j5+7`APhIFHiVMar;UHI=NP)fbHBn!82pywBeAl+i(N&@KhEpi4zP8u0!za)@Ud%is=8 zCwx#{o%0F5{Upbm7tjVI=t7d3tJK1&hs_GJ} zYGsPGvA0k_;8HAPJFg_5U~ zDu0GP7M480NBSm0e`BGILFg}oQ2epE`G$doC66h7s4C2N z7O6+dtn&231l&(R`Wk{JyZH+QQ{Y#JpoA}x{Fl{$Q7`IuXuWDq_}UpdGx%tv1b1kY zJ|>sUbcd=Nc$?u4l|aB-y*u=Ny@geN*{g#Nb74AuAm^9ms&^5h5jq!0$ukEQPi z0K?ET0SaCS8h?zmO{(aHl13f_kMUy2fYSL+Z-*>q4qOS1KE@}J*7$>j&cINre$YV< zbP*{`M4sHtn-Gz{Ib9v1n(5ba7k_c-s|Rl6Igt_!Gdm~~w>D&0pbYH;_c|lg81DC7 zOp}@dASaiMEn5Lz)KBhUlUpARoDca2-lRc-l(d2rl2OJ524}iXLb7yyD=4c`@!@~! zgVtc}HedNr%P}te2QhvzErb*rO(icXExNaW)W^CD3=-r(jWtZ`26Yf5jG>@DbUJR5 z1RKha$dhYmi~y4UgEWuvN>zr%wR|`7Jy39k{L{NtnY+NM)H;v)bLMLt*=RzR)1Yd% zr3rZvxT{#J=⪚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

_aLD z`{&W}lR6^iqYe4(N~j5y;(?v5A08lzY5MG1N1u&?eGW!IXYuyFQ3Y5H#cq_ZyXHP_ zC+69`Of}*M;ABS=C8zq`EQ=5+y6ysGPtCFmT^CJ3rB!56P`LrG>Nuh@9B*kFFB_jF zf)9oy49C=WhS45Il7rI(N3)geLbK7+06Z7FG)1$WKZuekT~F(FEB~>4Tqy0^E0`WqS z1B1sU+QD$p==8`0nyfNklG!5jF4p3xe_Ksd=uKyRx?`rB-A!bPD3`z4vJHb|?eV9Kn}O_l3ft~IYOco`EW?7N0eOn{HbR!P#6`|z+#RHi?X z(*3j*R1$wXQL?{7Oay^TBjJVvfbK$7JlVEj9jw0@nG`;r`B%5;2zeaYY^?hj?F{Xt zu}*MJIRy87M(0l z-2+ai@)$(ZlmXQV2DP_Ldezk#In`CotQ^SgJuB2-1Uq&Zh6^MVCK3kdg#NQS-Z$>) z>UckvhXnP+OX!(bL$4-PP^SKAuEX5X(LGHD8fof}iktFbxrGWS650^OOoyYmqe`AT zIEmjt;on<73Q>AKH4$=;>mELag-HtLzd@nOP zrXnHSb8O4?->cc3)})6eY}T9h*VrH1l+Kfb56R$(F9QJ(tZ8Pr=d#d>xJj#Ne^^aM z+s!}%zd}#PIBbP`ZZz7sVHWObGTJVcmr!U9`$PKp6V6R$NhX=s>_;e7unTnhI5|tn zls{wI^c4D7wX4G0_ZC|^qq)}H%}Fww8z;?KwZ98*&u{LuYG1??n}UndSbV^5lN34( z&8qLvA)st zXAc<~*u+FKqkLi_nO;6Ik-SpMr-{1Xl@xWD7kO&`Ow{gr5vUDK5p@yyOnGk}=h)gQ zeX}TC6(qouWmzrYf@gkicqEzd9GneL5%1_gM+fB!1fFia3al^RzDe?{rha)=-yfMc{7tfKgon=(X)F(pI_vn&&1sHkz~?mrzZ=Ze|9A4LlIXG z>3MsSK1b{kJQH)lGd?#wl1z9eWW#g#^bB|o%!Ft5;yt0yq+IZf%MFht6P^wIvgmVK zCOjQjp+Hwl(r2$dg69Xx&)M1Vi`8R03EY8m1`5XuI4*r5`rp!8YKECcMeTZK$6) zYVe!;RJC~e)B+yxsKM4eowDe>dzL$~E_IsO2cHnhED&u(1U-*A8Zk3vI}ScwNk@W^ zVb*gKwN7uR!SlgBo$Yml{Qq(`A@;>Dwh({ROZaL zxS95WF^vm(i2uhmmSDK&NTcm#Bw*@qv^|6u_{;mv0<3v4)eF(mRuZ)7ukkWqhu zHR3xw5Svu8)+A}H{{6NzNFvK-Fj|!TCUy2Wu0C1$KeknU`%@ikm-2dIAdRn116!1rO{fS=1;W9YV>1!^#rrtpI|G*VxEW| z)-YWW1_UNQB#ETCqL1*yi*;6;j}1=B5-WfFr7|AK1)1EzO^q8!9gO>NbZ7-3twZkf zZXn`n!c#!z#|bMilfTVBiEQyiL0T@Z+6dGW{6gG$Q%zD9N0xgCE;*x~cL|^c@ekF0 zs5t&)R(%Di%>8nB9^iC!sjYuOrVS}JSZ01>+S?dR^!-=<==8TyEIRWa_)8z*zu*&E zR&(?;oani^L2l{s2l?Mc&dByYM#t4ia<*98Vvrt|yH1ar?7-Z_V=x;zszR@R{Pssj z7DY#Sq7TnUEmnB|PO%ait8$&uaW}G9Hxy$Zu%vA-Y<7?y3C6 zf8A4O>X$^m8TgGo`5U^Y@{RwZch1LO^pdH3n&tGM3Q#ui)TcT&_ZRz^ab-vdfAl^Q z4_i!;Z(S`1bl=8b>=@`dWhjW==*h>f8ru<{6mN*dMA5Ip889#s7F$kcT$yz zPg!b)nVA`mhZv@2xGpopC+KwW;Sy0hFZ1JX@lmyom6d90P3hr2bYjuhVE4BFB=ohn zn;^n7NI>nbCiM7)$Q;NYIocmez0(?Jepw;1CA4!HER?EIcTc|zWt-iiQR7(+&I~s)? zs+RFho8h>{_74e)-TT4fCWqN zn`MTeOm~>S`0wR#r+zHpBRY3J{^E$wR?-mY@Kjb=^mnE9ayPKwT)Pmt)$jE-<2>O}=KFnkb;iE!A2Xy8{>^j_w3b(t$z zxwvLWhi>a=_Edh-#BhoX{!BBb%oHW;u!w3Id!7fGqM)Gxs*%9vXxP-+o|kxqzvfOz z3Ca`h_&O7w)u1^D?2exBZ!{Af&c=Xu#E&$XNl_rM zrVh8~OL4gi(FcrJRz=PE$OefAXaKJUKe!`R%O}B;s^}OZT}qF!fY+n8fK)VXc(dK0 zXufwkU@R=bU&i2JsTg$15{<;Z4vC zz$It~I7qYcJ3uqk8-HC;xl=IKx17EVW$R0xZ|L8|aB0P{ZfF#|&@tU>)wo>x@(FBk zf$Uz(-9M(NE9);3U76w&``vck63PW)uVZ7)#9`Q^>;1;m&r|SO4SfV%Jb*W+i)ZVv z-$8aGTj+&X78U)~{>m+v$Tqo$y)0&QG;?(PwDh&omCgXV+VxK5r^f9+=LZV5CInt_ z9||L!vo3H8qZH1ib_AHMzMwli9|Y$=M!~BuGS`%@oVp_q3~ap?k*S5ZMTqn_IxQZk zD~1!Q=M_iCyGd*D?}3Xf@Wxd!FeO0=-fU5VK2{c;P~cM02}PBv#V}7TKz?30R}onr z>{9O0qVm2S#RqPo=3PAS^g)%YKeVC*0`DF*^gb~|>8R{O)kR2TTsJ>V${ zVsL&9@#ZcP2+glz4^RZokzeYH1z_U{BxJ8QjYLIaSPgp<=O7O>77YsT^o0(Vvx{vT znhNCbV+?Xwl-I?-uCDM-_{!M=aH`XO4aiajK0}gVlw5Wd5Ud2 z<6JH66ZT+QnUo*87G`;I(pYw82-%mo4u2y#&j6iC_W)=f1if?Cq{aX?iG*VdbS8Yp zw1boK?A!+ccTRYe;eaA8yS@(92T;8a?_*2}=*W|oB3bGM_{;ziy6}LJ9EHJ1Pcq;M z5(1{n(FJ&lqN0GYCVnJG8)3)9*Q+}(6j>W8vZllRpoCa5XrHRTNWFJ2@JF9VgY;10 z+0Y6JYXYl?x9(stSie>JJdI#K?4hCTKaLA1OrNi|YSU+?z8ba~+2CahfN1*2N2;io zw4vdTuTuy82^4&Zvc!Mc^qVd8)BZBHecsn-dlk(_w(r%%S+SRW7*8Lc5$*Y-E{8Ef zMa*G}!4;y|33TFelLgCXB8AcmsI6K$OY zx-uQ;!!m#_nYYJ4OI8AXKoV%ifr1%8pw*=hf^}y(tjo#2=Hsv)Zud8$K!Jn_iHApx zP3de%NY>jA^~RscS)VcO7D#MlOFb%UFd>dNV;|3J2S^pSa ze`?j3y?%vyo&&~tZEqTFG%Kup-xsGz_dWQNgh8)~g#yoWr&C&!iHq#FPdI?vMEJ){G>22ZtUI`DQ+-fe5sA+iG#sXiFdhP@ff zqsf=TZMV_hA2b0ecoR89rzn;nMRgV_w2ZKSYN;ULB+uZ^CXk0-q!i&P2t?wL2XOH? zX@hw;rRaZ4tnLWw1Q950h}x^k#^t}d1U?A%Pz#`7|1B51IEy1A81Kdktm@u#WrnU^B7_5Jc~mzZ^i{!Gyza zu95rXQK-ta{jvLg29Q`0Dv7^g+H$%T`UV^#>1hUXkS_uZ!U71*STrp?LFDuaXimr} zW3G_+?LUECjDiXE(BnB;bK5tjupv5CXCQ91 zI5TvEsT1U*RnN83mO4#%08GM{U(C8v2wyIQAG~bO2p{R`7kXA#2-S-*RQ>2&F>sgs zj1PxAuS2{*9!H(=KokQYH-a=;UD}F*2MpV<&KAKlQbmxRIfE?1OHuA1dLVkQP~qWC zL@ge56p8-9ZoF?KIE{(}@{H#2_;oAdoDw)(OmZGOo(MFI0S!7Gzt{Ws&Sb;dtdm!Zn+{R(5+^QZ(qCI}0#6u1{f@0-tBuP%t*=s}#nBaO%`{5BQ^ z4}rt7Z&v8y6xaMyooub|V8>)X6Y}uxry>v3nC|!!F9T364A6|m&314sliKMyT|5i? zC_&Za3lY!bckLzJPuhszr(LA&Uo-G4=^st6S7n?jJ!bk`5NntB4|4SqHa+N60-6CX z+U;&@;3ayuO}s)N?0IUy7jo1Z;iG$-c;T)WhggqABwOs!aqWUOT@1EgYuYg-vvC^!xyA`4XUxzg5y+=yibks$H!qE{qX-_l9yoek>xEmi z3@2joS2Z1MG5{-05WBU|U0`YjFu=XDShhmf$9Il6`r3=uCq7K9XzmL*xgsZZ#TT)h zi{;c`&k!P^J(MjT_R6p~k+Kc=w>(ydX_u>J7SOa)Fc1IYQ>#W1;k6&;8y==5YgN^3%FFI@HiWve9^xF z;1e`~&q-LcL@hb+!G3KPKIgoUz{hC+BPgS-YZ4woz}v%QIW5P7qF1|{&PX6kz@hv+ z>NiW$5Dn%)beeAsRtKJMcU$ZYs#!TU)YTH{{}ensA%$H zJd6bVq%S(edPp*=&U-+t4L0L<(I1){xPFEW9=Ha;W+la*T_pSJ#d0aM7b&P-fWngk z>cKOBryQZpb*(6FfOzI^D92p!o|?x{cSw66WC?BqtFemjijJ8HxtPg_7hZ(G8fMi! zo)?`s9V?g9i@2i6)+lxiDskWAvL?o;e{$c1Pda}?jmXDvwi~r^%`NX-{pI>HV89Kb z>`^$ROrCNumPOUdSB(hWI~ed4`ytWtl4xrQL%Eb!zGg%|;Fqmjqw__J1JSyGyYh{u zh{b4VRVV;3it z*!CFYt6Up88-~K560CQ)N-CB$d8XUT$)>FKrS&;fKrO<>Uz+koYV-ZQqDhJ|SV;St zeDX?;>Q)faXBZ?(xlh&o?M{f$;uI0e?r-11riTm}i?Bl2;tBV-nxQL7xNLcBN$vE|f)(9e(=Ac8A7 zsc8jbxmG+u2anXs8^!^lO^3mWTEi)H_{nZ-ElY#-eqd}CmTOqA*06TJ58+t(B)XHkjLE-}Wb)Zb9>nB+l1!m;lKU|E zKCGUo#yikSKGd69nf;^rD(cr!MeQ4!`Xf%LxALS=AM;01XlfW51Dv=HVh0JD`X&x7 z>70*R`LDK!OOe=BTmZ82pO`Eu;=jWbHD??~t$oz0+W`j+x!vkNu7U3crePW;yN3*i zJ^qDJq?NvGZhc`4(8Gakqk%Ph0<*s(2{TtY)rXf0%wEELVG`y{`We%#-NSoA8oXPv zy9(ku+i(R?YFw=ILBX@j|93E#Oi04aWnXoyhIzaNn9tWRXTsZj`EF>t52JX1db{BC zL(wFsNh2#?X(uz`G#6^raiS}2qE32!1uaeu7R`5>r%wTj~`ma8h4PMVDCDnQi|tK5apUPsl+ZC5_^5HqIU zcI8E+TECi!Hjwv4;@vLcWY?bYj_!j5Ts|(ajjjuQd4pa6LE@~Nc2VjG6a>bWFJ*v`sR-&`svo$za*RE92-P5*Yn zvTGeVG@55a2}&onjt+lDmeOQGfpjA3-v!+-xH<_WdvOl^d7%b!rU@V~O6sEA{cGCp z;XNi*A3;DUC>~o-3e+{9YeC^vxw{gS=wFinYpVWoZj!28iBW&LM5wxPIshJ>25=^Q zo6iJotyA1^T|UKaCMQ&xkl{CNdW6-5m~c6PFGKM%P@ReU;7MDxsRLT)w<&`QUbEV( zAuoSuQ=d+-n+mb12ma^v|MYsh{(=8D_5W!F{%_#_m0kY@|2Or&59>i#{Z;$_ z3H--QvFo3;%lc2m+8Kngh_cEFDb2WkB?)`FD6%wR@ohU$Cqr(rMu)gqZ?M+K(*!h2 zK5w?yuDFNBS>I@P6hYi7-)TB|*eeL6ctRA{iJ!-CKTx5Sui8t1GRFi&oPctk52y;% z2fwlBYw`E6Aovcaa~vNyUB$MBS|*>l-~sU1RD8ZV1^~vcO6{Ak+KNGsYcbH1Zj|5#6b$l(D5Eo6jLsi&(xFnTw;G#iw;PZiY)b+wzc;= zI~i4AbrDg;Z)pR(qjnGPF=B6UJU5&Q&c%z?HqsLz4 zeBWrBpZI#0d_^df;^@^y(Hn~~(Y|LXf{xtNb?7_b%8d-yINBS%x+HqNxAMybuizs; z+8;g77p?YJcBSzObRe%dEy6&pPMDX@t6=hT6FwgxpEa-OUsV#HKkSwGJp7+awoXJ% zG$hIOR}X>e#riNABw1rspbr+TPr!pqJ9NTgvlEf|1#A?gXZ{?9h&nO?vOXmyNhbfB zk3_xD)(#gz7fv(_?59jTV;w^=JKlU7guOGX{DIl!V=c!Z|5MDrDl5N{%pbdM81ns^ z`QCOqQC9w3^?yuw&dXhYIzDN5056$9$G)ya`TcU^lU`o(qg>iTckHhfDF5cvob=%8 zl}*o=(JQivxr2?*V&Se_(*A3MUR zXYnrikzOA=eHMxioUtc}>LdS6eL4B%z!`gSIO-d{`}$Jl>y04tAI1E;maidc^hv`f z_SsP=|H-W=zham4NNw+lqmlnP=Ko>soqHn6|7!Q`?GD~cN$(SPUw%*ITl()8w*Zgq z{+`}`8oy%4mJ@%L+cmw?+fOT>kedrx&yBg;PcNTSo?};1{~VXQe7gMREDtzjLo4OtC;|J=Nt--uD=V*Pt{DqyUv>12e03A&-dNN9eft=F z_sD6mogpxTA*MZ->WtwWaUt+4k?hLPmH&L@PQ#pHcDy@8Kr9@tKNE|V*m$8CGvA_c zq!x2%B90j>x2~Cd^(A)pwB}MY1+9e>^*H64rK{5jCR8fHrN_Nsf~2)J(#b7+(8jfu zYkNwkRJb`{>QEw#jrXK=gHL?Z8bCGI@vg!vnnhuhN7-O)+RAA7Ajkv+lW~^Kr@2-G zLUrwSn5&C&w$mmr8YovuLz=j&V@SY72P$c|`)Z9Nf)`rD_NDD8%Zo-=P7{tQSEF)N zsb-ZxSQ)HzsdJhnrdx{D#JFn8FCOgLk*|+rp}EXPfhJ1ubv&5(J;xr_Rpp41G%D

6ht7_ShvfiP1I1UFrjLzBZLi4Al~3skgt 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 n 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

Vvc5{J4Rt2AH=}?1_vj><#-*8&zYF*3KW=c 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∨gnr`;6ZHw?x;rHuiJ-eD~q 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%0D{8cTutLb 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