Browse Source

Fix cascade for brew and pnc types

Change endpoint in hack test script, these should be moved to unit tests
refactor_future_hack
Jonathan Christison 3 years ago
parent
commit
707e9d4fbb
  1. 4
      hack/pssaas-request-curl.sh
  2. 4
      src/main/java/com/redhat/pctsec/model/Scan.java
  3. 4
      src/main/java/com/redhat/pctsec/model/ScanRequest.java
  4. 5
      src/main/java/com/redhat/pctsec/model/ScanRequests.java
  5. 2
      src/main/java/com/redhat/pctsec/model/ScanTask.java
  6. 17
      src/main/java/com/redhat/pctsec/model/api/request/Component.java
  7. 34
      src/main/java/com/redhat/pctsec/model/api/request/build.java
  8. 27
      src/main/java/com/redhat/pctsec/model/api/request/git.java
  9. 2
      src/main/java/com/redhat/pctsec/model/api/request/pssaas.java
  10. 27
      src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java

4
hack/pssaas-request-curl.sh

@ -1,4 +1,4 @@
#!/bin/bash #!/bin/bash
curl -H 'Content-Type: application/json' -d '@sample-pssaas.json' localhost:8080/Scan/PSSaaS -vv curl -H 'Content-Type: application/json' -d '@sample-pssaas.json' localhost:8080/api/v1a/Scan/PSSaaS -vv
curl -H 'Content-Type: application/json' -d '@sample-pssaas-bad.json' localhost:8080/Scan/PSSaaS -vv curl -H 'Content-Type: application/json' -d '@sample-pssaas-bad.json' localhost:8080/api/v1a/Scan/PSSaaS -vv

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

@ -1,6 +1,7 @@
package com.redhat.pctsec.model; package com.redhat.pctsec.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.transaction.Transactional;
import jakarta.validation.constraints.Email; import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.CreationTimestamp;
@ -59,6 +60,7 @@ public class Scan {
this.email = email; this.email = email;
} }
public ScanRequests getScanRequests() { public ScanRequests getScanRequests() {
return scanRequests; return scanRequests;
} }
@ -105,7 +107,7 @@ public class Scan {
@Email @Email
private String email; private String email;
@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.EAGER) @OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
@JoinColumn(name = "scan_requests_id", referencedColumnName = "id") @JoinColumn(name = "scan_requests_id", referencedColumnName = "id")
public ScanRequests scanRequests; public ScanRequests scanRequests;
} }

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

@ -42,10 +42,10 @@ public class ScanRequest {
private RequestType type; private RequestType type;
@OneToOne @OneToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "brew_build_id", referencedColumnName = "id") @JoinColumn(name = "brew_build_id", referencedColumnName = "id")
public BrewBuild brewBuild; public BrewBuild brewBuild;
@OneToOne @OneToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "pnc_build_id", referencedColumnName = "id") @JoinColumn(name = "pnc_build_id", referencedColumnName = "id")
public PNCBuild pncBuild; public PNCBuild pncBuild;
@OneToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL) @OneToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL)

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

