trisulrp 3.2.9 → 3.2.26

Sign up to get free protection for your applications and to get access to all the features.
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