from Test import Test
from qa import utils
import tempfile
+from qa.PLCs import PLC, PLCs
class plc_configure(Test):
"""
Configure the myplc from config options in config file
"""
- def call(self, plc_config_option=None, plc_config_value=None):
+ def call(self, plc_name, plc_config_option=None, plc_config_value=None):
+ # Get plc configuration from config
+ plc = PLC(self.config)
+ plcs = getattr(self.config, 'plcs', [])
+ for p in plcs:
+ if p['name'] in [plc_name]:
+ plc.update(p)
+
services = ['API', 'DB', 'WWW', 'BOOT']
plc_options = []
- # Turn off plc (for good measure)
+
+ # Turn off plc (for good measure)
command = "/sbin/service plc stop"
if self.config.verbose: utils.header(command)
- (stdout, stderr) = utils.popen(command)
+ (status, output) = plc.commands(command)
# mount plc (need to do this optionally, as we do not want this for myplc-native)
command = "/sbin/service plc mount"
if self.config.verbose: utils.header(command)
- (stdout, stderr) = utils.popen(command)
+ (status, output) = plc.commands(command)
# Get plc configuration variables
if plc_config_option is not None and \
for service in services:
host_option = 'PLC_%(service)s_HOST' % locals()
ip_option = 'PLC_%(service)s_IP' % locals()
- plc_options.append((host_option, self.config.hostname))
- plc_options.append((ip_option, self.config.ip))
+ plc_options.append((host_option, plc['host']))
+ plc_options.append((ip_option, plc['ip']))
# Load any other options found in config file
for attr in dir(self.config):
if attr.startswith('PLC'):
plc_options.append((attr, getattr(self.config, attr)))
# Write temporary plc-config file
- tmpfconf, tmpfname = tempfile.mkstemp(".config","plc-config-tty")
+ # XX use plc instance to copy file
+ tmpfconf, tmpfname = tempfile.mkstemp(".config","plc-config-tty", '/usr/tmp/')
+ tmpfname_parts = tempfname.split(os.sep)
if self.config.verbose:
utils.header("generating temporary config file %(tmpfname)s"%locals())
for (option, value) in plc_options:
os.write(tmpfconf, 'e %s\n%s\n' % (option, value))
os.write(tmpfconf,'w\nq\n')
os.close(tmpfconf)
-
+ plc.scp(tmpfname, "%s:/usr/tmp" % (plc['host']))
+
# configure plc
command = "plc-config-tty < %(tmpfname)s" % locals()
if self.config.verbose: utils.header(command)
- (stdout, stderr) = utils.popen(command)
+ (status, output) = plc.commands(command)
# clean up temporary conf file
+ # XX use plc instance to copy file
if self.config.verbose: utils.header("removing %(tmpfname)s"%locals())
os.unlink(tmpfname)
# umount plc (need to do this optionally, as we do not want this for myplc-native)
command = "/sbin/service plc umount"
if self.config.verbose: utils.header(command)
- (stdout, stderr) = utils.popen(command)
+ (status, output) = plc.commands(command)
return 1