@name 获取项目状态信息 @author hwliang<2021-08-09> @param project_info 项目信息 @return list
(self,project_info)
| 2019 | |
| 2020 | |
| 2021 | def get_project_stat(self,project_info): |
| 2022 | ''' |
| 2023 | @name 获取项目状态信息 |
| 2024 | @author hwliang<2021-08-09> |
| 2025 | @param project_info<dict> 项目信息 |
| 2026 | @return list |
| 2027 | ''' |
| 2028 | project_info['project_config'] = json.loads(project_info['project_config']) |
| 2029 | project_info['load_info'] = {} |
| 2030 | if ("pm2_name" in project_info['project_config'] and |
| 2031 | "project_type" in project_info['project_config'] and |
| 2032 | project_info['project_config']["project_type"] == "pm2") or "pm2" in project_info['project_config']['project_script']: |
| 2033 | from mod.project.nodejs.pm2Mod import main |
| 2034 | pm2_list = main().get_jlist() |
| 2035 | project_info['run'] = False |
| 2036 | pm2_name = project_info['project_config'].get("pm2_name", project_info['name']) |
| 2037 | pm2_pids = [] |
| 2038 | for pm2_info in pm2_list: |
| 2039 | if pm2_info.get("name") in ("pm2-sysmonit", "pm2-logrotate"): |
| 2040 | continue |
| 2041 | env_projectname = "" |
| 2042 | if "pm2_env" in pm2_info and "NODE_PROJECT_NAME" in pm2_info["pm2_env"]: |
| 2043 | env_projectname = pm2_info["pm2_env"]["NODE_PROJECT_NAME"] |
| 2044 | if pm2_name != pm2_info.get("name") and pm2_name != env_projectname: |
| 2045 | continue |
| 2046 | project_info['run'] = pm2_info.get("pm2_env").get("status") == "online" |
| 2047 | if project_info['run']: |
| 2048 | pm2_pids.append(pm2_info.get("pid")) |
| 2049 | break |
| 2050 | project_info['load_info'] = self.get_pm2_load_info_new(pm2_pids) |
| 2051 | else: |
| 2052 | project_info['run'] = self.get_project_run_state(project_name=project_info['name']) |
| 2053 | if project_info['run']: |
| 2054 | project_info['load_info'] = self.get_project_load_info(project_name=project_info['name']) |
| 2055 | |
| 2056 | project_info['ssl'] = self.get_ssl_end_date(project_name=project_info['name']) |
| 2057 | project_info['listen'] = [] |
| 2058 | project_info['listen_ok'] = True |
| 2059 | if project_info['load_info']: |
| 2060 | for pid in project_info['load_info'].keys(): |
| 2061 | if not 'connections' in project_info['load_info'][pid]: |
| 2062 | project_info['load_info'][pid]['connections'] = [] |
| 2063 | for conn in project_info['load_info'][pid]['connections']: |
| 2064 | if not conn['status'] == 'LISTEN': continue |
| 2065 | if not conn['local_port'] in project_info['listen']: |
| 2066 | project_info['listen'].append(conn['local_port']) |
| 2067 | if project_info['listen']: |
| 2068 | if project_info['project_config']['port'] is None: |
| 2069 | project_info['project_config']['port'] = project_info['listen'][0] |
| 2070 | project_info['listen_ok'] = project_info['project_config']['port'] in project_info['listen'] |
| 2071 | |
| 2072 | return project_info |
| 2073 | |
| 2074 | def get_project_state(self,project_name): |
| 2075 | ''' |
no test coverage detected