106 lines
2.7 KiB
Python
106 lines
2.7 KiB
Python
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||
|
# or more contributor license agreements. See the NOTICE file
|
||
|
# distributed with this work for additional information
|
||
|
# regarding copyright ownership. The ASF licenses this file
|
||
|
# to you under the Apache License, Version 2.0 (the
|
||
|
# "License"); you may not use this file except in compliance
|
||
|
# with the License. You may obtain a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing,
|
||
|
# software distributed under the License is distributed on an
|
||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||
|
# KIND, either express or implied. See the License for the
|
||
|
# specific language governing permissions and limitations
|
||
|
# under the License.
|
||
|
#
|
||
|
# $Id$
|
||
|
#
|
||
|
|
||
|
import sys
|
||
|
import os
|
||
|
|
||
|
from systemmanagementinterface import SystemManagementInterface
|
||
|
|
||
|
|
||
|
#class systemmagement():
|
||
|
#def __init__(self, proto):
|
||
|
#self.proto = proto
|
||
|
|
||
|
class Ipmi(SystemManagementInterface):
|
||
|
def __init__(self, host, user, password):
|
||
|
self.host = host + "-ipmi"
|
||
|
self.password = password
|
||
|
self.user = user
|
||
|
self.powerStatus = None
|
||
|
self.verbose = False
|
||
|
self.ipmicmd = "ipmitool -I lanplus -U" + self.user + " -H" + self.host + \
|
||
|
" -P " + self.password + " "
|
||
|
|
||
|
|
||
|
def setVerbose(self, verbose):
|
||
|
self.verbose = verbose
|
||
|
|
||
|
def getPowerStatus(self):
|
||
|
if self.verbose:
|
||
|
print self.ipmicmd
|
||
|
cmd = self.ipmicmd + "chassis power status"
|
||
|
a = os.popen(cmd)
|
||
|
output = a.read()
|
||
|
|
||
|
print "%s\n%s" % (self.host, output)
|
||
|
if "off" in output:
|
||
|
self.powerStatus = 0
|
||
|
if "on" in output:
|
||
|
self.powerStatus = 1
|
||
|
if "Unable" in output:
|
||
|
print "unable to get the status"
|
||
|
self.powerStatus = 0
|
||
|
|
||
|
return output
|
||
|
#return a.read()
|
||
|
#for line in a.readlines():
|
||
|
#print line
|
||
|
|
||
|
def isPowered(self):
|
||
|
if self.powerStatus == None:
|
||
|
self.getPowerStatus()
|
||
|
if self.powerStatus:
|
||
|
return 1;
|
||
|
if not self.powerStatus:
|
||
|
return 0;
|
||
|
|
||
|
|
||
|
def powerOn(self):
|
||
|
cmd = self.ipmicmd + "chassis power on"
|
||
|
a = os.popen(cmd)
|
||
|
output = a.read()
|
||
|
print "output is ", output
|
||
|
|
||
|
def powerOff(self):
|
||
|
cmd = self.ipmicmd + "chassis power off"
|
||
|
a = os.popen(cmd)
|
||
|
output = a.read()
|
||
|
print "output is ", output
|
||
|
|
||
|
def powerCycle(self):
|
||
|
cmd = self.ipmicmd + "chassis power cycle"
|
||
|
a = os.popen(cmd)
|
||
|
output = a.read()
|
||
|
print "output is ", output
|
||
|
|
||
|
def powerReset(self):
|
||
|
cmd = self.ipmicmd + "chassis power reset"
|
||
|
a = os.popen(cmd)
|
||
|
output = a.read()
|
||
|
print "output is ", output
|
||
|
|
||
|
def activateConsole(self):
|
||
|
cmd = self.ipmicmd + "sol activate"
|
||
|
a = os.popen(cmd)
|
||
|
output = a.read()
|
||
|
print "output is ", output
|
||
|
|
||
|
#ipmitool -I lanplus -E -H r2r1c3b0-ipmi -U root chassis power status
|