Skip to content

Commit

Permalink
Keep PVC name and namespace when os/flavor/workload is changed
Browse files Browse the repository at this point in the history
  • Loading branch information
rawagner committed Feb 2, 2021
1 parent 0891fdf commit 38da185
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 15 deletions.
@@ -1,10 +1,9 @@
import { $, $$, browser, ExpectedConditions as until } from 'protractor';
import { rowForName } from '@console/internal-integration-tests/views/crud.view';
import { waitForCount, click } from './utils';
import { click } from './utils';

const PAGE_LOAD_TIMEOUT_SECS = 15 * 1000;

const disabledDropdownButtons = $$('.pf-m-disabled');
const listViewKebabDropdown = '[data-test-id="kebab-button"]';
export const detailViewDropdown = '[data-test-id="actions-menu-button"]';
export const detailViewDropdownMenu = '[data-test-id="action-items"]';
Expand All @@ -27,11 +26,9 @@ export async function confirmAction() {
* Selects option button from given dropdown element.
*/
const selectDropdownItem = (getActionsDropdown) => async (action: string) => {
await browser
.wait(until.elementToBeClickable(getActionsDropdown()))
.then(() => getActionsDropdown().click());
await browser.wait(until.elementToBeClickable(getActionsDropdown()));
await getActionsDropdown().click();
await browser.wait(until.presenceOf($(detailViewDropdownMenu)));
await browser.wait(waitForCount(disabledDropdownButtons, 0));
await click($(`[data-test-action="${action}"]`));
};

Expand Down
6 changes: 5 additions & 1 deletion frontend/packages/console-shared/src/test-utils/utils.ts
Expand Up @@ -107,7 +107,11 @@ export async function withResources(
export async function click(elem: any, timeout?: number) {
const _timeout = resolveTimeout(timeout, config.jasmineNodeOpts.defaultTimeoutInterval);
await browser.wait(until.elementToBeClickable(elem), _timeout);
await browser.executeScript('arguments[0].scrollIntoView();', elem);
await browser
.actions()
.mouseMove(elem)
.perform();
await browser.executeScript('arguments[0].scrollIntoView()', elem);
await elem.click();
}

Expand Down
@@ -1,5 +1,5 @@
/* eslint-disable no-await-in-loop */
import { browser, ExpectedConditions as until } from 'protractor';
import { browser, ExpectedConditions as until, element, by } from 'protractor';
import { isLoaded } from '@console/internal-integration-tests/views/crud.view';
import { clickNavLink } from '@console/internal-integration-tests/views/sidenav.view';
import { click, fillInput, asyncForEach } from '@console/shared/src/test-utils/utils';
Expand Down Expand Up @@ -119,6 +119,13 @@ export class Wizard {
await fillInput(view.providerInput, provider);
}

async selectNamespace(namespace: string) {
await selectItemFromDropdown(
$('#project-dropdown'),
element(by.cssContainingText('.pf-c-dropdown__menu-item', namespace)),
);
}

async selectOperatingSystem(operatingSystem: string) {
await selectItemFromDropdown(view.operatingSystemSelect, dropDownItem(operatingSystem));
}
Expand Down Expand Up @@ -315,11 +322,14 @@ export class Wizard {
}

async processReviewAndCreate(data: VMBuilderData) {
const { name, startOnCreation } = data;
const { name, namespace, startOnCreation } = data;
if (namespace) {
await this.selectNamespace(namespace);
}

if (name) {
await this.fillName(name);
}

await this.startOnCreation(startOnCreation);
await this.confirmAndCreate();
}
Expand Down
Expand Up @@ -30,8 +30,7 @@ describe('Create VM from Template using wizard', () => {
const wizard = new Wizard();
const VMTemplateTestCaseIDs = {
'ID(CNV-871)': VMTemplatePresets[ProvisionSource.CONTAINER.getValue()],
// It's odd the rootdisk is empty even with a PVC selected.
// 'ID(CNV-4095)': VMTemplatePresets[ProvisionSource.DISK.getValue()],
'ID(CNV-4095)': VMTemplatePresets[ProvisionSource.DISK.getValue()],
'ID(CNV-1503)': VMTemplatePresets[ProvisionSource.URL.getValue()],
'ID(CNV-4094)': VMTemplatePresets[ProvisionSource.PXE.getValue()],
};
Expand Down Expand Up @@ -125,13 +124,13 @@ describe('Create VM from Template using wizard', () => {
deleteResource(vm.asResource());
});

// it's odd the create button not working in automation.
xit('ID(CNV-4202) Creates VM using VM Template actions dropdown ', async () => {
it('ID(CNV-4202) Creates VM using VM Template actions dropdown ', async () => {
vm = new VMBuilder()
.setName('vm-from-vmt-detail')
.setNamespace(testName)
.setFlavor(flavorConfigs.Tiny)
.setTemplate(vmTemplate.name)
.setProvisionSource(ProvisionSource.URL)
.build();

await vmTemplate.action(VMT_ACTION.Create);
Expand Down
Expand Up @@ -48,6 +48,7 @@ import {
} from '../../../../selectors/immutable/template/combined';
import { iGetPrameterValue } from '../../../../selectors/immutable/common';
import { getStorages } from '../../selectors/selectors';
import { iGetProvisionSourceStorage } from '../../selectors/immutable/storage';

const WINTOOLS_DISK_NAME = 'windows-guest-tools';

Expand Down Expand Up @@ -303,6 +304,24 @@ export const getNewProvisionSourceStorage = (state: any, id: string): VMWizardSt
);
}
if (provisionSource === ProvisionSource.DISK && !iUserTemplate) {
const iOldSourceStorage = iGetProvisionSourceStorage(state, id);
const oldSourceStorage: VMWizardStorage = iOldSourceStorage && iOldSourceStorage.toJSON();
const dataVolumeWrapper =
oldSourceStorage && oldSourceStorage?.dataVolume
? new DataVolumeWrapper(oldSourceStorage.dataVolume)
: undefined;
if (dataVolumeWrapper?.getType() === DataVolumeSourceType.PVC) {
const diskWrapper = new DiskWrapper(oldSourceStorage.disk);
const size = dataVolumeWrapper.getSize();
return getPVCStorage(
storageClassConfigMap,
diskWrapper.getType(),
diskWrapper.getDiskBus(),
`${size.value}${size.unit}`,
dataVolumeWrapper.getPersistentVolumeClaimName(),
dataVolumeWrapper.getPersistentVolumeClaimNamespace(),
);
}
return getPVCStorage(
storageClassConfigMap,
source?.cdRom ? DiskType.CDROM : DiskType.DISK,
Expand Down
Expand Up @@ -223,7 +223,11 @@ export const CreateVMForm: React.FC<CreateVMFormProps> = ({
title={useProjects ? t('kubevirt-plugin~Project') : t('kubevirt-plugin~Namespace')}
isRequired
>
<ProjectDropdown onChange={onNamespaceChange} project={namespace} />
<ProjectDropdown
onChange={onNamespaceChange}
project={namespace}
id="project-dropdown"
/>
</FormRow>
)}
<FormRow
Expand Down

0 comments on commit 38da185

Please sign in to comment.