Browse Source

Decouple ScanRequest from tekton runs

We will use an eventbus to listen for "executed"/triggered ScanRequests
and respond with tekton runID to check up on later
refactor_future_hack
Jonathan Christison 3 years ago
parent
commit
7fffbe22ba
  1. 5
      pom.xml
  2. 16
      src/main/java/com/redhat/pctsec/GreetingResource.java
  3. 21
      src/main/java/com/redhat/pctsec/model/BrewBuild.java
  4. 28
      src/main/java/com/redhat/pctsec/model/BuildType.java
  5. 20
      src/main/java/com/redhat/pctsec/model/PNCBuild.java
  6. 44
      src/main/java/com/redhat/pctsec/model/Scan.java
  7. 10
      src/main/java/com/redhat/pctsec/model/ScanRequest.java
  8. 27
      src/main/java/com/redhat/pctsec/model/ScanRequests.java
  9. 25
      src/main/java/com/redhat/pctsec/model/api/request/build.java
  10. 8
      src/main/java/com/redhat/pctsec/model/api/request/git.java
  11. 17
      src/main/java/com/redhat/pctsec/model/api/request/pssaas.java
  12. 4
      src/main/java/com/redhat/pctsec/model/api/request/scanChain.java
  13. 30
      src/main/java/com/redhat/pctsec/model/build.java
  14. 7
      src/main/java/com/redhat/pctsec/model/osh/paramMapper.java
  15. 4
      src/main/java/com/redhat/pctsec/model/scanChain.java
  16. 7
      src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java

5
pom.xml

@ -84,6 +84,11 @@
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.7.3</version>
</dependency>
</dependencies>
<build>
<plugins>

16
src/main/java/com/redhat/pctsec/GreetingResource.java

@ -1,16 +0,0 @@
package com.redhat.pctsec;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from RESTEasy Reactive";
}
}

21
src/main/java/com/redhat/pctsec/model/BrewBuild.java

@ -0,0 +1,21 @@
package com.redhat.pctsec.model;
import java.net.URI;
import java.net.URL;
public class BrewBuild extends BuildType {
public BrewBuild(String buildRef) {
super(buildRef);
}
@Override
public URI SCMURL() {
return null;
}
@Override
public URL URL() {
return null;
}
}

28
src/main/java/com/redhat/pctsec/model/BuildType.java

@ -0,0 +1,28 @@
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 java.net.URI;
import java.net.URL;
abstract public class BuildType {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@JsonProperty()
@Column(name="buildref")
private String buildRef;
public BuildType(String buildRef)
{
this.buildRef = buildRef;
}
abstract public URI SCMURL(void);
abstract public URL URL(void);
}

20
src/main/java/com/redhat/pctsec/model/PNCBuild.java

@ -0,0 +1,20 @@
package com.redhat.pctsec.model;
import java.net.URI;
import java.net.URL;
public class PNCBuild extends BuildType{
public PNCBuild(String buildRef) {
super(buildRef);
}
@Override
public URI SCMURL() {
return null;
}
@Override
public URL URL() {
return null;
}
}

44
src/main/java/com/redhat/pctsec/model/Scan.java

@ -0,0 +1,44 @@
package com.redhat.pctsec.model;
import jakarta.persistence.*;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull;
import java.util.Calendar;
import java.util.List;
enum ScanState {
CREATED, TRIGGERED, RUNNING, SUCCESS, FAIL;
}
@Entity
public class Scan {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
@NotNull
@JoinColumn(name = "product_id", referencedColumnName = "id")
private String productName;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="creation_timestamp")
private Calendar creationTimestamp;
@Column(name="state")
@Enumerated(EnumType.STRING)
private ScanState state;
@Column(name="requestor")
@NotNull
private String requestor;
@Column(name="report_email")
@Email
private String email;
@OneToOne
@JoinColumn(name = "scan_requests_id", referencedColumnName = "id")
private ScanRequests scanRequests;
}

10
src/main/java/com/redhat/pctsec/model/ScanRequest.java

@ -2,19 +2,22 @@ package com.redhat.pctsec.model;
import com.redhat.pctsec.tekton.brewTaskRun;
import com.redhat.pctsec.tekton.scmUrlPipelineRun;
import io.vertx.mutiny.core.eventbus.EventBus;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import java.util.HashMap;
@ApplicationScoped
public class ScanRequest {
abstract public class ScanRequest {
@Inject
EventBus bus;
private HashMap<String, String> metadata;
private HashMap<String, String> oshScanOptions;
private String brewBuild;
private HashMap<String, String> scmurl;
<<<<<<< HEAD
//@Inject
brewTaskRun btr;
@ -45,4 +48,5 @@ public class ScanRequest {
plr.invokeOshScmScanPipeline(this.scmurl.get("repo"), this.scmurl.get("ref"));
}
}
}

