Search in sources :

Example 1 with TPermissionReturn

use of org.dcache.srm.v2_2.TPermissionReturn in project dcache by dCache.

the class SrmGetPermission method srmGetPermission.

private SrmGetPermissionResponse srmGetPermission() throws SRMInvalidRequestException, SRMInternalErrorException {
    org.apache.axis.types.URI[] surls = request.getArrayOfSURLs().getUrlArray();
    if (surls == null || surls.length == 0) {
        throw new SRMInvalidRequestException("arrayOfSURLs is empty");
    }
    int length = surls.length;
    TPermissionReturn[] permissionsArray = new TPermissionReturn[length];
    boolean hasFailure = false;
    boolean hasSuccess = false;
    for (int i = 0; i < length; i++) {
        TPermissionReturn p = new TPermissionReturn();
        TReturnStatus returnStatus;
        try {
            FileMetaData fmd = storage.getFileMetaData(user, URI.create(surls[i].toString()), false);
            copyPermissions(fmd, p);
            returnStatus = new TReturnStatus(TStatusCode.SRM_SUCCESS, null);
            hasSuccess = true;
        } catch (SRMInternalErrorException e) {
            throw e;
        } catch (SRMAuthorizationException e) {
            returnStatus = new TReturnStatus(TStatusCode.SRM_AUTHORIZATION_FAILURE, e.getMessage());
            hasFailure = true;
        } catch (SRMInvalidPathException e) {
            returnStatus = new TReturnStatus(TStatusCode.SRM_INVALID_PATH, e.getMessage());
            hasFailure = true;
        } catch (SRMException e) {
            LOGGER.warn(e.toString());
            returnStatus = new TReturnStatus(TStatusCode.SRM_FAILURE, e.getMessage());
            hasFailure = true;
        }
        p.setSurl(surls[i]);
        p.setStatus(returnStatus);
        permissionsArray[i] = p;
    }
    return new SrmGetPermissionResponse(getSummaryReturnStatus(hasFailure, hasSuccess), new ArrayOfTPermissionReturn(permissionsArray));
}
Also used : SRMAuthorizationException(org.dcache.srm.SRMAuthorizationException) TReturnStatus(org.dcache.srm.v2_2.TReturnStatus) SrmGetPermissionResponse(org.dcache.srm.v2_2.SrmGetPermissionResponse) SRMInvalidPathException(org.dcache.srm.SRMInvalidPathException) URI(java.net.URI) TPermissionReturn(org.dcache.srm.v2_2.TPermissionReturn) ArrayOfTPermissionReturn(org.dcache.srm.v2_2.ArrayOfTPermissionReturn) ArrayOfTPermissionReturn(org.dcache.srm.v2_2.ArrayOfTPermissionReturn) SRMInternalErrorException(org.dcache.srm.SRMInternalErrorException) SRMException(org.dcache.srm.SRMException) SRMInvalidRequestException(org.dcache.srm.SRMInvalidRequestException) FileMetaData(org.dcache.srm.FileMetaData)

Example 2 with TPermissionReturn

use of org.dcache.srm.v2_2.TPermissionReturn in project dcache by dCache.

the class SRMGetPermissionClientV2 method start.