@ -9,6 +9,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.transaction.Transactional;
@ApplicationScoped @ApplicationScoped
@Entity @Entity
@ -39,7 +40,9 @@ public class ScanRequests {
public ScanRequests(pssaas pssaas){ public ScanRequests(pssaas pssaas){
this(); this();
//Iterate scan payload and create scans pssaas.componentList.stream().filter(c -> c.getType().equals("git")).forEach(g -> this.addGit(g.getRepo().toString(), g.getRef()));
pssaas.componentList.stream().filter(c -> c.getType().equals("brew")).forEach(g -> this.addBrewBuild(g.getBuildId()));
pssaas.componentList.stream().filter(c -> c.getType().equals("pnc")).forEach(g -> this.addPNCBuild(g.getBuildId()));
} }
public ScanRequests(scanChain scanchain){ public ScanRequests(scanChain scanchain){

2
src/main/java/com/redhat/pctsec/model/ScanTask.java

@ -1,6 +1,7 @@
package com.redhat.pctsec.model; package com.redhat.pctsec.model;
import io.vertx.core.eventbus.impl.EventBusImpl;
import io.vertx.mutiny.core.eventbus.EventBus; import io.vertx.mutiny.core.eventbus.EventBus;
import jakarta.enterprise.context.Dependent; import jakarta.enterprise.context.Dependent;
import jakarta.inject.Inject; import jakarta.inject.Inject;
@ -27,6 +28,7 @@ public class ScanTask {
this(); this();
this.scanRequest = scanRequest; this.scanRequest = scanRequest;
this.bus = scanRequest.getBus(); this.bus = scanRequest.getBus();
//this.bus = new EventBus(new EventBusImpl());
} }

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

@ -0,0 +1,17 @@
package com.redhat.pctsec.model.api.request;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import java.net.URI;
@JsonDeserialize(using = ComponentJsonDeserializer.class)
public interface Component {
public String getType();
public String getBuildId();
public URI getRepo();
public String getRef();
}

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

@ -4,22 +4,46 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.net.URI;
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ @JsonPropertyOrder({
"type", "type",
"build-id" "build-id"
}) })
public class build { public class build implements Component {
@NotNull
@JsonProperty("type")
public final String type; public final String type;
@NotNull
@JsonProperty("build-id")
public final String buildId; public final String buildId;
public build(@NotNull String type, @NotNull String buildId) { public build(@NotNull String type, @NotNull String buildId) {
this.type = type; this.type = type;
this.buildId = buildId; this.buildId = buildId;
} }
@Override
@NotNull
@JsonProperty("type")
public String getType() {
return this.type;
}
@NotNull
@JsonProperty("build-id")
@Override
public String getBuildId() {
return this.buildId;
}
@Override
public URI getRepo() {
return URI.create("");
}
@Override
public String getRef() {
return "";
}
} }

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

@ -13,7 +13,7 @@ import java.net.URI;
"repo", "repo",
"ref" "ref"
}) })
public class git { public class git implements Component{
@NotNull @NotNull
@JsonProperty("type") @JsonProperty("type")
public final static String type = "git"; public final static String type = "git";
@ -25,4 +25,29 @@ public class git {
@NotNull @NotNull
@JsonProperty("ref") @JsonProperty("ref")
public String ref; public String ref;
public git(@NotNull URI repo, @NotNull String ref) {
this.repo = repo;
this.ref = ref;
}
@Override
public String getType() {
return this.type;
}
@Override
public String getBuildId() {
return "";
}
@Override
public URI getRepo() {
return this.repo;
}
@Override
public String getRef() {
return this.ref;
}
} }

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

@ -65,6 +65,6 @@ public class pssaas {
@Size(min = 1) @Size(min = 1)
@Valid @Valid
@NotNull @NotNull
public Set<Object> componentList; public Set<Component> componentList;
} }

27
src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java

@ -3,6 +3,7 @@ package com.redhat.pctsec.rest.v1alpha1;
import com.redhat.pctsec.model.*; import com.redhat.pctsec.model.*;
import com.redhat.pctsec.model.api.request.pssaas; import com.redhat.pctsec.model.api.request.pssaas;
import com.redhat.pctsec.model.jpa.ScanRepository; import com.redhat.pctsec.model.jpa.ScanRepository;
import io.quarkus.security.Authenticated;
import io.vertx.mutiny.core.eventbus.EventBus; import io.vertx.mutiny.core.eventbus.EventBus;
import jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject; import jakarta.inject.Inject;
@ -29,14 +30,26 @@ public class ScanResource {
@POST @POST
@Path("PSSaaS") @Path("PSSaaS")
@Consumes({ "application/json" }) @Consumes({ "application/json" })
public Integer createScans(@Valid pssaas scanRequest) @Transactional
@Authenticated
public Scan createPSSAAS(@Valid pssaas scanRequest)
{ {
//Validate JSON ScanRequests scanRequests = new ScanRequests(scanRequest);
Scan s = new Scan();
//CreateScanCollection s.setRequestor("cpaas");
s.setScanRequests(scanRequests);
//Return ScanCollectionID sr.persist(s);
return 1; return s;
}
@POST
@Path("PSSaaS/run")
@Consumes({ "application/json" })
@Transactional
@Authenticated
public List<ScanTask> createRunPSSAAS(@Valid pssaas scanRequest)
{
Scan s = this.createPSSAAS(scanRequest);
return s.scanRequests.execute(bus);
} }
@GET @GET

Loading…
Cancel
Save