]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/networking/libraries/interfaces.rb
Merge interface families
[chef.git] / cookbooks / networking / libraries / interfaces.rb
index c2f170b9c73a2f56c290d0a0f3cc38110c563eae..64aecdeca7fb32b5ea9ebc774f1c3f6ccd46f884 100644 (file)
@@ -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
-          yield 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)