run lxc-enter-namespace with --noseclabel
[tests.git] / qaapi / qa / PLCs.py
index e16aaa7..287aac9 100644 (file)
@@ -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)