Skip to content

Commit 131ca6f

Browse files
authored
feat(telemetry): add dynamic product names for multiple extensions (aws#4742)
1 parent a271651 commit 131ca6f

File tree

5 files changed

+29
-6
lines changed

5 files changed

+29
-6
lines changed

packages/amazonq/src/extensionShared.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export async function activateShared(context: vscode.ExtensionContext) {
8989
globals.logOutputChannel = qLogChannel
9090
globals.loginManager = new LoginManager(globals.awsContext, new CredentialsStore())
9191

92-
await activateTelemetry(context, globals.awsContext, Settings.instance)
92+
await activateTelemetry(context, globals.awsContext, Settings.instance, 'Amazon Q For VS Code')
9393

9494
await initializeAuth(context, globals.loginManager, contextPrefix, undefined)
9595

packages/core/src/extensionShared.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ export async function activateShared(context: vscode.ExtensionContext, contextPr
110110
globals.regionProvider = RegionProvider.fromEndpointsProvider(makeEndpointsProvider())
111111

112112
// telemetry
113-
await activateTelemetry(context, globals.awsContext, Settings.instance)
113+
await activateTelemetry(context, globals.awsContext, Settings.instance, 'AWS Toolkit For VS Code')
114114

115115
// Create this now, but don't call vscode.window.registerUriHandler() until after all
116116
// Toolkit services have a chance to register their path handlers. #4105

packages/core/src/shared/telemetry/activation.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import { getComputeRegion, getIdeProperties, isCloud9 } from '../extensionUtilit
1616
import { openSettings, Settings } from '../settings'
1717
import { TelemetryConfig, setupTelemetryId } from './util'
1818
import { isAutomation, isReleaseVersion } from '../vscode/env'
19+
import { AWSProduct } from './clienttelemetry'
20+
import { DefaultTelemetryClient } from './telemetryClient'
1921

2022
export const noticeResponseViewSettings = localize('AWS.telemetry.notificationViewSettings', 'Settings')
2123
export const noticeResponseOk = localize('AWS.telemetry.notificationOk', 'OK')
@@ -33,8 +35,14 @@ const CURRENT_TELEMETRY_NOTICE_VERSION = 2 // eslint-disable-line @typescript-es
3335
/**
3436
* Sets up the Metrics system and initializes globals.telemetry
3537
*/
36-
export async function activate(extensionContext: vscode.ExtensionContext, awsContext: AwsContext, settings: Settings) {
38+
export async function activate(
39+
extensionContext: vscode.ExtensionContext,
40+
awsContext: AwsContext,
41+
settings: Settings,
42+
productName: AWSProduct
43+
) {
3744
const config = new TelemetryConfig(settings)
45+
DefaultTelemetryClient.productName = productName
3846
globals.telemetry = await DefaultTelemetryService.create(extensionContext, awsContext, getComputeRegion())
3947

4048
try {

packages/core/src/shared/telemetry/service-2.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@
4545
"AWS Toolkit For JetBrains",
4646
"AWS Toolkit For Eclipse",
4747
"AWS Toolkit For VisualStudio",
48-
"AWS Toolkit For VS Code"
48+
"AWS Toolkit For VS Code",
49+
"Amazon Q For JetBrains",
50+
"Amazon Q For VS Code"
4951
]
5052
},
5153
"AWSProductVersion":{

packages/core/src/shared/telemetry/telemetryClient.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import * as vscode from 'vscode'
1111
import { extensionVersion, isAutomation } from '../vscode/env'
1212
import { getLogger } from '../logger'
1313
import * as ClientTelemetry from './clienttelemetry'
14-
import { MetricDatum } from './clienttelemetry'
14+
import { AWSProduct, MetricDatum } from './clienttelemetry'
1515
import apiConfig = require('./service-2.json')
1616
import { ServiceConfigurationOptions } from 'aws-sdk/lib/service'
1717
import globals from '../extensionGlobals'
@@ -56,7 +56,20 @@ export type TelemetryClient = ClassToInterfaceType<DefaultTelemetryClient>
5656
export class DefaultTelemetryClient implements TelemetryClient {
5757
private static readonly defaultIdentityPool = 'us-east-1:820fd6d1-95c0-4ca4-bffb-3f01d32da842'
5858
private static readonly defaultTelemetryEndpoint = 'https://client-telemetry.us-east-1.amazonaws.com'
59-
private static readonly productName = 'AWS Toolkit For VS Code'
59+
60+
static #productName: AWSProduct
61+
62+
public static set productName(val: AWSProduct) {
63+
getLogger().info(`Telemetry product: ${val}`)
64+
this.#productName = val
65+
}
66+
67+
public static get productName() {
68+
if (!this.#productName) {
69+
throw new Error('DefaultTelemetryClient.productName is not initialized.')
70+
}
71+
return this.#productName
72+
}
6073

6174
private static initializeConfig(): TelemetryConfiguration {
6275
const settings = DevSettings.instance

0 commit comments

Comments
 (0)