1 |
package WM::System; |
2 |
|
3 |
use strict; |
4 |
use warnings; |
5 |
|
6 |
use base 'Mojolicious::Controller'; |
7 |
|
8 |
use Data::Dump qw/dump/; |
9 |
use JSON; |
10 |
|
11 |
my $remote = 'ssh mjesec'; |
12 |
#$remote = ''; # FIXME |
13 |
|
14 |
sub exhibit { |
15 |
my ($self, $c) = @_; |
16 |
warn "## c = ",dump( $c ); |
17 |
$c->render; |
18 |
} |
19 |
|
20 |
=for later |
21 |
|
22 |
sub vzlist { |
23 |
my ($self, $c) = @_; |
24 |
|
25 |
$self->text_plain( $c->res, 'sudo /usr/sbin/vzlist' ); |
26 |
|
27 |
} |
28 |
|
29 |
|
30 |
sub text_plain { |
31 |
my ( $self, $res, $command ) = @_; |
32 |
$res->code(200); |
33 |
$res->headers->content_type('text/plain'); |
34 |
$res->body( scalar `COLUMNS=128 $remote $command` ); |
35 |
} |
36 |
|
37 |
|
38 |
=cut |
39 |
|
40 |
sub json { |
41 |
my ( $self, $res, $data ) = @_; |
42 |
$res->code(200); |
43 |
$res->headers->content_type('application/javascript'); |
44 |
$res->body( to_json( $data ) ); |
45 |
} |
46 |
|
47 |
|
48 |
sub df { |
49 |
my ($self, $c) = @_; |
50 |
|
51 |
my $df = `$remote df -kT`; |
52 |
my @lines = split(/\n/, $df); |
53 |
my @header = map { lc($_) } split(/\s+/, shift @lines, 7); |
54 |
|
55 |
my @items; |
56 |
my $number; |
57 |
|
58 |
while ( @lines ) { |
59 |
my $item; |
60 |
my @v = split(/\s+/, shift @lines); |
61 |
if ( $#v == 0 ) { |
62 |
my $cont = shift @lines; |
63 |
$cont =~ s/^\s+//; |
64 |
push @v, split(/\s+/, $cont); |
65 |
} |
66 |
foreach my $i ( 0 .. $#header ) { |
67 |
my $name = lc( $header[$i] ); |
68 |
$name =~ s/[^a-z0-9]+/_/g; |
69 |
$name =~ s/^([0-9])/_$1/; |
70 |
$name =~ s/_+$//; |
71 |
my $val = $v[$i]; |
72 |
$number->{$name}++ if $val =~ s/^(\d+)%?$/$1/; |
73 |
$item->{ $name } = $val; |
74 |
|
75 |
$item->{ label } = $val if $name =~ m/mounted/; |
76 |
} |
77 |
warn "left ",dump(@v) if @v; |
78 |
push @items, $item; |
79 |
} |
80 |
|
81 |
warn "# items = ",dump( @items ); |
82 |
warn "# number [$#items] = ",dump( $number ); |
83 |
|
84 |
$self->json( $c->res, { |
85 |
items => [ @items ], |
86 |
properties => { |
87 |
map { $_ => { valueType => 'number' } } |
88 |
grep { $number->{$_} == $#items + 1 } |
89 |
keys %$number |
90 |
} |
91 |
} ); |
92 |
} |
93 |
|
94 |
1; |