Skip to content

Commit

Permalink
InconsistentStateDetector moved to core
Browse files Browse the repository at this point in the history
  • Loading branch information
arkadius committed Feb 18, 2025
1 parent 79834de commit ce37f72
Show file tree
Hide file tree
Showing 25 changed files with 373 additions and 425 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ sealed trait StateQueryForAllScenariosSupport

trait StateQueryForAllScenariosSupported extends StateQueryForAllScenariosSupport {

def getAllProcessesStates()(
def getAllDeploymentStatuses()(
implicit freshnessPolicy: DataFreshnessPolicy
): Future[WithDataFreshnessStatus[Map[ProcessName, List[StatusDetails]]]]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ case class StatusDetails(
startTime: Option[Long] = None,
errors: List[String] = List.empty
) {

def deploymentIdUnsafe: DeploymentId =
deploymentId.getOrElse(throw new IllegalStateException(s"deploymentId is missing"))

def externalDeploymentIdUnsafe: ExternalDeploymentId =
externalDeploymentId.getOrElse(throw new IllegalStateException(s"externalDeploymentId is missing"))

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import pl.touk.nussknacker.engine.api.process.VersionId

import java.net.URI

// FIXME abr separate core statuses and DM statuses - the same for presentation
object SimpleStateStatus {

def fromDeploymentStatus(deploymentStatus: DeploymentStatus): StateStatus = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ class ManagementResources(
dispatcher: DeploymentManagerDispatcher,
metricRegistry: MetricRegistry,
scenarioTestServices: ProcessingTypeDataProvider[ScenarioTestService, _],
typeToConfig: ProcessingTypeDataProvider[ModelData, _]
)(implicit val ec: ExecutionContext)
extends Directives
with LazyLogging
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import pl.touk.nussknacker.ui.process.ProcessService.{
}
import pl.touk.nussknacker.ui.process.ScenarioWithDetailsConversions._
import pl.touk.nussknacker.ui.process._
import pl.touk.nussknacker.ui.process.deployment.ScenarioStatusProvider
import pl.touk.nussknacker.ui.process.scenariostatus.ScenarioStatusProvider
import pl.touk.nussknacker.ui.security.api.LoggedUser
import pl.touk.nussknacker.ui.util._

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import pl.touk.nussknacker.ui.api.ProcessesResources.ProcessUnmarshallingError
import pl.touk.nussknacker.ui.api.ScenarioStatusPresenter
import pl.touk.nussknacker.ui.process.ProcessService._
import pl.touk.nussknacker.ui.process.ScenarioWithDetailsConversions._
import pl.touk.nussknacker.ui.process.deployment.ScenarioStatusProvider
import pl.touk.nussknacker.ui.process.scenariostatus.ScenarioStatusProvider
import pl.touk.nussknacker.ui.process.exception.{ProcessIllegalAction, ProcessValidationError}
import pl.touk.nussknacker.ui.process.label.ScenarioLabel
import pl.touk.nussknacker.ui.process.marshall.CanonicalProcessConverter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ import pl.touk.nussknacker.engine.api.Comment
import pl.touk.nussknacker.engine.api.deployment._
import pl.touk.nussknacker.engine.api.modelinfo.ModelInfo
import pl.touk.nussknacker.engine.api.process._
import pl.touk.nussknacker.restmodel.scenariodetails.ScenarioStatusDto
import pl.touk.nussknacker.ui.api.{DeploymentCommentSettings, ListenerApiUser}
import pl.touk.nussknacker.ui.listener.ProcessChangeEvent.{OnActionExecutionFinished, OnActionFailed, OnActionSuccess}
import pl.touk.nussknacker.ui.listener.{ProcessChangeListener, User => ListenerUser}
import pl.touk.nussknacker.ui.process.exception.ProcessIllegalAction
import pl.touk.nussknacker.ui.process.processingtype.provider.ProcessingTypeDataProvider
import pl.touk.nussknacker.ui.process.repository.ProcessDBQueryRepository.ProcessNotFoundError
import pl.touk.nussknacker.ui.process.repository._
import pl.touk.nussknacker.ui.process.scenariostatus.{ScenarioStatusProvider, ScenarioStatusWithAllowedActions}
import pl.touk.nussknacker.ui.security.api.{AdminUser, LoggedUser, NussknackerInternalUser}
import slick.dbio.DBIOAction

Expand Down Expand Up @@ -229,11 +229,11 @@ class ActionService(
private def checkIfCanPerformActionInState(
actionName: ScenarioActionName,
processDetails: ScenarioWithDetailsEntity[LatestScenarioDetailsShape],
statusWithAllowedActions: StatusWithAllowedActions
statusWithAllowedActions: ScenarioStatusWithAllowedActions
): Unit = {
if (!statusWithAllowedActions.allowedActions.contains(actionName)) {
logger.debug(
s"Action: $actionName on process: ${processDetails.name} not allowed in ${statusWithAllowedActions.status} state"
s"Action: $actionName on process: ${processDetails.name} not allowed in ${statusWithAllowedActions.scenarioStatus} state"
)
throw ProcessIllegalAction(actionName, processDetails.name, statusWithAllowedActions)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package pl.touk.nussknacker.ui.process.exception
import pl.touk.nussknacker.engine.api.deployment.{ScenarioActionName, StateStatus}
import pl.touk.nussknacker.engine.api.process.ProcessName
import pl.touk.nussknacker.ui.IllegalOperationError
import pl.touk.nussknacker.ui.process.deployment.StatusWithAllowedActions
import pl.touk.nussknacker.ui.process.scenariostatus.ScenarioStatusWithAllowedActions

final case class ProcessIllegalAction(message: String) extends IllegalOperationError(message, details = "")

Expand All @@ -12,10 +12,10 @@ object ProcessIllegalAction {
def apply(
actionName: ScenarioActionName,
processName: ProcessName,
statusWithAllowedActions: StatusWithAllowedActions
ScenarioStatusWithAllowedActions: ScenarioStatusWithAllowedActions
): ProcessIllegalAction =
ProcessIllegalAction(
s"Action: $actionName is not allowed in scenario ($processName) state: ${statusWithAllowedActions.status}, allowed actions: ${statusWithAllowedActions.allowedActions
s"Action: $actionName is not allowed in scenario ($processName) state: ${ScenarioStatusWithAllowedActions.scenarioStatus}, allowed actions: ${ScenarioStatusWithAllowedActions.allowedActions
.map(_.value)
.mkString(",")}."
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -572,11 +572,11 @@ class PeriodicProcessService(
case supported: StateQueryForAllScenariosSupported =>
new StateQueryForAllScenariosSupported {

override def getAllProcessesStates()(
override def getAllDeploymentStatuses()(
implicit freshnessPolicy: DataFreshnessPolicy
): Future[WithDataFreshnessStatus[Map[ProcessName, List[StatusDetails]]]] = {
for {
allStatusDetailsInDelegate <- supported.getAllProcessesStates()
allStatusDetailsInDelegate <- supported.getAllDeploymentStatuses()
allStatusDetailsInPeriodic <- mergeStatusWithDeployments(allStatusDetailsInDelegate.value)
result = allStatusDetailsInPeriodic.map { case (name, status) => (name, List(status)) }
} yield allStatusDetailsInDelegate.map(_ => result)
Expand Down
Loading

0 comments on commit ce37f72

Please sign in to comment.