fix: Move the keypair to node spec when create cluster instance

In order to be consistent with the cluster template creating, move the keypair to node spec step when create cluster instance

Change-Id: Id9b70108f4ac2dac289bb50fa83eeab18f08199e
This commit is contained in:
xusongfu 2022-11-29 11:27:00 +08:00
parent ac1edd6e97
commit 0c3a946d21
4 changed files with 84 additions and 64 deletions

View File

@ -206,19 +206,19 @@ export class BaseDetail extends Base {
label: t('labels'), label: t('labels'),
dataIndex: 'labels', dataIndex: 'labels',
render: (value) => render: (value) =>
!isEmpty(value) !isEmpty(value) ? (
? Object.entries(value).map(([key, val]) => { <ul>
{Object.entries(value).map(([key, val]) => {
return ( return (
<div key={key}> <li key={key}>
<ul> {key} : {val}
<li> </li>
{key} : {val}
</li>
</ul>
</div>
); );
}) })}
: '-', </ul>
) : (
'-'
),
}, },
]; ];

View File

@ -93,12 +93,26 @@ export class StepNodeSpec extends Base {
return acceptedVolumeDriver; return acceptedVolumeDriver;
} }
getFlavorComponent() {
return <FlavorSelectTable onChange={this.onFlavorChange} />;
}
onFlavorChange = (value) => { onFlavorChange = (value) => {
this.updateContext({ this.updateContext({
flavor: value, flavor: value,
}); });
}; };
getMasterFlavorComponent() {
return <FlavorSelectTable onChange={this.onMasterFlavorChange} />;
}
onMasterFlavorChange = (value) => {
this.updateContext({
masterFlavor: value,
});
};
get defaultValue() { get defaultValue() {
let values = {}; let values = {};
@ -195,13 +209,13 @@ export class StepNodeSpec extends Base {
name: 'flavor', name: 'flavor',
label: t('Flavor of Nodes'), label: t('Flavor of Nodes'),
type: 'select-table', type: 'select-table',
component: <FlavorSelectTable onChange={this.onFlavorChange} />, component: this.getFlavorComponent(),
}, },
{ {
name: 'masterFlavor', name: 'masterFlavor',
label: t('Flavor of Master Nodes'), label: t('Flavor of Master Nodes'),
type: 'select-table', type: 'select-table',
component: <FlavorSelectTable onChange={this.onFlavorChange} />, component: this.getMasterFlavorComponent(),
}, },
{ {
name: 'volume_driver', name: 'volume_driver',

View File

@ -15,15 +15,11 @@
import Base from 'components/Form'; import Base from 'components/Form';
import { inject, observer } from 'mobx-react'; import { inject, observer } from 'mobx-react';
import globalClusterTemplateStore from 'stores/magnum/clusterTemplates'; import globalClusterTemplateStore from 'stores/magnum/clusterTemplates';
import globalKeypairStore from 'stores/nova/keypair';
import { getBaseTemplateColumns } from 'resources/magnum/template'; import { getBaseTemplateColumns } from 'resources/magnum/template';
import { getKeyPairHeader } from 'resources/nova/keypair';
export class StepInfo extends Base { export class StepInfo extends Base {
init() { init() {
this.keyPairStore = globalKeypairStore;
this.getClustertemplates(); this.getClustertemplates();
this.getKeypairs();
} }
get title() { get title() {
@ -37,7 +33,6 @@ export class StepInfo extends Base {
async getClustertemplates() { async getClustertemplates() {
await globalClusterTemplateStore.fetchList(); await globalClusterTemplateStore.fetchList();
this.updateDefaultValue(); this.updateDefaultValue();
this.updateState();
} }
get clusterTemplates() { get clusterTemplates() {
@ -49,18 +44,6 @@ export class StepInfo extends Base {
return templates; return templates;
} }
async getKeypairs() {
await this.keyPairStore.fetchList();
}
get keypairs() {
return this.keyPairStore.list.data || [];
}
get nameForStateUpdate() {
return ['clusterTemplate'];
}
get defaultValue() { get defaultValue() {
const values = {}; const values = {};
@ -76,9 +59,6 @@ export class StepInfo extends Base {
} }
get formItems() { get formItems() {
const { clusterTemplate, initKeyPair } = this.state;
const { keypair_id } = clusterTemplate || {};
return [ return [
{ {
name: 'name', name: 'name',
@ -102,35 +82,6 @@ export class StepInfo extends Base {
], ],
columns: getBaseTemplateColumns(this), columns: getBaseTemplateColumns(this),
}, },
{
name: 'keypair',
label: t('Keypair'),
type: 'select-table',
required: !keypair_id,
data: this.keypairs,
initValue: initKeyPair,
isLoading: this.keyPairStore.list.isLoading,
header: getKeyPairHeader(this),
tip: t(
'The SSH key is a way to remotely log in to the cluster instance. If its not set, the value of this in template will be used.'
),
filterParams: [
{
label: t('Name'),
name: 'name',
},
],
columns: [
{
title: t('Name'),
dataIndex: 'name',
},
{
title: t('Fingerprint'),
dataIndex: 'fingerprint',
},
],
},
]; ];
} }
} }

View File

@ -16,9 +16,16 @@ import React from 'react';
import { inject, observer } from 'mobx-react'; import { inject, observer } from 'mobx-react';
import Base from 'components/Form'; import Base from 'components/Form';
import FlavorSelectTable from 'src/pages/compute/containers/Instance/components/FlavorSelectTable'; import FlavorSelectTable from 'src/pages/compute/containers/Instance/components/FlavorSelectTable';
import globalKeypairStore from 'stores/nova/keypair';
import { defaultTip } from 'resources/magnum/cluster'; import { defaultTip } from 'resources/magnum/cluster';
import { getKeyPairHeader } from 'resources/nova/keypair';
export class StepNodeSpec extends Base { export class StepNodeSpec extends Base {
init() {
this.keyPairStore = globalKeypairStore;
this.getKeypairs();
}
get title() { get title() {
return t('Node Spec'); return t('Node Spec');
} }
@ -29,6 +36,14 @@ export class StepNodeSpec extends Base {
allowed = () => Promise.resolve(); allowed = () => Promise.resolve();
async getKeypairs() {
await this.keyPairStore.fetchList();
}
get keypairs() {
return this.keyPairStore.list.data || [];
}
getFlavorComponent() { getFlavorComponent() {
return <FlavorSelectTable onChange={this.onFlavorChange} />; return <FlavorSelectTable onChange={this.onFlavorChange} />;
} }
@ -39,6 +54,16 @@ export class StepNodeSpec extends Base {
}); });
}; };
getMasterFlavorComponent() {
return <FlavorSelectTable onChange={this.onMasterFlavorChange} />;
}
onMasterFlavorChange = (value) => {
this.updateContext({
masterFlavor: value,
});
};
get defaultValue() { get defaultValue() {
return { return {
master_count: 1, master_count: 1,
@ -49,9 +74,39 @@ export class StepNodeSpec extends Base {
get formItems() { get formItems() {
const { context: { clusterTemplate = {} } = {} } = this.props; const { context: { clusterTemplate = {} } = {} } = this.props;
const { selectedRows = [] } = clusterTemplate; const { selectedRows = [] } = clusterTemplate;
const { master_flavor_id, flavor_id } = selectedRows[0] || {}; const { master_flavor_id, flavor_id, keypair_id } = selectedRows[0] || {};
const { initKeyPair } = this.state;
return [ return [
{
name: 'keypair',
label: t('Keypair'),
type: 'select-table',
required: !keypair_id,
data: this.keypairs,
initValue: initKeyPair,
isLoading: this.keyPairStore.list.isLoading,
header: getKeyPairHeader(this),
tip: t(
'The SSH key is a way to remotely log in to the cluster instance. If its not set, the value of this in template will be used.'
),
filterParams: [
{
label: t('Name'),
name: 'name',
},
],
columns: [
{
title: t('Name'),
dataIndex: 'name',
},
{
title: t('Fingerprint'),
dataIndex: 'fingerprint',
},
],
},
{ {
name: 'master_count', name: 'master_count',
label: t('Number of Master Nodes'), label: t('Number of Master Nodes'),
@ -63,7 +118,7 @@ export class StepNodeSpec extends Base {
name: 'masterFlavor', name: 'masterFlavor',
label: t('Flavor of Master Nodes'), label: t('Flavor of Master Nodes'),
type: 'select-table', type: 'select-table',
component: this.getFlavorComponent(), component: this.getMasterFlavorComponent(),
required: !master_flavor_id, required: !master_flavor_id,
tip: defaultTip, tip: defaultTip,
}, },