X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system%2FTestPlc.py;h=16ae3eb21e67c49194831a58d57b3f4f55b42a4f;hb=740ea07d41e95f96442c058ff7f26237835de670;hp=dc465a7c97e3c1fec85aef5fcaa39de5dabb5c2c;hpb=40054e80b3cea64e2747cac8053acada7c02b365;p=tests.git
diff --git a/system/TestPlc.py b/system/TestPlc.py
index dc465a7..16ae3eb 100644
--- a/system/TestPlc.py
+++ b/system/TestPlc.py
@@ -10,8 +10,9 @@ from datetime import datetime, timedelta
from types import StringTypes
import utils
+from Completer import Completer, CompleterTask
from TestSite import TestSite
-from TestNode import TestNode
+from TestNode import TestNode, CompleterTaskNodeSsh
from TestUser import TestUser
from TestKey import TestKey
from TestSlice import TestSlice
@@ -21,7 +22,6 @@ from TestSsh import TestSsh
from TestApiserver import TestApiserver
from TestAuthSfa import TestAuthSfa
from PlcapiUrlScanner import PlcapiUrlScanner
-from Completer import Completer, CompleterTask
has_sfa_cache_filename="sfa-cache"
@@ -109,6 +109,7 @@ class slice_mapper__tasks (object):
tasks += slice_method (test_slice, self.options)
return Completer (tasks).run (decorator_self.timeout, decorator_self.silent, decorator_self.period)
# restore the doc text from the TestSlice method even if a bit odd
+ wrappee.__name__ = method.__name__
wrappee.__doc__ = slice_method.__doc__
return wrappee
@@ -162,7 +163,7 @@ class TestPlc:
'ssh_slice_sfa@1', 'sfa_delete_slice@1', 'sfa_delete_user@1', SEPSFA,
'cross_check_tcp@1', 'check_system_slice', SEP,
# check slices are turned off properly
- 'empty_slices', 'ssh_slice_off', 'slice_fs_deleted', SEP,
+ 'empty_slices', 'ssh_slice_off', 'slice_fs_deleted_ignore', SEP,
# check they are properly re-created with the same name
'fill_slices', 'ssh_slice_again_ignore', SEP,
'gather_logs_force', SEP,
@@ -312,9 +313,9 @@ class TestPlc:
return self.yum_check_installed (rpms)
def auth_root (self):
- return {'Username':self.plc_spec['PLC_ROOT_USER'],
+ return {'Username':self.plc_spec['settings']['PLC_ROOT_USER'],
'AuthMethod':'password',
- 'AuthString':self.plc_spec['PLC_ROOT_PASSWORD'],
+ 'AuthString':self.plc_spec['settings']['PLC_ROOT_PASSWORD'],
'Role' : self.plc_spec['role']
}
def locate_site (self,sitename):
@@ -589,7 +590,7 @@ class TestPlc:
print '+ MyPLC',plc_spec['name']
# WARNING this would not be right for lxc-based PLC's - should be harmless though
print '+\tvserver address = root@%s:/vservers/%s'%(plc_spec['host_box'],plc_spec['vservername'])
- print '+\tIP = %s/%s'%(plc_spec['PLC_API_HOST'],plc_spec['vserverip'])
+ print '+\tIP = %s/%s'%(plc_spec['settings']['PLC_API_HOST'],plc_spec['vserverip'])
for site_spec in plc_spec['sites']:
for node_spec in site_spec['nodes']:
TestPlc.display_mapping_node(node_spec)
@@ -702,26 +703,8 @@ class TestPlc:
"run plc-config-tty"
tmpname='%s.plc-config-tty'%(self.name())
fileconf=open(tmpname,'w')
- for var in [ 'PLC_NAME',
- 'PLC_ROOT_USER',
- 'PLC_ROOT_PASSWORD',
- 'PLC_SLICE_PREFIX',
- 'PLC_MAIL_ENABLED',
- 'PLC_MAIL_SUPPORT_ADDRESS',
- 'PLC_DB_HOST',
-# 'PLC_DB_PASSWORD',
- # Above line was added for integrating SFA Testing
- 'PLC_API_HOST',
- 'PLC_WWW_HOST',
- 'PLC_BOOT_HOST',
- 'PLC_NET_DNS1',
- 'PLC_NET_DNS2',
- 'PLC_RESERVATION_GRANULARITY',
- 'PLC_OMF_ENABLED',
- 'PLC_OMF_XMPP_SERVER',
- 'PLC_VSYS_DEFAULTS',
- ]:
- fileconf.write ('e %s\n%s\n'%(var,self.plc_spec[var]))
+ for (var,value) in self.plc_spec['settings'].iteritems():
+ fileconf.write ('e %s\n%s\n'%(var,value))
fileconf.write('w\n')
fileconf.write('q\n')
fileconf.close()
@@ -826,7 +809,7 @@ class TestPlc:
sites = self.apiserver.GetSites(self.auth_root(), {}, ['site_id','login_base'])
for site in sites:
# keep automatic site - otherwise we shoot in our own foot, root_auth is not valid anymore
- if site['login_base']==self.plc_spec['PLC_SLICE_PREFIX']: continue
+ if site['login_base']==self.plc_spec['settings']['PLC_SLICE_PREFIX']: continue
site_id=site['site_id']
print 'Deleting site_id',site_id
self.apiserver.DeleteSite(self.auth_root(),site_id)
@@ -1081,18 +1064,6 @@ class TestPlc:
return self.check_nodes_ping ()
def check_nodes_ssh(self,debug,timeout_minutes,silent_minutes,period_seconds=15):
- class CompleterTaskNodeSsh (CompleterTask):
- def __init__ (self, hostname, qemuname, boot_state, local_key):
- self.hostname=hostname
- self.qemuname=qemuname
- self.boot_state=boot_state
- self.local_key=local_key
- def run (self, silent):
- command = TestSsh (self.hostname,key=self.local_key).actual_command("hostname;uname -a")
- return utils.system (command, silent=silent)==0
- def failure_message (self):
- return "Cannot reach %s @ %s in %s mode"%(self.hostname, self.qemuname, self.boot_state)
-
# various delays
timeout = timedelta(minutes=timeout_minutes)
graceout = timedelta(minutes=silent_minutes)
@@ -1106,7 +1077,7 @@ class TestPlc:
local_key = "keys/key_admin.rsa"
utils.header("checking ssh access to nodes (expected in %s mode)"%message)
node_infos = self.all_node_infos()
- tasks = [ CompleterTaskNodeSsh (nodename, qemuname, message, local_key) \
+ tasks = [ CompleterTaskNodeSsh (nodename, qemuname, local_key, boot_state=message) \
for (nodename,qemuname) in node_infos ]
return Completer (tasks).run (timeout, graceout, period)
@@ -1242,19 +1213,19 @@ class TestPlc:
def ssh_slice(self): pass
@slice_mapper__tasks(20,19,15)
def ssh_slice_off (self): pass
+ @slice_mapper__tasks(2,1,15)
+ def slice_fs_present(self): pass
+ @slice_mapper__tasks(2,1,15)
+ def slice_fs_deleted(self): pass
# use another name so we can exclude/ignore it from the tests on the nightly command line
def ssh_slice_again(self): return self.ssh_slice()
- # note that simply doing ssh_slice_again=ssh_slice would kind od work too
+ # note that simply doing ssh_slice_again=ssh_slice would kind of work too
# but for some reason the ignore-wrapping thing would not
@slice_mapper
def ssh_slice_basics(self): pass
@slice_mapper
- def slice_fs_present(self): pass
- @slice_mapper
- def slice_fs_deleted(self): pass
- @slice_mapper
def check_vsys_defaults(self): pass
@node_mapper
@@ -1519,30 +1490,13 @@ class TestPlc:
"run sfa-config-tty"
tmpname=self.conffile("sfa-config-tty")
fileconf=open(tmpname,'w')
- for var in [ 'SFA_REGISTRY_ROOT_AUTH',
- 'SFA_INTERFACE_HRN',
- 'SFA_REGISTRY_LEVEL1_AUTH',
- 'SFA_REGISTRY_HOST',
- 'SFA_AGGREGATE_HOST',
- 'SFA_SM_HOST',
- 'SFA_PLC_URL',
- 'SFA_PLC_USER',
- 'SFA_PLC_PASSWORD',
- 'SFA_DB_HOST',
- 'SFA_DB_USER',
- 'SFA_DB_PASSWORD',
- 'SFA_DB_NAME',
- 'SFA_API_LOGLEVEL',
- 'SFA_GENERIC_FLAVOUR',
- 'SFA_AGGREGATE_ENABLED',
- ]:
- if self.plc_spec['sfa'].has_key(var):
- fileconf.write ('e %s\n%s\n'%(var,self.plc_spec['sfa'][var]))
- # the way plc_config handles booleans just sucks..
- for var in []:
- val='false'
- if self.plc_spec['sfa'][var]: val='true'
- fileconf.write ('e %s\n%s\n'%(var,val))
+ for (var,value) in self.plc_spec['sfa']['settings'].iteritems():
+ fileconf.write ('e %s\n%s\n'%(var,value))
+# # the way plc_config handles booleans just sucks..
+# for var in []:
+# val='false'
+# if self.plc_spec['sfa'][var]: val='true'
+# fileconf.write ('e %s\n%s\n'%(var,val))
fileconf.write('w\n')
fileconf.write('R\n')
fileconf.write('q\n')
@@ -1554,11 +1508,11 @@ class TestPlc:
def aggregate_xml_line(self):
port=self.plc_spec['sfa']['neighbours-port']
return '' % \
- (self.vserverip,self.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH'],port)
+ (self.vserverip,self.plc_spec['sfa']['settings']['SFA_REGISTRY_ROOT_AUTH'],port)
def registry_xml_line(self):
return '' % \
- (self.vserverip,self.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH'])
+ (self.vserverip,self.plc_spec['sfa']['settings']['SFA_REGISTRY_ROOT_AUTH'])
# a cross step that takes all other plcs in argument
@@ -1580,7 +1534,7 @@ class TestPlc:
def sfa_import(self):
"use sfaadmin to import from plc"
- auth=self.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH']
+ auth=self.plc_spec['sfa']['settings']['SFA_REGISTRY_ROOT_AUTH']
return self.run_in_guest('sfaadmin reg import_registry')==0
def sfa_start(self):