]> gitweb.fluxo.info Git - leap/leap_cli.git/commitdiff
remove old secrets from secrets.json if they are not defined anywhere.
authorelijah <elijah@riseup.net>
Mon, 28 Jan 2013 10:45:36 +0000 (02:45 -0800)
committerelijah <elijah@riseup.net>
Mon, 28 Jan 2013 10:45:36 +0000 (02:45 -0800)
lib/leap_cli.rb
lib/leap_cli/config/manager.rb
lib/leap_cli/config/object.rb
lib/leap_cli/config/secrets.rb [new file with mode: 0644]

index 31a9d8f0fd16d71fb76b371a8ab0b8a6a563ad33..384a5f2b2169c945621e499d52b6f700487d9135 100644 (file)
@@ -20,6 +20,7 @@ require 'leap_cli/ssh_key'
 require 'leap_cli/config/object'
 require 'leap_cli/config/node'
 require 'leap_cli/config/tag'
+require 'leap_cli/config/secrets'
 require 'leap_cli/config/object_list'
 require 'leap_cli/config/manager'
 
index c860b5c73adbe5d08a14b436b1793ae0a536f6fe..5fc4499189c98aa1a88674175ddab647ce054a42 100644 (file)
@@ -35,7 +35,7 @@ module LeapCli
         @nodes    = load_all_json(Path.named_path([:node_config, '*'],    @provider_dir), Config::Node)
         @common   = load_json(common_path, Config::Object)
         @provider = load_json(provider_path, Config::Object)
-        @secrets  = load_json(Path.named_path(:secrets_config,  @provider_dir), Config::Object)
+        @secrets  = load_json(Path.named_path(:secrets_config,  @provider_dir), Config::Secrets)
 
         # inherit
         @services.inherit_from! base_services
index ef5133f3c3d95895f41a25e02308bba98f555ad2..e039660ca2979ef9f9395fe9b494332ecfd65334 100644 (file)
@@ -270,7 +270,7 @@ module LeapCli
       # manager.export_secrets should be called later to capture any newly generated secrets.
       #
       def secret(name, length=32)
-        @manager.secrets[name.to_s] ||= Util::Secret.generate(length)
+        @manager.secrets.set(name, Util::Secret.generate(length))
       end
 
       #
diff --git a/lib/leap_cli/config/secrets.rb b/lib/leap_cli/config/secrets.rb
new file mode 100644 (file)
index 0000000..00d0cd6
--- /dev/null
@@ -0,0 +1,33 @@
+#
+#
+# A class for the secrets.json file
+#
+#
+
+module LeapCli; module Config
+
+  class Secrets < Object
+    attr_reader :node_list
+
+    def initialize(manager=nil)
+      super(manager)
+      @discovered_keys = {}
+    end
+
+    def set(key, value)
+      key = key.to_s
+      @discovered_keys[key] = true
+      self[key] ||= value
+    end
+
+    def dump_json
+      self.each_key do |key|
+        unless @discovered_keys[key]
+          self.delete(key)
+        end
+      end
+      super
+    end
+  end
+
+end; end