Page MenuHomeGRNET

No OneTemporary

File Metadata

Created
Sun, Aug 10, 3:38 AM
diff --git a/app/models/configuration_setting.rb b/app/models/configuration_setting.rb
new file mode 100644
index 0000000..a3e0ddf
--- /dev/null
+++ b/app/models/configuration_setting.rb
@@ -0,0 +1,57 @@
+# ConfigurationSetting class describes a model that keeps the current Bacula
+# configuration.
+#
+# It has some hard coded settings as defaults.
+# Archiving's admins can enter new settings concerning:
+#
+# * jobs
+# * clients
+#
+# and override the default ones.
+#
+# ConfigurationSetting is supposed to have only one record in persisted in the database
+# which will hold the altered configuration as a patch to the defaults.
+# Admins can reset this change at any time.
+class ConfigurationSetting < ActiveRecord::Base
+ serialize :job, JSON
+ serialize :client, JSON
+
+ JOB = {
+ storage: :File,
+ pool: :Default,
+ messages: :Standard,
+ priority: 10,
+ :'Write Bootstrap' => '"/var/lib/bacula/%c.bsr"'
+ }
+
+ CLIENT = {
+ file_retention: 60,
+ file_retention_period: :days,
+ job_retention: 180,
+ job_retention_period: :days
+ }
+
+ RETENTION_PERIODS = %w{seconds minutes hours days weeks months quarters years}
+
+ # Fetches the current configuration for jobs.
+ #
+ # The current configuration is the last submitted record, patched to the default
+ # settings.
+ # If there is no record, the default settings are returned
+ #
+ # @return [Hash] with settings
+ def self.current_job_settings
+ (last || new).job.symbolize_keys.reverse_merge(JOB.dup)
+ end
+
+ # Fetches the current configuration for clients.
+ #
+ # The current configuration is the last submitted record, patched to the default
+ # settings.
+ # If there is no record, the default settings are returned
+ #
+ # @return [Hash] with settings
+ def self.current_client_settings
+ (last || new).client.symbolize_keys.reverse_merge(CLIENT.dup)
+ end
+end

Event Timeline