X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/fb1f1d56e8d8a6a86b79c71546e6c114fec2640c..b88e04237dcfbf1d7c4b7aa6023465f8e4a34f44:/cookbooks/networking/libraries/interfaces.rb diff --git a/cookbooks/networking/libraries/interfaces.rb b/cookbooks/networking/libraries/interfaces.rb index cd9116dfa..64aecdeca 100644 --- a/cookbooks/networking/libraries/interfaces.rb +++ b/cookbooks/networking/libraries/interfaces.rb @@ -1,23 +1,16 @@ -class Chef - class Node - def interfaces(options = {}, &block) - interfaces = [] +module OpenStreetMap + module Mixin + module Interfaces + def interfaces(role: nil) + networking = construct_attributes[:networking] || {} + networking_interfaces = networking[:interfaces] || {} - networking = construct_attributes[:networking] || {} - networking_interfaces = networking[:interfaces] || [] - - networking_interfaces.each_value do |interface| - next unless options[:role].nil? || interface[:role].to_s == options[:role].to_s - next unless options[:family].nil? || interface[:family].to_s == options[:family].to_s - - if block.nil? - interfaces << interface - else - block.call(interface) + networking_interfaces.each_value.select do |interface| + role.nil? || interface[:role].to_s == role.to_s end end - - interfaces end end end + +Chef::Node.include(OpenStreetMap::Mixin::Interfaces)