@Override
public void start() throws Exception {
    checkCredentialValid();
    ArrayOfAnyURI surlarray = new ArrayOfAnyURI();
    URI[] uriarray = new URI[surl_string.length];
    URI uri;
    for (int i = 0; i < uriarray.length; i++) {
        uri = new URI(surl_string[i]);
        uriarray[i] = uri;
    }
    surlarray.setUrlArray(uriarray);
    SrmGetPermissionRequest req = new SrmGetPermissionRequest();
    req.setArrayOfSURLs(surlarray);
    configuration.getStorageSystemInfo().ifPresent(req::setStorageSystemInfo);
    SrmGetPermissionResponse resp = srm.srmGetPermission(req);
    TReturnStatus rs = resp.getReturnStatus();
    ArrayOfTPermissionReturn permissions = resp.getArrayOfPermissionReturns();
    TPermissionReturn[] permissionarray = null;
    if (permissions != null) {
        permissionarray = permissions.getPermissionArray();
    }
    if (rs.getStatusCode() != TStatusCode.SRM_SUCCESS) {
        TStatusCode rc = rs.getStatusCode();
        StringBuilder sb = new StringBuilder();
        sb.append("Return code: ").append(rc.toString()).append("\n");
        sb.append("Explanation: ").append(rs.getExplanation()).append("\n");
        System.out.println(sb.toString());
    }
    StringBuilder txt = new StringBuilder();
    if (permissionarray == null) {
        txt.append("permissions array is null\n");
        System.out.println(txt.toString());
        System.exit(1);
    }
    for (TPermissionReturn permission : permissionarray) {
        txt.append("# file  : ").append(permission.getSurl()).append("\n");
        if (rs.getStatusCode() != TStatusCode.SRM_SUCCESS) {
            txt.append("Return code: ").append(permission.getStatus().getStatusCode().toString()).append("\n");
            txt.append("Explanation: ").append(permission.getStatus().getExplanation()).append("\n");
            if (permission.getStatus().getStatusCode() != TStatusCode.SRM_SUCCESS) {
                continue;
            }
        }
        txt.append("# owner : ").append(permission.getOwner()).append("\n");
        txt.append("owner:").append(permission.getOwner()).append(":").append(permission.getOwnerPermission().toString()).append("\n");
        ArrayOfTUserPermission arrayOfUserPermissions = permission.getArrayOfUserPermissions();
        if (arrayOfUserPermissions != null) {
            TUserPermission[] userPermissionArray = arrayOfUserPermissions.getUserPermissionArray();
            if (userPermissionArray != null) {
                for (TUserPermission upr : userPermissionArray) {
                    if (upr != null) {
                        txt.append("user:").append(upr.getUserID()).append(":").append(upr.getMode().toString()).append("\n");
                    }
                }
            }
        }
        ArrayOfTGroupPermission arrayOfGroupPermissions = permission.getArrayOfGroupPermissions();
        if (arrayOfGroupPermissions != null) {
            TGroupPermission[] groupPermissionArray = arrayOfGroupPermissions.getGroupPermissionArray();
            if (groupPermissionArray != null) {
                for (TGroupPermission upr : groupPermissionArray) {
                    if (upr != null) {
                        txt.append("group:").append(upr.getGroupID()).append(":").append(upr.getMode().toString()).append("\n");
                    }
                }
            }
        }
        txt.append("other:").append(permission.getOtherPermission().toString()).append("\n");
    }
    System.out.println(txt.toString());
    if (rs.getStatusCode() != TStatusCode.SRM_SUCCESS) {
        System.exit(1);
    } else {
        System.exit(0);
    }
}
Also used : SrmGetPermissionRequest(org.dcache.srm.v2_2.SrmGetPermissionRequest) SrmGetPermissionResponse(org.dcache.srm.v2_2.SrmGetPermissionResponse) TReturnStatus(org.dcache.srm.v2_2.TReturnStatus) ArrayOfTUserPermission(org.dcache.srm.v2_2.ArrayOfTUserPermission) ArrayOfTUserPermission(org.dcache.srm.v2_2.ArrayOfTUserPermission) TUserPermission(org.dcache.srm.v2_2.TUserPermission) URI(org.apache.axis.types.URI) ArrayOfAnyURI(org.dcache.srm.v2_2.ArrayOfAnyURI) TStatusCode(org.dcache.srm.v2_2.TStatusCode) ArrayOfTPermissionReturn(org.dcache.srm.v2_2.ArrayOfTPermissionReturn) TPermissionReturn(org.dcache.srm.v2_2.TPermissionReturn) ArrayOfTPermissionReturn(org.dcache.srm.v2_2.ArrayOfTPermissionReturn) ArrayOfTGroupPermission(org.dcache.srm.v2_2.ArrayOfTGroupPermission) TGroupPermission(org.dcache.srm.v2_2.TGroupPermission) ArrayOfTGroupPermission(org.dcache.srm.v2_2.ArrayOfTGroupPermission) ArrayOfAnyURI(org.dcache.srm.v2_2.ArrayOfAnyURI)

Example 3 with TPermissionReturn

use of org.dcache.srm.v2_2.TPermissionReturn in project dcache by dCache.

the class AxisSrmFileSystem method getPermissions.

