@eclipse-che/che-e2e 7.121.0-next-38dc0b7 → 7.121.0-next-0ae5289
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants/TIMEOUT_CONSTANTS.ts +8 -2
- package/dist/constants/TIMEOUT_CONSTANTS.js +6 -2
- package/dist/constants/TIMEOUT_CONSTANTS.js.map +1 -1
- package/dist/pageobjects/dashboard/Workspaces.js +53 -0
- package/dist/pageobjects/dashboard/Workspaces.js.map +1 -1
- package/dist/specs/miscellaneous/WorkspaceBackupRestore.spec.js +208 -0
- package/dist/specs/miscellaneous/WorkspaceBackupRestore.spec.js.map +1 -0
- package/dist/tests-library/ProjectAndFileTests.js +9 -0
- package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
- package/dist/utils/KubernetesCommandLineToolsExecutor.js +40 -4
- package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +1 -1
- package/dist/utils/workspace/ApiUrlResolver.js +55 -2
- package/dist/utils/workspace/ApiUrlResolver.js.map +1 -1
- package/package.json +1 -1
- package/pageobjects/dashboard/Workspaces.ts +79 -0
- package/specs/miscellaneous/WorkspaceBackupRestore.spec.ts +224 -0
- package/tests-library/ProjectAndFileTests.ts +10 -0
- package/utils/KubernetesCommandLineToolsExecutor.ts +51 -4
- package/utils/workspace/ApiUrlResolver.ts +63 -2
|
@@ -27,6 +27,7 @@ export const TIMEOUT_CONSTANTS: {
|
|
|
27
27
|
TS_SELENIUM_WAIT_FOR_URL: number;
|
|
28
28
|
TS_WAIT_LOADER_ABSENCE_TIMEOUT: number;
|
|
29
29
|
TS_WAIT_LOADER_PRESENCE_TIMEOUT: number;
|
|
30
|
+
TS_WAIT_BACKUP_STATUS_TIMEOUT: number;
|
|
30
31
|
} = {
|
|
31
32
|
/**
|
|
32
33
|
* default amount of tries, "5" by default.
|
|
@@ -88,10 +89,15 @@ export const TIMEOUT_CONSTANTS: {
|
|
|
88
89
|
TS_CLICK_DASHBOARD_ITEM_TIMEOUT: Number(process.env.TS_CLICK_DASHBOARD_ITEM_TIMEOUT) || 2_000,
|
|
89
90
|
|
|
90
91
|
/**
|
|
91
|
-
* timeout for workspace stopped status, "
|
|
92
|
+
* timeout for workspace stopped status, "60 000" by default
|
|
92
93
|
*/
|
|
93
94
|
TS_DASHBOARD_WORKSPACE_STOP_TIMEOUT: Number(process.env.TS_DASHBOARD_WORKSPACE_STOP_TIMEOUT) || 60_000,
|
|
94
95
|
|
|
96
|
+
/**
|
|
97
|
+
* timeout for waiting for backup status, "360 000" by default
|
|
98
|
+
*/
|
|
99
|
+
TS_WAIT_BACKUP_STATUS_TIMEOUT: Number(process.env.TS_WAIT_BACKUP_STATUS_TIMEOUT) || 360_000,
|
|
100
|
+
|
|
95
101
|
// -------------------------------------------- PROJECT TREE --------------------------------------------
|
|
96
102
|
|
|
97
103
|
/**
|
|
@@ -102,7 +108,7 @@ export const TIMEOUT_CONSTANTS: {
|
|
|
102
108
|
// -------------------------------------------- EDITOR --------------------------------------------
|
|
103
109
|
|
|
104
110
|
/**
|
|
105
|
-
* timeout for interactions with editor tab - wait, click, select, "
|
|
111
|
+
* timeout for interactions with editor tab - wait, click, select, "20 000" by default.
|
|
106
112
|
*/
|
|
107
113
|
TS_EDITOR_TAB_INTERACTION_TIMEOUT: Number(process.env.TS_OPEN_PROJECT_TREE_TIMEOUT) || 20_000,
|
|
108
114
|
|
|
@@ -58,9 +58,13 @@ exports.TIMEOUT_CONSTANTS = {
|
|
|
58
58
|
*/
|
|
59
59
|
TS_CLICK_DASHBOARD_ITEM_TIMEOUT: Number(process.env.TS_CLICK_DASHBOARD_ITEM_TIMEOUT) || 2000,
|
|
60
60
|
/**
|
|
61
|
-
* timeout for workspace stopped status, "
|
|
61
|
+
* timeout for workspace stopped status, "60 000" by default
|
|
62
62
|
*/
|
|
63
63
|
TS_DASHBOARD_WORKSPACE_STOP_TIMEOUT: Number(process.env.TS_DASHBOARD_WORKSPACE_STOP_TIMEOUT) || 60000,
|
|
64
|
+
/**
|
|
65
|
+
* timeout for waiting for backup status, "360 000" by default
|
|
66
|
+
*/
|
|
67
|
+
TS_WAIT_BACKUP_STATUS_TIMEOUT: Number(process.env.TS_WAIT_BACKUP_STATUS_TIMEOUT) || 360000,
|
|
64
68
|
// -------------------------------------------- PROJECT TREE --------------------------------------------
|
|
65
69
|
/**
|
|
66
70
|
* expand item in project tree, "10 000" by default.
|
|
@@ -68,7 +72,7 @@ exports.TIMEOUT_CONSTANTS = {
|
|
|
68
72
|
TS_EXPAND_PROJECT_TREE_ITEM_TIMEOUT: Number(process.env.TS_EXPAND_PROJECT_TREE_ITEM_TIMEOUT) || 10000,
|
|
69
73
|
// -------------------------------------------- EDITOR --------------------------------------------
|
|
70
74
|
/**
|
|
71
|
-
* timeout for interactions with editor tab - wait, click, select, "
|
|
75
|
+
* timeout for interactions with editor tab - wait, click, select, "20 000" by default.
|
|
72
76
|
*/
|
|
73
77
|
TS_EDITOR_TAB_INTERACTION_TIMEOUT: Number(process.env.TS_OPEN_PROJECT_TREE_TIMEOUT) || 20000,
|
|
74
78
|
// -------------------------------------------- IDE --------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TIMEOUT_CONSTANTS.js","sourceRoot":"","sources":["../../constants/TIMEOUT_CONSTANTS.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;wEAQwE;AAC3D,QAAA,iBAAiB,
|
|
1
|
+
{"version":3,"file":"TIMEOUT_CONSTANTS.js","sourceRoot":"","sources":["../../constants/TIMEOUT_CONSTANTS.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;wEAQwE;AAC3D,QAAA,iBAAiB,GAqB1B;IACH;;OAEG;IACH,4BAA4B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,CAAC;IAEnF;;OAEG;IACH,2BAA2B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,IAAI;IAEpF,mHAAmH;IAEnH;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,KAAM;IAEhF;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,KAAM;IAEtE;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,MAAO;IAEzE;;OAEG;IACH,mCAAmC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,IAAI,MAAO;IAEvG;;OAEG;IACH,6BAA6B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,KAAM;IAE1F;;OAEG;IACH,8BAA8B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,KAAM;IAE5F;;OAEG;IACH,+BAA+B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,KAAM;IAE9F,sGAAsG;IAEtG;;OAEG;IACH,gCAAgC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,IAAI,IAAK;IAE/F;;OAEG;IACH,+BAA+B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,IAAK;IAE7F;;OAEG;IACH,mCAAmC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,IAAI,KAAM;IAEtG;;OAEG;IACH,6BAA6B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,MAAO;IAE3F,yGAAyG;IAEzG;;OAEG;IACH,mCAAmC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,IAAI,KAAM;IAEtG,mGAAmG;IAEnG;;OAEG;IACH,iCAAiC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,KAAM;IAE7F,gGAAgG;IAEhG;;OAEG;IACH,gCAAgC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,IAAI,KAAM;IAEhG;;OAEG;IACH,iCAAiC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,IAAI,IAAK;IAEjG;;OAEG;IACH,4BAA4B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,KAAM;IAExF,8FAA8F;IAE9F;;OAEG;IACH,6BAA6B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,KAAM;IAE1F;;OAEG;IACH,8BAA8B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,KAAM;CAC5F,CAAC"}
|
|
@@ -149,6 +149,45 @@ let Workspaces = Workspaces_1 = class Workspaces {
|
|
|
149
149
|
Logger_1.Logger.debug();
|
|
150
150
|
return await this.driverHelper.waitAndGetElementAttribute(Workspaces_1.LEARN_MORE_DOC_LINK, 'href');
|
|
151
151
|
}
|
|
152
|
+
async waitBackupStatus(workspaceName, status, timeout = TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_WAIT_BACKUP_STATUS_TIMEOUT) {
|
|
153
|
+
Logger_1.Logger.debug(`Backup status for the "${workspaceName}" list item`);
|
|
154
|
+
await this.driverHelper.waitVisibility(this.getBackupStatusLocator(workspaceName, status), timeout);
|
|
155
|
+
}
|
|
156
|
+
async openBackupsPage(timeout = TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_CLICK_DASHBOARD_ITEM_TIMEOUT) {
|
|
157
|
+
Logger_1.Logger.debug();
|
|
158
|
+
await this.driverHelper.waitAndClick(Workspaces_1.BACKUPS_BUTTON, timeout);
|
|
159
|
+
}
|
|
160
|
+
async clickCreateFromBackupButton(workspaceName, timeout = TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT) {
|
|
161
|
+
Logger_1.Logger.debug(`"${workspaceName}"`);
|
|
162
|
+
await this.driverHelper.waitAndClick(this.getActionsRestoreWorkspaceButtonLocator(workspaceName), timeout);
|
|
163
|
+
await this.driverHelper.waitAndClick(Workspaces_1.CREATE_FROM_BACKUP_BUTTON, timeout);
|
|
164
|
+
}
|
|
165
|
+
async restoreWorkspaceFromDefaultRegistry() {
|
|
166
|
+
Logger_1.Logger.debug();
|
|
167
|
+
await this.driverHelper.waitAndClick(Workspaces_1.RESTORE_WORKSPACE_BUTTON);
|
|
168
|
+
await this.driverHelper.waitAndClick(Workspaces_1.RESTORE_CONFIRM_BUTTON);
|
|
169
|
+
}
|
|
170
|
+
async restoreWorkspaceFromExternalRegistry(backupImageUrl, workspaceName) {
|
|
171
|
+
Logger_1.Logger.debug();
|
|
172
|
+
await this.driverHelper.waitAndClick(Workspaces_1.EXTERNAL_REGISTRY_MODE_BUTTON);
|
|
173
|
+
await this.setBackupImageUrlValue(backupImageUrl);
|
|
174
|
+
await this.setWorkspaceNameValue(workspaceName);
|
|
175
|
+
await this.driverHelper.waitAndClick(Workspaces_1.RESTORE_WORKSPACE_BUTTON);
|
|
176
|
+
}
|
|
177
|
+
async getBackupImageUrlValue() {
|
|
178
|
+
Logger_1.Logger.debug();
|
|
179
|
+
return await this.driverHelper.waitAndGetValue(Workspaces_1.BACKUP_IMAGE, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT);
|
|
180
|
+
}
|
|
181
|
+
async setBackupImageUrlValue(backupImageUrl) {
|
|
182
|
+
Logger_1.Logger.debug();
|
|
183
|
+
await this.driverHelper.clear(Workspaces_1.BACKUP_IMAGE_URL_INPUT);
|
|
184
|
+
await this.driverHelper.type(Workspaces_1.BACKUP_IMAGE_URL_INPUT, backupImageUrl);
|
|
185
|
+
}
|
|
186
|
+
async setWorkspaceNameValue(workspaceName) {
|
|
187
|
+
Logger_1.Logger.debug();
|
|
188
|
+
await this.driverHelper.clear(Workspaces_1.WORKSPACE_NAME_INPUT);
|
|
189
|
+
await this.driverHelper.type(Workspaces_1.WORKSPACE_NAME_INPUT, workspaceName);
|
|
190
|
+
}
|
|
152
191
|
getWorkspaceListItemLocator(workspaceName) {
|
|
153
192
|
return selenium_webdriver_1.By.xpath(`//tr[td//span[text()='${workspaceName}']]`);
|
|
154
193
|
}
|
|
@@ -172,6 +211,12 @@ let Workspaces = Workspaces_1 = class Workspaces {
|
|
|
172
211
|
getOpenWorkspaceDetailsLinkLocator(workspaceName) {
|
|
173
212
|
return selenium_webdriver_1.By.xpath(`${this.getWorkspaceListItemLocator(workspaceName).value}//span[text()='${workspaceName}']`);
|
|
174
213
|
}
|
|
214
|
+
getActionsRestoreWorkspaceButtonLocator(workspaceName) {
|
|
215
|
+
return selenium_webdriver_1.By.xpath(`//tr[td//span[text()='${workspaceName}']]//button[@aria-label='Actions for ${workspaceName}']`);
|
|
216
|
+
}
|
|
217
|
+
getBackupStatusLocator(workspaceName, status) {
|
|
218
|
+
return selenium_webdriver_1.By.xpath(`//tr[td//span[text()='${workspaceName}']]//span[@aria-label="Backup status: ${status}"]`);
|
|
219
|
+
}
|
|
175
220
|
};
|
|
176
221
|
Workspaces.ADD_WORKSPACE_BUTTON = selenium_webdriver_1.By.css('button[aria-label="Add Workspace"]');
|
|
177
222
|
Workspaces.WORKSPACE_ITEM_TABLE_NAME_SECTION = selenium_webdriver_1.By.xpath('//td[@data-label="Name"]/span/a');
|
|
@@ -180,6 +225,14 @@ Workspaces.WORKSPACE_ACTION_POPUP = selenium_webdriver_1.By.css('div[class*="wor
|
|
|
180
225
|
Workspaces.DELETE_CONFIRMATION_CHECKBOX = selenium_webdriver_1.By.xpath('//input[@data-testid="confirmation-checkbox"]');
|
|
181
226
|
Workspaces.CONFIRMATION_WINDOW = selenium_webdriver_1.By.xpath('//div[@aria-label="Delete workspaces confirmation window"]');
|
|
182
227
|
Workspaces.LEARN_MORE_DOC_LINK = selenium_webdriver_1.By.xpath('//div/p/a');
|
|
228
|
+
Workspaces.BACKUPS_BUTTON = selenium_webdriver_1.By.id('view-backups');
|
|
229
|
+
Workspaces.BACKUP_IMAGE = selenium_webdriver_1.By.css('input[aria-label="Copyable input"]');
|
|
230
|
+
Workspaces.CREATE_FROM_BACKUP_BUTTON = selenium_webdriver_1.By.xpath('//span[text()="Create from Backup"]');
|
|
231
|
+
Workspaces.RESTORE_WORKSPACE_BUTTON = selenium_webdriver_1.By.xpath('//span[text()="Restore Workspace"]');
|
|
232
|
+
Workspaces.RESTORE_CONFIRM_BUTTON = selenium_webdriver_1.By.xpath('//span[text()="Restore"]');
|
|
233
|
+
Workspaces.EXTERNAL_REGISTRY_MODE_BUTTON = selenium_webdriver_1.By.xpath('//span[text()="External registry"]');
|
|
234
|
+
Workspaces.BACKUP_IMAGE_URL_INPUT = selenium_webdriver_1.By.css('input[aria-label="Backup image URL"]');
|
|
235
|
+
Workspaces.WORKSPACE_NAME_INPUT = selenium_webdriver_1.By.css('input[aria-label="Workspace name"]');
|
|
183
236
|
Workspaces = Workspaces_1 = __decorate([
|
|
184
237
|
(0, inversify_1.injectable)(),
|
|
185
238
|
__param(0, (0, inversify_1.inject)(inversify_types_1.CLASSES.DriverHelper)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Workspaces.js","sourceRoot":"","sources":["../../../pageobjects/dashboard/Workspaces.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;;;;;;;;;;;;;;;AAExE,yCAA+C;AAC/C,2DAAwD;AACxD,mEAAwD;AACxD,2DAAoD;AACpD,+CAA4C;AAC5C,yEAAsE;AAEtE,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC5B,4DAAuC,CAAA;IACvC,4DAAuC,CAAA;AACxC,CAAC,EAHW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAG5B;AAGM,IAAM,UAAU,kBAAhB,MAAM,UAAU;
|
|
1
|
+
{"version":3,"file":"Workspaces.js","sourceRoot":"","sources":["../../../pageobjects/dashboard/Workspaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/** *******************************************************************
|
|
4
|
+
* copyright (c) 2026 Red Hat, Inc.
|
|
5
|
+
*
|
|
6
|
+
* This program and the accompanying materials are made
|
|
7
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
8
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
9
|
+
*
|
|
10
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
11
|
+
**********************************************************************/
|
|
12
|
+
const inversify_config_1 = require("../../configs/inversify.config");
|
|
13
|
+
const inversify_types_1 = require("../../configs/inversify.types");
|
|
14
|
+
const chai_1 = require("chai");
|
|
15
|
+
const WorkspaceHandlingTests_1 = require("../../tests-library/WorkspaceHandlingTests");
|
|
16
|
+
const MochaHooks_1 = require("../MochaHooks");
|
|
17
|
+
const BASE_TEST_CONSTANTS_1 = require("../../constants/BASE_TEST_CONSTANTS");
|
|
18
|
+
const FACTORY_TEST_CONSTANTS_1 = require("../../constants/FACTORY_TEST_CONSTANTS");
|
|
19
|
+
const Logger_1 = require("../../utils/Logger");
|
|
20
|
+
const StringUtil_1 = require("../../utils/StringUtil");
|
|
21
|
+
const TIMEOUT_CONSTANTS_1 = require("../../constants/TIMEOUT_CONSTANTS");
|
|
22
|
+
const factoryUrl = FACTORY_TEST_CONSTANTS_1.FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL || 'https://gh.crw-qe.com/test-automation-only/python-hello-world.git';
|
|
23
|
+
const testFileName = 'backup-test.txt';
|
|
24
|
+
const testFileContent = 'This is a test file for backup verification';
|
|
25
|
+
suite(`"Restore workspace from backup" test ${BASE_TEST_CONSTANTS_1.BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function () {
|
|
26
|
+
const workspaceHandlingTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceHandlingTests);
|
|
27
|
+
const projectAndFileTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ProjectAndFileTests);
|
|
28
|
+
const loginTests = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.LoginTests);
|
|
29
|
+
const browserTabsUtil = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.BrowserTabsUtil);
|
|
30
|
+
const dashboard = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.Dashboard);
|
|
31
|
+
const workspaces = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.Workspaces);
|
|
32
|
+
const testWorkspaceUtil = inversify_config_1.e2eContainer.get(inversify_types_1.TYPES.WorkspaceUtil);
|
|
33
|
+
const workspaceDetails = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.WorkspaceDetails);
|
|
34
|
+
const kubernetesCommandLineToolsExecutor = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.KubernetesCommandLineToolsExecutor);
|
|
35
|
+
const containerTerminal = inversify_config_1.e2eContainer.get(inversify_types_1.CLASSES.ContainerTerminal);
|
|
36
|
+
const workspaceName2 = 'test-workspace-2';
|
|
37
|
+
let projectSection;
|
|
38
|
+
let workspaceName;
|
|
39
|
+
let backupImageUrl;
|
|
40
|
+
let projectName;
|
|
41
|
+
async function openWorkspaceDetailsBackup(workspaceName) {
|
|
42
|
+
await workspaces.clickWorkspaceListItemLink(workspaceName);
|
|
43
|
+
await workspaceDetails.waitWorkspaceTitle(workspaceName);
|
|
44
|
+
await workspaceDetails.waitLoaderDisappearance();
|
|
45
|
+
await workspaceDetails.selectTab('Backup');
|
|
46
|
+
}
|
|
47
|
+
suiteSetup('Login', async function () {
|
|
48
|
+
await loginTests.loginIntoChe();
|
|
49
|
+
});
|
|
50
|
+
test(`Create and open new workspace from factory:${factoryUrl}`, async function () {
|
|
51
|
+
await workspaceHandlingTests.createAndOpenWorkspaceFromGitRepository(factoryUrl);
|
|
52
|
+
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
53
|
+
(0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
54
|
+
});
|
|
55
|
+
test('Wait workspace readiness and project folder has been created', async function () {
|
|
56
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
57
|
+
});
|
|
58
|
+
test('Check a project folder has been created', async function () {
|
|
59
|
+
projectName = FACTORY_TEST_CONSTANTS_1.FACTORY_TEST_CONSTANTS.TS_SELENIUM_PROJECT_NAME || StringUtil_1.StringUtil.getProjectNameFromGitUrl(factoryUrl);
|
|
60
|
+
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
61
|
+
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not imported').not.undefined;
|
|
62
|
+
await projectAndFileTests.performTrustDialogs();
|
|
63
|
+
});
|
|
64
|
+
test('Setup workspace context for API operations', function () {
|
|
65
|
+
workspaceName = WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName();
|
|
66
|
+
kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
|
|
67
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
68
|
+
kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
|
|
69
|
+
});
|
|
70
|
+
test('Create test file via API', function () {
|
|
71
|
+
Logger_1.Logger.debug(`Creating test file: /projects/${projectName}/${testFileName}`);
|
|
72
|
+
const createFileCommand = `echo "${testFileContent}" > /projects/${projectName}/${testFileName}`;
|
|
73
|
+
const output = containerTerminal.execInContainerCommand(createFileCommand);
|
|
74
|
+
Logger_1.Logger.debug(`File creation output: ${output.stdout}`);
|
|
75
|
+
(0, chai_1.expect)(output.code).to.equal(0);
|
|
76
|
+
});
|
|
77
|
+
test('Verify test file content via API', function () {
|
|
78
|
+
Logger_1.Logger.debug(`Verifying test file content: /projects/${projectName}/${testFileName}`);
|
|
79
|
+
const readFileCommand = `cat /projects/${projectName}/${testFileName}`;
|
|
80
|
+
const output = containerTerminal.execInContainerCommand(readFileCommand);
|
|
81
|
+
Logger_1.Logger.debug(`File content: ${output.stdout}`);
|
|
82
|
+
(0, chai_1.expect)(output.stdout.trim()).to.equal(testFileContent);
|
|
83
|
+
});
|
|
84
|
+
test('Stop the workspace', async function () {
|
|
85
|
+
(0, chai_1.expect)(workspaceName, 'Workspace name not available').not.empty;
|
|
86
|
+
await dashboard.openDashboard();
|
|
87
|
+
await dashboard.waitPage();
|
|
88
|
+
await dashboard.stopWorkspaceByUI(workspaceName);
|
|
89
|
+
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
90
|
+
await workspaces.waitWorkspaceWithStoppedStatus(workspaceName);
|
|
91
|
+
await workspaces.waitBackupStatus(workspaceName, 'Never');
|
|
92
|
+
});
|
|
93
|
+
test('Wait for backup completion', async function () {
|
|
94
|
+
await workspaces.waitWorkspaceListItem(workspaceName);
|
|
95
|
+
await workspaces.waitBackupStatus(workspaceName, 'Success');
|
|
96
|
+
});
|
|
97
|
+
test('Get backup image URL', async function () {
|
|
98
|
+
await openWorkspaceDetailsBackup(workspaceName);
|
|
99
|
+
backupImageUrl = await workspaces.getBackupImageUrlValue();
|
|
100
|
+
Logger_1.Logger.info(`Retrieved backup image URL: ${backupImageUrl}`);
|
|
101
|
+
});
|
|
102
|
+
test('Delete the workspace', async function () {
|
|
103
|
+
await dashboard.deleteStoppedWorkspaceByUI(workspaceName);
|
|
104
|
+
});
|
|
105
|
+
test('Open backups page', async function () {
|
|
106
|
+
await workspaces.openBackupsPage();
|
|
107
|
+
await workspaces.waitWorkspaceListItem(workspaceName);
|
|
108
|
+
await workspaces.waitBackupStatus(workspaceName, 'Success');
|
|
109
|
+
});
|
|
110
|
+
test('Restore workspace from default registry', async function () {
|
|
111
|
+
const parentGUID = await browserTabsUtil.getCurrentWindowHandle();
|
|
112
|
+
await workspaces.clickCreateFromBackupButton(workspaceName);
|
|
113
|
+
await workspaces.restoreWorkspaceFromDefaultRegistry();
|
|
114
|
+
await browserTabsUtil.waitAndSwitchToAnotherWindow(parentGUID, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_IDE_LOAD_TIMEOUT);
|
|
115
|
+
});
|
|
116
|
+
test('Obtain workspace name after restore', async function () {
|
|
117
|
+
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
118
|
+
const obtainedName = WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName();
|
|
119
|
+
Logger_1.Logger.info(`Obtained workspace name after first restore: '${obtainedName}'`);
|
|
120
|
+
});
|
|
121
|
+
test('Register restored workspace', function () {
|
|
122
|
+
(0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
123
|
+
});
|
|
124
|
+
test('Wait workspace readiness after restore', async function () {
|
|
125
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
126
|
+
await projectAndFileTests.performTrustDialogs();
|
|
127
|
+
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
128
|
+
});
|
|
129
|
+
test('Setup workspace context for API operations after restore', function () {
|
|
130
|
+
workspaceName = WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName();
|
|
131
|
+
Logger_1.Logger.info(`Workspace name for API setup after first restore: '${workspaceName}'`);
|
|
132
|
+
(0, chai_1.expect)(workspaceName, 'Workspace name should not be empty after restore').not.empty;
|
|
133
|
+
kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
|
|
134
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
135
|
+
kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
|
|
136
|
+
});
|
|
137
|
+
test('Verify project folder exists after restore', async function () {
|
|
138
|
+
await projectAndFileTests.expandProjectTreeItem(projectSection, projectName);
|
|
139
|
+
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not restored').not.undefined;
|
|
140
|
+
});
|
|
141
|
+
test('Verify test file content is intact after restore via API', function () {
|
|
142
|
+
Logger_1.Logger.debug(`Verifying restored file content: /projects/${projectName}/${testFileName}`);
|
|
143
|
+
const readFileCommand = `cat /projects/${projectName}/${testFileName}`;
|
|
144
|
+
const output = containerTerminal.execInContainerCommand(readFileCommand);
|
|
145
|
+
Logger_1.Logger.debug(`Restored file content: ${output.stdout}`);
|
|
146
|
+
(0, chai_1.expect)(output.stdout.trim()).to.equal(testFileContent);
|
|
147
|
+
});
|
|
148
|
+
test('Delete the workspace', async function () {
|
|
149
|
+
await dashboard.openDashboard();
|
|
150
|
+
await dashboard.waitPage();
|
|
151
|
+
await dashboard.deleteStoppedWorkspaceByUI(workspaceName);
|
|
152
|
+
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
153
|
+
});
|
|
154
|
+
test('Open backups page', async function () {
|
|
155
|
+
await workspaces.openBackupsPage();
|
|
156
|
+
await workspaces.waitWorkspaceListItem(workspaceName);
|
|
157
|
+
await workspaces.waitBackupStatus(workspaceName, 'Success');
|
|
158
|
+
});
|
|
159
|
+
test('Restore workspace from backup image URL ', async function () {
|
|
160
|
+
const parentGUID = await browserTabsUtil.getCurrentWindowHandle();
|
|
161
|
+
await workspaces.clickCreateFromBackupButton(workspaceName);
|
|
162
|
+
await workspaces.restoreWorkspaceFromExternalRegistry(backupImageUrl, workspaceName2);
|
|
163
|
+
await browserTabsUtil.waitAndSwitchToAnotherWindow(parentGUID, TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_IDE_LOAD_TIMEOUT);
|
|
164
|
+
});
|
|
165
|
+
test('Obtain workspace name after second restore', async function () {
|
|
166
|
+
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
167
|
+
const obtainedName = WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName();
|
|
168
|
+
Logger_1.Logger.info(`Obtained workspace name after second restore: '${obtainedName}'`);
|
|
169
|
+
});
|
|
170
|
+
test('Register second restored workspace', function () {
|
|
171
|
+
(0, MochaHooks_1.registerRunningWorkspace)(WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName());
|
|
172
|
+
});
|
|
173
|
+
test('Wait workspace readiness after second restore', async function () {
|
|
174
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
175
|
+
await projectAndFileTests.performTrustDialogs();
|
|
176
|
+
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
177
|
+
});
|
|
178
|
+
test('Setup workspace context for API operations after second restore', function () {
|
|
179
|
+
workspaceName = WorkspaceHandlingTests_1.WorkspaceHandlingTests.getWorkspaceName();
|
|
180
|
+
Logger_1.Logger.info(`Workspace name for API setup after second restore: '${workspaceName}'`);
|
|
181
|
+
(0, chai_1.expect)(workspaceName, 'Workspace name should not be empty after second restore').not.empty;
|
|
182
|
+
kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
|
|
183
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
184
|
+
kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
|
|
185
|
+
});
|
|
186
|
+
test('Verify project folder exists after second restore', async function () {
|
|
187
|
+
await projectAndFileTests.expandProjectTreeItem(projectSection, projectName);
|
|
188
|
+
(0, chai_1.expect)(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not restored').not.undefined;
|
|
189
|
+
});
|
|
190
|
+
test('Verify test file content is intact after second restore via API', function () {
|
|
191
|
+
Logger_1.Logger.debug(`Verifying restored file content: /projects/${projectName}/${testFileName}`);
|
|
192
|
+
const readFileCommand = `cat /projects/${projectName}/${testFileName}`;
|
|
193
|
+
const output = containerTerminal.execInContainerCommand(readFileCommand);
|
|
194
|
+
Logger_1.Logger.debug(`Restored file content: ${output.stdout}`);
|
|
195
|
+
(0, chai_1.expect)(output.stdout.trim()).to.equal(testFileContent);
|
|
196
|
+
});
|
|
197
|
+
suiteTeardown('Open dashboard and close all other tabs', async function () {
|
|
198
|
+
await dashboard.openDashboard();
|
|
199
|
+
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
200
|
+
});
|
|
201
|
+
suiteTeardown('Stop and delete workspace by API', async function () {
|
|
202
|
+
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(workspaceName);
|
|
203
|
+
});
|
|
204
|
+
suiteTeardown('Unregister running workspace', function () {
|
|
205
|
+
(0, MochaHooks_1.registerRunningWorkspace)('');
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
//# sourceMappingURL=WorkspaceBackupRestore.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceBackupRestore.spec.js","sourceRoot":"","sources":["../../../specs/miscellaneous/WorkspaceBackupRestore.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,6 +201,15 @@ let ProjectAndFileTests = ProjectAndFileTests_1 = class ProjectAndFileTests {
|
|
|
201
201
|
}
|
|
202
202
|
throw new Error(`File "${fileName}" was not opened in the editor after ${maxAttempts} attempts`);
|
|
203
203
|
}
|
|
204
|
+
async expandProjectTreeItem(projectSection, projectName) {
|
|
205
|
+
Logger_1.Logger.debug(`${projectName}`);
|
|
206
|
+
const projectTreeItem = await projectSection.findItem(projectName, 2);
|
|
207
|
+
if (!projectTreeItem) {
|
|
208
|
+
throw new Error(`Project tree item "${projectName}" not found`);
|
|
209
|
+
}
|
|
210
|
+
await projectTreeItem.click();
|
|
211
|
+
await this.driverHelper.wait(TIMEOUT_CONSTANTS_1.TIMEOUT_CONSTANTS.TS_EXPAND_PROJECT_TREE_ITEM_TIMEOUT);
|
|
212
|
+
}
|
|
204
213
|
};
|
|
205
214
|
ProjectAndFileTests.BRANCH_NAME_XPATH = monaco_page_objects_1.By.xpath('//a[contains(@aria-label,"Checkout Branch/Tag...")]');
|
|
206
215
|
ProjectAndFileTests.TRUST_PUBLISHER_BOX = monaco_page_objects_1.By.xpath('//*[@class="dialog-message-text" and contains(text(), "publisher")]');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectAndFileTests.js","sourceRoot":"","sources":["../../tests-library/ProjectAndFileTests.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ProjectAndFileTests.js","sourceRoot":"","sources":["../../tests-library/ProjectAndFileTests.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;;;;;;;;;;;;;;;AAExE,4BAA0B;AAC1B,yCAA+C;AAC/C,wDAAqD;AACrD,gEAAqD;AACrD,4CAAyC;AACzC,sEAAmE;AACnE,kFAA+E;AAC/E,6DAAiH;AACjH,oFAAiF;AACjF,kFAA+E;AAC/E,8EAA2E;AAGpE,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAI/B,YAEkB,YAA0B,EAE1B,oBAA0C,EAE1C,sBAA8C,EAE9C,oBAA0C,EAE1C,kBAAsC;QARtC,iBAAY,GAAZ,YAAY,CAAc;QAE1B,yBAAoB,GAApB,oBAAoB,CAAsB;QAE1C,2BAAsB,GAAtB,sBAAsB,CAAwB;QAE9C,yBAAoB,GAApB,oBAAoB,CAAsB;QAE1C,uBAAkB,GAAlB,kBAAkB,CAAoB;IACrD,CAAC;IAEJ,KAAK,CAAC,sCAAsC;QAC3C,eAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACpC,IAAI;YACH,MAAM,KAAK,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CACrC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAClE,qCAAiB,CAAC,oBAAoB,CACtC,CAAC;YACF,MAAM,GAAG,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACzC,eAAM,CAAC,KAAK,CAAC,wBAAwB,GAAG,GAAG,KAAK,WAAW,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;SACvC;QAAC,OAAO,GAAG,EAAE;YACb,eAAM,CAAC,KAAK,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAC;YAE/D,mDAAmD;YACnD,MAAM,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,EAAE,CAAC;YAE1D,MAAM,GAAG,CAAC;SACV;IACF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,wBAAwB;QAC7B,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,yHAAyH;QACzH,MAAM,SAAS,GAAc,IAAI,+BAAS,EAAE,CAAC;QAE7C,IAAI;YACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;YACxB,oEAAoE;YACpE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qCAAiB,CAAC,mBAAmB,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CACrC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,EAChE,qCAAiB,CAAC,iCAAiC,CACnD,CAAC;YACF,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CACnC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,cAAc,CAAC,MAAM,EAClE,qCAAiB,CAAC,iCAAiC,CACnD,CAAC;YACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,mCAAmC,EAAE,CAAC;SACtE;QAAC,OAAO,CAAC,EAAE;YACX,eAAM,CAAC,IAAI,CACV,qHAAqH,CACrH,CAAC;YAEF,IAAI;gBACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,EAAE,CAAC;gBAC9D,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAClC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,SAAiB,CAAC,oBAAoB,EACpF,qCAAiB,CAAC,gCAAgC,CAClD,CAAC;gBACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,EAAE,CAAC;aAC5D;YAAC,OAAO,CAAC,EAAE;gBACX,eAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;aAC7E;SACD;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B;QAChC,eAAM,CAAC,KAAK,EAAE,CAAC;QAEf,IAAI;YACH,oEAAoE;YACpE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qCAAiB,CAAC,mBAAmB,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CACrC,qBAAmB,CAAC,mBAAmB,EACvC,qCAAiB,CAAC,iCAAiC,CACnD,CAAC;YACF,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CACnC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,cAAc,CAAC,MAAM,EAClE,qCAAiB,CAAC,iCAAiC,CACnD,CAAC;SACF;QAAC,OAAO,CAAC,EAAE;YACX,eAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;SACtE;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB;QAC9B,eAAM,CAAC,KAAK,EAAE,CAAC;QAEf,IAAI;YACH,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,EAAE;gBACpD,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;aAC5C;SACD;QAAC,OAAO,CAAC,EAAE;YACX,eAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;SACtF;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACxB,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB;QAC1B,eAAM,CAAC,KAAK,EAAE,CAAC;QAEf,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CACrC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,EACvE,qCAAiB,CAAC,mCAAmC,CACrD,CAAC;QAEF,MAAM,WAAW,GAAgB,IAAI,iCAAW,EAAE,CAAC,UAAU,EAAE,CAAC;QAChE,MAAM,CAAC,cAAc,CAAC,GAAkB,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;QACxE,OAAO,cAAc,CAAC;IACvB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,kBAAkB,CAAC,cAA2B,EAAE,KAAa,EAAE,YAAoB,CAAC;QACzF,eAAM,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QAEzB,IAAI,eAAqC,CAAC;QAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CACrC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,EACzE,qCAAiB,CAAC,mCAAmC,CACrD,CAAC;QAEF,IAAI;YACH,eAAe,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAClE,IAAI,CAAC,eAAe,EAAE;gBACrB,IAAI;oBACH,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC;oBAChC,eAAe,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;iBAClE;gBAAC,OAAO,CAAC,EAAE;oBACX,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC/B;aACD;SACD;QAAC,OAAO,CAAC,EAAE;YACX,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B;QAED,OAAO,eAAe,CAAC;IACxB,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,aAAa;QAClB,eAAM,CAAC,KAAK,EAAE,CAAC;QAEf,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,qBAAmB,CAAC,iBAAiB,EAAE,qCAAiB,CAAC,6BAA6B,CAAC,CAAC;QAC/H,MAAM,MAAM,GAAW,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,qBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAErG,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CAAC,cAA2B,EAAE,WAAmB,EAAE,QAAgB;QACzF,MAAM,WAAW,GAAW,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAe,IAAI,gCAAU,EAAE,CAAC;QAEhD,KAAK,IAAI,OAAO,GAAW,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE;YAChE,eAAM,CAAC,KAAK,CAAC,WAAW,OAAO,IAAI,WAAW,mBAAmB,QAAQ,iBAAiB,WAAW,GAAG,CAAC,CAAC;YAC1G,MAAM,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qCAAiB,CAAC,iCAAiC,CAAC,CAAC;YAElF,MAAM,gBAAgB,GAAa,MAAM,UAAU,CAAC,mBAAmB,EAAE,CAAC;YAC1E,eAAM,CAAC,KAAK,CAAC,uBAAuB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEnE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBACxC,eAAM,CAAC,KAAK,CAAC,SAAS,QAAQ,qCAAqC,CAAC,CAAC;gBACrE,OAAO;aACP;YAED,IAAI,OAAO,GAAG,WAAW,EAAE;gBAC1B,eAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,yCAAyC,CAAC,CAAC;gBACxE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qCAAiB,CAAC,2BAA2B,CAAC,CAAC;aAC5E;SACD;QAED,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,wCAAwC,WAAW,WAAW,CAAC,CAAC;IAClG,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,cAA2B,EAAE,WAAmB;QAC3E,eAAM,CAAC,KAAK,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC;QAC/B,MAAM,eAAe,GAAyB,MAAM,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,eAAe,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,aAAa,CAAC,CAAC;SAChE;QACD,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qCAAiB,CAAC,mCAAmC,CAAC,CAAC;IACrF,CAAC;;AAtOc,qCAAiB,GAAO,wBAAE,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;AACxF,uCAAmB,GAAO,wBAAE,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;AAF7G,mBAAmB;IAD/B,IAAA,sBAAU,GAAE;IAMV,WAAA,IAAA,kBAAM,EAAC,yBAAO,CAAC,YAAY,CAAC,CAAA;IAE5B,WAAA,IAAA,kBAAM,EAAC,yBAAO,CAAC,oBAAoB,CAAC,CAAA;IAEpC,WAAA,IAAA,kBAAM,EAAC,yBAAO,CAAC,sBAAsB,CAAC,CAAA;IAEtC,WAAA,IAAA,kBAAM,EAAC,yBAAO,CAAC,oBAAoB,CAAC,CAAA;IAEpC,WAAA,IAAA,kBAAM,EAAC,yBAAO,CAAC,kBAAkB,CAAC,CAAA;qCAPJ,2BAAY;QAEJ,2CAAoB;QAElB,+CAAsB;QAExB,2CAAoB;QAEtB,uCAAkB;GAd5C,mBAAmB,CAwO/B;AAxOY,kDAAmB"}
|
|
@@ -38,7 +38,7 @@ var KubernetesCommandLineToolsExecutor_1;
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.ContainerTerminal = exports.KubernetesCommandLineToolsExecutor = void 0;
|
|
40
40
|
/** *******************************************************************
|
|
41
|
-
* copyright (c) 2023-
|
|
41
|
+
* copyright (c) 2023-2026 Red Hat, Inc.
|
|
42
42
|
*
|
|
43
43
|
* This program and the accompanying materials are made
|
|
44
44
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -104,14 +104,50 @@ let KubernetesCommandLineToolsExecutor = KubernetesCommandLineToolsExecutor_1 =
|
|
|
104
104
|
}
|
|
105
105
|
getContainerName() {
|
|
106
106
|
Logger_1.Logger.debug(`${this.kubernetesCommandLineTool} - get container name.`);
|
|
107
|
-
|
|
107
|
+
Logger_1.Logger.debug(`Getting container name for pod: '${KubernetesCommandLineToolsExecutor_1.pod}' in namespace: ${this.namespace}`);
|
|
108
|
+
const output = this.shellExecutor.executeCommand(`${this.kubernetesCommandLineTool} get pod ${KubernetesCommandLineToolsExecutor_1.pod} -o jsonpath='{.spec.containers[*].name}' -n ${this.namespace}`);
|
|
108
109
|
(0, shelljs_1.echo)('\n');
|
|
109
|
-
|
|
110
|
+
const containerName = output.stderr ? output.stderr : output.stdout;
|
|
111
|
+
Logger_1.Logger.debug(`Found container name: '${containerName}'`);
|
|
112
|
+
return containerName;
|
|
110
113
|
}
|
|
111
114
|
getWorkspacePodName() {
|
|
112
115
|
Logger_1.Logger.debug(`${this.kubernetesCommandLineTool} - get workspace pod name.`);
|
|
116
|
+
Logger_1.Logger.debug(`Looking for pod with label: controller.devfile.io/devworkspace_name=${this.workspaceName} in namespace: ${this.namespace}`);
|
|
113
117
|
const output = this.shellExecutor.executeCommand(`${this.kubernetesCommandLineTool} get pod -l controller.devfile.io/devworkspace_name=${this.workspaceName} -n ${this.namespace} -o name`);
|
|
114
|
-
|
|
118
|
+
let podName = output.stderr ? output.stderr : output.stdout.replace('\n', '');
|
|
119
|
+
Logger_1.Logger.debug(`Found pod name (before removing prefix): '${podName}'`);
|
|
120
|
+
// if pod not found, try to find by workspace name prefix (for restored workspaces with suffix)
|
|
121
|
+
if (!podName || podName.trim() === '') {
|
|
122
|
+
Logger_1.Logger.warn(`No pod found with exact label controller.devfile.io/devworkspace_name=${this.workspaceName}`);
|
|
123
|
+
Logger_1.Logger.debug(`Trying to find pod with workspace name starting with: ${this.workspaceName}`);
|
|
124
|
+
// get all pods and filter by label prefix
|
|
125
|
+
const allPodsOutput = this.shellExecutor.executeCommand(`${this.kubernetesCommandLineTool} get pods -n ${this.namespace} -o jsonpath='{range .items[*]}{.metadata.name}{"\\t"}{.metadata.labels.controller\\.devfile\\.io/devworkspace_name}{"\\n"}{end}'`);
|
|
126
|
+
if (allPodsOutput.stdout && this.workspaceName) {
|
|
127
|
+
const lines = allPodsOutput.stdout.split('\n').filter((line) => line.trim() !== '');
|
|
128
|
+
for (const line of lines) {
|
|
129
|
+
const [name, label] = line.split('\t');
|
|
130
|
+
if (label && this.workspaceName && label.startsWith(this.workspaceName)) {
|
|
131
|
+
Logger_1.Logger.info(`Found pod by prefix match: ${name} with label ${label}`);
|
|
132
|
+
podName = name;
|
|
133
|
+
// update workspace name to the actual one with suffix
|
|
134
|
+
this._workspaceName = label;
|
|
135
|
+
Logger_1.Logger.info(`Updated workspace name to: ${this._workspaceName}`);
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// if still not found, list all pods for debugging
|
|
141
|
+
if (!podName || podName.trim() === '') {
|
|
142
|
+
Logger_1.Logger.warn('Listing all pods in namespace for debugging:');
|
|
143
|
+
const debugPods = this.shellExecutor.executeCommand(`${this.kubernetesCommandLineTool} get pods -n ${this.namespace} --show-labels`);
|
|
144
|
+
Logger_1.Logger.warn(`All pods:\n${debugPods.stdout}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// remove 'pod/' prefix if present (oc get -o name returns 'pod/podname')
|
|
148
|
+
const cleanPodName = podName.replace(/^pod\//, '');
|
|
149
|
+
Logger_1.Logger.debug(`Clean pod name (after removing prefix): '${cleanPodName}'`);
|
|
150
|
+
return cleanPodName;
|
|
115
151
|
}
|
|
116
152
|
deleteDevWorkspace(devfileName) {
|
|
117
153
|
Logger_1.Logger.debug(`${this.kubernetesCommandLineTool} - delete '${this.workspaceName}' devWorkspace`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KubernetesCommandLineToolsExecutor.js","sourceRoot":"","sources":["../../utils/KubernetesCommandLineToolsExecutor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KubernetesCommandLineToolsExecutor.js","sourceRoot":"","sources":["../../utils/KubernetesCommandLineToolsExecutor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;wEAQwE;AACxE,qCAAkD;AAClD,qCAAkC;AAClC,mDAAgD;AAChD,2CAA6B;AAC7B,wEAAgG;AAChG,0EAAuE;AACvE,kEAA+D;AAE/D,yCAA+C;AAC/C,gEAAqD;AACrD,uCAAyB;AAGlB,IAAM,kCAAkC,0CAAxC,MAAM,kCAAkC;IAO9C,YAEoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAE/C,IAAI,CAAC,yBAAyB,GAAG,uCAAkB,CAAC,wCAAwC,CAAC;IAC9F,CAAC;IAED,IAAI,SAAS,CAAC,KAAyB;QACtC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,aAAa,CAAC,KAAyB;QAC1C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACZ,IAAI,yCAAmB,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAClD,IAAI,CAAC,UAAU,GAAG,yCAAmB,CAAC,cAAc,CAAC;SACrD;aAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC5B,MAAM,eAAe,GAAW,yCAAmB,CAAC,wBAAwB,EAAE,CAAC;YAC/E,IAAI,eAAe,KAAK,SAAS,EAAE;gBAClC,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;aAClC;iBAAM;gBACN,IAAI,CAAC,UAAU,GAAG,iCAAe,CAAC,wBAAwB,GAAG,GAAG,GAAG,eAAe,CAAC;aACnF;SACD;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,wDAAwD;IACxD,UAAU,CAAC,OAAe,iCAAe,CAAC,wBAAwB,EAAE,WAAmB,iCAAe,CAAC,wBAAwB;QAC9H,IAAI,IAAI,CAAC,yBAAyB,KAAK,8CAAyB,CAAC,EAAE,EAAE;YACpE,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,8BAA8B,CAAC,CAAC;YAC9E,MAAM,GAAG,GAAW,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBAC9B,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,wBAAwB,CAAC,CAAC;aACxE;iBAAM;gBACN,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,YAAY,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC1E,IAAA,cAAI,EAAC,qBAAqB,GAAG,OAAO,IAAI,OAAO,QAAQ,6BAA6B,CAAC,CAAC;aACtF;SACD;aAAM;YACN,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,kCAAkC,CAAC,CAAC;SAClF;IACF,CAAC;IAED,gBAAgB;QACf,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,wBAAwB,CAAC,CAAC;QACxE,eAAM,CAAC,KAAK,CAAC,oCAAoC,oCAAkC,CAAC,GAAG,mBAAmB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAE5H,MAAM,MAAM,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CAC5D,GAAG,IAAI,CAAC,yBAAyB,YAAY,oCAAkC,CAAC,GAAG,gDAAgD,IAAI,CAAC,SAAS,EAAE,CACnJ,CAAC;QACF,IAAA,cAAI,EAAC,IAAI,CAAC,CAAC;QACX,MAAM,aAAa,GAAW,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5E,eAAM,CAAC,KAAK,CAAC,0BAA0B,aAAa,GAAG,CAAC,CAAC;QACzD,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,mBAAmB;QAClB,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,4BAA4B,CAAC,CAAC;QAC5E,eAAM,CAAC,KAAK,CACX,uEAAuE,IAAI,CAAC,aAAa,kBAAkB,IAAI,CAAC,SAAS,EAAE,CAC3H,CAAC;QAEF,MAAM,MAAM,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CAC5D,GAAG,IAAI,CAAC,yBAAyB,uDAAuD,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,SAAS,UAAU,CACzI,CAAC;QACF,IAAI,OAAO,GAAW,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtF,eAAM,CAAC,KAAK,CAAC,6CAA6C,OAAO,GAAG,CAAC,CAAC;QAEtE,+FAA+F;QAC/F,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACtC,eAAM,CAAC,IAAI,CAAC,yEAAyE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YAC3G,eAAM,CAAC,KAAK,CAAC,yDAAyD,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YAE5F,0CAA0C;YAC1C,MAAM,aAAa,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CACnE,GAAG,IAAI,CAAC,yBAAyB,gBAAgB,IAAI,CAAC,SAAS,mIAAmI,CAClM,CAAC;YAEF,IAAI,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC/C,MAAM,KAAK,GAAa,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAY,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/G,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACzB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACvC,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;wBACxE,eAAM,CAAC,IAAI,CAAC,8BAA8B,IAAI,eAAe,KAAK,EAAE,CAAC,CAAC;wBACtE,OAAO,GAAG,IAAI,CAAC;wBACf,sDAAsD;wBACtD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;wBAC5B,eAAM,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;wBACjE,MAAM;qBACN;iBACD;aACD;YAED,kDAAkD;YAClD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACtC,eAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;gBAC5D,MAAM,SAAS,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CAC/D,GAAG,IAAI,CAAC,yBAAyB,gBAAgB,IAAI,CAAC,SAAS,gBAAgB,CAC/E,CAAC;gBACF,eAAM,CAAC,IAAI,CAAC,cAAc,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;aAC9C;SACD;QAED,yEAAyE;QACzE,MAAM,YAAY,GAAW,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3D,eAAM,CAAC,KAAK,CAAC,4CAA4C,YAAY,GAAG,CAAC,CAAC;QAC1E,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,kBAAkB,CAAC,WAAoB;QACtC,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,cAAc,IAAI,CAAC,aAAa,gBAAgB,CAAC,CAAC;QAEhG,IAAI,CAAC,aAAa,CAAC,cAAc,CAChC,GAAG,IAAI,CAAC,yBAAyB,aAAa,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,SAAS,kEAAkE,CACvJ,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,yBAAyB,cAAc,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC;QAEpI,IAAI,OAAe,CAAC;QACpB,IAAI,WAAW,KAAK,SAAS,EAAE;YAC9B,OAAO,GAAG,GAAG,yCAAmB,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;SAC5E;aAAM;YACN,OAAO,GAAG,GAAG,yCAAmB,CAAC,kBAAkB,IAAI,WAAW,EAAE,CAAC;SACrE;QAED,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,cAAc,OAAO,wBAAwB,CAAC,CAAC;QAE7F,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,yBAAyB,eAAe,OAAO,OAAO,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC;IAC3H,CAAC;IAED,wBAAwB,CAAC,iBAAyB;QACjD,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,yBAAyB,KAAK,8CAAyB,CAAC,OAAO,EAAE;YACzE,IAAI,CAAC,eAAe,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,oCAAoC,CAAC,iBAAiB,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC;IAED,sBAAsB,CAAC,gBAAwB,EAAE,YAAoB,oCAAkC,CAAC,SAAS;QAChH,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CACvC,GAAG,IAAI,CAAC,yBAAyB,eAAe,oCAAkC,CAAC,GAAG,OAAO,IAAI,CAAC,SAAS,OAAO,SAAS,cAAc,gBAAgB,GAAG,CAC5J,CAAC;IACH,CAAC;IAED,iCAAiC,CAChC,gBAAwB,EACxB,YAAoB,oCAAkC,CAAC,SAAS,EAChE,UAAkB,IAAI;QAEtB,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CACvC,YAAY,OAAO,IAAI,IAAI,CAAC,yBAAyB,YAAY,oCAAkC,CAAC,GAAG,OAAO,IAAI,CAAC,SAAS,OAAO,SAAS,cAAc,gBAAgB,GAAG,CAC7K,CAAC;IACH,CAAC;IAED,oCAAoC,CAAC,iBAAyB;QAC7D,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAElD,+CAA+C;QAC/C,MAAM,YAAY,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;QAC/D,MAAM,eAAe,GAAW,gBAAgB,YAAY,OAAO,CAAC;QACpE,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QAErD,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CACvC,GAAG,IAAI,CAAC,yBAAyB,aAAa,IAAI,CAAC,SAAS,OAAO,eAAe,aAAa,eAAe,EAAE,CAChH,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,iBAAyB;QAC9C,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CACvC,eAAe,IAAI,CAAC,yBAAyB,gBAAgB,GAAG,iBAAiB,GAAG,IAAI,GAAG,KAAK,CAChG,CAAC;IACH,CAAC;IAED,4BAA4B,CAAC,UAAkB;QAC9C,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,yBAAyB,aAAa,IAAI,CAAC,SAAS,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACpI,CAAC;IAED,gCAAgC;QAC/B,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CACvC,GAAG,IAAI,CAAC,yBAAyB,WAAW,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,SAAS,UAAU,CAC7F,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,UAAkB,GAAG;QACrC,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,+BAA+B,CAAC,CAAC;QAE/E,MAAM,MAAM,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CAC5D,GAAG,IAAI,CAAC,yBAAyB,YAAY,IAAI,CAAC,SAAS,6BAA6B,IAAI,CAAC,aAAa,cAAc,OAAO,GAAG,CAClI,CAAC;QACF,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IACf,CAAC;IAED,eAAe;QACd,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,wBAAwB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAE1F,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,yBAAyB,qBAAqB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,aAAa,CAAC,WAAmB;QAChC,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,0BAA0B,WAAW,IAAI,CAAC,CAAC;QAEzF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,yBAAyB,gBAAgB,WAAW,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACxH,CAAC;IAED,aAAa,CAAC,WAAmB;QAChC,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,cAAc,WAAW,IAAI,CAAC,CAAC;QAE7E,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,yBAAyB,mBAAmB,WAAW,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3H,CAAC;IAED,uBAAuB;QACtB,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAElD,oCAAkC,CAAC,GAAG,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpE,oCAAkC,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAgB;QAC9B,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAElD,MAAM,mBAAmB,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,2CAA2C,CAAC,CAAC;QAExH,OAAO,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAClH,CAAC;IAED,YAAY;QACX,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,wBAAwB,CAAC,CAAC;QAExE,OAAO,yCAAmB,CAAC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;IAC5F,CAAC;IAED,iBAAiB;QAChB,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,wBAAwB,CAAC,CAAC;QACxE,MAAM,MAAM,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CAC5D,GAAG,IAAI,CAAC,yBAAyB,WAAW,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,SAAS,yCAAyC,CAC5H,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,WAAmB,EAAE,gBAAwB;QAChE,eAAM,CAAC,KAAK,CACX,GAAG,IAAI,CAAC,yBAAyB,sCAAsC,WAAW,+CAA+C,CACjI,CAAC;QAEF,IAAA,cAAI,EAAC,GAAG,IAAI,CAAC,yBAAyB,yBAAyB,WAAW,iBAAiB,gBAAgB,EAAE,EAAE;YAC9G,KAAK,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,kBAAkB;QACjB,eAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAEtC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,+CAA+C,CAAC,CAAC;QACnF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,cAAsB;QACtC,eAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1C,MAAM,iBAAiB,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,yBAAyB,YAAY,CAAC,CAAC;QAExH,eAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CAC9D;qDACkD,IAAI,CAAC,SAAS,mBAAmB,cAAc;gCACpE,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAC/D,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC3C,eAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;SAC9D;aAAM;YACN,eAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,8CAA8C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;SACjF;IACF,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,OAAe;QAC9B,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,mBAAmB,OAAO,GAAG,CAAC,CAAC;QAC7E,MAAM,gBAAgB,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CACtE,GAAG,IAAI,CAAC,yBAAyB,eAAe,IAAI,CAAC,SAAS,oBAAoB,OAAO,GAAG,CAC5F,CAAC;QAEF,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,yBAAyB,yBAAyB,OAAO,GAAG,CAAC,CAAC;QACnF,MAAM,MAAM,GAAgB,IAAI,CAAC,aAAa,CAAC,cAAc,CAC5D,GAAG,IAAI,CAAC,yBAAyB,YAAY,IAAI,CAAC,SAAS,iBAAiB,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAC1H,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,EAAE;YAClB,eAAM,CAAC,KAAK,CAAC,wBAAwB,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;SACrE;aAAM;YACN,eAAM,CAAC,KAAK,CAAC,OAAO,OAAO,wBAAwB,CAAC,CAAC;SACrD;IACF,CAAC;CACD,CAAA;AArVY,kCAAkC;IAD9C,IAAA,sBAAU,GAAE;IASV,WAAA,IAAA,kBAAM,EAAC,yBAAO,CAAC,aAAa,CAAC,CAAA;qCACI,6BAAa;GATpC,kCAAkC,CAqV9C;AArVY,gFAAkC;AAwVxC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,kCAAkC;IACxE,YAEU,aAA4B,EAE5B,OAA2C;QAEpD,KAAK,CAAC,aAAa,CAAC,CAAC;QAJZ,kBAAa,GAAb,aAAa,CAAe;QAE5B,YAAO,GAAP,OAAO,CAAoC;IAGrD,CAAC;IAED,EAAE,CAAC,OAAe,EAAE;QACnB,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,GAAG;QACF,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,EAAE,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,QAAQ,CAAC,UAAkB;QAC1B,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;CACD,CAAA;AA7BY,iBAAiB;IAD7B,IAAA,sBAAU,GAAE;IAGV,WAAA,IAAA,kBAAM,EAAC,yBAAO,CAAC,aAAa,CAAC,CAAA;IAE7B,WAAA,IAAA,kBAAM,EAAC,yBAAO,CAAC,kCAAkC,CAAC,CAAA;qCAD3B,6BAAa;QAEnB,kCAAkC;GALzC,iBAAiB,CA6B7B;AA7BY,8CAAiB"}
|
|
@@ -15,7 +15,7 @@ var ApiUrlResolver_1;
|
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.ApiUrlResolver = void 0;
|
|
17
17
|
/** *******************************************************************
|
|
18
|
-
* copyright (c) 2019-
|
|
18
|
+
* copyright (c) 2019-2026 Red Hat, Inc.
|
|
19
19
|
*
|
|
20
20
|
* This program and the accompanying materials are made
|
|
21
21
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -33,12 +33,65 @@ let ApiUrlResolver = ApiUrlResolver_1 = class ApiUrlResolver {
|
|
|
33
33
|
this.userNamespace = '';
|
|
34
34
|
}
|
|
35
35
|
async getWorkspaceApiUrl(workspaceName) {
|
|
36
|
-
|
|
36
|
+
const actualWorkspaceName = await this.resolveWorkspaceName(workspaceName);
|
|
37
|
+
return `${await this.getWorkspacesApiUrl()}/${actualWorkspaceName}`;
|
|
37
38
|
}
|
|
38
39
|
async getWorkspacesApiUrl() {
|
|
39
40
|
const namespace = await this.obtainUserNamespace();
|
|
40
41
|
return `${ApiUrlResolver_1.DASHBOARD_API_URL}/${namespace}/devworkspaces`;
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* resolves the actual DevWorkspace name from the API.
|
|
45
|
+
* If the exact workspace name exists, returns it as is.
|
|
46
|
+
* If not found, searches for a workspace whose name matches the pattern: workspaceName + '-' + random suffix
|
|
47
|
+
* (to handle cases where DevWorkspace has a random suffix like '-4fnq' after backup/restore).
|
|
48
|
+
* @param workspaceName - The workspace name to search for
|
|
49
|
+
* @returns The actual DevWorkspace name from the API
|
|
50
|
+
* @throws Error if no matching workspace is found
|
|
51
|
+
*/
|
|
52
|
+
async resolveWorkspaceName(workspaceName) {
|
|
53
|
+
Logger_1.Logger.debug(`Resolving workspace name: ${workspaceName}`);
|
|
54
|
+
try {
|
|
55
|
+
// first, try to get the workspace directly by the provided name
|
|
56
|
+
const directUrl = `${await this.getWorkspacesApiUrl()}/${workspaceName}`;
|
|
57
|
+
const directResponse = await this.processRequestHandler.get(directUrl);
|
|
58
|
+
if (directResponse.status === 200) {
|
|
59
|
+
Logger_1.Logger.debug(`Found exact match: ${workspaceName}`);
|
|
60
|
+
return workspaceName;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
// workspace not found by exact name, will search by prefix with suffix pattern
|
|
65
|
+
Logger_1.Logger.debug(`Exact match not found for ${workspaceName}, searching by prefix with suffix`);
|
|
66
|
+
}
|
|
67
|
+
// if exact match not found, get all workspaces and search by prefix + dash + suffix pattern
|
|
68
|
+
const allWorkspacesResponse = await this.processRequestHandler.get(await this.getWorkspacesApiUrl());
|
|
69
|
+
if (allWorkspacesResponse.status !== 200) {
|
|
70
|
+
throw new Error(`Cannot get workspaces list. Code: ${allWorkspacesResponse.status} Data: ${allWorkspacesResponse.data}`);
|
|
71
|
+
}
|
|
72
|
+
const workspaces = allWorkspacesResponse.data.items || [];
|
|
73
|
+
// look for workspace with pattern: workspaceName + '-' + suffix (e.g., 'test-workspace-2-4fnq')
|
|
74
|
+
// this ensures we don't match 'test-workspace-20' when looking for 'test-workspace-2'
|
|
75
|
+
const matchingWorkspaces = workspaces.filter((ws) => {
|
|
76
|
+
const dwName = ws.metadata.name;
|
|
77
|
+
// check if name starts with workspaceName followed by a dash
|
|
78
|
+
if (dwName.startsWith(workspaceName + '-')) {
|
|
79
|
+
// verify that what follows the dash looks like a random suffix (lowercase letters/numbers)
|
|
80
|
+
const suffix = dwName.substring(workspaceName.length + 1);
|
|
81
|
+
return suffix.length > 0 && /^[a-z0-9]+$/.test(suffix);
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
});
|
|
85
|
+
if (matchingWorkspaces.length === 1) {
|
|
86
|
+
Logger_1.Logger.debug(`Found workspace by prefix: ${matchingWorkspaces[0].metadata.name} (requested: ${workspaceName})`);
|
|
87
|
+
return matchingWorkspaces[0].metadata.name;
|
|
88
|
+
}
|
|
89
|
+
if (matchingWorkspaces.length > 1) {
|
|
90
|
+
const names = matchingWorkspaces.map((ws) => ws.metadata.name).join(', ');
|
|
91
|
+
throw new Error(`Multiple workspaces found matching '${workspaceName}': ${names}. Please use exact DevWorkspace name or delete duplicates.`);
|
|
92
|
+
}
|
|
93
|
+
throw new Error(`Workspace not found: ${workspaceName} (tried exact match and prefix search)`);
|
|
94
|
+
}
|
|
42
95
|
async obtainUserNamespace() {
|
|
43
96
|
Logger_1.Logger.debug(`${this.userNamespace}`);
|
|
44
97
|
if (this.userNamespace.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiUrlResolver.js","sourceRoot":"","sources":["../../../utils/workspace/ApiUrlResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;wEAQwE;AACxE,yCAA+C;AAC/C,mEAAwD;AACxD,sCAAmC;AACnC,mFAAgF;AAIzE,IAAM,cAAc,sBAApB,MAAM,cAAc;IAM1B,YAEkB,qBAA2C;QAA3C,0BAAqB,GAArB,qBAAqB,CAAsB;QAJrD,kBAAa,GAAW,EAAE,CAAC;IAKhC,CAAC;IAEJ,KAAK,CAAC,kBAAkB,CAAC,aAAqB;QAC7C,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"ApiUrlResolver.js","sourceRoot":"","sources":["../../../utils/workspace/ApiUrlResolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -32,6 +32,15 @@ export class Workspaces {
|
|
|
32
32
|
private static readonly CONFIRMATION_WINDOW: By = By.xpath('//div[@aria-label="Delete workspaces confirmation window"]');
|
|
33
33
|
private static readonly LEARN_MORE_DOC_LINK: By = By.xpath('//div/p/a');
|
|
34
34
|
|
|
35
|
+
private static readonly BACKUPS_BUTTON: By = By.id('view-backups');
|
|
36
|
+
private static readonly BACKUP_IMAGE: By = By.css('input[aria-label="Copyable input"]');
|
|
37
|
+
private static readonly CREATE_FROM_BACKUP_BUTTON: By = By.xpath('//span[text()="Create from Backup"]');
|
|
38
|
+
private static readonly RESTORE_WORKSPACE_BUTTON: By = By.xpath('//span[text()="Restore Workspace"]');
|
|
39
|
+
private static readonly RESTORE_CONFIRM_BUTTON: By = By.xpath('//span[text()="Restore"]');
|
|
40
|
+
private static readonly EXTERNAL_REGISTRY_MODE_BUTTON: By = By.xpath('//span[text()="External registry"]');
|
|
41
|
+
private static readonly BACKUP_IMAGE_URL_INPUT: By = By.css('input[aria-label="Backup image URL"]');
|
|
42
|
+
private static readonly WORKSPACE_NAME_INPUT: By = By.css('input[aria-label="Workspace name"]');
|
|
43
|
+
|
|
35
44
|
constructor(
|
|
36
45
|
@inject(CLASSES.DriverHelper)
|
|
37
46
|
private readonly driverHelper: DriverHelper
|
|
@@ -214,6 +223,68 @@ export class Workspaces {
|
|
|
214
223
|
return await this.driverHelper.waitAndGetElementAttribute(Workspaces.LEARN_MORE_DOC_LINK, 'href');
|
|
215
224
|
}
|
|
216
225
|
|
|
226
|
+
async waitBackupStatus(
|
|
227
|
+
workspaceName: string,
|
|
228
|
+
status: string,
|
|
229
|
+
timeout: number = TIMEOUT_CONSTANTS.TS_WAIT_BACKUP_STATUS_TIMEOUT
|
|
230
|
+
): Promise<void> {
|
|
231
|
+
Logger.debug(`Backup status for the "${workspaceName}" list item`);
|
|
232
|
+
|
|
233
|
+
await this.driverHelper.waitVisibility(this.getBackupStatusLocator(workspaceName, status), timeout);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
async openBackupsPage(timeout: number = TIMEOUT_CONSTANTS.TS_CLICK_DASHBOARD_ITEM_TIMEOUT): Promise<void> {
|
|
237
|
+
Logger.debug();
|
|
238
|
+
|
|
239
|
+
await this.driverHelper.waitAndClick(Workspaces.BACKUPS_BUTTON, timeout);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
async clickCreateFromBackupButton(
|
|
243
|
+
workspaceName: string,
|
|
244
|
+
timeout: number = TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT
|
|
245
|
+
): Promise<void> {
|
|
246
|
+
Logger.debug(`"${workspaceName}"`);
|
|
247
|
+
|
|
248
|
+
await this.driverHelper.waitAndClick(this.getActionsRestoreWorkspaceButtonLocator(workspaceName), timeout);
|
|
249
|
+
await this.driverHelper.waitAndClick(Workspaces.CREATE_FROM_BACKUP_BUTTON, timeout);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
async restoreWorkspaceFromDefaultRegistry(): Promise<void> {
|
|
253
|
+
Logger.debug();
|
|
254
|
+
|
|
255
|
+
await this.driverHelper.waitAndClick(Workspaces.RESTORE_WORKSPACE_BUTTON);
|
|
256
|
+
await this.driverHelper.waitAndClick(Workspaces.RESTORE_CONFIRM_BUTTON);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
async restoreWorkspaceFromExternalRegistry(backupImageUrl: string, workspaceName: string): Promise<void> {
|
|
260
|
+
Logger.debug();
|
|
261
|
+
|
|
262
|
+
await this.driverHelper.waitAndClick(Workspaces.EXTERNAL_REGISTRY_MODE_BUTTON);
|
|
263
|
+
await this.setBackupImageUrlValue(backupImageUrl);
|
|
264
|
+
await this.setWorkspaceNameValue(workspaceName);
|
|
265
|
+
await this.driverHelper.waitAndClick(Workspaces.RESTORE_WORKSPACE_BUTTON);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
async getBackupImageUrlValue(): Promise<string> {
|
|
269
|
+
Logger.debug();
|
|
270
|
+
|
|
271
|
+
return await this.driverHelper.waitAndGetValue(Workspaces.BACKUP_IMAGE, TIMEOUT_CONSTANTS.TS_COMMON_DASHBOARD_WAIT_TIMEOUT);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
async setBackupImageUrlValue(backupImageUrl: string): Promise<void> {
|
|
275
|
+
Logger.debug();
|
|
276
|
+
|
|
277
|
+
await this.driverHelper.clear(Workspaces.BACKUP_IMAGE_URL_INPUT);
|
|
278
|
+
await this.driverHelper.type(Workspaces.BACKUP_IMAGE_URL_INPUT, backupImageUrl);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
async setWorkspaceNameValue(workspaceName: string): Promise<void> {
|
|
282
|
+
Logger.debug();
|
|
283
|
+
|
|
284
|
+
await this.driverHelper.clear(Workspaces.WORKSPACE_NAME_INPUT);
|
|
285
|
+
await this.driverHelper.type(Workspaces.WORKSPACE_NAME_INPUT, workspaceName);
|
|
286
|
+
}
|
|
287
|
+
|
|
217
288
|
private getWorkspaceListItemLocator(workspaceName: string): By {
|
|
218
289
|
return By.xpath(`//tr[td//span[text()='${workspaceName}']]`);
|
|
219
290
|
}
|
|
@@ -247,4 +318,12 @@ export class Workspaces {
|
|
|
247
318
|
private getOpenWorkspaceDetailsLinkLocator(workspaceName: string): By {
|
|
248
319
|
return By.xpath(`${this.getWorkspaceListItemLocator(workspaceName).value}//span[text()='${workspaceName}']`);
|
|
249
320
|
}
|
|
321
|
+
|
|
322
|
+
private getActionsRestoreWorkspaceButtonLocator(workspaceName: string): By {
|
|
323
|
+
return By.xpath(`//tr[td//span[text()='${workspaceName}']]//button[@aria-label='Actions for ${workspaceName}']`);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
private getBackupStatusLocator(workspaceName: string, status: string): By {
|
|
327
|
+
return By.xpath(`//tr[td//span[text()='${workspaceName}']]//span[@aria-label="Backup status: ${status}"]`);
|
|
328
|
+
}
|
|
250
329
|
}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/** *******************************************************************
|
|
2
|
+
* copyright (c) 2026 Red Hat, Inc.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
**********************************************************************/
|
|
10
|
+
import { e2eContainer } from '../../configs/inversify.config';
|
|
11
|
+
import { ViewSection } from 'monaco-page-objects';
|
|
12
|
+
import { CLASSES, TYPES } from '../../configs/inversify.types';
|
|
13
|
+
import { expect } from 'chai';
|
|
14
|
+
import { WorkspaceHandlingTests } from '../../tests-library/WorkspaceHandlingTests';
|
|
15
|
+
import { ProjectAndFileTests } from '../../tests-library/ProjectAndFileTests';
|
|
16
|
+
import { LoginTests } from '../../tests-library/LoginTests';
|
|
17
|
+
import { registerRunningWorkspace } from '../MochaHooks';
|
|
18
|
+
import { BrowserTabsUtil } from '../../utils/BrowserTabsUtil';
|
|
19
|
+
import { BASE_TEST_CONSTANTS } from '../../constants/BASE_TEST_CONSTANTS';
|
|
20
|
+
import { Dashboard } from '../../pageobjects/dashboard/Dashboard';
|
|
21
|
+
import { Workspaces } from '../../pageobjects/dashboard/Workspaces';
|
|
22
|
+
import { FACTORY_TEST_CONSTANTS } from '../../constants/FACTORY_TEST_CONSTANTS';
|
|
23
|
+
import { ITestWorkspaceUtil } from '../../utils/workspace/ITestWorkspaceUtil';
|
|
24
|
+
import { Logger } from '../../utils/Logger';
|
|
25
|
+
import { StringUtil } from '../../utils/StringUtil';
|
|
26
|
+
import { TIMEOUT_CONSTANTS } from '../../constants/TIMEOUT_CONSTANTS';
|
|
27
|
+
import { ContainerTerminal, KubernetesCommandLineToolsExecutor } from '../../utils/KubernetesCommandLineToolsExecutor';
|
|
28
|
+
import { ShellString } from 'shelljs';
|
|
29
|
+
import { WorkspaceDetails } from '../../pageobjects/dashboard/workspace-details/WorkspaceDetails';
|
|
30
|
+
|
|
31
|
+
const factoryUrl: string =
|
|
32
|
+
FACTORY_TEST_CONSTANTS.TS_SELENIUM_FACTORY_GIT_REPO_URL || 'https://gh.crw-qe.com/test-automation-only/python-hello-world.git';
|
|
33
|
+
const testFileName: string = 'backup-test.txt';
|
|
34
|
+
const testFileContent: string = 'This is a test file for backup verification';
|
|
35
|
+
|
|
36
|
+
suite(`"Restore workspace from backup" test ${BASE_TEST_CONSTANTS.TEST_ENVIRONMENT}`, function (): void {
|
|
37
|
+
const workspaceHandlingTests: WorkspaceHandlingTests = e2eContainer.get(CLASSES.WorkspaceHandlingTests);
|
|
38
|
+
const projectAndFileTests: ProjectAndFileTests = e2eContainer.get(CLASSES.ProjectAndFileTests);
|
|
39
|
+
const loginTests: LoginTests = e2eContainer.get(CLASSES.LoginTests);
|
|
40
|
+
const browserTabsUtil: BrowserTabsUtil = e2eContainer.get(CLASSES.BrowserTabsUtil);
|
|
41
|
+
const dashboard: Dashboard = e2eContainer.get(CLASSES.Dashboard);
|
|
42
|
+
const workspaces: Workspaces = e2eContainer.get(CLASSES.Workspaces);
|
|
43
|
+
const testWorkspaceUtil: ITestWorkspaceUtil = e2eContainer.get(TYPES.WorkspaceUtil);
|
|
44
|
+
const workspaceDetails: WorkspaceDetails = e2eContainer.get(CLASSES.WorkspaceDetails);
|
|
45
|
+
const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = e2eContainer.get(
|
|
46
|
+
CLASSES.KubernetesCommandLineToolsExecutor
|
|
47
|
+
);
|
|
48
|
+
const containerTerminal: ContainerTerminal = e2eContainer.get(CLASSES.ContainerTerminal);
|
|
49
|
+
const workspaceName2: string = 'test-workspace-2';
|
|
50
|
+
|
|
51
|
+
let projectSection: ViewSection;
|
|
52
|
+
let workspaceName: string;
|
|
53
|
+
let backupImageUrl: string;
|
|
54
|
+
let projectName: string;
|
|
55
|
+
|
|
56
|
+
async function openWorkspaceDetailsBackup(workspaceName: string): Promise<void> {
|
|
57
|
+
await workspaces.clickWorkspaceListItemLink(workspaceName);
|
|
58
|
+
await workspaceDetails.waitWorkspaceTitle(workspaceName);
|
|
59
|
+
await workspaceDetails.waitLoaderDisappearance();
|
|
60
|
+
await workspaceDetails.selectTab('Backup');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
suiteSetup('Login', async function (): Promise<void> {
|
|
64
|
+
await loginTests.loginIntoChe();
|
|
65
|
+
});
|
|
66
|
+
test(`Create and open new workspace from factory:${factoryUrl}`, async function (): Promise<void> {
|
|
67
|
+
await workspaceHandlingTests.createAndOpenWorkspaceFromGitRepository(factoryUrl);
|
|
68
|
+
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
69
|
+
registerRunningWorkspace(WorkspaceHandlingTests.getWorkspaceName());
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
test('Wait workspace readiness and project folder has been created', async function (): Promise<void> {
|
|
73
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
74
|
+
});
|
|
75
|
+
test('Check a project folder has been created', async function (): Promise<void> {
|
|
76
|
+
projectName = FACTORY_TEST_CONSTANTS.TS_SELENIUM_PROJECT_NAME || StringUtil.getProjectNameFromGitUrl(factoryUrl);
|
|
77
|
+
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
78
|
+
expect(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not imported').not.undefined;
|
|
79
|
+
await projectAndFileTests.performTrustDialogs();
|
|
80
|
+
});
|
|
81
|
+
test('Setup workspace context for API operations', function (): void {
|
|
82
|
+
workspaceName = WorkspaceHandlingTests.getWorkspaceName();
|
|
83
|
+
kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
|
|
84
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
85
|
+
kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
|
|
86
|
+
});
|
|
87
|
+
test('Create test file via API', function (): void {
|
|
88
|
+
Logger.debug(`Creating test file: /projects/${projectName}/${testFileName}`);
|
|
89
|
+
const createFileCommand: string = `echo "${testFileContent}" > /projects/${projectName}/${testFileName}`;
|
|
90
|
+
const output: ShellString = containerTerminal.execInContainerCommand(createFileCommand);
|
|
91
|
+
Logger.debug(`File creation output: ${output.stdout}`);
|
|
92
|
+
expect(output.code).to.equal(0);
|
|
93
|
+
});
|
|
94
|
+
test('Verify test file content via API', function (): void {
|
|
95
|
+
Logger.debug(`Verifying test file content: /projects/${projectName}/${testFileName}`);
|
|
96
|
+
const readFileCommand: string = `cat /projects/${projectName}/${testFileName}`;
|
|
97
|
+
const output: ShellString = containerTerminal.execInContainerCommand(readFileCommand);
|
|
98
|
+
Logger.debug(`File content: ${output.stdout}`);
|
|
99
|
+
expect(output.stdout.trim()).to.equal(testFileContent);
|
|
100
|
+
});
|
|
101
|
+
test('Stop the workspace', async function (): Promise<void> {
|
|
102
|
+
expect(workspaceName, 'Workspace name not available').not.empty;
|
|
103
|
+
await dashboard.openDashboard();
|
|
104
|
+
await dashboard.waitPage();
|
|
105
|
+
await dashboard.stopWorkspaceByUI(workspaceName);
|
|
106
|
+
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
107
|
+
await workspaces.waitWorkspaceWithStoppedStatus(workspaceName);
|
|
108
|
+
await workspaces.waitBackupStatus(workspaceName, 'Never');
|
|
109
|
+
});
|
|
110
|
+
test('Wait for backup completion', async function (): Promise<void> {
|
|
111
|
+
await workspaces.waitWorkspaceListItem(workspaceName);
|
|
112
|
+
await workspaces.waitBackupStatus(workspaceName, 'Success');
|
|
113
|
+
});
|
|
114
|
+
test('Get backup image URL', async function (): Promise<void> {
|
|
115
|
+
await openWorkspaceDetailsBackup(workspaceName);
|
|
116
|
+
backupImageUrl = await workspaces.getBackupImageUrlValue();
|
|
117
|
+
Logger.info(`Retrieved backup image URL: ${backupImageUrl}`);
|
|
118
|
+
});
|
|
119
|
+
test('Delete the workspace', async function (): Promise<void> {
|
|
120
|
+
await dashboard.deleteStoppedWorkspaceByUI(workspaceName);
|
|
121
|
+
});
|
|
122
|
+
test('Open backups page', async function (): Promise<void> {
|
|
123
|
+
await workspaces.openBackupsPage();
|
|
124
|
+
await workspaces.waitWorkspaceListItem(workspaceName);
|
|
125
|
+
await workspaces.waitBackupStatus(workspaceName, 'Success');
|
|
126
|
+
});
|
|
127
|
+
test('Restore workspace from default registry', async function (): Promise<void> {
|
|
128
|
+
const parentGUID: string = await browserTabsUtil.getCurrentWindowHandle();
|
|
129
|
+
await workspaces.clickCreateFromBackupButton(workspaceName);
|
|
130
|
+
await workspaces.restoreWorkspaceFromDefaultRegistry();
|
|
131
|
+
await browserTabsUtil.waitAndSwitchToAnotherWindow(parentGUID, TIMEOUT_CONSTANTS.TS_IDE_LOAD_TIMEOUT);
|
|
132
|
+
});
|
|
133
|
+
test('Obtain workspace name after restore', async function (): Promise<void> {
|
|
134
|
+
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
135
|
+
const obtainedName: string = WorkspaceHandlingTests.getWorkspaceName();
|
|
136
|
+
Logger.info(`Obtained workspace name after first restore: '${obtainedName}'`);
|
|
137
|
+
});
|
|
138
|
+
test('Register restored workspace', function (): void {
|
|
139
|
+
registerRunningWorkspace(WorkspaceHandlingTests.getWorkspaceName());
|
|
140
|
+
});
|
|
141
|
+
test('Wait workspace readiness after restore', async function (): Promise<void> {
|
|
142
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
143
|
+
await projectAndFileTests.performTrustDialogs();
|
|
144
|
+
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
145
|
+
});
|
|
146
|
+
test('Setup workspace context for API operations after restore', function (): void {
|
|
147
|
+
workspaceName = WorkspaceHandlingTests.getWorkspaceName();
|
|
148
|
+
Logger.info(`Workspace name for API setup after first restore: '${workspaceName}'`);
|
|
149
|
+
expect(workspaceName, 'Workspace name should not be empty after restore').not.empty;
|
|
150
|
+
kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
|
|
151
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
152
|
+
kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
|
|
153
|
+
});
|
|
154
|
+
test('Verify project folder exists after restore', async function (): Promise<void> {
|
|
155
|
+
await projectAndFileTests.expandProjectTreeItem(projectSection, projectName);
|
|
156
|
+
expect(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not restored').not.undefined;
|
|
157
|
+
});
|
|
158
|
+
test('Verify test file content is intact after restore via API', function (): void {
|
|
159
|
+
Logger.debug(`Verifying restored file content: /projects/${projectName}/${testFileName}`);
|
|
160
|
+
const readFileCommand: string = `cat /projects/${projectName}/${testFileName}`;
|
|
161
|
+
const output: ShellString = containerTerminal.execInContainerCommand(readFileCommand);
|
|
162
|
+
Logger.debug(`Restored file content: ${output.stdout}`);
|
|
163
|
+
expect(output.stdout.trim()).to.equal(testFileContent);
|
|
164
|
+
});
|
|
165
|
+
test('Delete the workspace', async function (): Promise<void> {
|
|
166
|
+
await dashboard.openDashboard();
|
|
167
|
+
await dashboard.waitPage();
|
|
168
|
+
await dashboard.deleteStoppedWorkspaceByUI(workspaceName);
|
|
169
|
+
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
170
|
+
});
|
|
171
|
+
test('Open backups page', async function (): Promise<void> {
|
|
172
|
+
await workspaces.openBackupsPage();
|
|
173
|
+
await workspaces.waitWorkspaceListItem(workspaceName);
|
|
174
|
+
await workspaces.waitBackupStatus(workspaceName, 'Success');
|
|
175
|
+
});
|
|
176
|
+
test('Restore workspace from backup image URL ', async function (): Promise<void> {
|
|
177
|
+
const parentGUID: string = await browserTabsUtil.getCurrentWindowHandle();
|
|
178
|
+
await workspaces.clickCreateFromBackupButton(workspaceName);
|
|
179
|
+
await workspaces.restoreWorkspaceFromExternalRegistry(backupImageUrl, workspaceName2);
|
|
180
|
+
await browserTabsUtil.waitAndSwitchToAnotherWindow(parentGUID, TIMEOUT_CONSTANTS.TS_IDE_LOAD_TIMEOUT);
|
|
181
|
+
});
|
|
182
|
+
test('Obtain workspace name after second restore', async function (): Promise<void> {
|
|
183
|
+
await workspaceHandlingTests.obtainWorkspaceNameFromStartingPage();
|
|
184
|
+
const obtainedName: string = WorkspaceHandlingTests.getWorkspaceName();
|
|
185
|
+
Logger.info(`Obtained workspace name after second restore: '${obtainedName}'`);
|
|
186
|
+
});
|
|
187
|
+
test('Register second restored workspace', function (): void {
|
|
188
|
+
registerRunningWorkspace(WorkspaceHandlingTests.getWorkspaceName());
|
|
189
|
+
});
|
|
190
|
+
test('Wait workspace readiness after second restore', async function (): Promise<void> {
|
|
191
|
+
await projectAndFileTests.waitWorkspaceReadinessForCheCodeEditor();
|
|
192
|
+
await projectAndFileTests.performTrustDialogs();
|
|
193
|
+
projectSection = await projectAndFileTests.getProjectViewSession();
|
|
194
|
+
});
|
|
195
|
+
test('Setup workspace context for API operations after second restore', function (): void {
|
|
196
|
+
workspaceName = WorkspaceHandlingTests.getWorkspaceName();
|
|
197
|
+
Logger.info(`Workspace name for API setup after second restore: '${workspaceName}'`);
|
|
198
|
+
expect(workspaceName, 'Workspace name should not be empty after second restore').not.empty;
|
|
199
|
+
kubernetesCommandLineToolsExecutor.workspaceName = workspaceName;
|
|
200
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
201
|
+
kubernetesCommandLineToolsExecutor.getPodAndContainerNames();
|
|
202
|
+
});
|
|
203
|
+
test('Verify project folder exists after second restore', async function (): Promise<void> {
|
|
204
|
+
await projectAndFileTests.expandProjectTreeItem(projectSection, projectName);
|
|
205
|
+
expect(await projectAndFileTests.getProjectTreeItem(projectSection, projectName), 'Project folder was not restored').not.undefined;
|
|
206
|
+
});
|
|
207
|
+
test('Verify test file content is intact after second restore via API', function (): void {
|
|
208
|
+
Logger.debug(`Verifying restored file content: /projects/${projectName}/${testFileName}`);
|
|
209
|
+
const readFileCommand: string = `cat /projects/${projectName}/${testFileName}`;
|
|
210
|
+
const output: ShellString = containerTerminal.execInContainerCommand(readFileCommand);
|
|
211
|
+
Logger.debug(`Restored file content: ${output.stdout}`);
|
|
212
|
+
expect(output.stdout.trim()).to.equal(testFileContent);
|
|
213
|
+
});
|
|
214
|
+
suiteTeardown('Open dashboard and close all other tabs', async function (): Promise<void> {
|
|
215
|
+
await dashboard.openDashboard();
|
|
216
|
+
await browserTabsUtil.closeAllTabsExceptCurrent();
|
|
217
|
+
});
|
|
218
|
+
suiteTeardown('Stop and delete workspace by API', async function (): Promise<void> {
|
|
219
|
+
await testWorkspaceUtil.stopAndDeleteWorkspaceByName(workspaceName);
|
|
220
|
+
});
|
|
221
|
+
suiteTeardown('Unregister running workspace', function (): void {
|
|
222
|
+
registerRunningWorkspace('');
|
|
223
|
+
});
|
|
224
|
+
});
|
|
@@ -243,4 +243,14 @@ export class ProjectAndFileTests {
|
|
|
243
243
|
|
|
244
244
|
throw new Error(`File "${fileName}" was not opened in the editor after ${maxAttempts} attempts`);
|
|
245
245
|
}
|
|
246
|
+
|
|
247
|
+
async expandProjectTreeItem(projectSection: ViewSection, projectName: string): Promise<void> {
|
|
248
|
+
Logger.debug(`${projectName}`);
|
|
249
|
+
const projectTreeItem: ViewItem | undefined = await projectSection.findItem(projectName, 2);
|
|
250
|
+
if (!projectTreeItem) {
|
|
251
|
+
throw new Error(`Project tree item "${projectName}" not found`);
|
|
252
|
+
}
|
|
253
|
+
await projectTreeItem.click();
|
|
254
|
+
await this.driverHelper.wait(TIMEOUT_CONSTANTS.TS_EXPAND_PROJECT_TREE_ITEM_TIMEOUT);
|
|
255
|
+
}
|
|
246
256
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** *******************************************************************
|
|
2
|
-
* copyright (c) 2023-
|
|
2
|
+
* copyright (c) 2023-2026 Red Hat, Inc.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made
|
|
5
5
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -78,21 +78,68 @@ export class KubernetesCommandLineToolsExecutor implements IKubernetesCommandLin
|
|
|
78
78
|
|
|
79
79
|
getContainerName(): string {
|
|
80
80
|
Logger.debug(`${this.kubernetesCommandLineTool} - get container name.`);
|
|
81
|
+
Logger.debug(`Getting container name for pod: '${KubernetesCommandLineToolsExecutor.pod}' in namespace: ${this.namespace}`);
|
|
81
82
|
|
|
82
83
|
const output: ShellString = this.shellExecutor.executeCommand(
|
|
83
|
-
`${this.kubernetesCommandLineTool} get ${KubernetesCommandLineToolsExecutor.pod} -o jsonpath='{.spec.containers[*].name}' -n ${this.namespace}`
|
|
84
|
+
`${this.kubernetesCommandLineTool} get pod ${KubernetesCommandLineToolsExecutor.pod} -o jsonpath='{.spec.containers[*].name}' -n ${this.namespace}`
|
|
84
85
|
);
|
|
85
86
|
echo('\n');
|
|
86
|
-
|
|
87
|
+
const containerName: string = output.stderr ? output.stderr : output.stdout;
|
|
88
|
+
Logger.debug(`Found container name: '${containerName}'`);
|
|
89
|
+
return containerName;
|
|
87
90
|
}
|
|
88
91
|
|
|
89
92
|
getWorkspacePodName(): string {
|
|
90
93
|
Logger.debug(`${this.kubernetesCommandLineTool} - get workspace pod name.`);
|
|
94
|
+
Logger.debug(
|
|
95
|
+
`Looking for pod with label: controller.devfile.io/devworkspace_name=${this.workspaceName} in namespace: ${this.namespace}`
|
|
96
|
+
);
|
|
91
97
|
|
|
92
98
|
const output: ShellString = this.shellExecutor.executeCommand(
|
|
93
99
|
`${this.kubernetesCommandLineTool} get pod -l controller.devfile.io/devworkspace_name=${this.workspaceName} -n ${this.namespace} -o name`
|
|
94
100
|
);
|
|
95
|
-
|
|
101
|
+
let podName: string = output.stderr ? output.stderr : output.stdout.replace('\n', '');
|
|
102
|
+
Logger.debug(`Found pod name (before removing prefix): '${podName}'`);
|
|
103
|
+
|
|
104
|
+
// if pod not found, try to find by workspace name prefix (for restored workspaces with suffix)
|
|
105
|
+
if (!podName || podName.trim() === '') {
|
|
106
|
+
Logger.warn(`No pod found with exact label controller.devfile.io/devworkspace_name=${this.workspaceName}`);
|
|
107
|
+
Logger.debug(`Trying to find pod with workspace name starting with: ${this.workspaceName}`);
|
|
108
|
+
|
|
109
|
+
// get all pods and filter by label prefix
|
|
110
|
+
const allPodsOutput: ShellString = this.shellExecutor.executeCommand(
|
|
111
|
+
`${this.kubernetesCommandLineTool} get pods -n ${this.namespace} -o jsonpath='{range .items[*]}{.metadata.name}{"\\t"}{.metadata.labels.controller\\.devfile\\.io/devworkspace_name}{"\\n"}{end}'`
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
if (allPodsOutput.stdout && this.workspaceName) {
|
|
115
|
+
const lines: string[] = allPodsOutput.stdout.split('\n').filter((line: string): boolean => line.trim() !== '');
|
|
116
|
+
for (const line of lines) {
|
|
117
|
+
const [name, label] = line.split('\t');
|
|
118
|
+
if (label && this.workspaceName && label.startsWith(this.workspaceName)) {
|
|
119
|
+
Logger.info(`Found pod by prefix match: ${name} with label ${label}`);
|
|
120
|
+
podName = name;
|
|
121
|
+
// update workspace name to the actual one with suffix
|
|
122
|
+
this._workspaceName = label;
|
|
123
|
+
Logger.info(`Updated workspace name to: ${this._workspaceName}`);
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// if still not found, list all pods for debugging
|
|
130
|
+
if (!podName || podName.trim() === '') {
|
|
131
|
+
Logger.warn('Listing all pods in namespace for debugging:');
|
|
132
|
+
const debugPods: ShellString = this.shellExecutor.executeCommand(
|
|
133
|
+
`${this.kubernetesCommandLineTool} get pods -n ${this.namespace} --show-labels`
|
|
134
|
+
);
|
|
135
|
+
Logger.warn(`All pods:\n${debugPods.stdout}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// remove 'pod/' prefix if present (oc get -o name returns 'pod/podname')
|
|
140
|
+
const cleanPodName: string = podName.replace(/^pod\//, '');
|
|
141
|
+
Logger.debug(`Clean pod name (after removing prefix): '${cleanPodName}'`);
|
|
142
|
+
return cleanPodName;
|
|
96
143
|
}
|
|
97
144
|
|
|
98
145
|
deleteDevWorkspace(devfileName?: string): void {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** *******************************************************************
|
|
2
|
-
* copyright (c) 2019-
|
|
2
|
+
* copyright (c) 2019-2026 Red Hat, Inc.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made
|
|
5
5
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -26,7 +26,8 @@ export class ApiUrlResolver {
|
|
|
26
26
|
) {}
|
|
27
27
|
|
|
28
28
|
async getWorkspaceApiUrl(workspaceName: string): Promise<string> {
|
|
29
|
-
|
|
29
|
+
const actualWorkspaceName: string = await this.resolveWorkspaceName(workspaceName);
|
|
30
|
+
return `${await this.getWorkspacesApiUrl()}/${actualWorkspaceName}`;
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
async getWorkspacesApiUrl(): Promise<string> {
|
|
@@ -34,6 +35,66 @@ export class ApiUrlResolver {
|
|
|
34
35
|
return `${ApiUrlResolver.DASHBOARD_API_URL}/${namespace}/devworkspaces`;
|
|
35
36
|
}
|
|
36
37
|
|
|
38
|
+
/**
|
|
39
|
+
* resolves the actual DevWorkspace name from the API.
|
|
40
|
+
* If the exact workspace name exists, returns it as is.
|
|
41
|
+
* If not found, searches for a workspace whose name matches the pattern: workspaceName + '-' + random suffix
|
|
42
|
+
* (to handle cases where DevWorkspace has a random suffix like '-4fnq' after backup/restore).
|
|
43
|
+
* @param workspaceName - The workspace name to search for
|
|
44
|
+
* @returns The actual DevWorkspace name from the API
|
|
45
|
+
* @throws Error if no matching workspace is found
|
|
46
|
+
*/
|
|
47
|
+
private async resolveWorkspaceName(workspaceName: string): Promise<string> {
|
|
48
|
+
Logger.debug(`Resolving workspace name: ${workspaceName}`);
|
|
49
|
+
|
|
50
|
+
try {
|
|
51
|
+
// first, try to get the workspace directly by the provided name
|
|
52
|
+
const directUrl: string = `${await this.getWorkspacesApiUrl()}/${workspaceName}`;
|
|
53
|
+
const directResponse: AxiosResponse = await this.processRequestHandler.get(directUrl);
|
|
54
|
+
if (directResponse.status === 200) {
|
|
55
|
+
Logger.debug(`Found exact match: ${workspaceName}`);
|
|
56
|
+
return workspaceName;
|
|
57
|
+
}
|
|
58
|
+
} catch (error) {
|
|
59
|
+
// workspace not found by exact name, will search by prefix with suffix pattern
|
|
60
|
+
Logger.debug(`Exact match not found for ${workspaceName}, searching by prefix with suffix`);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// if exact match not found, get all workspaces and search by prefix + dash + suffix pattern
|
|
64
|
+
const allWorkspacesResponse: AxiosResponse = await this.processRequestHandler.get(await this.getWorkspacesApiUrl());
|
|
65
|
+
if (allWorkspacesResponse.status !== 200) {
|
|
66
|
+
throw new Error(`Cannot get workspaces list. Code: ${allWorkspacesResponse.status} Data: ${allWorkspacesResponse.data}`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const workspaces: Array<{ metadata: { name: string } }> = allWorkspacesResponse.data.items || [];
|
|
70
|
+
// look for workspace with pattern: workspaceName + '-' + suffix (e.g., 'test-workspace-2-4fnq')
|
|
71
|
+
// this ensures we don't match 'test-workspace-20' when looking for 'test-workspace-2'
|
|
72
|
+
const matchingWorkspaces: Array<{ metadata: { name: string } }> = workspaces.filter((ws): boolean => {
|
|
73
|
+
const dwName: string = ws.metadata.name;
|
|
74
|
+
// check if name starts with workspaceName followed by a dash
|
|
75
|
+
if (dwName.startsWith(workspaceName + '-')) {
|
|
76
|
+
// verify that what follows the dash looks like a random suffix (lowercase letters/numbers)
|
|
77
|
+
const suffix: string = dwName.substring(workspaceName.length + 1);
|
|
78
|
+
return suffix.length > 0 && /^[a-z0-9]+$/.test(suffix);
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
if (matchingWorkspaces.length === 1) {
|
|
84
|
+
Logger.debug(`Found workspace by prefix: ${matchingWorkspaces[0].metadata.name} (requested: ${workspaceName})`);
|
|
85
|
+
return matchingWorkspaces[0].metadata.name;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (matchingWorkspaces.length > 1) {
|
|
89
|
+
const names: string = matchingWorkspaces.map((ws): string => ws.metadata.name).join(', ');
|
|
90
|
+
throw new Error(
|
|
91
|
+
`Multiple workspaces found matching '${workspaceName}': ${names}. Please use exact DevWorkspace name or delete duplicates.`
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
throw new Error(`Workspace not found: ${workspaceName} (tried exact match and prefix search)`);
|
|
96
|
+
}
|
|
97
|
+
|
|
37
98
|
private async obtainUserNamespace(): Promise<string> {
|
|
38
99
|
Logger.debug(`${this.userNamespace}`);
|
|
39
100
|
if (this.userNamespace.length === 0) {
|