diff --git a/fcli-core/fcli-sc-sast/src/main/java/com/fortify/cli/sc_sast/scan/cli/cmd/SCSastScanCommands.java b/fcli-core/fcli-sc-sast/src/main/java/com/fortify/cli/sc_sast/scan/cli/cmd/SCSastScanCommands.java index d562b134bf6..40b59aa9b3d 100644 --- a/fcli-core/fcli-sc-sast/src/main/java/com/fortify/cli/sc_sast/scan/cli/cmd/SCSastScanCommands.java +++ b/fcli-core/fcli-sc-sast/src/main/java/com/fortify/cli/sc_sast/scan/cli/cmd/SCSastScanCommands.java @@ -23,6 +23,7 @@ SCSastScanCancelCommand.class, SCSastScanDownloadCommand.class, SCSastScanListCommand.class, + SCSastScanPrioritizeCommand.class, SCSastScanStartCommand.class, SCSastScanStatusCommand.class, SCSastScanWaitForCommand.class diff --git a/fcli-core/fcli-sc-sast/src/main/java/com/fortify/cli/sc_sast/scan/cli/cmd/SCSastScanPrioritizeCommand.java b/fcli-core/fcli-sc-sast/src/main/java/com/fortify/cli/sc_sast/scan/cli/cmd/SCSastScanPrioritizeCommand.java new file mode 100644 index 00000000000..e54f69c8c5b --- /dev/null +++ b/fcli-core/fcli-sc-sast/src/main/java/com/fortify/cli/sc_sast/scan/cli/cmd/SCSastScanPrioritizeCommand.java @@ -0,0 +1,52 @@ +/* + * Copyright 2021-2026 Open Text. + * + * The only warranties for products and services of Open Text + * and its affiliates and licensors ("Open Text") are as may + * be set forth in the express warranty statements accompanying + * such products and services. Nothing herein should be construed + * as constituting an additional warranty. Open Text shall not be + * liable for technical or editorial errors or omissions contained + * herein. The information contained herein is subject to change + * without notice. + */ +package com.fortify.cli.sc_sast.scan.cli.cmd; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fortify.cli.common.json.JsonHelper; +import com.fortify.cli.common.output.cli.mixin.OutputHelperMixins; +import com.fortify.cli.common.output.transform.IActionCommandResultSupplier; +import com.fortify.cli.sc_sast._common.output.cli.cmd.AbstractSCSastJsonNodeOutputCommand; +import com.fortify.cli.sc_sast.scan.cli.mixin.SCSastScanJobResolverMixin; +import com.fortify.cli.sc_sast.scan.helper.SCSastScanJobDescriptor; +import com.fortify.cli.ssc._common.rest.ssc.SSCUrls; + +import kong.unirest.UnirestInstance; +import lombok.Getter; +import picocli.CommandLine.Command; +import picocli.CommandLine.Mixin; + +@Command(name = "prioritize") +public class SCSastScanPrioritizeCommand extends AbstractSCSastJsonNodeOutputCommand implements IActionCommandResultSupplier { + @Getter @Mixin private OutputHelperMixins.TableNoQuery outputHelper; + @Mixin private SCSastScanJobResolverMixin.PositionalParameter scanJobResolver; + + @Override + public JsonNode getJsonNode(UnirestInstance unirest) { + SCSastScanJobDescriptor descriptor = scanJobResolver.getScanJobDescriptor(unirest); + var body = JsonHelper.getObjectMapper().createObjectNode().put("jobToken", descriptor.getJobToken()); + getSscUnirestInstance().post(SSCUrls.CLOUD_JOBS_ACTION_PRIORITIZE_JOB) + .body(body).asObject(JsonNode.class).getBody(); + return descriptor.asJsonNode(); + } + + @Override + public String getActionCommandResult() { + return "PRIORITIZED"; + } + + @Override + public boolean isSingular() { + return true; + } +} diff --git a/fcli-core/fcli-sc-sast/src/main/resources/com/fortify/cli/sc_sast/i18n/SCSastMessages.properties b/fcli-core/fcli-sc-sast/src/main/resources/com/fortify/cli/sc_sast/i18n/SCSastMessages.properties index 09b44515c70..3ceefec8648 100644 --- a/fcli-core/fcli-sc-sast/src/main/resources/com/fortify/cli/sc_sast/i18n/SCSastMessages.properties +++ b/fcli-core/fcli-sc-sast/src/main/resources/com/fortify/cli/sc_sast/i18n/SCSastMessages.properties @@ -41,6 +41,9 @@ fcli.sc-sast.scan.download.type = File type to download. Allowed values: ${COMPL fcli.sc-sast.scan.download.confirm = Confirm overwriting existing output file. fcli.sc-sast.scan.download.confirmPrompt = Do you want overwrite existing output file %s? fcli.sc-sast.scan.list.usage.header = List scan jobs. +fcli.sc-sast.scan.prioritize.usage.header = Prioritize a queued scan job. +fcli.sc-sast.scan.prioritize.usage.description = This command requires SSC permissions to manage ScanCentral SAST jobs, \ + and is equivalent to the "Prioritize" action on the SSC ScanCentral SAST jobs page. fcli.sc-sast.scan.start.usage.header = Start a SAST scan. fcli.sc-sast.scan.start.file = File containing the payload to be scanned. This must be either an MBS \ file generated through 'sourceanalyzer -export-build-session', or a package file generated through \ diff --git a/fcli-core/fcli-ssc/src/main/java/com/fortify/cli/ssc/_common/rest/ssc/SSCUrls.java b/fcli-core/fcli-ssc/src/main/java/com/fortify/cli/ssc/_common/rest/ssc/SSCUrls.java index e1c1fbad8de..e9db60326cf 100644 --- a/fcli-core/fcli-ssc/src/main/java/com/fortify/cli/ssc/_common/rest/ssc/SSCUrls.java +++ b/fcli-core/fcli-ssc/src/main/java/com/fortify/cli/ssc/_common/rest/ssc/SSCUrls.java @@ -66,6 +66,7 @@ public static String BUG_FIELD_TEMPLATE_GROUP(String bugFieldTemplateGroupId) { public static final String BULK = ApiBase + "/bulk"; public static final String CLOUD_JOBS = ApiBase + "/cloudjobs"; public static final String CLOUD_JOBS_ACTION_CANCEL = ApiBase + "/cloudjobs/action/cancel"; + public static final String CLOUD_JOBS_ACTION_PRIORITIZE_JOB = ApiBase + "/cloudjobs/action/prioritizeJob"; public static String CLOUD_JOB(String cloudJobId) { return String.format(ApiBase + "/cloudjobs/%s", cloudJobId); }