do everything once keyed on local file
[pxelator] / lib / PXElator / amt.pm
index 1e0540b..c424f6f 100644 (file)
@@ -6,73 +6,77 @@ use strict;
 use lib '/srv/Intel-AMT/lib/';
 use Intel::AMT::RemoteControl;
 use Intel::AMT::NetworkAdministration;
+use Intel::AMT::EventManager;
 use Data::Dump qw/dump/;
 use Regexp::Common qw/net/;
 
 use html;
 use ping;
-use CouchDB;
+use store;
 use Carp qw/confess/;
 
 sub ip {
-       my $client_ip = shift || confess "no ip";
-       my ( $passwd, $ip ) = split(/\s+/, client::conf( $client_ip => 'amt' ));
+       my ( $client_ip, $amt ) = @_;
+       return unless $client_ip;
+       $amt ||= client::conf( $client_ip => 'amt' );
+       my ( $passwd, $ip ) = split(/\s+/, $amt);
        ( $ip, $passwd ) = ( $passwd, $ip ) if $passwd =~ m/$RE{net}{IPv4}/;
 
        $ip ||= $client_ip;
 
-       if ( ! ping::host( $ip ) ) {
-               warn "W: ping $ip unreachable\n";
-       }
-
-       warn "amt $ip ", '*' x length($passwd), "\n";
-
        $ENV{AMT_PASSWORD} = $passwd;
        $ENV{AMT_HOST} = $ip;
 
-}
+       my $hostname = client::conf( $client_ip => 'hostname' ) || $client_ip;
 
-sub power_on {
-       ip @_;
-       ( power_state() & 0x0f ) == 0;
+       client::conf( $ip => 'hostname', default => "amt-$hostname" );
+
+       return $ip;
 }
 
 sub power_state {
        my $state = eval { Intel::AMT::RemoteControl::SystemPowerState };
-       CouchDB::audit('SystemPowerState', { ip => $ENV{AMT_HOST}, SystemPowerState => $state });
+       store::audit('SystemPowerState', { ip => $ENV{AMT_HOST}, SystemPowerState => $state });
        return $state;
 }
 
-sub info {
+sub power_on {
+       ip @_;
+       my $state = power_state;
+       defined $state && ( $state & 0x0f ) == 0;
+}
+
+sub network {
        ip @_;
 
-       my $amt;
-       eval {
-               $amt = Intel::AMT::NetworkAdministration::network_settings;
-               $amt->{power_state} = Intel::AMT::RemoteControl::SystemPowerState;
-               CouchDB::audit('network', $amt );
-       };
-       warn "ERROR amt $@" if $@;
-
-       my $out;
-       my $ip = $ENV{AMT_HOST};
-
-       $out = 
-                 qq| <a href="http://$ip:16992/" target="$ip">amt</a>|
-               . qq| <a href="http://$ip:16992/ip.htm" target="$ip">ip</a>|
-               . qq|<br>|
-               . html::pre_dump( $amt )
-               ;
-
-       return $out;
+       my $amt = eval { Intel::AMT::NetworkAdministration::network_settings };
+       if ( $@ ) {
+               warn "ERROR $@";
+       } else {
+               $amt->{ip} = $ENV{AMT_HOST};
+               store::audit('log', $amt );
+       }
+       $amt;
 }
 
+sub log {
+       ip @_;
+
+       my $amt = eval { Intel::AMT::EventManager::ReadEventLogRecords };
+       if ( $@ ) {
+               warn "ERROR $@";
+       } else {
+               $amt->{ip} = $ENV{AMT_HOST};
+               store::audit('log', $amt );
+       }
+       $amt;
+}
 
 sub RemoteControl {
        ip shift;
        my $command = shift;
        eval { Intel::AMT::RemoteControl::run( $command ) };
-       CouchDB::audit( $command, { ip => $ENV{AMT_HOST}, error => $@ } );
+       store::audit( $command, { ip => $ENV{AMT_HOST}, error => $@ } );
        warn "ERROR $@" if $@;
 }