diff --git a/pom.xml b/pom.xml index a9acab6..83453dc 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ UTF-8 quarkus-bom io.quarkus.platform - 3.1.2.Final + 3.1.3.Final true 3.0.0 @@ -87,6 +87,24 @@ io.quarkus quarkus-kubernetes-config + + org.jboss.pnc + common + 2.5.1 + + + org.jboss.pnc + rest-client + 2.5.1 + + + io.quarkus + quarkus-rest-client-reactive-jackson + + + io.quarkus + quarkus-rest-client-reactive + io.quarkus quarkus-junit5 diff --git a/src/main/java/com/redhat/pctsec/model/PNCBuild.java b/src/main/java/com/redhat/pctsec/model/PNCBuild.java index 36f9b55..a6f2f88 100644 --- a/src/main/java/com/redhat/pctsec/model/PNCBuild.java +++ b/src/main/java/com/redhat/pctsec/model/PNCBuild.java @@ -1,15 +1,48 @@ package com.redhat.pctsec.model; +import com.redhat.pctsec.model.api.service.AltPncService; +//import com.redhat.pctsec.model.api.service.PncService; +import io.quarkus.rest.client.reactive.QuarkusRestClientBuilder; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import jakarta.persistence.Entity; +import jakarta.persistence.Transient; +import org.eclipse.microprofile.config.ConfigProvider; +import org.eclipse.microprofile.config.inject.ConfigProperty; +import org.jboss.pnc.dto.Build; import java.net.URI; import java.net.URL; @Entity public class PNCBuild extends BuildType{ + + + @Transient + public static final String apiUrl = ConfigProvider.getConfig().getValue("pnc.api-url",String.class); + @Transient + private static final AltPncService pnc = QuarkusRestClientBuilder.newBuilder().baseUri(URI.create(apiUrl)).build(AltPncService.class); + + + /* + @Transient + PncService pnc; + */ + + @Transient + Build build; + + private URI SCMURL; + private String revision; + public PNCBuild() { super(); } + public Build getBuild() { + if(build == null) + build = pnc.getBuild(this.buildRef); + return build; + } public PNCBuild(String buildRef) { super(buildRef); @@ -17,7 +50,10 @@ public class PNCBuild extends BuildType{ @Override public URI SCMURL() { - return null; + if(SCMURL == null) + SCMURL = URI.create(getBuild().getScmUrl()); + + return this.SCMURL; } @Override @@ -27,7 +63,9 @@ public class PNCBuild extends BuildType{ @Override public String revision() { - return null; + if(revision == null) + revision = getBuild().getScmTag(); + return revision; } public static boolean isValidRef(String ref){ diff --git a/src/main/java/com/redhat/pctsec/model/api/service/AltPncService.java b/src/main/java/com/redhat/pctsec/model/api/service/AltPncService.java new file mode 100644 index 0000000..2f09a58 --- /dev/null +++ b/src/main/java/com/redhat/pctsec/model/api/service/AltPncService.java @@ -0,0 +1,12 @@ +package com.redhat.pctsec.model.api.service; +import jakarta.ws.rs.*; +import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; +import org.jboss.pnc.dto.Build; + +@Path("pnc-rest/v2/builds") +@RegisterRestClient +public interface AltPncService { + @GET + @Path("{id}") + Build getBuild(@PathParam("id") String id); +} diff --git a/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestsResource.java b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestsResource.java index 6b26743..5564b64 100644 --- a/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestsResource.java +++ b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanRequestsResource.java @@ -9,7 +9,7 @@ import io.quarkus.security.Authenticated; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.ws.rs.*; -import org.jboss.resteasy.reactive.common.NotImplementedYet; +//import org.jboss.resteasy.reactive.common.NotImplementedYet; import java.util.UUID; @@ -35,7 +35,7 @@ public class ScanRequestsResource { @Authenticated public ScanRequests addScanRequest(String id, ScanRequest scanRequest) { - throw new NotImplementedYet(); + throw new WebApplicationException("Not implemented"); } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a2748bb..750c602 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -57,6 +57,7 @@ quarkus.arc.remove-unused-beans=false %stage.quarkus.openshift.route.target-port=https %stage.quarkus.openshift.route.tls.insecure-edge-termination-policy=redirect %stage.quarkus.openshift.namespace=pct-security-tooling +quarkus.openshift.namespace=pct-security-tooling ########################################## # Kerberos Specifics # @@ -80,5 +81,10 @@ tekton.pipeline.ref=osh-client-from-source tekton.task.ref=osh-scan-task tekton.service-account=${quarkus.openshift.service-account} +########################################## +# PNC Settings # +########################################## +pnc.api-url=http://orch.psi.redhat.com + diff --git a/src/test/java/com/redhat/pctsec/model/test/PNCBuildTest.java b/src/test/java/com/redhat/pctsec/model/test/PNCBuildTest.java new file mode 100644 index 0000000..76a571b --- /dev/null +++ b/src/test/java/com/redhat/pctsec/model/test/PNCBuildTest.java @@ -0,0 +1,19 @@ +package com.redhat.pctsec.model.test; + +import com.redhat.pctsec.model.PNCBuild; +import io.quarkus.test.junit.QuarkusTest; +import jakarta.inject.Inject; +import org.junit.jupiter.api.Test; + +@QuarkusTest +public class PNCBuildTest { + + + + @Test + public void testBuildFetch(){ + PNCBuild pb = new PNCBuild("AZAQZSPFDRQAA"); + System.out.println(pb.SCMURL()); + System.out.println(pb.revision()); + } +} diff --git a/src/test/java/com/redhat/pctsec/model/osh/paramMapperTest.java b/src/test/java/com/redhat/pctsec/model/test/paramMapperTest.java similarity index 83% rename from src/test/java/com/redhat/pctsec/model/osh/paramMapperTest.java rename to src/test/java/com/redhat/pctsec/model/test/paramMapperTest.java index f24ee8c..f376e8f 100644 --- a/src/test/java/com/redhat/pctsec/model/osh/paramMapperTest.java +++ b/src/test/java/com/redhat/pctsec/model/test/paramMapperTest.java @@ -1,5 +1,6 @@ -package com.redhat.pctsec.model.osh; +package com.redhat.pctsec.model.test; +import com.redhat.pctsec.model.osh.paramMapper; import io.quarkus.test.junit.QuarkusTest; import jakarta.inject.Inject; import org.junit.jupiter.api.Test;