3 from decorators_for_robot_functionalities import *
4 from robot.api import logger
5 from robot.libraries.BuiltIn import BuiltIn
6 from test_constants import *
8 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '../libraries/common'))
9 import common_utils # noqa
11 ex = BuiltIn().get_library_instance('execute_command')
12 stack_infos = BuiltIn().get_library_instance('stack_infos')
15 def tc_006_ssh_test_ext_ntp():
16 steps = ['step1_check_ntpd_service_and_ext_ntp_ip_on_crf_nodes']
17 common_utils.keyword_runner(steps)
20 def step1_check_ntpd_service_and_ext_ntp_ip_on_crf_nodes():
21 crf_nodes = stack_infos.get_crf_nodes()
22 check_ntpd_status(crf_nodes)
23 check_if_nokia_ntp_server_address_set_on_crf_node(crf_nodes)
27 def check_ntpd_status(nodes):
29 logger.info("Nodes dictionary is empty, nothing to check.")
31 command = 'systemctl status ntpd.service | grep --color=no "Active"'
33 logger.console("\nCheck ntpd status " + node + " " + nodes[node])
34 stdout = ex.execute_unix_command_on_remote_as_user(command, nodes[node])
35 if "running" not in stdout:
36 raise Exception("ntpd.service is not running!")
40 def get_ext_ntp_ips_from_node():
41 return stack_infos.get_inventory()["all"]["vars"]["time"]["ntp_servers"]
45 def filter_valid_ntp_servers(ntp_servers):
47 for server in ntp_servers:
48 stdout = ex.execute_unix_command("ntpdate -q {}".format(server), fail_on_non_zero_rc=False)
49 if "no server suitable for synchronization found" not in stdout:
50 valid_servers.append(server)
55 def is_ntp_server_set_on_node(server_ip, node):
56 command = 'ntpq -pn | grep -w --color=no ' + server_ip
57 stdout = ex.execute_unix_command_on_remote_as_user(command, node, {}, fail_on_non_zero_rc=False)
58 return server_ip in str(stdout)
62 def check_if_nokia_ntp_server_address_set_on_crf_node(nodes):
63 ext_ntp_server_ips = get_ext_ntp_ips_from_node()
64 valid_servers = filter_valid_ntp_servers(ext_ntp_server_ips)
65 logger.info("The following ntp_servers will be tested:")
66 logger.info(valid_servers)
69 for ntp_serv_ip in valid_servers:
70 if not is_ntp_server_set_on_node(ntp_serv_ip, node):
73 raise Exception("Wrong or no NTP server address set!")