store quota status in session
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 4 Sep 2011 18:00:14 +0000 (18:00 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 4 Sep 2011 18:00:14 +0000 (18:00 +0000)
lib/CloudStore/Couchbase.pm
rsync-xfer-trigger.pl
t/Couchbase.t
test.sh

index 897e9db..cc62539 100644 (file)
@@ -67,7 +67,22 @@ sub user_set {
 
 sub user_get {
        my ($self,$login) = @_;
-       $self->json_get( 'users', $login );
+       $login = $login->{login} if ref $login;
+       my $user = $self->json_get( 'users', $login );
+       $user->{usage} = $self->usage( $login );
+       $user->{status} = $self->status( $login );
+       warn "## user ",dump($user);
+       return $user;
+}
+
+sub status {
+       my ($self,$login,$message) = @_;
+       $login = $login->{login} if ref $login;
+       if ( $message ) {
+               $self->{session}->set( "$login:status" => $message );
+       } else {
+               $self->{session}->get( "$login:status" );
+       }
 }
 
 sub usage_decr {
@@ -81,8 +96,9 @@ sub usage_incr {
 }
 
 sub usage {
-       my ($self,$data) = @_;
-       $self->{session}->get( $data->{login} . ':usage' );
+       my ($self,$login) = @_;
+       $login = $login->{login} if ref $login;
+       $self->{session}->get( $login . ':usage' );
 }
 
 sub usage_init {
index 31cf59f..e20c2c7 100755 (executable)
@@ -11,13 +11,12 @@ my $store = CloudStore::Couchbase->new;
 
 my $login = $ENV{RSYNC_MODULE_NAME} || die "no RSYNC_MODULE_NAME";
 
-my $usage = $store->usage({ login => $login });
 my $user  = $store->user_get($login);
 
-if ( $usage > $user->{quota} ) {
-       warn "ERROR: $login $usage > quota $user->{quota}";
+if ( $user->{usage} > $user->{quota} ) {
+       warn $store->status( $login => "ERROR: $login $user->{usage} > quota $user->{quota}" );
        exit 1;
 } else {
-       warn "OK: $login $usage < quota $user->{quota}";
+       warn $store->status( $login => "OK: $login $user->{usage} < quota $user->{quota}" );
        exit 0;
 }
index e646aba..cbcad61 100755 (executable)
@@ -33,6 +33,10 @@ ok my $r = CloudStore::Couchbase->new, 'new';
 ok $r->user_set($user), 'user_set';
 is_deeply $r->user_get($user->{login}), $user, 'user_get';
 
+ok $r->status('test' => 'start test'), 'status set';
+ok my $s = $r->status('test'), 'status get';
+diag $s;
+
 ok($r->usage_init({ login => 'test' }), 'usage_init' );
 cmp_ok($r->{session}->get('test:usage'), '==',0, 'usage');
 
diff --git a/test.sh b/test.sh
index acb2f1b..dafa4a6 100755 (executable)
--- a/test.sh
+++ b/test.sh
@@ -1,7 +1,7 @@
 #!/bin/sh -xe
 
 user_dir=/srv/cloudstore/users/test/
-rm -Rvf $user_dir/log/* $user_dir/blob/*
+rm -Rvf $user_dir/log/* #$user_dir/blob/*
 
 push() {
        file=`shift`