Revision 1b40b5e3 snf-cyclades-app/synnefo/tools/burnin.py
b/snf-cyclades-app/synnefo/tools/burnin.py | ||
---|---|---|
623 | 623 |
cls.username = dict() |
624 | 624 |
cls.password = dict() |
625 | 625 |
|
626 |
|
|
627 |
def _get_ipv4(self, server): |
|
628 |
|
|
629 |
"""Get the public IPv4 of a server from the detailed server info""" |
|
630 |
|
|
631 |
public_addrs = filter(lambda x: x["id"] == "public", |
|
632 |
server["addresses"]["values"]) |
|
633 |
self.assertEqual(len(public_addrs), 1) |
|
634 |
ipv4_addrs = filter(lambda x: x["version"] == 4, |
|
635 |
public_addrs[0]["values"]) |
|
636 |
self.assertEqual(len(ipv4_addrs), 1) |
|
637 |
return ipv4_addrs[0]["addr"] |
|
638 |
|
|
639 |
|
|
640 |
def _connect_loginname(self, os): |
|
641 |
"""Return the login name for connections based on the server OS""" |
|
642 |
if os in ("Ubuntu", "Kubuntu", "Fedora"): |
|
643 |
return "user" |
|
644 |
elif os in ("windows", "windows_alpha1"): |
|
645 |
return "Administrator" |
|
646 |
else: |
|
647 |
return "root" |
|
648 |
|
|
649 |
|
|
626 | 650 |
def test_0001_submit_create_server_A(self): |
627 | 651 |
"""Test submit create server request""" |
628 | 652 |
serverA = self.client.create_server(self.servername, self.flavorid, |
... | ... | |
732 | 756 |
self.assertTrue(conn_exists) |
733 | 757 |
|
734 | 758 |
|
759 |
def test_002a_setup_interface_A(self): |
|
760 |
|
|
761 |
server = self.client.get_server_details(self.serverid['A']) |
|
762 |
image = self.client.get_image_details(self.serverid['A']) |
|
763 |
os = image['metadata']['values']['os'] |
|
764 |
loginname = image["metadata"]["values"].get("users", None) |
|
765 |
hostip = self._get_ipv4(server) |
|
766 |
|
|
767 |
if not loginname: |
|
768 |
loginname = self._connect_loginname(os) |
|
769 |
|
|
770 |
try: |
|
771 |
ssh = paramiko.SSHClient() |
|
772 |
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) |
|
773 |
ssh.connect(hostip, username = loginname, password = self.password['A']) |
|
774 |
except socket.error: |
|
775 |
raise AssertionError |
|
776 |
|
|
777 |
stdin, stdout, stderr = ssh.exec_command("ifconfig eth1 %s up"%("192.168.0.42")) |
|
778 |
lines = stdout.readlines() |
|
779 |
|
|
780 |
self.assertEqual(len(lines), 0) |
|
781 |
|
|
782 |
|
|
783 |
def test_002b_setup_interface_B(self): |
|
784 |
|
|
785 |
server = self.client.get_server_details(self.serverid['B']) |
|
786 |
image = self.client.get_image_details(self.serverid['B']) |
|
787 |
os = image['metadata']['values']['os'] |
|
788 |
loginname = image["metadata"]["values"].get("users", None) |
|
789 |
hostip = self._get_ipv4(server) |
|
790 |
|
|
791 |
if not loginname: |
|
792 |
loginname = self._connect_loginname(os) |
|
793 |
|
|
794 |
try: |
|
795 |
ssh = paramiko.SSHClient() |
|
796 |
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) |
|
797 |
ssh.connect(hostip, username = loginname, password = self.password['B']) |
|
798 |
except socket.error: |
|
799 |
raise AssertionError |
|
800 |
|
|
801 |
stdin, stdout, stderr = ssh.exec_command("ifconfig eth1 %s up"%("192.168.0.43")) |
|
802 |
lines = stdout.readlines() |
|
803 |
|
|
804 |
self.assertEqual(len(lines), 0) |
|
805 |
|
|
806 |
|
|
807 |
|
|
808 |
def test_002a_test_connection_exists(self): |
|
809 |
"""Ping serverB from serverA to test if connection exists""" |
|
810 |
|
|
811 |
server = self.client.get_server_details(self.serverid['A']) |
|
812 |
image = self.client.get_image_details(self.serverid['A']) |
|
813 |
os = image['metadata']['values']['os'] |
|
814 |
loginname = image["metadata"]["values"].get("users", None) |
|
815 |
|
|
816 |
hostip = self._get_ipv4(server) |
|
817 |
|
|
818 |
if not loginname: |
|
819 |
loginname = self._connect_loginname(os) |
|
820 |
|
|
821 |
try: |
|
822 |
ssh = paramiko.SSHClient() |
|
823 |
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) |
|
824 |
ssh.connect(hostip, username = loginname, password = self.password['A']) |
|
825 |
except socket.error: |
|
826 |
raise AssertionError |
|
827 |
|
|
828 |
cmd = "if ping -c 2 -w 3 %s >/dev/null; then echo \"True\"; fi;" % ("192.168.0.43") |
|
829 |
stdin, stdout, stderr = ssh.exec_command(cmd) |
|
830 |
lines = stdout.readlines() |
|
831 |
|
|
832 |
for i in lines: |
|
833 |
if i=='True\n': |
|
834 |
exists = True |
|
835 |
|
|
836 |
self.assertTrue(exists) |
|
837 |
|
|
838 |
|
|
839 |
|
|
735 | 840 |
def test_003_disconnect_from_network(self): |
736 | 841 |
prev_state = self.client.get_network_details(self.networkid) |
737 | 842 |
prev_conn = len(prev_state['servers']['values']) |
Also available in: Unified diff