@@ -1129,6 +1129,57 @@ def delete_app_proc(cls, appname, procname, options=None):
11291129 appname , procname , e ),
11301130 reverse ('api_proc' , kwargs = {'appname' : appname , 'procname' : procname }))
11311131
1132+ @classmethod
1133+ def operate_proc (cls , appname , procname , instance , operation , options = None ):
1134+ try :
1135+ app = App .get_or_none (appname )
1136+ if not app .is_reachable ():
1137+ return (404 , None ,
1138+ 'app with appname %s has not been deployd\n ' % appname ,
1139+ reverse ('api_apps' ))
1140+ proc , pg_status = app .proc_and_pg_status (procname )
1141+ if proc is None :
1142+ return (404 , None ,
1143+ 'no such proc %s in app %s' % (procname , appname ),
1144+ reverse ('api_procs' , kwargs = {'appname' : appname }))
1145+ if pg_status :
1146+ if instance != 0 {
1147+ pods = pg_status ['Status' ]['Pods' ]
1148+ if instance <= len (pods ):
1149+ container_name = pods [instance - 1 ]['Containers' ][0 ]['Runtime' ]['Name' ]
1150+ else :
1151+ return (404 , None , 'no such proc %s instance %d, in app %s' % (procname , instance , appname ),
1152+ reverse ('api_procs' , kwargs = {'appname' : appname }))
1153+ }
1154+ if container_name :
1155+ add_oplog (AuthApi .operater , operation .upper (), appname , "" ,
1156+ "%s container %s" % (operation , container_name ))
1157+ else :
1158+ add_oplog (AuthApi .operater , operation .upper (), appname , "" ,
1159+ "%s proc %s" % (operation , procname ))
1160+
1161+ podgroup_name = "%s.%s.%s" % (
1162+ appname , proc .type .name , proc .name )
1163+ result = app .podgroup_operate (podgroup_name )
1164+ if result .status_code < 400 :
1165+ return (202 , ProcApi .render_proc_data (appname , proc ),
1166+ render_op_result_to_msg (result ),
1167+ reverse ('api_procs' , kwargs = {'appname' : appname }))
1168+ else :
1169+ return (500 , ProcApi .render_proc_data (appname , proc ),
1170+ render_op_result_to_msg (result ),
1171+ reverse ('api_proc' , kwargs = {'appname' : appname , 'procname' : procname }))
1172+ else :
1173+ return (400 , ProcApi .render_proc_data (appname , proc ),
1174+ 'proc %s exists but not deployed\n please deploy it first\n ' % (
1175+ procname ),
1176+ reverse ('api_proc' , kwargs = {'appname' : appname , 'procname' : procname }))
1177+ except Exception , e :
1178+ client .captureException ()
1179+ return (500 , None ,
1180+ 'fatal error when delete app %s proc %s:\n %s\n please contact with admin of lain\n ' % (
1181+ appname , procname , e ),
1182+ reverse ('api_proc' , kwargs = {'appname' : appname , 'procname' : procname }))
11321183
11331184'''
11341185这个类响应 console.views 关于 maintainer 的所有调用
0 commit comments