def __validate_QTP(host): try: pythoncom.CoInitialize() DispatchEx('QuickTest.Application', host.get_ip()) pythoncom.CoUninitialize() return True except Exception as e: configuration_log.info(e) return False
def __init_server(self, server_item): current_key = (server_item['os'], server_item['function']) if current_key in self.server_map_dict.keys(): server = self.server_map_dict[current_key]( ip=server_item['ip'], hostname=server_item['hostname'], version=server_item['version'], mac=server_item['mac'], username=server_item['username'], password=server_item['password'], domain=server_item['domain']) configuration_log.info('Init {}'.format(server_item['hostname'])) else: print('Invalid server type {}'.format(current_key)) server = False return server
def validate_deploy_server(self, host): if not self.__validate_QTP(host): host.status = 'off' configuration_log.info('validate_deploy_server ' + host.get_ip() + ' fail, QTP check fail') return False else: configuration_log.info('validate_deploy_QTP ' + host.get_ip() + ' Pass') if not self.__validate_HPDM(host): host.status = 'off' configuration_log.info('validate_deploy_server ' + host.get_ip() + ' fail, HPDM check fail') return False else: configuration_log.info('validate_deploy_HPDM ' + host.get_ip() + ' Pass') host.status = 'on' configuration_log.info('validate_deploy_server ' + host.get_ip() + ' pass') return True
def start(self): self.build_server_list.clear() self.deploy_server_list.clear() self.__configuration_process = Process(target=self.run, args=()) self.__configuration_process.start() self.status = self.__configuration_process receive_signal = self.receive_signal.recv() for valid_server in receive_signal: if isinstance(valid_server, (WindowsBuildHost, LinuxBuildHost)): self.build_server_list.append(valid_server) configuration_log.info("Add Build Host {}".format( valid_server.get_hostname())) elif isinstance(valid_server, (WindowsDeployHost, LinuxDeployHost)): self.deploy_server_list.append(valid_server) configuration_log.info("Add Deploy Host {}".format( valid_server.get_hostname())) self.list_status = True return self.list_status
def run(self): configuration_log.info("Start configuration, Engine PID is {}".format( str(os.getpid()))) server_list_result = self.get_server_list() valid_server_list = [] for server_item in server_list_result: server = self.__init_server(server_item) if self.validate_server(server): valid_server_list.append(server) else: """ validate server fail """ error_msg_instance = ErrorMsg(EngineCode().config_engine, ErrorLevel().record_and_continue, "validate server {} fail".format(server.get_hostname())) error_handle_instance = ErrorHandler(error_msg_instance) error_handle_instance.handle(mail_receiver=None) self.send_signal.send(valid_server_list) return valid_server_list
def __validate_HPDM(host): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) ssh.connect(host.get_ip(), 22, host.get_username(), host.get_password()) stdin, stdout, stderr = ssh.exec_command("sc queryex HPDMServer") res = stdout.readlines() if 'OPENSERVICE FAILED 1060' in res[0].upper(): configuration_log.info('validate_deploy_server ' + host.get_ip() + ' fail, HPDM service not exist') return False for i in res: if 'STATE' in i.upper(): # sample: STATE : 4 RUNNING if i.split(":")[1].strip().split(" ")[-1].upper() == 'RUNNING': return True else: configuration_log.info( 'validate_deploy_server ' + host.get_ip() + ' fail, HPDM service is not running') return False
def validate_build_server(self, host): result = self.ping(host.get_ip()) if result: if self.get_jenkins_node_state(host): configuration_log.info('validate_build_server ' + host.get_ip() + ' pass') host.status = 'on' return True else: configuration_log.info('validate_build_server ' + host.get_ip() + ' fail') host.status = 'off' return False else: configuration_log.info('validate_build_server ' + host.get_ip() + ' fail') host.status = 'off' return False