pass slice group name to new
[cloudstore.git] / lib / CloudStore / API.pm
index 4baa4c3..7913d36 100644 (file)
@@ -3,19 +3,24 @@ 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);
 
 sub new {
-       my $class = shift;
-       my $self = {@_};
+       my ($class,$group) = @_;
+
+       my ( undef, $dir, $port, undef ) = getgrnam($group) || die "can't find group $group: $!";
+       my $self = {
+               passwd => '/var/lib/extrausers/passwd',
+               PORT => $port,
+               SLICE => $dir,
+       };
        bless $self, $class;
 
-       $self->{passwd} ||= '/var/lib/extrausers/passwd';
-       $self->{PORT}   ||= $ENV{PORT}  || die "no PORT in env";
-       $self->{SLICE}  ||= $ENV{SLICE} || die "no SLICE in env";
-
        $self->{md5} = $self->user_info('md5');
 
        return $self;
@@ -56,8 +61,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 +104,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 +112,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;
 }