]> gitweb.fluxo.info Git - leap/leap_cli.git/commitdiff
disabled nodes -- ensure the disabled nodes are also removed from the services and...
authorelijah <elijah@riseup.net>
Mon, 27 May 2013 23:46:55 +0000 (16:46 -0700)
committerelijah <elijah@riseup.net>
Mon, 27 May 2013 23:46:55 +0000 (16:46 -0700)
lib/leap_cli/config/manager.rb

index dc74b6cc3a528cc71132ac389774b53b55d00748..a88f7d011a859239f8f7f35faff0f148dc2b5d74 100644 (file)
@@ -47,18 +47,8 @@ module LeapCli
           @nodes[name] = apply_inheritance(node)
         end
 
-        # remove disabled nodes
-        @disabled_nodes = Config::ObjectList.new
         unless options[:include_disabled]
-          @nodes.select! do |name, node|
-            if node.enabled
-              true
-            else
-              log 2, :skipping, "disabled node #{name}."
-              @disabled_nodes[name] = node
-              false
-            end
-          end
+          remove_disabled_nodes
         end
 
         # validate
@@ -293,6 +283,30 @@ module LeapCli
         return new_node
       end
 
+      def remove_disabled_nodes
+        @disabled_nodes = Config::ObjectList.new
+        @nodes.select! do |name, node|
+          if node.enabled
+            true
+          else
+            log 2, :skipping, "disabled node #{name}."
+            @disabled_nodes[name] = node
+            if node['services']
+              node['services'].to_a.each do |node_service|
+                @services[node_service].node_list.delete(node.name)
+              end
+            end
+            if node['tags']
+              node['tags'].to_a.each do |node_tag|
+                @tags[node_tag].node_list.delete(node.name)
+              end
+            end
+            false
+          end
+        end
+      end
+
+
       #
       # returns a set of nodes corresponding to a single name, where name could be a node name, service name, or tag name.
       #