Search in sources :

Example 1 with SrmPutDoneResponse

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

the class SRMV2CopyJob method done.

@Override
public void done(boolean success, String error) {
    synchronized (this) {
        if (isDone) {
            return;
        }
        isDone = true;
    }
    try {
        URI[] surlArray = new URI[] { new URI(surl.toASCIIString()) };
        if (!success) {
            SrmAbortFilesRequest srmAbortFilesRequest = new SrmAbortFilesRequest();
            srmAbortFilesRequest.setRequestToken(requestToken);
            srmAbortFilesRequest.setArrayOfSURLs(new ArrayOfAnyURI(surlArray));
            SrmAbortFilesResponse srmAbortFilesResponse = srm.srmAbortFiles(srmAbortFilesRequest);
            if (srmAbortFilesResponse == null) {
                logger.elog("srmAbortFilesResponse is null");
            } else {
                TReturnStatus returnStatus = srmAbortFilesResponse.getReturnStatus();
                if (returnStatus == null) {
                    logger.elog("srmAbortFiles return status is null");
                } else {
                    logger.log("srmAbortFiles status code=" + returnStatus.getStatusCode());
                }
            }
        } else if (isSrmPrepareToGet) {
            SrmReleaseFilesRequest srmReleaseFilesRequest = new SrmReleaseFilesRequest();
            srmReleaseFilesRequest.setRequestToken(requestToken);
            srmReleaseFilesRequest.setArrayOfSURLs(new ArrayOfAnyURI(surlArray));
            SrmReleaseFilesResponse srmReleaseFilesResponse = srm.srmReleaseFiles(srmReleaseFilesRequest);
            TReturnStatus returnStatus = srmReleaseFilesResponse.getReturnStatus();
            if (returnStatus == null) {
                success = false;
                error = "srmReleaseFilesResponse return status is null";
            } else {
                logger.log("srmReleaseFilesResponse status code=" + returnStatus.getStatusCode());
            }
        } else {
            SrmPutDoneRequest srmPutDoneRequest = new SrmPutDoneRequest();
            srmPutDoneRequest.setRequestToken(requestToken);
            srmPutDoneRequest.setArrayOfSURLs(new ArrayOfAnyURI(surlArray));
            SrmPutDoneResponse srmPutDoneResponse = srm.srmPutDone(srmPutDoneRequest);
            TReturnStatus returnStatus = srmPutDoneResponse.getReturnStatus();
            if (returnStatus == null) {
                success = false;
                error = "srmPutDone return status is null";
            } else if (returnStatus.getStatusCode() != TStatusCode.SRM_SUCCESS) {
                success = false;
                ArrayOfTSURLReturnStatus arrayOfFileStatuses = srmPutDoneResponse.getArrayOfFileStatuses();
                if (arrayOfFileStatuses != null && arrayOfFileStatuses.getStatusArray() != null && arrayOfFileStatuses.getStatusArray().length > 0 && arrayOfFileStatuses.getStatusArray()[0].getStatus().getStatusCode() != TStatusCode.SRM_SUCCESS && !Strings.isNullOrEmpty(arrayOfFileStatuses.getStatusArray()[0].getStatus().getExplanation())) {
                    error = arrayOfFileStatuses.getStatusArray()[0].getStatus().getExplanation();
                } else {
                    error = returnStatus.getExplanation();
                }
            }
        }
    } catch (URI.MalformedURIException | RemoteException e) {
        if (success) {
            success = false;
            error = e.toString();
        } else {
            logger.elog(e.toString());
        }
    } finally {
        if (success) {
            if (isSrmPrepareToGet) {
                client.setReportSucceeded(surl, null);
            } else {
                client.setReportSucceeded(null, surl);
            }
        } else {
            error = "received TURL but failed to copy: " + error;
            if (isSrmPrepareToGet) {
                client.setReportFailed(surl, null, error);
            } else {
                client.setReportFailed(null, surl, error);
            }
        }
    }
}
Also used : SrmAbortFilesRequest(org.dcache.srm.v2_2.SrmAbortFilesRequest) TReturnStatus(org.dcache.srm.v2_2.TReturnStatus) SrmReleaseFilesRequest(org.dcache.srm.v2_2.SrmReleaseFilesRequest) URI(org.apache.axis.types.URI) ArrayOfAnyURI(org.dcache.srm.v2_2.ArrayOfAnyURI) SrmPutDoneRequest(org.dcache.srm.v2_2.SrmPutDoneRequest) SrmReleaseFilesResponse(org.dcache.srm.v2_2.SrmReleaseFilesResponse) SrmPutDoneResponse(org.dcache.srm.v2_2.SrmPutDoneResponse) SrmAbortFilesResponse(org.dcache.srm.v2_2.SrmAbortFilesResponse) ArrayOfTSURLReturnStatus(org.dcache.srm.v2_2.ArrayOfTSURLReturnStatus) RemoteException(java.rmi.RemoteException) ArrayOfAnyURI(org.dcache.srm.v2_2.ArrayOfAnyURI)

