/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 42 - (hide 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 dpavlin 40 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 dpavlin 41 #$remote = ''; # FIXME
13 dpavlin 40
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 dpavlin 42 my $df = `$remote df -kT`;
52 dpavlin 40 my @lines = split(/\n/, $df);
53 dpavlin 42 my @header = map { lc($_) } split(/\s+/, shift @lines, 7);
54 dpavlin 40
55 dpavlin 41 my @items;
56 dpavlin 40 my $number;
57    
58     while ( @lines ) {
59 dpavlin 41 my $item;
60 dpavlin 40 my @v = split(/\s+/, shift @lines);
61     if ( $#v == 0 ) {
62 dpavlin 41 my $cont = shift @lines;
63     $cont =~ s/^\s+//;
64     push @v, split(/\s+/, $cont);
65 dpavlin 40 }
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 dpavlin 41 $item->{ $name } = $val;
74 dpavlin 40
75 dpavlin 41 $item->{ label } = $val if $name =~ m/mounted/;
76 dpavlin 40 }
77     warn "left ",dump(@v) if @v;
78 dpavlin 41 push @items, $item;
79 dpavlin 40 }
80    
81 dpavlin 41 warn "# items = ",dump( @items );
82     warn "# number [$#items] = ",dump( $number );
83 dpavlin 40
84     $self->json( $c->res, {
85 dpavlin 41 items => [ @items ],
86 dpavlin 40 properties => {
87     map { $_ => { valueType => 'number' } }
88 dpavlin 41 grep { $number->{$_} == $#items + 1 }
89 dpavlin 40 keys %$number
90     }
91     } );
92     }
93    
94     1;

  ViewVC Help
Powered by ViewVC 1.1.26