trisulrp 3.2.9 → 3.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8c5a4e8a02d0cd3e01efc327bf0cea7f3e5709f7
4
- data.tar.gz: 5968b88379c4cf79bc11278560751c43987285a8
2
+ SHA256:
3
+ metadata.gz: 1eb9ef98c73c9736310f21bd9cdb84c4f6f2409dc4f1c0915aaf86f4d5522dba
4
+ data.tar.gz: e53eccfad2338f817067c392338d501bebd9c66e319e32fb189965f72f5d042b
5
5
  SHA512:
6
- metadata.gz: fd0cd44e3a28314555f1e64a3c48a0635cafae12826fb4b6cfe8c3f4bfb3787455d216b054bfd8960037db77607c6bc25da86522efc3c57c082260cce06cda7c
7
- data.tar.gz: 100144bf495624fa1dd3bd424c02e4382ab664d2fd9afc82833cd57a766f705cb90fd10182c74a78365cfb469b839b3cb55625883a7af8c645185f7a65a885c6
6
+ metadata.gz: 7a31a36b630e1e1f7a957fed3d3d4f480900f4cdfed69869bbeee628aa9a303c31b3f4f6a1e2740bd0297b6537896a38501a1b9d3a8395e279846f13a9490a51
7
+ data.tar.gz: 9080652d629291fb28f4b313c3f0c6769f1bc0117ca6d0295037e16b992d6bdecc435cd9a95c033b7458d61d8471310da781f33c4f2f79e6891e558916a95037
data/README.rdoc CHANGED
@@ -16,7 +16,7 @@ Key Features :
16
16
 
17
17
  * TRP Documentation and Tutorials http://trisul.org/docs/trp/index.html
18
18
  * Getting started tutorial http://trisul.org/docs/trp/trpgemsteps.html
19
- * Github repo of sample scripts https://github.com/vivekrajan/trisul-scripts
19
+ * Github repo of sample scripts https://github.com/trisulnsm/trisul-scripts/trp
20
20
 
21
21
 
22
22
  == Contributing to trisulrp
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ $SAFE=0
1
2
  require 'rubygems'
2
3
  require 'bundler'
3
4
  begin
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.2.9
1
+ 3.2.26
@@ -335,6 +335,32 @@ module TrisulRP::Protocol
335
335
  return tint
336
336
  end
337
337
 
338
+
339
+ # Helper iterate through each time interval in reverse order
340
+ #
341
+ # [endpoint] - the ZMQ endpoint
342
+ #
343
+ # ==== Returns
344
+ # ==== Yields
345
+ # [time_interval, id, total_intervals] A TRP::TimeInterval object which can be attached to any :time_interval field of a TRP request
346
+ #
347
+ #
348
+ def each_time_interval(zmq_endpt)
349
+
350
+ req=mk_request(TRP::Message::Command::TIMESLICES_REQUEST )
351
+ get_response_zmq(zmq_endpt,req) do |resp|
352
+
353
+ slice_id = 0
354
+ total_slices = resp.slices.size
355
+
356
+ resp.slices.reverse_each do | slc |
357
+ yield slc.time_interval, slice_id, total_slices
358
+ slice_id=slice_id+1
359
+ end
360
+ end
361
+ end
362
+
363
+
338
364
  # Helper to allow assinging string to KeyT field
339
365
  #
340
366
  # instead of
@@ -460,6 +486,9 @@ module TrisulRP::Protocol
460
486
  when TRP::Message::Command::QUERY_SESSIONS_REQUEST
461
487
  fix_TRP_Fields( TRP::QuerySessionsRequest, params)
462
488
  req.query_sessions_request = TRP::QuerySessionsRequest.new(params)
489
+ when TRP::Message::Command::AGGREGATE_SESSIONS_REQUEST
490
+ fix_TRP_Fields( TRP::AggregateSessionsRequest, params)
491
+ req.aggregate_sessions_request = TRP::AggregateSessionsRequest.new(params)
463
492
  when TRP::Message::Command::GREP_REQUEST
464
493
  fix_TRP_Fields( TRP::GrepRequest, params)
465
494
  req.grep_request = TRP::GrepRequest.new(params)
@@ -517,6 +546,12 @@ module TrisulRP::Protocol
517
546
  when TRP::Message::Command::GRAPH_REQUEST
518
547
  fix_TRP_Fields( TRP::GraphRequest, params)
519
548
  req.graph_request = TRP::GraphRequest.new(params)
549
+ when TRP::Message::Command::RUNTOOL_REQUEST
550
+ fix_TRP_Fields( TRP::RunToolRequest, params)
551
+ req.run_tool_request = TRP::RunToolRequest.new(params)
552
+ when TRP::Message::Command::TOOL_INFO_REQUEST
553
+ fix_TRP_Fields( TRP::ToolInfoRequest, params)
554
+ req.tool_info_request = TRP::ToolInfoRequest.new(params)
520
555
  else
521
556
  raise "Unknown TRP command ID"
522
557
  end
@@ -586,6 +621,8 @@ module TrisulRP::Protocol
586
621
  resp.session_tracker_response
587
622
  when TRP::Message::Command::QUERY_SESSIONS_RESPONSE
588
623
  resp.query_sessions_response
624
+ when TRP::Message::Command::AGGREGATE_SESSIONS_RESPONSE
625
+ resp.aggregate_sessions_response
589
626
  when TRP::Message::Command::GREP_RESPONSE
590
627
  resp.grep_response
591
628
  when TRP::Message::Command::KEYSPACE_RESPONSE
@@ -614,6 +651,10 @@ module TrisulRP::Protocol
614
651
  resp.file_response
615
652
  when TRP::Message::Command::GRAPH_RESPONSE
