Browse Source

Merge branch 'exception_work' into 'main'

Exception work

See merge request pct-security/covscanrest!5
local_dev_fixes
Nicholas Caughey 3 years ago
parent
commit
f7853db788
  1. 63
      src/main/java/rest/CreateScanRequest.java
  2. 32
      src/main/java/rest/CreateScanResource.java
  3. 92
      src/main/java/rest/CreateStartScan.java
  4. 56
      src/main/java/rest/StoreData.java
  5. 20
      src/main/java/rest/TektonResourceClient.java
  6. 175
      src/main/java/rest/TektonTaskCreate.java
  7. 116
      src/main/java/rest/callTekton.java
  8. 16
      src/main/resources/baseScan.yml

63
src/main/java/rest/CreateScanRequest.java

@ -58,38 +58,45 @@ public class CreateScanRequest {
@POST @POST
@Path("/git") @Path("/git")
@Consumes({ "application/json" }) @Consumes({ "application/json" })
public GitObj invokeGitScanAnalyze(@Valid String scanInvocation)throws JSONException { public void invokeGitScanAnalyze(@Valid String scanInvocation)throws URISyntaxException {
JSONObject jsonData = new JSONObject(scanInvocation); throw new UnsupportedOperationException("unImplemented fucntionality");
GitObj gitObj = GitObjPayload.constructScanPayload(jsonData);
ConnectDB connectDB = new ConnectDB(); // JSONObject jsonData = new JSONObject(scanInvocation);
try(Connection conn = connectDB.connect(); // GitObj gitObj = GitObjPayload.constructScanPayload(jsonData);
PreparedStatement pstmt = conn.prepareStatement(GitObj.SQL)) {
pstmt.setString(1, gitObj.getBuildSystemType()); // ConnectDB connectDB = new ConnectDB();
pstmt.setString(2, gitObj.getRepository()); // Connection conn = connectDB.connect();
pstmt.setString(3, gitObj.getReference()); // Statement stmt = null;
pstmt.setString(4, gitObj.getCommitId()); // String sql = "INSERT INTO gitscans (buildsystemtype, repository, reference, commitid) VALUES ('"+gitObj.buildSystemType+"','"+gitObj.repository+"','"+gitObj.reference+"','"+gitObj.commitId+"')";
pstmt.executeUpdate(); // try{
} catch (SQLException e) { // stmt = conn.createStatement();
logger.error(e.getMessage()); // ResultSet rs = stmt.executeQuery(sql);
} // conn.close();
return gitObj; // } catch (SQLException e){
// System.out.println(e);
// }
// return gitObj;
} }
@POST @POST
@Path("/pnc") @Path("/pnc")
@Consumes({ "application/json" }) @Consumes({ "application/json" })
public PncObj invokePncScanAnalyze(@Valid String scanInvocation)throws JSONException { public void invokePncScanAnalyze(@Valid String scanInvocation)throws URISyntaxException {
JSONObject jsonData = new JSONObject(scanInvocation); throw new UnsupportedOperationException("unImplemented fucntionality");
PncObj pncObj = PncObjPayload.constructScanPayload(jsonData); // JSONObject jsonData = new JSONObject(scanInvocation);
ConnectDB connectDB = new ConnectDB(); // PncObj pncObj = PncObjPayload.constructScanPayload(jsonData);
try(Connection conn = connectDB.connect();
PreparedStatement pstmt = conn.prepareStatement(PncObj.SQL)) { // ConnectDB connectDB = new ConnectDB();
pstmt.setString(1, pncObj.getBuildSystemType()); // Connection conn = connectDB.connect();
pstmt.setString(2, pncObj.getBuildId()); // Statement stmt = null;
pstmt.executeUpdate(); // String sql = "INSERT INTO pncscans (buildsystemtype, buildid) VALUES ('"+pncObj.buildSystemType+"','"+pncObj.buildId+"')";
} catch (SQLException e) { // try{
logger.error(e.getMessage()); // stmt = conn.createStatement();
} // ResultSet rs = stmt.executeQuery(sql);
return pncObj; // conn.close();
// } catch (SQLException e){
// System.out.println(e);
// }
// return pncObj;
} }
} }

