Changeset 23932 for trunk/Nebulous-Server/lib/Nebulous/Server
- Timestamp:
- Apr 20, 2009, 11:15:20 AM (17 years ago)
- Location:
- trunk/Nebulous-Server
- Files:
-
- 5 edited
-
. (modified) (1 prop)
-
lib/Nebulous/Server/Config.pm (modified) (4 diffs)
-
lib/Nebulous/Server/Log.pm (modified) (2 diffs)
-
lib/Nebulous/Server/SOAP.pm (modified) (5 diffs)
-
lib/Nebulous/Server/SQL.pm (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Nebulous-Server
-
Property svn:mergeinfo
set to
/branches/neb_distrib_20081210/Nebulous-Server merged eligible /trunk/Nebulous-Server merged eligible
-
Property svn:mergeinfo
set to
-
trunk/Nebulous-Server/lib/Nebulous/Server/Config.pm
r20990 r23932 8 8 use warnings FATAL => qw( all ); 9 9 10 our $VERSION = 0.0 2;10 our $VERSION = 0.03; 11 11 12 12 use base qw( Class::Accessor::Fast ); 13 13 14 14 use Log::Log4perl qw( :levels ); 15 use Params::Validate qw( validate SCALAR );15 use Params::Validate qw( validate validate_pos SCALAR ); 16 16 17 17 our %LEVELS = ( … … 25 25 ); 26 26 27 my $new_validate = { 27 my $db_validate = { 28 dbindex => { 29 type => SCALAR, 30 regex => qr/^\d+$/, 31 }, 28 32 dsn => { type => SCALAR }, 29 33 dbuser => { type => SCALAR }, 30 34 dbpasswd => { type => SCALAR }, 31 log_level => { 35 }; 36 37 my $new_validate = { 38 trace => { 32 39 type => SCALAR, 33 40 optional => 1, 34 default => ' all',41 default => 'fatal', 35 42 callbacks => { 36 43 'is valid level' => sub { … … 39 46 }, 40 47 }, 48 dsn => { type => SCALAR, optional => 1 }, 49 dbuser => { type => SCALAR, optional => 1 }, 50 dbpasswd => { type => SCALAR, optional => 1 }, 41 51 }; 42 52 43 53 __PACKAGE__->mk_ro_accessors( keys %$new_validate ); 44 54 45 sub init { 55 56 sub new 57 { 46 58 my $class = shift; 47 59 … … 49 61 50 62 # normalize log levels to lower-case 51 $p{ log_level } = lc $p{ log_level }; 52 53 my $self = \%p; 63 my $self = { trace => $LEVELS{lc($p{trace})} }; 54 64 55 65 bless $self, $class || ref $class; 66 67 my @dbs; 68 $self->{dbs} = \@dbs; 69 70 if (defined $p{dsn} or defined $p{dbuser} or defined $p{dbpasswd}) { 71 $self->add_db( 72 dbindex => 0, 73 dsn => $p{dsn}, 74 dbuser => $p{dbuser}, 75 dbpasswd => $p{dbpasswd}, 76 ); 77 } 56 78 57 79 return $self; 58 80 } 59 81 82 83 sub add_db 84 { 85 my $self = shift; 86 87 my %p = validate( @_, $db_validate ); 88 89 my $config_db = Nebulous::Server::Config::DB->new({ 90 dsn => $p{dsn}, 91 dbuser => $p{dbuser}, 92 dbpasswd => $p{dbpasswd}, 93 }); 94 95 $self->{dbs}->[$p{dbindex}] = $config_db; 96 97 return $self; 98 } 99 100 101 sub db 102 { 103 my $self = shift; 104 105 my ($db_index) = validate_pos( @_, { type => SCALAR, optional => 1, }); 106 107 # default to 0 108 $db_index ||= 0; 109 110 return $self->{dbs}->[$db_index]; 111 } 112 113 114 sub n_db 115 { 116 my $self = shift; 117 118 return scalar @{ $self->{dbs} }; 119 } 120 121 122 package Nebulous::Server::Config::DB; 123 124 use strict; 125 use warnings FATAL => qw( all ); 126 127 our $VERSION = 0.01; 128 129 use base qw( Class::Accessor::Fast ); 130 131 __PACKAGE__->mk_ro_accessors(qw( dsn dbuser dbpasswd )); 132 60 133 1; 61 134 -
trunk/Nebulous-Server/lib/Nebulous/Server/Log.pm
r20990 r23932 16 16 my ($self, $config) = @_; 17 17 18 my $dsn = $config->dsn;19 my $dbuser = $config->dbuser;20 my $dbpasswd = $config->dbpasswd;18 # my $dsn = $config->db->dsn; 19 # my $dbuser = $config->db->dbuser; 20 # my $dbpasswd = $config->db->dbpasswd; 21 21 22 22 my $conf = <<END; … … 30 30 # date | hostname | priority | method/sub - message\n 31 31 32 log4perl.appender.SQLLOG = Log::Log4perl::Appender::DBI33 log4perl.appender.SQLLOG.datasource = $dsn 34 log4perl.appender.SQLLOG.username = $dbuser 35 log4perl.appender.SQLLOG.password = $dbpasswd 36 log4perl.appender.SQLLOG.sql = \ 32 # log4perl.appender.SQLLOG = Log::Log4perl::Appender::DBI 33 # log4perl.appender.SQLLOG.sql = \ 34 # log4perl.appender.SQLLOG.datasource = 35 # log4perl.appender.SQLLOG.username = 36 # log4perl.appender.SQLLOG.password = 37 37 INSERT INTO log (timestamp, hostname, level, sub, message) \ 38 38 VALUES (%d, %H, %p, %M, %m) -
trunk/Nebulous-Server/lib/Nebulous/Server/SOAP.pm
r20990 r23932 1 1 # Copyright (c) 2004 Joshua Hoblitt 2 2 # 3 # $Id: SOAP.pm,v 1. 6 2008-12-14 22:54:25eugene Exp $3 # $Id: SOAP.pm,v 1.4.32.1 2008-12-14 22:52:37 eugene Exp $ 4 4 5 5 package Nebulous::Server::SOAP; … … 17 17 our $AUTOLOAD; 18 18 19 our @args;19 our $config; 20 20 our $neb; 21 21 22 sub new_on_init { 22 23 sub new_on_init 24 { 23 25 my $self = shift; 24 26 … … 27 29 require Apache2::ServerUtil; 28 30 29 @args = @_;31 $config = shift; 30 32 31 33 my $s = Apache2::ServerUtil->server; … … 35 37 } 36 38 37 sub init { 39 40 sub init 41 { 38 42 my $self = shift; 39 43 40 $neb = Nebulous::Server->new (@args);44 $neb = Nebulous::Server->new_from_config($config); 41 45 42 46 return Apache2::Const::OK; 43 47 } 44 48 45 sub AUTOLOAD { 49 50 sub AUTOLOAD 51 { 46 52 my $self = shift; 47 53 … … 76 82 } 77 83 84 78 85 1; -
trunk/Nebulous-Server/lib/Nebulous/Server/SQL.pm
r23699 r23932 8 8 use warnings FATAL => qw( all ); 9 9 10 our $VERSION = '0.0 2';10 our $VERSION = '0.04'; 11 11 12 12 use base qw( Class::Accessor::Fast ); … … 26 26 new_object => qq{ 27 27 INSERT INTO storage_object 28 (so_id, ext_id, type)29 VALUES (?, ?, 'REG_FILE')28 (so_id, ext_id, ext_id_basename, type, dir_id) 29 VALUES (?, ?, ?, 'REG_FILE', ?) 30 30 }, 31 31 new_object_attr => qq{ … … 60 60 USING (so_id) 61 61 WHERE ext_id = ? 62 }, 63 get_directory => qq{ 64 SELECT 65 dir_id 66 FROM directory 67 WHERE parent_id = ? 68 AND dirname = ? 69 }, 70 new_directory => qq{ 71 INSERT INTO directory 72 (dirname, parent_id) 73 VALUES (?, ?) 62 74 }, 63 75 check_object_name => qq{ … … 297 309 USING(vol_id) 298 310 }, 299 find_objects => qq{ 300 SELECT * 301 FROM storage_object 302 WHERE ext_id REGEXP ? 311 find_object_by_ext_id => qq{ 312 SELECT ext_id, ext_id_basename 313 FROM storage_object 314 WHERE ext_id = ? 315 }, 316 find_object_by_dir_id => qq{ 317 SELECT ext_id, ext_id_basename 318 FROM storage_object 319 WHERE dir_id = ? 303 320 }, 304 321 rename_object => qq{ 305 322 UPDATE storage_object 306 SET ext_id = ? 323 SET ext_id = ?, ext_id_basename = ?, dir_id = ? 307 324 WHERE ext_id = ? 308 325 }, … … 330 347 GROUP BY so_id 331 348 HAVING available_instances < instances OR instances < copies 349 }, 350 find_objects_with_extra_instances_by_xattr => qq{ 351 SELECT 352 so.so_id, 353 so.ext_id, 354 count(ins_id) as instances, 355 mv.name as volume_name, 356 mv.host as volume_host, 357 count(mv.vol_id) as available_instances, 358 xattr.value as copies 359 FROM storage_object AS so 360 JOIN storage_object_xattr as xattr 361 ON so.so_id = xattr.so_id 362 AND xattr.name = 'user.copies' 363 JOIN instance AS i 364 ON so.so_id = i.so_id 365 JOIN mountedvol AS mv 366 USING(vol_id) 367 WHERE 368 mv.available = 1 369 GROUP BY so_id 370 HAVING available_instances > copies 371 limit 5; 332 372 }, 333 373 find_objects_with_extra_instances => qq{ … … 387 427 DROP TABLE IF EXISTS log; 388 428 DROP TABLE IF EXISTS mountedvol; 429 DROP TABLE IF EXISTS directory; 389 430 DROP PROCEDURE IF EXISTS getmountedvol; 390 431 SET FOREIGN_KEY_CHECKS=1 … … 408 449 409 450 __DATA__ 451 CREATE TABLE directory ( 452 dir_id BIGINT NOT NULL AUTO_INCREMENT, 453 dirname CHAR(255) NOT NULL, 454 parent_id BIGINT NOT NULL, 455 FOREIGN KEY(parent_id) REFERENCES directory(dir_id), 456 PRIMARY KEY(dir_id), 457 KEY(parent_id) 458 ) ENGINE=innodb DEFAULT CHARSET=latin1; 459 460 ### 461 462 INSERT INTO directory (dir_id, dirname, parent_id) VALUES (1, '/', 1); 463 464 ### 465 410 466 CREATE TABLE storage_object ( 411 467 so_id BIGINT NOT NULL AUTO_INCREMENT, 412 468 ext_id VARCHAR(255) NOT NULL UNIQUE, 469 ext_id_basename VARCHAR(255) NOT NULL, 470 dir_id BIGINT NOT NULL, 471 FOREIGN KEY(dir_id) REFERENCES directory(dir_id), 413 472 type enum('REG_FILE'), 414 473 PRIMARY KEY(so_id),
Note:
See TracChangeset
for help on using the changeset viewer.
