Пример #1
0
    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)
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
 def list_tenant_group_service(self, tenant, group):
     return tenant_svc.list_tenant_group_service(tenant, group)