mirror of
https://github.com/espressif/openthread.git
synced 2026-06-06 05:24:51 +00:00
[harness-automation] add IpPowerSocketPduController class (#2247)
This commit is contained in:
committed by
Jonathan Hui
parent
b1baa7da52
commit
a39e1f59da
@@ -33,6 +33,13 @@ import re
|
||||
import telnetlib
|
||||
import time
|
||||
|
||||
try:
|
||||
# python 2
|
||||
from urllib2 import HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, build_opener
|
||||
except ImportError:
|
||||
# python 3
|
||||
from urllib.request import HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, build_opener
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -180,6 +187,38 @@ class NordicBoardPduController(PduController):
|
||||
def close(self):
|
||||
pass
|
||||
|
||||
|
||||
class IpPowerSocketPduController(PduController):
|
||||
|
||||
def open(self, **params):
|
||||
self._base_url = 'http://{}/outs.cgi?out'.format(params['ip'])
|
||||
password_manager = HTTPPasswordMgrWithDefaultRealm()
|
||||
password_manager.add_password(None, self._base_url, params['user'], params['pass'])
|
||||
authentication_handler = HTTPBasicAuthHandler(password_manager)
|
||||
self._opener = build_opener(authentication_handler)
|
||||
|
||||
def reboot(self, **params):
|
||||
logger.info('Executing power cycle')
|
||||
for socket in params['sockets']:
|
||||
self._turn_off(socket)
|
||||
time.sleep(2)
|
||||
self._turn_on(socket)
|
||||
time.sleep(2)
|
||||
|
||||
def _change_state(self, socket, state):
|
||||
self._opener.open('{}{}={}'.format(self._base_url, socket, state))
|
||||
|
||||
def _turn_off(self, socket):
|
||||
self._change_state(socket, 1)
|
||||
|
||||
def _turn_on(self, socket):
|
||||
self._change_state(socket, 0)
|
||||
|
||||
def close(self):
|
||||
self._base_url = None
|
||||
self._opener = None
|
||||
|
||||
|
||||
class ManualPduController(PduController):
|
||||
|
||||
def open(self, **kwargs):
|
||||
|
||||
@@ -36,6 +36,8 @@ class PduControllerFactory(object):
|
||||
return pdu_controller.NordicBoardPduController()
|
||||
elif _type == 'APC_PDU_CONTROLLER':
|
||||
return pdu_controller.ApcPduController()
|
||||
elif _type == 'IP_POWER_SOCKET_PDU_CONTROLLER':
|
||||
return pdu_controller.IpPowerSocketPduController()
|
||||
elif _type == 'MANUAL_PDU_CONTROLLER':
|
||||
return pdu_controller.ManualPduController()
|
||||
else:
|
||||
|
||||
@@ -95,6 +95,7 @@ Types of supported PDU controllers:
|
||||
- None - when no PDU controller connected
|
||||
- 'APC_PDU_CONTROLLER' - when APC PDU controller connected
|
||||
- 'NORDIC_BOARD_PDU_CONTOLLER' - when Nordic boards PDU controller connected
|
||||
- 'IP_POWER_SOCKET_PDU_CONTROLLER' - when IP Power Socket 5G10A connected
|
||||
"""
|
||||
|
||||
PDU_CONTROLLER_OPEN_PARAMS = {'port': 23, 'ip': '127.0.0.1'}
|
||||
@@ -105,6 +106,9 @@ Example parameters for the 'APC_PDU_CONTROLLER':
|
||||
|
||||
Example parameters for the 'NORDIC_BOARD_PDU_CONTOLLER':
|
||||
{} - empty dictionary
|
||||
|
||||
Example parameters for the 'IP_POWER_SOCKET_PDU_CONTROLLER':
|
||||
{'user': 'user', 'pass': 'pass', 'ip': '127.0.0.1'}
|
||||
"""
|
||||
|
||||
PDU_CONTROLLER_REBOOT_PARAMS = {'outlet': 1}
|
||||
@@ -115,6 +119,9 @@ Example parameters for the 'APC_PDU_CONTROLLER':
|
||||
|
||||
Example parameters for the 'NORDIC_BOARD_PDU_CONTOLLER':
|
||||
{'boards_serial_numbers': ('12345123', ...)}
|
||||
|
||||
Example parameters for the 'IP_POWER_SOCKET_PDU_CONTROLLER':
|
||||
{'sockets': [0, 1]}
|
||||
"""
|
||||
|
||||
SHIELD_CONTROLLER_TYPE = None
|
||||
|
||||
Reference in New Issue
Block a user