in aws-iotcoredeviceadvisor-suitedefinition/src/main/kotlin/software/amazon/iotcoredeviceadvisor/suitedefinition/UpdateHandler.kt [23:65]
override fun handleRequest(
proxy: AmazonWebServicesClientProxy,
request: ResourceHandlerRequest<ResourceModel>,
callbackContext: CallbackContext?,
logger: Logger
): ProgressEvent<ResourceModel, CallbackContext?> {
logger.log("Update SuiteDefinition Request: $request")
val deviceAdvisorClient = getDeviceAdvisorClient()
val prevModel = request.previousResourceState
val model = request.desiredResourceState
val suiteDefinitionId = prevModel.suiteDefinitionId
logger.log("Getting SuiteDefinition of id $suiteDefinitionId")
if (suiteDefinitionId.isNullOrEmpty()) {
throw ResourceNotFoundException(ResourceModel.TYPE_NAME, null)
}
lateinit var suiteDefinition: GetSuiteDefinitionResponse
try {
suiteDefinition = getSuiteDefinition(proxy, deviceAdvisorClient, suiteDefinitionId)
} catch (e: Exception) {
handleDeviceAdvisorException(e)
}
val suiteDefinitionArn = suiteDefinition.suiteDefinitionArn()
val oldTags = getOldSuiteDefinitionTags(proxy, deviceAdvisorClient, suiteDefinitionId)
val newTags = tagsFromModel(model.tags)
val updateRequest: UpdateSuiteDefinitionRequest = UpdateSuiteDefinitionRequest.builder()
.suiteDefinitionId(suiteDefinitionId)
.suiteDefinitionConfiguration(convertToSuiteDefinitionConfiguration(model))
.build()
try {
updateTags(oldTags, newTags, suiteDefinitionArn, proxy, deviceAdvisorClient, logger)
proxy.injectCredentialsAndInvokeV2(updateRequest, deviceAdvisorClient::updateSuiteDefinition)
} catch (e: Exception) {
resetTags(oldTags, newTags, suiteDefinitionArn, proxy, deviceAdvisorClient, logger)
handleDeviceAdvisorException(e)
}
return ProgressEvent.defaultSuccessHandler(model)
}