1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-13 06:43:42 +00:00
Files
MeshAgent/DevOps/ProtexAutomation/GetAssociateAndValidateResult/GetAssociateAndValidateResult.java
Ylian Saint-Hilaire 3c80473a94 Major agent update.
2018-09-05 11:01:17 -07:00

220 lines
9.9 KiB
Java

import java.util.List;
import java.io.PrintWriter;
import javax.xml.ws.soap.SOAPFaultException;
import com.blackducksoftware.sdk.codecenter.application.ApplicationApi;
import com.blackducksoftware.sdk.codecenter.application.data.Application;
import com.blackducksoftware.sdk.codecenter.application.data.ApplicationNameVersionOrIdToken;
import com.blackducksoftware.sdk.codecenter.application.data.ApplicationNameVersionToken;
import com.blackducksoftware.sdk.codecenter.client.util.BDSCodeCenterSample;
import com.blackducksoftware.sdk.codecenter.client.util.CodeCenterServerProxyV7_0;
import com.blackducksoftware.sdk.codecenter.cola.ColaApi;
import com.blackducksoftware.sdk.codecenter.cola.data.Component;
import com.blackducksoftware.sdk.codecenter.common.data.ApprovalStatusEnum;
import com.blackducksoftware.sdk.codecenter.request.RequestApi;
import com.blackducksoftware.sdk.codecenter.request.data.Request;
import com.blackducksoftware.sdk.codecenter.request.data.RequestColumn;
import com.blackducksoftware.sdk.codecenter.request.data.RequestPageFilter;
import com.blackducksoftware.sdk.codecenter.request.data.RequestSummary;
//////////////////////////////////////////////////////////////////////////////////////////////////////
//This sample file dis-associates any previous association with Protex project
//and associates with the Project passed in as argument and validates with project
//RETURNS 0 FOR SUCCESS AND 1 FOR FAILURE
//////////////////////////////////////////////////////////////////////////////////////////////////////
public class GetAssociateAndValidateResult extends BDSCodeCenterSample {
private static ApplicationApi appApi = null;
private static void usage() {
System.out.println("Input Parameters:" );
System.out.println("arg[0] - Code Center server URL");
System.out.println("arg[1] - Code Center user ID");
System.out.println("arg[2] - Password");
System.out.println("arg[3] - Application Name");
System.out.println("arg[4] - Output Path without filename");
}
/***************************************************************************************************
* main()
* @param args
* @throws Exception
**************************************************************************************************/
public static void main(String[] args) throws Exception {
// check and save parameters
if (args.length < 5) {
System.err.println("\n\nNot enough parameters!");
usage();
System.exit(1);
}
String serverUri = args[0];
String username = args[1];
String password = args[2];
// Set the attachment Id
String applicationName = args[3];
String Path = args[4];
String outFilePath = "";
String ValidationStatus = "ERROR";
String ApprovalStatus = "UNAPPROVED";
RequestApi requestApi = null;
ColaApi colaApi = null;
try {
Long connectionTimeout = 120 * 1000L;
CodeCenterServerProxyV7_0 myCodeCenterServer = new CodeCenterServerProxyV7_0(serverUri, username, password,
connectionTimeout);
// Try some longer timeouts.
// yes this is a blanket hack
// revisit this later to see if timeouts can be reduced to normal.
appApi = myCodeCenterServer.getApplicationApi();
appApi = myCodeCenterServer.getApplicationApi( 0L ); //workaround from bd. call this twice and use infinite timeout
requestApi = myCodeCenterServer.getRequestApi();
colaApi = myCodeCenterServer.getColaApi();
} catch (RuntimeException e) {
System.err.println("\nConnection to server '" + serverUri + "' failed: " + e.getMessage());
System.exit(1);
}
try {
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// get the application object
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Application thisapp = null;
ApplicationNameVersionToken apptoken = new ApplicationNameVersionToken();
try {
apptoken.setName(applicationName);
apptoken.setVersion("Unspecified");
thisapp = appApi.getApplication(apptoken);
} catch (Exception e) {
try {
apptoken.setVersion("unspecified");
thisapp = appApi.getApplication(apptoken);
} catch (Exception e1) {
System.err.println("get APP " + applicationName + " caught exception : " + e1.getMessage());
System.exit(1);
}
}
if ( null == thisapp ) {
System.err.println("FAILED: to get app for " + applicationName );
System.exit(1);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Read validation status
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ValidationStatus = thisapp.getValidationStatus().toString();
/*if ( validateException || (! ValidationStatus.equals("PASSED")) ) {
System.err.println("Validation status is " + ValidationStatus + " for app " + applicationName );
ValidationStatus = "Unavailable";
}*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Read Application Approval Status
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
List<RequestSummary> requestsList = null;
String ptr_str = "";
RequestPageFilter pageFilter = new RequestPageFilter();
pageFilter.setFirstRowIndex(0);
pageFilter.setLastRowIndex(10);
pageFilter.setSortAscending(false);
pageFilter.setSortedColumn(RequestColumn.REQUEST_APPROVAL_STATUS);
pageFilter.getApprovalStatuses().add(ApprovalStatusEnum.APPROVED);
try {
requestsList = appApi.searchApplicationRequests((ApplicationNameVersionOrIdToken)apptoken, "", pageFilter);
} catch (Exception e) {
System.err.println("getApplicationRequests() failed while fetching the details of the request to be updated: "
+ e.getMessage());
System.exit(-1);
}
if (requestsList == null) {
System.err.println("getApplicationRequests() failed: returned null as result");
System.exit(-1);
}
for (RequestSummary request : requestsList) {
Request thisreq = null;
Component thiscomp = null;
String Name = " ";
try {
thisreq = requestApi.getRequest(request.getId());
} catch (Exception e) {
System.err.println("getRequest failed: "
+ e.getMessage());
System.exit(-1);
}//try....catch
try {
thiscomp = colaApi.getCatalogComponent(request.getComponentId());
} catch (Exception e) {
System.err.println("getCatalogComponent() failed: "
+ e.getMessage());
System.exit(-1);
}//try....catch
try {
Name = thiscomp.getNameVersion().getName().trim();
} catch (Exception e) {
System.err.println("Missing component data : Name, caught exception: " + e.getMessage());
}
if (Name.equals("IP Plan Approval")) {
try {
ApprovalStatus = thisreq.getApprovalStatus().toString();
} catch (Exception e) {
System.err.println("Failed to create request data: ApprovalStatus, caught exception: " + e.getMessage());
}
}
} //for (RequestSummary request : requestsList)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Write the application status in an xml file
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
String OSName = null;
String delimiter = null;
OSName = System.getProperty("os.name");
if (OSName.contains("Windows")) delimiter = "\\";
else delimiter = "/";
outFilePath = Path + delimiter + applicationName + "_CM.xml";
PrintWriter outFile = null;
try {
outFile = new PrintWriter(outFilePath);
} catch (Exception e) {
System.err.println("\nUnable to create output file writer : " + e.getMessage());
System.exit(-1);
}
outFile.println("<ApplicationData>");
outFile.println("<Application>" + applicationName + "</Application>");
outFile.println("<ApprovedStatus>" + ApprovalStatus + "</ApprovedStatus>");
outFile.println("<ValidationStatus>" + ValidationStatus + "</ValidationStatus>");
outFile.println("</ApplicationData>");
outFile.flush();
outFile.close();
System.exit(0);
} catch (SOAPFaultException e) {
System.err.println("GetCodeCenterApplication failed in main: " + e.getMessage());
System.exit(1);
}
}
}