From 4c832158329593dc7a97dde5dde65d342add5c84 Mon Sep 17 00:00:00 2001 From: mikewiebe Date: Tue, 17 Apr 2018 15:26:53 -0400 Subject: [PATCH] Structured output needs to handle nil value cases --- lib/cisco_node_utils/client/utils.rb | 2 +- lib/cisco_node_utils/node.rb | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/cisco_node_utils/client/utils.rb b/lib/cisco_node_utils/client/utils.rb index ef7bbbcc..18b0088e 100644 --- a/lib/cisco_node_utils/client/utils.rb +++ b/lib/cisco_node_utils/client/utils.rb @@ -151,7 +151,7 @@ def self.filter_data(data: nil, end return final end - fail "No key \"#{filter}\" in #{data}" if data[filter].nil? + fail "No key \"#{filter}\" in #{data}" unless data.key?(filter) data = data[filter] end end diff --git a/lib/cisco_node_utils/node.rb b/lib/cisco_node_utils/node.rb index 5e200775..bde05460 100644 --- a/lib/cisco_node_utils/node.rb +++ b/lib/cisco_node_utils/node.rb @@ -122,7 +122,10 @@ def drill_down_structured(value, ref) value = value.is_a?(Hash) ? [value] : value data = nil value.each do |row| - data = row[data_key] if row[row_key].to_s[/#{row_index}/] + if row[row_key].to_s[/#{row_index}/] + data = row[data_key] + data = data.nil? ? '' : data + end end return value if data.nil? if regexp_filter