Merge pull request #22842 from armandocomellas1/add-useragent-gcs

[Google Cloud Storage Catalog Backend] Add User-Agent as Header to identify Backstage use case for GCP telemetry
This commit is contained in:
Patrik Oldsberg
2024-02-13 13:41:08 +01:00
committed by GitHub
3 changed files with 25 additions and 1 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/backend-common': patch
---
Add a User-Agent header for calls towards Google Cloud Storage.
@@ -20,6 +20,7 @@ import { getVoidLogger } from '../logging';
import { DefaultReadTreeResponseFactory } from './tree';
import { GoogleGcsUrlReader } from './GoogleGcsUrlReader';
import { UrlReaderPredicateTuple } from './types';
import packageinfo from '../../package.json';
const bucketGetFilesMock = jest.fn();
jest.mock('@google-cloud/storage', () => {
@@ -77,6 +78,20 @@ describe('GcsUrlReader', () => {
});
expect(entries).toHaveLength(1);
});
it('check if userAgent has been called with this key value', async () => {
const getStorage: any = {
userAgent: `backstage/backend-common.GoogleGcsUrlReader/${packageinfo.version}`,
};
jest.mock('@google-cloud/storage', () => {
return {
Storage: jest.fn(() => getStorage),
};
});
const getUserAgent = getStorage.userAgent.toString();
expect(getUserAgent).toBe(
`backstage/backend-common.GoogleGcsUrlReader/${packageinfo.version}`,
);
});
describe('predicates', () => {
const readers = createReader({
@@ -30,6 +30,7 @@ import {
} from '@backstage/integration';
import { Readable } from 'stream';
import { ReadUrlResponseFactory } from './ReadUrlResponseFactory';
import packageinfo from '../../package.json';
const GOOGLE_GCS_HOST = 'storage.cloud.google.com';
@@ -68,13 +69,16 @@ export class GoogleGcsUrlReader implements UrlReader {
logger.info(
'googleGcs credentials not found in config. Using default credentials provider.',
);
storage = new Storage();
storage = new Storage({
userAgent: `backstage/backend-common.GoogleGcsUrlReader/${packageinfo.version}`,
});
} else {
storage = new Storage({
credentials: {
client_email: gcsConfig.clientEmail || undefined,
private_key: gcsConfig.privateKey || undefined,
},
userAgent: `backstage/backend-common.GoogleGcsUrlReader/${packageinfo.version}`,
});
}
const reader = new GoogleGcsUrlReader(gcsConfig, storage);