diff --git a/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/scan/helper/FoDScanHelper.java b/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/scan/helper/FoDScanHelper.java index 9fca985aa6..6c1552bf90 100644 --- a/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/scan/helper/FoDScanHelper.java +++ b/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/scan/helper/FoDScanHelper.java @@ -146,7 +146,7 @@ public static FoDScanAssessmentTypeDescriptor getEntitlementToUse(UnirestInstanc Integer assessmentTypeId = 0; LOG.info("Finding/Validating entitlement to use."); - var atd = FoDReleaseAssessmentTypeHelper.getAssessmentTypeDescriptor(unirest, relId, scanType, + var atd = FoDReleaseAssessmentTypeHelper.getAssessmentTypeDescriptor(unirest, relId, scanType, entitlementFrequencyType, assessmentType); assessmentTypeId = atd.getAssessmentTypeId(); entitlementIdToUse = atd.getEntitlementId(); @@ -191,7 +191,7 @@ private static final FoDScanDescriptor getDescriptor(JsonNode node) { return JsonHelper.treeToValue(node, FoDScanDescriptor.class); } - private static final FoDScanDescriptor getEmptyDescriptor() { + public static final FoDScanDescriptor getEmptyDescriptor() { return JsonHelper.treeToValue(getObjectMapper().createObjectNode(), FoDScanDescriptor.class); } diff --git a/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/dast_scan/cli/cmd/FoDDastAutomatedScanStartCommand.java b/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/dast_scan/cli/cmd/FoDDastAutomatedScanStartCommand.java index c68709a4f1..1c772ea432 100644 --- a/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/dast_scan/cli/cmd/FoDDastAutomatedScanStartCommand.java +++ b/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/dast_scan/cli/cmd/FoDDastAutomatedScanStartCommand.java @@ -17,6 +17,8 @@ import com.fortify.cli.fod._common.scan.cli.cmd.AbstractFoDScanStartCommand; import com.fortify.cli.fod._common.scan.cli.mixin.FoDInProgressScanActionTypeMixins; import com.fortify.cli.fod._common.scan.helper.FoDScanDescriptor; +import com.fortify.cli.fod._common.scan.helper.FoDScanHelper; +import com.fortify.cli.fod._common.scan.helper.FoDScanType; import com.fortify.cli.fod._common.scan.helper.dast.FoDScanDastAutomatedHelper; import com.fortify.cli.fod._common.util.FoDEnums; import com.fortify.cli.fod.release.helper.FoDReleaseDescriptor; @@ -50,15 +52,21 @@ protected FoDScanDescriptor startScan(UnirestInstance unirest, FoDReleaseDescrip // get current setup to ensure the scan has been configured FoDScanDastAutomatedHelper.getSetupDescriptor(unirest, relId); - // check if scan is already in progress - FoDScanDescriptor scan = FoDScanDastAutomatedHelper.handleInProgressScan(unirest, releaseDescriptor, - inProgressScanActionType.getInProgressScanActionType(), progressWriter, maxAttempts, - waitInterval); + // check if there have been any scans previously run for this release + if (!FoDScanDastAutomatedHelper.getLatestScanDescriptor(unirest, relId, FoDScanType.Dynamic, true) + .equals(FoDScanHelper.getEmptyDescriptor())) { - if (scan != null && scan.getAnalysisStatusType().equals("In_Progress")) { - if (inProgressScanActionType.getInProgressScanActionType() == FoDEnums.InProgressScanActionType.DoNotStartScan) { - scanAction = "NOT_STARTED_SCAN_IN_PROGRESS"; - return scan; + // if there is an in progress scan, handle according to the specified action type + FoDScanDescriptor scan = FoDScanDastAutomatedHelper.handleInProgressScan(unirest, releaseDescriptor, + inProgressScanActionType.getInProgressScanActionType(), progressWriter, maxAttempts, + waitInterval); + + // if the action was to not start a new scan, return the in progress scan descriptor + if (scan != null && scan.getAnalysisStatusType().equals("In_Progress")) { + if (inProgressScanActionType.getInProgressScanActionType() == FoDEnums.InProgressScanActionType.DoNotStartScan) { + scanAction = "NOT_STARTED_SCAN_IN_PROGRESS"; + return scan; + } } } @@ -70,4 +78,5 @@ protected FoDScanDescriptor startScan(UnirestInstance unirest, FoDReleaseDescrip public final String getActionCommandResult() { return scanAction; } + } diff --git a/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/microservice/cli/cmd/FoDMicroserviceCreateCommand.java b/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/microservice/cli/cmd/FoDMicroserviceCreateCommand.java index 6ce2013820..64b2031dcc 100644 --- a/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/microservice/cli/cmd/FoDMicroserviceCreateCommand.java +++ b/fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/microservice/cli/cmd/FoDMicroserviceCreateCommand.java @@ -52,6 +52,10 @@ public JsonNode getJsonNode(UnirestInstance unirest) { } FoDAppDescriptor appDescriptor = qualifiedMicroserviceNameResolver.getAppDescriptor(unirest, true); FoDQualifiedMicroserviceNameDescriptor qualifiedMicroserviceNameDescriptor = qualifiedMicroserviceNameResolver.getQualifiedMicroserviceNameDescriptor(); + // if the application is not microservice enabled, return the application descriptor with an additional field indicating that the microservice was not created due to the application not being microservice enabled + if (!appDescriptor.isHasMicroservices()) { + return appDescriptor.asObjectNode().put("__action__", "NOT_MICROSERVICE_ENABLED"); + } FoDMicroserviceUpdateRequest msCreateRequest = FoDMicroserviceUpdateRequest.builder() .microserviceName(qualifiedMicroserviceNameDescriptor.getMicroserviceName()) .attributes(FoDAttributeHelper.getAttributesNode(unirest, FoDEnums.AttributeTypes.Microservice,