Commit a4818bf1d60b74ae18105669239743e61bf3ae09

Authored by Georg GH. Hopp
Committed by Georg Hopp
1 parent 5da7e735

fix for Model#_load to correctly initialize the current model in storage config …

…object and some cleanups
@@ -42,21 +42,25 @@ module DsAdmin::Model @@ -42,21 +42,25 @@ module DsAdmin::Model
42 initialize(_load(id)) 42 initialize(_load(id))
43 end 43 end
44 44
  45 + ##
  46 + # used to save either new or changed models
  47 + #
  48 + # @storage is free to change an already existent storage id
  49 + # for organizational, indexing or other reasons thus it
  50 + # always has to be stored back into @id
  51 + #
45 def save 52 def save
46 - @id = @storage.create_id(self) unless @id  
47 - @storage.write(self) 53 + @id = @storage.write(self)
48 end 54 end
49 55
50 - def update  
51 - @storage.write(self)  
52 - end  
53 -  
54 - def to_sym 56 + def config_key
55 self.class.to_s.to_sym 57 self.class.to_s.to_sym
56 end 58 end
57 59
58 protected 60 protected
59 def _load(id) 61 def _load(id)
  62 + @@storage.config.model = self
  63 +
60 data = @@storage.find {|data| data[:id] == id} 64 data = @@storage.find {|data| data[:id] == id}
61 throw "unknown id (#{id})" unless data 65 throw "unknown id (#{id})" unless data
62 data 66 data
1 module DsAdmin::Storage 1 module DsAdmin::Storage
2 include Enumerable 2 include Enumerable
3 3
  4 + DsAdmin::Storage.autoload(:Config, 'storage/config')
4 DsAdmin::Storage.autoload(:Ldap, 'storage/ldap') 5 DsAdmin::Storage.autoload(:Ldap, 'storage/ldap')
5 DsAdmin::Storage.autoload(:Mysql, 'storage/mysql') 6 DsAdmin::Storage.autoload(:Mysql, 'storage/mysql')
6 - DsAdmin::Storage.autoload(:Config, 'storage/config')  
7 7
8 attr_accessor :config 8 attr_accessor :config
9 9
@@ -15,23 +15,19 @@ module DsAdmin::Storage @@ -15,23 +15,19 @@ module DsAdmin::Storage
15 read.each(&block) 15 read.each(&block)
16 end 16 end
17 17
18 - ##  
19 - # We don't need this....the 'id' is a storage id and as  
20 - # thus returned after successfully writing a new entry.  
21 - #  
22 - def create_id(model)  
23 - return "dummy id for #{model.inspect}"  
24 - end  
25 -  
26 def read 18 def read
27 throw "#{self.class}: read not implemented" 19 throw "#{self.class}: read not implemented"
28 end 20 end
29 21
  22 + ##
  23 + # write has to return the storage id of the written
  24 + # entry.
  25 + #
30 def write(model) 26 def write(model)
31 throw "#{self.class}: write not implemented" 27 throw "#{self.class}: write not implemented"
32 end 28 end
33 29
34 - def to_sym 30 + def config_key
35 self.class.to_s.to_sym 31 self.class.to_s.to_sym
36 end 32 end
37 end 33 end
1 -require 'yaml'  
2 -  
3 class DsAdmin::Storage::Config 1 class DsAdmin::Storage::Config
4 attr_accessor :model 2 attr_accessor :model
5 3
6 - def initialize(yml_file)  
7 - @config = YAML.load_file(yml_file) 4 + def initialize(conf_data)
  5 + @config = conf_data
8 end 6 end
9 7
10 def con(storage) 8 def con(storage)
11 - @config[storage.to_sym][:con] 9 + @config[storage.config_key][:con]
12 end 10 end
13 11
14 def query(storage) 12 def query(storage)
15 - @config[storage.to_sym][@model.to_sym][:query] 13 + @config[storage.config_key][@model.config_key][:query]
16 end 14 end
17 15
18 def map(storage) 16 def map(storage)
19 - @config[storage.to_sym][@model.to_sym][:map] 17 + @config[storage.config_key][@model.config_key][:map]
20 end 18 end
21 end 19 end
1 require 'ds_admin' 1 require 'ds_admin'
  2 +require 'yaml'
