From 7fb3e6eb2c989a41fcb1140074ed6d017525b9fc Mon Sep 17 00:00:00 2001 From: xusongfu Date: Mon, 25 Jul 2022 11:10:28 +0800 Subject: [PATCH] fix: fix the trove instance store fix the trove instance store to get better extension Change-Id: I20950d667bbdac621644e4f8def5384eff48e67c --- .../Instances/Detail/BaseDetail.jsx | 15 +++++----- .../database/containers/Instances/index.jsx | 11 +++---- src/stores/trove/instances.js | 29 +++++++++++++++++++ 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/pages/database/containers/Instances/Detail/BaseDetail.jsx b/src/pages/database/containers/Instances/Detail/BaseDetail.jsx index ee4cde4d..c010501c 100644 --- a/src/pages/database/containers/Instances/Detail/BaseDetail.jsx +++ b/src/pages/database/containers/Instances/Detail/BaseDetail.jsx @@ -34,11 +34,11 @@ export class BaseDetail extends Base { }, { label: t('Datastore'), - dataIndex: 'datastore.type', + dataIndex: 'type', }, { label: t('Datastore Version'), - dataIndex: 'datastore.version', + dataIndex: 'version', }, { label: t('Status'), @@ -62,13 +62,13 @@ export class BaseDetail extends Base { const options = [ { label: t('Flavor'), - dataIndex: 'flavor.id', + dataIndex: 'flavor', render: (value) => { return this.getLinkRender( 'flavorDetail', - value, + value.name, { - id: value, + id: value.id, }, null ); @@ -76,7 +76,8 @@ export class BaseDetail extends Base { }, { label: t('Volume Size'), - dataIndex: 'volume.size', + dataIndex: 'size', + render: (value) => (value ? `${value}GiB` : '-'), }, { label: t('Created'), @@ -119,7 +120,7 @@ export class BaseDetail extends Base { }, { label: t('Database Port'), - dataIndex: 'datastore.type', + dataIndex: 'type', render: (value) => { switch (value) { case 'mysql': diff --git a/src/pages/database/containers/Instances/index.jsx b/src/pages/database/containers/Instances/index.jsx index 98249dbe..629550be 100644 --- a/src/pages/database/containers/Instances/index.jsx +++ b/src/pages/database/containers/Instances/index.jsx @@ -17,7 +17,6 @@ import { observer, inject } from 'mobx-react'; import Base from 'containers/List'; import globalInstancesStore from 'stores/trove/instances'; import { InstanceStatus } from 'resources/trove/database'; -import { get as _get } from 'lodash'; import actions from './actions'; export class Instances extends Base { @@ -58,13 +57,11 @@ export class Instances extends Base { }, { title: t('Datastore'), - dataIndex: 'datastore', - render: (value) => _get(value, 'type', '-'), + dataIndex: 'type', }, { title: t('Datastore Version'), - dataIndex: 'datastore', - render: (value) => _get(value, 'version', '-'), + dataIndex: 'version', isHideable: true, }, { @@ -85,9 +82,9 @@ export class Instances extends Base { }, { title: t('Volume Size'), - dataIndex: 'volume', + dataIndex: 'size', isHideable: true, - render: (value) => (value ? `${value.size}GiB` : '-'), + render: (value) => (value ? `${value}GiB` : '-'), }, { title: t('Status'), diff --git a/src/stores/trove/instances.js b/src/stores/trove/instances.js index dfd680e6..44f9bf95 100644 --- a/src/stores/trove/instances.js +++ b/src/stores/trove/instances.js @@ -15,6 +15,8 @@ import Base from 'stores/base'; import client from 'client'; import { action, observable } from 'mobx'; +import globalFlavorStore from 'stores/nova/flavor'; +import { get as _get } from 'lodash'; export class InstancesStore extends Base { @observable @@ -36,6 +38,33 @@ export class InstancesStore extends Base { return client.trove.instancesAdmin; } + get mapper() { + return (data) => ({ + ...data, + type: _get(data, 'datastore.type'), + version: _get(data, 'datastore.version'), + size: _get(data, 'volume.size'), + }); + } + + async detailDidFetch(item) { + const flavor = await globalFlavorStore.fetchDetail({ + id: _get(item, 'flavor.id'), + }); + return { + ...item, + flavor: { ...item.flavor, ...flavor }, + }; + } + + listDidFetch(items) { + if (items.length === 0) return items; + return items.map((it) => ({ + ...it, + project_id: it.tenant_id, + })); + } + @action async create(newbody) { return this.submitting(this.client.create(newbody));