diff --git a/x-pack/plugins/ml/public/application/services/ml_server_info.test.ts b/x-pack/plugins/ml/public/application/services/ml_server_info.test.ts index bd91995b6efc3c..cd0f10bb7f5771 100644 --- a/x-pack/plugins/ml/public/application/services/ml_server_info.test.ts +++ b/x-pack/plugins/ml/public/application/services/ml_server_info.test.ts @@ -10,6 +10,7 @@ import { isCloud, getNewJobDefaults, getNewJobLimits, + extractDeploymentId, } from './ml_server_info'; import mockMlInfoResponse from './__mocks__/ml_info_response.json'; @@ -20,7 +21,7 @@ jest.mock('./ml_api_service', () => ({ })); describe('ml_server_info initial state', () => { - it('server info not loaded ', () => { + it('should fail to get server info ', () => { expect(isCloud()).toBe(false); expect(getCloudDeploymentId()).toBe(null); }); @@ -33,14 +34,14 @@ describe('ml_server_info', () => { }); describe('cloud information', () => { - it('can get could deployment id', () => { + it('should get could deployment id', () => { expect(isCloud()).toBe(true); expect(getCloudDeploymentId()).toBe('85d666f3350c469e8c3242d76a7f459c'); }); }); describe('defaults', () => { - it('can get defaults', async (done) => { + it('should get defaults', async (done) => { const defaults = getNewJobDefaults(); expect(defaults.anomaly_detectors.model_memory_limit).toBe('128mb'); @@ -52,11 +53,37 @@ describe('ml_server_info', () => { }); describe('limits', () => { - it('can get limits', async (done) => { + it('should get limits', async (done) => { const limits = getNewJobLimits(); expect(limits.max_model_memory_limit).toBe('128mb'); done(); }); }); + + describe('cloud extract deployment ID', () => { + const cloudIdWithDeploymentName = + 'cloud_message_test:ZXUtd2VzdC0yLmF3cy5jbG91ZC5lcy5pbyQ4NWQ2NjZmMzM1MGM0NjllOGMzMjQyZDc2YTdmNDU5YyQxNmI1ZDM2ZGE1Mzk0YjlkYjIyZWJlNDk1OWY1OGQzMg=='; + + const cloudIdWithOutDeploymentName = + ':ZXUtd2VzdC0yLmF3cy5jbG91ZC5lcy5pbyQ4NWQ2NjZmMzM1MGM0NjllOGMzMjQyZDc2YTdmNDU5YyQxNmI1ZDM2ZGE1Mzk0YjlkYjIyZWJlNDk1OWY1OGQzMg=='; + + const badCloudId = 'cloud_message_test:this_is_not_a_base64_string'; + + it('should extract cloud ID when deployment name is present', () => { + expect(extractDeploymentId(cloudIdWithDeploymentName)).toBe( + '85d666f3350c469e8c3242d76a7f459c' + ); + }); + + it('should extract cloud ID when deployment name is not present', () => { + expect(extractDeploymentId(cloudIdWithOutDeploymentName)).toBe( + '85d666f3350c469e8c3242d76a7f459c' + ); + }); + + it('should fail to extract cloud ID', () => { + expect(extractDeploymentId(badCloudId)).toBe(null); + }); + }); }); diff --git a/x-pack/plugins/ml/public/application/services/ml_server_info.ts b/x-pack/plugins/ml/public/application/services/ml_server_info.ts index 8ab955b479108c..d1f92df01f0617 100644 --- a/x-pack/plugins/ml/public/application/services/ml_server_info.ts +++ b/x-pack/plugins/ml/public/application/services/ml_server_info.ts @@ -53,10 +53,11 @@ export function isCloud(): boolean { } export function getCloudDeploymentId(): string | null { - if (cloudInfo.cloudId === null) { - return null; - } - const tempCloudId = cloudInfo.cloudId.replace(/^.+:/, ''); + return cloudInfo.cloudId === null ? null : extractDeploymentId(cloudInfo.cloudId); +} + +export function extractDeploymentId(cloudId: string) { + const tempCloudId = cloudId.replace(/^(.+)?:/, ''); try { const matches = atob(tempCloudId).match(/^.+\$(.+)(?=\$)/); return matches !== null && matches.length === 2 ? matches[1] : null;