2 3
3 -config = DsAdmin::Storage::Config.new(File.dirname(__FILE__) + '/config/storage.yml')  
4 -DsAdmin::Model.storage = DsAdmin::Storage::Ldap.new(config) 4 +DsAdmin::Model.storage = DsAdmin::Storage::Ldap.new(
  5 + DsAdmin::Storage::Config.new(
  6 + YAML.load_file(File.dirname(__FILE__) + '/config/storage.yml')
  7 +))
5 8
6 user = DsAdmin::Model::User.new 9 user = DsAdmin::Model::User.new
7 group = DsAdmin::Model::Group.new 10 group = DsAdmin::Model::Group.new
@@ -10,31 +13,108 @@ alias_role = DsAdmin::Model::MailAliasRole.new @@ -10,31 +13,108 @@ alias_role = DsAdmin::Model::MailAliasRole.new
10 alias_person = DsAdmin::Model::MailAliasPerson.new 13 alias_person = DsAdmin::Model::MailAliasPerson.new
11 account = DsAdmin::Model::MailAccount.new 14 account = DsAdmin::Model::MailAccount.new
12 15
  16 +puts '=== base objects ==='
  17 +puts 'base: ' + user.inspect
  18 +puts 'base: ' + group.inspect
  19 +puts 'base: ' + site.inspect
  20 +puts 'base: ' + alias_role.inspect
  21 +puts 'base: ' + alias_person.inspect
  22 +puts 'base: ' + account.inspect
  23 +
  24 +puts
  25 +puts '=== Model#all ==='
  26 +puts user.all.inspect
  27 +puts 'base: ' + user.inspect
  28 +puts group.all.inspect
  29 +puts 'base: ' + group.inspect
  30 +puts site.all.inspect
  31 +puts 'base: ' + site.inspect
  32 +puts alias_role.all.inspect
  33 +puts 'base: ' + alias_role.inspect
  34 +puts alias_person.all.inspect
  35 +puts 'base: ' + alias_person.inspect
  36 +puts account.all.inspect
  37 +puts 'base: ' + account.inspect
  38 +
  39 +puts
13 puts '=== DsAdmin each ===' 40 puts '=== DsAdmin each ==='
14 -user.each {|user| puts user.inspect} 41 +user.each {|u| puts u.inspect}
  42 +puts 'base: ' + user.inspect
15 puts '---' 43 puts '---'
16 -group.each {|group| puts group.inspect} 44 +group.each {|g| puts g.inspect}
  45 +puts 'base: ' + group.inspect
17 puts '---' 46 puts '---'
18 -site.each {|site| puts site.inspect} 47 +site.each {|s| puts s.inspect}
  48 +puts 'base: ' + site.inspect
19 puts '---' 49 puts '---'
20 -alias_role.each {|ma_role| puts ma_role.inspect} 50 +alias_role.each {|mar| puts mar.inspect}
  51 +puts 'base: ' + alias_role.inspect
21 puts '---' 52 puts '---'
22 -alias_person.each {|ma_person| puts ma_person.inspect} 53 +alias_person.each {|map| puts map.inspect}
  54 +puts 'base: ' + alias_person.inspect
23 puts '---' 55 puts '---'
24 account.each {|macc| puts macc.inspect} 56 account.each {|macc| puts macc.inspect}
  57 +puts 'base: ' + account.inspect
25 58
26 puts 59 puts
27 puts '=== DsAdmin Enumerable ===' 60 puts '=== DsAdmin Enumerable ==='
28 -puts user.find {|user| user.uid == '1000'}.inspect 61 +puts user.find {|u| u.uid == '1000'}.inspect
  62 +puts 'base: ' + user.inspect