Example 2 with SrmPutDoneResponse

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

the class SrmPutDone method getFailedResponse.

public static final SrmPutDoneResponse getFailedResponse(String error, TStatusCode statusCode) {
    SrmPutDoneResponse srmPutDoneResponse = new SrmPutDoneResponse();
    srmPutDoneResponse.setReturnStatus(new TReturnStatus(statusCode, error));
    return srmPutDoneResponse;
}
Also used : TReturnStatus(org.dcache.srm.v2_2.TReturnStatus) SrmPutDoneResponse(org.dcache.srm.v2_2.SrmPutDoneResponse)

Example 3 with SrmPutDoneResponse

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

the class SrmPutDone method srmPutDone.

private SrmPutDoneResponse srmPutDone() throws SRMInvalidRequestException, SRMRequestTimedOutException, SRMAbortedException, SRMInternalErrorException, SRMAuthorizationException {
    URI[] surls = getSurls(request);
    PutRequest putRequest = Request.getRequest(request.getRequestToken(), PutRequest.class);
    try (JDC ignored = putRequest.applyJdc()) {
        putRequest.wlock();
        try {
            if (!user.hasAccessTo(putRequest)) {
                throw new SRMAuthorizationException("User is not the owner of request " + request.getRequestToken() + ".");
            }
            switch(putRequest.getState()) {
                case FAILED:
                    if (putRequest.getStatusCode() == TStatusCode.SRM_REQUEST_TIMED_OUT) {
                        throw new SRMRequestTimedOutException("Total request time exceeded");
                    }
                    break;
                case CANCELED:
                    throw new SRMAbortedException("Request has been aborted.");
            }
            TSURLReturnStatus[] returnStatuses = new TSURLReturnStatus[surls.length];
            for (int i = 0; i < surls.length; ++i) {
                if (surls[i] == null) {
                    throw new SRMInvalidRequestException("SiteURLs[" + (i + 1) + "] is null.");
                }
                TReturnStatus returnStatus;
                try {
                    PutFileRequest fileRequest = putRequest.getFileRequestBySurl(java.net.URI.create(surls[i].toString()));
                    try (JDC ignore = fileRequest.applyJdc()) {
                        returnStatus = fileRequest.done(this.user);
                    }
                } catch (SRMFileRequestNotFoundException e) {
                    returnStatus = new TReturnStatus(TStatusCode.SRM_INVALID_PATH, "File does not exist.");
                }
                returnStatuses[i] = new TSURLReturnStatus(surls[i], returnStatus);
            }
            putRequest.updateStatus();
            return new SrmPutDoneResponse(ReturnStatuses.getSummaryReturnStatus(returnStatuses), new ArrayOfTSURLReturnStatus(returnStatuses));
        } finally {
            putRequest.wunlock();
        }
    }
}
Also used : SRMAuthorizationException(org.dcache.srm.SRMAuthorizationException) TReturnStatus(org.dcache.srm.v2_2.TReturnStatus) SRMFileRequestNotFoundException(org.dcache.srm.SRMFileRequestNotFoundException) JDC(org.dcache.srm.util.JDC) SRMAbortedException(org.dcache.srm.SRMAbortedException) PutRequest(org.dcache.srm.request.PutRequest) ArrayOfAnyURI(org.dcache.srm.v2_2.ArrayOfAnyURI) URI(org.apache.axis.types.URI) SRMRequestTimedOutException(org.dcache.srm.SRMRequestTimedOutException) PutFileRequest(org.dcache.srm.request.PutFileRequest) SrmPutDoneResponse(org.dcache.srm.v2_2.SrmPutDoneResponse) ArrayOfTSURLReturnStatus(org.dcache.srm.v2_2.ArrayOfTSURLReturnStatus) TSURLReturnStatus(org.dcache.srm.v2_2.TSURLReturnStatus) ArrayOfTSURLReturnStatus(org.dcache.srm.v2_2.ArrayOfTSURLReturnStatus) SRMInvalidRequestException(org.dcache.srm.SRMInvalidRequestException)

Example 4 with SrmPutDoneResponse

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

the class RemoteTurlPutterV2 method staticPutDone.

