-import os
-import sys
+import os.path
import datetime
import time
-import xmlrpclib
import traceback
import utils
from TestNode import TestNode
from TestUser import TestUser
+from TestKey import TestKey
class TestSite:
def create_site (self):
print self.test_plc.auth_root()
- self.site_id = self.test_plc.server.AddSite(self.test_plc.auth_root(),
+ self.test_plc.server.AddSite(self.test_plc.auth_root(),
self.site_spec['site_fields'])
- self.test_plc.server.AddSiteAddress(self.test_plc.auth_root(),self.site_id,
+ self.test_plc.server.AddSiteAddress(self.test_plc.auth_root(),self.name(),
self.site_spec['address_fields'])
- return self.site_id
-
def create_users (self):
for user_spec in self.site_spec['users']:
test_user=TestUser(self.test_plc,self,user_spec)
test_user.create_user()
test_user.add_keys()
-
def delete_site (self):
print self.test_plc.auth_root()
utils.header('Actual status for node %s is [%s]'%(hostname,node_status))
try:
if (node_status[0] == bt):
- test_name='Test Installation Node hosted: '+hostname
- self.test_plc.display_results(test_name, 'Successful', '')
- break ##for existing and renaming virtual file to just installed
+ utils.header('%s has reached boot state'%hostname)
+ break
elif (node_status[0] ==dbg):
- test_name='Test Installation Node hosted: '+hostname
- self.test_plc.display_results(test_name, 'En Debug', '')
+ utils.header('%s has reached debug state'%hostname)
bool=False
- break ##for existing and renaming virtual file to just installed
+ break
elif ( start_time <= dead_time ) :
start_time=datetime.datetime.now()+ datetime.timedelta(minutes=2)
time.sleep(secondes)
else :
utils.header("Node %s not fully booted"%hostname)
ret_value=False
- test_name='Test Installation Node Hosted: ',hostname
- self.test_plc.display_results(test_name, 'Failure', '')
utils.header("End checking for nodes in site %s"%self.name())
return ret_value
def delete_known_hosts(self):
utils.header("Messing with known_hosts (cleaning hostnames starting with 'test[0-9]')")
sed_command="sed -i -e '/^test[0-9]/d' /root/.ssh/known_hosts"
- os.system("set -x ; " + sed_command)
+ utils.system(sed_command)
# xxx should be attached to TestPlc
def check_slices(self):
for slice_spec in self.test_plc.plc_spec['slices']:
for hostname in slice_spec['nodenames']:
slicename=slice_spec['slice_fields']['name']
+ # locate the first avail. key
+ found=False
+ for username in slice_spec['usernames']:
+ user_spec=self.locate_user(username)
+ for keyname in user_spec['keynames']:
+ key_spec=self.test_plc.locate_key(keyname)
+ publickey=TestKey(self.test_plc,key_spec).publicpath()
+ privatekey=TestKey(self.test_plc,key_spec).privatepath()
+ if os.path.isfile(publickey) and os.path.isfile(privatekey):
+ found=True
+ break
+ if not found:
+ raise Exception,"Cannot find a valid key for slice %s"%slicename
+
while(bool):
utils.header('restarting nm on %s'%hostname)
- access=os.system('set -x; ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%hostname )
+ access=utils.system('ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%hostname )
if (access==0):
utils.header('nm restarted on %s'%hostname)
while(bool1):
utils.header('trying to connect to %s@%s'%(slicename,hostname))
- Date=os.system('set -x; ssh -i ~/.ssh/slices.rsa %s@%s date'%(slicename,hostname))
+ ### should use saved keys instead of this hard-coded stuff
+ Date=utils.system('ssh -i %s %s@%s date'%(privatekey,slicename,hostname))
if (Date==0):
break
elif ( start_time <= dead_time ) :
utils.header('connected to %s@%s -->'%(slicename,hostname))
else:
utils.header('%s@%s : last chance - restarting nm on %s'%(slicename,hostname,hostname))
- access=os.system('set -x; ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%hostname)
+ access=utils.system('ssh -i /etc/planetlab/root_ssh_key.rsa root@%s service nm restart'%hostname)
if (access==0):
utils.header('trying to connect (2) to %s@%s'%(slicename,hostname))
- Date=os.system('set -x; ssh -i ~/.ssh/slices.rsa %s@%s date'%(slicename,hostname))
+ Date=utils.system('ssh -i ~/.ssh/slices.rsa %s@%s date'%(slicename,hostname))
if (Date==0):
utils.header('connected to %s@%s -->'%(slicename,hostname))
else:
utils.header('giving up with to %s@%s -->'%(slicename,hostname))
- sys.exit(1)
+ return False
else :
utils.header('Last chance failed on %s@%s -->'%(slicename,hostname))
break