27
src/main/java/com/redhat/pctsec/model/ScanRequests.java

@ -1,19 +1,34 @@
package com.redhat.pctsec.model;
import com.redhat.pctsec.rest.v1alpha1.Scan;
import com.redhat.pctsec.model.api.request.pssaas;
import jakarta.enterprise.context.ApplicationScoped;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.*;
@ApplicationScoped
@Entity
public class ScanRequests {
@Id @GeneratedValue private Long id;
private Set<ScanRequest> scanRequests = new HashSet<>();
private HashMap<String, String> globalScanProperties;
@Id
@GeneratedValue
private Long id;
@OneToMany
@JoinColumn(name = "scan_request_id", referencedColumnName = "id")
private Set<ScanRequest> scanRequests;
@Column(name="scan_properties")
private String scanProperties;
public ScanRequests(){
//Default to the Snyk scan
this.scanProperties = "-p snyk-only-unstable --tarball-build-script=\":\"";
}
public ScanRequests(pssaas pssaas){
//Iterate scan payload and create scans

25
src/main/java/com/redhat/pctsec/model/api/request/build.java

@ -0,0 +1,25 @@
package com.redhat.pctsec.model.api.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import jakarta.validation.constraints.NotNull;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"type",
"build-id"
})
public class build {
@NotNull
@JsonProperty("type")
public final String type;
@NotNull
@JsonProperty("build-id")
public final String buildId;
public build(@NotNull String type, @NotNull String buildId) {
this.type = type;
this.buildId = buildId;
}
}

8
src/main/java/com/redhat/pctsec/model/git.java → src/main/java/com/redhat/pctsec/model/api/request/git.java

@ -1,4 +1,4 @@
package com.redhat.pctsec.model;
package com.redhat.pctsec.model.api.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@ -14,13 +14,13 @@ import jakarta.validation.constraints.NotNull;
public class git {
@NotNull
@JsonProperty("type")
public String type;
public final static String type = "git";
@NotNull
@JsonProperty("repo")
public String repo;
@NotNull
@JsonProperty("ref")
@JsonProperty("repo")
public String ref;
}
}

17
src/main/java/com/redhat/pctsec/model/pssaas.java → src/main/java/com/redhat/pctsec/model/api/request/pssaas.java

@ -1,4 +1,4 @@
package com.redhat.pctsec.model;
package com.redhat.pctsec.model.api.request;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
@ -66,20 +66,5 @@ public class pssaas {
@Valid
@NotNull
public Set<Object> componentList;
@JsonIgnore
@Valid
private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
/*
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
*/
}

4
src/main/java/com/redhat/pctsec/model/api/request/scanChain.java

@ -0,0 +1,4 @@
package com.redhat.pctsec.model.api.request;
public class scanChain {
}

30
src/main/java/com/redhat/pctsec/model/build.java

@ -1,30 +0,0 @@
package com.redhat.pctsec.model;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"type",
"build-id"
})
public class build {
@NotNull
@JsonProperty("type")
public String type;
@NotNull
@JsonProperty("build-id")
public String buildId;
}

7
src/main/java/com/redhat/pctsec/model/osh/paramMapper.java

@ -0,0 +1,7 @@
package com.redhat.pctsec.model.osh;
import picocli.CommandLine.Option;
import picocli.CommandLine.Parameters;
public class paramMapper {
}

4
src/main/java/com/redhat/pctsec/model/scanChain.java

@ -1,4 +0,0 @@
package com.redhat.pctsec.model;
public class scanChain {
}

7
src/main/java/com/redhat/pctsec/rest/v1alpha1/Scan.java → src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java

@ -1,7 +1,8 @@
package com.redhat.pctsec.rest.v1alpha1;
import com.redhat.pctsec.model.Scan;
import com.redhat.pctsec.model.ScanRequests;
import com.redhat.pctsec.model.pssaas;
import com.redhat.pctsec.model.api.request.pssaas;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.validation.Valid;
import jakarta.ws.rs.*;
@ -11,7 +12,7 @@ import java.util.HashMap;
@ApplicationScoped
@Path("/api/v1a/Scan")
public class Scan {
public class ScanResource {
HashMap<String, ScanRequests> scanCollection = new HashMap<>();
@POST
@ -29,7 +30,7 @@ public class Scan {
@GET
@Path("{id}")
public ScanRequests scanRequest(String id){
public Scan scanRequest(String id){
return scanCollection.get(id.toString());
}
Loading…
Cancel
Save