93e5165e96621f6d9d6075f8d553a07edec5bb45
[cloudstore.git] / gearman / send_file.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 =head1 NAME
6
7 Filesystem Gearman Worker
8
9 =cut
10
11
12 use Data::Dump qw(dump);
13
14 use lib '/srv/cloudstore/lib';
15 use CloudStore::API;
16
17 my $api = CloudStore::API->new('s1');
18
19 use Gearman::Worker;
20 my $worker = Gearman::Worker->new;
21 $worker->job_servers('127.0.0.1:4730');
22
23 =head2 send_file ~u2001/from.txt#~u2003/dir/new to.txt
24
25 =cut
26
27 $worker->register_function( send_file => sub {
28         my ($job) = @_;
29
30         my $work = $job->arg;
31         chomp $work;
32         warn "# send_file [$work]\n";
33
34         my ( $from, $to ) = split(/#/,$work,2);
35         
36         my $f_uid = $1 if $from =~ s{~(\w+)/}{};
37         my $t_uid = $1 if $to   =~ s{~(\w+)/}{};
38
39         warn "send_file $f_uid $from -> $t_uid $to\n";
40
41         $api->send_file( $f_uid => $from, $t_uid => $to );
42 });
43
44 =head2 rename_file ~u2001/old.txt#new.txt
45
46 =cut
47
48 $worker->register_function( rename_file => sub {
49         my ($job) = @_;
50
51         my $work = $job->arg;
52         chomp $work;
53         warn "# rename_file [$work]\n";
54
55         my ( $from, $to ) = split(/#/,$work,2);
56         my $login = $1 if $from =~ s{~(\w+)/}{};
57         $api->rename_file( $login, $from, $to );
58 });
59
60 =head2 delete ~u2001/file_or_dir
61
62 =cut
63
64 $worker->register_function( delete => sub {
65         my ($job) = @_;
66         my $work = $job->arg;
67         chomp $work;
68         warn "# delete [$work]\n";
69
70         my $login = $1 if $work =~ s{~(\w+)}{};
71         $api->delete( $login, $work );
72
73 });
74
75 =head2 file_size ~u2001/foo.txt
76
77 =cut
78
79 $worker->register_function( file_size => sub {
80         my ($job) = @_;
81         my $work = $job->arg;
82         chomp $work;
83         warn "# file_size [$work]\n";
84
85         my $login = $1 if $work =~ s{~(\w+)}{};
86         $api->file_size( $login, $work );
87 });
88
89 =head2 user_usage u2001
90
91 =cut
92
93 $worker->register_function( user_usage => sub {
94         my ($job) = @_;
95         my $work = $job->arg;
96         chomp $work;
97         warn "# usage [$work]\n";
98         my $usage = $api->usage( $work );
99         return $usage->{_usage};
100 });
101
102 warn "$0 pid $$ waitng for jobs\n";
103
104 if ( $ENV{SLICE} ) {
105         chroot $ENV{SLICE} || die "can't chroot $ENV{SLICE}: $!";
106 } else {
107         warn "WARNING: not running under chroot SLICE=/hostname/sx\n";
108 }
109
110 $worker->work while 1;
111