32
src/main/java/rest/CreateScanResource.java

@ -32,21 +32,21 @@ public class CreateScanResource {
@POST @POST
@Consumes({ "application/json" }) @Consumes({ "application/json" })
//in theory should take List<String> to clean it up //in theory should take List<String> to clean it up
public ScanObj invokeScanAnalyze(@Valid String scanInvocation) throws JSONException { public void invokeScanAnalyze(@Valid String scanInvocation) throws URISyntaxException {
JSONObject jsonData = new JSONObject(scanInvocation); throw new UnsupportedOperationException("unImplemented fucntionality");
ScanObj scanObj = ScanObjPayload.constructScanPayload(jsonData); // JSONObject jsonData = new JSONObject(scanInvocation);
ConnectDB connectDB = new ConnectDB(); // ScanObj scanObj = ScanObjPayload.constructScanPayload(jsonData);
try(Connection conn = connectDB.connect(); // ConnectDB connectDB = new ConnectDB();
PreparedStatement pstmt = conn.prepareStatement(ScanObj.SQL)) { // Connection conn = connectDB.connect();
pstmt.setString(1, scanObj.getScanId()); // Statement stmt = null;
pstmt.setString(2, scanObj.getProductId()); // String sql = "INSERT INTO scans (scanid, productid, eventid, ismanagedservice, componentlist) VALUES ('" +scanObj.scanId+"', '"+scanObj.productId+"', '"+scanObj.eventId+"', '"+scanObj.isManagedService+"', '"+scanObj.componentList+"')";
pstmt.setString(3, scanObj.getEventId()); // try{
pstmt.setString(4, scanObj.getIsManagedService()); // stmt = conn.createStatement();
pstmt.setString(5, scanObj.getComponentList()); // ResultSet rs = stmt.executeQuery(sql);
pstmt.executeUpdate(); // conn.close();
} catch (SQLException e) { // } catch (SQLException e){
logger.error(e.getMessage()); // System.out.println(e);
} // }
return scanObj; // return scanObj;
} }
} }

92
src/main/java/rest/CreateStartScan.java

