48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
import logging
|
|
import xmlrpclib
|
|
from time import sleep
|
|
|
|
|
|
|
|
from devops.helpers import wait, tcp_ping, http, ssh
|
|
from integration.base import Base
|
|
from helpers import SSHClient
|
|
|
|
|
|
|
|
class TestCobbler(Base):
|
|
def __init__(self, *args, **kwargs):
|
|
super(TestCobbler, self).__init__(*args, **kwargs)
|
|
self.remote = SSHClient()
|
|
self.logpath = "/var/log/chef/solo.log"
|
|
self.str_success = "Report handlers complete"
|
|
|
|
|
|
def setUp(self):
|
|
self.ip = self.get_admin_node_ip()
|
|
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
|
|
def test_cobbler_alive(self):
|
|
logging.info("Waiting for handlers to complete")
|
|
|
|
self.remote.connect_ssh(str(self.ip), "ubuntu", "r00tme")
|
|
count = 0
|
|
while True:
|
|
res = self.remote.execute("grep '%s' '%s'" % (self.str_success, self.logpath))
|
|
count += 1
|
|
if not res['exit_status']:
|
|
break
|
|
sleep(5)
|
|
if count == 200:
|
|
raise Exception("Chef handlers failed to complete")
|
|
self.remote.disconnect()
|
|
|
|
wait(lambda: http(host=self.ip, url='/cobbler_api', waited_code=501), timeout=60)
|
|
server = xmlrpclib.Server('http://%s/cobbler_api' % self.ip)
|
|
token = server.login('cobbler', 'cobbler')
|
|
assert server.ping() == True
|