From 609cf95dc0ecaff0547ba971c2241cdad8f5dd22 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 29 Aug 2017 19:57:58 +0100 Subject: add power for ilo2 --- INF/ILO2.pm | 71 +++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 21 deletions(-) diff --git a/INF/ILO2.pm b/INF/ILO2.pm index de31e2a..6082336 100644 --- a/INF/ILO2.pm +++ b/INF/ILO2.pm @@ -405,41 +405,70 @@ print Dumper($document); sub get_host_power($) { my ($self) = @_; - die "soup"; $self->login() unless defined $self->{stoken}; - my $get = GET( $self->{ilo_url} . '/json/host_power' ); + my $get = GET( $self->{ilo_url}. '/dvirtpwr.htm' ); - $get->header( 'cookie' => 'sessionKey=' . $self->{stoken} ); + $get->header( 'cookie' => $self->{stoken} ); my $res = $self->{ua}->request($get); unless ( $res->is_success ) { - print STDERR " get host power - did not get 200\n"; - return undef; + print STDERR " $what - did not get 200\n"; + return 0; } - my $state = decode_json $res->content; + my $content=$res->content; + + return 0 unless $content =~ /serverPower="([A-Z0-9]+)"/ ; - return $state->{'hostpwr_state'}; + my $state=$1; +$state="OFF" if $state eq 'STANDBY'; + + print "Server Power is $state\n"; + +return $state; } -sub set_host_power($$) { - my ( $self, $what ) = @_; +sub set_host_power($$$) { + my ( $self, $thing,$other_thing ) = @_; - die "fish"; $self->login() unless defined $self->{stoken}; - my $post = POST( $self->{ilo_url} . '/json/host_power' ); - my $json = - '{"method":"' . $what . '","session_key":"' . $self->{stoken} . '"}'; - $post->header( 'Content-Type' => 'application/json' ); - $post->header( 'Content-Length' => length($json) ); - $post->content($json); - $post->header( 'cookie' => 'sessionKey=' . $self->{stoken} ); + my $get = GET( $self->{ilo_url}. '/dvirtpwr.htm' ); + $get->header( 'cookie' => $self->{stoken} ); + + my $res = $self->{ua}->request($get); + + unless ( $res->is_success ) { + print STDERR " $what - did not get 200\n"; + return 0; + } + +#cold Cold+Boot +#warn Reset +#hold Press+and+Hold +#press Momentary+Press + + + my $content=$res->content; + + return -1 unless $content =~ /signature="([A-Z0-9]+)"/ ; + + $self->{signature}=$1; + + my $form_content='signature='.$self->{signature}.'&'.$thing.'='.$other_thing; + + print "form_content=$form_content\n"; + + my $post = POST( $self->{ilo_url} . '/virtpwrpress.cgi' ); + $post->header( 'Content-Type' => 'application/x-www-form-urlencoded' ); + $post->header( 'Content-Length' => length($form_content) ); + $post->content($form_content); + $post->header( 'cookie' => $self->{stoken} ); my $res = $self->{ua}->request($post); @@ -453,18 +482,18 @@ sub set_host_power($$) { sub cold_boot($) { my $self = shift; - return $self->set_host_power('system_coldboot'); + return $self->set_host_power('cold','Cold+Boot'); } sub reset($) { my $self = shift; - return $self->set_host_power('system_reset'); + return $self->set_host_power('warm','Reset'); } sub off($) { my $self = shift; if ( $self->get_host_power =~ /ON/i ) { - return $self->set_host_power('hold_power_button'); + return $self->set_host_power('hold','Press+and+Hold'); } return 1; } @@ -472,7 +501,7 @@ sub off($) { sub on($) { my $self = shift; if ( $self->get_host_power =~ /OFF/i ) { - return $self->set_host_power('press_power_button'); + return $self->set_host_power('press','Momentary+Press'); } return 1; } -- cgit v1.2.3