From 0c3a946d2196929c582407bf5a489ef2b56fbb5d Mon Sep 17 00:00:00 2001 From: xusongfu Date: Tue, 29 Nov 2022 11:27:00 +0800 Subject: [PATCH] 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 --- .../ClusterTemplates/Detail/BaseDetail.jsx | 22 +++---- .../actions/StepCreate/StepNodeSpec/index.jsx | 18 +++++- .../actions/StepCreate/StepInfo/index.jsx | 49 --------------- .../actions/StepCreate/StepNodeSpec/index.jsx | 59 ++++++++++++++++++- 4 files changed, 84 insertions(+), 64 deletions(-) diff --git a/src/pages/container-infra/containers/ClusterTemplates/Detail/BaseDetail.jsx b/src/pages/container-infra/containers/ClusterTemplates/Detail/BaseDetail.jsx index 70bb093d..ee957cf8 100644 --- a/src/pages/container-infra/containers/ClusterTemplates/Detail/BaseDetail.jsx +++ b/src/pages/container-infra/containers/ClusterTemplates/Detail/BaseDetail.jsx @@ -206,19 +206,19 @@ export class BaseDetail extends Base { label: t('labels'), dataIndex: 'labels', render: (value) => - !isEmpty(value) - ? Object.entries(value).map(([key, val]) => { + !isEmpty(value) ? ( + + ) : ( + '-' + ), }, ]; diff --git a/src/pages/container-infra/containers/ClusterTemplates/actions/StepCreate/StepNodeSpec/index.jsx b/src/pages/container-infra/containers/ClusterTemplates/actions/StepCreate/StepNodeSpec/index.jsx index a683aa50..dc224154 100644 --- a/src/pages/container-infra/containers/ClusterTemplates/actions/StepCreate/StepNodeSpec/index.jsx +++ b/src/pages/container-infra/containers/ClusterTemplates/actions/StepCreate/StepNodeSpec/index.jsx @@ -93,12 +93,26 @@ export class StepNodeSpec extends Base { return acceptedVolumeDriver; } + getFlavorComponent() { + return ; + } + onFlavorChange = (value) => { this.updateContext({ flavor: value, }); }; + getMasterFlavorComponent() { + return ; + } + + onMasterFlavorChange = (value) => { + this.updateContext({ + masterFlavor: value, + }); + }; + get defaultValue() { let values = {}; @@ -195,13 +209,13 @@ export class StepNodeSpec extends Base { name: 'flavor', label: t('Flavor of Nodes'), type: 'select-table', - component: , + component: this.getFlavorComponent(), }, { name: 'masterFlavor', label: t('Flavor of Master Nodes'), type: 'select-table', - component: , + component: this.getMasterFlavorComponent(), }, { name: 'volume_driver', diff --git a/src/pages/container-infra/containers/Clusters/actions/StepCreate/StepInfo/index.jsx b/src/pages/container-infra/containers/Clusters/actions/StepCreate/StepInfo/index.jsx index 61a639f0..d517e832 100644 --- a/src/pages/container-infra/containers/Clusters/actions/StepCreate/StepInfo/index.jsx +++ b/src/pages/container-infra/containers/Clusters/actions/StepCreate/StepInfo/index.jsx @@ -15,15 +15,11 @@ import Base from 'components/Form'; import { inject, observer } from 'mobx-react'; import globalClusterTemplateStore from 'stores/magnum/clusterTemplates'; -import globalKeypairStore from 'stores/nova/keypair'; import { getBaseTemplateColumns } from 'resources/magnum/template'; -import { getKeyPairHeader } from 'resources/nova/keypair'; export class StepInfo extends Base { init() { - this.keyPairStore = globalKeypairStore; this.getClustertemplates(); - this.getKeypairs(); } get title() { @@ -37,7 +33,6 @@ export class StepInfo extends Base { async getClustertemplates() { await globalClusterTemplateStore.fetchList(); this.updateDefaultValue(); - this.updateState(); } get clusterTemplates() { @@ -49,18 +44,6 @@ export class StepInfo extends Base { return templates; } - async getKeypairs() { - await this.keyPairStore.fetchList(); - } - - get keypairs() { - return this.keyPairStore.list.data || []; - } - - get nameForStateUpdate() { - return ['clusterTemplate']; - } - get defaultValue() { const values = {}; @@ -76,9 +59,6 @@ export class StepInfo extends Base { } get formItems() { - const { clusterTemplate, initKeyPair } = this.state; - const { keypair_id } = clusterTemplate || {}; - return [ { name: 'name', @@ -102,35 +82,6 @@ export class StepInfo extends Base { ], 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 it’s 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', - }, - ], - }, ]; } } diff --git a/src/pages/container-infra/containers/Clusters/actions/StepCreate/StepNodeSpec/index.jsx b/src/pages/container-infra/containers/Clusters/actions/StepCreate/StepNodeSpec/index.jsx index bc9494f5..4c04a738 100644 --- a/src/pages/container-infra/containers/Clusters/actions/StepCreate/StepNodeSpec/index.jsx +++ b/src/pages/container-infra/containers/Clusters/actions/StepCreate/StepNodeSpec/index.jsx @@ -16,9 +16,16 @@ import React from 'react'; import { inject, observer } from 'mobx-react'; import Base from 'components/Form'; import FlavorSelectTable from 'src/pages/compute/containers/Instance/components/FlavorSelectTable'; +import globalKeypairStore from 'stores/nova/keypair'; import { defaultTip } from 'resources/magnum/cluster'; +import { getKeyPairHeader } from 'resources/nova/keypair'; export class StepNodeSpec extends Base { + init() { + this.keyPairStore = globalKeypairStore; + this.getKeypairs(); + } + get title() { return t('Node Spec'); } @@ -29,6 +36,14 @@ export class StepNodeSpec extends Base { allowed = () => Promise.resolve(); + async getKeypairs() { + await this.keyPairStore.fetchList(); + } + + get keypairs() { + return this.keyPairStore.list.data || []; + } + getFlavorComponent() { return ; } @@ -39,6 +54,16 @@ export class StepNodeSpec extends Base { }); }; + getMasterFlavorComponent() { + return ; + } + + onMasterFlavorChange = (value) => { + this.updateContext({ + masterFlavor: value, + }); + }; + get defaultValue() { return { master_count: 1, @@ -49,9 +74,39 @@ export class StepNodeSpec extends Base { get formItems() { const { context: { clusterTemplate = {} } = {} } = this.props; 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 [ + { + 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 it’s 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', label: t('Number of Master Nodes'), @@ -63,7 +118,7 @@ export class StepNodeSpec extends Base { name: 'masterFlavor', label: t('Flavor of Master Nodes'), type: 'select-table', - component: this.getFlavorComponent(), + component: this.getMasterFlavorComponent(), required: !master_flavor_id, tip: defaultTip, },