616
653
  resp.graph_response
654
+ when TRP::Message::Command::RUNTOOL_RESPONSE
655
+ resp.run_tool_response
656
+ when TRP::Message::Command::TOOL_INFO_RESPONSE
657
+ resp.tool_info_response
617
658
  else
618
659
  raise "#{resp.trp_command.to_i} Unknown TRP command ID"
619
660
  end
@@ -78,7 +78,11 @@ module TRP
78
78
 
79
79
  end
80
80
 
81
- class CounterGroupT < ::Protobuf::Message; end
81
+ class CounterGroupT < ::Protobuf::Message
82
+ class Crosskey < ::Protobuf::Message; end
83
+
84
+ end
85
+
82
86
  class SessionT < ::Protobuf::Message; end
83
87
  class AlertT < ::Protobuf::Message; end
84
88
  class ResourceT < ::Protobuf::Message; end
@@ -159,6 +163,15 @@ module TRP
159
163
  define :SUBSYSTEM_EXIT, 125
160
164
  define :GRAPH_REQUEST, 130
161
165
  define :GRAPH_RESPONSE, 131
166
+ define :AGGREGATE_SESSIONS_REQUEST, 132
167
+ define :AGGREGATE_SESSIONS_RESPONSE, 133
168
+ define :RUNTOOL_REQUEST, 134
169
+ define :RUNTOOL_RESPONSE, 135
170
+ define :HA_CONTROL_REQUEST, 140
171
+ define :HA_CONTROL_RESPONSE, 141
172
+ define :DOMAIN_PING, 142
173
+ define :TOOL_INFO_REQUEST, 143
174
+ define :TOOL_INFO_RESPONSE, 144
162
175
  end
163
176
 
164
177
  end
@@ -177,6 +190,13 @@ module TRP
177
190
  class CounterGroupInfoResponse < ::Protobuf::Message; end
178
191
  class QuerySessionsRequest < ::Protobuf::Message; end
179
192
  class QuerySessionsResponse < ::Protobuf::Message; end
193
+ class AggregateSessionsRequest < ::Protobuf::Message; end
194
+ class AggregateSessionsResponse < ::Protobuf::Message
195
+ class KeyTCount < ::Protobuf::Message; end
196
+ class TagGroup < ::Protobuf::Message; end
197
+
198
+ end
199
+
180
200
  class UpdateKeyRequest < ::Protobuf::Message; end
181
201
  class SessionTrackerRequest < ::Protobuf::Message; end
182
202
  class SessionTrackerResponse < ::Protobuf::Message; end
@@ -184,6 +204,12 @@ module TRP
184
204
  class QueryAlertsResponse < ::Protobuf::Message; end
185
205
  class QueryResourcesRequest < ::Protobuf::Message; end
186
206
  class QueryResourcesResponse < ::Protobuf::Message; end
207
+ class AggregateResourcesRequest < ::Protobuf::Message; end
208
+ class AggregateResourcesResponse < ::Protobuf::Message
209
+ class KeyTCount < ::Protobuf::Message; end
210
+
211
+ end
212
+
187
213
  class KeySpaceRequest < ::Protobuf::Message
188
214
  class KeySpace < ::Protobuf::Message; end
189
215
 
@@ -227,6 +253,18 @@ module TRP
227
253
 
228
254
  end
229
255
 
256
+ class HAControlRequest < ::Protobuf::Message
257
+ class HAOperation < ::Protobuf::Enum
258
+ define :HA_TEST_REACHABILITY, 0
259
+ define :HA_SWITCH_BACKUP, 1
260
+ define :HA_SWITCH_PRIMARY, 2
261
+ end
262
+
263
+ end
264
+
265
+ class HAControlResponse < ::Protobuf::Message; end
266
+ class ToolInfoRequest < ::Protobuf::Message; end
267
+ class ToolInfoResponse < ::Protobuf::Message; end
230
268
  class NodeConfigRequest < ::Protobuf::Message
231
269
  class IntelFeed < ::Protobuf::Message; end
232
270
 
@@ -265,6 +303,18 @@ module TRP
265
303
  class FileResponse < ::Protobuf::Message; end
266
304
  class GraphRequest < ::Protobuf::Message; end
267
305
  class GraphResponse < ::Protobuf::Message; end
306
+ class RunToolRequest < ::Protobuf::Message
307
+ class NodeTool < ::Protobuf::Enum
308
+ define :PING, 1
309
+ define :DF, 2
310
+ define :GEOQUERY, 3
311
+ define :TOP, 4
312
+ define :BGPQUERY, 5
313
+ end
314
+
315
+ end
316
+
317
+ class RunToolResponse < ::Protobuf::Message; end
268
318
 
269
319
 
270
320
  ##
@@ -330,15 +380,25 @@ module TRP
330
380
  optional :string, :description, 4
331
381
  optional :int64, :metric, 5
332
382
  repeated ::TRP::KeyT::NameValueT, :attributes, 6
383
+ optional :int64, :metric_max, 7
384
+ optional :int64, :metric_min, 8
385
+ optional :int64, :metric_avg, 9
333
386
  end
334
387
 
335
388
  class CounterGroupT
389
+ class Crosskey
390
+ required :string, :parentguid, 1
391
+ required :string, :crosskeyguid_1, 2
392
+ optional :string, :crosskeyguid_2, 3
393
+ end
394
+
336
395
  required :string, :guid, 1
337
396
  required :string, :name, 2
338
397
  optional :int64, :bucket_size, 3
339
398
  optional ::TRP::TimeInterval, :time_interval, 4
340
399
  optional :int64, :topper_bucket_size, 5
341
400
  repeated ::TRP::MeterInfo, :meters, 6
