diff --git a/pom.xml b/pom.xml
index 0d831fd..1434c68 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,10 +74,19 @@
io.quarkus
quarkus-smallrye-openapi
+
+
+ info.picocli
+ picocli
+ 4.7.4
+
io.quarkus
quarkus-junit5
diff --git a/src/main/java/com/redhat/pctsec/model/BrewBuild.java b/src/main/java/com/redhat/pctsec/model/BrewBuild.java
index a8c6ec0..01b8239 100644
--- a/src/main/java/com/redhat/pctsec/model/BrewBuild.java
+++ b/src/main/java/com/redhat/pctsec/model/BrewBuild.java
@@ -1,14 +1,21 @@
package com.redhat.pctsec.model;
+import jakarta.persistence.Entity;
+
import java.net.URI;
import java.net.URL;
+@Entity
public class BrewBuild extends BuildType {
public BrewBuild(String buildRef) {
super(buildRef);
}
+ public BrewBuild() {
+ super();
+ }
+
@Override
public URI SCMURL() {
return null;
diff --git a/src/main/java/com/redhat/pctsec/model/BuildType.java b/src/main/java/com/redhat/pctsec/model/BuildType.java
index 25d738d..b056b16 100644
--- a/src/main/java/com/redhat/pctsec/model/BuildType.java
+++ b/src/main/java/com/redhat/pctsec/model/BuildType.java
@@ -1,18 +1,18 @@
package com.redhat.pctsec.model;
import com.fasterxml.jackson.annotation.JsonProperty;
-import jakarta.persistence.Column;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
+import jakarta.persistence.*;
import java.net.URI;
import java.net.URL;
+import java.util.UUID;
+@Entity
+@DiscriminatorColumn(name="REF_TYPE")
abstract public class BuildType {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
- private Long id;
+ private UUID id;
@JsonProperty()
@Column(name="buildref")
@@ -23,7 +23,11 @@ abstract public class BuildType {
this.buildRef = buildRef;
}
- abstract public URI SCMURL(void);
- abstract public URL URL(void);
- abstract public String revision(void);
+ public BuildType() {
+
+ }
+
+ abstract public URI SCMURL();
+ abstract public URL URL();
+ abstract public String revision();
}
diff --git a/src/main/java/com/redhat/pctsec/model/Git.java b/src/main/java/com/redhat/pctsec/model/Git.java
index 15eaddd..4a271fd 100644
--- a/src/main/java/com/redhat/pctsec/model/Git.java
+++ b/src/main/java/com/redhat/pctsec/model/Git.java
@@ -1,8 +1,23 @@
package com.redhat.pctsec.model;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+
import java.net.URI;
+import java.util.UUID;
+@Entity
public class Git {
+ public Git() {
+ super();
+ }
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private UUID id;
+
private URI repo;
private String ref;
diff --git a/src/main/java/com/redhat/pctsec/model/PNCBuild.java b/src/main/java/com/redhat/pctsec/model/PNCBuild.java
index 9cc9c6c..36f9b55 100644
--- a/src/main/java/com/redhat/pctsec/model/PNCBuild.java
+++ b/src/main/java/com/redhat/pctsec/model/PNCBuild.java
@@ -1,9 +1,16 @@
package com.redhat.pctsec.model;
+import jakarta.persistence.Entity;
+
import java.net.URI;
import java.net.URL;
+@Entity
public class PNCBuild extends BuildType{
+ public PNCBuild() {
+ super();
+ }
+
public PNCBuild(String buildRef) {
super(buildRef);
}
@@ -27,5 +34,6 @@ public class PNCBuild extends BuildType{
//New type PNC Ref
if(ref.length()!=14)
return false;
+ return true;
}
}
diff --git a/src/main/java/com/redhat/pctsec/model/Scan.java b/src/main/java/com/redhat/pctsec/model/Scan.java
index e7c063a..ec1e0da 100644
--- a/src/main/java/com/redhat/pctsec/model/Scan.java
+++ b/src/main/java/com/redhat/pctsec/model/Scan.java
@@ -5,7 +5,7 @@ import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull;
import java.util.Calendar;
-import java.util.List;
+import java.util.UUID;
enum ScanState {
CREATED, TRIGGERED, RUNNING, SUCCESS, FAIL;
@@ -13,14 +13,51 @@ enum ScanState {
@Entity
public class Scan {
+ public String getProductName() {
+ return productName;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public String getRequestor() {
+ return requestor;
+ }
+
+ public void setRequestor(String requestor) {
+ this.requestor = requestor;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public ScanRequests getScanRequests() {
+ return scanRequests;
+ }
+
+ public void setScanRequests(ScanRequests scanRequests) {
+ this.scanRequests = scanRequests;
+ }
+
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
- private Long id;
+ private UUID id;
+
+ /*
@OneToOne
@NotNull
@JoinColumn(name = "product_id", referencedColumnName = "id")
private String productName;
+ */
+ @Column(name="proudct_name")
+ private String productName;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="creation_timestamp")
diff --git a/src/main/java/com/redhat/pctsec/model/ScanRequest.java b/src/main/java/com/redhat/pctsec/model/ScanRequest.java
index 1a51340..15c064b 100644
--- a/src/main/java/com/redhat/pctsec/model/ScanRequest.java
+++ b/src/main/java/com/redhat/pctsec/model/ScanRequest.java
@@ -7,27 +7,42 @@ import io.vertx.mutiny.core.eventbus.EventBus;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
-import jakarta.persistence.Entity;
+import jakarta.persistence.*;
import java.util.HashMap;
+import java.util.UUID;
enum RequestType{BREW, PNC, GIT}
@ApplicationScoped
@Entity
public class ScanRequest {
+ @Transient
@Inject
EventBus bus;
+ @Id
+ @GeneratedValue
+ private UUID id;
private String metadata;
private String oshScanOptions;
RequestType type;
+
+ @OneToOne
+ @JoinColumn(name = "brew_build_id", referencedColumnName = "id")
BrewBuild brewBuild;
+ @OneToOne
+ @JoinColumn(name = "pnc_build_id", referencedColumnName = "id")
PNCBuild pncBuild;
+ @OneToOne
+ @JoinColumn(name = "git_id", referencedColumnName = "id")
Git git;
+ public ScanRequest() {
+ }
+
public ScanRequest(BrewBuild brewBuild)
{
this.type = RequestType.BREW;
diff --git a/src/main/java/com/redhat/pctsec/model/ScanRequests.java b/src/main/java/com/redhat/pctsec/model/ScanRequests.java
index 359c6ad..c6ffa59 100644
--- a/src/main/java/com/redhat/pctsec/model/ScanRequests.java
+++ b/src/main/java/com/redhat/pctsec/model/ScanRequests.java
@@ -4,28 +4,28 @@ import com.redhat.pctsec.model.api.request.pssaas;
import com.redhat.pctsec.model.api.request.scanChain;
import jakarta.enterprise.context.ApplicationScoped;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.*;
import jakarta.persistence.*;
@ApplicationScoped
@Entity
+@Table(name="ScanRequests")
public class ScanRequests {
@Id
@GeneratedValue
- private Long id;
+ private UUID id;
- @OneToMany
+ @OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name = "scan_request_id", referencedColumnName = "id")
- private Set scanRequests;
+ private Set scanRequests = new HashSet<>();
- @Column(name="scan_properties")
+
+ //@Column(name="scan_properties")
private String scanProperties;
- @Column(name="scan_metadata")
+ //@Column(name="scan_metadata")
private String scanMetadata;
diff --git a/src/main/java/com/redhat/pctsec/model/jpa/ScanRepository.java b/src/main/java/com/redhat/pctsec/model/jpa/ScanRepository.java
new file mode 100644
index 0000000..afa3095
--- /dev/null
+++ b/src/main/java/com/redhat/pctsec/model/jpa/ScanRepository.java
@@ -0,0 +1,20 @@
+package com.redhat.pctsec.model.jpa;
+
+import com.redhat.pctsec.model.Scan;
+import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
+import io.smallrye.mutiny.Uni;
+import jakarta.enterprise.context.ApplicationScoped;
+
+import java.util.UUID;
+
+@ApplicationScoped
+public class ScanRepository implements PanacheRepositoryBase {
+
+
+
+ public Uni findByProduct(String product)
+ {
+ return find("product", product).firstResult();
+ }
+
+}
diff --git a/src/main/java/com/redhat/pctsec/model/osh/paramMapper.java b/src/main/java/com/redhat/pctsec/model/osh/paramMapper.java
index 83968eb..dc0ed64 100644
--- a/src/main/java/com/redhat/pctsec/model/osh/paramMapper.java
+++ b/src/main/java/com/redhat/pctsec/model/osh/paramMapper.java
@@ -1,8 +1,12 @@
package com.redhat.pctsec.model.osh;
+
+import jakarta.inject.Singleton;
import picocli.CommandLine;
import picocli.CommandLine.Option;
import picocli.CommandLine.Parameters;
+
+
public class paramMapper {
@Option(names = {"-p", "--profile"}, description = "list of analyzers to use (see command 'list-\n" +
@@ -28,7 +32,41 @@ public class paramMapper {
" of a local file")
private String brewBuild;
+ public paramMapper(){}
+
public paramMapper(String params){
- new CommandLine(this).parseArgs("params");
+ new CommandLine(this).parseArgs(params.split(("\\s+")));
+ }
+
+ public String getProfile() {
+ return profile;
+ }
+
+ public void setProfile(String profile) {
+ this.profile = profile;
+ }
+
+ public String getAnalyzers() {
+ return analyzers;
+ }
+
+ public void setAnalyzers(String analyzers) {
+ this.analyzers = analyzers;
+ }
+
+ public String getTarballBuildScript() {
+ return tarballBuildScript;
+ }
+
+ public void setTarballBuildScript(String tarballBuildScript) {
+ this.tarballBuildScript = tarballBuildScript;
+ }
+
+ public String getBrewBuild() {
+ return brewBuild;
+ }
+
+ public void setBrewBuild(String brewBuild) {
+ this.brewBuild = brewBuild;
}
}
diff --git a/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java
index 09a4a53..72276d4 100644
--- a/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java
+++ b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java
@@ -1,19 +1,28 @@
package com.redhat.pctsec.rest.v1alpha1;
+import com.redhat.pctsec.model.Git;
import com.redhat.pctsec.model.Scan;
+import com.redhat.pctsec.model.ScanRequest;
import com.redhat.pctsec.model.ScanRequests;
import com.redhat.pctsec.model.api.request.pssaas;
+import com.redhat.pctsec.model.jpa.ScanRepository;
import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
import jakarta.validation.Valid;
import jakarta.ws.rs.*;
import org.jboss.resteasy.reactive.RestQuery;
import java.util.HashMap;
+import java.util.List;
+import java.util.UUID;
@ApplicationScoped
@Path("/api/v1a/Scan")
public class ScanResource {
+ @Inject
+ ScanRepository sr;
+
@POST
@Path("PSSaaS")
@Consumes({ "application/json" })
@@ -27,10 +36,17 @@ public class ScanResource {
return 1;
}
+ @GET
+ @Produces({"application/json"})
+ public List list()
+ {
+ return sr.listAll();
+ }
@GET
@Path("{id}")
+ @Produces({"application/json"})
public Scan scanRequest(String id){
- return null;
+ return sr.findById(UUID.fromString(id));
}
@GET
@@ -41,15 +57,24 @@ public class ScanResource {
@GET
@Path("single/git")
- public String singleGit(@RestQuery String repo, @RestQuery String ref)
+ @Produces({"application/json"})
+ public Scan singleGit(@RestQuery String repo, @RestQuery String ref)
{
- return "restult";
+
+ //ScanRequest scanRequest = new ScanRequest(new Git(repo, ref));
+ ScanRequests scanRequests = new ScanRequests();
+ scanRequests.addGit(repo,ref);
+ Scan s = new Scan();
+ s.setScanRequests(scanRequests);
+ sr.persist(s);
+ return s;
}
@GET
@Path("single/brew")
- public String singleGit(@RestQuery String brewId)
+ @Produces({"application/json"})
+ public Scan singleGit(@RestQuery String brewId)
{
- return "result";
+ return null;
}
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 2cb4c25..8f8a1d1 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -21,8 +21,13 @@
#%dev.quarkus.kerberos.keytab-path= HTTP_osh-pct-security-tooling.apps.ocp-c1.prod.psi.redhat.com@IPA.REDHAT.COM.keytab
#%dev.quarkus.kerberos.service-principal-name= HTTP/osh-pct-security-tooling.apps.ocp-c1.prod.psi.redhat.com@IPA.REDHAT.COM
+%dev.quarkus.datasource.db-kind = postgresql
+%dev.quarkus.datasource.username = quarkus
+%dev.quarkus.datasource.password = quarkus
+%dev.quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/hibernate_db
+%dev.quarkus.hibernate-orm.database.generation=drop-and-create
#Always provide swagger ui
-quarkus.swagger-ui.always-include=true
+%dev.quarkus.swagger-ui.always-include=true
%stage.quarkus.openshift.name=osh
%stage.quarkus.openshift.service-account=osh-wrapper-client-sa
diff --git a/src/test/java/com/redhat/pctsec/GreetingResourceIT.java b/src/test/java/com/redhat/pctsec/GreetingResourceIT.java
deleted file mode 100644
index 5feb3d8..0000000
--- a/src/test/java/com/redhat/pctsec/GreetingResourceIT.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.redhat.pctsec;
-
-import io.quarkus.test.junit.QuarkusIntegrationTest;
-
-@QuarkusIntegrationTest
-public class GreetingResourceIT extends GreetingResourceTest {
- // Execute the same tests but in packaged mode.
-}
diff --git a/src/test/java/com/redhat/pctsec/GreetingResourceTest.java b/src/test/java/com/redhat/pctsec/GreetingResourceTest.java
deleted file mode 100644
index affe5a5..0000000
--- a/src/test/java/com/redhat/pctsec/GreetingResourceTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.redhat.pctsec;
-
-import io.quarkus.test.junit.QuarkusTest;
-import org.junit.jupiter.api.Test;
-
-import static io.restassured.RestAssured.given;
-import static org.hamcrest.CoreMatchers.is;
-
-@QuarkusTest
-public class GreetingResourceTest {
-
- @Test
- public void testHelloEndpoint() {
- given()
- .when().get("/hello")
- .then()
- .statusCode(200)
- .body(is("Hello from RESTEasy Reactive"));
- }
-
-}
\ No newline at end of file
diff --git a/src/test/java/com/redhat/pctsec/model/osh/paramMapperTest.java b/src/test/java/com/redhat/pctsec/model/osh/paramMapperTest.java
index e1616b8..f24ee8c 100644
--- a/src/test/java/com/redhat/pctsec/model/osh/paramMapperTest.java
+++ b/src/test/java/com/redhat/pctsec/model/osh/paramMapperTest.java
@@ -3,6 +3,7 @@ package com.redhat.pctsec.model.osh;
import io.quarkus.test.junit.QuarkusTest;
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;
+import java.lang.String;
import static io.restassured.RestAssured.given;
import static org.hamcrest.CoreMatchers.is;
@@ -10,12 +11,12 @@ import static org.hamcrest.CoreMatchers.is;
@QuarkusTest
public class paramMapperTest {
- @Inject
- paramMapper pm;
+
@Test
public void testSnykScan() {
- pm = new paramMapper("-p snyk-only-unstable --tarball-build-script=\":\"");
+ paramMapper pm = new paramMapper("-p snyk-only-unstable --tarball-build-script=\":\"");
+ System.out.println(pm);
}
}
\ No newline at end of file