Changeset 13173 for trunk/Nebulous-Server/lib/Nebulous/Server.pm
- Timestamp:
- May 2, 2007, 3:44:24 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/Nebulous-Server/lib/Nebulous/Server.pm (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Nebulous-Server/lib/Nebulous/Server.pm
r13131 r13173 1 1 # Copyright (c) 2004 Joshua Hoblitt 2 2 # 3 # $Id: Server.pm,v 1.3 1 2007-05-02 20:53:42jhoblitt Exp $3 # $Id: Server.pm,v 1.32 2007-05-03 01:44:23 jhoblitt Exp $ 4 4 5 5 package Nebulous::Server; … … 283 283 my $self = shift; 284 284 285 my ($key, $volume) = validate_pos(@_, 286 { 287 type => SCALAR, 288 }, 289 { 290 type => SCALAR, 285 my ($key, $vol_name) = validate_pos(@_, 286 { 287 type => SCALAR, 288 callbacks => { 289 'is valid object key' => sub { $self->_is_valid_object_key($_[0]) }, 290 }, 291 }, 292 { 293 type => SCALAR, 294 callbacks => { 295 # check that the volume name requested is valid 296 'is valid volume name' => sub { $self->_is_valid_volume_name($_[0]) }, 297 }, 291 298 optional => 1, 292 299 }, … … 301 308 my ($vol_id, $vol_path); 302 309 eval { 303 ($vol_id, $vol_path) = $self->_get_storage_volume($vol ume);310 ($vol_id, $vol_path) = $self->_get_storage_volume($vol_name); 304 311 }; 305 312 if ($@) { … … 312 319 { 313 320 my $query = $db->prepare_cached( $sql->get_object_instances ); 314 my $rows = $query->execute( $key);321 my $rows = $query->execute($key, 1); 315 322 316 323 unless ( $rows > 0 ) { … … 866 873 my $self = shift; 867 874 868 my ( $key, $volume ) = validate_pos( @_, 869 { 870 type => SCALAR, 871 }, 872 { 873 type => SCALAR, 875 my ($key, $vol_name) = validate_pos(@_, 876 { 877 type => SCALAR, 878 callbacks => { 879 'is valid object key' => sub { $self->_is_valid_object_key($_[0]) }, 880 }, 881 }, 882 { 883 type => SCALAR, 884 callbacks => { 885 # check that the volume name requested is valid 886 'is valid volume name' => sub { $self->_is_valid_volume_name($_[0]) }, 887 }, 874 888 optional => 1, 875 889 }, … … 880 894 my $db =$self->db; 881 895 882 $log->debug( "entered - @_" ); 883 884 # TODO restrict search to a volume 896 $log->debug("entered - @_"); 885 897 886 898 my $query; 887 888 eval { 889 $query = $db->prepare_cached( $sql->get_object_instances ); 890 $query->execute( $key ); 891 }; 892 $log->logdie( "database error: $@" ) if $@; 899 eval { 900 { 901 # ask the db to generate the table of mounted Nebulous volume 902 my $query = $db->prepare_cached("call getmountedvol()"); 903 $query->execute(); 904 } 905 906 if ($vol_name) { 907 $query = $db->prepare_cached( $sql->get_object_instances_by_vol_name ); 908 # ext_id, name, available 909 my $rows = $query->execute($key, $vol_name, 1); 910 unless ($rows > 0) { 911 $query->finish; 912 $log->logdie("no instances on storage volume: $vol_name or volume is not available"); 913 } 914 } else { 915 $query = $db->prepare_cached( $sql->get_object_instances ); 916 # ext_id, available 917 my $rows = $query->execute($key, 1); 918 unless ($rows > 0) { 919 $query->finish; 920 $log->logdie("no instances available"); 921 } 922 } 923 }; 924 $log->logdie("database error: $@") if $@; 893 925 894 926 my @locations; 895 927 896 while ( my $row = $query->fetchrow_hashref) {928 while (my $row = $query->fetchrow_hashref) { 897 929 my $instance = $row->{ 'uri' }; 898 930 push @locations, $instance if $instance; 899 931 } 900 932 901 $log->logdie( "no instances found" ) unless ( scalar @locations ); 902 903 $log->debug( "leaving" ); 933 # XXX remove this? 934 $log->logdie("no instances found") unless (scalar @locations); 935 936 $log->debug("leaving"); 904 937 905 938 return \@locations; … … 1089 1122 } 1090 1123 1124 sub _is_valid_object_key { 1125 my ($self, $key) = @_; 1126 1127 my $log = $self->log; 1128 my $sql = $self->sql; 1129 my $db =$self->db; 1130 1131 my $ext_id; 1132 eval { 1133 my $query = $db->prepare_cached( $sql->get_object ); 1134 $query->execute($key); 1135 ($ext_id) = $query->fetchrow_array; 1136 $query->finish; 1137 }; 1138 if ($@) { 1139 $db->rollback; 1140 $log->logdie( "database error: $@" ); 1141 } 1142 1143 if (defined $ext_id) { 1144 return 1; 1145 } 1146 1147 return; 1148 } 1149 1091 1150 sub _is_valid_volume_name { 1092 1151 my ($self, $vol_name) = @_;
Note:
See TracChangeset
for help on using the changeset viewer.
