Skip to content

Commit

Permalink
Address comments to PR 5336
Browse files Browse the repository at this point in the history
  • Loading branch information
Radim Hrazdil committed May 5, 2020
1 parent 6ae5639 commit 9830070
Show file tree
Hide file tree
Showing 13 changed files with 57 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export class KubevirtUIResource extends UIResource {
await isLoaded();
}
}
if (this.kind.plural === VirtualMachineTemplateModel.plural) {
if (this.model === VirtualMachineTemplateModel) {
await click(resourceHorizontalTab(VirtualMachineTemplateModel));
await isLoaded();
}
Expand Down Expand Up @@ -172,14 +172,9 @@ export class KubevirtUIResource extends UIResource {
}

async modalEditDedicatedResources() {
// console.log('Opening modal');
// await browser.sleep(2000);
await click(vmDetailDedicatedResourcesEditButton(this.namespace, this.name));
// console.log('Opened modall, waiting for checkbox');
// await browser.sleep(2000);
await browser.wait(until.presenceOf(editDedicatedResourcesView.guaranteedPolicyCheckbox));
await isLoaded();
// console.log('waiting done');
}

async modalEditStatus() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
import { K8sKind } from '@console/internal/module/k8s/types';
import { resourceTitle } from '@console/internal-integration-tests/views/crud.view';
import { click } from '@console/shared/src/test-utils/utils';

import { getResourceObject } from '../utils/utils';
import * as view from '../../views/uiResource.view';
import { apiVersionForModel } from '../utils/selectors';

export class UIResource {
readonly name: string;

readonly namespace: string;

readonly kind: K8sKind;
readonly model: K8sKind;

constructor(instance) {
this.name = instance.name;
this.namespace = instance.namespace;
this.kind = instance.kind;
this.model = instance.model;
}

getResource() {
return getResourceObject(this.name, this.namespace, this.kind.kind);
return getResourceObject(this.name, this.namespace, this.model.kind);
}

async getResourceTitle(): Promise<string> {
Expand All @@ -37,7 +37,8 @@ export class UIResource {

asResource() {
return {
kind: this.kind.plural,
kind: this.model.kind,
apiVersion: apiVersionForModel(this.model),
metadata: {
namespace: this.namespace,
name: this.name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,28 +18,28 @@ import { ImportWizard } from './importWizard';
import { VirtualMachineModel } from '../../../src/models/index';
import { BaseVirtualMachine } from './baseVirtualMachine';

// TODO: Remove VM_ACTION.Delete action from the list when BZ 1827640 if resolved
// TODO: Remove VM_ACTION.Delete action from the list when BZ 1827640 is resolved
const noConfirmDialogActions: VM_ACTION[] = [VM_ACTION.Start, VM_ACTION.Clone, VM_ACTION.Delete];

export class VirtualMachine extends BaseVirtualMachine {
constructor(config) {
super({ ...config, kind: VirtualMachineModel });
super({ ...config, model: VirtualMachineModel });
}

async action(action: VM_ACTION, waitForAction?: boolean, timeout?: number) {
async action(action: VM_ACTION, waitForAction = true, timeout?: number) {
await this.navigateToTab(TAB.Details);

await detailViewAction(action, !noConfirmDialogActions.includes(action));
if (waitForAction !== false) {
if (waitForAction) {
await this.waitForActionFinished(action, timeout);
}
}

async listViewAction(action: VM_ACTION, waitForAction?: boolean, timeout?: number) {
async listViewAction(action: VM_ACTION, waitForAction = true, timeout?: number) {
await this.navigateToListView();

await listViewAction(this.name)(action, !noConfirmDialogActions.includes(action));
if (waitForAction !== false) {
if (waitForAction) {
await this.waitForActionFinished(action, timeout);
}
}
Expand Down Expand Up @@ -69,7 +69,7 @@ export class VirtualMachine extends BaseVirtualMachine {
}: VMConfig) {
const wizard = new Wizard();
await this.navigateToListView();
await wizard.openWizard(this.kind);
await wizard.openWizard(this.model);
if (template !== undefined) {
await wizard.selectTemplate(template);
} else {
Expand Down Expand Up @@ -137,7 +137,7 @@ export class VirtualMachine extends BaseVirtualMachine {
await wizard.confirmAndCreate();
await wizard.waitForCreation();
await this.navigateToTab(TAB.Details);
if (startOnCreation === true) {
if (startOnCreation) {
// If startOnCreation is true, wait for VM to boot up
await this.waitForStatus(VM_STATUS.Running, VM_BOOTUP_TIMEOUT_SECS);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@ const noConfirmDialogActions: VMI_ACTION[] = [];

export class VirtualMachineInstance extends BaseVirtualMachine {
constructor(config) {
super({ ...config, kind: VirtualMachineInstanceModel.plural });
super({ ...config, model: VirtualMachineInstanceModel });
}

async action(action: VMI_ACTION, waitForAction?: boolean, timeout?: number) {
async action(action: VMI_ACTION, waitForAction = true, timeout?: number) {
await this.navigateToTab(TAB.Details);

await detailViewAction(action, !noConfirmDialogActions.includes(action));
if (waitForAction !== false) {
if (waitForAction) {
await this.waitForActionFinished(action, timeout);
}
}

async listViewAction(action: VMI_ACTION, waitForAction?: boolean, timeout?: number) {
async listViewAction(action: VMI_ACTION, waitForAction = true, timeout?: number) {
await this.navigateToListView();
await listViewAction(this.name)(action, !noConfirmDialogActions.includes(action));
if (waitForAction !== false) {
if (waitForAction) {
await this.waitForActionFinished(action, timeout);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { KubevirtUIResource } from './kubevirtUIResource';

export class VirtualMachineTemplate extends KubevirtUIResource {
constructor(templateConfig) {
super({ ...templateConfig, kind: VirtualMachineTemplateModel });
super({ ...templateConfig, model: VirtualMachineTemplateModel });
}

async create({
Expand All @@ -28,7 +28,7 @@ export class VirtualMachineTemplate extends KubevirtUIResource {

// Basic Settings for VM template
const wizard = new Wizard();
await wizard.openWizard(this.kind);
await wizard.openWizard(this.model);

await wizard.selectProvisionSource(provisionSource);
await wizard.selectOperatingSystem(operatingSystem);
Expand Down Expand Up @@ -86,14 +86,4 @@ export class VirtualMachineTemplate extends KubevirtUIResource {
await filterForName(name);
await resourceRowsPresent();
}

asResource() {
return {
kind: 'template',
metadata: {
namespace: this.namespace,
name: this.name,
},
};
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import { browser, ExpectedConditions as until } from 'protractor';
import {
createItemButton,
resourceTitle,
isLoaded,
} from '@console/internal-integration-tests/views/crud.view';
import { createItemButton, 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';
import { K8sKind } from '@console/internal/module/k8s';
Expand All @@ -15,19 +11,28 @@ import {
FlavorConfig,
VirtualMachineTemplateModel,
} from '../utils/types';
import { WIZARD_CREATE_VM_SUCCESS, PAGE_LOAD_TIMEOUT_SECS, KEBAP_ACTION } from '../utils/consts';
import {
WIZARD_CREATE_VM_SUCCESS,
PAGE_LOAD_TIMEOUT_SECS,
KEBAP_ACTION,
VIRTUALIZATION_TITLE,
} from '../utils/consts';
import * as wizardView from '../../views/wizard.view';
import { NetworkInterfaceDialog } from '../dialogs/networkInterfaceDialog';
import { DiskDialog } from '../dialogs/diskDialog';
import { Flavor } from '../utils/constants/wizard';
import { resourceHorizontalTab } from '../../views/uiResource.view';
import { virtualizationTitle } from '../../views/vms.list.view';

export class Wizard {
async openWizard(kind: K8sKind) {
if (!(await resourceTitle.isPresent()) || (await resourceTitle.getText()) !== kind) {
async openWizard(model: K8sKind) {
if (
!(await virtualizationTitle.isPresent()) ||
(await virtualizationTitle.getText()) !== VIRTUALIZATION_TITLE
) {
await clickNavLink(['Workloads', 'Virtualization']);
await isLoaded();
if (kind.plural === VirtualMachineTemplateModel.plural) {
if (model === VirtualMachineTemplateModel) {
await click(resourceHorizontalTab(VirtualMachineTemplateModel));
await isLoaded();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ export const JASMINE_EXTENDED_TIMEOUT_INTERVAL = 500 * SEC;
export const V2V_INSTANCE_CONNECTION_TIMEOUT = 30 * SEC;
export const V2V_VM_IMPORT_TIMEOUT = 3600 * SEC;

export const VIRTUALIZATION_TITLE = 'Virtualization';

// Wizard strings
export const IMPORT_WIZARD_CONN_TO_NEW_INSTANCE = 'Connect to New Instance';
export const NOT_RECOMMENDED_BUS_TYPE_WARN = 'Not recommended bus type';
Expand Down Expand Up @@ -114,7 +116,13 @@ export enum VM_STATUS {
}

export enum POD_STATUS {
Running = 'Running',
Terminating = 'Terminating',
Pending = 'Pending',
CrashLoopBackOff = 'CrashLoopBackOff',
Completed = 'Completed',
Failed = 'Failed',
Unknown = 'Unknown',
}

export enum DISK_SOURCE {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,6 @@ export function getVMManifest(
namespace,
name,
cloudinit,
['k8s.v1.cni.cncf.io/kubeMacPool'],
);

const vmResource = {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { isEmpty } from 'lodash';
import { K8sKind } from '@console/internal/module/k8s/types';

// Duplicate of apiVersionForModel from '@console/internal/module/k8s/k8s'
// which causes errors when imported in integration-tests
export const apiVersionForModel = (model: K8sKind) =>
isEmpty(model.apiGroup) ? model.apiVersion : `${model.apiGroup}/${model.apiVersion}`;
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ metadata:
kubevirt.io/storage-observed-api-version: v1alpha3
name.os.template.kubevirt.io/win10: Microsoft Windows 10
name: ${name}
finalizers:
- k8s.v1.cni.cncf.io/kubeMacPool
labels:
app: fake-windows
flavor.template.kubevirt.io/medium: 'true'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ export type Status = VM_STATUS | POD_STATUS;

// Not an actual type, since VM Templates are just templates
// Used as a convenience type for VirtualMachineTemplate class
// and distinguishing it from VirtualMachine/VirtualMachineTemplates
// and distinguishing it from VirtualMachine/VirtualMachineInstance
// and for UI navigation purposes
export const VirtualMachineTemplateModel: K8sKind = {
label: 'Virtual Machine Template',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ export const namespaceDropdownButton = $('[data-test-id="namespace-bar-dropdown"
export const namespaceButton = (namespace: string) => $(`#${namespace}-link`);

export const activeTab = $('li.co-m-horizontal-nav-item--active');
export const resourceHorizontalTab = (kind: K8sKind) =>
$(`[data-test-id="horizontal-link-${kind.labelPlural}"]`);
export const resourceHorizontalTab = (model: K8sKind) =>
$(`[data-test-id="horizontal-link-${model.labelPlural}"]`);

export const modalDialog = $('.pf-c-modal-box__footer');
export const cancelDialog = modalDialog.element(by.buttonText('Cancel'));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { last } from 'lodash';
import { $, browser, ExpectedConditions as until } from 'protractor';
import { click } from '@console/shared/src/test-utils/utils';
import { PAGE_LOAD_TIMEOUT_SECS } from '../tests/utils/consts';
import { Status } from '../tests/utils/types';
import { click } from '@console/shared/src/test-utils/utils';
import { last } from 'lodash';

export const virtualizationTitle = $('[data-test-id="cluster-settings-page-heading"]');
export const vmLinkByName = (vmName) => $(`[data-test-id="${vmName}"]`);
Expand All @@ -27,7 +27,7 @@ export const filterCount = async (status: Status): Promise<number> => {
}
await click(filterToggle);
const filterText = await filterItem(status);
const count = last(filterText.split(''));
const count = last(filterText.split('\n'));
await click(filterToggle);
return Number(count);
};

0 comments on commit 9830070

Please sign in to comment.