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'
@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
# 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
#
--- /dev/null
+#
+#
+# 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