Merge pull request #186450 from sandeep-sen/main

Enabling tag telemetry for Go
This commit is contained in:
Isidor Nikolic
2023-07-20 17:06:58 +02:00
committed by GitHub
@@ -244,6 +244,28 @@ const PyModulesToLookFor = [
'playwright'
];
const GoModulesToLookFor = [
'github.com/Azure/azure-sdk-for-go/sdk/storage/azblob',
'github.com/Azure/azure-sdk-for-go/sdk/storage/azfile',
'github.com/Azure/azure-sdk-for-go/sdk/storage/azqueue',
'github.com/Azure/azure-sdk-for-go/sdk/tracing/azotel',
'github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azadmin',
'github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates',
'github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys',
'github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets',
'github.com/Azure/azure-sdk-for-go/sdk/monitor/azquery',
'github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs',
'github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus',
'github.com/Azure/azure-sdk-for-go/sdk/data/azappconfig',
'github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos',
'github.com/Azure/azure-sdk-for-go/sdk/data/aztables',
'github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry',
'github.com/Azure/azure-sdk-for-go/sdk/cognitiveservices/azopenai',
'github.com/Azure/azure-sdk-for-go/sdk/azidentity',
'github.com/Azure/azure-sdk-for-go/sdk/azcore'
];
export class WorkspaceTagsService implements IWorkspaceTagsService {
declare readonly _serviceBrand: undefined;
private _tags: Tags | undefined;
@@ -565,7 +587,25 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
"workspace.py.azure-communication-administration" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.py.azure-security-attestation" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.py.azure-data-nspkg" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.py.azure-data-tables" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }
"workspace.py.azure-data-tables" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/storage/azblob" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/storage/azfile" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/storage/azqueue" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/tracing/azotel" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azadmin" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/monitor/azquery" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/data/azappconfig" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/data/aztables" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/cognitiveservices/azopenai" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/azidentity" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/azcore" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }
}
*/
private async resolveWorkspaceTags(): Promise<Tags> {
@@ -624,6 +664,8 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
tags['workspace.py.app'] = nameSet.has('app.py');
tags['workspace.py.pyproject'] = nameSet.has('pyproject.toml');
tags['workspace.go.mod'] = nameSet.has('go.mod');
const mainActivity = nameSet.has('mainactivity.cs') || nameSet.has('mainactivity.fs');
const appDelegate = nameSet.has('appdelegate.cs') || nameSet.has('appdelegate.fs');
const androidManifest = nameSet.has('androidmanifest.xml');
@@ -752,6 +794,36 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
}
});
const goModPromises = getFilePromises('go.mod', this.fileService, this.textFileService, content => {
try {
const lines: string[] = splitLines(content.value);
let firstRequireBlockFound: boolean = false;
for (let i = 0; i < lines.length; i++) {
const line: string = lines[i].trim();
if (line.startsWith('require (')) {
if (!firstRequireBlockFound) {
firstRequireBlockFound = true;
continue;
} else {
break;
}
}
if (line.startsWith(')')) {
break;
}
if (firstRequireBlockFound && line !== '') {
const packageName: string = line.split(' ')[0].trim();
if (GoModulesToLookFor.indexOf(packageName) > -1) {
tags['workspace.go.mod.' + packageName] = true;
}
}
}
}
catch (e) {
// Ignore errors when resolving file or parsing file contents
}
});
const pomPromises = getFilePromises('pom.xml', this.fileService, this.textFileService, content => {
try {
let dependenciesContent;
@@ -792,7 +864,7 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
});
});
return Promise.all([...packageJsonPromises, ...requirementsTxtPromises, ...pipfilePromises, ...pomPromises, ...gradlePromises, ...androidPromises]).then(() => tags);
return Promise.all([...packageJsonPromises, ...requirementsTxtPromises, ...pipfilePromises, ...pomPromises, ...gradlePromises, ...androidPromises, ...goModPromises]).then(() => tags);
});
}