//______________________________________________________________________________ // // $Id$ // $Author$ // // created 10/07 by Dmitry Litvintsev (litvinse@fnal.gov) // //______________________________________________________________________________ package gov.fnal.srm.util; import eu.emi.security.authn.x509.X509Credential; import java.io.IOException; import java.util.Date; import org.dcache.srm.client.SRMClientV2; import org.dcache.srm.util.RequestStatusTool; import org.dcache.srm.v2_2.ArrayOfString; import org.dcache.srm.v2_2.ArrayOfTRequestSummary; import org.dcache.srm.v2_2.ISRM; import org.dcache.srm.v2_2.SrmGetRequestSummaryRequest; import org.dcache.srm.v2_2.SrmGetRequestSummaryResponse; import org.dcache.srm.v2_2.TRequestSummary; import org.dcache.srm.v2_2.TRequestType; import org.dcache.srm.v2_2.TReturnStatus; public class SRMGetRequestSummaryClientV2 extends SRMClient { private java.net.URI srmURL; private X509Credential credential; private ISRM srmv2; public SRMGetRequestSummaryClientV2(Configuration configuration, java.net.URI url) { super(configuration); srmURL=url; try { credential = getCredential(); } catch (Exception e) { credential = null; System.err.println("Couldn't getGssCredential."); } } @Override public void connect() throws Exception { srmv2 = new SRMClientV2(srmURL, getCredential(), configuration.getRetry_timeout(), configuration.getRetry_num(), doDelegation, fullDelegation, gss_expected_name, configuration.getWebservice_path(), configuration.getX509_user_trusted_certificates(), configuration.getTransport()); } @Override public void start() throws Exception { if (credential.getCertificate().getNotAfter().before(new Date())) { throw new RuntimeException("credentials have expired"); } try { String[] tokens = configuration.getArrayOfRequestTokens(); SrmGetRequestSummaryRequest request = new SrmGetRequestSummaryRequest(); request.setArrayOfRequestTokens(new ArrayOfString(tokens)); SrmGetRequestSummaryResponse response = srmv2.srmGetRequestSummary(request); if ( response == null ) { throw new IOException(" null SrmGetRequestSummaryResponse "); } TReturnStatus rs = response.getReturnStatus(); if ( rs == null) { throw new IOException(" null TReturnStatus "); } if (response.getArrayOfRequestSummaries()!=null) { ArrayOfTRequestSummary summaries = response.getArrayOfRequestSummaries(); if (summaries.getSummaryArray()!=null) { for (int i=0;i<summaries.getSummaryArray().length;i++){ TRequestSummary summary = summaries.getSummaryArray(i); if (summary != null) { TReturnStatus st = summary.getStatus(); TRequestType type = summary.getRequestType(); System.out.println("\tRequest number : "+summary.getRequestToken()); System.out.println("\t Request type : "+(type!=null ? type.getValue() : "UNKNOWN")); System.out.println("\t Return status"); System.out.println("\t\t Status code : "+(st!=null ? st.getStatusCode() : "null")); System.out.println("\t\t Explanation : "+(st!=null ? st.getExplanation() : "null")); System.out.println("\tTotal # of files: "+summary.getTotalNumFilesInRequest()); System.out.println("\t completed files: "+summary.getNumOfCompletedFiles()); System.out.println("\t waiting files: "+summary.getNumOfWaitingFiles()); System.out.println("\t failed files: "+summary.getNumOfFailedFiles()); } } } } if (RequestStatusTool.isFailedRequestStatus(rs)) { throw new IOException("srmGetRequestSummary failed, unexpected or failed return status : "+ rs.getStatusCode()+" explanation="+rs.getExplanation()); } } catch(Exception e) { throw e; } } }