def post(self, request, groupId, *args, **kwargs): try: # groupId 为服务所在组的ID groupId = int(groupId) if groupId < 1: data = {"success": False, "code": 406, 'msg': '未分组应用不可分享'} return JsonResponse(data, status=200) group = tenant_svc.get_tenant_group_on_region_by_id( self.tenant, groupId, self.response_region) if not group: return JsonResponse( { "success": False, "code": 404, 'msg': u"组不存在" }, status=200) service_list = tenant_svc.list_tenant_group_service( self.tenant, group) # appcation 类型的应用和 app_publish类型且language不为None(即image和compose类型)的服务 can_publish_list = [ x for x in service_list if x.category == "application" or ( x.category == "app_publish" and x.language is not None) ] if not can_publish_list: data = { "success": False, "code": 406, 'msg': '此组中的应用全部来源于云市,无法发布' } return JsonResponse(data, status=200) # 判断非云市安装应用是否全部运行中 for s in can_publish_list: body = region_api.check_service_status( s.service_region, self.tenantName, s.service_alias, self.tenant.enterprise_id) status = body["bean"]["cur_status"] if status != "running": data = { "success": False, "code": 412, 'msg': '您的应用{0}未运行。'.format(s.service_cname) } return JsonResponse(data, status=200) next_url = "/apps/{0}/{1}/first/".format(self.tenantName, groupId) data = {"success": False, "code": 200, 'next_url': next_url} return JsonResponse(data, status=200) except Exception as e: logger.exception("group.publish", e)
def stop_group_service(self, tenant, group, operator_name): # 查找祖服务中关联的应用对象 service_list = tenant_svc.list_tenant_group_service(tenant, group) svc_result = [] for service in service_list: status, success, msg = manager.stop_service( service, operator_name, tenant.tenant_id) svc_result.append({ 'service_id': service.service_id, 'status': status, 'success': success, 'msg': msg }) result = {'group_id': group.ID, 'svc_result': svc_result} return result
def restart_group_service(self, tenant, group, operator_name): # 查找祖服务中关联的应用对象 services = tenant_svc.list_tenant_group_service(tenant, group) svc_result = [] for service in services: status, success, msg = self.restart_service( tenant, service, operator_name) svc_result.append({ 'service_id': service.service_id, 'status': status, 'success': success, 'msg': msg }) result = {'group_id': group.ID, 'svc_result': svc_result} return result
def list_tenant_group_service(self, tenant, group): return tenant_svc.list_tenant_group_service(tenant, group)