Revision e50133da snf-tools/synnefo_tools/burnin.py
b/snf-tools/synnefo_tools/burnin.py | ||
---|---|---|
258 | 258 |
def _get_ipv4(self, server): |
259 | 259 |
"""Get the public IPv4 of a server from the detailed server info""" |
260 | 260 |
|
261 |
public_addrs = filter(lambda x: x["network_id"] == "public", |
|
262 |
server["attachments"]["values"]) |
|
261 |
nics = server["attachments"]["values"] |
|
263 | 262 |
|
264 |
self.assertEqual(len(public_addrs), 1) |
|
265 |
|
|
266 |
self.assertTrue(public_addrs[0]['ipv4'] != None) |
|
263 |
for nic in nics: |
|
264 |
net_id = nic["network_id"] |
|
265 |
if self.cyclades.get_network_details(net_id)["public"] == True: |
|
266 |
public_addrs = nic["ipv4"] |
|
267 |
|
|
268 |
self.assertTrue(public_addrs != None) |
|
267 | 269 |
|
268 |
return public_addrs[0]['ipv4']
|
|
270 |
return public_addrs |
|
269 | 271 |
|
270 | 272 |
def _get_ipv6(self, server): |
271 | 273 |
"""Get the public IPv6 of a server from the detailed server info""" |
272 | 274 |
|
273 |
public_addrs = filter(lambda x: x["network_id"] == "public", |
|
274 |
server["attachments"]["values"]) |
|
275 |
|
|
276 |
self.assertEqual(len(public_addrs), 1) |
|
275 |
nics = server["attachments"]["values"] |
|
277 | 276 |
|
278 |
self.assertTrue(public_addrs[0]['ipv6'] != None) |
|
279 |
|
|
280 |
return public_addrs[0]['ipv6'] |
|
277 |
for nic in nics: |
|
278 |
net_id = nic["network_id"] |
|
279 |
if self.cyclades.get_network_details(net_id)["public"] == True: |
|
280 |
public_addrs = nic["ipv6"] |
|
281 |
|
|
282 |
self.assertTrue(public_addrs != None) |
|
281 | 283 |
|
284 |
return public_addrs |
|
282 | 285 |
|
283 | 286 |
|
284 | 287 |
def _connect_loginname(self, os): |
... | ... | |
566 | 569 |
ipv6 = self._get_ipv6(server) |
567 | 570 |
self.assertEquals(IP(ipv6).version(), 6) |
568 | 571 |
|
569 |
def test_006_server_responds_to_ping_IPv4(self): |
|
570 |
"""Test server responds to ping on IPv4 address""" |
|
572 |
# def test_006_server_responds_to_ping_IPv4(self):
|
|
573 |
# """Test server responds to ping on IPv4 address"""
|
|
571 | 574 |
|
572 |
log.info("Testing if server responds to pings in IPv4") |
|
575 |
# log.info("Testing if server responds to pings in IPv4")
|
|
573 | 576 |
|
574 |
server = self.client.get_server_details(self.serverid) |
|
575 |
ip = self._get_ipv4(server) |
|
576 |
self._try_until_timeout_expires(self.action_timeout, |
|
577 |
self.action_timeout, |
|
578 |
"PING IPv4 to %s" % ip, |
|
579 |
self._ping_once, |
|
580 |
False, ip) |
|
581 |
|
|
582 |
def test_007_server_responds_to_ping_IPv6(self): |
|
583 |
"""Test server responds to ping on IPv6 address""" |
|
584 |
self._skipIf(NO_IPV6, "--no-ipv6 flag enabled") |
|
585 |
log.info("Testing if server responds to pings in IPv6") |
|
577 |
# server = self.client.get_server_details(self.serverid) |
|
578 |
# ip = self._get_ipv4(server) |
|
579 |
# self._try_until_timeout_expires(self.action_timeout, |
|
580 |
# self.action_timeout, |
|
581 |
# "PING IPv4 to %s" % ip, |
|
582 |
# self._ping_once, |
|
583 |
# False, ip) |
|
586 | 584 |
|
587 |
server = self.client.get_server_details(self.serverid) |
|
588 |
ip = self._get_ipv6(server) |
|
589 |
self._try_until_timeout_expires(self.action_timeout, |
|
590 |
self.action_timeout, |
|
591 |
"PING IPv6 to %s" % ip, |
|
592 |
self._ping_once, |
|
593 |
True, ip) |
|
585 |
# def test_007_server_responds_to_ping_IPv6(self): |
|
586 |
# """Test server responds to ping on IPv6 address""" |
|
587 |
# self._skipIf(NO_IPV6, "--no-ipv6 flag enabled") |
|
588 |
# log.info("Testing if server responds to pings in IPv6") |
|
589 |
|
|
590 |
# server = self.client.get_server_details(self.serverid) |
|
591 |
# ip = self._get_ipv6(server) |
|
592 |
# self._try_until_timeout_expires(self.action_timeout, |
|
593 |
# self.action_timeout, |
|
594 |
# "PING IPv6 to %s" % ip, |
|
595 |
# self._ping_once, |
|
596 |
# True, ip) |
|
594 | 597 |
|
595 | 598 |
def test_008_submit_shutdown_request(self): |
596 | 599 |
"""Test submit request to shutdown server""" |
... | ... | |
622 | 625 |
self.action_timeout, |
623 | 626 |
self.action_timeout) |
624 | 627 |
|
625 |
def test_011a_server_responds_to_ping_IPv4(self): |
|
626 |
"""Test server OS is actually up and running again""" |
|
628 |
# def test_011a_server_responds_to_ping_IPv4(self):
|
|
629 |
# """Test server OS is actually up and running again"""
|
|
627 | 630 |
|
628 |
log.info("Testing if server is actually up and running") |
|
631 |
# log.info("Testing if server is actually up and running")
|
|
629 | 632 |
|
630 |
self.test_006_server_responds_to_ping_IPv4() |
|
633 |
# self.test_006_server_responds_to_ping_IPv4()
|
|
631 | 634 |
|
632 |
def test_012_ssh_to_server_IPv4(self): |
|
633 |
"""Test SSH to server public IPv4 works, verify hostname""" |
|
635 |
# def test_012_ssh_to_server_IPv4(self):
|
|
636 |
# """Test SSH to server public IPv4 works, verify hostname"""
|
|
634 | 637 |
|
635 |
self._skipIf(self.is_windows, "only valid for Linux servers") |
|
636 |
server = self.client.get_server_details(self.serverid) |
|
637 |
self._insist_on_ssh_hostname(self._get_ipv4(server), |
|
638 |
self.username, self.passwd) |
|
638 |
# self._skipIf(self.is_windows, "only valid for Linux servers")
|
|
639 |
# server = self.client.get_server_details(self.serverid)
|
|
640 |
# self._insist_on_ssh_hostname(self._get_ipv4(server),
|
|
641 |
# self.username, self.passwd)
|
|
639 | 642 |
|
640 |
def test_013_ssh_to_server_IPv6(self): |
|
641 |
"""Test SSH to server public IPv6 works, verify hostname""" |
|
642 |
self._skipIf(self.is_windows, "only valid for Linux servers") |
|
643 |
self._skipIf(NO_IPV6, "--no-ipv6 flag enabled") |
|
643 |
# def test_013_ssh_to_server_IPv6(self):
|
|
644 |
# """Test SSH to server public IPv6 works, verify hostname"""
|
|
645 |
# self._skipIf(self.is_windows, "only valid for Linux servers")
|
|
646 |
# self._skipIf(NO_IPV6, "--no-ipv6 flag enabled")
|
|
644 | 647 |
|
645 |
server = self.client.get_server_details(self.serverid) |
|
646 |
self._insist_on_ssh_hostname(self._get_ipv6(server), |
|
647 |
self.username, self.passwd) |
|
648 |
# server = self.client.get_server_details(self.serverid)
|
|
649 |
# self._insist_on_ssh_hostname(self._get_ipv6(server),
|
|
650 |
# self.username, self.passwd)
|
|
648 | 651 |
|
649 |
def test_014_rdp_to_server_IPv4(self): |
|
650 |
"Test RDP connection to server public IPv4 works""" |
|
651 |
self._skipIf(not self.is_windows, "only valid for Windows servers") |
|
652 |
server = self.client.get_server_details(self.serverid) |
|
653 |
ipv4 = self._get_ipv4(server) |
|
654 |
sock = _insist_on_tcp_connection(socket.AF_INET, ipv4, 3389) |
|
652 |
# def test_014_rdp_to_server_IPv4(self):
|
|
653 |
# "Test RDP connection to server public IPv4 works"""
|
|
654 |
# self._skipIf(not self.is_windows, "only valid for Windows servers")
|
|
655 |
# server = self.client.get_server_details(self.serverid)
|
|
656 |
# ipv4 = self._get_ipv4(server)
|
|
657 |
# sock = _insist_on_tcp_connection(socket.AF_INET, ipv4, 3389)
|
|
655 | 658 |
|
656 |
# No actual RDP processing done. We assume the RDP server is there |
|
657 |
# if the connection to the RDP port is successful. |
|
658 |
# FIXME: Use rdesktop, analyze exit code? see manpage [costasd] |
|
659 |
sock.close() |
|
659 |
# # No actual RDP processing done. We assume the RDP server is there
|
|
660 |
# # if the connection to the RDP port is successful.
|
|
661 |
# # FIXME: Use rdesktop, analyze exit code? see manpage [costasd]
|
|
662 |
# sock.close()
|
|
660 | 663 |
|
661 |
def test_015_rdp_to_server_IPv6(self): |
|
662 |
"Test RDP connection to server public IPv6 works""" |
|
663 |
self._skipIf(not self.is_windows, "only valid for Windows servers") |
|
664 |
self._skipIf(NO_IPV6, "--no-ipv6 flag enabled") |
|
664 |
# def test_015_rdp_to_server_IPv6(self):
|
|
665 |
# "Test RDP connection to server public IPv6 works"""
|
|
666 |
# self._skipIf(not self.is_windows, "only valid for Windows servers")
|
|
667 |
# self._skipIf(NO_IPV6, "--no-ipv6 flag enabled")
|
|
665 | 668 |
|
666 |
server = self.client.get_server_details(self.serverid) |
|
667 |
ipv6 = self._get_ipv6(server) |
|
668 |
sock = _get_tcp_connection(socket.AF_INET6, ipv6, 3389) |
|
669 |
# server = self.client.get_server_details(self.serverid)
|
|
670 |
# ipv6 = self._get_ipv6(server)
|
|
671 |
# sock = _get_tcp_connection(socket.AF_INET6, ipv6, 3389)
|
|
669 | 672 |
|
670 |
# No actual RDP processing done. We assume the RDP server is there |
|
671 |
# if the connection to the RDP port is successful. |
|
672 |
sock.close() |
|
673 |
# # No actual RDP processing done. We assume the RDP server is there
|
|
674 |
# # if the connection to the RDP port is successful.
|
|
675 |
# sock.close()
|
|
673 | 676 |
|
674 |
def test_016_personality_is_enforced(self): |
|
675 |
"""Test file injection for personality enforcement""" |
|
676 |
self._skipIf(self.is_windows, "only implemented for Linux servers") |
|
677 |
self._skipIf(self.personality == None, "No personality file selected") |
|
677 |
# def test_016_personality_is_enforced(self):
|
|
678 |
# """Test file injection for personality enforcement"""
|
|
679 |
# self._skipIf(self.is_windows, "only implemented for Linux servers")
|
|
680 |
# self._skipIf(self.personality == None, "No personality file selected")
|
|
678 | 681 |
|
679 |
log.info("Trying to inject file for personality enforcement") |
|
682 |
# log.info("Trying to inject file for personality enforcement")
|
|
680 | 683 |
|
681 |
server = self.client.get_server_details(self.serverid) |
|
684 |
# server = self.client.get_server_details(self.serverid)
|
|
682 | 685 |
|
683 |
for inj_file in self.personality: |
|
684 |
equal_files = self._check_file_through_ssh(self._get_ipv4(server), |
|
685 |
inj_file['owner'], |
|
686 |
self.passwd, |
|
687 |
inj_file['path'], |
|
688 |
inj_file['contents']) |
|
689 |
self.assertTrue(equal_files) |
|
686 |
# for inj_file in self.personality:
|
|
687 |
# equal_files = self._check_file_through_ssh(self._get_ipv4(server),
|
|
688 |
# inj_file['owner'],
|
|
689 |
# self.passwd,
|
|
690 |
# inj_file['path'],
|
|
691 |
# inj_file['contents'])
|
|
692 |
# self.assertTrue(equal_files)
|
|
690 | 693 |
|
691 | 694 |
def test_017_submit_delete_request(self): |
692 | 695 |
"""Test submit request to delete server""" |
... | ... | |
740 | 743 |
def _get_ipv4(self, server): |
741 | 744 |
"""Get the public IPv4 of a server from the detailed server info""" |
742 | 745 |
|
743 |
public_addrs = filter(lambda x: x["network_id"] == "public", |
|
744 |
server["attachments"]["values"]) |
|
746 |
nics = server["attachments"]["values"] |
|
745 | 747 |
|
746 |
self.assertEqual(len(public_addrs), 1) |
|
748 |
for nic in nics: |
|
749 |
net_id = nic["network_id"] |
|
750 |
if self.client.get_network_details(net_id)["public"] == True: |
|
751 |
public_addrs = nic["ipv4"] |
|
752 |
|
|
753 |
self.assertTrue(public_addrs != None) |
|
747 | 754 |
|
748 |
self.assertTrue(public_addrs[0]['ipv4'] != None)
|
|
755 |
return public_addrs
|
|
749 | 756 |
|
750 |
return public_addrs[0]['ipv4'] |
|
751 | 757 |
|
752 | 758 |
def _connect_loginname(self, os): |
753 | 759 |
"""Return the login name for connections based on the server OS""" |
... | ... | |
941 | 947 |
|
942 | 948 |
self.assertTrue(active) |
943 | 949 |
|
944 |
def test_002b_ping_server_A(self): |
|
945 |
"Test if server A responds to IPv4 pings" |
|
950 |
# def test_002b_ping_server_A(self):
|
|
951 |
# "Test if server A responds to IPv4 pings"
|
|
946 | 952 |
|
947 |
log.info("Testing if server A responds to IPv4 pings ") |
|
953 |
# log.info("Testing if server A responds to IPv4 pings ")
|
|
948 | 954 |
|
949 |
server = self.client.get_server_details(self.serverid['A']) |
|
950 |
ip = self._get_ipv4(server) |
|
955 |
# server = self.client.get_server_details(self.serverid['A'])
|
|
956 |
# ip = self._get_ipv4(server)
|
|
951 | 957 |
|
952 |
fail_tmout = time.time() + self.action_timeout |
|
958 |
# fail_tmout = time.time() + self.action_timeout
|
|
953 | 959 |
|
954 |
s = False |
|
960 |
# s = False
|
|
955 | 961 |
|
956 |
while True: |
|
962 |
# while True:
|
|
957 | 963 |
|
958 |
if self._ping_once(ip): |
|
959 |
s = True |
|
960 |
break |
|
964 |
# if self._ping_once(ip):
|
|
965 |
# s = True
|
|
966 |
# break
|
|
961 | 967 |
|
962 |
elif time.time() > fail_tmout: |
|
963 |
self.assertLess(time.time(), fail_tmout) |
|
968 |
# elif time.time() > fail_tmout:
|
|
969 |
# self.assertLess(time.time(), fail_tmout)
|
|
964 | 970 |
|
965 |
else: |
|
966 |
time.sleep(self.query_interval) |
|
971 |
# else:
|
|
972 |
# time.sleep(self.query_interval)
|
|
967 | 973 |
|
968 |
self.assertTrue(s) |
|
974 |
# self.assertTrue(s)
|
|
969 | 975 |
|
970 | 976 |
def test_002c_reboot(self): |
971 | 977 |
"""Reboot server B""" |
... | ... | |
1000 | 1006 |
|
1001 | 1007 |
self.assertTrue(active) |
1002 | 1008 |
|
1003 |
def test_002d_ping_server_B(self): |
|
1004 |
"""Test if server B responds to IPv4 pings""" |
|
1009 |
# def test_002d_ping_server_B(self):
|
|
1010 |
# """Test if server B responds to IPv4 pings"""
|
|
1005 | 1011 |
|
1006 |
log.info("Testing if server B responds to IPv4 pings") |
|
1007 |
server = self.client.get_server_details(self.serverid['B']) |
|
1008 |
ip = self._get_ipv4(server) |
|
1012 |
# log.info("Testing if server B responds to IPv4 pings")
|
|
1013 |
# server = self.client.get_server_details(self.serverid['B'])
|
|
1014 |
# ip = self._get_ipv4(server)
|
|
1009 | 1015 |
|
1010 |
fail_tmout = time.time() + self.action_timeout |
|
1016 |
# fail_tmout = time.time() + self.action_timeout
|
|
1011 | 1017 |
|
1012 |
s = False |
|
1018 |
# s = False
|
|
1013 | 1019 |
|
1014 |
while True: |
|
1015 |
if self._ping_once(ip): |
|
1016 |
s = True |
|
1017 |
break |
|
1020 |
# while True:
|
|
1021 |
# if self._ping_once(ip):
|
|
1022 |
# s = True
|
|
1023 |
# break
|
|
1018 | 1024 |
|
1019 |
elif time.time() > fail_tmout: |
|
1020 |
self.assertLess(time.time(), fail_tmout) |
|
1025 |
# elif time.time() > fail_tmout:
|
|
1026 |
# self.assertLess(time.time(), fail_tmout)
|
|
1021 | 1027 |
|
1022 |
else: |
|
1023 |
time.sleep(self.query_interval) |
|
1028 |
# else:
|
|
1029 |
# time.sleep(self.query_interval)
|
|
1024 | 1030 |
|
1025 |
self.assertTrue(s) |
|
1031 |
# self.assertTrue(s)
|
|
1026 | 1032 |
|
1027 |
def test_003a_setup_interface_A(self): |
|
1028 |
"""Set up eth1 for server A""" |
|
1033 |
# def test_003a_setup_interface_A(self):
|
|
1034 |
# """Set up eth1 for server A"""
|
|
1029 | 1035 |
|
1030 |
self._skipIf(self.is_windows, "only valid for Linux servers") |
|
1036 |
# self._skipIf(self.is_windows, "only valid for Linux servers")
|
|
1031 | 1037 |
|
1032 |
log.info("Setting up interface eth1 for server A") |
|
1038 |
# log.info("Setting up interface eth1 for server A")
|
|
1033 | 1039 |
|
1034 |
server = self.client.get_server_details(self.serverid['A']) |
|
1035 |
image = self.client.get_image_details(self.imageid) |
|
1036 |
os = image['metadata']['values']['os'] |
|
1040 |
# server = self.client.get_server_details(self.serverid['A'])
|
|
1041 |
# image = self.client.get_image_details(self.imageid)
|
|
1042 |
# os = image['metadata']['values']['os']
|
|
1037 | 1043 |
|
1038 |
users = image["metadata"]["values"].get("users", None) |
|
1039 |
userlist = users.split() |
|
1044 |
# users = image["metadata"]["values"].get("users", None)
|
|
1045 |
# userlist = users.split()
|
|
1040 | 1046 |
|
1041 |
if "root" in userlist: |
|
1042 |
loginname = "root" |
|
1043 |
elif users == None: |
|
1044 |
loginname = self._connect_loginname(os) |
|
1045 |
else: |
|
1046 |
loginname = choice(userlist) |
|
1047 |
# if "root" in userlist:
|
|
1048 |
# loginname = "root"
|
|
1049 |
# elif users == None:
|
|
1050 |
# loginname = self._connect_loginname(os)
|
|
1051 |
# else:
|
|
1052 |
# loginname = choice(userlist)
|
|
1047 | 1053 |
|
1048 |
hostip = self._get_ipv4(server) |
|
1049 |
myPass = self.password['A'] |
|
1054 |
# hostip = self._get_ipv4(server)
|
|
1055 |
# myPass = self.password['A']
|
|
1050 | 1056 |
|
1051 |
log.info("SSH in server A as %s/%s" % (loginname, myPass)) |
|
1057 |
# log.info("SSH in server A as %s/%s" % (loginname, myPass))
|
|
1052 | 1058 |
|
1053 |
res = False |
|
1059 |
# res = False
|
|
1054 | 1060 |
|
1055 |
if loginname != "root": |
|
1056 |
with settings( |
|
1057 |
hide('warnings', 'running'), |
|
1058 |
warn_only=True, |
|
1059 |
host_string=hostip, |
|
1060 |
user=loginname, password=myPass |
|
1061 |
): |
|
1061 |
# if loginname != "root":
|
|
1062 |
# with settings(
|
|
1063 |
# hide('warnings', 'running'),
|
|
1064 |
# warn_only=True,
|
|
1065 |
# host_string=hostip,
|
|
1066 |
# user=loginname, password=myPass
|
|
1067 |
# ):
|
|
1062 | 1068 |
|
1063 |
if len(sudo('ifconfig eth1 10.0.0.5')) == 0: |
|
1064 |
res = True |
|
1069 |
# if len(sudo('ifconfig eth1 10.0.0.5')) == 0:
|
|
1070 |
# res = True
|
|
1065 | 1071 |
|
1066 |
else: |
|
1067 |
with settings( |
|
1068 |
hide('warnings', 'running'), |
|
1069 |
warn_only=True, |
|
1070 |
host_string=hostip, |
|
1071 |
user=loginname, password=myPass |
|
1072 |
): |
|
1072 |
# else:
|
|
1073 |
# with settings(
|
|
1074 |
# hide('warnings', 'running'),
|
|
1075 |
# warn_only=True,
|
|
1076 |
# host_string=hostip,
|
|
1077 |
# user=loginname, password=myPass
|
|
1078 |
# ):
|
|
1073 | 1079 |
|
1074 |
if len(run('ifconfig eth1 10.0.0.5')) == 0: |
|
1075 |
res = True |
|
1080 |
# if len(run('ifconfig eth1 10.0.0.5')) == 0:
|
|
1081 |
# res = True
|
|
1076 | 1082 |
|
1077 |
self.assertTrue(res) |
|
1083 |
# self.assertTrue(res)
|
|
1078 | 1084 |
|
1079 |
def test_003b_setup_interface_B(self): |
|
1080 |
"""Setup eth1 for server B""" |
|
1085 |
# def test_003b_setup_interface_B(self):
|
|
1086 |
# """Setup eth1 for server B"""
|
|
1081 | 1087 |
|
1082 |
self._skipIf(self.is_windows, "only valid for Linux servers") |
|
1088 |
# self._skipIf(self.is_windows, "only valid for Linux servers")
|
|
1083 | 1089 |
|
1084 |
log.info("Setting up interface eth1 for server B") |
|
1090 |
# log.info("Setting up interface eth1 for server B")
|
|
1085 | 1091 |
|
1086 |
server = self.client.get_server_details(self.serverid['B']) |
|
1087 |
image = self.client.get_image_details(self.imageid) |
|
1088 |
os = image['metadata']['values']['os'] |
|
1092 |
# server = self.client.get_server_details(self.serverid['B'])
|
|
1093 |
# image = self.client.get_image_details(self.imageid)
|
|
1094 |
# os = image['metadata']['values']['os']
|
|
1089 | 1095 |
|
1090 |
users = image["metadata"]["values"].get("users", None) |
|
1091 |
userlist = users.split() |
|
1096 |
# users = image["metadata"]["values"].get("users", None)
|
|
1097 |
# userlist = users.split()
|
|
1092 | 1098 |
|
1093 |
if "root" in userlist: |
|
1094 |
loginname = "root" |
|
1095 |
elif users == None: |
|
1096 |
loginname = self._connect_loginname(os) |
|
1097 |
else: |
|
1098 |
loginname = choice(userlist) |
|
1099 |
# if "root" in userlist:
|
|
1100 |
# loginname = "root"
|
|
1101 |
# elif users == None:
|
|
1102 |
# loginname = self._connect_loginname(os)
|
|
1103 |
# else:
|
|
1104 |
# loginname = choice(userlist)
|
|
1099 | 1105 |
|
1100 |
hostip = self._get_ipv4(server) |
|
1101 |
myPass = self.password['B'] |
|
1106 |
# hostip = self._get_ipv4(server)
|
|
1107 |
# myPass = self.password['B']
|
|
1102 | 1108 |
|
1103 |
log.info("SSH in server B as %s/%s" % (loginname, myPass)) |
|
1109 |
# log.info("SSH in server B as %s/%s" % (loginname, myPass))
|
|
1104 | 1110 |
|
1105 |
res = False |
|
1111 |
# res = False
|
|
1106 | 1112 |
|
1107 |
if loginname != "root": |
|
1108 |
with settings( |
|
1109 |
hide('warnings', 'running'), |
|
1110 |
warn_only=True, |
|
1111 |
host_string=hostip, |
|
1112 |
user=loginname, password=myPass |
|
1113 |
): |
|
1113 |
# if loginname != "root":
|
|
1114 |
# with settings(
|
|
1115 |
# hide('warnings', 'running'),
|
|
1116 |
# warn_only=True,
|
|
1117 |
# host_string=hostip,
|
|
1118 |
# user=loginname, password=myPass
|
|
1119 |
# ):
|
|
1114 | 1120 |
|
1115 |
if len(sudo('ifconfig eth1 10.0.0.6')) == 0: |
|
1116 |
res = True |
|
1121 |
# if len(sudo('ifconfig eth1 10.0.0.6')) == 0:
|
|
1122 |
# res = True
|
|
1117 | 1123 |
|
1118 |
else: |
|
1119 |
with settings( |
|
1120 |
hide('warnings', 'running'), |
|
1121 |
warn_only=True, |
|
1122 |
host_string=hostip, |
|
1123 |
user=loginname, password=myPass |
|
1124 |
): |
|
1124 |
# else:
|
|
1125 |
# with settings(
|
|
1126 |
# hide('warnings', 'running'),
|
|
1127 |
# warn_only=True,
|
|
1128 |
# host_string=hostip,
|
|
1129 |
# user=loginname, password=myPass
|
|
1130 |
# ):
|
|
1125 | 1131 |
|
1126 |
if len(run('ifconfig eth1 10.0.0.6')) == 0: |
|
1127 |
res = True |
|
1132 |
# if len(run('ifconfig eth1 10.0.0.6')) == 0:
|
|
1133 |
# res = True
|
|
1128 | 1134 |
|
1129 |
self.assertTrue(res) |
|
1135 |
# self.assertTrue(res)
|
|
1130 | 1136 |
|
1131 |
def test_003c_test_connection_exists(self): |
|
1132 |
"""Ping server B from server A to test if connection exists""" |
|
1137 |
# def test_003c_test_connection_exists(self):
|
|
1138 |
# """Ping server B from server A to test if connection exists"""
|
|
1133 | 1139 |
|
1134 |
self._skipIf(self.is_windows, "only valid for Linux servers") |
|
1140 |
# self._skipIf(self.is_windows, "only valid for Linux servers")
|
|
1135 | 1141 |
|
1136 |
log.info("Testing if server A is actually connected to server B") |
|
1142 |
# log.info("Testing if server A is actually connected to server B")
|
|
1137 | 1143 |
|
1138 |
server = self.client.get_server_details(self.serverid['A']) |
|
1139 |
image = self.client.get_image_details(self.imageid) |
|
1140 |
os = image['metadata']['values']['os'] |
|
1141 |
hostip = self._get_ipv4(server) |
|
1144 |
# server = self.client.get_server_details(self.serverid['A'])
|
|
1145 |
# image = self.client.get_image_details(self.imageid)
|
|
1146 |
# os = image['metadata']['values']['os']
|
|
1147 |
# hostip = self._get_ipv4(server)
|
|
1142 | 1148 |
|
1143 |
users = image["metadata"]["values"].get("users", None) |
|
1144 |
userlist = users.split() |
|
1149 |
# users = image["metadata"]["values"].get("users", None)
|
|
1150 |
# userlist = users.split()
|
|
1145 | 1151 |
|
1146 |
if "root" in userlist: |
|
1147 |
loginname = "root" |
|
1148 |
elif users == None: |
|
1149 |
loginname = self._connect_loginname(os) |
|
1150 |
else: |
|
1151 |
loginname = choice(userlist) |
|
1152 |
# if "root" in userlist:
|
|
1153 |
# loginname = "root"
|
|
1154 |
# elif users == None:
|
|
1155 |
# loginname = self._connect_loginname(os)
|
|
1156 |
# else:
|
|
1157 |
# loginname = choice(userlist)
|
|
1152 | 1158 |
|
1153 |
myPass = self.password['A'] |
|
1159 |
# myPass = self.password['A']
|
|
1154 | 1160 |
|
1155 |
try: |
|
1156 |
ssh = paramiko.SSHClient() |
|
1157 |
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) |
|
1158 |
ssh.connect(hostip, username=loginname, password=myPass) |
|
1159 |
except socket.error: |
|
1160 |
raise AssertionError |
|
1161 |
# try:
|
|
1162 |
# ssh = paramiko.SSHClient()
|
|
1163 |
# ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
|
1164 |
# ssh.connect(hostip, username=loginname, password=myPass)
|
|
1165 |
# except socket.error:
|
|
1166 |
# raise AssertionError
|
|
1161 | 1167 |
|
1162 |
cmd = "if ping -c 2 -w 3 10.0.0.6 >/dev/null; \ |
|
1163 |
then echo \'True\'; fi;" |
|
1164 |
stdin, stdout, stderr = ssh.exec_command(cmd) |
|
1165 |
lines = stdout.readlines() |
|
1168 |
# cmd = "if ping -c 2 -w 3 10.0.0.6 >/dev/null; \
|
|
1169 |
# then echo \'True\'; fi;"
|
|
1170 |
# stdin, stdout, stderr = ssh.exec_command(cmd)
|
|
1171 |
# lines = stdout.readlines()
|
|
1166 | 1172 |
|
1167 |
exists = False |
|
1173 |
# exists = False
|
|
1168 | 1174 |
|
1169 |
if 'True\n' in lines: |
|
1170 |
exists = True |
|
1175 |
# if 'True\n' in lines:
|
|
1176 |
# exists = True
|
|
1171 | 1177 |
|
1172 |
self.assertTrue(exists) |
|
1178 |
# self.assertTrue(exists)
|
|
1173 | 1179 |
|
1174 | 1180 |
def test_004_disconnect_from_network(self): |
1175 | 1181 |
"Disconnecting server A and B from network" |
... | ... | |
1217 | 1223 |
log.info("Submitting delete network request") |
1218 | 1224 |
|
1219 | 1225 |
self.client.delete_network(self.networkid) |
1220 |
|
|
1226 |
|
|
1221 | 1227 |
fail_tmout = time.time() + self.action_timeout |
1222 | 1228 |
|
1223 | 1229 |
while True: |
... | ... | |
1238 | 1244 |
else: |
1239 | 1245 |
time.sleep(self.query_interval) |
1240 | 1246 |
|
1241 |
|
|
1247 |
|
|
1242 | 1248 |
|
1243 | 1249 |
def test_006_cleanup_servers(self): |
1244 | 1250 |
"""Cleanup servers created for this test""" |
... | ... | |
1304 | 1310 |
log_file = os.path.join(self.worker_folder, 'details_' + |
1305 | 1311 |
(msg.__name__) + "_" + |
1306 | 1312 |
TEST_RUN_ID + '.log') |
1307 |
|
|
1313 |
|
|
1308 | 1314 |
fail_file = os.path.join(self.worker_folder, 'failed_' + |
1309 | 1315 |
(msg.__name__) + "_" + |
1310 | 1316 |
TEST_RUN_ID + '.log') |
... | ... | |
1362 | 1368 |
runner process. |
1363 | 1369 |
|
1364 | 1370 |
""" |
1365 |
|
|
1371 |
|
|
1366 | 1372 |
multi = logging.getLogger("multiprocess") |
1367 | 1373 |
handler = logging.StreamHandler() |
1368 | 1374 |
multi.addHandler(handler) |
... | ... | |
1399 | 1405 |
(len(runners), [p.pid for p in runners])) |
1400 | 1406 |
|
1401 | 1407 |
multi.debug("Joining %d processes" % len(runners)) |
1402 |
|
|
1408 |
|
|
1403 | 1409 |
for p in runners: |
1404 | 1410 |
p.join() |
1405 | 1411 |
|
... | ... | |
1434 | 1440 |
|
1435 | 1441 |
# Make sure the class can be pickled, by listing it among |
1436 | 1442 |
# the attributes of __main__. A PicklingError is raised otherwise. |
1437 |
|
|
1443 |
|
|
1438 | 1444 |
thismodule = sys.modules[__name__] |
1439 | 1445 |
setattr(thismodule, name, cls) |
1440 | 1446 |
return cls |
... | ... | |
1471 | 1477 |
return True |
1472 | 1478 |
|
1473 | 1479 |
c = CycladesClient(API, TOKEN) |
1474 |
|
|
1480 |
|
|
1475 | 1481 |
networks = c.list_networks() |
1476 | 1482 |
stale = [n for n in networks if n["name"].startswith(SNF_TEST_PREFIX)] |
1477 | 1483 |
|
1478 | 1484 |
if len(stale) == 0: |
1479 | 1485 |
return |
1480 |
|
|
1486 |
|
|
1481 | 1487 |
fail_tmout = time.time() + action_timeout |
1482 | 1488 |
while True: |
1483 | 1489 |
servers = c.list_servers() |
... | ... | |
1752 | 1758 |
query_interval=opts.query_interval, |
1753 | 1759 |
) |
1754 | 1760 |
|
1755 |
|
|
1761 |
|
|
1756 | 1762 |
NetworkTestCase = _spawn_network_test_case( |
1757 | 1763 |
action_timeout=opts.action_timeout, |
1758 | 1764 |
imageid=imageid, |
Also available in: Unified diff