@Nonnull
@Override
public TPermissionReturn[] getPermissions(URI... surls) throws RemoteException, SRMException {
    checkArgument(surls.length > 0);
    SrmGetPermissionResponse response = srm.srmGetPermission(new SrmGetPermissionRequest(null, new ArrayOfAnyURI(surls), null));
    TPermissionReturn[] permissionArray = response.getArrayOfPermissionReturns().getPermissionArray();
    if (permissionArray == null || permissionArray.length == 0) {
        checkSuccess(response.getReturnStatus(), TStatusCode.SRM_SUCCESS, TStatusCode.SRM_PARTIAL_SUCCESS);
        throw new SrmProtocolException("Server reply lacks permission array.");
    }
    checkSuccess(response.getReturnStatus(), TStatusCode.SRM_SUCCESS, TStatusCode.SRM_PARTIAL_SUCCESS, TStatusCode.SRM_FAILURE);
    // Simplify things for the caller
    for (TPermissionReturn permission : permissionArray) {
        if (permission.getArrayOfUserPermissions() == null) {
            permission.setArrayOfUserPermissions(new ArrayOfTUserPermission());
        }
        if (permission.getArrayOfUserPermissions().getUserPermissionArray() == null) {
            permission.getArrayOfUserPermissions().setUserPermissionArray(new TUserPermission[0]);
        }
        if (permission.getArrayOfGroupPermissions() == null) {
            permission.setArrayOfGroupPermissions(new ArrayOfTGroupPermission());
        }
        if (permission.getArrayOfGroupPermissions().getGroupPermissionArray() == null) {
            permission.getArrayOfGroupPermissions().setGroupPermissionArray(new TGroupPermission[0]);
        }
    }
    return permissionArray;
}
Also used : SrmGetPermissionRequest(org.dcache.srm.v2_2.SrmGetPermissionRequest) SrmGetPermissionResponse(org.dcache.srm.v2_2.SrmGetPermissionResponse) ArrayOfTUserPermission(org.dcache.srm.v2_2.ArrayOfTUserPermission) ArrayOfTGroupPermission(org.dcache.srm.v2_2.ArrayOfTGroupPermission) ArrayOfAnyURI(org.dcache.srm.v2_2.ArrayOfAnyURI) TPermissionReturn(org.dcache.srm.v2_2.TPermissionReturn) Nonnull(javax.annotation.Nonnull)

Example 4 with TPermissionReturn

use of org.dcache.srm.v2_2.TPermissionReturn in project dcache by dCache.

the class SrmGetPermission method copyPermissions.

private static void copyPermissions(FileMetaData fmd, TPermissionReturn p) {
    String owner = fmd.owner;
    String group = fmd.group;
    int permissions = fmd.permMode;
    TPermissionMode upm = PermissionMaskToTPermissionMode.maskToTPermissionMode(((permissions >> 6) & 0x7));
    TPermissionMode gpm = PermissionMaskToTPermissionMode.maskToTPermissionMode(((permissions >> 3) & 0x7));
    TPermissionMode opm = PermissionMaskToTPermissionMode.maskToTPermissionMode((permissions & 0x7));
    TGroupPermission[] groupPermissionArray = new TGroupPermission[] { new TGroupPermission(group, gpm) };
    p.setArrayOfGroupPermissions(new ArrayOfTGroupPermission(groupPermissionArray));
    p.setOwnerPermission(upm);
    p.setOtherPermission(opm);
    p.setOwner(owner);
}
Also used : TGroupPermission(org.dcache.srm.v2_2.TGroupPermission) ArrayOfTGroupPermission(org.dcache.srm.v2_2.ArrayOfTGroupPermission) ArrayOfTGroupPermission(org.dcache.srm.v2_2.ArrayOfTGroupPermission) TPermissionMode(org.dcache.srm.v2_2.TPermissionMode)

Aggregations

ArrayOfTGroupPermission (org.dcache.srm.v2_2.ArrayOfTGroupPermission)3 SrmGetPermissionResponse (org.dcache.srm.v2_2.SrmGetPermissionResponse)3 TPermissionReturn (org.dcache.srm.v2_2.TPermissionReturn)3 ArrayOfAnyURI (org.dcache.srm.v2_2.ArrayOfAnyURI)2 ArrayOfTPermissionReturn (org.dcache.srm.v2_2.ArrayOfTPermissionReturn)2 ArrayOfTUserPermission (org.dcache.srm.v2_2.ArrayOfTUserPermission)2 SrmGetPermissionRequest (org.dcache.srm.v2_2.SrmGetPermissionRequest)2 TGroupPermission (org.dcache.srm.v2_2.TGroupPermission)2 TReturnStatus (org.dcache.srm.v2_2.TReturnStatus)2 URI (java.net.URI)1 Nonnull (javax.annotation.Nonnull)1 URI (org.apache.axis.types.URI)1 FileMetaData (org.dcache.srm.FileMetaData)1 SRMAuthorizationException (org.dcache.srm.SRMAuthorizationException)1 SRMException (org.dcache.srm.SRMException)1 SRMInternalErrorException (org.dcache.srm.SRMInternalErrorException)1 SRMInvalidPathException (org.dcache.srm.SRMInvalidPathException)1 SRMInvalidRequestException (org.dcache.srm.SRMInvalidRequestException)1 TPermissionMode (org.dcache.srm.v2_2.TPermissionMode)1 TStatusCode (org.dcache.srm.v2_2.TStatusCode)1