diff --git a/glide.lock b/glide.lock index 0fd6311..3384995 100644 --- a/glide.lock +++ b/glide.lock @@ -1,14 +1,10 @@ -hash: 349bd47f888bf6908c68070a40eafd9672b3fa9519619746b6bef2825ee02044 -updated: 2017-08-01T14:47:19.969923243-07:00 +hash: 7a3d5982211b16207e5150a7accc93be5561c92263761ba485f3b81cec951ecc +updated: 2017-08-21T09:15:04.544932218-07:00 imports: - name: github.com/beorn7/perks version: 4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9 subpackages: - quantile -- name: github.com/ContextLogic/gobrubeckclient - version: d4f432c8594db6b27d0282033dc5429b714ca9d5 - subpackages: - - brubeck - name: github.com/ContextLogic/goServiceLookup version: 43a14c585a6f18c18fca4d63ad12dcf8d83388a8 subpackages: @@ -23,6 +19,7 @@ imports: version: 9f174c986221c608fb5143bd623b6076a71feae3 subpackages: - proto + - protoc-gen-go/descriptor - ptypes/any - name: github.com/golang/snappy version: 553a641470496b2327abcac10b36396bd98e45c9 @@ -60,11 +57,11 @@ imports: - name: github.com/satori/go.uuid version: 879c5887cd475cd7864858769793b2ceb0d44feb - name: github.com/segmentio/ksuid - version: e80c9d7e48ddbebf8dae5b155583a3c0d98e7850 + version: 1c9d746aad27142a443654fba83c3b7578dbeba0 - name: github.com/Sirupsen/logrus version: ba1b36c82c5e05c4f912a88eab0dcd91a171688f - name: github.com/soheilhy/cmux - version: bf4a8ede9e87c006fe1d4278c6c7f2b8be1fa84c + version: bb79a83465015a27a175925ebd155e660f55e9f1 - name: github.com/stretchr/testify version: 69483b4bd14f5845b5a1e55bca19e954e827f1d0 subpackages: @@ -113,6 +110,7 @@ imports: - naming - peer - reflection + - reflection/grpc_reflection_v1alpha - stats - status - tap @@ -125,6 +123,10 @@ imports: - config - uritemplates testImports: +- name: github.com/ContextLogic/eventmaster + version: 1b26f96221ee5953fad78270dccd600fcb0a0f82 + subpackages: + - eventmaster - name: github.com/davecgh/go-spew version: 6d212800a42e8ab5c146b8ace3490ee17e5225f9 subpackages: diff --git a/glide.yaml b/glide.yaml index 35e3db6..bd7ebd8 100644 --- a/glide.yaml +++ b/glide.yaml @@ -1,8 +1,5 @@ package: github.com/ContextLogic/eventmaster/src/eventmaster import: -- package: github.com/ContextLogic/gobrubeckclient - subpackages: - - brubeck - package: github.com/Sirupsen/logrus version: ~0.11.5 - package: github.com/jessevdk/go-flags diff --git a/plugin_scripts/eventmaster_pb2.py b/plugin_scripts/eventmaster_pb2.py new file mode 100644 index 0000000..02cd434 --- /dev/null +++ b/plugin_scripts/eventmaster_pb2.py @@ -0,0 +1,1251 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: eventmaster.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='eventmaster.proto', + package='eventmaster', + syntax='proto3', + serialized_pb=_b('\n\x11\x65ventmaster.proto\x12\x0b\x65ventmaster\"\xba\x01\n\x05\x45vent\x12\x10\n\x08\x65vent_id\x18\x01 \x01(\t\x12\x17\n\x0fparent_event_id\x18\x02 \x01(\t\x12\x12\n\nevent_time\x18\x03 \x01(\x03\x12\n\n\x02\x64\x63\x18\x04 \x01(\t\x12\x12\n\ntopic_name\x18\x05 \x01(\t\x12\x0f\n\x07tag_set\x18\x06 \x03(\t\x12\x0c\n\x04host\x18\x07 \x01(\t\x12\x17\n\x0ftarget_host_set\x18\x08 \x03(\t\x12\x0c\n\x04user\x18\t \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\n \x01(\x0c\"\xaf\x03\n\x05Query\x12\n\n\x02\x64\x63\x18\x01 \x03(\t\x12\x0c\n\x04host\x18\x02 \x03(\t\x12\x17\n\x0ftarget_host_set\x18\x03 \x03(\t\x12\x0c\n\x04user\x18\x04 \x03(\t\x12\x12\n\ntopic_name\x18\x05 \x03(\t\x12\x0f\n\x07tag_set\x18\x06 \x03(\t\x12\x17\n\x0fparent_event_id\x18\x07 \x03(\t\x12\x0c\n\x04\x64\x61ta\x18\x08 \x01(\t\x12\x18\n\x10start_event_time\x18\t \x01(\x03\x12\x16\n\x0e\x65nd_event_time\x18\n \x01(\x03\x12\x1b\n\x13start_received_time\x18\x0b \x01(\x03\x12\x19\n\x11\x65nd_received_time\x18\x0c \x01(\x03\x12\x12\n\nsort_field\x18\r \x03(\t\x12\x16\n\x0esort_ascending\x18\x0e \x03(\x08\x12\r\n\x05start\x18\x0f \x01(\x05\x12\r\n\x05limit\x18\x10 \x01(\x05\x12\x10\n\x08\x65vent_id\x18\x11 \x01(\t\x12\x18\n\x10tag_and_operator\x18\x12 \x01(\x08\x12 \n\x18target_host_and_operator\x18\x13 \x01(\x08\x12\x17\n\x0f\x65xclude_tag_set\x18\x14 \x03(\t\"_\n\tTimeQuery\x12\x18\n\x10start_event_time\x18\x01 \x01(\x03\x12\x16\n\x0e\x65nd_event_time\x18\x02 \x01(\x03\x12\r\n\x05limit\x18\x03 \x01(\x05\x12\x11\n\tascending\x18\x04 \x01(\x08\"\x1b\n\x07\x45ventId\x12\x10\n\x08\x65vent_id\x18\x01 \x01(\t\"<\n\x05Topic\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\ntopic_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x61ta_schema\x18\x03 \x01(\x0c\"2\n\x0bTopicResult\x12#\n\x07results\x18\x01 \x03(\x0b\x32\x12.eventmaster.Topic\"M\n\x12UpdateTopicRequest\x12\x10\n\x08old_name\x18\x01 \x01(\t\x12\x10\n\x08new_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x61ta_schema\x18\x03 \x01(\x0c\"(\n\x12\x44\x65leteTopicRequest\x12\x12\n\ntopic_name\x18\x01 \x01(\t\"!\n\x02\x44\x63\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0f\n\x07\x64\x63_name\x18\x02 \x01(\t\",\n\x08\x44\x63Result\x12 \n\x07results\x18\x01 \x03(\x0b\x32\x0f.eventmaster.Dc\"5\n\x0fUpdateDcRequest\x12\x10\n\x08old_name\x18\x01 \x01(\t\x12\x10\n\x08new_name\x18\x02 \x01(\t\"\x1b\n\rWriteResponse\x12\n\n\x02id\x18\x03 \x01(\t\"\x0e\n\x0c\x45mptyRequest\"\x14\n\x12HealthcheckRequest\"\'\n\x13HealthcheckResponse\x12\x10\n\x08response\x18\x01 \x01(\t2\xb1\x06\n\x0b\x45ventMaster\x12<\n\x08\x41\x64\x64\x45vent\x12\x12.eventmaster.Event\x1a\x1a.eventmaster.WriteResponse\"\x00\x12\x37\n\tGetEvents\x12\x12.eventmaster.Query\x1a\x12.eventmaster.Event\"\x00\x30\x01\x12:\n\x0cGetEventById\x12\x14.eventmaster.EventId\x1a\x12.eventmaster.Event\"\x00\x12?\n\x0bGetEventIds\x12\x16.eventmaster.TimeQuery\x1a\x14.eventmaster.EventId\"\x00\x30\x01\x12<\n\x08\x41\x64\x64Topic\x12\x12.eventmaster.Topic\x1a\x1a.eventmaster.WriteResponse\"\x00\x12L\n\x0bUpdateTopic\x12\x1f.eventmaster.UpdateTopicRequest\x1a\x1a.eventmaster.WriteResponse\"\x00\x12L\n\x0b\x44\x65leteTopic\x12\x1f.eventmaster.DeleteTopicRequest\x1a\x1a.eventmaster.WriteResponse\"\x00\x12\x42\n\tGetTopics\x12\x19.eventmaster.EmptyRequest\x1a\x18.eventmaster.TopicResult\"\x00\x12\x36\n\x05\x41\x64\x64\x44\x63\x12\x0f.eventmaster.Dc\x1a\x1a.eventmaster.WriteResponse\"\x00\x12\x46\n\x08UpdateDc\x12\x1c.eventmaster.UpdateDcRequest\x1a\x1a.eventmaster.WriteResponse\"\x00\x12<\n\x06GetDcs\x12\x19.eventmaster.EmptyRequest\x1a\x15.eventmaster.DcResult\"\x00\x12R\n\x0bHealthcheck\x12\x1f.eventmaster.HealthcheckRequest\x1a .eventmaster.HealthcheckResponse\"\x00\x62\x06proto3') +) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_EVENT = _descriptor.Descriptor( + name='Event', + full_name='eventmaster.Event', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='event_id', full_name='eventmaster.Event.event_id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='parent_event_id', full_name='eventmaster.Event.parent_event_id', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='event_time', full_name='eventmaster.Event.event_time', index=2, + number=3, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='dc', full_name='eventmaster.Event.dc', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='topic_name', full_name='eventmaster.Event.topic_name', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tag_set', full_name='eventmaster.Event.tag_set', index=5, + number=6, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='host', full_name='eventmaster.Event.host', index=6, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='target_host_set', full_name='eventmaster.Event.target_host_set', index=7, + number=8, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='eventmaster.Event.user', index=8, + number=9, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='data', full_name='eventmaster.Event.data', index=9, + number=10, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=35, + serialized_end=221, +) + + +_QUERY = _descriptor.Descriptor( + name='Query', + full_name='eventmaster.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='dc', full_name='eventmaster.Query.dc', index=0, + number=1, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='host', full_name='eventmaster.Query.host', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='target_host_set', full_name='eventmaster.Query.target_host_set', index=2, + number=3, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='eventmaster.Query.user', index=3, + number=4, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='topic_name', full_name='eventmaster.Query.topic_name', index=4, + number=5, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tag_set', full_name='eventmaster.Query.tag_set', index=5, + number=6, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='parent_event_id', full_name='eventmaster.Query.parent_event_id', index=6, + number=7, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='data', full_name='eventmaster.Query.data', index=7, + number=8, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='start_event_time', full_name='eventmaster.Query.start_event_time', index=8, + number=9, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='end_event_time', full_name='eventmaster.Query.end_event_time', index=9, + number=10, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='start_received_time', full_name='eventmaster.Query.start_received_time', index=10, + number=11, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='end_received_time', full_name='eventmaster.Query.end_received_time', index=11, + number=12, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='sort_field', full_name='eventmaster.Query.sort_field', index=12, + number=13, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='sort_ascending', full_name='eventmaster.Query.sort_ascending', index=13, + number=14, type=8, cpp_type=7, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='start', full_name='eventmaster.Query.start', index=14, + number=15, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='limit', full_name='eventmaster.Query.limit', index=15, + number=16, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='event_id', full_name='eventmaster.Query.event_id', index=16, + number=17, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tag_and_operator', full_name='eventmaster.Query.tag_and_operator', index=17, + number=18, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='target_host_and_operator', full_name='eventmaster.Query.target_host_and_operator', index=18, + number=19, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='exclude_tag_set', full_name='eventmaster.Query.exclude_tag_set', index=19, + number=20, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=224, + serialized_end=655, +) + + +_TIMEQUERY = _descriptor.Descriptor( + name='TimeQuery', + full_name='eventmaster.TimeQuery', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='start_event_time', full_name='eventmaster.TimeQuery.start_event_time', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='end_event_time', full_name='eventmaster.TimeQuery.end_event_time', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='limit', full_name='eventmaster.TimeQuery.limit', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ascending', full_name='eventmaster.TimeQuery.ascending', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=657, + serialized_end=752, +) + + +_EVENTID = _descriptor.Descriptor( + name='EventId', + full_name='eventmaster.EventId', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='event_id', full_name='eventmaster.EventId.event_id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=754, + serialized_end=781, +) + + +_TOPIC = _descriptor.Descriptor( + name='Topic', + full_name='eventmaster.Topic', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='eventmaster.Topic.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='topic_name', full_name='eventmaster.Topic.topic_name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='data_schema', full_name='eventmaster.Topic.data_schema', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=783, + serialized_end=843, +) + + +_TOPICRESULT = _descriptor.Descriptor( + name='TopicResult', + full_name='eventmaster.TopicResult', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='results', full_name='eventmaster.TopicResult.results', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=845, + serialized_end=895, +) + + +_UPDATETOPICREQUEST = _descriptor.Descriptor( + name='UpdateTopicRequest', + full_name='eventmaster.UpdateTopicRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='old_name', full_name='eventmaster.UpdateTopicRequest.old_name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='new_name', full_name='eventmaster.UpdateTopicRequest.new_name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='data_schema', full_name='eventmaster.UpdateTopicRequest.data_schema', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=897, + serialized_end=974, +) + + +_DELETETOPICREQUEST = _descriptor.Descriptor( + name='DeleteTopicRequest', + full_name='eventmaster.DeleteTopicRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='topic_name', full_name='eventmaster.DeleteTopicRequest.topic_name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=976, + serialized_end=1016, +) + + +_DC = _descriptor.Descriptor( + name='Dc', + full_name='eventmaster.Dc', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='eventmaster.Dc.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='dc_name', full_name='eventmaster.Dc.dc_name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1018, + serialized_end=1051, +) + + +_DCRESULT = _descriptor.Descriptor( + name='DcResult', + full_name='eventmaster.DcResult', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='results', full_name='eventmaster.DcResult.results', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1053, + serialized_end=1097, +) + + +_UPDATEDCREQUEST = _descriptor.Descriptor( + name='UpdateDcRequest', + full_name='eventmaster.UpdateDcRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='old_name', full_name='eventmaster.UpdateDcRequest.old_name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='new_name', full_name='eventmaster.UpdateDcRequest.new_name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1099, + serialized_end=1152, +) + + +_WRITERESPONSE = _descriptor.Descriptor( + name='WriteResponse', + full_name='eventmaster.WriteResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='eventmaster.WriteResponse.id', index=0, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1154, + serialized_end=1181, +) + + +_EMPTYREQUEST = _descriptor.Descriptor( + name='EmptyRequest', + full_name='eventmaster.EmptyRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1183, + serialized_end=1197, +) + + +_HEALTHCHECKREQUEST = _descriptor.Descriptor( + name='HealthcheckRequest', + full_name='eventmaster.HealthcheckRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1199, + serialized_end=1219, +) + + +_HEALTHCHECKRESPONSE = _descriptor.Descriptor( + name='HealthcheckResponse', + full_name='eventmaster.HealthcheckResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='response', full_name='eventmaster.HealthcheckResponse.response', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1221, + serialized_end=1260, +) + +_TOPICRESULT.fields_by_name['results'].message_type = _TOPIC +_DCRESULT.fields_by_name['results'].message_type = _DC +DESCRIPTOR.message_types_by_name['Event'] = _EVENT +DESCRIPTOR.message_types_by_name['Query'] = _QUERY +DESCRIPTOR.message_types_by_name['TimeQuery'] = _TIMEQUERY +DESCRIPTOR.message_types_by_name['EventId'] = _EVENTID +DESCRIPTOR.message_types_by_name['Topic'] = _TOPIC +DESCRIPTOR.message_types_by_name['TopicResult'] = _TOPICRESULT +DESCRIPTOR.message_types_by_name['UpdateTopicRequest'] = _UPDATETOPICREQUEST +DESCRIPTOR.message_types_by_name['DeleteTopicRequest'] = _DELETETOPICREQUEST +DESCRIPTOR.message_types_by_name['Dc'] = _DC +DESCRIPTOR.message_types_by_name['DcResult'] = _DCRESULT +DESCRIPTOR.message_types_by_name['UpdateDcRequest'] = _UPDATEDCREQUEST +DESCRIPTOR.message_types_by_name['WriteResponse'] = _WRITERESPONSE +DESCRIPTOR.message_types_by_name['EmptyRequest'] = _EMPTYREQUEST +DESCRIPTOR.message_types_by_name['HealthcheckRequest'] = _HEALTHCHECKREQUEST +DESCRIPTOR.message_types_by_name['HealthcheckResponse'] = _HEALTHCHECKRESPONSE + +Event = _reflection.GeneratedProtocolMessageType('Event', (_message.Message,), dict( + DESCRIPTOR = _EVENT, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.Event) + )) +_sym_db.RegisterMessage(Event) + +Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _QUERY, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.Query) + )) +_sym_db.RegisterMessage(Query) + +TimeQuery = _reflection.GeneratedProtocolMessageType('TimeQuery', (_message.Message,), dict( + DESCRIPTOR = _TIMEQUERY, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.TimeQuery) + )) +_sym_db.RegisterMessage(TimeQuery) + +EventId = _reflection.GeneratedProtocolMessageType('EventId', (_message.Message,), dict( + DESCRIPTOR = _EVENTID, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.EventId) + )) +_sym_db.RegisterMessage(EventId) + +Topic = _reflection.GeneratedProtocolMessageType('Topic', (_message.Message,), dict( + DESCRIPTOR = _TOPIC, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.Topic) + )) +_sym_db.RegisterMessage(Topic) + +TopicResult = _reflection.GeneratedProtocolMessageType('TopicResult', (_message.Message,), dict( + DESCRIPTOR = _TOPICRESULT, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.TopicResult) + )) +_sym_db.RegisterMessage(TopicResult) + +UpdateTopicRequest = _reflection.GeneratedProtocolMessageType('UpdateTopicRequest', (_message.Message,), dict( + DESCRIPTOR = _UPDATETOPICREQUEST, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.UpdateTopicRequest) + )) +_sym_db.RegisterMessage(UpdateTopicRequest) + +DeleteTopicRequest = _reflection.GeneratedProtocolMessageType('DeleteTopicRequest', (_message.Message,), dict( + DESCRIPTOR = _DELETETOPICREQUEST, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.DeleteTopicRequest) + )) +_sym_db.RegisterMessage(DeleteTopicRequest) + +Dc = _reflection.GeneratedProtocolMessageType('Dc', (_message.Message,), dict( + DESCRIPTOR = _DC, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.Dc) + )) +_sym_db.RegisterMessage(Dc) + +DcResult = _reflection.GeneratedProtocolMessageType('DcResult', (_message.Message,), dict( + DESCRIPTOR = _DCRESULT, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.DcResult) + )) +_sym_db.RegisterMessage(DcResult) + +UpdateDcRequest = _reflection.GeneratedProtocolMessageType('UpdateDcRequest', (_message.Message,), dict( + DESCRIPTOR = _UPDATEDCREQUEST, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.UpdateDcRequest) + )) +_sym_db.RegisterMessage(UpdateDcRequest) + +WriteResponse = _reflection.GeneratedProtocolMessageType('WriteResponse', (_message.Message,), dict( + DESCRIPTOR = _WRITERESPONSE, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.WriteResponse) + )) +_sym_db.RegisterMessage(WriteResponse) + +EmptyRequest = _reflection.GeneratedProtocolMessageType('EmptyRequest', (_message.Message,), dict( + DESCRIPTOR = _EMPTYREQUEST, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.EmptyRequest) + )) +_sym_db.RegisterMessage(EmptyRequest) + +HealthcheckRequest = _reflection.GeneratedProtocolMessageType('HealthcheckRequest', (_message.Message,), dict( + DESCRIPTOR = _HEALTHCHECKREQUEST, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.HealthcheckRequest) + )) +_sym_db.RegisterMessage(HealthcheckRequest) + +HealthcheckResponse = _reflection.GeneratedProtocolMessageType('HealthcheckResponse', (_message.Message,), dict( + DESCRIPTOR = _HEALTHCHECKRESPONSE, + __module__ = 'eventmaster_pb2' + # @@protoc_insertion_point(class_scope:eventmaster.HealthcheckResponse) + )) +_sym_db.RegisterMessage(HealthcheckResponse) + + +try: + # THESE ELEMENTS WILL BE DEPRECATED. + # Please use the generated *_pb2_grpc.py files instead. + import grpc + from grpc.beta import implementations as beta_implementations + from grpc.beta import interfaces as beta_interfaces + from grpc.framework.common import cardinality + from grpc.framework.interfaces.face import utilities as face_utilities + + + class EventMasterStub(object): + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.AddEvent = channel.unary_unary( + '/eventmaster.EventMaster/AddEvent', + request_serializer=Event.SerializeToString, + response_deserializer=WriteResponse.FromString, + ) + self.GetEvents = channel.unary_stream( + '/eventmaster.EventMaster/GetEvents', + request_serializer=Query.SerializeToString, + response_deserializer=Event.FromString, + ) + self.GetEventById = channel.unary_unary( + '/eventmaster.EventMaster/GetEventById', + request_serializer=EventId.SerializeToString, + response_deserializer=Event.FromString, + ) + self.GetEventIds = channel.unary_stream( + '/eventmaster.EventMaster/GetEventIds', + request_serializer=TimeQuery.SerializeToString, + response_deserializer=EventId.FromString, + ) + self.AddTopic = channel.unary_unary( + '/eventmaster.EventMaster/AddTopic', + request_serializer=Topic.SerializeToString, + response_deserializer=WriteResponse.FromString, + ) + self.UpdateTopic = channel.unary_unary( + '/eventmaster.EventMaster/UpdateTopic', + request_serializer=UpdateTopicRequest.SerializeToString, + response_deserializer=WriteResponse.FromString, + ) + self.DeleteTopic = channel.unary_unary( + '/eventmaster.EventMaster/DeleteTopic', + request_serializer=DeleteTopicRequest.SerializeToString, + response_deserializer=WriteResponse.FromString, + ) + self.GetTopics = channel.unary_unary( + '/eventmaster.EventMaster/GetTopics', + request_serializer=EmptyRequest.SerializeToString, + response_deserializer=TopicResult.FromString, + ) + self.AddDc = channel.unary_unary( + '/eventmaster.EventMaster/AddDc', + request_serializer=Dc.SerializeToString, + response_deserializer=WriteResponse.FromString, + ) + self.UpdateDc = channel.unary_unary( + '/eventmaster.EventMaster/UpdateDc', + request_serializer=UpdateDcRequest.SerializeToString, + response_deserializer=WriteResponse.FromString, + ) + self.GetDcs = channel.unary_unary( + '/eventmaster.EventMaster/GetDcs', + request_serializer=EmptyRequest.SerializeToString, + response_deserializer=DcResult.FromString, + ) + self.Healthcheck = channel.unary_unary( + '/eventmaster.EventMaster/Healthcheck', + request_serializer=HealthcheckRequest.SerializeToString, + response_deserializer=HealthcheckResponse.FromString, + ) + + + class EventMasterServicer(object): + + def AddEvent(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetEvents(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetEventById(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetEventIds(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AddTopic(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateTopic(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteTopic(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetTopics(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AddDc(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateDc(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetDcs(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Healthcheck(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + + def add_EventMasterServicer_to_server(servicer, server): + rpc_method_handlers = { + 'AddEvent': grpc.unary_unary_rpc_method_handler( + servicer.AddEvent, + request_deserializer=Event.FromString, + response_serializer=WriteResponse.SerializeToString, + ), + 'GetEvents': grpc.unary_stream_rpc_method_handler( + servicer.GetEvents, + request_deserializer=Query.FromString, + response_serializer=Event.SerializeToString, + ), + 'GetEventById': grpc.unary_unary_rpc_method_handler( + servicer.GetEventById, + request_deserializer=EventId.FromString, + response_serializer=Event.SerializeToString, + ), + 'GetEventIds': grpc.unary_stream_rpc_method_handler( + servicer.GetEventIds, + request_deserializer=TimeQuery.FromString, + response_serializer=EventId.SerializeToString, + ), + 'AddTopic': grpc.unary_unary_rpc_method_handler( + servicer.AddTopic, + request_deserializer=Topic.FromString, + response_serializer=WriteResponse.SerializeToString, + ), + 'UpdateTopic': grpc.unary_unary_rpc_method_handler( + servicer.UpdateTopic, + request_deserializer=UpdateTopicRequest.FromString, + response_serializer=WriteResponse.SerializeToString, + ), + 'DeleteTopic': grpc.unary_unary_rpc_method_handler( + servicer.DeleteTopic, + request_deserializer=DeleteTopicRequest.FromString, + response_serializer=WriteResponse.SerializeToString, + ), + 'GetTopics': grpc.unary_unary_rpc_method_handler( + servicer.GetTopics, + request_deserializer=EmptyRequest.FromString, + response_serializer=TopicResult.SerializeToString, + ), + 'AddDc': grpc.unary_unary_rpc_method_handler( + servicer.AddDc, + request_deserializer=Dc.FromString, + response_serializer=WriteResponse.SerializeToString, + ), + 'UpdateDc': grpc.unary_unary_rpc_method_handler( + servicer.UpdateDc, + request_deserializer=UpdateDcRequest.FromString, + response_serializer=WriteResponse.SerializeToString, + ), + 'GetDcs': grpc.unary_unary_rpc_method_handler( + servicer.GetDcs, + request_deserializer=EmptyRequest.FromString, + response_serializer=DcResult.SerializeToString, + ), + 'Healthcheck': grpc.unary_unary_rpc_method_handler( + servicer.Healthcheck, + request_deserializer=HealthcheckRequest.FromString, + response_serializer=HealthcheckResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'eventmaster.EventMaster', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + class BetaEventMasterServicer(object): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This class was generated + only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0.""" + def AddEvent(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def GetEvents(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def GetEventById(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def GetEventIds(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def AddTopic(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def UpdateTopic(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def DeleteTopic(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def GetTopics(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def AddDc(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def UpdateDc(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def GetDcs(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def Healthcheck(self, request, context): + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + + + class BetaEventMasterStub(object): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This class was generated + only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0.""" + def AddEvent(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + AddEvent.future = None + def GetEvents(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + def GetEventById(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + GetEventById.future = None + def GetEventIds(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + def AddTopic(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + AddTopic.future = None + def UpdateTopic(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + UpdateTopic.future = None + def DeleteTopic(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + DeleteTopic.future = None + def GetTopics(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + GetTopics.future = None + def AddDc(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + AddDc.future = None + def UpdateDc(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + UpdateDc.future = None + def GetDcs(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + GetDcs.future = None + def Healthcheck(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + raise NotImplementedError() + Healthcheck.future = None + + + def beta_create_EventMaster_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This function was + generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0""" + request_deserializers = { + ('eventmaster.EventMaster', 'AddDc'): Dc.FromString, + ('eventmaster.EventMaster', 'AddEvent'): Event.FromString, + ('eventmaster.EventMaster', 'AddTopic'): Topic.FromString, + ('eventmaster.EventMaster', 'DeleteTopic'): DeleteTopicRequest.FromString, + ('eventmaster.EventMaster', 'GetDcs'): EmptyRequest.FromString, + ('eventmaster.EventMaster', 'GetEventById'): EventId.FromString, + ('eventmaster.EventMaster', 'GetEventIds'): TimeQuery.FromString, + ('eventmaster.EventMaster', 'GetEvents'): Query.FromString, + ('eventmaster.EventMaster', 'GetTopics'): EmptyRequest.FromString, + ('eventmaster.EventMaster', 'Healthcheck'): HealthcheckRequest.FromString, + ('eventmaster.EventMaster', 'UpdateDc'): UpdateDcRequest.FromString, + ('eventmaster.EventMaster', 'UpdateTopic'): UpdateTopicRequest.FromString, + } + response_serializers = { + ('eventmaster.EventMaster', 'AddDc'): WriteResponse.SerializeToString, + ('eventmaster.EventMaster', 'AddEvent'): WriteResponse.SerializeToString, + ('eventmaster.EventMaster', 'AddTopic'): WriteResponse.SerializeToString, + ('eventmaster.EventMaster', 'DeleteTopic'): WriteResponse.SerializeToString, + ('eventmaster.EventMaster', 'GetDcs'): DcResult.SerializeToString, + ('eventmaster.EventMaster', 'GetEventById'): Event.SerializeToString, + ('eventmaster.EventMaster', 'GetEventIds'): EventId.SerializeToString, + ('eventmaster.EventMaster', 'GetEvents'): Event.SerializeToString, + ('eventmaster.EventMaster', 'GetTopics'): TopicResult.SerializeToString, + ('eventmaster.EventMaster', 'Healthcheck'): HealthcheckResponse.SerializeToString, + ('eventmaster.EventMaster', 'UpdateDc'): WriteResponse.SerializeToString, + ('eventmaster.EventMaster', 'UpdateTopic'): WriteResponse.SerializeToString, + } + method_implementations = { + ('eventmaster.EventMaster', 'AddDc'): face_utilities.unary_unary_inline(servicer.AddDc), + ('eventmaster.EventMaster', 'AddEvent'): face_utilities.unary_unary_inline(servicer.AddEvent), + ('eventmaster.EventMaster', 'AddTopic'): face_utilities.unary_unary_inline(servicer.AddTopic), + ('eventmaster.EventMaster', 'DeleteTopic'): face_utilities.unary_unary_inline(servicer.DeleteTopic), + ('eventmaster.EventMaster', 'GetDcs'): face_utilities.unary_unary_inline(servicer.GetDcs), + ('eventmaster.EventMaster', 'GetEventById'): face_utilities.unary_unary_inline(servicer.GetEventById), + ('eventmaster.EventMaster', 'GetEventIds'): face_utilities.unary_stream_inline(servicer.GetEventIds), + ('eventmaster.EventMaster', 'GetEvents'): face_utilities.unary_stream_inline(servicer.GetEvents), + ('eventmaster.EventMaster', 'GetTopics'): face_utilities.unary_unary_inline(servicer.GetTopics), + ('eventmaster.EventMaster', 'Healthcheck'): face_utilities.unary_unary_inline(servicer.Healthcheck), + ('eventmaster.EventMaster', 'UpdateDc'): face_utilities.unary_unary_inline(servicer.UpdateDc), + ('eventmaster.EventMaster', 'UpdateTopic'): face_utilities.unary_unary_inline(servicer.UpdateTopic), + } + server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout) + return beta_implementations.server(method_implementations, options=server_options) + + + def beta_create_EventMaster_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This function was + generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0""" + request_serializers = { + ('eventmaster.EventMaster', 'AddDc'): Dc.SerializeToString, + ('eventmaster.EventMaster', 'AddEvent'): Event.SerializeToString, + ('eventmaster.EventMaster', 'AddTopic'): Topic.SerializeToString, + ('eventmaster.EventMaster', 'DeleteTopic'): DeleteTopicRequest.SerializeToString, + ('eventmaster.EventMaster', 'GetDcs'): EmptyRequest.SerializeToString, + ('eventmaster.EventMaster', 'GetEventById'): EventId.SerializeToString, + ('eventmaster.EventMaster', 'GetEventIds'): TimeQuery.SerializeToString, + ('eventmaster.EventMaster', 'GetEvents'): Query.SerializeToString, + ('eventmaster.EventMaster', 'GetTopics'): EmptyRequest.SerializeToString, + ('eventmaster.EventMaster', 'Healthcheck'): HealthcheckRequest.SerializeToString, + ('eventmaster.EventMaster', 'UpdateDc'): UpdateDcRequest.SerializeToString, + ('eventmaster.EventMaster', 'UpdateTopic'): UpdateTopicRequest.SerializeToString, + } + response_deserializers = { + ('eventmaster.EventMaster', 'AddDc'): WriteResponse.FromString, + ('eventmaster.EventMaster', 'AddEvent'): WriteResponse.FromString, + ('eventmaster.EventMaster', 'AddTopic'): WriteResponse.FromString, + ('eventmaster.EventMaster', 'DeleteTopic'): WriteResponse.FromString, + ('eventmaster.EventMaster', 'GetDcs'): DcResult.FromString, + ('eventmaster.EventMaster', 'GetEventById'): Event.FromString, + ('eventmaster.EventMaster', 'GetEventIds'): EventId.FromString, + ('eventmaster.EventMaster', 'GetEvents'): Event.FromString, + ('eventmaster.EventMaster', 'GetTopics'): TopicResult.FromString, + ('eventmaster.EventMaster', 'Healthcheck'): HealthcheckResponse.FromString, + ('eventmaster.EventMaster', 'UpdateDc'): WriteResponse.FromString, + ('eventmaster.EventMaster', 'UpdateTopic'): WriteResponse.FromString, + } + cardinalities = { + 'AddDc': cardinality.Cardinality.UNARY_UNARY, + 'AddEvent': cardinality.Cardinality.UNARY_UNARY, + 'AddTopic': cardinality.Cardinality.UNARY_UNARY, + 'DeleteTopic': cardinality.Cardinality.UNARY_UNARY, + 'GetDcs': cardinality.Cardinality.UNARY_UNARY, + 'GetEventById': cardinality.Cardinality.UNARY_UNARY, + 'GetEventIds': cardinality.Cardinality.UNARY_STREAM, + 'GetEvents': cardinality.Cardinality.UNARY_STREAM, + 'GetTopics': cardinality.Cardinality.UNARY_UNARY, + 'Healthcheck': cardinality.Cardinality.UNARY_UNARY, + 'UpdateDc': cardinality.Cardinality.UNARY_UNARY, + 'UpdateTopic': cardinality.Cardinality.UNARY_UNARY, + } + stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size) + return beta_implementations.dynamic_stub(channel, 'eventmaster.EventMaster', cardinalities, options=stub_options) +except ImportError: + pass +# @@protoc_insertion_point(module_scope) diff --git a/plugin_scripts/eventmaster_pb2_grpc.py b/plugin_scripts/eventmaster_pb2_grpc.py new file mode 100644 index 0000000..fc4f0ac --- /dev/null +++ b/plugin_scripts/eventmaster_pb2_grpc.py @@ -0,0 +1,205 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +import eventmaster_pb2 as eventmaster__pb2 + + +class EventMasterStub(object): + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.AddEvent = channel.unary_unary( + '/eventmaster.EventMaster/AddEvent', + request_serializer=eventmaster__pb2.Event.SerializeToString, + response_deserializer=eventmaster__pb2.WriteResponse.FromString, + ) + self.GetEvents = channel.unary_stream( + '/eventmaster.EventMaster/GetEvents', + request_serializer=eventmaster__pb2.Query.SerializeToString, + response_deserializer=eventmaster__pb2.Event.FromString, + ) + self.GetEventById = channel.unary_unary( + '/eventmaster.EventMaster/GetEventById', + request_serializer=eventmaster__pb2.EventId.SerializeToString, + response_deserializer=eventmaster__pb2.Event.FromString, + ) + self.GetEventIds = channel.unary_stream( + '/eventmaster.EventMaster/GetEventIds', + request_serializer=eventmaster__pb2.TimeQuery.SerializeToString, + response_deserializer=eventmaster__pb2.EventId.FromString, + ) + self.AddTopic = channel.unary_unary( + '/eventmaster.EventMaster/AddTopic', + request_serializer=eventmaster__pb2.Topic.SerializeToString, + response_deserializer=eventmaster__pb2.WriteResponse.FromString, + ) + self.UpdateTopic = channel.unary_unary( + '/eventmaster.EventMaster/UpdateTopic', + request_serializer=eventmaster__pb2.UpdateTopicRequest.SerializeToString, + response_deserializer=eventmaster__pb2.WriteResponse.FromString, + ) + self.DeleteTopic = channel.unary_unary( + '/eventmaster.EventMaster/DeleteTopic', + request_serializer=eventmaster__pb2.DeleteTopicRequest.SerializeToString, + response_deserializer=eventmaster__pb2.WriteResponse.FromString, + ) + self.GetTopics = channel.unary_unary( + '/eventmaster.EventMaster/GetTopics', + request_serializer=eventmaster__pb2.EmptyRequest.SerializeToString, + response_deserializer=eventmaster__pb2.TopicResult.FromString, + ) + self.AddDc = channel.unary_unary( + '/eventmaster.EventMaster/AddDc', + request_serializer=eventmaster__pb2.Dc.SerializeToString, + response_deserializer=eventmaster__pb2.WriteResponse.FromString, + ) + self.UpdateDc = channel.unary_unary( + '/eventmaster.EventMaster/UpdateDc', + request_serializer=eventmaster__pb2.UpdateDcRequest.SerializeToString, + response_deserializer=eventmaster__pb2.WriteResponse.FromString, + ) + self.GetDcs = channel.unary_unary( + '/eventmaster.EventMaster/GetDcs', + request_serializer=eventmaster__pb2.EmptyRequest.SerializeToString, + response_deserializer=eventmaster__pb2.DcResult.FromString, + ) + self.Healthcheck = channel.unary_unary( + '/eventmaster.EventMaster/Healthcheck', + request_serializer=eventmaster__pb2.HealthcheckRequest.SerializeToString, + response_deserializer=eventmaster__pb2.HealthcheckResponse.FromString, + ) + + +class EventMasterServicer(object): + + def AddEvent(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetEvents(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetEventById(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetEventIds(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AddTopic(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateTopic(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteTopic(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetTopics(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AddDc(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateDc(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetDcs(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Healthcheck(self, request, context): + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_EventMasterServicer_to_server(servicer, server): + rpc_method_handlers = { + 'AddEvent': grpc.unary_unary_rpc_method_handler( + servicer.AddEvent, + request_deserializer=eventmaster__pb2.Event.FromString, + response_serializer=eventmaster__pb2.WriteResponse.SerializeToString, + ), + 'GetEvents': grpc.unary_stream_rpc_method_handler( + servicer.GetEvents, + request_deserializer=eventmaster__pb2.Query.FromString, + response_serializer=eventmaster__pb2.Event.SerializeToString, + ), + 'GetEventById': grpc.unary_unary_rpc_method_handler( + servicer.GetEventById, + request_deserializer=eventmaster__pb2.EventId.FromString, + response_serializer=eventmaster__pb2.Event.SerializeToString, + ), + 'GetEventIds': grpc.unary_stream_rpc_method_handler( + servicer.GetEventIds, + request_deserializer=eventmaster__pb2.TimeQuery.FromString, + response_serializer=eventmaster__pb2.EventId.SerializeToString, + ), + 'AddTopic': grpc.unary_unary_rpc_method_handler( + servicer.AddTopic, + request_deserializer=eventmaster__pb2.Topic.FromString, + response_serializer=eventmaster__pb2.WriteResponse.SerializeToString, + ), + 'UpdateTopic': grpc.unary_unary_rpc_method_handler( + servicer.UpdateTopic, + request_deserializer=eventmaster__pb2.UpdateTopicRequest.FromString, + response_serializer=eventmaster__pb2.WriteResponse.SerializeToString, + ), + 'DeleteTopic': grpc.unary_unary_rpc_method_handler( + servicer.DeleteTopic, + request_deserializer=eventmaster__pb2.DeleteTopicRequest.FromString, + response_serializer=eventmaster__pb2.WriteResponse.SerializeToString, + ), + 'GetTopics': grpc.unary_unary_rpc_method_handler( + servicer.GetTopics, + request_deserializer=eventmaster__pb2.EmptyRequest.FromString, + response_serializer=eventmaster__pb2.TopicResult.SerializeToString, + ), + 'AddDc': grpc.unary_unary_rpc_method_handler( + servicer.AddDc, + request_deserializer=eventmaster__pb2.Dc.FromString, + response_serializer=eventmaster__pb2.WriteResponse.SerializeToString, + ), + 'UpdateDc': grpc.unary_unary_rpc_method_handler( + servicer.UpdateDc, + request_deserializer=eventmaster__pb2.UpdateDcRequest.FromString, + response_serializer=eventmaster__pb2.WriteResponse.SerializeToString, + ), + 'GetDcs': grpc.unary_unary_rpc_method_handler( + servicer.GetDcs, + request_deserializer=eventmaster__pb2.EmptyRequest.FromString, + response_serializer=eventmaster__pb2.DcResult.SerializeToString, + ), + 'Healthcheck': grpc.unary_unary_rpc_method_handler( + servicer.Healthcheck, + request_deserializer=eventmaster__pb2.HealthcheckRequest.FromString, + response_serializer=eventmaster__pb2.HealthcheckResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'eventmaster.EventMaster', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/plugin_scripts/flush_to_es.py b/plugin_scripts/flush_to_es.py new file mode 100644 index 0000000..3a13a6c --- /dev/null +++ b/plugin_scripts/flush_to_es.py @@ -0,0 +1,142 @@ +import argparse +from collections import defaultdict +import datetime +import requests +import socket +import sys +import time +import ujson + +from elasticsearch import Elasticsearch +from eventmaster_pb2 import * +from eventmaster_pb2_grpc import * + +BATCH_LIMIT = 200 + +parser = argparse.ArgumentParser(description='Configuration settings') +parser.add_argument('--es_service_name', + help='Service name of elasticsearch client (used for service lookup') +parser.add_argument('--es_ips', nargs='+', help='Ip addresses of elasticsearch') +parser.add_argument('--es_port', help='Port of elasticsearch') +parser.add_argument('--em_addr', help='Addr of Eventmaster server') +parser.add_argument('--start_time', help='Unix timestamp of time to start flushing events') +opts = parser.parse_args() + +if opts.em_addr is None: + sys.stderr.write('No Eventmaster address provided') + sys.exit(1) + +if opts.es_port is None: + sys.stderr.write('Must specify port of Elasticsearch') + sys.exit(1) + +# use service discovery to find ip addrs of elasticsearch +if opts.es_service_name is not None: + try: + resp = requests.get( + "http://169.254.169.254/latest/meta-data/placement/availability-zone", + timeout=5) + dc = resp.content.strip() % "%s." + except Exception as e: + print "Error getting dc", e + print "Using empty string as dc" + dc = "" + service_name = "%s.service.%sconsul." % (opts.es_service_name, dc) + addrs = socket.getaddrinfo(service_name, 80) + ips = list() + for addr in addrs: + sockaddr = addr[4] + ips.append(sockaddr[0]) +elif opts.es_ips is not None: + ips = opts.es_ips +else: + sys.stederr.write('Must provide service name for servicelookup or ip addrs of elasticsearch') + sys.exit(1) + +es = Elasticsearch(hosts=[{'host':ip, 'port':opts.es_port} for ip in ips]) +print [{'host':ip, 'port':opts.es_port} for ip in ips] + +channel = grpc.insecure_channel(opts.em_addr) +stub = EventMasterStub(channel) + +def get_index(event_time): + suffix = datetime.datetime.fromtimestamp(event_time).strftime('%Y-%m-%d') + return "eventmaster-%s" % suffix + +if opts.start_time is not None: + start_time = int(opts.start_time) +else: + # start flushing events from 30 mins ago by default + start_time = int(time.time())-1800 + +while 1: + try: + if int(time.time()) - start_time < 5: + # sleep for 5 seconds to prevent spamming + print "All caught up, sleeping for 5 seconds..." + time.sleep(5) + print "Flushing events from time:", start_time + + ids = list() + cur_end_time=int(time.time()) + for id in stub.GetEventIds(TimeQuery(start_event_time=start_time, + end_event_time=cur_end_time, limit=BATCH_LIMIT, ascending=True)): + ids.append(id.event_id) + print "Retrieved", len(ids), "items" + + indexed_events = defaultdict(list) + for id in ids: + event = {} + result = stub.GetEventById(EventId(event_id=id)) + if result is None: + continue + if isinstance(result, grpc.RpcError): + continue + event['event_id'] = result.event_id + event['topic_name'] = result.topic_name + event['dc'] = result.dc + event['host'] = result.host + event['event_time'] = result.event_time + if result.parent_event_id is not None: + event['parent_event_id'] = result.parent_event_id + if result.tag_set is not None: + event['tag_set'] = list() + for tag in result.tag_set: + event['tag_set'].append(tag) + if result.target_host_set is not None: + event['target_host_set'] = list() + for thost in result.target_host_set: + event['target_host_set'].append(thost) + if result.user is not None: + event['user'] = result.user + if result.data is not None: + event['data'] = ujson.loads(result.data) + + indexed_events[get_index(result.event_time)].append(event) + + # no more elements left in current time frame + if len(ids) < BATCH_LIMIT: + start_time = cur_end_time + + for index, events in indexed_events.iteritems(): + print "Indexing %d events in index %s" % (len(events), index) + if not es.indices.exists(index): + res = es.indices.create(index=index) + print "Create index response:", res + bulk_data = [] + for evt in events: + op_dict = { + "index": { + "_index": index, + "_type": "event", + "_id": evt['event_id'] + } + } + bulk_data.append(op_dict) + bulk_data.append(evt) + start_time = max(start_time, evt['event_time']) + res = es.bulk(index=index, body=bulk_data) + print "Bulk Response:", res + except Exception as e: + sys.stderr.write(str(e)) + break diff --git a/plugin_scripts/makefile b/plugin_scripts/makefile new file mode 100644 index 0000000..ced9f18 --- /dev/null +++ b/plugin_scripts/makefile @@ -0,0 +1,2 @@ +protobuf: + python -m grpc_tools.protoc -I../proto --python_out=. --grpc_python_out=. ../proto/eventmaster.proto diff --git a/proto/eventmaster.pb.go b/proto/eventmaster.pb.go index 29bab1a..7f117d8 100644 --- a/proto/eventmaster.pb.go +++ b/proto/eventmaster.pb.go @@ -11,6 +11,8 @@ It is generated from these files: It has these top-level messages: Event Query + TimeQuery + EventId Topic TopicResult UpdateTopicRequest @@ -150,6 +152,7 @@ type Query struct { SortAscending []bool `protobuf:"varint,14,rep,packed,name=sort_ascending,json=sortAscending" json:"sort_ascending,omitempty"` Start int32 `protobuf:"varint,15,opt,name=start" json:"start,omitempty"` Limit int32 `protobuf:"varint,16,opt,name=limit" json:"limit,omitempty"` + EventId string `protobuf:"bytes,17,opt,name=event_id,json=eventId" json:"event_id,omitempty"` TagAndOperator bool `protobuf:"varint,18,opt,name=tag_and_operator,json=tagAndOperator" json:"tag_and_operator,omitempty"` TargetHostAndOperator bool `protobuf:"varint,19,opt,name=target_host_and_operator,json=targetHostAndOperator" json:"target_host_and_operator,omitempty"` ExcludeTagSet []string `protobuf:"bytes,20,rep,name=exclude_tag_set,json=excludeTagSet" json:"exclude_tag_set,omitempty"` @@ -272,6 +275,13 @@ func (m *Query) GetLimit() int32 { return 0 } +func (m *Query) GetEventId() string { + if m != nil { + return m.EventId + } + return "" +} + func (m *Query) GetTagAndOperator() bool { if m != nil { return m.TagAndOperator @@ -293,6 +303,62 @@ func (m *Query) GetExcludeTagSet() []string { return nil } +type TimeQuery struct { + StartEventTime int64 `protobuf:"varint,1,opt,name=start_event_time,json=startEventTime" json:"start_event_time,omitempty"` + EndEventTime int64 `protobuf:"varint,2,opt,name=end_event_time,json=endEventTime" json:"end_event_time,omitempty"` + Limit int32 `protobuf:"varint,3,opt,name=limit" json:"limit,omitempty"` + Ascending bool `protobuf:"varint,4,opt,name=ascending" json:"ascending,omitempty"` +} + +func (m *TimeQuery) Reset() { *m = TimeQuery{} } +func (m *TimeQuery) String() string { return proto.CompactTextString(m) } +func (*TimeQuery) ProtoMessage() {} +func (*TimeQuery) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +func (m *TimeQuery) GetStartEventTime() int64 { + if m != nil { + return m.StartEventTime + } + return 0 +} + +func (m *TimeQuery) GetEndEventTime() int64 { + if m != nil { + return m.EndEventTime + } + return 0 +} + +func (m *TimeQuery) GetLimit() int32 { + if m != nil { + return m.Limit + } + return 0 +} + +func (m *TimeQuery) GetAscending() bool { + if m != nil { + return m.Ascending + } + return false +} + +type EventId struct { + EventId string `protobuf:"bytes,1,opt,name=event_id,json=eventId" json:"event_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{3} } + +func (m *EventId) GetEventId() string { + if m != nil { + return m.EventId + } + return "" +} + type Topic struct { Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` TopicName string `protobuf:"bytes,2,opt,name=topic_name,json=topicName" json:"topic_name,omitempty"` @@ -302,7 +368,7 @@ type Topic struct { func (m *Topic) Reset() { *m = Topic{} } func (m *Topic) String() string { return proto.CompactTextString(m) } func (*Topic) ProtoMessage() {} -func (*Topic) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } +func (*Topic) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } func (m *Topic) GetId() string { if m != nil { @@ -332,7 +398,7 @@ type TopicResult struct { func (m *TopicResult) Reset() { *m = TopicResult{} } func (m *TopicResult) String() string { return proto.CompactTextString(m) } func (*TopicResult) ProtoMessage() {} -func (*TopicResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } +func (*TopicResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } func (m *TopicResult) GetResults() []*Topic { if m != nil { @@ -350,7 +416,7 @@ type UpdateTopicRequest struct { func (m *UpdateTopicRequest) Reset() { *m = UpdateTopicRequest{} } func (m *UpdateTopicRequest) String() string { return proto.CompactTextString(m) } func (*UpdateTopicRequest) ProtoMessage() {} -func (*UpdateTopicRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } +func (*UpdateTopicRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } func (m *UpdateTopicRequest) GetOldName() string { if m != nil { @@ -380,7 +446,7 @@ type DeleteTopicRequest struct { func (m *DeleteTopicRequest) Reset() { *m = DeleteTopicRequest{} } func (m *DeleteTopicRequest) String() string { return proto.CompactTextString(m) } func (*DeleteTopicRequest) ProtoMessage() {} -func (*DeleteTopicRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } +func (*DeleteTopicRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } func (m *DeleteTopicRequest) GetTopicName() string { if m != nil { @@ -397,7 +463,7 @@ type Dc struct { func (m *Dc) Reset() { *m = Dc{} } func (m *Dc) String() string { return proto.CompactTextString(m) } func (*Dc) ProtoMessage() {} -func (*Dc) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } +func (*Dc) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } func (m *Dc) GetId() string { if m != nil { @@ -420,7 +486,7 @@ type DcResult struct { func (m *DcResult) Reset() { *m = DcResult{} } func (m *DcResult) String() string { return proto.CompactTextString(m) } func (*DcResult) ProtoMessage() {} -func (*DcResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } +func (*DcResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } func (m *DcResult) GetResults() []*Dc { if m != nil { @@ -437,7 +503,7 @@ type UpdateDcRequest struct { func (m *UpdateDcRequest) Reset() { *m = UpdateDcRequest{} } func (m *UpdateDcRequest) String() string { return proto.CompactTextString(m) } func (*UpdateDcRequest) ProtoMessage() {} -func (*UpdateDcRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } +func (*UpdateDcRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } func (m *UpdateDcRequest) GetOldName() string { if m != nil { @@ -460,7 +526,7 @@ type WriteResponse struct { func (m *WriteResponse) Reset() { *m = WriteResponse{} } func (m *WriteResponse) String() string { return proto.CompactTextString(m) } func (*WriteResponse) ProtoMessage() {} -func (*WriteResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } +func (*WriteResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } func (m *WriteResponse) GetId() string { if m != nil { @@ -475,7 +541,7 @@ type EmptyRequest struct { func (m *EmptyRequest) Reset() { *m = EmptyRequest{} } func (m *EmptyRequest) String() string { return proto.CompactTextString(m) } func (*EmptyRequest) ProtoMessage() {} -func (*EmptyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } +func (*EmptyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } type HealthcheckRequest struct { } @@ -483,7 +549,7 @@ type HealthcheckRequest struct { func (m *HealthcheckRequest) Reset() { *m = HealthcheckRequest{} } func (m *HealthcheckRequest) String() string { return proto.CompactTextString(m) } func (*HealthcheckRequest) ProtoMessage() {} -func (*HealthcheckRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } +func (*HealthcheckRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } type HealthcheckResponse struct { Response string `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"` @@ -492,7 +558,7 @@ type HealthcheckResponse struct { func (m *HealthcheckResponse) Reset() { *m = HealthcheckResponse{} } func (m *HealthcheckResponse) String() string { return proto.CompactTextString(m) } func (*HealthcheckResponse) ProtoMessage() {} -func (*HealthcheckResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } +func (*HealthcheckResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } func (m *HealthcheckResponse) GetResponse() string { if m != nil { @@ -504,6 +570,8 @@ func (m *HealthcheckResponse) GetResponse() string { func init() { proto.RegisterType((*Event)(nil), "eventmaster.Event") proto.RegisterType((*Query)(nil), "eventmaster.Query") + proto.RegisterType((*TimeQuery)(nil), "eventmaster.TimeQuery") + proto.RegisterType((*EventId)(nil), "eventmaster.EventId") proto.RegisterType((*Topic)(nil), "eventmaster.Topic") proto.RegisterType((*TopicResult)(nil), "eventmaster.TopicResult") proto.RegisterType((*UpdateTopicRequest)(nil), "eventmaster.UpdateTopicRequest") @@ -530,6 +598,8 @@ const _ = grpc.SupportPackageIsVersion4 type EventMasterClient interface { AddEvent(ctx context.Context, in *Event, opts ...grpc.CallOption) (*WriteResponse, error) GetEvents(ctx context.Context, in *Query, opts ...grpc.CallOption) (EventMaster_GetEventsClient, error) + GetEventById(ctx context.Context, in *EventId, opts ...grpc.CallOption) (*Event, error) + GetEventIds(ctx context.Context, in *TimeQuery, opts ...grpc.CallOption) (EventMaster_GetEventIdsClient, error) AddTopic(ctx context.Context, in *Topic, opts ...grpc.CallOption) (*WriteResponse, error) UpdateTopic(ctx context.Context, in *UpdateTopicRequest, opts ...grpc.CallOption) (*WriteResponse, error) DeleteTopic(ctx context.Context, in *DeleteTopicRequest, opts ...grpc.CallOption) (*WriteResponse, error) @@ -589,6 +659,47 @@ func (x *eventMasterGetEventsClient) Recv() (*Event, error) { return m, nil } +func (c *eventMasterClient) GetEventById(ctx context.Context, in *EventId, opts ...grpc.CallOption) (*Event, error) { + out := new(Event) + err := grpc.Invoke(ctx, "/eventmaster.EventMaster/GetEventById", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eventMasterClient) GetEventIds(ctx context.Context, in *TimeQuery, opts ...grpc.CallOption) (EventMaster_GetEventIdsClient, error) { + stream, err := grpc.NewClientStream(ctx, &_EventMaster_serviceDesc.Streams[1], c.cc, "/eventmaster.EventMaster/GetEventIds", opts...) + if err != nil { + return nil, err + } + x := &eventMasterGetEventIdsClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type EventMaster_GetEventIdsClient interface { + Recv() (*EventId, error) + grpc.ClientStream +} + +type eventMasterGetEventIdsClient struct { + grpc.ClientStream +} + +func (x *eventMasterGetEventIdsClient) Recv() (*EventId, error) { + m := new(EventId) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *eventMasterClient) AddTopic(ctx context.Context, in *Topic, opts ...grpc.CallOption) (*WriteResponse, error) { out := new(WriteResponse) err := grpc.Invoke(ctx, "/eventmaster.EventMaster/AddTopic", in, out, c.cc, opts...) @@ -666,6 +777,8 @@ func (c *eventMasterClient) Healthcheck(ctx context.Context, in *HealthcheckRequ type EventMasterServer interface { AddEvent(context.Context, *Event) (*WriteResponse, error) GetEvents(*Query, EventMaster_GetEventsServer) error + GetEventById(context.Context, *EventId) (*Event, error) + GetEventIds(*TimeQuery, EventMaster_GetEventIdsServer) error AddTopic(context.Context, *Topic) (*WriteResponse, error) UpdateTopic(context.Context, *UpdateTopicRequest) (*WriteResponse, error) DeleteTopic(context.Context, *DeleteTopicRequest) (*WriteResponse, error) @@ -719,6 +832,45 @@ func (x *eventMasterGetEventsServer) Send(m *Event) error { return x.ServerStream.SendMsg(m) } +func _EventMaster_GetEventById_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EventId) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventMasterServer).GetEventById(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/eventmaster.EventMaster/GetEventById", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventMasterServer).GetEventById(ctx, req.(*EventId)) + } + return interceptor(ctx, in, info, handler) +} + +func _EventMaster_GetEventIds_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(TimeQuery) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(EventMasterServer).GetEventIds(m, &eventMasterGetEventIdsServer{stream}) +} + +type EventMaster_GetEventIdsServer interface { + Send(*EventId) error + grpc.ServerStream +} + +type eventMasterGetEventIdsServer struct { + grpc.ServerStream +} + +func (x *eventMasterGetEventIdsServer) Send(m *EventId) error { + return x.ServerStream.SendMsg(m) +} + func _EventMaster_AddTopic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Topic) if err := dec(in); err != nil { @@ -871,6 +1023,10 @@ var _EventMaster_serviceDesc = grpc.ServiceDesc{ MethodName: "AddEvent", Handler: _EventMaster_AddEvent_Handler, }, + { + MethodName: "GetEventById", + Handler: _EventMaster_GetEventById_Handler, + }, { MethodName: "AddTopic", Handler: _EventMaster_AddTopic_Handler, @@ -910,6 +1066,11 @@ var _EventMaster_serviceDesc = grpc.ServiceDesc{ Handler: _EventMaster_GetEvents_Handler, ServerStreams: true, }, + { + StreamName: "GetEventIds", + Handler: _EventMaster_GetEventIds_Handler, + ServerStreams: true, + }, }, Metadata: "eventmaster.proto", } @@ -917,57 +1078,63 @@ var _EventMaster_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("eventmaster.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 831 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x56, 0x5d, 0x4f, 0x13, 0x41, - 0x14, 0xa5, 0x2d, 0xdb, 0x6e, 0xef, 0xf6, 0x03, 0x06, 0x88, 0x4b, 0xa3, 0x81, 0x6c, 0xd4, 0xa0, - 0x51, 0xa2, 0x10, 0xf5, 0x41, 0x5e, 0x30, 0x2d, 0x60, 0xe2, 0x47, 0x5c, 0x30, 0x3c, 0x36, 0x6b, - 0x77, 0x84, 0x0d, 0x6d, 0xb7, 0xee, 0x4e, 0x51, 0xde, 0xfd, 0x0b, 0xfe, 0x13, 0x7f, 0xa0, 0x77, - 0xee, 0xcc, 0x96, 0xdd, 0x6d, 0xa1, 0x24, 0xbe, 0xcd, 0x9c, 0x39, 0xf7, 0x63, 0xce, 0x3d, 0xb3, - 0x59, 0x58, 0xe6, 0x97, 0x7c, 0x28, 0x06, 0x5e, 0x2c, 0x78, 0xb4, 0x3d, 0x8a, 0x42, 0x11, 0x32, - 0x2b, 0x05, 0x39, 0x7f, 0x8a, 0x60, 0x74, 0xe4, 0x9e, 0xad, 0x83, 0x49, 0x07, 0xdd, 0xc0, 0xb7, - 0x0b, 0x9b, 0x85, 0xad, 0xaa, 0x5b, 0xa1, 0xfd, 0x7b, 0x9f, 0x3d, 0x86, 0xe6, 0xc8, 0x8b, 0xe4, - 0xd9, 0x84, 0x51, 0x24, 0x46, 0x5d, 0xc1, 0x1d, 0xcd, 0x7b, 0x00, 0xa0, 0x08, 0x22, 0x18, 0x70, - 0xbb, 0x84, 0x94, 0x92, 0x5b, 0x25, 0xe4, 0x04, 0x01, 0xd6, 0x80, 0xa2, 0xdf, 0xb3, 0x17, 0x29, - 0x12, 0x57, 0x92, 0x2e, 0xc2, 0x51, 0xd0, 0xeb, 0x0e, 0x3d, 0xa4, 0x1b, 0x84, 0x57, 0x09, 0xf9, - 0x84, 0x00, 0xbb, 0x07, 0x15, 0xe1, 0x9d, 0x75, 0x63, 0x2e, 0xec, 0xf2, 0x66, 0x09, 0xcf, 0xca, - 0xb8, 0x3d, 0xe6, 0x82, 0x31, 0x58, 0x3c, 0x0f, 0x63, 0x61, 0x57, 0x28, 0x82, 0xd6, 0xb2, 0x45, - 0xe1, 0x45, 0x67, 0x5c, 0x74, 0xe5, 0x96, 0x82, 0x4c, 0x0a, 0xaa, 0x2b, 0xf8, 0x08, 0x51, 0x1d, - 0x3b, 0x8e, 0x79, 0x64, 0x57, 0x55, 0xac, 0x5c, 0x4b, 0xcc, 0xf7, 0x84, 0x67, 0x03, 0x62, 0x35, - 0x97, 0xd6, 0xce, 0x6f, 0x03, 0x8c, 0x2f, 0x63, 0x1e, 0x5d, 0xe9, 0xae, 0x0b, 0x94, 0x4c, 0x76, - 0x9d, 0x54, 0x2f, 0x12, 0x72, 0x63, 0xf5, 0xd2, 0x6d, 0xd5, 0x17, 0x55, 0x2c, 0x55, 0xcf, 0xab, - 0x50, 0xba, 0xa3, 0x0a, 0x33, 0x86, 0x52, 0x51, 0x35, 0xb3, 0x43, 0x49, 0x6e, 0x67, 0xaa, 0x1b, - 0xcb, 0x35, 0xdb, 0x82, 0xa5, 0x18, 0x3b, 0x4b, 0x42, 0x69, 0x5c, 0x55, 0x1a, 0x57, 0x83, 0xf0, - 0xce, 0x64, 0x66, 0x0f, 0xa1, 0xc1, 0x87, 0x7e, 0x9a, 0x07, 0xc4, 0xab, 0x21, 0x7a, 0xcd, 0xda, - 0x86, 0x15, 0x95, 0x2f, 0xe2, 0x3d, 0x1e, 0x5c, 0x72, 0x5f, 0x51, 0x2d, 0xa2, 0x2e, 0xd3, 0x91, - 0xab, 0x4f, 0x88, 0xff, 0x14, 0x7d, 0x89, 0x59, 0xb3, 0xec, 0x1a, 0xb1, 0x9b, 0x78, 0x90, 0xe1, - 0xa2, 0x3e, 0x71, 0x88, 0xa9, 0xbf, 0x07, 0xbc, 0xef, 0xdb, 0x75, 0xa5, 0x8f, 0x44, 0x0e, 0x24, - 0xc0, 0x1e, 0x41, 0x83, 0x8e, 0xbd, 0xb8, 0x87, 0x91, 0xc1, 0xf0, 0xcc, 0x6e, 0x20, 0xc5, 0x74, - 0xeb, 0x12, 0xdd, 0x4f, 0x40, 0xb6, 0x0a, 0x06, 0xb5, 0x61, 0x37, 0xb1, 0x8a, 0xe1, 0xaa, 0x8d, - 0x44, 0xfb, 0xc1, 0x20, 0x10, 0xf6, 0x92, 0x42, 0x69, 0x23, 0xd5, 0x91, 0x92, 0x7b, 0xd8, 0x61, - 0x38, 0xe2, 0x91, 0x27, 0xc2, 0xc8, 0x66, 0x48, 0x30, 0xdd, 0x06, 0xe2, 0xfb, 0x43, 0xff, 0xb3, - 0x46, 0xd9, 0x1b, 0xb0, 0xd3, 0x73, 0xcf, 0x44, 0xac, 0x50, 0xc4, 0xda, 0xb5, 0x01, 0xd2, 0x81, - 0x38, 0x3c, 0xfe, 0xab, 0xd7, 0x1f, 0xfb, 0xbc, 0x9b, 0x4c, 0x77, 0x55, 0x0d, 0x4f, 0xc3, 0x27, - 0x34, 0x64, 0xe7, 0x14, 0x8c, 0x13, 0x69, 0x05, 0xe9, 0xc2, 0xc9, 0xbb, 0xc4, 0x55, 0xce, 0x35, - 0xc5, 0xfc, 0xdb, 0xd9, 0x00, 0x4b, 0x0e, 0xba, 0x1b, 0xf7, 0xce, 0xf9, 0xc0, 0xa3, 0xa7, 0x58, - 0x73, 0x41, 0x42, 0xc7, 0x84, 0x38, 0x6f, 0xc1, 0xa2, 0xc4, 0x2e, 0x8f, 0xc7, 0x7d, 0xc1, 0x9e, - 0x41, 0x25, 0xa2, 0x55, 0x4c, 0x4e, 0xb7, 0x76, 0xd8, 0x76, 0xfa, 0xc3, 0xa1, 0xa8, 0x09, 0xc5, - 0xb9, 0x00, 0xf6, 0x75, 0x84, 0xc9, 0xb8, 0x4e, 0xf1, 0x63, 0xcc, 0x63, 0xfa, 0x80, 0x84, 0x7d, - 0x5f, 0x35, 0xa4, 0x3f, 0x20, 0xb8, 0xa7, 0x76, 0xf0, 0x68, 0xc8, 0x7f, 0xa6, 0x7b, 0xad, 0xe0, - 0xfe, 0x6e, 0x9d, 0xee, 0x02, 0x6b, 0xf3, 0x3e, 0xcf, 0x15, 0xcb, 0xde, 0xbf, 0x90, 0xbb, 0xbf, - 0xf3, 0x1c, 0x8a, 0xed, 0x69, 0xd1, 0xf0, 0x2d, 0xf9, 0x19, 0xc5, 0xca, 0xbe, 0xa2, 0xbf, 0x02, - 0xb3, 0x9d, 0x48, 0xf1, 0x24, 0x2f, 0x45, 0x33, 0x23, 0x45, 0x3b, 0xa5, 0xc3, 0x21, 0x34, 0x95, - 0x0e, 0xed, 0xff, 0x13, 0xc1, 0xd9, 0x80, 0xfa, 0x69, 0x14, 0x08, 0x8e, 0x2d, 0x8c, 0xc2, 0x61, - 0xcc, 0x75, 0xe7, 0xa5, 0xa4, 0x73, 0xa7, 0x01, 0xb5, 0xce, 0x60, 0x24, 0xae, 0x74, 0x19, 0x67, - 0x15, 0xd8, 0x11, 0xf7, 0xfa, 0xe2, 0x1c, 0x35, 0xea, 0x5d, 0x24, 0xe8, 0x4b, 0x58, 0xc9, 0xa0, - 0x3a, 0x59, 0x0b, 0xcc, 0x48, 0xaf, 0x75, 0x4f, 0x93, 0xfd, 0xce, 0x5f, 0x03, 0x2c, 0x7a, 0xc7, - 0x1f, 0xe9, 0x7a, 0x6c, 0x0f, 0xcc, 0x7d, 0x5f, 0xbd, 0x6c, 0x96, 0xf5, 0x00, 0x61, 0xad, 0x56, - 0x06, 0xcb, 0x34, 0xed, 0x2c, 0xe0, 0x7b, 0xa8, 0x1e, 0x72, 0xf5, 0xf5, 0x88, 0x73, 0xe1, 0xf4, - 0x31, 0x6d, 0xcd, 0x48, 0xe9, 0x2c, 0xbc, 0x28, 0xe8, 0xb2, 0xca, 0xea, 0x33, 0xac, 0x37, 0xa7, - 0xec, 0x07, 0xb0, 0x52, 0x7e, 0x64, 0x1b, 0x19, 0xf2, 0xb4, 0x53, 0xe7, 0x67, 0x4b, 0x19, 0x2e, - 0x97, 0x6d, 0xda, 0x8a, 0x73, 0xb2, 0xbd, 0x23, 0x49, 0x28, 0x20, 0x66, 0xeb, 0xd9, 0xeb, 0xa7, - 0x26, 0xda, 0xb2, 0x67, 0x3c, 0x38, 0xb2, 0x19, 0xe6, 0x78, 0x0d, 0x06, 0xaa, 0x83, 0x86, 0xce, - 0x5b, 0x71, 0x4e, 0xed, 0x03, 0x30, 0x13, 0x7f, 0xb2, 0xfb, 0x33, 0x44, 0x69, 0xdf, 0xf1, 0x0e, - 0x7b, 0x50, 0xc6, 0x3b, 0xb4, 0x6f, 0xbf, 0xc0, 0x5a, 0xfe, 0x99, 0x24, 0xdd, 0xbb, 0x60, 0xa5, - 0x5c, 0x99, 0xd3, 0x73, 0xda, 0xc5, 0xad, 0xcd, 0x9b, 0x09, 0x49, 0x47, 0xdf, 0xca, 0xf4, 0x2b, - 0xb3, 0xfb, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x22, 0x70, 0x4a, 0x58, 0xdf, 0x08, 0x00, 0x00, + // 917 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x56, 0x5b, 0x6f, 0xe3, 0x44, + 0x14, 0xde, 0x5c, 0x9c, 0xd8, 0xc7, 0xb9, 0x6c, 0xa7, 0x59, 0xf0, 0x46, 0x8b, 0x5a, 0x59, 0x0b, + 0x5a, 0x10, 0x54, 0xb0, 0x2b, 0x40, 0x82, 0x95, 0x50, 0x57, 0xc9, 0xee, 0x56, 0xe2, 0x22, 0xbc, + 0x45, 0x7d, 0x8c, 0x4c, 0x3c, 0xb4, 0x56, 0x93, 0x38, 0xd8, 0x93, 0x42, 0x7f, 0x05, 0x4f, 0x3c, + 0xf3, 0x1b, 0xf8, 0x87, 0x9c, 0x39, 0xe3, 0x49, 0x3c, 0x8e, 0xdb, 0x44, 0xe2, 0x6d, 0xe6, 0x9b, + 0xef, 0xdc, 0xbe, 0x73, 0x8e, 0x65, 0x38, 0xe0, 0x37, 0x7c, 0x21, 0xe6, 0x61, 0x26, 0x78, 0x7a, + 0xb2, 0x4c, 0x13, 0x91, 0x30, 0xb7, 0x00, 0xf9, 0x7f, 0xd7, 0xc1, 0x1a, 0xcb, 0x3b, 0x7b, 0x0c, + 0x36, 0x3d, 0x4c, 0xe2, 0xc8, 0xab, 0x1d, 0xd7, 0x9e, 0x39, 0x41, 0x9b, 0xee, 0x67, 0x11, 0xfb, + 0x08, 0xfa, 0xcb, 0x30, 0x95, 0x6f, 0x6b, 0x46, 0x9d, 0x18, 0x5d, 0x05, 0x8f, 0x73, 0xde, 0x07, + 0x00, 0x8a, 0x20, 0xe2, 0x39, 0xf7, 0x1a, 0x48, 0x69, 0x04, 0x0e, 0x21, 0xe7, 0x08, 0xb0, 0x1e, + 0xd4, 0xa3, 0xa9, 0xd7, 0x24, 0x4b, 0x3c, 0x49, 0xba, 0x48, 0x96, 0xf1, 0x74, 0xb2, 0x08, 0x91, + 0x6e, 0x11, 0xee, 0x10, 0xf2, 0x23, 0x02, 0xec, 0x7d, 0x68, 0x8b, 0xf0, 0x72, 0x92, 0x71, 0xe1, + 0xb5, 0x8e, 0x1b, 0xf8, 0xd6, 0xc2, 0xeb, 0x3b, 0x2e, 0x18, 0x83, 0xe6, 0x55, 0x92, 0x09, 0xaf, + 0x4d, 0x16, 0x74, 0x96, 0x29, 0x8a, 0x30, 0xbd, 0xe4, 0x62, 0x22, 0xaf, 0x64, 0x64, 0x93, 0x51, + 0x57, 0xc1, 0x6f, 0x11, 0xcd, 0x6d, 0x57, 0x19, 0x4f, 0x3d, 0x47, 0xd9, 0xca, 0xb3, 0xc4, 0xa2, + 0x50, 0x84, 0x1e, 0x20, 0xd6, 0x09, 0xe8, 0xec, 0xff, 0x63, 0x81, 0xf5, 0xf3, 0x8a, 0xa7, 0xb7, + 0x79, 0xd6, 0x35, 0x72, 0x26, 0xb3, 0xd6, 0xd1, 0xeb, 0x84, 0xdc, 0x19, 0xbd, 0x71, 0x5f, 0xf4, + 0xa6, 0xb2, 0xa5, 0xe8, 0x65, 0x15, 0x1a, 0x7b, 0xaa, 0x50, 0xd1, 0x94, 0xb6, 0x8a, 0x69, 0x36, + 0x45, 0x57, 0x67, 0xab, 0x8a, 0xe5, 0x99, 0x3d, 0x83, 0x87, 0x19, 0x66, 0xa6, 0x4d, 0xa9, 0x5d, + 0x0e, 0xb5, 0xab, 0x47, 0xf8, 0x78, 0xdd, 0xb3, 0xa7, 0xd0, 0xe3, 0x8b, 0xa8, 0xc8, 0x03, 0xe2, + 0x75, 0x10, 0xdd, 0xb0, 0x4e, 0xe0, 0x50, 0xf9, 0x4b, 0xf9, 0x94, 0xc7, 0x37, 0x3c, 0x52, 0x54, + 0x97, 0xa8, 0x07, 0xf4, 0x14, 0xe4, 0x2f, 0xc4, 0xff, 0x04, 0xe7, 0x12, 0xbd, 0x9a, 0xec, 0x0e, + 0xb1, 0xfb, 0xf8, 0x60, 0x70, 0x51, 0x9f, 0x2c, 0x41, 0xd7, 0xbf, 0xc5, 0x7c, 0x16, 0x79, 0x5d, + 0xa5, 0x8f, 0x44, 0x5e, 0x4b, 0x80, 0x7d, 0x08, 0x3d, 0x7a, 0x0e, 0xb3, 0x29, 0x5a, 0xc6, 0x8b, + 0x4b, 0xaf, 0x87, 0x14, 0x3b, 0xe8, 0x4a, 0xf4, 0x54, 0x83, 0x6c, 0x00, 0x16, 0xa5, 0xe1, 0xf5, + 0x31, 0x8a, 0x15, 0xa8, 0x8b, 0x44, 0x67, 0xf1, 0x3c, 0x16, 0xde, 0x43, 0x85, 0xd2, 0xc5, 0xd8, + 0x84, 0x03, 0x73, 0x13, 0x50, 0x38, 0xd9, 0x8d, 0x10, 0x93, 0x4f, 0x96, 0x3c, 0x0d, 0x45, 0x92, + 0x7a, 0x0c, 0x29, 0x76, 0xd0, 0x43, 0xfc, 0x74, 0x11, 0xfd, 0x94, 0xa3, 0xec, 0x6b, 0xf0, 0x8a, + 0x23, 0x61, 0x58, 0x1c, 0x92, 0xc5, 0xa3, 0xcd, 0x6c, 0x14, 0x0d, 0xb1, 0xaf, 0xfc, 0xcf, 0xe9, + 0x6c, 0x15, 0xf1, 0x89, 0x6e, 0xfc, 0x40, 0xf5, 0x35, 0x87, 0xcf, 0xa9, 0xff, 0xfe, 0x5f, 0x35, + 0x70, 0xa4, 0x40, 0x6a, 0x4a, 0xab, 0x3a, 0x5a, 0xdb, 0xb3, 0xa3, 0xf5, 0x8a, 0x8e, 0xae, 0x95, + 0x69, 0x14, 0x95, 0x79, 0x02, 0xce, 0x46, 0xe7, 0x26, 0x55, 0xb1, 0x01, 0xfc, 0xa7, 0xd0, 0xd6, + 0x43, 0x77, 0xf7, 0xc7, 0xc4, 0xbf, 0x00, 0xeb, 0x5c, 0x4e, 0xb7, 0x5c, 0xac, 0xf5, 0x2b, 0x9e, + 0x4a, 0x8b, 0x50, 0x2f, 0x7f, 0x0e, 0x8e, 0xc0, 0x95, 0xb3, 0x3b, 0xc9, 0xa6, 0x57, 0x7c, 0x1e, + 0x52, 0x5e, 0x9d, 0x00, 0x24, 0xf4, 0x8e, 0x10, 0xff, 0x5b, 0x70, 0xc9, 0x71, 0xc0, 0xb3, 0xd5, + 0x4c, 0xb0, 0x4f, 0xa1, 0x9d, 0xd2, 0x29, 0xa3, 0xe5, 0x75, 0x9f, 0xb3, 0x93, 0xe2, 0xb7, 0x50, + 0x51, 0x35, 0xc5, 0xbf, 0x06, 0xf6, 0xcb, 0x12, 0x9d, 0xf1, 0xdc, 0xc5, 0xef, 0x2b, 0x9e, 0xd1, + 0x24, 0x24, 0xb3, 0x48, 0x25, 0x94, 0x97, 0x81, 0x77, 0x4a, 0x07, 0x9f, 0x16, 0xfc, 0x8f, 0x62, + 0xae, 0x6d, 0xbc, 0xef, 0x97, 0xe9, 0x0b, 0x60, 0x23, 0x3e, 0xe3, 0xa5, 0x60, 0x66, 0xfd, 0xb5, + 0x52, 0xfd, 0xfe, 0x67, 0x50, 0x1f, 0x6d, 0x8b, 0x86, 0x9f, 0x87, 0xc8, 0x50, 0xac, 0x15, 0x29, + 0xfa, 0x97, 0x60, 0x8f, 0xb4, 0x14, 0x1f, 0x97, 0xa5, 0xe8, 0x1b, 0x52, 0x8c, 0x0a, 0x3a, 0xbc, + 0x81, 0xbe, 0xd2, 0x61, 0xf4, 0xff, 0x44, 0xf0, 0x8f, 0xa0, 0x7b, 0x91, 0xc6, 0x82, 0x63, 0x0a, + 0xcb, 0x64, 0x91, 0xf1, 0x3c, 0xf3, 0x86, 0xce, 0xdc, 0xef, 0x41, 0x67, 0x3c, 0x5f, 0x8a, 0xdb, + 0x3c, 0x8c, 0x3f, 0x00, 0xf6, 0x96, 0x87, 0x33, 0x71, 0x85, 0x1a, 0x4d, 0xaf, 0x35, 0xfa, 0x05, + 0x1c, 0x1a, 0x68, 0xee, 0x6c, 0x08, 0x76, 0x9a, 0x9f, 0xf3, 0x9c, 0xd6, 0xf7, 0xe7, 0xff, 0xb6, + 0xc0, 0xa5, 0x39, 0xfc, 0x81, 0xca, 0x63, 0x2f, 0xc1, 0x3e, 0x8d, 0xd4, 0x68, 0x33, 0x73, 0x06, + 0x08, 0x1b, 0x0e, 0x0d, 0xcc, 0x48, 0xda, 0x7f, 0x80, 0x7b, 0xec, 0xbc, 0xe1, 0x6a, 0x7d, 0xb2, + 0x92, 0x39, 0x6d, 0xde, 0xb0, 0xc2, 0xa5, 0xff, 0xe0, 0xf3, 0x1a, 0xfb, 0x06, 0x3a, 0xda, 0xf0, + 0xd5, 0x2d, 0xae, 0xc4, 0x60, 0x9b, 0x77, 0x16, 0x55, 0x5b, 0xb3, 0xef, 0xc0, 0xd5, 0xb6, 0x67, + 0x51, 0xc6, 0xde, 0x33, 0x27, 0x57, 0x2f, 0xfd, 0xb0, 0xd2, 0x25, 0x05, 0x57, 0x35, 0xab, 0x3d, + 0xab, 0x98, 0xfb, 0x1d, 0x35, 0x7f, 0x0f, 0x6e, 0x61, 0x19, 0xd8, 0x91, 0x41, 0xde, 0x5e, 0x93, + 0xdd, 0xde, 0x0a, 0xd3, 0x5e, 0xf2, 0xb6, 0xbd, 0x07, 0x3b, 0xbc, 0xbd, 0xa2, 0x7e, 0x90, 0x41, + 0xc6, 0x1e, 0x9b, 0x02, 0x14, 0xc6, 0x69, 0xe8, 0x55, 0x6c, 0x3b, 0xcd, 0x38, 0xfa, 0xf8, 0x0a, + 0x2c, 0x54, 0x07, 0xb7, 0xa9, 0xbc, 0x07, 0x3b, 0x62, 0xbf, 0x06, 0x5b, 0x2f, 0x07, 0x7b, 0x52, + 0x21, 0xca, 0x68, 0xcf, 0x1a, 0x5e, 0x42, 0x0b, 0x6b, 0x18, 0xdd, 0x5f, 0xc0, 0xa3, 0xf2, 0x8e, + 0xea, 0xec, 0x03, 0x70, 0x0b, 0x2b, 0x51, 0xd2, 0x73, 0x7b, 0x85, 0x86, 0xc7, 0x77, 0x13, 0x74, + 0x46, 0xbf, 0xb6, 0xe8, 0xd7, 0xf0, 0xc5, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x8e, 0x67, + 0x40, 0x2f, 0x0a, 0x00, 0x00, } diff --git a/proto/eventmaster.proto b/proto/eventmaster.proto index 1438b99..4350511 100644 --- a/proto/eventmaster.proto +++ b/proto/eventmaster.proto @@ -5,6 +5,8 @@ package eventmaster; service EventMaster { rpc AddEvent (Event) returns (WriteResponse) {} rpc GetEvents (Query) returns (stream Event) {} + rpc GetEventById (EventId) returns (Event) {} + rpc GetEventIds (TimeQuery) returns (stream EventId) {} rpc AddTopic (Topic) returns (WriteResponse) {} rpc UpdateTopic (UpdateTopicRequest) returns (WriteResponse) {} rpc DeleteTopic (DeleteTopicRequest) returns (WriteResponse) {} @@ -46,10 +48,22 @@ message Query { repeated bool sort_ascending = 14; int32 start = 15; int32 limit = 16; + string event_id = 17; bool tag_and_operator = 18; bool target_host_and_operator = 19; repeated string exclude_tag_set = 20; } + +message TimeQuery { + int64 start_event_time = 1; + int64 end_event_time = 2; + int32 limit = 3; + bool ascending = 4; +} + +message EventId { + string event_id = 1; +} message Topic { string id = 1; diff --git a/src/eventmaster/api_handlers.go b/src/eventmaster/api_handlers.go index 23cae7e..aa80591 100644 --- a/src/eventmaster/api_handlers.go +++ b/src/eventmaster/api_handlers.go @@ -23,11 +23,6 @@ func getQueryFromRequest(r *http.Request) (*eventmaster.Query, error) { decoder := json.NewDecoder(r.Body) if err := decoder.Decode(&q); err != nil { query := r.URL.Query() - if val, ok := query["event_id"]; ok { - if len(val) > 0 { - q.EventId = val[0] - } - } q.ParentEventId = query["parent_event_id"] q.Dc = query["dc"] q.Host = query["host"] diff --git a/src/eventmaster/data_store.go b/src/eventmaster/data_store.go index 314097a..8040fdb 100644 --- a/src/eventmaster/data_store.go +++ b/src/eventmaster/data_store.go @@ -13,10 +13,13 @@ import ( "github.com/pkg/errors" ) +type streamFn func(eventId string) error + type DataStore interface { AddEvent(*Event) error Find(q *eventmaster.Query, topicIds []string, dcIds []string) (Events, error) FindById(string, bool) (*Event, error) + FindIds(*eventmaster.TimeQuery, streamFn) error GetTopics() ([]Topic, error) AddTopic(RawTopic) error UpdateTopic(RawTopic) error @@ -198,11 +201,11 @@ func (c *CassandraStore) FindById(id string, includeData bool) (*Event, error) { return evt, nil } -func (c *CassandraStore) Find(q *eventmaster.Query, topicIds []string, dcIds []string) (Events, error) { +func getDates(startEventTime int64, endEventTime int64) ([]string, error) { var dates []string - startDate := getDate(q.StartEventTime) - endDate := getDate(q.EndEventTime) - // get range of dates between startDate and endDate + startDate := getDate(startEventTime) + endDate := getDate(endEventTime) + for { if startDate == endDate { break @@ -216,6 +219,14 @@ func (c *CassandraStore) Find(q *eventmaster.Query, topicIds []string, dcIds []s } } dates = append(dates, startDate) + return dates, nil +} + +func (c *CassandraStore) Find(q *eventmaster.Query, topicIds []string, dcIds []string) (Events, error) { + dates, err := getDates(q.StartEventTime, q.EndEventTime) + if err != nil { + return nil, errors.Wrap(err, "Error getting dates from timestamps") + } timeFilter := fmt.Sprintf("event_time >= %d AND event_time <= %d", q.StartEventTime*1000, q.EndEventTime*1000) needsIntersection := false @@ -291,7 +302,7 @@ func (c *CassandraStore) Find(q *eventmaster.Query, topicIds []string, dcIds []s for _, date := range dates { var eventID string dateFilter := fmt.Sprintf("date = %s", stringify(date)) - query := fmt.Sprintf(`SELECT event_id FROM %s WHERE %s AND %s;`, + query := fmt.Sprintf(`SELECT event_id FROM %s WHERE %s AND %s LIMIT 200;`, "event_by_date", dateFilter, timeFilter) scanIter, closeIter := c.session.ExecIterQuery(query) for true { @@ -405,6 +416,35 @@ func (c *CassandraStore) Find(q *eventmaster.Query, topicIds []string, dcIds []s return events, nil } +func (c *CassandraStore) FindIds(q *eventmaster.TimeQuery, stream streamFn) error { + dates, err := getDates(q.StartEventTime, q.EndEventTime) + if err != nil { + return errors.Wrap(err, "Error getting dates from start and end time") + } + timeFilter := fmt.Sprintf("event_time >= %d AND event_time <= %d", q.StartEventTime*1000, q.EndEventTime*1000) + for _, date := range dates { + var eventID string + dateFilter := fmt.Sprintf("date = %s", stringify(date)) + order := "DESC" + if q.Ascending { + order = "ASC" + } + query := fmt.Sprintf(`SELECT event_id FROM %s WHERE %s AND %s ORDER BY event_time %s LIMIT %d;`, + "event_by_date", dateFilter, timeFilter, order, q.Limit) + scanIter, closeIter := c.session.ExecIterQuery(query) + for scanIter(&eventID) { + if err := stream(eventID); err != nil { + closeIter() + return errors.Wrap(err, "Error streaming event ID") + } + } + if err := closeIter(); err != nil { + return errors.Wrap(err, "Error closing cassandra iter") + } + } + return nil +} + func (c *CassandraStore) GetTopics() ([]Topic, error) { scanIter, closeIter := c.session.ExecIterQuery("SELECT topic_id, topic_name, data_schema FROM event_topic;") var topicId gocql.UUID diff --git a/src/eventmaster/event_store.go b/src/eventmaster/event_store.go index a1797c9..469f9ae 100644 --- a/src/eventmaster/event_store.go +++ b/src/eventmaster/event_store.go @@ -279,6 +279,21 @@ func (es *EventStore) FindById(id string) (*Event, error) { return evt, nil } +func (es *EventStore) FindIds(q *eventmaster.TimeQuery, stream streamFn) error { + start := time.Now() + defer func() { + eventStoreTimer.WithLabelValues("FindIds").Observe(trackTime(start)) + }() + if q.Limit == 0 { + q.Limit = 200 + } + if q.StartEventTime == 0 || q.EndEventTime == 0 { + return errors.New("Start and end event time must be specified") + } + + return es.ds.FindIds(q, stream) +} + func (es *EventStore) AddEvent(event *UnaddedEvent) (string, error) { start := time.Now() defer func() { diff --git a/src/eventmaster/eventmaster b/src/eventmaster/eventmaster deleted file mode 100755 index 3615b31..0000000 Binary files a/src/eventmaster/eventmaster and /dev/null differ diff --git a/src/eventmaster/grpc_server.go b/src/eventmaster/grpc_server.go index 56b4882..06a7eb0 100644 --- a/src/eventmaster/grpc_server.go +++ b/src/eventmaster/grpc_server.go @@ -65,6 +65,40 @@ func (s *grpcServer) AddEvent(ctx context.Context, evt *eventmaster.Event) (*eve }) } +func (s *grpcServer) GetEventById(ctx context.Context, id *eventmaster.EventId) (*eventmaster.Event, error) { + name := "GetEventById" + start := time.Now() + defer func() { + grpcReqLatencies.WithLabelValues(name).Observe(trackTime(start)) + }() + grpcReqCounter.WithLabelValues(name).Inc() + + ev, err := s.store.FindById(id.EventId) + if err != nil { + grpcRespCounter.WithLabelValues(name, "1").Inc() + fmt.Println("Error performing event store find", err) + return nil, err + } + d, err := json.Marshal(ev.Data) + if err != nil { + grpcRespCounter.WithLabelValues(name, "1").Inc() + fmt.Println("Error marshalling event data into JSON", err) + return nil, err + } + return &eventmaster.Event{ + EventId: ev.EventID, + ParentEventId: ev.ParentEventID, + EventTime: ev.EventTime, + Dc: s.store.getDcName(ev.DcID), + TopicName: s.store.getTopicName(ev.TopicID), + TagSet: ev.Tags, + Host: ev.Host, + TargetHostSet: ev.TargetHosts, + User: ev.User, + Data: d, + }, nil +} + func (s *grpcServer) GetEvents(q *eventmaster.Query, stream eventmaster.EventMaster_GetEventsServer) error { name := "GetEvents" start := time.Now() @@ -107,6 +141,19 @@ func (s *grpcServer) GetEvents(q *eventmaster.Query, stream eventmaster.EventMas return nil } +func (s *grpcServer) GetEventIds(q *eventmaster.TimeQuery, stream eventmaster.EventMaster_GetEventIdsServer) error { + name := "GetEventByIds" + start := time.Now() + defer func() { + grpcReqLatencies.WithLabelValues(name).Observe(trackTime(start)) + }() + + streamProxy := func(eventId string) error { + return stream.Send(&eventmaster.EventId{eventId}) + } + return s.store.FindIds(q, streamProxy) +} + func (s *grpcServer) AddTopic(ctx context.Context, t *eventmaster.Topic) (*eventmaster.WriteResponse, error) { return s.performOperation("AddTopic", func() (string, error) { if t.DataSchema == nil {