@ -28,71 +28,37 @@ public class CreateStartScan {
@PUT @PUT
@Path("/{scanId}") @Path("/{scanId}")
public ScanObj invokeScanAnalyze(@PathParam("scanId") String scanId) { public void invokeScanAnalyze(@PathParam("scanId") String scanId) throws URISyntaxException {
ScanObj finalScan = null; throw new UnsupportedOperationException("unImplemented fucntionality");
ConnectDB connectDB = new ConnectDB(); // ConnectDB connectDB = new ConnectDB();
try (Connection conn = connectDB.connect()) { // Connection conn = connectDB.connect();
finalScan = selectDataForArchiving(conn, scanId); // //this is ugly needs to berewritten
if (finalScan != null) { // Statement stmt = null;
archiveSelectedScans(conn, finalScan); // ScanObj finalScan = null;
postArchivingCleanup(conn, scanId);
} else {
logger.warn("No data match found for scan ID=" + scanId);
}
} catch (SQLException e) {
logger.error(e.getMessage());
}
return finalScan;
}
private ScanObj selectDataForArchiving(Connection conn, String scanId) {
ScanObj finalScan = null;
String sql = "SELECT * FROM scans WHERE scan_id=?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, scanId);
ResultSet rs = pstmt.executeQuery();
// TODO: need to add unique keys to DBs // String sql = "SELECT * FROM scans WHERE scanid=" + scanId;
// fix for individual results (not resultset) // //need to add figure out an archieve system and wether its nessacery (archieve value??)
finalScan = new ScanObj( // try{
rs.getString("scan_id"), // stmt = conn.createStatement();
rs.getString("offering_id"), // //terrible solution has to be a better way of doing this
rs.getString("event_id"), // ResultSet rs = stmt.executeQuery(sql);
rs.getString("is_managed_service"),
rs.getString("component_list")); // //fix for individual results (not resultset)
} catch (SQLException e) { // //TODO: need to add unique keys to DBs
logger.error(e.getMessage()); // finalScan = new ScanObj(rs.getString("scanid"),rs.getString("productid"),rs.getString("eventid"),rs.getString("ismanagedservice"),rs.getString("componentlist"));
} // String copySql = "INSERT INTO archive (scanid, productid, eventid, ismanagedservice, componentlist) VALUES ('" +finalScan.scanId+"', '"+finalScan.productId+"', '"+finalScan.eventId+"', '"+finalScan.isManagedService+"', '"+finalScan.componentList+"')";
return finalScan; // stmt.executeUpdate(copySql);
}
private void archiveSelectedScans(Connection conn, ScanObj finalScan) {
String sql = "INSERT INTO archive " +
"(scan_id, offering_id, event_id, is_managed_service, component_list) " +
"VALUES (? ? ? ? ?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, finalScan.getScanId());
pstmt.setString(2, finalScan.getProductId());
pstmt.setString(3, finalScan.getEventId());
pstmt.setString(4, finalScan.getIsManagedService());
pstmt.setString(5, finalScan.getComponentList());
pstmt.executeUpdate();
} catch (SQLException e) {
logger.error(e.getMessage());
}
}
private void postArchivingCleanup(Connection conn, String scanId) { // //TODO add proper checks
// TODO add proper checks // String deleteSql = "DELETE FROM scans WHERE scanid=" + scanId;
// send task to the actual interface here using the resultset returned (should multiple scanids be allowed): // stmt.executeUpdate(deleteSql);
// once the task is complete AND we have confirmation that the scan is done run the following sql
String sql = "DELETE FROM scans WHERE scan_id=?"; // //send task to the actual interface here using the resultset returned (should multiple scanids be allowed):
try (PreparedStatement pstmt = conn.prepareStatement(sql)) { // //once the task is complete AND we have confirmation that the scan is done run the following sql
pstmt.setString(1, scanId); // conn.close();
pstmt.executeUpdate(); // } catch (SQLException e){
} catch (SQLException e) { // System.out.println(e);
logger.error(e.getMessage()); // }
} // return finalScan;
} }
} }

56
src/main/java/rest/StoreData.java

@ -1,4 +1,4 @@
package rest; // package rest;
// import dto.ConnectDB; // import dto.ConnectDB;
@ -17,38 +17,36 @@ import javax.ws.rs.Path;
// import org.hibernate.EntityManager; // import org.hibernate.EntityManager;
@Path("/storeData") // @Path("/storeData")
public class StoreData { // public class StoreData {
//all of these need cleaning up to be a more sensible soution // //all of these need cleaning up to be a more sensible soution
// @RestClient // // @RestClient
// CreateScanService createScanService; // // CreateScanService createScanService;
@GET // @GET
public void Store() { // public void Store() {
System.out.println("hmm");
//Create typesafe ServiceRegistry object // //Create typesafe ServiceRegistry object
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build(); // StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build(); // Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();
SessionFactory factory = meta.getSessionFactoryBuilder().build(); // SessionFactory factory = meta.getSessionFactoryBuilder().build();
Session session = factory.openSession(); // Session session = factory.openSession();
Transaction t = session.beginTransaction(); // Transaction t = session.beginTransaction();
System.out.println("i assume we fail before here?"); // Scan e1=new Scan();
Scan e1=new Scan(); // e1.setScanId(2);
e1.setScanId(2); // e1.setProductId("1");
e1.setProductId("1"); // e1.setEventId("Chawla");
e1.setEventId("Chawla"); // e1.setIsManagedService("aa");
e1.setIsManagedService("aa"); // e1.setComponentList("aaa");
e1.setComponentList("aaa");
session.save(e1); // session.save(e1);
t.commit(); // t.commit();
System.out.println("successfully saved"); // System.out.println("successfully saved");
factory.close(); // factory.close();
session.close(); // session.close();
} // }
} // }

20
src/main/java/rest/TektonResourceClient.java

