1
1
# -*- coding:utf-8 -*-
2
2
3
3
import time
4
- from datetime import datetime
5
- from flask import session , redirect , url_for ,jsonify ,g ,request
4
+ from flask import session , redirect , url_for , jsonify , g , request
6
5
from flask_login import login_required
7
6
import salt .client
8
7
import re
9
8
import simplejson
9
+ import json
10
10
11
11
from . import dockermApi
12
12
from ..lib .rawSQL import rawSQLControl
13
- from .. import db
14
- from ..lib .dbModel import Hosts , Images , Containers
15
- from ..lib .dbController import getUser , getAllImage2Host , getAllHost , getAllContainer2Host , getHostInfoByContainerID , HostisExited
13
+ from ..lib .dbModel import *
16
14
from ..lib .pushMsg import pushMsg
17
- from ..lib .tools import createContainer
18
15
19
16
20
17
@dockermApi .route ('/api/container/getstatus/<container_id>' , methods = ['GET' ])
21
18
@login_required
22
- def getStatus (container_id ):
23
- return jsonify (rawSQLControl ().getContainerState (container_id ,60 ))
19
+ def get_status (container_id ):
20
+ return jsonify (rawSQLControl ().getContainerState (container_id , 60 ))
21
+
24
22
25
23
@dockermApi .route ('/api/container/getstatus_now/<container_id>' , methods = ['GET' ])
26
24
@login_required
27
- def getStatusNow (container_id ):
25
+ def get_status_now (container_id ):
28
26
return jsonify (rawSQLControl ().getContainerState (container_id , 1 ))
29
27
30
28
31
29
@dockermApi .route ('/api/get/hosts/' , methods = ['GET' ])
32
30
@login_required
33
- def getHostList ():
31
+ def get_host_list ():
34
32
req_list = []
35
- id = 0
36
- for host_info in getAllHost ():
33
+ for host_info in Hosts .get_all_host ():
37
34
info = simplejson .loads (host_info .host_info )
38
35
req_list .append ({
39
36
"id" : host_info .saltstack_id ,
@@ -48,9 +45,9 @@ def getHostList():
48
45
49
46
@dockermApi .route ('/api/get/images/<saltstack_id>' , methods = ['GET' ])
50
47
@login_required
51
- def getAllImageList (saltstack_id ):
48
+ def get_all_image_list (saltstack_id ):
52
49
req_list = []
53
- for image_info in getAllImage2Host (saltstack_id ):
50
+ for image_info in Images . get_image_according_to_host (saltstack_id ):
54
51
info = simplejson .loads (image_info .info )
55
52
req_list .append ({
56
53
"id" : info ['Id' ][7 :],
@@ -62,9 +59,9 @@ def getAllImageList(saltstack_id):
62
59
63
60
@dockermApi .route ('/api/get/containers/<saltstack_id>' , methods = ['GET' ])
64
61
@login_required
65
- def getAllContainerList (saltstack_id ):
62
+ def get_all_container_list (saltstack_id ):
66
63
req_list = []
67
- for container_info in getAllContainer2Host (saltstack_id ):
64
+ for container_info in Containers . get_container_info_according_to_container_id (saltstack_id ):
68
65
req_list .append ({
69
66
"id" : container_info .container_id [0 :12 ],
70
67
"text" : container_info .container_name ,
@@ -75,37 +72,46 @@ def getAllContainerList(saltstack_id):
75
72
76
73
@dockermApi .route ('/control/container/<control_type>' , methods = ['POST' ])
77
74
@login_required
78
- def containerControl (control_type ):
79
- print control_type
80
- user = getUser (session ['user_id' ])
75
+ def container_control (control_type ):
81
76
if control_type == 'start' :
82
- saltstack_id = getHostInfoByContainerID (request .form ['container_id' ]).saltstack_id
83
- if (checkHost (saltstack_id )):
84
- pushMsg (control_type , user .username , {"container_id" : request .form ['container_id' ]}, getHostInfoByContainerID (request .form ['container_id' ]).saltstack_id ).push ()
77
+ saltstack_id = Containers .get_container_info_according_to_container_id (
78
+ request .form ['container_id' ]).saltstack_id
79
+ if _check_host (saltstack_id ):
80
+ pushMsg (control_type , current_app .username , {"container_id" : request .form ['container_id' ]},
81
+ saltstack_id ).push ()
85
82
return jsonify ({'status' : 'success' , 'title' : '操作发送成功!' ,
86
83
'text' : u'启动容器 ' + request .form ['container_name' ] + ' [' + request .form ['container_id' ][
87
- 0 :12 ] + u'] 成功!' , })
84
+ 0 :12 ] + u'] 成功!' })
88
85
else :
89
- return jsonify ({'status' : 'error' , 'title' : '操作发送失败!' , 'text' : u'失败!' + saltstack_id + u' 主机无法访问!' })
86
+ return jsonify ({'status' : 'error' , 'title' : '操作发送失败!' ,
87
+ 'text' : u'失败!' + saltstack_id + u' 主机无法访问!' })
88
+
90
89
elif control_type == 'stop' :
91
- saltstack_id = getHostInfoByContainerID (request .form ['container_id' ]).saltstack_id
90
+ saltstack_id = Containers .get_container_info_according_to_container_id (
91
+ request .form ['container_id' ]).saltstack_id
92
92
print saltstack_id
93
- if (checkHost (saltstack_id )):
94
- pushMsg (control_type , user .username , {"container_id" : request .form ['container_id' ]}, getHostInfoByContainerID (request .form ['container_id' ]).saltstack_id ).push ()
93
+ if _check_host (saltstack_id ):
94
+ pushMsg (control_type , current_app .username , {"container_id" : request .form ['container_id' ]},
95
+ saltstack_id ).push ()
95
96
return jsonify ({'status' : 'success' , 'title' : '操作发送成功!' ,
96
97
'text' : u'关闭容器 ' + request .form ['container_name' ] + ' [' + request .form ['container_id' ][
97
- 0 :12 ] + u'] 成功!' , })
98
+ 0 :12 ] + u'] 成功!' })
98
99
else :
99
- return jsonify ({'status' : 'error' , 'title' : '操作发送失败!' , 'text' : u'失败!' + saltstack_id + u' 主机无法访问!' })
100
+ return jsonify ({'status' : 'error' , 'title' : '操作发送失败!' ,
101
+ 'text' : u'失败!' + saltstack_id + u' 主机无法访问!' })
102
+
100
103
elif control_type == 'follow' :
101
- updateContainerFollowState (request .form ['container_id' ],1 )
104
+ Containers .update_container_follow_state (request .form ['container_id' ], 1 )
105
+
102
106
elif control_type == 'unfollow' :
103
107
print 'unfollow'
104
- updateContainerFollowState (request .form ['container_id' ], 0 )
108
+ Containers .update_container_follow_state (request .form ['container_id' ], 0 )
109
+
105
110
elif control_type == 'create' :
106
111
saltstack_id = request .form ['saltstack_id' ]
107
- if ( checkHost ( saltstack_id ) ):
112
+ if _check_host ( saltstack_id ):
108
113
image_id = request .form ['image_id' ]
114
+ host_address = request .form ['host_address' ]
109
115
110
116
for link in request .form .getlist ("link[]" ):
111
117
link_dict = simplejson .loads (link )
@@ -119,13 +125,14 @@ def containerControl(control_type):
119
125
int (port_dict ['host-port' ])
120
126
except ValueError :
121
127
return jsonify ({'status' : 'error' , 'title' : '操作失败!' , 'text' : u'失败!端口只能是数字!' })
122
- if not re .compile ('^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$' ).match ('55.258.365.12' ):
128
+ if not re .compile ('^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$' ).match (
129
+ host_address ):
123
130
return jsonify ({'status' : 'error' , 'title' : '操作失败!' , 'text' : u'失败!IP 地址不规范!' })
124
131
125
132
if Images .query .filter_by (image_id = image_id ).first () is None :
126
133
return jsonify ({'status' : 'error' , 'title' : '操作失败!' , 'text' : u'失败!无此镜像!' })
127
134
128
- pushMsg ('create' , user .username ,
135
+ pushMsg ('create' , current_app .username ,
129
136
{"container_name" : request .form ['container_name' ], "saltstack_id" : saltstack_id ,
130
137
"image" : image_id , "hostname" : request .form ['hostname' ],
131
138
"command" : request .form ["command" ].replace (',' , ' && ' ), "link" : request .form .getlist ("link[]" ),
@@ -134,24 +141,26 @@ def containerControl(control_type):
134
141
135
142
return jsonify ({'status' : 'success' , 'title' : '操作发送成功!' , 'text' : u'成功!容器已创建!' })
136
143
else :
137
- return jsonify ({'status' : 'error' , 'title' : '操作发送失败!' , 'text' : u'失败!' + saltstack_id + u' 主机无法访问!' })
144
+ return jsonify ({'status' : 'error' , 'title' : '操作发送失败!' ,
145
+ 'text' : u'失败!' + saltstack_id + u' 主机无法访问!' })
146
+
138
147
return '0'
139
148
140
149
141
150
@dockermApi .route ('/api/hostIsAlive/' , methods = ['POST' ])
142
151
@login_required
143
- def hostIsAlive ():
144
- return jsonify ({"saltstack_id" : request .form ['saltstack_id' ],"status" : checkHost (request .form ['saltstack_id' ])})
152
+ def host_is_alive ():
153
+ return jsonify ({"saltstack_id" : request .form ['saltstack_id' ], "status" : _check_host (request .form ['saltstack_id' ])})
145
154
146
155
147
- def checkHost (saltstack_id ):
156
+ def _check_host (saltstack_id ):
148
157
client = salt .client .LocalClient ()
149
158
try :
150
- ping = client .cmd (saltstack_id , 'test.ping' ,timeout = 3 )
159
+ ping = client .cmd (saltstack_id , 'test.ping' , timeout = 3 )
151
160
print ping
152
161
except SaltClientError :
153
162
return False
154
- if ( ping .has_key (saltstack_id ) and ping [saltstack_id ] == True and HostisExited (saltstack_id ) ):
163
+ if ping .has_key (saltstack_id ) and ping [saltstack_id ] is True and Hosts . host_is_exited (saltstack_id ):
155
164
print saltstack_id
156
165
return True
157
166
else :
@@ -160,23 +169,24 @@ def checkHost(saltstack_id):
160
169
161
170
@dockermApi .route ('/api/createHost/' , methods = ['POST' ])
162
171
@login_required
163
- def createHost ():
164
- #检查saltstack_id是否已存在数据库中
165
- if ( not Hosts .query .filter_by (saltstack_id = request .form ['saltstack_id' ]).first () ):
172
+ def create_host ():
173
+ # 检查saltstack_id是否已存在数据库中
174
+ if not Hosts .query .filter_by (saltstack_id = request .form ['saltstack_id' ]).first ():
166
175
# 运行 test.ping 检查是否连通
167
176
client = salt .client .LocalClient ()
168
177
ping = client .cmd (request .form ['saltstack_id' ], 'test.ping' )
169
- if ( ping .has_key (request .form ['saltstack_id' ]) and ping [request .form ['saltstack_id' ]] == True ) :
178
+ if ping .has_key (request .form ['saltstack_id' ]) and ping [request .form ['saltstack_id' ]] is True :
170
179
if (client .cmd (request .form ['saltstack_id' ], 'cp.get_dir' , ['salt://dockerm-minion' , '/srv' ])[
171
180
request .form ['saltstack_id' ]] == []):
172
- return jsonify ({'status' : '103' , 'msg' : u'失败!' + request .form ['saltstack_id' ]+ u' 主机文件复制错误!' }) #已存在数据库中 #文件复制失败
173
- db .session .add (Hosts (request .form ['saltstack_id' ], time .strftime ('%Y-%m-%d %H:%M:%S' , time .localtime (time .time ())), getUser (session ['user_id' ]).username , json .dumps (client .cmd (request .form ['saltstack_id' ], 'grains.items' ))))
181
+ return jsonify (
182
+ {'status' : '103' , 'msg' : u'失败!' + request .form ['saltstack_id' ] + u' 主机文件复制错误!' }) # 已存在数据库中 #文件复制失败
183
+ db .session .add (
184
+ Hosts (request .form ['saltstack_id' ], time .strftime ('%Y-%m-%d %H:%M:%S' , time .localtime (time .time ())),
185
+ current_app .username , json .dumps (client .cmd (request .form ['saltstack_id' ], 'grains.items' ))))
174
186
db .session .commit ()
175
- return jsonify ({'status' : '100' , 'msg' : u'成功!' + request .form ['saltstack_id' ]+ u' 主机已成功添加!' })
187
+ return jsonify ({'status' : '100' , 'msg' : u'成功!' + request .form ['saltstack_id' ] + u' 主机已成功添加!' })
176
188
else :
177
- return jsonify ({'status' : '102' , 'msg' : u'失败!' + request .form ['saltstack_id' ]+ u' 主机无法访问!' }) #主机无法连通
189
+ return jsonify ({'status' : '102' ,
190
+ 'msg' : u'失败!' + request .form ['saltstack_id' ] + u' 主机无法访问!' }) # 主机无法连通
178
191
else :
179
- return jsonify ({'status' : '101' , 'msg' : u'失败!' + request .form ['saltstack_id' ]+ u' 主机已存在!' }) #已存在数据库中
180
-
181
-
182
-
192
+ return jsonify ({'status' : '101' , 'msg' : u'失败!' + request .form ['saltstack_id' ] + u' 主机已存在!' }) # 已存在数据库中
0 commit comments