summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroot <root@no.no.james.local>2017-08-29 19:57:58 +0100
committerroot <root@no.no.james.local>2017-08-29 19:57:58 +0100
commit609cf95dc0ecaff0547ba971c2241cdad8f5dd22 (patch)
tree5d427040e0152186a7a9a5e26540962a6e72adb0
parent78a2d0d47a493ef7845c86d4a1ba3e9a77a071ff (diff)
downloadinf-609cf95dc0ecaff0547ba971c2241cdad8f5dd22.tar.gz
inf-609cf95dc0ecaff0547ba971c2241cdad8f5dd22.tar.bz2
inf-609cf95dc0ecaff0547ba971c2241cdad8f5dd22.zip
add power for ilo2
-rw-r--r--INF/ILO2.pm71
1 files 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;
}