fluent-plugin-juniper-telemetry_tech-mocha 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,147 @@
1
+ module Fluent
2
+ class TextParser
3
+ class JuniperNaParser < Parser
4
+
5
+ Plugin.register_parser("juniper_na", self)
6
+
7
+ config_param :output_format, :string, :default => 'structured'
8
+
9
+ # This method is called after config_params have read configuration parameters
10
+ def configure(conf)
11
+ super
12
+
13
+ ## Check if "output_format" has a valid value
14
+ unless @output_format.to_s == "structured" ||
15
+ @output_format.to_s == "flat" ||
16
+ @output_format.to_s == "statsd"
17
+
18
+ raise ConfigError, "output_format value '#{@output_format}' is not valid. Must be : structured, flat or statsd"
19
+ end
20
+ end
21
+ # This is the main method. The input "text" is the unit of data to be parsed.
22
+ # If this is the in_tail plugin, it would be a line. If this is for in_syslog,
23
+ # it is a single syslog message.
24
+ def parse(text)
25
+
26
+ resources = JSON.parse(text)
27
+ time = Engine.now
28
+
29
+ resources.each do |resource|
30
+ resource["Resources"].each do |data|
31
+ name = data["Res_ID"]
32
+
33
+ name_h = Hash.new
34
+ type = ''
35
+ if output_format.to_s == 'flat' ||
36
+ output_format.to_s == 'statsd'
37
+ name_gr = name_flat(name)
38
+
39
+ elsif output_format.to_s == 'structured'
40
+ name_h = name_hash(name)
41
+ type = name_h['type']
42
+
43
+ else
44
+ $log.warn "Output_format '#{output_format.to_s}' not supported."
45
+ end
46
+
47
+ ##
48
+ ## Extract data
49
+ ## First check if the value is a hash or not
50
+ ##
51
+ data["Data"].each do |key, value|
52
+ if value.is_a?(Hash)
53
+
54
+ ## If data is within a Hash, extract all values and construct new keys
55
+ data["Data"][key].each do |key2, value2|
56
+ sub_type = key + "." + key2
57
+
58
+ record = {}
59
+ if output_format.to_s == 'flat'
60
+ full_name = "#{name_gr}.#{sub_type}"
61
+ record[full_name.downcase]= value2
62
+
63
+ elsif output_format.to_s == 'structured'
64
+ name_h['type'] = type + sub_type
65
+ record['value'] = value2
66
+ record.merge!(name_h)
67
+
68
+ elsif output_format.to_s == 'statsd'
69
+ full_name = "#{name_gr}.#{sub_type}"
70
+ record[:statsd_type] = 'gauge'
71
+ record[:statsd_key] = full_name.downcase
72
+ record[:statsd_gauge] = value2
73
+ else
74
+ $log.warn "Output_format '#{output_format.to_s}' not supported for #{sub_type}"
75
+ end
76
+
77
+ yield time, record
78
+ end
79
+ else
80
+ record = {}
81
+ sub_type = key
82
+
83
+ if output_format.to_s == 'flat'
84
+ full_name = "#{name_gr}.#{sub_type}"
85
+ record[full_name.downcase]= value
86
+
87
+ elsif output_format.to_s == 'structured'
88
+ name_h['type'] = type + sub_type
89
+ record['value'] = value
90
+ record.merge!(name_h)
91
+
92
+ elsif output_format.to_s == 'statsd'
93
+ full_name = "#{name_gr}.#{sub_type}"
94
+ record[:statsd_type] = 'gauge'
95
+ record[:statsd_key] = full_name.downcase
96
+ record[:statsd_gauge] = value
97
+ else
98
+ $log.warn "Output_format '#{output_format.to_s}' not supported for #{sub_type}"
99
+ end
100
+
101
+ yield time, record
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+
108
+ def name_flat(res_id)
109
+
110
+ res_id.sub!(/^\//, "")
111
+
112
+ # ## Replace all / and : per .
113
+ res_id.gsub!('/', '.')
114
+ res_id.gsub!(':', '.')
115
+
116
+ return res_id
117
+ end
118
+
119
+ def name_hash(res_id)
120
+
121
+ # Parse Res_ID and convert to hash
122
+ # 1- Remove leading /
123
+ # 2- Split String by /
124
+ # 3- for each attribute split by : to extract key / value
125
+
126
+ res_id.sub!(/^\//, "")
127
+ attributes = res_id.split("/")
128
+
129
+ res_hash = Hash.new
130
+ type = ''
131
+
132
+ attributes.each do |attribute|
133
+ key_value = attribute.split(":")
134
+ res_hash[key_value[0].downcase] = key_value[1].downcase
135
+
136
+ if key_value[0].downcase != 'device'
137
+ type = type + key_value[0].downcase + '.'
138
+ end
139
+ end
140
+
141
+ res_hash['type'] = type
142
+
143
+ return res_hash
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,290 @@
1
+ # encoding: utf-8
2
+
3
+ ##
4
+ # This file is auto-generated. DO NOT EDIT!
5
+ #
6
+ require 'protobuf'
7
+
8
+ module Google
9
+ module Protobuf
10
+ ::Protobuf::Optionable.inject(self) { ::Google::Protobuf::FileOptions }
11
+
12
+ ##
13
+ # Message Classes
14
+ #
15
+ class FileDescriptorSet < ::Protobuf::Message; end
16
+ class FileDescriptorProto < ::Protobuf::Message; end
17
+ class DescriptorProto < ::Protobuf::Message
18
+ class ExtensionRange < ::Protobuf::Message; end
19
+ class ReservedRange < ::Protobuf::Message; end
20
+
21
+ end
22
+
23
+ class FieldDescriptorProto < ::Protobuf::Message
24
+ class Type < ::Protobuf::Enum
25
+ define :TYPE_DOUBLE, 1
26
+ define :TYPE_FLOAT, 2
27
+ define :TYPE_INT64, 3
28
+ define :TYPE_UINT64, 4
29
+ define :TYPE_INT32, 5
30
+ define :TYPE_FIXED64, 6
31
+ define :TYPE_FIXED32, 7
32
+ define :TYPE_BOOL, 8
33
+ define :TYPE_STRING, 9
34
+ define :TYPE_GROUP, 10
35
+ define :TYPE_MESSAGE, 11
36
+ define :TYPE_BYTES, 12
37
+ define :TYPE_UINT32, 13
38
+ define :TYPE_ENUM, 14
39
+ define :TYPE_SFIXED32, 15
40
+ define :TYPE_SFIXED64, 16
41
+ define :TYPE_SINT32, 17
42
+ define :TYPE_SINT64, 18
43
+ end
44
+
45
+ class Label < ::Protobuf::Enum
46
+ define :LABEL_OPTIONAL, 1
47
+ define :LABEL_REQUIRED, 2
48
+ define :LABEL_REPEATED, 3
49
+ end
50
+
51
+ end
52
+
53
+ class OneofDescriptorProto < ::Protobuf::Message; end
54
+ class EnumDescriptorProto < ::Protobuf::Message; end
55
+ class EnumValueDescriptorProto < ::Protobuf::Message; end
56
+ class ServiceDescriptorProto < ::Protobuf::Message; end
57
+ class MethodDescriptorProto < ::Protobuf::Message; end
58
+ class FileOptions < ::Protobuf::Message
59
+ class OptimizeMode < ::Protobuf::Enum
60
+ define :SPEED, 1
61
+ define :CODE_SIZE, 2
62
+ define :LITE_RUNTIME, 3
63
+ end
64
+
65
+ end
66
+
67
+ class MessageOptions < ::Protobuf::Message; end
68
+ class FieldOptions < ::Protobuf::Message
69
+ class CType < ::Protobuf::Enum
70
+ define :STRING, 0
71
+ define :CORD, 1
72
+ define :STRING_PIECE, 2
73
+ end
74
+
75
+ class JSType < ::Protobuf::Enum
76
+ define :JS_NORMAL, 0
77
+ define :JS_STRING, 1
78
+ define :JS_NUMBER, 2
79
+ end
80
+
81
+ end
82
+
83
+ class EnumOptions < ::Protobuf::Message; end
84
+ class EnumValueOptions < ::Protobuf::Message; end
85
+ class ServiceOptions < ::Protobuf::Message; end
86
+ class MethodOptions < ::Protobuf::Message; end
87
+ class UninterpretedOption < ::Protobuf::Message
88
+ class NamePart < ::Protobuf::Message; end
89
+
90
+ end
91
+
92
+ class SourceCodeInfo < ::Protobuf::Message
93
+ class Location < ::Protobuf::Message; end
94
+
95
+ end
96
+
97
+
98
+
99
+ ##
100
+ # Message Fields
101
+ #
102
+ class FileDescriptorSet
103
+ repeated ::Google::Protobuf::FileDescriptorProto, :file, 1
104
+ end
105
+
106
+ class FileDescriptorProto
107
+ optional :string, :name, 1
108
+ optional :string, :package, 2
109
+ repeated :string, :dependency, 3
110
+ repeated :int32, :public_dependency, 10
111
+ repeated :int32, :weak_dependency, 11
112
+ repeated ::Google::Protobuf::DescriptorProto, :message_type, 4
113
+ repeated ::Google::Protobuf::EnumDescriptorProto, :enum_type, 5
114
+ repeated ::Google::Protobuf::ServiceDescriptorProto, :service, 6
115
+ repeated ::Google::Protobuf::FieldDescriptorProto, :extension, 7
116
+ optional ::Google::Protobuf::FileOptions, :options, 8
117
+ optional ::Google::Protobuf::SourceCodeInfo, :source_code_info, 9
118
+ optional :string, :syntax, 12
119
+ end
120
+
121
+ class DescriptorProto
122
+ class ExtensionRange
123
+ optional :int32, :start, 1
124
+ optional :int32, :end, 2
125
+ end
126
+
127
+ class ReservedRange
128
+ optional :int32, :start, 1
129
+ optional :int32, :end, 2
130
+ end
131
+
132
+ optional :string, :name, 1
133
+ repeated ::Google::Protobuf::FieldDescriptorProto, :field, 2
134
+ repeated ::Google::Protobuf::FieldDescriptorProto, :extension, 6
135
+ repeated ::Google::Protobuf::DescriptorProto, :nested_type, 3
136
+ repeated ::Google::Protobuf::EnumDescriptorProto, :enum_type, 4
137
+ repeated ::Google::Protobuf::DescriptorProto::ExtensionRange, :extension_range, 5
138
+ repeated ::Google::Protobuf::OneofDescriptorProto, :oneof_decl, 8
139
+ optional ::Google::Protobuf::MessageOptions, :options, 7
140
+ repeated ::Google::Protobuf::DescriptorProto::ReservedRange, :reserved_range, 9
141
+ repeated :string, :reserved_name, 10
142
+ end
143
+
144
+ class FieldDescriptorProto
145
+ optional :string, :name, 1
146
+ optional :int32, :number, 3
147
+ optional ::Google::Protobuf::FieldDescriptorProto::Label, :label, 4
148
+ optional ::Google::Protobuf::FieldDescriptorProto::Type, :type, 5
149
+ optional :string, :type_name, 6
150
+ optional :string, :extendee, 2
151
+ optional :string, :default_value, 7
152
+ optional :int32, :oneof_index, 9
153
+ optional :string, :json_name, 10
154
+ optional ::Google::Protobuf::FieldOptions, :options, 8
155
+ end
156
+
157
+ class OneofDescriptorProto
158
+ optional :string, :name, 1
159
+ end
160
+
161
+ class EnumDescriptorProto
162
+ optional :string, :name, 1
163
+ repeated ::Google::Protobuf::EnumValueDescriptorProto, :value, 2
164
+ optional ::Google::Protobuf::EnumOptions, :options, 3
165
+ end
166
+
167
+ class EnumValueDescriptorProto
168
+ optional :string, :name, 1
169
+ optional :int32, :number, 2
170
+ optional ::Google::Protobuf::EnumValueOptions, :options, 3
171
+ end
172
+
173
+ class ServiceDescriptorProto
174
+ optional :string, :name, 1
175
+ repeated ::Google::Protobuf::MethodDescriptorProto, :method, 2
176
+ optional ::Google::Protobuf::ServiceOptions, :options, 3
177
+ end
178
+
179
+ class MethodDescriptorProto
180
+ optional :string, :name, 1
181
+ optional :string, :input_type, 2
182
+ optional :string, :output_type, 3
183
+ optional ::Google::Protobuf::MethodOptions, :options, 4
184
+ optional :bool, :client_streaming, 5, :default => false
185
+ optional :bool, :server_streaming, 6, :default => false
186
+ end
187
+
188
+ class FileOptions
189
+ optional :string, :java_package, 1
190
+ optional :string, :java_outer_classname, 8
191
+ optional :bool, :java_multiple_files, 10, :default => false
192
+ optional :bool, :java_generate_equals_and_hash, 20, :default => false
193
+ optional :bool, :java_string_check_utf8, 27, :default => false
194
+ optional ::Google::Protobuf::FileOptions::OptimizeMode, :optimize_for, 9, :default => ::Google::Protobuf::FileOptions::OptimizeMode::SPEED
195
+ optional :string, :go_package, 11
196
+ optional :bool, :cc_generic_services, 16, :default => false
197
+ optional :bool, :java_generic_services, 17, :default => false
198
+ optional :bool, :py_generic_services, 18, :default => false
199
+ optional :bool, :deprecated, 23, :default => false
200
+ optional :bool, :cc_enable_arenas, 31, :default => false
201
+ optional :string, :objc_class_prefix, 36
202
+ optional :string, :csharp_namespace, 37
203
+ optional :bool, :javanano_use_deprecated_package, 38
204
+ repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
205
+ # Extension Fields
206
+ extensions 1000...536870912
207
+ end
208
+
209
+ class MessageOptions
210
+ optional :bool, :message_set_wire_format, 1, :default => false
211
+ optional :bool, :no_standard_descriptor_accessor, 2, :default => false
212
+ optional :bool, :deprecated, 3, :default => false
213
+ optional :bool, :map_entry, 7
214
+ repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
215
+ # Extension Fields
216
+ extensions 1000...536870912
217
+ end
218
+
219
+ class FieldOptions
220
+ optional ::Google::Protobuf::FieldOptions::CType, :ctype, 1, :default => ::Google::Protobuf::FieldOptions::CType::STRING
221
+ optional :bool, :packed, 2
222
+ optional ::Google::Protobuf::FieldOptions::JSType, :jstype, 6, :default => ::Google::Protobuf::FieldOptions::JSType::JS_NORMAL
223
+ optional :bool, :lazy, 5, :default => false
224
+ optional :bool, :deprecated, 3, :default => false
225
+ optional :bool, :weak, 10, :default => false
226
+ repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
227
+ # Extension Fields
228
+ extensions 1000...536870912
229
+ end
230
+
231
+ class EnumOptions
232
+ optional :bool, :allow_alias, 2
233
+ optional :bool, :deprecated, 3, :default => false
234
+ repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
235
+ # Extension Fields
236
+ extensions 1000...536870912
237
+ end
238
+
239
+ class EnumValueOptions
240
+ optional :bool, :deprecated, 1, :default => false
241
+ repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
242
+ # Extension Fields
243
+ extensions 1000...536870912
244
+ end
245
+
246
+ class ServiceOptions
247
+ optional :bool, :deprecated, 33, :default => false
248
+ repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
249
+ # Extension Fields
250
+ extensions 1000...536870912
251
+ end
252
+
253
+ class MethodOptions
254
+ optional :bool, :deprecated, 33, :default => false
255
+ repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
256
+ # Extension Fields
257
+ extensions 1000...536870912
258
+ end
259
+
260
+ class UninterpretedOption
261
+ class NamePart
262
+ required :string, :name_part, 1
263
+ required :bool, :is_extension, 2
264
+ end
265
+
266
+ repeated ::Google::Protobuf::UninterpretedOption::NamePart, :name, 2
267
+ optional :string, :identifier_value, 3
268
+ optional :uint64, :positive_int_value, 4
269
+ optional :int64, :negative_int_value, 5
270
+ optional :double, :double_value, 6
271
+ optional :bytes, :string_value, 7
272
+ optional :string, :aggregate_value, 8
273
+ end
274
+
275
+ class SourceCodeInfo
276
+ class Location
277
+ repeated :int32, :path, 1, :packed => true
278
+ repeated :int32, :span, 2, :packed => true
279
+ optional :string, :leading_comments, 3
280
+ optional :string, :trailing_comments, 4
281
+ repeated :string, :leading_detached_comments, 6
282
+ end
283
+
284
+ repeated ::Google::Protobuf::SourceCodeInfo::Location, :location, 1
285
+ end
286
+
287
+ end
288
+
289
+ end
290
+
@@ -0,0 +1,117 @@
1
+ # encoding: utf-8
2
+
3
+ ##
4
+ # This file is auto-generated. DO NOT EDIT!
5
+ #
6
+ require 'protobuf'
7
+
8
+
9
+ ##
10
+ # Imports
11
+ #
12
+ require 'telemetry_top.pb'
13
+
14
+
15
+ ##
16
+ # Message Classes
17
+ #
18
+ class InlineJflow < ::Protobuf::Message; end
19
+ class InlineJflowNpuStats < ::Protobuf::Message; end
20
+
21
+
22
+ ##
23
+ # Message Fields
24
+ #
25
+ class InlineJflow
26
+ optional :string, :ipv4_flows_export_format, 2
27
+ optional :string, :ipv6_flows_export_format, 3
28
+ optional :string, :vpls_flows_export_format, 4
29
+ optional :string, :mpls_flows_export_format, 5
30
+ optional :uint32, :ipv4_route_record_cnt, 6
31
+ optional :uint32, :ipv6_route_record_cnt, 7
32
+ optional :uint32, :mpls_route_record_cnt, 8
33
+ optional :uint32, :autonomous_system_record_cnt, 9
34
+ optional :uint64, :ipv4_max_flows_count, 10
35
+ optional :uint64, :ipv6_max_flows_count, 11
36
+ optional :uint64, :vpls_max_flows_count, 12
37
+ optional :uint64, :mpls_max_flows_count, 13
38
+ optional :uint32, :memory_alloc_fail_cnt, 14, :".telemetry_options" => { :is_counter => true }
39
+ optional :uint32, :ipv4_configured_observation_domain_id, 15
40
+ optional :uint32, :ipv6_configured_observation_domain_id, 16
41
+ optional :uint32, :vpls_configured_observation_domain_id, 17
42
+ optional :uint32, :mpls_configured_observation_domain_id, 18
43
+ optional :uint32, :last_clear_timestamp, 19
44
+ optional :bool, :ipv6_extended_attribute, 20
45
+ optional :bool, :flexible_flow_sizing, 21
46
+ optional :bool, :use_extended_flow_memory, 22
47
+ repeated ::InlineJflowNpuStats, :npu_stats, 50
48
+ end
49
+
50
+ class InlineJflowNpuStats
51
+ required :uint32, :npu_identifier, 1
52
+ optional :uint64, :ipv4_flow_packets, 51, :".telemetry_options" => { :is_counter => true }
53
+ optional :uint64, :ipv4_flow_bytes, 52, :".telemetry_options" => { :is_counter => true }
54
+ optional :uint64, :ipv4_total_flows, 53, :".telemetry_options" => { :is_counter => true }
55
+ optional :uint64, :ipv4_active_flows, 54, :".telemetry_options" => { :is_counter => true }
56
+ optional :uint64, :ipv4_flows_exported, 55, :".telemetry_options" => { :is_counter => true }
57
+ optional :uint64, :ipv4_packets_exported, 56, :".telemetry_options" => { :is_counter => true }
58
+ optional :uint64, :ipv4_flows_inactive_timed_out, 57, :".telemetry_options" => { :is_counter => true }
59
+ optional :uint64, :ipv4_flows_active_timed_out, 58, :".telemetry_options" => { :is_counter => true }
60
+ optional :uint64, :ipv4_flow_create_failure, 59, :".telemetry_options" => { :is_counter => true }
61
+ optional :uint64, :ipv4_route_lookup_failure, 60, :".telemetry_options" => { :is_counter => true }
62
+ optional :uint64, :ipv4_autonomous_system_lookup_failure, 61, :".telemetry_options" => { :is_counter => true }
63
+ optional :uint64, :ipv4_flow_packet_export_failure, 62, :".telemetry_options" => { :is_counter => true }
64
+ optional :float, :ipv4_flow_table_utilization, 63, :".telemetry_options" => { :is_gauge => true }
65
+ optional :uint64, :ipv4_flow_insert_count, 64, :".telemetry_options" => { :is_counter => true }
66
+ optional :uint64, :ipv6_flow_packets, 101, :".telemetry_options" => { :is_counter => true }
67
+ optional :uint64, :ipv6_flow_bytes, 102, :".telemetry_options" => { :is_counter => true }
68
+ optional :uint64, :ipv6_total_flows, 103, :".telemetry_options" => { :is_counter => true }
69
+ optional :uint64, :ipv6_active_flows, 104, :".telemetry_options" => { :is_counter => true }
70
+ optional :uint64, :ipv6_flows_exported, 105, :".telemetry_options" => { :is_counter => true }
71
+ optional :uint64, :ipv6_packets_exported, 106, :".telemetry_options" => { :is_counter => true }
72
+ optional :uint64, :ipv6_flows_inactive_timed_out, 107, :".telemetry_options" => { :is_counter => true }
73
+ optional :uint64, :ipv6_flows_active_timed_out, 108, :".telemetry_options" => { :is_counter => true }
74
+ optional :uint64, :ipv6_flow_create_failure, 109, :".telemetry_options" => { :is_counter => true }
75
+ optional :uint64, :ipv6_route_lookup_failure, 110, :".telemetry_options" => { :is_counter => true }
76
+ optional :uint64, :ipv6_autonomous_system_lookup_failure, 111, :".telemetry_options" => { :is_counter => true }
77
+ optional :uint64, :ipv6_flow_packet_export_failure, 112, :".telemetry_options" => { :is_counter => true }
78
+ optional :float, :ipv6_flow_table_utilization, 113, :".telemetry_options" => { :is_gauge => true }
79
+ optional :uint64, :ipv6_flow_insert_count, 114, :".telemetry_options" => { :is_counter => true }
80
+ optional :uint64, :vpls_flow_packets, 151, :".telemetry_options" => { :is_counter => true }
81
+ optional :uint64, :vpls_flow_bytes, 152, :".telemetry_options" => { :is_counter => true }
82
+ optional :uint64, :vpls_total_flows, 153, :".telemetry_options" => { :is_counter => true }
83
+ optional :uint64, :vpls_active_flows, 154, :".telemetry_options" => { :is_counter => true }
84
+ optional :uint64, :vpls_flows_exported, 155, :".telemetry_options" => { :is_counter => true }
85
+ optional :uint64, :vpls_packets_exported, 156, :".telemetry_options" => { :is_counter => true }
86
+ optional :uint64, :vpls_flows_inactive_timed_out, 157, :".telemetry_options" => { :is_counter => true }
87
+ optional :uint64, :vpls_flows_active_timed_out, 158, :".telemetry_options" => { :is_counter => true }
88
+ optional :uint64, :vpls_flow_create_failure, 159, :".telemetry_options" => { :is_counter => true }
89
+ optional :uint64, :vpls_route_lookup_failure, 160, :".telemetry_options" => { :is_counter => true }
90
+ optional :uint64, :vpls_autonomous_system_lookup_failure, 161, :".telemetry_options" => { :is_counter => true }
91
+ optional :uint64, :vpls_flow_packet_export_failure, 162, :".telemetry_options" => { :is_counter => true }
92
+ optional :float, :vpls_flow_table_utilization, 163, :".telemetry_options" => { :is_gauge => true }
93
+ optional :uint64, :vpls_flow_insert_count, 164, :".telemetry_options" => { :is_counter => true }
94
+ optional :uint64, :mpls_flow_packets, 201, :".telemetry_options" => { :is_counter => true }
95
+ optional :uint64, :mpls_flow_bytes, 202, :".telemetry_options" => { :is_counter => true }
96
+ optional :uint64, :mpls_total_flows, 203, :".telemetry_options" => { :is_counter => true }
97
+ optional :uint64, :mpls_active_flows, 204, :".telemetry_options" => { :is_counter => true }
98
+ optional :uint64, :mpls_flows_exported, 205, :".telemetry_options" => { :is_counter => true }
99
+ optional :uint64, :mpls_packets_exported, 206, :".telemetry_options" => { :is_counter => true }
100
+ optional :uint64, :mpls_flows_inactive_timed_out, 207, :".telemetry_options" => { :is_counter => true }
101
+ optional :uint64, :mpls_flows_active_timed_out, 208, :".telemetry_options" => { :is_counter => true }
102
+ optional :uint64, :mpls_flow_create_failure, 209, :".telemetry_options" => { :is_counter => true }
103
+ optional :uint64, :mpls_route_lookup_failure, 210, :".telemetry_options" => { :is_counter => true }
104
+ optional :uint64, :mpls_autonomous_system_lookup_failure, 211, :".telemetry_options" => { :is_counter => true }
105
+ optional :uint64, :mpls_flow_packet_export_failure, 212, :".telemetry_options" => { :is_counter => true }
106
+ optional :float, :mpls_flow_table_utilization, 213, :".telemetry_options" => { :is_gauge => true }
107
+ optional :uint64, :mpls_flow_insert_count, 214, :".telemetry_options" => { :is_counter => true }
108
+ end
109
+
110
+
111
+ ##
112
+ # Extended Message Fields
113
+ #
114
+ class ::JuniperNetworksSensors < ::Protobuf::Message
115
+ optional ::InlineJflow, :".inline_jflow_stats_ext", 9, :extension => true
116
+ end
117
+