diff --git a/app/models/host.rb b/app/models/host.rb index 407fb1a..648ab65 100644 --- a/app/models/host.rb +++ b/app/models/host.rb @@ -1,75 +1,75 @@ class Host < ActiveRecord::Base + establish_connection Baas::settings[:local_db] + FILE_RETENTION_DAYS = 60 JOB_RETENTION_DAYS = 180 CATALOG = 'MyCatalog' AUTOPRUNE = 1 - establish_connection :local_development - enum status: { draft: 0, pending: 1, config: 2, ready: 3 } belongs_to :client, class_name: :Client, foreign_key: :name, primary_key: :name has_many :filesets, dependent: :destroy has_many :job_templates, dependent: :destroy validates :file_retention, :job_retention, :port, :password, presence: true validates :port, numericality: true validates :name, presence: true, uniqueness: true validate :fqdn_format scope :not_baculized, -> { where(baculized: false) } before_validation :set_retention, :unset_baculized, :sanitize_name def baculize_config templates = job_templates.enabled.includes(:fileset, :schedule) result = [self] + templates.map {|x| [x, x.fileset, x.schedule] }.flatten result.map(&:to_bacula_config_array) end def to_bacula_config_array [ "Client {", " Name = #{name}", " Address = #{fqdn}", " FDPort = #{port}", " Catalog = #{CATALOG}", " Password = \"#{password}\"", " File Retention = #{file_retention} days", " Job Retention = #{job_retention} days", " AutoPrune = yes", "}" ] end def auto_prune_human AUTOPRUNE == 1 ? 'yes' : 'no' end private def sanitize_name self.name = fqdn end def set_retention self.file_retention = FILE_RETENTION_DAYS self.job_retention = JOB_RETENTION_DAYS end def unset_baculized self.baculized = false if new_record? true end def fqdn_format regex = /(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(? { where(enabled: true) } # configurable DEFAULT_OPTIONS = { storage: :File, pool: :Default, messages: :Standard, priority: 10, :'Write Bootstrap' => '"/var/lib/bacula/%c.bsr"' } def to_bacula_config_array ['Job {'] + DEFAULT_OPTIONS.map { |k,v| " #{k.capitalize} = #{v}" } + options_array.map { |x| " #{x}" } + ['}'] end def priority DEFAULT_OPTIONS[:priority] end private def options_array result = restore? ? ['Where = "/tmp/bacula-restores"'] : [] result += [ "Name = \"#{name}\"", "FileSet = \"#{fileset.name}\"", "Client = \"#{host.name}\"", "Type = \"#{job_type.capitalize}\"", "Schedule = \"#{schedule.name}\"" ] end end diff --git a/app/models/user.rb b/app/models/user.rb index 4bce879..b08600d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,7 +1,7 @@ class User < ActiveRecord::Base - establish_connection :local_development + establish_connection Baas::settings[:local_db] enum user_type: { institutional: 0, vima: 1, okeanos: 2, admin: 3 } validates :username, :user_type, presence: true end