Skip to content

Commit fdd3c34

Browse files
committed
Fixed bug for proc operation
1 parent edf72e3 commit fdd3c34

File tree

6 files changed

+29
-39
lines changed

6 files changed

+29
-39
lines changed

apis/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -547,10 +547,10 @@ def podgroup_remove(self, podgroup_name):
547547
(podgroup_name, self.appname))
548548
return self.default_deploy.remove_podgroup(podgroup_name)
549549

550-
def podgroup_operate(self, podgroup_name, optype, instance):
550+
def podgroup_operate(self, podgroup_name, instance, optype):
551551
logger.info("operate podgroup %s of app %s " %
552552
(podgroup_name, self.appname))
553-
return self.default_deploy.operate_podgroup(podgroup_name)
553+
return self.default_deploy.operate_podgroup(podgroup_name, instance, optype)
554554

555555
def dependency_register(self, service_app, service_appname, dependency_pod_name):
556556
# service may not been deployed yet, so may need force generate the

apis/utils.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
from log import logger
2121
from .calico import (calico_profile_rule_add)
2222
import pycalico.datastore_datatypes
23+
from django.utils.dateparse import parse_datetime
24+
from pytz import timezone
2325

2426

2527
def read_from_etcd(key):
@@ -222,8 +224,8 @@ def get_current_time():
222224

223225

224226
def convert_time_from_deployd(d_time):
225-
c_times = d_time.split("T")
226-
if len(c_times) <= 1:
227-
return d_time
228-
else:
229-
return "%s %s" % (c_times[0], c_times[1].split('.')[0])
227+
t_time = parse_datetime(d_time)
228+
tzchina = timezone('Asia/Shanghai')
229+
utc = timezone('UTC')
230+
t_time = t_time.replace(tzinfo=utc).astimezone(tzchina)
231+
return t_time.strftime('%Y-%m-%d %H:%M:%S')

apis/views.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,8 +1130,9 @@ def delete_app_proc(cls, appname, procname, options=None):
11301130
reverse('api_proc', kwargs={'appname': appname, 'procname': procname}))
11311131

11321132
@classmethod
1133-
def operate_proc(cls, appname, procname, instance, operation, options=None):
1133+
def operate_proc(cls, appname, procname, operation, options=None):
11341134
try:
1135+
instance = int(options.get('instance', 0))
11351136
app = App.get_or_none(appname)
11361137
if not app.is_reachable():
11371138
return (404, None,
@@ -1143,14 +1144,15 @@ def operate_proc(cls, appname, procname, instance, operation, options=None):
11431144
'no such proc %s in app %s' % (procname, appname),
11441145
reverse('api_procs', kwargs={'appname': appname}))
11451146
if pg_status:
1146-
if instance != 0 {
1147+
container_name = None
1148+
if instance != 0:
11471149
pods = pg_status['Status']['Pods']
11481150
if instance <= len(pods):
1149-
container_name = pods[instance - 1]['Containers'][0]['Runtime']['Name']
1151+
container_name = pods[
1152+
instance - 1]['Containers'][0]['Runtime']['Name']
11501153
else:
11511154
return (404, None, 'no such proc %s instance %d, in app %s' % (procname, instance, appname),
11521155
reverse('api_procs', kwargs={'appname': appname}))
1153-
}
11541156
if container_name:
11551157
add_oplog(AuthApi.operater, operation.upper(), appname, "",
11561158
"%s container %s" % (operation, container_name))
@@ -1160,7 +1162,7 @@ def operate_proc(cls, appname, procname, instance, operation, options=None):
11601162

