Browse Source

fix for Model#_load to correctly initialize the current model in storage config object and some cleanups

master
Georg Hopp 15 years ago
committed by Georg Hopp
parent
commit
a4818bf1d6
  1. 18
      model.rb
  2. 16
      storage.rb
  3. 12
      storage/config.rb
  4. 102
      tester.rb

18
model.rb

@ -42,21 +42,25 @@ module DsAdmin::Model
initialize(_load(id))
end
##
# used to save either new or changed models
#
# @storage is free to change an already existent storage id
# for organizational, indexing or other reasons thus it
# always has to be stored back into @id
#
def save
@id = @storage.create_id(self) unless @id
@storage.write(self)
@id = @storage.write(self)
end
def update
@storage.write(self)
end
def to_sym
def config_key
self.class.to_s.to_sym
end
protected
def _load(id)
@@storage.config.model = self
data = @@storage.find {|data| data[:id] == id}
throw "unknown id (#{id})" unless data
data

16
storage.rb

@ -1,9 +1,9 @@
module DsAdmin::Storage
include Enumerable
DsAdmin::Storage.autoload(:Config, 'storage/config')
DsAdmin::Storage.autoload(:Ldap, 'storage/ldap')
DsAdmin::Storage.autoload(:Mysql, 'storage/mysql')
DsAdmin::Storage.autoload(:Config, 'storage/config')
attr_accessor :config
@ -15,23 +15,19 @@ module DsAdmin::Storage
read.each(&block)
end
##
# We don't need this....the 'id' is a storage id and as
# thus returned after successfully writing a new entry.
#
def create_id(model)
return "dummy id for #{model.inspect}"
end
def read
throw "#{self.class}: read not implemented"
end
##
# write has to return the storage id of the written
# entry.
#
def write(model)
throw "#{self.class}: write not implemented"
end
def to_sym
def config_key
self.class.to_s.to_sym
end
end

12
storage/config.rb

@ -1,21 +1,19 @@
require 'yaml'
class DsAdmin::Storage::Config
attr_accessor :model
def initialize(yml_file)
@config = YAML.load_file(yml_file)
def initialize(conf_data)
@config = conf_data
end
def con(storage)
@config[storage.to_sym][:con]
@config[storage.config_key][:con]
end
def query(storage)
@config[storage.to_sym][@model.to_sym][:query]
@config[storage.config_key][@model.config_key][:query]
end
def map(storage)
@config[storage.to_sym][@model.to_sym][:map]
@config[storage.config_key][@model.config_key][:map]
end
end

102
tester.rb