29 puts '---' 63 puts '---'
30 -puts group.find {|group| group.gid == '10'}.inspect 64 +puts group.find {|g| g.gid == '10'}.inspect
  65 +puts 'base: ' + group.inspect
31 puts '---' 66 puts '---'
32 -puts site.find {|site| site.name == 'steffers.org'}.inspect 67 +puts site.find {|s| s.name == 'steffers.org'}.inspect
  68 +puts 'base: ' + site.inspect
33 puts '---' 69 puts '---'
34 puts alias_role.find_all {|mar| mar.maildrop == 'abuse'}.inspect 70 puts alias_role.find_all {|mar| mar.maildrop == 'abuse'}.inspect
  71 +puts 'base: ' + alias_role.inspect
35 puts '---' 72 puts '---'
36 puts alias_person.find {|map| map.mail == 'georg@steffers.org'}.inspect 73 puts alias_person.find {|map| map.mail == 'georg@steffers.org'}.inspect
  74 +puts 'base: ' + alias_person.inspect
37 puts '---' 75 puts '---'
38 -puts account.find {|acc| acc.mail == 'drachenfrau@steffers.org'}.inspect 76 +puts account.find {|macc| macc.mail == 'drachenfrau@steffers.org'}.inspect
  77 +puts 'base: ' + account.inspect
39 78
  79 +puts
  80 +puts '=== Model#load ==='
  81 +puts user.load('uid=georg,ou=user,o=system,dc=weird-web-workers,dc=org').inspect
  82 +puts 'base: ' + user.inspect
  83 +puts '---'
  84 +puts group.load('cn=wheel,ou=group,o=system,dc=weird-web-workers,dc=org').inspect
  85 +puts 'base: ' + group.inspect
  86 +puts '---'
  87 +puts site.load('o=steffers.org,o=hosting,dc=weird-web-workers,dc=org').inspect
  88 +puts 'base: ' + site.inspect
  89 +puts '---'
  90 +puts alias_role.load('cn=abuse,o=weird-web-workers.org,o=hosting,dc=weird-web-workers,dc=org').inspect
  91 +puts 'base: ' + alias_role.inspect
  92 +puts '---'
  93 +puts alias_person.load('mail=georg@steffers.org,o=steffers.org,o=hosting,dc=weird-web-workers,dc=org').inspect
  94 +puts 'base: ' + alias_person.inspect
  95 +puts '---'
  96 +puts account.load('mail=drachenfrau@steffers.org,o=steffers.org,o=hosting,dc=weird-web-workers,dc=org').inspect
  97 +puts 'base: ' + account.inspect
  98 +
  99 +puts
  100 +puts '=== Model#load! ==='
  101 +user.load!('uid=georg,ou=user,o=system,dc=weird-web-workers,dc=org')
  102 +puts 'base: ' + user.inspect
  103 +puts '---'
  104 +group.load!('cn=wheel,ou=group,o=system,dc=weird-web-workers,dc=org')
  105 +puts 'base: ' + group.inspect
  106 +puts '---'
  107 +site.load!('o=steffers.org,o=hosting,dc=weird-web-workers,dc=org')
  108 +puts 'base: ' + site.inspect
  109 +puts '---'
  110 +alias_role.load!('cn=abuse,o=weird-web-workers.org,o=hosting,dc=weird-web-workers,dc=org')
  111 +puts 'base: ' + alias_role.inspect
  112 +puts '---'
  113 +alias_person.load!('mail=georg@steffers.org,o=steffers.org,o=hosting,dc=weird-web-workers,dc=org')
  114 +puts 'base: ' + alias_person.inspect
  115 +puts '---'
  116 +account.load!('mail=drachenfrau@steffers.org,o=steffers.org,o=hosting,dc=weird-web-workers,dc=org')
  117 +puts 'base: ' + account.inspect
  118 +
  119 +puts
40 puts 'Memory useage: ' + `ps -o rss= -p #{Process.pid}` 120 puts 'Memory useage: ' + `ps -o rss= -p #{Process.pid}`
Please register or login to post a comment