401
+ optional ::TRP::CounterGroupT::Crosskey, :crosskey, 7
342
402
  end
343
403
 
344
404
  class SessionT
@@ -491,6 +551,16 @@ module TRP
491
551
  optional ::TRP::FileResponse, :file_response, 123
492
552
  optional ::TRP::GraphRequest, :graph_request, 130
493
553
  optional ::TRP::GraphResponse, :graph_response, 131
554
+ optional ::TRP::AggregateSessionsRequest, :aggregate_sessions_request, 140
555
+ optional ::TRP::AggregateSessionsResponse, :aggregate_sessions_response, 141
556
+ optional ::TRP::AggregateResourcesRequest, :aggregate_resources_request, 142
557
+ optional ::TRP::AggregateResourcesResponse, :aggregate_resources_response, 143
558
+ optional ::TRP::RunToolRequest, :run_tool_request, 144
559
+ optional ::TRP::RunToolResponse, :run_tool_response, 145
560
+ optional ::TRP::HAControlRequest, :ha_control_request, 150
561
+ optional ::TRP::HAControlResponse, :ha_control_response, 151
562
+ optional ::TRP::ToolInfoRequest, :tool_info_request, 152
563
+ optional ::TRP::ToolInfoResponse, :tool_info_response, 153
494
564
  optional :string, :destination_node, 200
495
565
  optional :string, :probe_id, 201
496
566
  optional :bool, :run_async, 202
@@ -506,6 +576,8 @@ module TRP
506
576
  optional :string, :station_id_request, 2
507
577
  optional :string, :message, 3
508
578
  optional :int64, :local_timestamp, 4
579
+ optional :string, :local_timestamp_string, 5
580
+ optional :bool, :is_primary, 6
509
581
  end
510
582
 
511
583
  class ErrorResponse
@@ -532,6 +604,9 @@ module TRP
532
604
  required ::TRP::KeyT, :key, 2
533
605
  optional ::TRP::StatsArray, :totals, 3
534
606
  repeated ::TRP::StatsArray, :stats, 4
607
+ optional ::TRP::StatsArray, :maximums, 5
608
+ optional ::TRP::StatsArray, :minimums, 6
609
+ optional ::TRP::StatsArray, :samples, 8
535
610
  end
536
611
 
537
612
  class CounterGroupTopperRequest
@@ -542,6 +617,8 @@ module TRP
542
617
  optional ::TRP::Timestamp, :time_instant, 6
543
618
  optional :int64, :flags, 7
544
619
  optional :bool, :resolve_keys, 8, :default => true
620
+ optional :string, :key_filter, 9
621
+ optional :string, :inverse_key_filter, 10
545
622
  end
546
623
 
547
624
  class CounterGroupTopperResponse
@@ -600,6 +677,7 @@ module TRP
600
677
  optional :bool, :resolve_keys, 21, :default => true
601
678
  optional :string, :outputpath, 22
602
679
  repeated :string, :idlist, 23
680
+ optional ::TRP::KeyT, :any_nf_ifindex, 24
603
681
  end
604
682
 
605
683
  class QuerySessionsResponse
@@ -608,9 +686,66 @@ module TRP
608
686
  optional :string, :outputpath, 4
609
687
  end
610
688
 
689
+ class AggregateSessionsRequest
690
+ optional :string, :session_group, 2, :default => "{99A78737-4B41-4387-8F31-8077DB917336}"
691
+ optional ::TRP::TimeInterval, :time_interval, 3
692
+ optional ::TRP::KeyT, :source_ip, 5
693
+ optional ::TRP::KeyT, :source_port, 6
694
+ optional ::TRP::KeyT, :dest_ip, 7
695
+ optional ::TRP::KeyT, :dest_port, 8
696
+ optional ::TRP::KeyT, :any_ip, 9
697
+ optional ::TRP::KeyT, :any_port, 10
698
+ repeated ::TRP::KeyT, :ip_pair, 11
699
+ optional ::TRP::KeyT, :protocol, 12
700
+ optional :string, :flowtag, 13
701
+ optional ::TRP::KeyT, :nf_routerid, 14
702
+ optional ::TRP::KeyT, :nf_ifindex_in, 15
703
+ optional ::TRP::KeyT, :nf_ifindex_out, 16
704
+ optional :string, :subnet_24, 17
705
+ optional :string, :subnet_16, 18
706
+ optional :int64, :aggregate_topcount, 19, :default => 100
707
+ repeated :string, :group_by_fields, 20
708
+ optional ::TRP::KeyT, :any_nf_ifindex, 21
709
+ end
710
+
711
+ class AggregateSessionsResponse
712
+ class KeyTCount
713
+ required ::TRP::KeyT, :key, 1
714
+ required :int64, :count, 2
715
+ required :int64, :metric, 3
716
+ end
717
+
718
+ class TagGroup
719
+ required :string, :group_name, 1
720
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :tag_metrics, 2
721
+ end
722
+
723
+ required :string, :session_group, 2
724
+ optional ::TRP::TimeInterval, :time_interval, 3
725
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :source_ip, 5
726
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :source_port, 6
727
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :dest_ip, 7
728
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :dest_port, 8
729
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :any_ip, 9
730
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :any_port, 10
731
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :ip_pair, 11
732
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :protocol, 12
733
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :flowtag, 13
734
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :nf_routerid, 14
735
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :nf_ifindex_in, 15
736
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :nf_ifindex_out, 16
737
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :subnet_24, 17
738
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :internal_port, 18
739
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :internal_ip, 19
740
+ repeated ::TRP::AggregateSessionsResponse::KeyTCount, :external_ip, 20
741
+ repeated ::TRP::AggregateSessionsResponse::TagGroup, :tag_group, 21
742
+ end
743
+
611
744
  class UpdateKeyRequest
