Skip to content

Commit 804dca8

Browse files
dhasani23David Hasani
and
David Hasani
authored
fix(amazonq): add field for builderId vs IdC (#4249)
* fix(amazonq): improve telemetry * remove unused import * address comments * fix detekt issue --------- Co-authored-by: David Hasani <davhasan@amazon.com>
1 parent 3a1dc8a commit 804dca8

File tree

6 files changed

+21
-179
lines changed

6 files changed

+21
-179
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ mockito = "5.10.0"
2222
mockitoKotlin = "5.2.1"
2323
mockk = "1.13.8"
2424
node-gradle = "7.0.1"
25-
telemetryGenerator = "1.0.197"
25+
telemetryGenerator = "1.0.201"
2626
testLogger = "4.0.0"
2727
testRetry = "1.5.2"
2828
# test-only; platform provides slf4j transitively at runtime. <233, 1.7.36; >=233, 2.0.9

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/ArtifactHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ class ArtifactHandler(private val project: Project, private val clientAdaptor: G
137137
)
138138
dialog.isModal = true
139139

140-
telemetry.vcsDiffViewerVisible(jobId)
140+
telemetry.vcsDiffViewerVisible(jobId) // download succeeded
141141
if (dialog.showAndGet()) {
142142
telemetry.vcsViewerSubmitted(jobId)
143143
} else {

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,19 +143,13 @@ class CodeModernizerSession(
143143
LOG.warn { "Job was cancelled by user before start job was called" }
144144
CodeModernizerStartJobResult.Cancelled
145145
} else {
146-
val errorMessage = "Failed to start job"
147-
LOG.error(e) { errorMessage }
148146
state.putJobHistory(sessionContext, TransformationStatus.FAILED)
149147
state.currentJobStatus = TransformationStatus.FAILED
150-
telemetry.error(errorMessage)
151148
CodeModernizerStartJobResult.UnableToStartJob(e.message.toString())
152149
}
153150
} catch (e: Exception) {
154-
val errorMessage = "Failed to start job"
155-
LOG.error(e) { errorMessage }
156151
state.putJobHistory(sessionContext, TransformationStatus.FAILED)
157152
state.currentJobStatus = TransformationStatus.FAILED
158-
telemetry.error(errorMessage)
159153
CodeModernizerStartJobResult.UnableToStartJob(e.message.toString())
160154
} finally {
161155
deleteUploadArtifact(payload)
@@ -273,6 +267,8 @@ class CodeModernizerSession(
273267
) { shouldStop.get() }
274268
} catch (e: Exception) {
275269
val errorMessage = "Unexpected error when uploading artifact to S3: ${e.localizedMessage}"
270+
LOG.error { errorMessage }
271+
// emit this metric here manually since we don't use callApi(), which emits its own metric
276272
telemetry.apiError(errorMessage, CodeTransformApiNames.UploadZip, createUploadUrlResponse.uploadId())
277273
throw e // pass along error to callee
278274
}

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformTelemetryManager.kt

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import com.intellij.openapi.components.service
88
import com.intellij.openapi.project.Project
99
import org.apache.commons.codec.digest.DigestUtils
1010
import software.amazon.awssdk.services.codewhispererruntime.model.TransformationStatus
11+
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.ActiveConnection
12+
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.ActiveConnectionType
13+
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.BearerTokenFeatureSet
14+
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.checkBearerConnectionValidity
1115
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CustomerSelection
1216
import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId
1317
import software.aws.toolkits.jetbrains.services.codemodernizer.model.ValidationResult
@@ -20,9 +24,9 @@ import software.aws.toolkits.telemetry.CodeTransformJavaTargetVersionsAllowed
2024
import software.aws.toolkits.telemetry.CodeTransformMavenBuildCommand
2125
import software.aws.toolkits.telemetry.CodeTransformPatchViewerCancelSrcComponents
2226
import software.aws.toolkits.telemetry.CodeTransformPreValidationError
23-
import software.aws.toolkits.telemetry.CodeTransformStartSrcComponents
2427
import software.aws.toolkits.telemetry.CodeTransformVCSViewerSrcComponents
2528
import software.aws.toolkits.telemetry.CodetransformTelemetry
29+
import software.aws.toolkits.telemetry.CredentialSourceId
2630
import software.aws.toolkits.telemetry.Result
2731
import java.time.Instant
2832
import java.util.Base64
@@ -34,14 +38,6 @@ import java.util.Base64
3438
class CodeTransformTelemetryManager(private val project: Project) {
3539
private val sessionId get() = CodeTransformTelemetryState.instance.getSessionId()
3640
private val currentJobStatus get() = CodeModernizerSessionState.getInstance(project).currentJobStatus.toString()
37-
fun sendUserClickedTelemetry(srcStartComponent: CodeTransformStartSrcComponents) {
38-
CodeTransformTelemetryState.instance.setStartTime()
39-
CodeTransformTelemetryState.instance.setSessionId()
40-
CodetransformTelemetry.isDoubleClickedToTriggerUserModal(
41-
codeTransformStartSrcComponents = srcStartComponent,
42-
codeTransformSessionId = sessionId,
43-
)
44-
}
4541

4642
private fun getProjectHash(customerSelection: CustomerSelection) = Base64.getEncoder().encodeToString(
4743
DigestUtils.sha256(customerSelection.configurationFile.toNioPath().toAbsolutePath().toString())
@@ -183,10 +179,16 @@ class CodeTransformTelemetryManager(private val project: Project) {
183179
}
184180

185181
fun dependenciesCopied() = CodetransformTelemetry.dependenciesCopied(codeTransformSessionId = sessionId)
186-
fun configurationFileSelectedChanged() = CodetransformTelemetry.configurationFileSelectedChanged(codeTransformSessionId = sessionId)
187-
fun jobIsStartedFromUserPopupClick() = CodetransformTelemetry.jobIsStartedFromUserPopupClick(codeTransformSessionId = sessionId)
188-
fun jobIsCanceledFromUserPopupClick() = CodetransformTelemetry.jobIsCanceledFromUserPopupClick(codeTransformSessionId = sessionId)
189-
fun jobIsStartedFromChatPrompt() = CodetransformTelemetry.jobIsStartedFromChatPrompt(codeTransformSessionId = sessionId)
182+
fun jobIsStartedFromChatPrompt() {
183+
val connection = checkBearerConnectionValidity(project, BearerTokenFeatureSet.Q)
184+
var authType: CredentialSourceId? = null
185+
if (connection.connectionType == ActiveConnectionType.IAM_IDC && connection is ActiveConnection.ValidBearer) {
186+
authType = CredentialSourceId.IamIdentityCenter
187+
} else if (connection.connectionType == ActiveConnectionType.BUILDER_ID && connection is ActiveConnection.ValidBearer) {
188+
authType = CredentialSourceId.AwsId
189+
}
190+
CodetransformTelemetry.jobIsStartedFromChatPrompt(codeTransformSessionId = sessionId, credentialSourceId = authType)
191+
}
190192

191193
companion object {
192194
fun getInstance(project: Project): CodeTransformTelemetryManager = project.service()

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,13 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.toVirtualFile
5454
import software.aws.toolkits.jetbrains.services.codemodernizer.tryGetJdk
5555
import software.aws.toolkits.jetbrains.services.cwc.messages.ChatMessageType
5656
import software.aws.toolkits.resources.message
57-
import software.aws.toolkits.telemetry.CodeTransformStartSrcComponents
5857

5958
class CodeTransformChatController(
6059
private val context: AmazonQAppInitContext,
6160
private val chatSessionStorage: ChatSessionStorage
6261
) : InboundAppMessagesHandler {
6362
private val authController = AuthController()
6463
private val messagePublisher = context.messagesFromAppToUi
65-
private val telemetry = CodeTransformTelemetryManager.getInstance(context.project)
6664
private val codeModernizerManager = CodeModernizerManager.getInstance(context.project)
6765
private val codeTransformChatHelper = CodeTransformChatHelper(context.messagesFromAppToUi, chatSessionStorage)
6866
private val artifactHandler = ArtifactHandler(context.project, GumbyClient.getInstance(context.project))
@@ -72,9 +70,6 @@ class CodeTransformChatController(
7270
return
7371
}
7472

75-
CodeTransformTelemetryManager.getInstance(context.project).jobIsStartedFromChatPrompt()
76-
77-
telemetry.sendUserClickedTelemetry(CodeTransformStartSrcComponents.ChatPrompt)
7873
codeTransformChatHelper.setActiveCodeTransformTabId(message.tabId)
7974

8075
if (!message.startNewTransform) {
@@ -108,6 +103,8 @@ class CodeTransformChatController(
108103

109104
delay(500)
110105

106+
CodeTransformTelemetryManager.getInstance(context.project).jobIsStartedFromChatPrompt()
107+
111108
codeTransformChatHelper.addNewMessage(
112109
buildUserInputChatContent(context.project, validationResult)
113110
)

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/ui/components/PreCodeTransformUserDialog.kt

Lines changed: 0 additions & 153 deletions
This file was deleted.

0 commit comments

Comments
 (0)