Changeset 24440
- Timestamp:
- Jun 16, 2009, 2:33:25 PM (17 years ago)
- Location:
- trunk/Nebulous
- Files:
-
- 5 edited
-
Changes (modified) (1 diff)
-
bin/neb-rm (modified) (2 diffs)
-
lib/Nebulous/Client.pm (modified) (6 diffs)
-
t/59_client_delete.t (modified) (5 diffs)
-
t/62_client_delete_instance.t (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Nebulous/Changes
r24346 r24440 4 4 - add chmod() API 5 5 - change neb-ls to always output in --long format 6 - add neb-rm --force flag 6 7 7 8 0.10 -
trunk/Nebulous/bin/neb-rm
r24264 r24440 16 16 use Pod::Usage qw( pod2usage ); 17 17 18 my ($server, $move); 18 my ( 19 $force, 20 $move, 21 $server, 22 ); 19 23 20 24 $server = $ENV{'NEB_SERVER'} unless $server; 21 25 22 26 GetOptions( 27 'force|f' => \$force, 28 'move|m' => \$move, 23 29 'server|s=s' => \$server, 24 'move|m' => \$move,25 30 ) || pod2usage( 2 ); 26 31 … … 63 68 64 69 =over 4 70 71 =item * --force|-f 72 73 When set, C<<key>> will be removed from the nebulous database even if the on 74 disk file(s) are missing. 75 76 Optional. 65 77 66 78 =item * --move|-m -
trunk/Nebulous/lib/Nebulous/Client.pm
r24281 r24440 16 16 use Nebulous::Client::Log; 17 17 use Nebulous::Util qw( :standard ); 18 use Params::Validate qw( validate validate_pos SCALAR UNDEF );18 use Params::Validate qw( validate validate_pos SCALAR UNDEF BOOLEAN ); 19 19 #use SOAP::Lite +trace => [qw( debug )]; 20 20 use SOAP::Lite; … … 329 329 my $uri = $self->delete_instance($key, @$locations[0]); 330 330 331 eval { 332 _nuke_file(_get_file_path(@$locations[0])); 333 }; 334 if ($@) { 335 $log->logdie($@); 336 } 337 331 338 $log->debug("leaving"); 332 339 … … 803 810 my $self = shift; 804 811 805 my ( $key ) = validate_pos( @_, 806 { 807 type => SCALAR, 812 my ($key, $force) = validate_pos( @_, 813 { 814 type => SCALAR, 815 }, 816 { 817 type => BOOLEAN, 818 optional => 1, 819 default => undef, 820 callbacks => { 821 'is boolean' => sub { 822 $_[0] == 0 or $_[0] == 1 or $_[0] == undef; 823 }, 824 }, 808 825 }, 809 826 ); … … 817 834 # a lock is implicitly removed when the last storage object is deleted 818 835 foreach my $uri ( @$locations ) { 836 # it is being assumed here that it is better to have files on disk and 837 # not in the database then the inverse. 838 my $path; 839 eval { 840 $path = _get_file_path( $uri ); 841 }; 842 if ($@) { 843 if ($force) { 844 $log->warn($@); 845 $log->warn("exception ignored because force is in effect"); 846 } else { 847 $log->logdie($@); 848 } 849 } 850 819 851 $self->delete_instance($key, $uri) or return undef; 852 853 eval { 854 _nuke_file( $path ); 855 }; 856 if ($@) { 857 if ($force) { 858 $log->warn($@); 859 $log->warn("exception ignored because force is in effect"); 860 } else { 861 $log->logdie($@); 862 } 863 } 820 864 } 821 865 … … 959 1003 $log->debug( "entered - @_" ); 960 1004 961 # it is being assumed here that it is better to have files on disk and not in962 # the database then the inverse.963 964 my $path;965 eval {966 $path = _get_file_path( $uri );967 };968 $log->logdie( $@ ) if $@;969 970 1005 my $response = $self->{ 'server' }->delete_instance($key, $uri); 971 1006 if ( $response->fault ) { … … 981 1016 982 1017 $log->debug( "server deleted instance" ); 983 984 eval {985 _nuke_file( $path );986 };987 $log->logdie( $@ ) if $@;988 1018 989 1019 $log->debug( "leaving" ); -
trunk/Nebulous/t/59_client_delete.t
r18858 r24440 10 10 use Apache::Test qw( -withtestmore ); 11 11 12 plan tests => 9;12 plan tests => 13; 13 13 14 14 use lib qw( ./t ./lib ); … … 26 26 proxy => "http://$hostport/nebulous", 27 27 ); 28 $neb->create( "foo" );28 my $uri = $neb->create( "foo" ); 29 29 30 30 ok( $neb->delete( "foo" ), "delete object" ); 31 32 ok( ! -e _get_file_path($uri), "deleted file" ); 31 33 32 34 my $locations = $neb->find_instances( "foo" ); … … 76 78 } 77 79 80 # force flag 81 Test::Nebulous->setup; 82 83 { 84 my $neb = Nebulous::Client->new( 85 proxy => "http://$hostport/nebulous", 86 ); 87 $neb->create( "foo" ); 88 89 is( $neb->delete("foo", undef), 1, "force flag false" ); 90 } 91 92 Test::Nebulous->setup; 93 94 { 95 my $neb = Nebulous::Client->new( 96 proxy => "http://$hostport/nebulous", 97 ); 98 $neb->create( "foo" ); 99 100 is( $neb->delete("foo", 1), 1, "force flag false" ); 101 } 102 78 103 Test::Nebulous->setup; 79 104 … … 84 109 $neb->delete(); 85 110 }; 86 like( $@, qr/1 wasexpected/, "no params" );111 like( $@, qr/1 - 2 were expected/, "no params" ); 87 112 88 113 Test::Nebulous->setup; … … 92 117 proxy => "http://$hostport/nebulous", 93 118 ); 94 $neb->delete( "foo", 2);119 $neb->delete( "foo", 3); 95 120 }; 96 like( $@, qr/1 was expected/, "too many params" ); 121 like( $@, qr/is boolean/, "force flag not boolean" ); 122 123 Test::Nebulous->setup; 124 125 eval { 126 my $neb = Nebulous::Client->new( 127 proxy => "http://$hostport/nebulous", 128 ); 129 $neb->delete( "foo", 0, 2 ); 130 }; 131 like( $@, qr/1 - 2 were expected/, "too many params" ); 97 132 98 133 Test::Nebulous->cleanup; -
trunk/Nebulous/t/62_client_delete_instance.t
r23934 r24440 10 10 use Apache::Test qw( -withtestmore ); 11 11 12 plan tests => 1 1;12 plan tests => 10; 13 13 14 14 use lib qw( ./t ./lib ); … … 35 35 36 36 is( $uri, @$locations[0], "delete instance" ); 37 38 ok( ! -e _get_file_path( @$locations[0] ), "deleted file" );39 37 } 40 38
Note:
See TracChangeset
for help on using the changeset viewer.
