Initial YakPanel commit
This commit is contained in:
156
class/projectModel/bt_docker/dk_setup.py
Normal file
156
class/projectModel/bt_docker/dk_setup.py
Normal file
@@ -0,0 +1,156 @@
|
||||
#coding: utf-8
|
||||
#-------------------------------------------------------------------
|
||||
# YakPanel
|
||||
#-------------------------------------------------------------------
|
||||
# Copyright (c) 2015-2099 YakPanel(www.yakpanel.com) All rights reserved.
|
||||
#-------------------------------------------------------------------
|
||||
# Author: zouhw <zhw@yakpanel.com>
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
#------------------------------
|
||||
# Docker模型
|
||||
#------------------------------
|
||||
|
||||
import os
|
||||
import json
|
||||
import public
|
||||
import projectModel.bt_docker.dk_public as dp
|
||||
|
||||
class main :#line:1
|
||||
def get_config (O0OO0OO0O0OOO0OOO ,O0OOOO000OOOO0000 ):#line:3
|
||||
import projectModel .bt_docker .dk_public as dp #line:4
|
||||
O00O0OOO0O0O0OO00 =O0OO0OO0O0OOO0OOO .get_registry_mirrors (O0OOOO000OOOO0000 )#line:6
|
||||
if not O00O0OOO0O0O0OO00 ["status"]:#line:7
|
||||
return O00O0OOO0O0O0OO00 #line:8
|
||||
else :#line:9
|
||||
O00O0OOO0O0O0OO00 =O00O0OOO0O0O0OO00 ['msg']#line:10
|
||||
OOO00O00O00000000 =O0OO0OO0O0OOO0OOO .get_service_status ()#line:11
|
||||
return public .returnMsg (True ,{"registry_mirrors":O00O0OOO0O0O0OO00 ,"service_status":OOO00O00O00000000 ,"installed":O0OO0OO0O0OOO0OOO .check_docker_program (),"monitor_status":O0OO0OO0O0OOO0OOO .get_monitor_status (),"monitor_save_date":dp .docker_conf ()['SAVE']})#line:18
|
||||
def set_monitor_save_date (O0OO0000000O0OO0O ,OO0OO0O0O00OO0OOO ):#line:20
|
||||
""#line:25
|
||||
import re #line:26
|
||||
OOOO0O0OO00O00O00 ="{}/data/docker.conf".format (public .get_panel_path ())#line:27
|
||||
O00OO000O0OO0000O =public .readFile (OOOO0O0OO00O00O00 )#line:28
|
||||
try :#line:29
|
||||
OOO00O0000000OO0O =int (OO0OO0O0O00OO0OOO .save_date )#line:30
|
||||
except :#line:31
|
||||
return public .returnMsg (False ,"The monitoring save time needs to be a positive integer!")#line:32
|
||||
if OOO00O0000000OO0O >999 :#line:33
|
||||
return public .returnMsg (False ,"Monitoring data cannot be retained for more than 999 days!")#line:34
|
||||
if not O00OO000O0OO0000O :#line:35
|
||||
O00OO000O0OO0000O ="SAVE={}".format (OOO00O0000000OO0O )#line:36
|
||||
public .writeFile (OOOO0O0OO00O00O00 ,O00OO000O0OO0000O )#line:37
|
||||
return public .returnMsg (True ,"Set up successfully!")#line:38
|
||||
O00OO000O0OO0000O =re .sub (r"SAVE\s*=\s*\d+","SAVE={}".format (OOO00O0000000OO0O ),O00OO000O0OO0000O )#line:39
|
||||
public .writeFile (OOOO0O0OO00O00O00 ,O00OO000O0OO0000O )#line:40
|
||||
dp .write_log ("Set the monitoring time to [] days!".format (OOO00O0000000OO0O ))#line:41
|
||||
return public .returnMsg (True ,"Set up successfully!")#line:42
|
||||
def get_service_status (OO0O0OOOO00O0000O ):#line:44
|
||||
import projectModel .bt_docker .dk_public as dp #line:45
|
||||
OOOO0OO00O00O0O0O ='/var/run/docker.pid'#line:46
|
||||
if os .path .exists (OOOO0OO00O00O0O0O ):#line:47
|
||||
try :#line:48
|
||||
O0O0O0OOO0OO0OOOO =dp .docker_client ()#line:49
|
||||
if O0O0O0OOO0OO0OOOO :#line:50
|
||||
return True #line:51
|
||||
else :#line:52
|
||||
return False #line:53
|
||||
except :#line:54
|
||||
return False #line:55
|
||||
else :#line:56
|
||||
return False #line:57
|
||||
def docker_service (O00OOO000O0000O0O ,OOO00OO000000OOOO ):#line:60
|
||||
""#line:65
|
||||
import public #line:66
|
||||
O000O0OOO0O0O000O ={'start':'start','stop':'stop','restart':'restart'}#line:67
|
||||
if OOO00OO000000OOOO .act not in O000O0OOO0O0O000O :#line:68
|
||||
return public .returnMsg (False ,'There is no way to do this!')#line:69
|
||||
O0000OO0O0OOOOOO0 ='systemctl {} docker'.format (OOO00OO000000OOOO .act )#line:70
|
||||
if OOO00OO000000OOOO .act =="stop":#line:71
|
||||
O0000OO0O0OOOOOO0 +="&& systemctl {} docker.socket".format (OOO00OO000000OOOO .act )#line:72
|
||||
public .ExecShell (O0000OO0O0OOOOOO0 )#line:73
|
||||
dp .write_log ("Set the Docker service status to [{}] successful".format (O000O0OOO0O0O000O [OOO00OO000000OOOO .act ]))#line:74
|
||||
return public .returnMsg (True ,"Set the status to [{}] successful".format (O000O0OOO0O0O000O [OOO00OO000000OOOO .act ]))#line:75
|
||||
def get_registry_mirrors (O000O0OO0O00O0000 ,OO00O0OOO000O00O0 ):#line:78
|
||||
try :#line:79
|
||||
if not os .path .exists ('/etc/docker/daemon.json'):#line:80
|
||||
return public .returnMsg (True ,[])#line:81
|
||||
O00000OOOOOOOO0O0 =json .loads (public .readFile ('/etc/docker/daemon.json'))#line:82
|
||||
if "registry-mirrors"not in O00000OOOOOOOO0O0 :#line:83
|
||||
return public .returnMsg (True ,[])#line:84
|
||||
return public .returnMsg (True ,O00000OOOOOOOO0O0 ['registry-mirrors'])#line:85
|
||||
except :#line:86
|
||||
return public .returnMsg (False ,'Get failed! Reason for failure: {}'.format (public .get_error_info ()))#line:87
|
||||
def set_registry_mirrors (OO0OO0000OO0OOOO0 ,OOOO000OO0O00O000 ):#line:90
|
||||
""#line:95
|
||||
import re #line:96
|
||||
try :#line:97
|
||||
O0000O0O0O000O00O ={}#line:98
|
||||
if os .path .exists ('/etc/docker/daemon.json'):#line:99
|
||||
O0000O0O0O000O00O =json .loads (public .readFile ('/etc/docker/daemon.json'))#line:100
|
||||
if not OOOO000OO0O00O000 .registry_mirrors_address .strip ():#line:101
|
||||
if 'registry-mirrors'not in O0000O0O0O000O00O :#line:103
|
||||
return public .returnMsg (True ,'Set successfully')#line:104
|
||||
del (O0000O0O0O000O00O ['registry-mirrors'])#line:105
|
||||
else :#line:106
|
||||
O0O0O0O00OOOO0O0O =OOOO000OO0O00O000 .registry_mirrors_address .strip ().split ('\n')#line:107
|
||||
for O0000OOO0OO0000O0 in O0O0O0O00OOOO0O0O :#line:108
|
||||
if not re .search ('https?://',O0000OOO0OO0000O0 ):#line:109
|
||||
return public .returnMsg (False ,'The acceleration address [{}] is malformed<br>Reference: https://mirror.ccs.tencentyun.com'.format (O0000OOO0OO0000O0 ))#line:110
|
||||
O0000O0O0O000O00O ['registry-mirrors']=O0O0O0O00OOOO0O0O #line:112
|
||||
public .writeFile ('/etc/docker/daemon.json',json .dumps (O0000O0O0O000O00O ,indent =2 ))#line:115
|
||||
dp .write_log ("Set up Docker acceleration successfully!")#line:116
|
||||
return public .returnMsg (True ,'Set successfully')#line:117
|
||||
except :#line:118
|
||||
return public .returnMsg (False ,'Setup failed! Reason for failure:{}'.format (public .get_error_info ()))#line:119
|
||||
def get_monitor_status (OO0O00O0OO0O0O000 ):#line:121
|
||||
""#line:124
|
||||
O00O000O00OO00000 =public .process_exists ("python",cmdline ="/www/server/panel/class/projectModel/bt_docker/dk_monitor.py")#line:126
|
||||
if O00O000O00OO00000 :#line:127
|
||||
return O00O000O00OO00000 #line:128
|
||||
O00O000O00OO00000 =public .process_exists ("python3",cmdline ="/www/server/panel/class/projectModel/bt_docker/dk_monitor.py")#line:129
|
||||
if O00O000O00OO00000 :#line:130
|
||||
return O00O000O00OO00000 #line:131
|
||||
return O00O000O00OO00000 #line:132
|
||||
def set_docker_monitor (OO0OOOOOOO0O00OO0 ,O0O0O0000O0OOO000 ):#line:134
|
||||
""#line:139
|
||||
import time #line:140
|
||||
import projectModel .bt_docker .dk_public as dp #line:141
|
||||
OOO000O0O0O0OOOO0 ="/www/server/panel/pyenv/bin/python"#line:142
|
||||
if not os .path .exists (OOO000O0O0O0OOOO0 ):#line:143
|
||||
OOO000O0O0O0OOOO0 ="/www/server/panel/pyenv/bin/python3"#line:144
|
||||
O0O000O0O00O0O000 ="/www/server/panel/class/projectModel/bt_docker/dk_monitor.py"#line:145
|
||||
if O0O0O0000O0OOO000 .act =="start":#line:146
|
||||
OOO0O00OO0OO0O00O ="nohup {} {} &".format (OOO000O0O0O0OOOO0 ,O0O000O0O00O0O000 )#line:147
|
||||
public .ExecShell (OOO0O00OO0OO0O00O )#line:148
|
||||
time .sleep (1 )#line:149
|
||||
if OO0OOOOOOO0O00OO0 .get_monitor_status ():#line:150
|
||||
dp .write_log ("Docker monitoring started successfully!")#line:151
|
||||
return public .returnMsg (True ,"Start monitoring successfully!")#line:152
|
||||
return public .returnMsg (False ,"Failed to start monitoring!")#line:153
|
||||
else :#line:154
|
||||
O0O0OOOOOOOO0O0OO =dp .get_process_id ("python","/www/server/panel/class/projectModel/bt_docker/dk_monitor.py")#line:155
|
||||
if not O0O0OOOOOOOO0O0OO :#line:156
|
||||
O0O0OOOOOOOO0O0OO =dp .get_process_id ("python3","/www/server/panel/class/projectModel/bt_docker/dk_monitor.py")#line:157
|
||||
public .ExecShell ("kill -9 {}".format (O0O0OOOOOOOO0O0OO ))#line:158
|
||||
dp .write_log ("Docker monitoring stopped successfully!")#line:159
|
||||
return public .returnMsg (True ,"Stop monitoring successfully!")#line:160
|
||||
def check_docker_program (O0O00O00OOOO0O000 ):#line:162
|
||||
""#line:166
|
||||
O0O0O00O000OOO000 ="/usr/bin/docker"#line:167
|
||||
O00OO00OO0OOOOOO0 ="/usr/bin/docker-compose"#line:168
|
||||
if not os .path .exists (O0O0O00O000OOO000 )or not os .path .exists (O00OO00OO0OOOOOO0 ):#line:169
|
||||
return False #line:170
|
||||
return True #line:171
|
||||
def install_docker_program (OOO0000OOO0O0O0O0 ,O0O000O0OO000OO0O ):#line:173
|
||||
""#line:178
|
||||
import time #line:179
|
||||
O000O000O0OO00O00 ="Install Docker service"#line:180
|
||||
O00O000OOOOOOO000 ="/bin/bash /www/server/panel/install/install_soft.sh 0 install docker_install_en"#line:183
|
||||
public .M ('tasks').add ('id,name,type,status,addtime,execstr',(None ,O000O000O0OO00O00 ,'execshell','0',time .strftime ('%Y-%m-%d %H:%M:%S'),O00O000OOOOOOO000 ))#line:184
|
||||
if not public.is_self_hosted():
|
||||
public .httpPost (public .GetConfigValue ('home')+'/api/panel/plugin_total',{"pid":"1111111",'p_name':"Docker商用模块"},3 )#line:185
|
||||
public.arequests('post', '{}/api/setupCount/setupPlugin'.format(public.OfficialApiBase()),
|
||||
data={"pid": "1111111", 'p_name': "Dockerpaymodel"}, timeout=3)
|
||||
|
||||
return public .returnMsg (True ,"Install task added to queue!")#line:186
|
||||
Reference in New Issue
Block a user