Skip to content

Commit

Permalink
feat(extensibility): Use ExceptionSummaryService in DefaultOrchestrat…
Browse files Browse the repository at this point in the history
…ionProcessor to provide custom user messages on exceptions (#4929)

* feat(extensibility): Use ExceptionSummaryService in DefaultOrchestrationProcessor to provide custom user messages on exceptions

* fix(plugins): Bump korkVersion

* fix(plugins): Bump korkVersion
  • Loading branch information
jonsie committed Sep 25, 2020
1 parent 939c43a commit 0145e3d
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 7 deletions.
1 change: 1 addition & 0 deletions clouddriver-core/clouddriver-core.gradle
@@ -1,4 +1,5 @@
dependencies {
api("com.netflix.spinnaker.kork:kork-api")
api("com.netflix.spinnaker.kork:kork-plugins")

implementation project(":cats:cats-core")
Expand Down
Expand Up @@ -37,6 +37,7 @@ import com.netflix.spinnaker.clouddriver.saga.persistence.SagaRepository
import com.netflix.spinnaker.clouddriver.security.AccountCredentialsRepository
import com.netflix.spinnaker.clouddriver.security.AllowedAccountsValidator
import com.netflix.spinnaker.kork.web.context.RequestContextProvider
import com.netflix.spinnaker.kork.web.exceptions.ExceptionSummaryService
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.context.ApplicationContext
import org.springframework.context.annotation.Bean
Expand Down Expand Up @@ -67,7 +68,8 @@ class DeployConfiguration {
Optional<Collection<OperationEventHandler>> operationEventHandlers,
ObjectMapper objectMapper,
ExceptionClassifier exceptionClassifier,
RequestContextProvider contextProvider
RequestContextProvider contextProvider,
ExceptionSummaryService exceptionSummaryService
) {
new DefaultOrchestrationProcessor(
taskRepository,
Expand All @@ -76,7 +78,8 @@ class DeployConfiguration {
operationEventHandlers,
objectMapper,
exceptionClassifier,
contextProvider
contextProvider,
exceptionSummaryService
)
}

Expand Down
Expand Up @@ -25,8 +25,9 @@ import com.netflix.spinnaker.clouddriver.event.exceptions.DuplicateEventAggregat
import com.netflix.spinnaker.clouddriver.metrics.TimedCallable
import com.netflix.spinnaker.clouddriver.orchestration.events.OperationEvent
import com.netflix.spinnaker.clouddriver.orchestration.events.OperationEventHandler
import com.netflix.spinnaker.kork.exceptions.ExceptionSummary
import com.netflix.spinnaker.kork.api.exceptions.ExceptionSummary
import com.netflix.spinnaker.kork.web.context.RequestContextProvider
import com.netflix.spinnaker.kork.web.exceptions.ExceptionSummaryService
import com.netflix.spinnaker.security.AuthenticatedRequest
import groovy.transform.Canonical
import groovy.util.logging.Slf4j
Expand Down Expand Up @@ -64,6 +65,7 @@ class DefaultOrchestrationProcessor implements OrchestrationProcessor {
private final ObjectMapper objectMapper
private final ExceptionClassifier exceptionClassifier
private final RequestContextProvider contextProvider
private final ExceptionSummaryService exceptionSummaryService

DefaultOrchestrationProcessor(
TaskRepository taskRepository,
Expand All @@ -72,7 +74,8 @@ class DefaultOrchestrationProcessor implements OrchestrationProcessor {
Optional<Collection<OperationEventHandler>> operationEventHandlers,
ObjectMapper objectMapper,
ExceptionClassifier exceptionClassifier,
RequestContextProvider contextProvider
RequestContextProvider contextProvider,
ExceptionSummaryService exceptionSummaryService
) {
this.taskRepository = taskRepository
this.applicationContext = applicationContext
Expand All @@ -81,6 +84,7 @@ class DefaultOrchestrationProcessor implements OrchestrationProcessor {
this.objectMapper = objectMapper
this.exceptionClassifier = exceptionClassifier
this.contextProvider = contextProvider
this.exceptionSummaryService = exceptionSummaryService
}

@Override
Expand Down Expand Up @@ -213,7 +217,7 @@ class DefaultOrchestrationProcessor implements OrchestrationProcessor {
* TODO(rz): Not 100% sure we should keep these two methods.
*/
Map<String, Object> extractExceptionSummary(Throwable e, String userMessage) {
def summary = ExceptionSummary.from(e)
ExceptionSummary summary = exceptionSummaryService.summary(e)
Map<String, Object> map = objectMapper.convertValue(summary, Map)
map["message"] = userMessage
map["type"] = "EXCEPTION"
Expand Down
Expand Up @@ -24,6 +24,8 @@ import com.netflix.spinnaker.clouddriver.data.task.SagaId
import com.netflix.spinnaker.clouddriver.data.task.TaskRepository
import com.netflix.spinnaker.kork.dynamicconfig.DynamicConfigService
import com.netflix.spinnaker.kork.web.context.AuthenticatedRequestContextProvider
import com.netflix.spinnaker.kork.web.exceptions.ExceptionMessageDecorator
import com.netflix.spinnaker.kork.web.exceptions.ExceptionSummaryService
import com.netflix.spinnaker.security.AuthenticatedRequest
import org.slf4j.MDC
import org.springframework.beans.factory.config.AutowireCapableBeanFactory
Expand All @@ -47,6 +49,8 @@ class DefaultOrchestrationProcessorSpec extends Specification {

DynamicConfigService dynamicConfigService

ExceptionSummaryService exceptionSummaryService

String taskKey
private AuthenticatedRequestContextProvider contextProvider

Expand All @@ -58,6 +62,7 @@ class DefaultOrchestrationProcessorSpec extends Specification {
applicationContext.getAutowireCapableBeanFactory() >> Mock(AutowireCapableBeanFactory)
dynamicConfigService = Mock(DynamicConfigService)
contextProvider = new AuthenticatedRequestContextProvider()
exceptionSummaryService = new ExceptionSummaryService(Mock(ExceptionMessageDecorator))

processor = new DefaultOrchestrationProcessor(
taskRepository,
Expand All @@ -68,7 +73,8 @@ class DefaultOrchestrationProcessorSpec extends Specification {
new ExceptionClassifier(new ExceptionClassifierConfigurationProperties(
retryableClasses: [RetryableException.class.getName()]
), dynamicConfigService),
contextProvider
contextProvider,
exceptionSummaryService
)
}

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
@@ -1,5 +1,5 @@
fiatVersion=1.23.0
korkVersion=7.70.0
korkVersion=7.72.0
org.gradle.parallel=true
spinnakerGradleVersion=8.6.0
targetJava11=true
Expand Down

0 comments on commit 0145e3d

Please sign in to comment.