@ -0,0 +1,20 @@
// package rest;
// import java.util.List;
// import jakarta.enterprise.context.ApplicationScoped;
// import io.fabric8.tekton.client.TektonClient;
// import io.fabric8.tekton.pipeline.v1beta1.Pipeline;
// @ApplicationScoped
// public class TektonResourceClient {
// // @Inject
// TektonClient tektonClient;l
// public List<Pipeline> listPipelines() {
// return tektonClient.v1beta1().pipelines().list().getItems();
// }
// }

175
src/main/java/rest/TektonTaskCreate.java

@ -0,0 +1,175 @@
// package rest;
import io.fabric8.tekton.client.DefaultTektonClient;
import io.fabric8.tekton.client.TektonClient;
import javax.inject.Inject;
import javax.validation.Valid;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import org.json.JSONObject;
import org.json.JSONArray;
import dto.ScanObj;
import dto.BrewObj;
import dto.ConnectDB;
import dto.ScanObjPayload;
import dto.BrewObjPayload;
import dto.GitObj;
import dto.GitObjPayload;
import dto.PncObj;
import dto.PncObjPayload;
import static constants.HttpHeaders.AUTHORIZATION_STRING;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Set;
import dto.ScanObj;
import dto.ConnectDB;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import java.util.Set;
import java.util.stream.Collectors;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import java.sql.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
// import org.hibernate.EntityManager;
import jakarta.persistence.EntityManager;
import jakarta.persistence.Cacheable;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.QueryHint;
import jakarta.persistence.SequenceGenerator;
import jakarta.persistence.Table;
import io.fabric8.tekton.client.DefaultTektonClient;
import io.fabric8.tekton.client.TektonClient;
import io.fabric8.tekton.pipeline.v1beta1.TaskBuilder;
import io.fabric8.tekton.pipeline.v1beta1.Task;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import dto.ScanObj;
import javax.inject.Inject;
import javax.validation.Valid;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import org.json.JSONObject;
import org.json.JSONArray;
import dto.ScanObj;
import dto.BrewObj;
import dto.ConnectDB;
import dto.ScanObjPayload;
import dto.BrewObjPayload;
import dto.GitObj;
import dto.GitObjPayload;
import dto.PncObj;
import dto.PncObjPayload;
import static constants.HttpHeaders.AUTHORIZATION_STRING;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import io.fabric8.tekton.client.DefaultTektonClient;
import io.fabric8.tekton.client.TektonClient;
import io.fabric8.tekton.pipeline.v1beta1.TaskBuilder;
import io.fabric8.tekton.pipeline.v1beta1.TaskRunBuilder;
@Path("/tekton")
public class TektonTaskCreate {
@RestClient
private static final String NAMESPACE = "default";
@POST
@Consumes({ "application/json" })
public void invokeTektonTask(String data) {
JSONObject jsonData = new JSONObject(data);
// ScanObj scanObj = ScanObjPayload.constructScanPayload(jsonData);
//dont leave this in live needs to be adjusted (currently would cause a ton of issues)
String tektonArgs = "osh-cli mock-build --config="+jsonData.get("config")+"--brew-build"+jsonData.get("nvr");
try (TektonClient tkn = new DefaultTektonClient()) {
// Create Task
tkn.v1beta1().tasks().inNamespace(NAMESPACE).resource(new TaskBuilder()
.withNewMetadata().withName("tekton-osh-client").endMetadata()
.withNewSpec()
.addNewStep()
.withName("osh-client")
.withImage("alpine:3.12")
.withCommand("osh-cli")
.withArgs(tektonArgs)
.endStep()
.endSpec()
.build()).createOrReplace();
// Create TaskRun
tkn.v1beta1().taskRuns().inNamespace(NAMESPACE).resource(new TaskRunBuilder()
.withNewMetadata().withName("tekton-osh-client-task-run").endMetadata()
.withNewSpec()
.withNewTaskRef()
.withName("tekton-osh-client")
.endTaskRef()
.endSpec()
.build()).createOrReplace();
}
}
}

116
src/main/java/rest/callTekton.java

