fluent-plugin-juniper-telemetry_tech-mocha 0.4.0

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.
@@ -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
+