Files
2026-04-07 02:04:22 +05:30

74 lines
4.7 KiB
Python

#coding: utf-8
#-------------------------------------------------------------------
# YakPanel
#-------------------------------------------------------------------
# Copyright (c) 2015-2099 YakPanel(www.yakpanel.com) All rights reserved.
#-------------------------------------------------------------------
# Author: zouhw <zhw@yakpanel.com>
#-------------------------------------------------------------------
#------------------------------
# Docker模型
#------------------------------
import public
import projectModel.bt_docker.dk_public as dp
import docker.errors
class main :#line:1
__O0O0O00O00OOO00O0 =None #line:3
def docker_client (OO0000OOOO0O00000 ,O00000O0O00OO0O0O ):#line:5
import projectModel .bt_docker .dk_public as dp #line:6
return dp .docker_client (O00000O0O00OO0O0O )#line:7
def get_volume_container_name (O0O000O0OOO00O0O0 ,O0O00OOOOO0O0O00O ):#line:10
OO000OO00OOOOOOO0 =O0O000O0OOO00O0O0 .docker_client (O0O000O0OOO00O0O0 .__O0O0O00O00OOO00O0 ).containers #line:11
O0O0OOOO00000OO0O =OO000OO00OOOOOOO0 .list (all =True )#line:12
O0000O00OOOO00O00 =[O000OO00OOOO00O0O .attrs for O000OO00OOOO00O0O in O0O0OOOO00000OO0O ]#line:14
for O00OOO00000OO0OOO in O0000O00OOOO00O00 :#line:15
if not O00OOO00000OO0OOO ['Mounts']:#line:16
continue #line:17
for O0O00O0O0OOO000OO in O00OOO00000OO0OOO ['Mounts']:#line:18
if "Name"not in O0O00O0O0OOO000OO :#line:19
continue #line:20
if O0O00OOOOO0O0O00O ['Name']==O0O00O0O0OOO000OO ['Name']:#line:21
O0O00OOOOO0O0O00O ['container']=O00OOO00000OO0OOO ['Name'].replace ("/","")#line:22
if 'container'not in O0O00OOOOO0O0O00O :#line:23
O0O00OOOOO0O0O00O ['container']=''#line:24
return O0O00OOOOO0O0O00O #line:25
def get_volume_list (O0O0OOO0OO000000O ,OO0OO0O0OOOO0OO0O ):#line:27
""#line:31
import projectModel .bt_docker .dk_setup as ds #line:32
O0O0OOO0OO000000O .__O0O0O00O00OOO00O0 =OO0OO0O0OOOO0OO0O .url #line:33
O0O0O0OOO0OOO0O00 =O0O0OOO0OO000000O .docker_client (OO0OO0O0OOOO0OO0O .url )#line:34
O0O000O0OOOOOO00O =ds .main ()#line:35
OO0OO00000OOOOOO0 =O0O000O0OOOOOO00O .check_docker_program ()#line:36
OOOOO0OOOO000OOOO =O0O000O0OOOOOO00O .get_service_status ()#line:37
if not O0O0O0OOO0OOO0O00 :#line:38
O000O0000OOO000OO ={"volume":[],"installed":OO0OO00000OOOOOO0 ,"service_status":OOOOO0OOOO000OOOO }#line:43
return public .returnMsg (True ,O000O0000OOO000OO )#line:44
OO00O00OOO0O000O0 =O0O0O0OOO0OOO0O00 .volumes #line:45
O000O0000OOO000OO ={"volume":O0O0OOO0OO000000O .get_volume_attr (OO00O00OOO0O000O0 ),"installed":OO0OO00000OOOOOO0 ,"service_status":OOOOO0OOOO000OOOO }#line:51
return public .returnMsg (True ,O000O0000OOO000OO )#line:52
def get_volume_attr (O00O000OO00000O00 ,O0O0OO0OO0OO0O0OO ):#line:54
OOO00O0O0000O0O0O =O0O0OO0OO0OO0O0OO .list ()#line:55
O00O00OOOOO00O000 =list ()#line:56
for OO0OOOOOOOOO0OO00 in OOO00O0O0000O0O0O :#line:57
OO0OOOOOOOOO0OO00 =O00O000OO00000O00 .get_volume_container_name (OO0OOOOOOOOO0OO00 .attrs )#line:58
O00O00OOOOO00O000 .append (OO0OOOOOOOOO0OO00 )#line:59
return O00O00OOOOO00O000 #line:60
def add (O000O0OOOO0O0OOOO ,O0OO00O0O0OO0O0OO ):#line:62
""#line:70
O000O0OOOO0O0OOOO .docker_client (O0OO00O0O0OO0O0OO .url ).volumes .create (name =O0OO00O0O0OO0O0OO .name ,driver =O0OO00O0O0OO0O0OO .driver ,driver_opts =O0OO00O0O0OO0O0OO .driver_opts if O0OO00O0O0OO0O0OO .driver_opts else None ,labels =dp .set_kv (O0OO00O0O0OO0O0OO .labels ))#line:76
dp .write_log ("Adding storage volume [[]] succeeded!".format (O0OO00O0O0OO0O0OO .name ))#line:77
return public .returnMsg (True ,"Added successfully!")#line:78
def remove (O0OOO000000OO0OOO ,O0OO00OO0OOO00000 ):#line:80
""#line:86
try :#line:87
O0000O0OO000O0O0O =O0OOO000000OO0OOO .docker_client (O0OO00OO0OOO00000 .url ).volumes .get (O0OO00OO0OOO00000 .name )#line:88
O0000O0OO000O0O0O .remove ()#line:89
dp .write_log ("Delete storage volume [[]] successful!".format (O0OO00OO0OOO00000 .name ))#line:90
return public .returnMsg (True ,"Successfully deleted")#line:91
except docker .errors .APIError as OO00OO0O000O0O0O0 :#line:92
if "volume is in use"in str (OO00OO0O000O0O0O0 ):#line:93
return public .returnMsg (False ,"Storage volume is in use and cannot be deleted!")#line:94
return public .returnMsg (False ,"Failed to delete! {}".format (OO00OO0O000O0O0O0 ))#line:95