public static void staticPutDone(RequestCredential credential, String surl, String requestToken, long retry_timeout, int retry_num, String caCertificatePath, Transport transport) throws Exception {
    SRMClientV2 srmv2 = new SRMClientV2(URIs.createWithDefaultPort(surl), Optional.of(credential.getDelegatedCredential()), Optional.empty(), retry_timeout, retry_num, false, false, caCertificatePath, transport);
    URI[] surlArray = new URI[1];
    surlArray[0] = new URI(surl);
    SrmPutDoneRequest srmPutDoneRequest = new SrmPutDoneRequest();
    srmPutDoneRequest.setRequestToken(requestToken);
    srmPutDoneRequest.setArrayOfSURLs(new ArrayOfAnyURI(surlArray));
    SrmPutDoneResponse srmPutDoneResponse = srmv2.srmPutDone(srmPutDoneRequest);
    TReturnStatus returnStatus = srmPutDoneResponse.getReturnStatus();
    if (returnStatus == null) {
        LOGGER.error("srmPutDone return status is null");
        return;
    }
    LOGGER.debug("srmPutDone status code={}", returnStatus.getStatusCode());
}
Also used : TReturnStatus(org.dcache.srm.v2_2.TReturnStatus) SrmPutDoneResponse(org.dcache.srm.v2_2.SrmPutDoneResponse) ArrayOfAnyURI(org.dcache.srm.v2_2.ArrayOfAnyURI) URI(org.apache.axis.types.URI) SrmPutDoneRequest(org.dcache.srm.v2_2.SrmPutDoneRequest) ArrayOfAnyURI(org.dcache.srm.v2_2.ArrayOfAnyURI)

Example 5 with SrmPutDoneResponse

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

the class RemoteTurlPutterV2 method putDone.

protected void putDone(String surl) throws RemoteException, URI.MalformedURIException {
    URI[] surlArray = new URI[1];
    SrmPutDoneRequest srmPutDoneRequest = new SrmPutDoneRequest();
    srmPutDoneRequest.setRequestToken(requestToken);
    srmPutDoneRequest.setArrayOfSURLs(new ArrayOfAnyURI(surlArray));
    SrmPutDoneResponse srmPutDoneResponse = srmv2.srmPutDone(srmPutDoneRequest);
    TReturnStatus returnStatus = srmPutDoneResponse.getReturnStatus();
    if (returnStatus == null) {
        LOGGER.error("srmPutDone return status is null");
        return;
    }
    LOGGER.debug("srmPutDone status code={}", returnStatus.getStatusCode());
}
Also used : TReturnStatus(org.dcache.srm.v2_2.TReturnStatus) SrmPutDoneResponse(org.dcache.srm.v2_2.SrmPutDoneResponse) ArrayOfAnyURI(org.dcache.srm.v2_2.ArrayOfAnyURI) URI(org.apache.axis.types.URI) SrmPutDoneRequest(org.dcache.srm.v2_2.SrmPutDoneRequest) ArrayOfAnyURI(org.dcache.srm.v2_2.ArrayOfAnyURI)

Aggregations

SrmPutDoneResponse (org.dcache.srm.v2_2.SrmPutDoneResponse)5 TReturnStatus (org.dcache.srm.v2_2.TReturnStatus)5 URI (org.apache.axis.types.URI)4 ArrayOfAnyURI (org.dcache.srm.v2_2.ArrayOfAnyURI)4 SrmPutDoneRequest (org.dcache.srm.v2_2.SrmPutDoneRequest)3 ArrayOfTSURLReturnStatus (org.dcache.srm.v2_2.ArrayOfTSURLReturnStatus)2 RemoteException (java.rmi.RemoteException)1 SRMAbortedException (org.dcache.srm.SRMAbortedException)1 SRMAuthorizationException (org.dcache.srm.SRMAuthorizationException)1 SRMFileRequestNotFoundException (org.dcache.srm.SRMFileRequestNotFoundException)1 SRMInvalidRequestException (org.dcache.srm.SRMInvalidRequestException)1 SRMRequestTimedOutException (org.dcache.srm.SRMRequestTimedOutException)1 PutFileRequest (org.dcache.srm.request.PutFileRequest)1 PutRequest (org.dcache.srm.request.PutRequest)1 JDC (org.dcache.srm.util.JDC)1 SrmAbortFilesRequest (org.dcache.srm.v2_2.SrmAbortFilesRequest)1 SrmAbortFilesResponse (org.dcache.srm.v2_2.SrmAbortFilesResponse)1 SrmReleaseFilesRequest (org.dcache.srm.v2_2.SrmReleaseFilesRequest)1 SrmReleaseFilesResponse (org.dcache.srm.v2_2.SrmReleaseFilesResponse)1 TSURLReturnStatus (org.dcache.srm.v2_2.TSURLReturnStatus)1