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)
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)
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, }, } )
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)
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
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 } })
def can_view_cluster(self, request, project_id, cluster_id): perm = Cluster(request, project_id, cluster_id) perm.can_view(raise_exception=True)
def check_cluster_perm(self): cluster_perm = Cluster(self.request, self.project_id, self.cluster_id) cluster_perm.can_delete(raise_exception=True)
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"])
def check_perm(self): perm_client = Cluster(self.request, self.project_id, self.cluster_id) perm_client.can_edit(raise_exception=True)