612
745
  required :string, :counter_group, 2
613
746
  repeated ::TRP::KeyT, :keys, 4
747
+ optional :bool, :remove_all_attributes, 5
748
+ repeated :string, :remove_attributes, 6
614
749
  end
615
750
 
616
751
  class SessionTrackerRequest
@@ -684,6 +819,25 @@ module TRP
684
819
  optional :int64, :approx_count, 4
685
820
  end
686
821
 
822
+ class AggregateResourcesRequest
823
+ required ::TRP::QueryResourcesRequest, :query, 1
824
+ optional :int64, :aggregate_topcount, 2, :default => 100
825
+ end
826
+
827
+ class AggregateResourcesResponse
828
+ class KeyTCount
829
+ required ::TRP::KeyT, :key, 1
830
+ required :int64, :count, 2
831
+ end
832
+
833
+ repeated ::TRP::AggregateResourcesResponse::KeyTCount, :source_ip, 5
834
+ repeated ::TRP::AggregateResourcesResponse::KeyTCount, :source_port, 6
835
+ repeated ::TRP::AggregateResourcesResponse::KeyTCount, :destination_ip, 7
836
+ repeated ::TRP::AggregateResourcesResponse::KeyTCount, :destination_port, 8
837
+ repeated ::TRP::AggregateResourcesResponse::KeyTCount, :uri, 9
838
+ repeated ::TRP::AggregateResourcesResponse::KeyTCount, :userlabel, 10
839
+ end
840
+
687
841
  class KeySpaceRequest
688
842
  class KeySpace
689
843
  required ::TRP::KeyT, :from_key, 1
@@ -709,6 +863,8 @@ module TRP
709
863
  optional :int64, :meter, 3, :default => 0
710
864
  optional :int64, :maxitems, 4, :default => 100
711
865
  optional ::TRP::TimeInterval, :time_interval, 5
866
+ optional :string, :key_filter, 6
867
+ optional :string, :inverse_key_filter, 7
712
868
  end
713
869
 
714
870
  class TopperTrendResponse
@@ -824,6 +980,7 @@ module TRP
824
980
  optional :string, :extra_info, 4
825
981
  optional ::TRP::Timestamp, :register_time, 5
826
982
  optional ::TRP::Timestamp, :heartbeat_time, 6
983
+ optional :bool, :is_primary, 7, :default => true
827
984
  end
828
985
 
829
986
  required ::TRP::DomainOperation, :cmd, 1
@@ -833,12 +990,39 @@ module TRP
833
990
  optional :bool, :need_reconnect, 5, :default => false
834
991
  end
835
992
 
993
+ class HAControlRequest
994
+ required ::TRP::HAControlRequest::HAOperation, :cmd, 1
995
+ optional :string, :station_id, 2
996
+ optional :string, :params, 3
997
+ end
998
+
999
+ class HAControlResponse
1000
+ optional :bool, :control_success, 1
1001
+ optional :string, :station_id, 2
1002
+ optional :string, :status_message, 3
1003
+ optional :bool, :primary_reachable, 4
1004
+ optional :bool, :backup_reachable, 5
1005
+ end
1006
+
1007
+ class ToolInfoRequest
1008
+ optional :string, :context_name, 1
1009
+ optional :string, :tool_name, 2
1010
+ repeated :string, :tool_info_requested, 3
1011
+ end
1012
+
1013
+ class ToolInfoResponse
1014
+ repeated ::TRP::NameValue, :tool_info, 1
1015
+ end
1016
+
836
1017
  class NodeConfigRequest
837
1018
  class IntelFeed
838
1019
  required :string, :guid, 1
839
1020
  optional :string, :name, 2
840
1021
  optional :string, :download_rules, 3
841
1022
  repeated :string, :uri, 4
1023
+ repeated :string, :usernodes, 5
1024
+ optional :int64, :sub_feed_id, 6, :default => -1
1025
+ optional :bool, :restore_mode, 7, :default => false
842
1026
  end
843
1027
 
844
1028
  optional :string, :message, 1
@@ -846,6 +1030,7 @@ module TRP
846
1030
  optional ::TRP::NodeConfigRequest::IntelFeed, :process_new_feed, 3
847
1031
  optional :bool, :get_all_nodes, 4, :default => true
848
1032
  repeated ::TRP::NameValue, :query_config, 5
1033
+ optional ::TRP::NodeConfigRequest::IntelFeed, :remove_feed, 6
849
1034
  end
850
1035
 
851
1036
  class NodeConfigResponse
@@ -871,6 +1056,7 @@ module TRP
871
1056
  class ContextInfoRequest
872
1057
  optional :string, :context_name, 1
873
1058
  optional :bool, :get_size_on_disk, 2, :default => false
1059
+ optional :string, :tool_name, 3
874
1060
  end
875
1061
 
876
1062
  class ContextInfoResponse
@@ -1048,5 +1234,17 @@ module TRP
1048
1234
  repeated ::TRP::EdgeGraphT, :graphs, 3
1049
1235
  end
1050
1236
 
1237
+ class RunToolRequest
1238
+ required :string, :context_name, 1
1239
+ required ::TRP::RunToolRequest::NodeTool, :tool, 2
1240
+ optional :string, :tool_input, 3
1241
+ optional :string, :tool_input_file_data, 4
1242
+ end
1243
+
1244
+ class RunToolResponse
1245
+ required :string, :context_name, 1
1246
+ optional :string, :tool_output, 2
1247
+ end
1248
+
1051
1249
  end
1052
1250
 
@@ -107,6 +107,9 @@ message KeyT {
107
107
  required string attr_value=2;
108
108
  }
