Skip to content

Commit 1cb521c

Browse files
authored
Add additional metrics for checking sam version (#3808)
* added additional metrics * feedback changes * fixed detekt
1 parent 24cfc20 commit 1cb521c

File tree

4 files changed

+40
-4
lines changed

4 files changed

+40
-4
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ kotlinCoroutines = "1.6.4"
2020
mockito = "4.6.1"
2121
mockitoKotlin = "4.0.0"
2222
mockk = "1.13.4"
23-
telemetryGenerator = "1.0.136"
23+
telemetryGenerator = "1.0.140"
2424
testLogger = "3.1.0"
2525
testRetry = "1.5.2"
2626
slf4j = "1.7.36"

jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/actions/SyncServerlessAppAction.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@ class SyncServerlessAppAction : AnAction(
7777
content = (samExecutable as ExecutableInstance.BadExecutable).validationError
7878
)
7979
LOG.warn { "Invalid SAM CLI Executable" }
80+
SamTelemetry.sync(
81+
project = project,
82+
result = Result.Failed,
83+
syncedResources = SyncedResources.AllResources,
84+
reason = "InvalidSamCli"
85+
)
8086
return@thenAccept
8187
}
8288

@@ -110,6 +116,12 @@ class SyncServerlessAppAction : AnAction(
110116
}
111117
)
112118
)
119+
SamTelemetry.sync(
120+
project = project,
121+
result = Result.Failed,
122+
syncedResources = SyncedResources.AllResources,
123+
reason = "OldSamCliVersion"
124+
)
113125
return@thenAccept
114126
}
115127

@@ -118,6 +130,12 @@ class SyncServerlessAppAction : AnAction(
118130
validateTemplateFile(project, templateFile)?.let {
119131
notifyError(content = it, project = project)
120132
LOG.warn { it }
133+
SamTelemetry.sync(
134+
project = project,
135+
result = Result.Failed,
136+
syncedResources = SyncedResources.AllResources,
137+
reason = "UnparseableTemplateFile"
138+
)
121139
return@thenAccept
122140
}
123141

@@ -190,7 +208,7 @@ class SyncServerlessAppAction : AnAction(
190208
syncedResources = syncedResourceType,
191209
lambdaPackageType = lambdaType,
192210
version = SamCommon.getVersionString(),
193-
reason = "Docker not available"
211+
reason = "DockerNotFound"
194212
)
195213
return@runInEdt
196214
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/sam/SamVersionCache.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import software.aws.toolkits.jetbrains.core.executables.ExecutableCommon
1010
import software.aws.toolkits.jetbrains.core.executables.ExecutableType
1111
import software.aws.toolkits.jetbrains.utils.FileInfoCache
1212
import software.aws.toolkits.resources.message
13+
import software.aws.toolkits.telemetry.Result
14+
import software.aws.toolkits.telemetry.SamTelemetry
1315

1416
object SamVersionCache : FileInfoCache<SemVer>() {
1517
override fun getFileInfo(path: String): SemVer {
@@ -21,17 +23,25 @@ object SamVersionCache : FileInfoCache<SemVer>() {
2123
if (process.exitCode != 0) {
2224
val output = process.stderr.trimEnd()
2325
if (output.contains(SamCommon.SAM_INVALID_OPTION_SUBSTRING)) {
26+
SamTelemetry.info(result = Result.Failed, reason = "SamCliUnexpectedOutput")
2427
throw IllegalStateException(message("executableCommon.unexpected_output", SamCommon.SAM_NAME, output))
2528
}
2629
throw IllegalStateException(output)
2730
} else {
2831
val output = process.stdout.trimEnd()
2932
if (output.isEmpty()) {
33+
SamTelemetry.info(result = Result.Failed, reason = "SamCliNoOutput")
3034
throw IllegalStateException(message("executableCommon.empty_info", SamCommon.SAM_NAME))
3135
}
3236
val tree = SamCommon.mapper.readTree(output)
3337
val version = tree.get(SamCommon.SAM_INFO_VERSION_KEY).asText()
34-
return SemVer.parseFromText(version) ?: throw IllegalStateException(message("executableCommon.version_parse_error", SamCommon.SAM_NAME, version))
38+
val semVerVersion = SemVer.parseFromText(version)
39+
if (semVerVersion == null) {
40+
SamTelemetry.info(result = Result.Failed, reason = "UndetectableSamCliVersion")
41+
} else {
42+
SamTelemetry.info(result = Result.Succeeded)
43+
}
44+
return semVerVersion ?: throw IllegalStateException(message("executableCommon.version_parse_error", SamCommon.SAM_NAME, version))
3545
}
3646
}
3747
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SamInitRunner.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import software.aws.toolkits.jetbrains.services.lambda.sam.SamExecutable
1818
import software.aws.toolkits.jetbrains.services.lambda.sam.samInitCommand
1919
import software.aws.toolkits.jetbrains.services.schemas.SchemaTemplateParameters
2020
import software.aws.toolkits.resources.message
21+
import software.aws.toolkits.telemetry.Result
22+
import software.aws.toolkits.telemetry.SamTelemetry
2123

2224
object SamInitRunner {
2325
private val LOG = getLogger<SamInitRunner>()
@@ -33,7 +35,13 @@ object SamInitRunner {
3335
ExecutableManager.getInstance().getExecutable<SamExecutable>().thenApply {
3436
val samExecutable = when (it) {
3537
is ExecutableInstance.Executable -> it
36-
else -> throw RuntimeException((it as? ExecutableInstance.BadExecutable)?.validationError)
38+
else -> {
39+
SamTelemetry.init(
40+
result = Result.Failed,
41+
reason = "InvalidSamCli"
42+
)
43+
throw RuntimeException((it as? ExecutableInstance.BadExecutable)?.validationError)
44+
}
3745
}
3846

3947
val extraContent = if (schemaParameters?.templateExtraContext != null) {

0 commit comments

Comments
 (0)