[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-8562?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15241733#comment-15241733
 ] 

ASF GitHub Bot commented on CLOUDSTACK-8562:
--------------------------------------------

Github user bhaisaab commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1489#discussion_r59773107
  
    --- Diff: api/src/org/apache/cloudstack/acl/RoleType.java ---
    @@ -16,18 +16,90 @@
     // under the License.
     package org.apache.cloudstack.acl;
     
    +import com.cloud.user.Account;
    +import com.google.common.base.Enums;
    +import com.google.common.base.Strings;
    +
     // Enum for default roles in CloudStack
     public enum RoleType {
    -    Admin(1), ResourceAdmin(2), DomainAdmin(4), User(8), Unknown(0);
    +    Admin(1L, Account.ACCOUNT_TYPE_ADMIN, 1),
    +    ResourceAdmin(2L, Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN, 2),
    +    DomainAdmin(3L, Account.ACCOUNT_TYPE_DOMAIN_ADMIN, 4),
    +    User(4L, Account.ACCOUNT_TYPE_NORMAL, 8),
    +    Unknown(-1L, (short) -1, 0);
     
    +    private long id;
    +    private short accountType;
         private int mask;
     
    -    private RoleType(int mask) {
    +    RoleType(final long id, final short accountType, final int mask) {
    +        this.id = id;
    +        this.accountType = accountType;
             this.mask = mask;
         }
     
    -    public int getValue() {
    +    public long getId() {
    +        return id;
    +    }
    +
    +    public short getAccountType() {
    +        return accountType;
    +    }
    +
    +    public int getMask() {
             return mask;
         }
    -}
     
    +    public static RoleType fromString(final String name) {
    +        if (!Strings.isNullOrEmpty(name)
    +                && Enums.getIfPresent(RoleType.class, name).isPresent()) {
    +            return RoleType.valueOf(name);
    +        }
    +        return null;
    +    }
    +
    +    public static RoleType fromMask(int mask) {
    +        for (RoleType roleType : RoleType.values()) {
    +            if (roleType.getMask() == mask) {
    +                return roleType;
    +            }
    +        }
    +        return Unknown;
    +    }
    +
    +    public static RoleType getByAccountType(final short accountType) {
    +        RoleType roleType = RoleType.Unknown;
    +        switch (accountType) {
    +            case Account.ACCOUNT_TYPE_ADMIN:
    +                roleType = RoleType.Admin;
    +                break;
    +            case Account.ACCOUNT_TYPE_DOMAIN_ADMIN:
    +                roleType = RoleType.DomainAdmin;
    +                break;
    +            case Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN:
    +                roleType = RoleType.ResourceAdmin;
    --- End diff --
    
    All four default cloudstack roles -- Admin, DomainAdmin, ResourceAdmin and 
User. It's just an enum class, that maps these role types to account types. 
This method previously existed in account mgr impl, I moved it here.
    They've always existed. I could not find a previous FS on this, this is the 
oldest document on wiki referring to RoleTypes 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Annotations+use+in+the+API


> User Definable Roles
> --------------------
>
>                 Key: CLOUDSTACK-8562
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-8562
>             Project: CloudStack
>          Issue Type: New Feature
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: Management Server
>            Reporter: Paul Angus
>            Assignee: Rohit Yadav
>
> Static command.properties moved to database and made user definable



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to