109
109
  repeated NameValueT attributes=6; /// New: Attributes are NVP for keys
110
+ optional int64 metric_max=7; /// optional : max observed value for metric in context
111
+ optional int64 metric_min=8; /// optional : max observed value for metric
112
+ optional int64 metric_avg=9; /// optional : max observed value for metric
110
113
  }
111
114
 
112
115
 
@@ -119,6 +122,14 @@ message CounterGroupT {
119
122
  optional TimeInterval time_interval=4; /// total time interval available in DB
120
123
  optional int64 topper_bucket_size=5; /// topper bucketsize (streaming analytics window)
121
124
  repeated MeterInfo meters=6; /// array of meter information (m0, m1, .. mn)
125
+
126
+ message Crosskey {
127
+ required string parentguid=1; /// parent GUID of ckey counter group
128
+ required string crosskeyguid_1=2; /// crosskey 1 guid - required
129
+ optional string crosskeyguid_2=3; /// crosskey 2 guid - optional
130
+ }
131
+ optional Crosskey crosskey=7; /// for cross key counter group
132
+
122
133
  }
123
134
 
124
135
  /// SessionT : an IP flow
@@ -340,6 +351,16 @@ message Message {
340
351
  SUBSYSTEM_EXIT=125;
341
352
  GRAPH_REQUEST=130;
342
353
  GRAPH_RESPONSE=131;
354
+ AGGREGATE_SESSIONS_REQUEST=132;
355
+ AGGREGATE_SESSIONS_RESPONSE=133;
356
+ RUNTOOL_REQUEST=134;
357
+ RUNTOOL_RESPONSE=135;
358
+ HA_CONTROL_REQUEST=140;
359
+ HA_CONTROL_RESPONSE=141;
360
+ DOMAIN_PING=142;
361
+ TOOL_INFO_REQUEST=143;
362
+ TOOL_INFO_RESPONSE=144;
363
+
343
364
  }
344
365
 
345
366
  required Command trp_command=1;