@ -1,7 +1,10 @@
require 'ds_admin'
require 'yaml'
config = DsAdmin::Storage::Config.new(File.dirname(__FILE__) + '/config/storage.yml')
DsAdmin::Model.storage = DsAdmin::Storage::Ldap.new(config)
DsAdmin::Model.storage = DsAdmin::Storage::Ldap.new(
DsAdmin::Storage::Config.new(
YAML.load_file(File.dirname(__FILE__) + '/config/storage.yml')
))
user = DsAdmin::Model::User.new
group = DsAdmin::Model::Group.new
@ -10,31 +13,108 @@ alias_role = DsAdmin::Model::MailAliasRole.new
alias_person = DsAdmin::Model::MailAliasPerson.new
account = DsAdmin::Model::MailAccount.new
puts '=== base objects ==='
puts 'base: ' + user.inspect
puts 'base: ' + group.inspect
puts 'base: ' + site.inspect
puts 'base: ' + alias_role.inspect
puts 'base: ' + alias_person.inspect
puts 'base: ' + account.inspect
puts
puts '=== Model#all ==='
puts user.all.inspect
puts 'base: ' + user.inspect
puts group.all.inspect
puts 'base: ' + group.inspect
puts site.all.inspect
puts 'base: ' + site.inspect
puts alias_role.all.inspect
puts 'base: ' + alias_role.inspect
puts alias_person.all.inspect
puts 'base: ' + alias_person.inspect
puts account.all.inspect
puts 'base: ' + account.inspect
puts
puts '=== DsAdmin each ==='
user.each {|user| puts user.inspect}
user.each {|u| puts u.inspect}
puts 'base: ' + user.inspect
puts '---'
group.each {|group| puts group.inspect}
group.each {|g| puts g.inspect}
puts 'base: ' + group.inspect
puts '---'
site.each {|site| puts site.inspect}
site.each {|s| puts s.inspect}
puts 'base: ' + site.inspect
puts '---'
alias_role.each {|ma_role| puts ma_role.inspect}
alias_role.each {|mar| puts mar.inspect}
puts 'base: ' + alias_role.inspect
puts '---'
alias_person.each {|ma_person| puts ma_person.inspect}
alias_person.each {|map| puts map.inspect}
puts 'base: ' + alias_person.inspect
puts '---'
account.each {|macc| puts macc.inspect}
puts 'base: ' + account.inspect
puts
puts '=== DsAdmin Enumerable ==='
puts user.find {|user| user.uid == '1000'}.inspect
puts user.find {|u| u.uid == '1000'}.inspect
puts 'base: ' + user.inspect
puts '---'
puts group.find {|group| group.gid == '10'}.inspect
puts group.find {|g| g.gid == '10'}.inspect
puts 'base: ' + group.inspect
puts '---'
puts site.find {|site| site.name == 'steffers.org'}.inspect
puts site.find {|s| s.name == 'steffers.org'}.inspect
puts 'base: ' + site.inspect
puts '---'
puts alias_role.find_all {|mar| mar.maildrop == 'abuse'}.inspect
puts 'base: ' + alias_role.inspect
puts '---'
puts alias_person.find {|map| map.mail == 'georg@steffers.org'}.inspect
puts 'base: ' + alias_person.inspect
puts '---'
puts account.find {|acc| acc.mail == 'drachenfrau@steffers.org'}.inspect
puts account.find {|macc| macc.mail == 'drachenfrau@steffers.org'}.inspect
puts 'base: ' + account.inspect
puts
puts '=== Model#load ==='
puts user.load('uid=georg,ou=user,o=system,dc=weird-web-workers,dc=org').inspect
puts 'base: ' + user.inspect
puts '---'
puts group.load('cn=wheel,ou=group,o=system,dc=weird-web-workers,dc=org').inspect
puts 'base: ' + group.inspect
puts '---'
puts site.load('o=steffers.org,o=hosting,dc=weird-web-workers,dc=org').inspect
puts 'base: ' + site.inspect
puts '---'
puts alias_role.load('cn=abuse,o=weird-web-workers.org,o=hosting,dc=weird-web-workers,dc=org').inspect
puts 'base: ' + alias_role.inspect
puts '---'
puts alias_person.load('mail=georg@steffers.org,o=steffers.org,o=hosting,dc=weird-web-workers,dc=org').inspect
puts 'base: ' + alias_person.inspect
puts '---'
puts account.load('mail=drachenfrau@steffers.org,o=steffers.org,o=hosting,dc=weird-web-workers,dc=org').inspect
puts 'base: ' + account.inspect
puts
puts '=== Model#load! ==='
user.load!('uid=georg,ou=user,o=system,dc=weird-web-workers,dc=org')
puts 'base: ' + user.inspect
puts '---'
group.load!('cn=wheel,ou=group,o=system,dc=weird-web-workers,dc=org')
puts 'base: ' + group.inspect
puts '---'
site.load!('o=steffers.org,o=hosting,dc=weird-web-workers,dc=org')
puts 'base: ' + site.inspect
puts '---'
alias_role.load!('cn=abuse,o=weird-web-workers.org,o=hosting,dc=weird-web-workers,dc=org')
puts 'base: ' + alias_role.inspect
puts '---'
alias_person.load!('mail=georg@steffers.org,o=steffers.org,o=hosting,dc=weird-web-workers,dc=org')
puts 'base: ' + alias_person.inspect
puts '---'
account.load!('mail=drachenfrau@steffers.org,o=steffers.org,o=hosting,dc=weird-web-workers,dc=org')
puts 'base: ' + account.inspect
puts
puts 'Memory useage: ' + `ps -o rss= -p #{Process.pid}`
Loading…
Cancel
Save