junoser 0.4.6 → 0.5.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.
@@ -16,8 +16,9 @@ module Junoser
16
16
 
17
17
  def rule
18
18
  str = @rule.read
19
+ str = process_lines(str)
19
20
  str = str.split(/\n/).map {|l|
20
- format(process_line(l)) unless l =~ /^ *#/ # Skip additional comment lines
21
+ process_line(l) unless l =~ /^ *#/ # Skip additional comment lines
21
22
  }.compact.join("\n")
22
23
  finalize(str)
23
24
  end
@@ -161,9 +162,12 @@ module Junoser
161
162
  end
162
163
 
163
164
  def process_reserved_word(str)
164
- # ieee-802.3ad -> 802.3ad
165
+ # ieee-802.3ad -> 802.3ad
165
166
  str.gsub! 'ieee-802.3ad', '802.3ad'
166
167
 
168
+ # end-range -> to
169
+ str.gsub! '"end-range"', '"to"'
170
+
167
171
  # "policy | Define a policy context from this zone" -> "from-zone | Define a policy context from this zone"
168
172
  str.gsub! 'policy | Define a policy context from this zone', 'from-zone | Define a policy context from this zone'
169
173
  # "to-zone-name | Destination zone" -> "to-zone | Destination zone"
@@ -171,6 +175,18 @@ module Junoser
171
175
  # "system-name | System name override" -> "name | System name override"
172
176
  str.gsub! 'system-name | System name override', 'name | System name override'
173
177
 
178
+ # "set class-of-service interfaces all unit"
179
+ str.gsub! '"unit(*)"', '"unit(*|arg)"'
180
+ # "classifiers xxx"
181
+ str.gsub! '["default"]', '["default", "arg"]'
182
+
183
+ # keywords "dest-nat-rule-match", "src-nat-rule-match", "static-nat-rule-match" are wrong
184
+ str.gsub!(/"(dest|src|static)-nat-rule-match/) { '"match' }
185
+
186
+ # faster interface speed support
187
+ str.gsub! '"40g", "oc3"', '"40g", "100g", "200g", "400g", "800g", "oc3"'
188
+ str.gsub! '"100G"', '"100G", "200G", "400G", "800G"'
189
+
174
190
  fix_route_filter(str)
175
191
 
176
192
  str
@@ -192,6 +208,15 @@ module Junoser
192
208
  str
193
209
  end
194
210
 
211
+ def process_lines(str)
212
+ # "set protocols mpls path"
213
+ str.gsub!(/("path" arg \(.*Route of a label-switched path.*)(\s*)c\(/) do
214
+ "#{$1}#{$2}s(#{$2}ipaddr,"
215
+ end
216
+
217
+ str
218
+ end
219
+
195
220
  def finalize(lines)
196
221
  lines = balance_parenthesis(lines)
197
222
  objectize_arg_of_s(lines)