/[simile]/wm/lib/WM/System.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /wm/lib/WM/System.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 42 - (show annotations)
Sun Oct 26 16:24:58 2008 UTC (15 years, 6 months ago) by dpavlin
File size: 1692 byte(s)
added filesystem time and facet for it
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;

  ViewVC Help
Powered by ViewVC 1.1.26