include system quota using gearman
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 10 Dec 2011 17:20:31 +0000 (18:20 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 10 Dec 2011 17:26:31 +0000 (18:26 +0100)
lib/CloudStore/API.pm

index 4baa4c3..c6aed04 100644 (file)
@@ -3,6 +3,9 @@ use warnings;
 use strict;
 use autodie;
 
+use lib 'lib';
+use base qw(CloudStore::Gearman);
+
 use File::Path qw(make_path remove_tree);
 use File::Find;
 use Data::Dump qw(dump);
@@ -56,8 +59,12 @@ sub create_user {
 
                mkdir $dir;
                chown $max_uid, $self->{PORT}, $dir;
+
        }
 
+       # FIXME update quota only on create?
+       $self->gearman_do( 'narada_s1_quota_set' => "$found $new_quota" );
+
        return $found;
 }
 
@@ -95,6 +102,7 @@ sub append {
 
 sub usage {
        my ( $self, $user ) = @_;
+       $user = $self->user_info($user) unless ref $user eq 'HASH';
        my $path = $self->user_dir( $user => '.log');
        my $sum;
        open(my $fh, '<', $path);
@@ -102,8 +110,13 @@ sub usage {
                chomp;
                my @v = split(/#/,$_);
                $sum->{ $v[0] } += $v[1];
-               $sum->{_total}  += $v[1];
+               $sum->{_usage}  += $v[1];
        }
+       my ( $usage, $quota ) = split(/ /,
+               $self->gearman_do( 'narada_s1_quota_get' => $user->{uid} )
+       );
+       $sum->{_usage} += $usage;
+       $sum->{_quota} = $quota;
        warn "## usage ",dump($user, $sum), $/;
        return $sum;
 }