X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=qaapi%2Fqa%2FPLCs.py;h=287aac9e17ab52c0879432c84d8b188568701d3e;hb=740ea07d41e95f96442c058ff7f26237835de670;hp=e16aaa7d17eb7d9e2b01bcad453db9f75ec91bd7;hpb=18f6ac940ae844ee672e026a39fb5f776f240eff;p=tests.git diff --git a/qaapi/qa/PLCs.py b/qaapi/qa/PLCs.py index e16aaa7..287aac9 100644 --- a/qaapi/qa/PLCs.py +++ b/qaapi/qa/PLCs.py @@ -1,17 +1,20 @@ import os -import copy +import re +import utils +import xmlrpclib from Remote import Remote from Table import Table +from logger import Logfile class PLC(dict, Remote): fields = { 'name': 'TestPLC', # PLC Name 'host': 'localhost', # Node Hostname 'ip': '127.0.0.1', # IP - 'chroot': None, + 'chroot': None, # Path to the chroot 'vserver': None, # Vserver where this PLC lives - 'rootkey': '/home/tmack/.ssh/plc-root', # Root Key - 'api_path': '/PLCAPI/', # PLCAPI path + 'host_rootkey': None, # Root Key + 'api_path': '/PLCAPI/', # PLCAPI path 'port': '443' # PLCAPI port } @@ -25,10 +28,48 @@ class PLC(dict, Remote): # init config self.config = config - self.config.update_api(self) + self.__init_logfile__() -class PLCs(list, Table): + def __init_logfile__(self, filename = None): + if not filename: + filename = '%s/qaapi.log' % (self.config.logdir) + self.logfile = Logfile(filename) + + def update_ip(self): + try: + command = "/sbin/ifconfig eth0 | grep -v inet6 | grep inet | awk '{print$2;}'" + (status, output) = self.commands(command) + ip = re.findall(r'[0-9\.]+', output)[0] + except: + ip = "127.0.0.1" + self['ip'] = ip.strip() + return self['ip'] + + def update_api(self): + # Set up API acccess + # If plc is specified, find its configuration + # and use its API + self.update_ip() + name, ip, port, path = self['name'], self['ip'], self['port'], self['api_path'] + if self.config.verbose: + utils.header("Updating %(name)s's api to https://%(ip)s:%(port)s/%(path)s" % locals(), logfile = self.config.logfile) + api_server = "https://%(ip)s:%(port)s/%(path)s" % locals() + self.config.api = xmlrpclib.Server(api_server, allow_none = 1) + self.config.api_type = 'xmlrpc' + + def update_node_images(self): + pass + + def scp_to_webroot(self, localfiles, recursive = False): + if self.config.verbose: + utils.header("Copying %s to %s webroot" % (localfiles, self['name']), logfile = self.config.logfile) + self.scp_to("%(localfiles)s" % locals(), "/var/www/html/") + url = 'http://%s/%s' % (self['ip'], localfiles) + + return url + +class PLCs(Table): def __init__(self, config, plcs): plclist = [PLC(config, plc) for plc in plcs] - list.__init__(self, plclist) + Table.__init__(self, plclist)