@@ -403,6 +424,16 @@ message Message {
403
424
  optional FileResponse file_response=123;
404
425
  optional GraphRequest graph_request=130;
405
426
  optional GraphResponse graph_response=131;
427
+ optional AggregateSessionsRequest aggregate_sessions_request=140;
428
+ optional AggregateSessionsResponse aggregate_sessions_response=141;
429
+ optional AggregateResourcesRequest aggregate_resources_request=142;
430
+ optional AggregateResourcesResponse aggregate_resources_response=143;
431
+ optional RunToolRequest run_tool_request=144;
432
+ optional RunToolResponse run_tool_response=145;
433
+ optional HAControlRequest ha_control_request=150;
434
+ optional HAControlResponse ha_control_response=151;
435
+ optional ToolInfoRequest tool_info_request=152;
436
+ optional ToolInfoResponse tool_info_response=153;
406
437
  optional string destination_node=200; // todo move 2nd
407
438
  optional string probe_id=201; // todo move 3rd
408
439
  optional bool run_async=202; /// if run_async = true, then you will immediately get a AsynResponse with a token you can poll
@@ -429,6 +460,8 @@ message HelloResponse{
429
460
  optional string station_id_request=2; /// station id found in the request
430
461
  optional string message=3; /// message found in the request
431
462
  optional int64 local_timestamp=4; /// local timestamp at server, used to detect drifts
463
+ optional string local_timestamp_string=5; /// on server with time zone, use this
464
+ optional bool is_primary=6; /// is this a primary or HA node
432
465
  }
433
466
 
434
467
  /// ErrorResponse
@@ -463,6 +496,9 @@ message CounterItemResponse{
463
496
  required KeyT key=2; /// key : filled up with readable,label automatically
464
497
  optional StatsArray totals=3; /// if volumes_only = 1 in request, this contains totals for each metric
465
498
  repeated StatsArray stats=4; /// time series stats - can use to draw charts etc
499
+ optional StatsArray maximums=5; /// if volumes_only = 1 this contains MAX(..)
500
+ optional StatsArray minimums=6; /// if volumes_only = 1 this contains MIN(..)
501
+ optional StatsArray samples=8; /// if volumes_only = 1 this contains SAMPLES(..)
466
502
  }
467
503
 
468
504
 
@@ -475,6 +511,8 @@ message CounterGroupTopperRequest{
475
511
  optional Timestamp time_instant=6; ///
476
512
  optional int64 flags=7;
477
513
  optional bool resolve_keys=8 [default=true]; /// retrieve labels as set in the response for each key
514
+ optional string key_filter=9; /// only get keys with this pattern and SYS:GROUP
515
+ optional string inverse_key_filter=10; /// only get keys without this pattern NOT
478
516
  }
479
517
 
480
518
  /// CounterGroupTopperResponse
@@ -529,7 +567,7 @@ message QuerySessionsRequest {
529
567
  optional KeyT dest_ip=7;
530
568
  optional KeyT dest_port=8;
531
569
  optional KeyT any_ip=9; /// source or dest match
532
- optional KeyT any_port=10; /// source or dest match
570
+ optional KeyT any_port=10; /// source or dest match
533
571
  repeated KeyT ip_pair=11; /// array of 2 ips
534
572
  optional KeyT protocol=12;
535
573
  optional string flowtag=13; /// string flow tagger text
@@ -543,6 +581,7 @@ message QuerySessionsRequest {
543
581
  optional bool resolve_keys=21[default=true];
544
582
  optional string outputpath=22; /// write results to a file (CSV) on trisul-hub (for very large dumps)
545
583
  repeated string idlist=23; /// array of flow ids , usually from SessionTracker response
584
+ optional KeyT any_nf_ifindex=24; /// composite query for both ifindex
546
585
  }
547
586
 
548
587
 
@@ -554,11 +593,76 @@ message QuerySessionsResponse {
554
593
  optional string outputpath=4; /// if 'outputpath' set in request, the sessions are here (in CSV format)
555
594
  }
556
595
 
596
+
597
+ /// AggregateSessions - count star
598
+ /// query flow and then count the numbers
599
+ /// by default aggregate on ALL fields
600
+ message AggregateSessionsRequest {
601
+ optional string session_group=2[default="{99A78737-4B41-4387-8F31-8077DB917336}"];
602
+ optional TimeInterval time_interval=3;
603
+ optional KeyT source_ip=5;
604
+ optional KeyT source_port=6;
605
+ optional KeyT dest_ip=7;
606
+ optional KeyT dest_port=8;
607
+ optional KeyT any_ip=9; /// source or dest match
608
+ optional KeyT any_port=10; /// source or dest match
609
+ repeated KeyT ip_pair=11; /// array of 2 ips
610
+ optional KeyT protocol=12;
611
+ optional string flowtag=13; /// string flow tagger text
612
+ optional KeyT nf_routerid=14;
613
+ optional KeyT nf_ifindex_in=15;
614
+ optional KeyT nf_ifindex_out=16;
615
+ optional string subnet_24=17; /// ip /24 subnet matching
616
+ optional string subnet_16=18; /// ip /16 subnet
617
+ optional int64 aggregate_topcount=19[default=100]; /// number of count-star per field
618
+ repeated string group_by_fields=20; /// list of field names
619
+ optional KeyT any_nf_ifindex=21; /// matches either gen2 or gen3
620
+ }
621
+
622
+ /// AggregateSessionsResponse
623
+ /// contains counts of each key
624
+ message AggregateSessionsResponse {
625
+
626
+ message KeyTCount {
627
+ required KeyT key=1; /// aggregate key
628
+ required int64 count=2; /// number of matching flows
629
+ required int64 metric=3; /// aggregated metrics, eg total bytes
630
+ }
631
+
632
+ message TagGroup {
633
+ required string group_name=1;
634
+ repeated KeyTCount tag_metrics=2;
635
+ }
636
+
637
+ required string session_group=2;
638
+ optional TimeInterval time_interval=3;
639
+ repeated KeyTCount source_ip=5; /// top IPs
640
+ repeated KeyTCount source_port=6; /// top ports
641
+ repeated KeyTCount dest_ip=7; /// dest IPs
642
+ repeated KeyTCount dest_port=8; /// dest ports
643
+ repeated KeyTCount any_ip=9; /// source or dest match
644
+ repeated KeyTCount any_port=10; /// source or dest match
645
+ repeated KeyTCount ip_pair=11; /// array of 2 ips
646
+ repeated KeyTCount protocol=12; /// protocols
647
+ repeated KeyTCount flowtag=13; /// string flow tagger text
648
+ repeated KeyTCount nf_routerid=14;
649
+ repeated KeyTCount nf_ifindex_in=15;
650
+ repeated KeyTCount nf_ifindex_out=16;
651
+ repeated KeyTCount subnet_24=17; /// ip /24 subnet matching
652
+ repeated KeyTCount internal_port=18; /// internal IP ports
653
+ repeated KeyTCount internal_ip=19; /// internal IPs
654
+ repeated KeyTCount external_ip=20; /// external IPs
655
+ repeated TagGroup tag_group=21; /// tag groups
656
+ }
657
+
658
+
557
659
  /// UpdatekeysRequest
558
660
  /// Response = OKResponse or ErrorResponse
559
661
  message UpdateKeyRequest{
560
662
  required string counter_group=2;
561
- repeated KeyT keys=4; /// key : if you set both key and label, the DB label will be updated
663
+ repeated KeyT keys=4; /// key : if you set both key and label, the DB label will be updated
664
+ optional bool remove_all_attributes=5; /// remove all key attributes from keys
665
+ repeated string remove_attributes=6; /// remove these attributes only from keys
562
666
  }
563
667
 
564
668
  /// SessionTrackerRequest - query session trackers
@@ -619,6 +723,7 @@ message QueryAlertsResponse {
619
723
 
620
724
 
621
725
  /// QueryResourcesRequest - resource queries
726
+ /// DNS, HTTP,
622
727
  message QueryResourcesRequest {
623
728
  required string resource_group=2;
624
729
  optional TimeInterval time_interval=3;
@@ -648,6 +753,30 @@ message QueryResourcesResponse {
648
753
  }
649
754
 
650
755
 
756
+ /// AggregatedResourceRequest - resource queries
757
+ /// DNS, HTTP,
758
+ message AggregateResourcesRequest {
759
+ required QueryResourcesRequest query=1;
760
+ optional int64 aggregate_topcount=2[default=100]; /// number of count-star per field
761
+ }
762
+
763
+ /// AggregateResourcesResponse
764
+ /// various counters
765
+ message AggregateResourcesResponse {
766
+
767
+ message KeyTCount {
768
+ required KeyT key=1;
769
+ required int64 count=2;
770
+ }
771
+
772
+ repeated KeyTCount source_ip=5;
773
+ repeated KeyTCount source_port=6;
774
+ repeated KeyTCount destination_ip=7;
775
+ repeated KeyTCount destination_port=8;
776
+ repeated KeyTCount uri=9; /// group by URI
777
+ repeated KeyTCount userlabel=10; /// group by Pattern
778
+ }
779
+
651
780
 
652
781
  /// KeySpaceRequest - search hits in Key Space
653
782
  /// for example you can search the key space 10.0.0.0 to 11.0.0.0 to get all IP
@@ -681,6 +810,8 @@ message TopperTrendRequest {
681
810
  optional int64 meter=3 [default=0];
682
811
  optional int64 maxitems=4 [default=100];
683
812
  optional TimeInterval time_interval=5;
813
+ optional string key_filter=6; /// only get keys with this pattern and SYS:GROUP
814
+ optional string inverse_key_filter=7; /// only get keys without this pattern NOT
684
815
  }
685
816
 
686
817
  /// TopperTrendResponse
@@ -747,9 +878,16 @@ message QueryFTSResponse {
747
878
  /// get the METERS METASLICE info
748
879
  /// .. response = TimeSlicesResponse
749
880
  message TimeSlicesRequest {
750
- optional bool get_disk_usage=1[default=false];
751
- optional bool get_all_engines=2[default=false];
752
- optional bool get_total_window=3[default=false];
881
+ optional bool get_disk_usage=1[default=false]; /// get disk usage per SLICE
882
+
883
+ optional bool get_all_engines=2[default=false]; /// by default (set to false) we only get instance-0
884
+ /// because are interested in iterating over
885
+ /// the time interval rather then each slice
886
+ /// inside the time interval. set this to true
887
+ /// if you want each slice to be reported
888
+
889
+ optional bool get_total_window=3[default=false]; /// just get the total time window in the
890
+ /// trisul database
753
891
  }
754
892
 
755
893
  /// .. response = TimeSlicesResponse
@@ -849,6 +987,7 @@ message DomainResponse {
849
987
  optional string extra_info=4;
850
988
  optional Timestamp register_time=5;
851
989
  optional Timestamp heartbeat_time=6;
990
+ optional bool is_primary=7[default=true]; /// primary or backup HA mode
852
991
 
853
992
  }
854
993
 
@@ -859,22 +998,62 @@ message DomainResponse {
859
998
  optional bool need_reconnect=5[default=false];
860
999
  }
861
1000
 
1001
+ /// messages to HAControl
1002
+ message HAControlRequest {
1003
+ enum HAOperation
1004
+ {
1005
+ HA_TEST_REACHABILITY=0; /// test if primary or backup is reachable (test the other side)
1006
+ HA_SWITCH_BACKUP=1; /// switch all nodes to backup HA
1007
+ HA_SWITCH_PRIMARY=2; /// switch to primary HA
1008
+ }
1009
+
1010
+
1011
+ required HAOperation cmd=1;
1012
+ optional string station_id=2;
1013
+ optional string params=3;
1014
+ }
1015
+
1016
+ message HAControlResponse {
1017
+ optional bool control_success=1;
1018
+ optional string station_id=2;
1019
+ optional string status_message=3;
1020
+ optional bool primary_reachable=4;
1021
+ optional bool backup_reachable=5;
1022
+ }
1023
+
1024
+ /// tool info
1025
+ /// general purpose probe information gathering tool
1026
+ /// use cases : get BGP route receiver peer status
1027
+ message ToolInfoRequest {
1028
+ optional string context_name=1;
1029
+ optional string tool_name=2;
1030
+ repeated string tool_info_requested=3; /// array of information elements requested
1031
+ }
1032
+
1033
+ message ToolInfoResponse {
1034
+ repeated NameValue tool_info=1; /// info elements Name=Value
1035
+ }
1036
+
862
1037
 
863
1038
  message NodeConfigRequest {
864
1039
  optional string message=1;
865
1040
 
866
1041
  message IntelFeed {
867
- required string guid=1; /// identifying feed group (eg Geo, Badfellas)
868
- optional string name=2; /// name
869
- optional string download_rules=3; /// xml file with feed update instructions
870
- repeated string uri=4; /// individual files in config//.. for FileRequest download
1042
+ required string guid=1; /// identifying feed group (eg Geo, Badfellas)
1043
+ optional string name=2; /// feed name (eg badfellas)
1044
+ optional string download_rules=3; /// xml file with feed update instructions
1045
+ repeated string uri=4; /// individual files in config//.. for FileRequest download
1046
+ repeated string usernodes=5; /// user requesting the feed, the probe0, probe1, etc
1047
+ optional int64 sub_feed_id=6[default=-1];/// sub feed ID, when a feed consists of several sub-feeds
1048
+ optional bool restore_mode=7[default=false]; /// restore mode will backup and restore, used with add,remove
1049
+
871
1050
  }
872
1051
 
873
1052
  optional IntelFeed add_feed=2;
874
1053
  optional IntelFeed process_new_feed=3;
875
1054
  optional bool get_all_nodes=4[default=true];
876
1055
  repeated NameValue query_config=5;
877
-
1056
+ optional IntelFeed remove_feed=6;
878
1057
  }
879
1058
 
880
1059
  message NodeConfigResponse {
@@ -905,8 +1084,9 @@ message ContextCreateRequest {
905
1084
  /// ContextInfo : one or all contexts
906
1085
  /// use is_init to prime with config
907
1086
  message ContextInfoRequest {
908
- optional string context_name=1; /// if not set all context get in
1087
+ optional string context_name=1; /// if not set all context get in
909
1088
  optional bool get_size_on_disk=2[default=false]; /// get size on disk (expensive)
1089
+ optional string tool_name=3; /// get status of this tool, freeform bgp, suricata, snort, udpsink etc..
910
1090
  }
911
1091
 
912
1092
  message ContextInfoResponse {
@@ -916,11 +1096,11 @@ message ContextInfoResponse {
916
1096
  {
917
1097
  required string context_name=1;
918
1098
  required bool is_initialized=2;
919
- required bool is_running=3;
1099
+ required bool is_running=3; /// trisul processes runs
920
1100
  optional int64 size_on_disk=4;
921
1101
  optional TimeInterval time_interval=5;
922
1102
  optional bool is_clean=6;
923
- optional string extrainfo=7;
1103
+ optional string extrainfo=7; /// freeform text output when tool is specified , can be long string
924
1104
  repeated TimeInterval run_history=8;
925
1105
  optional string profile=9;
926
1106
  optional string runmode=10;
@@ -1137,3 +1317,24 @@ message GraphResponse {
1137
1317
  /// repeated because returned in time chunks
1138
1318
  }
1139
1319
 
1320
+ /// RunToolRequest : run set of named tools
1321
+ message RunToolRequest {
1322
+ required string context_name=1; /// if not set all context get in
1323
+ enum NodeTool {
1324
+ PING=1;
1325
+ DF=2;
1326
+ GEOQUERY=3;
1327
+ TOP=4;
1328
+ BGPQUERY=5;
1329
+ }
1330
+ required NodeTool tool=2; /// which of these tools you want to run on node
1331
+ optional string tool_input=3; /// input
1332
+ optional string tool_input_file_data=4;/// data that goes into a tool input file
1333
+ }
1334
+
1335
+ /// RunToolResponse : ouput
1336
+ message RunToolResponse {
1337
+ required string context_name=1; /// if not set all context get in
1338
+ optional string tool_output=2; /// cmd lines
1339
+ }
1340
+
data/trisulrp.gemspec CHANGED
@@ -2,18 +2,18 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: trisulrp 3.2.9 ruby lib
5
+ # stub: trisulrp 3.2.26 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
- s.name = "trisulrp"
9
- s.version = "3.2.9"
8
+ s.name = "trisulrp".freeze
9
+ s.version = "3.2.26"
10
10
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
- s.authors = ["vivek"]
14
- s.date = "2018-10-05"
15
- s.description = "This gem deals about the trisul remote protocol"
16
- s.email = "vivek_rajagopal@yahoo.com"
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["vivek".freeze]
14
+ s.date = "2021-04-07"
15
+ s.description = "This gem deals about the trisul remote protocol".freeze
16
+ s.email = "vivek_rajagopal@yahoo.com".freeze
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE.txt",
19
19
  "README.rdoc"
@@ -47,33 +47,33 @@ Gem::Specification.new do |s|
47
47
  "test/test_trisulrp.rb",
48
48
  "trisulrp.gemspec"
49
49
  ]
50
- s.homepage = "http://github.com/vivekrajan/trisulrp"
51
- s.licenses = ["MIT"]
52
- s.rubygems_version = "2.5.1"
53
- s.summary = "trisul trp"
50
+ s.homepage = "http://github.com/vivekrajan/trisulrp".freeze
51
+ s.licenses = ["MIT".freeze]
52
+ s.rubygems_version = "3.0.3".freeze
53
+ s.summary = "trisul trp".freeze
54
54
 
55
55
  if s.respond_to? :specification_version then
56
56
  s.specification_version = 4
57
57
 
58
58
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
59
- s.add_runtime_dependency(%q<protobuf>, [">= 0"])
60
- s.add_development_dependency(%q<shoulda>, [">= 0"])
61
- s.add_development_dependency(%q<bundler>, [">= 0"])
62
- s.add_development_dependency(%q<juwelier>, [">= 0"])
63
- s.add_development_dependency(%q<simplecov>, [">= 0"])
59
+ s.add_runtime_dependency(%q<protobuf>.freeze, [">= 0"])
60
+ s.add_development_dependency(%q<shoulda>.freeze, [">= 0"])
61
+ s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
62
+ s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
63
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
64
64
  else
65
- s.add_dependency(%q<protobuf>, [">= 0"])
66
- s.add_dependency(%q<shoulda>, [">= 0"])
67
- s.add_dependency(%q<bundler>, [">= 0"])
68
- s.add_dependency(%q<juwelier>, [">= 0"])
69
- s.add_dependency(%q<simplecov>, [">= 0"])
65
+ s.add_dependency(%q<protobuf>.freeze, [">= 0"])
66
+ s.add_dependency(%q<shoulda>.freeze, [">= 0"])
67
+ s.add_dependency(%q<bundler>.freeze, [">= 0"])
68
+ s.add_dependency(%q<juwelier>.freeze, [">= 0"])
69
+ s.add_dependency(%q<simplecov>.freeze, [">= 0"])
70
70
  end
71
71
  else
72
- s.add_dependency(%q<protobuf>, [">= 0"])
73
- s.add_dependency(%q<shoulda>, [">= 0"])
74
- s.add_dependency(%q<bundler>, [">= 0"])
75
- s.add_dependency(%q<juwelier>, [">= 0"])
76
- s.add_dependency(%q<simplecov>, [">= 0"])
72
+ s.add_dependency(%q<protobuf>.freeze, [">= 0"])
73
+ s.add_dependency(%q<shoulda>.freeze, [">= 0"])
74
+ s.add_dependency(%q<bundler>.freeze, [">= 0"])
75
+ s.add_dependency(%q<juwelier>.freeze, [">= 0"])
76
+ s.add_dependency(%q<simplecov>.freeze, [">= 0"])
77
77
  end
78
78
  end
79
79
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trisulrp
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.9
4
+ version: 3.2.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - vivek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-05 00:00:00.000000000 Z
11
+ date: 2021-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: protobuf
@@ -134,8 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
134
  - !ruby/object:Gem::Version
135
135
  version: '0'
136
136
  requirements: []
137
- rubyforge_project:
138
- rubygems_version: 2.5.1
137
+ rubygems_version: 3.0.3
139
138
  signing_key:
140
139
  specification_version: 4
141
140
  summary: trisul trp