Beispiel #1
0
 def check_cluster_perm(self):
     res_type = "cluster_prod" if self.data[
         "environment"] == "prod" else "cluster_test"
     perm_cluster = Cluster(self.request,
                            self.project_id,
                            NO_RES,
                            resource_type=res_type)
     perm_cluster.can_create(raise_exception=True)
Beispiel #2
0
 def can_view_cluster(self, request, project_id, cluster_id):
     """has view cluster perm"""
     # when cluster exist, check view perm
     try:
         self.get_cluster(request, project_id, cluster_id)
     except Exception as err:
         logger.error("request cluster info, detial is %s", err)
         return
     cluster_perm = Cluster(request, project_id, cluster_id)
     cluster_perm.can_view(raise_exception=True)
Beispiel #3
0
    def list(self, request, project_id):
        """get project cluster list"""
        cluster_info = self.get_cluster_list(request, project_id)
        cluster_data = cluster_info.get("results") or []
        cluster_node_map = self.cluster_has_node(request, project_id)
        # add allow delete perm
        for info in cluster_data:
            info["environment"] = cluster_env_transfer(info["environment"])
            # allow delete cluster
            allow_delete = False if cluster_node_map.get(info["cluster_id"]) else True
            info["allow"] = info["allow_delete"] = allow_delete
        perm_can_use = True if request.GET.get("perm_can_use") == "1" else False

        self.register_function_controller(cluster_data)

        cluster_results = Cluster.hook_perms(request, project_id, cluster_data, filter_use=perm_can_use)
        # add can create cluster perm for prod/test
        can_create_test, can_create_prod = self.get_cluster_create_perm(request, project_id)

        return response.Response(
            {
                "code": ErrorCode.NoError,
                "data": {"count": len(cluster_results), "results": cluster_results},
                "permissions": {
                    "test": can_create_test,
                    "prod": can_create_prod,
                    "create": can_create_test or can_create_prod,
                },
            }
        )
Beispiel #4
0
    def update(self, request, project_id, cluster_id):
        cluster_perm = Cluster(request, project_id, cluster_id)
        cluster_perm.can_edit(raise_exception=True)
        data = self.get_params(request)
        data = self.update_data(data, project_id, cluster_id, cluster_perm)
        # update cluster info
        with client.ContextActivityLogClient(
            project_id=project_id,
            user=request.user.username,
            resource_type="cluster",
            resource_id=cluster_id,
        ).log_modify():
            cluster_info = self.update_cluster(request, project_id, cluster_id, data)
        # render environment for frontend
        cluster_info["environment"] = cluster_env_transfer(cluster_info["environment"])

        return response.Response(cluster_info)
Beispiel #5
0
 def get_cluster_create_perm(self, request, project_id):
     test_cluster_perm = Cluster(request,
                                 project_id,
                                 cluster_constants.NO_RES,
                                 resource_type="cluster_test")
     can_create_test = test_cluster_perm.can_create(raise_exception=False)
     prod_cluster_perm = Cluster(request,
                                 project_id,
                                 cluster_constants.NO_RES,
                                 resource_type="cluster_prod")
     can_create_prod = prod_cluster_perm.can_create(raise_exception=False)
     return can_create_test, can_create_prod
Beispiel #6
0
    def list(self, request, project_id):
        """get project cluster list
        """
        cluster_info = self.get_cluster_list(request, project_id)
        cluster_data = cluster_info.get('results') or []
        cluster_node_map = self.cluster_has_node(request, project_id)
        # add allow delete perm
        for info in cluster_data:
            info['environment'] = cluster_env_transfer(info['environment'])
            # allow delete cluster
            allow_delete = False if cluster_node_map.get(
                info['cluster_id']) else True
            info['allow'] = info['allow_delete'] = allow_delete
        perm_can_use = True if request.GET.get(
            'perm_can_use') == '1' else False

        cluster_results = Cluster.hook_perms(request,
                                             project_id,
                                             cluster_data,
                                             filter_use=perm_can_use)
        # add disk resource
        try:
            cluster_results = prometheus.fixed_disk_usage(cluster_results)
        except Exception as err:
            logger.error('request prometheus err, detail: %s', err)
        # add can create cluster perm for prod/test
        can_create_test, can_create_prod = self.get_cluster_create_perm(
            request, project_id)

        return response.Response({
            'code': ErrorCode.NoError,
            'data': {
                'count': len(cluster_results),
                'results': cluster_results
            },
            'permissions': {
                'test': can_create_test,
                'prod': can_create_prod,
                'create': can_create_test or can_create_prod
            }
        })
Beispiel #7
0
 def can_view_cluster(self, request, project_id, cluster_id):
     perm = Cluster(request, project_id, cluster_id)
     perm.can_view(raise_exception=True)
Beispiel #8
0
 def check_cluster_perm(self):
     cluster_perm = Cluster(self.request, self.project_id, self.cluster_id)
     cluster_perm.can_delete(raise_exception=True)
Beispiel #9
0
 def register_cluster(self, cluster_info):
     cluster_perm = Cluster(self.request, self.project_id,
                            cluster_info['cluster_id'])
     cluster_perm.register(cluster_info["cluster_id"], cluster_info["name"],
                           cluster_info["environment"])
Beispiel #10
0
 def check_perm(self):
     perm_client = Cluster(self.request, self.project_id, self.cluster_id)
     perm_client.can_edit(raise_exception=True)