11611163
podgroup_name = "%s.%s.%s" % (
11621164
appname, proc.type.name, proc.name)
1163-
result = app.podgroup_operate(podgroup_name)
1165+
result = app.podgroup_operate(podgroup_name, instance, operation)
11641166
if result.status_code < 400:
11651167
return (202, ProcApi.render_proc_data(appname, proc),
11661168
render_op_result_to_msg(result),
@@ -1177,8 +1179,8 @@ def operate_proc(cls, appname, procname, instance, operation, options=None):
11771179
except Exception, e:
11781180
client.captureException()
11791181
return (500, None,
1180-
'fatal error when delete app %s proc %s:\n%s\nplease contact with admin of lain\n' % (
1181-
appname, procname, e),
1182+
'fatal error when %s app %s proc %s:\n%s\nplease contact with admin of lain\n' % (
1183+
operation, appname, procname, e),
11821184
reverse('api_proc', kwargs={'appname': appname, 'procname': procname}))
11831185

11841186
'''

console/urls.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@
1717
'console.views.api_procs', name='api_procs'),
1818
url(r'^(?:api/)?v1/apps/(?P<appname>[^/]+)/procs/(?P<procname>[^/]+)/$',
1919
'console.views.api_proc', name='api_proc'),
20-
url(r'^(?:api/)?v1/apps/(?P<appname>[^/]+)/procs/(?P<procname>[^/]+)/(?P<operation>[^/]+)/$',
21-
'console.views.api_proc_op', name='api_proc_op'),
2220

23-
url(r'^(?:api/)?v1/apps/(?P<appname>[^/]+)/proc/(?P<procname>[^/]+)/instance/(?P<instance>[^/]+)/histories/$',
21+
url(r'^(?:api/)?v1/apps/(?P<appname>[^/]+)/procs/(?P<procname>[^/]+)/instance/(?P<instance>[^/]+)/histories/$',
2422
'console.views.api_proc_history', name='api_proc_history'),
2523

2624
# authroze service for console ui

console/views.py

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -210,13 +210,6 @@ def api_proc(request, appname, procname):
210210
_invalid_request_method('proc', request.method)
211211

212212

213-
def api_proc_op(request, appname, procname, operation):
214-
if request.method == 'POST':
215-
return api_proc_operate(request, appname, procname, operation)
216-
else:
217-
_invalid_request_method('proc', request.method)
218-
219-
220213
def api_proc_history(request, appname, procname, instance):
221214
if request.method == 'GET':
222215
return api_proc_history_get(request, appname, procname, instance)
@@ -244,10 +237,16 @@ def api_proc_high_permit(request, appname, procname):
244237
elif request.method == 'PATCH':
245238
try:
246239
options = json.loads(request.body)
240+
operation = options.get('operation', 'schedule')
241+
if operation == 'schedule':
242+
status_code, view_object, msg, url = ProcApi.update_app_proc(
243+
appname, procname, options)
244+
else:
245+
status_code, view_object, msg, url = ProcApi.operate_proc(
246+
appname, procname, operation, options)
247247
except Exception:
248248
return render_json_response(400, 'proc', None, 'invalid request: should be json body with num_instances(integer) or cpu(integer) or memory(str)', reverse('api_docs'))
249-
status_code, view_object, msg, url = ProcApi.update_app_proc(
250-
appname, procname, options)
249+
251250
return render_json_response(status_code, 'proc', view_object, msg, url)
252251

253252

@@ -258,17 +257,6 @@ def api_proc_get(request, appname, procname):
258257
return render_json_response(status_code, 'proc', view_object, msg, url)
259258

260259

261-
@permission_required('maintain')
262-
@deployd_required
263-
def api_proc_operate(request, appname, procname, operation):
264-
try:
265-
options = json.loads(request.body)
266-
instance = int(options.get('instance', 0))
267-
status_code, view_object, msg, url = ProcApi.operate_proc(appname, procname, operation, instance)
268-
return render_json_response(status_code, 'proc', view_object, msg, url)
269-
except Exception:
270-
return render_json_response(400, 'proc', None, 'invalid request: instance should be integer', reverse('api_docs'))
271-
272260
def api_repos(request):
273261
if request.method == 'POST':
274262
return api_repos_post(request)

deploys/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ def remove_podgroup(podgroup_name, apiserver):
3636

3737

3838
def operate_podgroup(podgroup_name, instance, operation, apiserver):
39-
url = "%s/api/podgroups?name=%s&instance=%s&cmd=operation&optype=%s" % (
39+
url = "%s/api/podgroups?name=%s&instance=%d&cmd=operation&optype=%s" % (
4040
apiserver, podgroup_name, instance, operation
4141
)
42-
return send_request("POST", url, None, None)
42+
return send_request("PATCH", url, None, None)
4343

4444

4545
def patch_podgroup_instance(podgroup_name, num_instances, apiserver):

0 commit comments

Comments
 (0)