blob: e35000d78b8aede1d50ce963c47b9b281799e296 [file]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package org.apache.cloudstack.acl;
import java.util.List;
import org.apache.cloudstack.api.command.admin.acl.project.CreateProjectRolePermissionCmd;
import org.apache.cloudstack.acl.RolePermissionEntity.Permission;
public interface ProjectRoleService {
/**
* Creates a Project role in a Project to be mapped to a user/ account (all users of an account)
* @param projectId ID of the project where the project role is to be created
* @param name Name of the project role
* @param description description provided for the project role
* @return the Instance of the project role created
*/
ProjectRole createProjectRole(Long projectId, String name, String description);
/**
* Updates a Project role created
* @param role Project role reference to be updated
* @param projectId ID of the project where the Project role exists
* @param name new name to be given to the project role
* @param description description for the project role
* @return the updated instance of the project role
*/
ProjectRole updateProjectRole(ProjectRole role, Long projectId, String name, String description);
/**
*
* @param projectId ID of the project in which the project role is to be searched for
* @param roleName name/ part of a project role name
* @return List of Project roles matching the given name in the project
*/
List<ProjectRole> findProjectRolesByName(Long projectId, String roleName);
/**
*
* @param role Project role to be deleted
* @param projectId ID of the project where the role is present
* @return success/failure of the delete operation
*/
boolean deleteProjectRole(ProjectRole role, Long projectId);
/**
* Determines if Dynamic Roles feature is enabled , if it isn't then the project roles will not be applied
*/
boolean isEnabled();
/**
*
* @param roleId Project role ID which needs to be found
* @param projectId ID of the project where the role is to be found
* @return the corresponding project role
*/
ProjectRole findProjectRole(Long roleId, Long projectId);
/**
*
* @param projectId ID of the project whosr project roles are to be listed
* @param keyword
* @return List of all available project roles
*/
List<ProjectRole> findProjectRoles(Long projectId, String keyword);
/**
* Creates a project role permission to be mapped to a project role.
* All accounts/users mapped to this project role will impose restrictions on API access
* to users based on the project role. This is to further limit restrictions on users in projects
*/
ProjectRolePermission createProjectRolePermission(CreateProjectRolePermissionCmd cmd);
/**
* Updates the order of the project role permission
* @param projectId ID of the project where the project role permission exists
* @param projectRole project role to which the permission is mapped to
* @param rolePermissionsOrder re-arranged order of permissions
* @return success/failure of operation
*/
boolean updateProjectRolePermission(Long projectId, ProjectRole projectRole, List<ProjectRolePermission> rolePermissionsOrder);
/**
*
* Updates the permission of the project role permission
*/
boolean updateProjectRolePermission(Long projectId, ProjectRole projectRole, ProjectRolePermission projectRolePermission, Permission newPermission);
/**
* Finds the project role permission for the given ID
*/
ProjectRolePermission findProjectRolePermission(final Long projRolePermissionId);
/**
* deletes the given project role
*/
boolean deleteProjectRolePermission(ProjectRolePermission projectRolePermission);
/**
* returns list of all project role permissions mapped to the requested project role
*/
List<ProjectRolePermission> findAllProjectRolePermissions(Long projectId, Long projectRoleId);
}