Changeset 24362
- Timestamp:
- Jun 9, 2009, 2:42:18 PM (17 years ago)
- Location:
- trunk/Nebulous-Server
- Files:
-
- 5 edited
-
Changes (modified) (1 diff)
-
lib/Nebulous/Key.pm (modified) (8 diffs)
-
lib/Nebulous/Server.pm (modified) (11 diffs)
-
t/08_server_find_instances.t (modified) (1 diff)
-
t/75_parse_neb_key.t (modified) (31 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Nebulous-Server/Changes
r24347 r24362 20 20 - change 'log_level' param to 'trace' 21 21 - refactor ->find_objects() functionality 22 - rename Nebulous::Key->soft_volume Nebulous::Key->hard_volume and invert 23 the semantics 22 24 23 25 0.16 -
trunk/Nebulous-Server/lib/Nebulous/Key.pm
r24306 r24362 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( Exporter Class::Accessor::Fast ); … … 23 23 ); 24 24 25 __PACKAGE__->mk_ro_accessors(qw( path volume soft_volume ));25 __PACKAGE__->mk_ro_accessors(qw( path volume hard_volume )); 26 26 27 27 sub parse_neb_key … … 42 42 43 43 my $volume_name; 44 my $ soft_volume;44 my $hard_volume; 45 45 # if this is a valid uri 46 46 if (defined $scheme) { … … 71 71 if (defined $volume_info->{volume} and $volume_info->{volume} ne 'any') { 72 72 $volume_name = $volume_info->{volume}; 73 $ soft_volume = $volume_info->{soft_volume};73 $hard_volume = $volume_info->{hard_volume}; 74 74 } 75 75 … … 84 84 if (defined $volume_info->{volume} and $volume_info->{volume} ne 'any') { 85 85 $volume_name = $volume_info->{volume}; 86 $ soft_volume = $volume_info->{soft_volume};86 $hard_volume = $volume_info->{hard_volume}; 87 87 } 88 88 } … … 99 99 return __PACKAGE__->new({ 100 100 volume => $volume_name, 101 soft_volume => $soft_volume,101 hard_volume => $hard_volume, 102 102 path => $path, 103 103 }); … … 110 110 return unless defined $volume; 111 111 112 my $ soft_volume;112 my $hard_volume; 113 113 # check to see if there is a tilde and remove it if found 114 unless(defined $volume and $volume =~ s/^~//) {115 $ soft_volume = 1;114 if (defined $volume and $volume =~ s/^~//) { 115 $hard_volume = 1; 116 116 } 117 117 118 return({ volume => $volume, soft_volume => $soft_volume });118 return({ volume => $volume, hard_volume => $hard_volume }); 119 119 } 120 120 … … 125 125 126 126 my $path = $self->path; 127 my $volume = $self->volume || "";128 my $ soft_volume = $self->soft_volume ? '~' : "";129 130 return "neb://${ soft_volume}${volume}/$path";127 my $volume = $self->volume || ''; 128 my $hard_volume = $self->hard_volume ? '~' : ''; 129 130 return "neb://${hard_volume}${volume}/$path"; 131 131 } 132 132 -
trunk/Nebulous-Server/lib/Nebulous/Server.pm
r24355 r24362 229 229 if (defined $vol_name 230 230 and not $self->_is_valid_volume_name($key, $key->volume)) { 231 if ($key->soft_volume) {231 unless ($key->hard_volume) { 232 232 $log->warn( "$vol_name is not a known volume name" ); 233 233 $vol_name = undef; … … 238 238 239 239 my ($vol_id, $vol_host, $vol_path, $vol_xattr) 240 = $self->_get_storage_volume($key, $vol_name, $key-> soft_volume);240 = $self->_get_storage_volume($key, $vol_name, $key->hard_volume); 241 241 242 242 my $parent_id = $self->_resolve_dir_parent_id(key => $key, create => 1); … … 705 705 if (defined $vol_name 706 706 and not $self->_is_valid_volume_name($key, $key->volume)) { 707 if ($key->soft_volume) {707 unless ($key->hard_volume) { 708 708 $log->warn( "$vol_name is not a known volume name" ); 709 709 $vol_name = undef; … … 777 777 $db->rollback; 778 778 # handle soft volumes 779 if (defined $vol_name and defined $key->soft_volume) {779 if (defined $vol_name and not defined $key->hard_volume) { 780 780 $log->debug("retrying with 'any' volume"); 781 781 return $self->replicate_object($key->path, 'any'); … … 1446 1446 my $sql = $self->sql; 1447 1447 1448 unless ($key) {1449 $log->warn("key was undefined after validate_pos(), trying again...");1450 return $self->find_instances(@_);1451 }1448 # unless ($key) { 1449 # $log->warn("key was undefined after validate_pos(), trying again..."); 1450 # return $self->find_instances(@_); 1451 # } 1452 1452 1453 1453 # vol_name overrides the key implied volume … … 1464 1464 if (defined $vol_name 1465 1465 and not $self->_is_valid_volume_name($key, $key->volume)) { 1466 if ($key->soft_volume) { 1466 if ($key->hard_volume) { 1467 $log->logdie("$vol_name is not a valid volume name"); 1468 } else { 1467 1469 $log->warn( "$vol_name is not a known volume name" ); 1468 1470 $vol_name = undef; 1469 } else {1470 $log->logdie("$vol_name is not a valid volume name");1471 1471 } 1472 1472 } … … 1501 1501 $db->rollback; 1502 1502 # handle soft volumes 1503 if (defined $vol_name and defined $key->soft_volume) {1503 if (defined $vol_name and not defined $key->hard_volume) { 1504 1504 $log->debug("retrying with 'any' volume"); 1505 1505 return $self->find_instances($key->path, 'any'); … … 1794 1794 use warnings; 1795 1795 1796 my ($key, $name, $ soft_volume) = @_;1796 my ($key, $name, $hard_volume) = @_; 1797 1797 1798 1798 my $sql = $self->sql; … … 1813 1813 # if a volume name was specified, and is soft, and we failed to 1814 1814 # find it, fall back to any volume 1815 if ($soft_volume) {1815 unless ($hard_volume) { 1816 1816 ($vol_id, $vol_host, $vol_path, $xattr) = $self->_get_storage_volume($key); 1817 1817 return; # this just returns out of the eval not from the subroutine … … 1831 1831 unless ($rows > 0) { 1832 1832 $query->finish; 1833 $log->logdie("no storage volume is available for key: $key volume: $name soft: $soft_volume");1833 $log->logdie("no storage volume is available for key: $key volume: $name hard_volume: $hard_volume"); 1834 1834 } 1835 1835 } … … 1962 1962 my $sql = $self->sql; 1963 1963 1964 # the volume name implied by the key is ignored. $key is only needed to 1965 # select a database connection 1964 1966 eval { 1965 1967 $key = parse_neb_key($key); -
trunk/Nebulous-Server/t/08_server_find_instances.t
r24356 r24362 109 109 like($@, qr/no instances on storage volume/, 'instances on a different volume'); 110 110 111 112 111 Test::Nebulous->setup; 113 112 -
trunk/Nebulous-Server/t/75_parse_neb_key.t
r24304 r24362 10 10 use Test::More; 11 11 12 plan tests => 10 3;12 plan tests => 106; 13 13 14 14 use lib qw( ./t ./lib ); … … 28 28 is($key->path, 'foo/bar/baz/quix', 'path'); 29 29 is($key->volume, undef, 'volume name'); 30 is($key-> soft_volume, undef, 'soft volume name');30 is($key->hard_volume, undef, 'soft volume name'); 31 31 } 32 32 … … 36 36 is($key->path, 'foo/bar/baz/quix', 'path'); 37 37 is($key->volume, undef, 'volume name'); 38 is($key-> soft_volume, undef, 'soft volume name');38 is($key->hard_volume, undef, 'soft volume name'); 39 39 } 40 40 … … 44 44 is($key->path, 'foo/bar/baz/quix', 'path'); 45 45 is($key->volume, undef, 'volume name'); 46 is($key-> soft_volume, undef, 'soft volume name');46 is($key->hard_volume, undef, 'soft volume name'); 47 47 } 48 48 … … 52 52 is($key->path, 'foo/bar/baz/quix', 'path'); 53 53 is($key->volume, undef, 'volume name'); 54 is($key-> soft_volume, undef, 'soft volume name');54 is($key->hard_volume, undef, 'soft volume name'); 55 55 } 56 56 … … 60 60 is($key->path, 'foo/bar/baz/quix', 'path'); 61 61 is($key->volume, undef, 'volume name'); 62 is($key-> soft_volume, undef, 'soft volume name');62 is($key->hard_volume, undef, 'soft volume name'); 63 63 } 64 64 … … 68 68 is($key->path, 'foo/bar/baz/quix', 'path'); 69 69 is($key->volume, undef, 'volume name'); 70 is($key-> soft_volume, undef, 'soft volume name');70 is($key->hard_volume, undef, 'soft volume name'); 71 71 } 72 72 … … 77 77 is($key->path, 'foo/bar/baz/quix', 'path'); 78 78 is($key->volume, 'boing', 'volume name'); 79 is($key-> soft_volume, 1, 'soft volume name');79 is($key->hard_volume, undef, 'soft volume name'); 80 80 } 81 81 … … 85 85 is($key->path, 'foo/bar/baz/quix', 'path'); 86 86 is($key->volume, 'boing', 'volume name'); 87 is($key-> soft_volume, undef, 'soft volume name');87 is($key->hard_volume, 1, 'soft volume name'); 88 88 } 89 89 … … 94 94 is($key->path, 'bar/baz/quix', 'path'); 95 95 is($key->volume, 'foo', 'volume name'); 96 is($key-> soft_volume, 1, 'soft volume name');96 is($key->hard_volume, undef, 'soft volume name'); 97 97 } 98 98 … … 102 102 is($key->path, 'bar/baz/quix', 'path'); 103 103 is($key->volume, 'foo', 'volume name'); 104 is($key-> soft_volume, 1, 'soft volume name');104 is($key->hard_volume, undef, 'soft volume name'); 105 105 } 106 106 … … 110 110 is($key->path, 'bar/baz/quix', 'path'); 111 111 is($key->volume, 'foo', 'volume name'); 112 is($key-> soft_volume, 1, 'soft volume name');112 is($key->hard_volume, undef, 'soft volume name'); 113 113 } 114 114 … … 118 118 is($key->path, 'bar/baz/quix', 'path'); 119 119 is($key->volume, 'foo', 'volume name'); 120 is($key-> soft_volume, 1, 'soft volume name');120 is($key->hard_volume, undef, 'soft volume name'); 121 121 } 122 122 … … 126 126 is($key->path, 'bar/baz/quix', 'path'); 127 127 is($key->volume, 'foo', 'volume name'); 128 is($key-> soft_volume, 1, 'soft volume name');128 is($key->hard_volume, undef, 'soft volume name'); 129 129 } 130 130 … … 135 135 is($key->path, 'bar/baz/quix', 'path'); 136 136 is($key->volume, 'foo', 'volume name'); 137 is($key-> soft_volume, undef, 'soft volume name');137 is($key->hard_volume, 1, 'soft volume name'); 138 138 } 139 139 … … 144 144 is($key->path, 'bar/baz/quix', 'path'); 145 145 is($key->volume, 'boing', 'volume name'); 146 is($key-> soft_volume, 1, 'soft volume name');146 is($key->hard_volume, undef, 'soft volume name'); 147 147 } 148 148 … … 152 152 is($key->path, 'bar/baz/quix', 'path'); 153 153 is($key->volume, 'boing', 'volume name'); 154 is($key-> soft_volume, undef, 'soft volume name');154 is($key->hard_volume, 1, 'soft volume name'); 155 155 } 156 156 … … 160 160 is($key->path, 'bar/baz/quix', 'path'); 161 161 is($key->volume, 'foo', 'volume name'); 162 is($key-> soft_volume, 1, 'soft volume name');162 is($key->hard_volume, undef, 'soft volume name'); 163 163 } 164 164 … … 169 169 is($key->path, 'bar/baz/quix', 'path'); 170 170 is($key->volume, undef, 'volume name'); 171 is($key-> soft_volume, undef, 'soft volume name');171 is($key->hard_volume, undef, 'soft volume name'); 172 172 } 173 173 … … 178 178 is($key->path, 'bar/baz/quix', 'path'); 179 179 is($key->volume, undef, 'volume name'); 180 is($key-> soft_volume, undef, 'soft volume name');180 is($key->hard_volume, undef, 'soft volume name'); 181 181 } 182 182 … … 186 186 is($key->path, 'bar/baz/quix', 'path'); 187 187 is($key->volume, undef, 'volume name'); 188 is($key-> soft_volume, undef, 'soft volume name');188 is($key->hard_volume, undef, 'soft volume name'); 189 189 } 190 190 … … 195 195 is($key->path, 'bar/baz/quix', 'path'); 196 196 is($key->volume, 'foo', 'volume name'); 197 is($key-> soft_volume, undef, 'soft volume name');197 is($key->hard_volume, 1, 'soft volume name'); 198 198 } 199 199 … … 205 205 is($key->path, 'foo/bar/baz/quix', 'path'); 206 206 is($key->volume, undef, 'volume name'); 207 is($key-> soft_volume, undef, 'soft volume name');207 is($key->hard_volume, undef, 'soft volume name'); 208 208 } 209 209 … … 213 213 is($key->volume, undef, 'volume name'); 214 214 is($key->path, 'foo/bar/baz/quix', 'path'); 215 is($key-> soft_volume, undef, 'soft volume name');215 is($key->hard_volume, undef, 'soft volume name'); 216 216 } 217 217 … … 221 221 is($key->path, 'foo/bar/baz/quix', 'path'); 222 222 is($key->volume, undef, 'volume name'); 223 is($key-> soft_volume, undef, 'soft volume name');223 is($key->hard_volume, undef, 'soft volume name'); 224 224 } 225 225 … … 230 230 is($key->path, '', 'path'); 231 231 is($key->volume, undef, 'volume name'); 232 is($key-> soft_volume, undef, 'soft volume name');232 is($key->hard_volume, undef, 'soft volume name'); 233 233 } 234 234 … … 238 238 is($key->path, '', 'path'); 239 239 is($key->volume, undef, 'volume name'); 240 is($key-> soft_volume, undef, 'soft volume name');240 is($key->hard_volume, undef, 'soft volume name'); 241 241 } 242 242 … … 246 246 is($key->path, '', 'path'); 247 247 is($key->volume, undef, 'volume name'); 248 is($key-> soft_volume, undef, 'soft volume name');248 is($key->hard_volume, undef, 'soft volume name'); 249 249 } 250 250 … … 254 254 is($key->path, '', 'path'); 255 255 is($key->volume, undef, 'volume name'); 256 is($key-> soft_volume, undef, 'soft volume name');256 is($key->hard_volume, undef, 'soft volume name'); 257 257 } 258 258 … … 262 262 is($key->path, '', 'path'); 263 263 is($key->volume, undef, 'volume name'); 264 is($key-> soft_volume, undef, 'soft volume name');264 is($key->hard_volume, undef, 'soft volume name'); 265 265 } 266 266 … … 270 270 is($key->path, '', 'path'); 271 271 is($key->volume, undef, 'volume name'); 272 is($key->soft_volume, undef, 'soft volume name'); 272 is($key->hard_volume, undef, 'soft volume name'); 273 } 274 275 # stringification 276 277 { 278 my $txt = 'neb:///bar/baz'; 279 my $key = parse_neb_key($txt); 280 281 is("$key", $txt, "stringified"); 282 } 283 284 { 285 my $txt = 'neb://foo.0/bar/baz'; 286 my $key = parse_neb_key($txt); 287 288 is("$key", $txt, "stringified"); 289 } 290 291 { 292 my $txt = 'neb://~foo.0/bar/baz'; 293 my $key = parse_neb_key($txt); 294 295 is("$key", $txt, "stringified"); 273 296 } 274 297
Note:
See TracChangeset
for help on using the changeset viewer.