@ -0,0 +1,116 @@
// package rest;
// import io.fabric8.tekton.client.DefaultTektonClient;
// import io.fabric8.tekton.client.TektonClient;
// import javax.inject.Inject;
// import javax.validation.Valid;
// import javax.ws.rs.Consumes;
// import javax.ws.rs.POST;
// import javax.ws.rs.Path;
// import java.net.URI;
// import java.net.URISyntaxException;
// import java.util.ArrayList;
// import java.util.Arrays;
// import java.util.List;
// import java.util.UUID;
// import org.json.JSONObject;
// import org.json.JSONArray;
// import dto.ScanObj;
// import dto.BrewObj;
// import dto.ConnectDB;
// import dto.ScanObjPayload;
// import dto.BrewObjPayload;
// import dto.GitObj;
// import dto.GitObjPayload;
// import dto.PncObj;
// import dto.PncObjPayload;
// import static constants.HttpHeaders.AUTHORIZATION_STRING;
// import java.sql.Connection;
// import java.sql.DriverManager;
// import java.sql.SQLException;
// import java.sql.Connection;
// import java.sql.DriverManager;
// import java.sql.ResultSet;
// import java.sql.Statement;
// import java.util.Collections;
// import java.util.LinkedHashMap;
// import java.util.Set;
// import dto.ScanObj;
// import dto.ConnectDB;
// import java.sql.Connection;
// import java.sql.DriverManager;
// import java.sql.SQLException;
// import java.sql.Connection;
// import java.sql.DriverManager;
// import java.sql.ResultSet;
// import java.sql.Statement;
// import javax.ws.rs.DELETE;
// import javax.ws.rs.GET;
// import javax.ws.rs.POST;
// import javax.ws.rs.Path;
// import javax.inject.Inject;
// import javax.ws.rs.GET;
// import javax.ws.rs.Path;
// import javax.ws.rs.PathParam;
// import java.util.Set;
// import java.util.stream.Collectors;
// import javax.inject.Inject;
// import javax.ws.rs.Consumes;
// import java.sql.*;
// import com.fasterxml.jackson.databind.ObjectMapper;
// import com.fasterxml.jackson.databind.ObjectWriter;
// // import org.hibernate.EntityManager;
// import jakarta.persistence.EntityManager;
// import jakarta.persistence.Cacheable;
// import jakarta.persistence.Column;
// import jakarta.persistence.Entity;
// import jakarta.persistence.GeneratedValue;
// import jakarta.persistence.Id;
// import jakarta.persistence.NamedQuery;
// import jakarta.persistence.QueryHint;
// import jakarta.persistence.SequenceGenerator;
// import jakarta.persistence.Table;
// import io.fabric8.tekton.client.DefaultTektonClient;
// import io.fabric8.tekton.client.TektonClient;
// import io.fabric8.tekton.pipeline.v1beta1.TaskBuilder;
// import io.fabric8.tekton.pipeline.v1beta1.Task;
// public class callTekton {
// private static final String NAMESPACE = "default";
// public static void main(String[] args) {
// try (TektonClient tkn = new DefaultTektonClient()) {
// // Load Task object from YAML
// Task task = tkn.v1beta1()
// .tasks()
// .load(callTekton.class.getResourceAsStream("../resources/baseScan.yml")).get();
// // Create Task object into Kubernetes
// tkn.v1beta1().tasks().inNamespace(NAMESPACE).createOrReplace(task);
// // Get Task object from APIServer
// String taskName = task.getMetadata().getName();
// task = tkn.v1beta1().tasks().inNamespace(NAMESPACE)
// .withName(taskName)
// .get();
// // Delete Task object
// tkn.v1beta1().tasks().inNamespace(NAMESPACE).withName(taskName).delete();
// }
// }
// }

16
src/main/resources/baseScan.yml

@ -0,0 +1,16 @@
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: basescan
spec:
params:
- name: buildId
type: string
- name: config
type: string
steps:
- name: baseScan
image: openshift
script: |
#!/bin/bash
osh-cli mock-build --config=params.config --brew-build params.buildId
Loading…
Cancel
Save