xusongfu 7fb3e6eb2c fix: fix the trove instance store
fix the trove instance store to get better extension

Change-Id: I20950d667bbdac621644e4f8def5384eff48e67c
2022-07-25 15:48:56 +08:00

175 lines
3.8 KiB
JavaScript

// Copyright 2021 99cloud
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import React from 'react';
import { inject, observer } from 'mobx-react';
import Base from 'containers/BaseDetail';
import { InstanceStatus, policyType } from 'resources/trove/database';
export class BaseDetail extends Base {
get leftCards() {
return [this.baseInfoCard, this.specsCard, this.connectionInfoCard];
}
get rightCards() {
return [this.faultCard];
}
get baseInfoCard() {
const options = [
{
label: t('Name'),
dataIndex: 'name',
},
{
label: t('Datastore'),
dataIndex: 'type',
},
{
label: t('Datastore Version'),
dataIndex: 'version',
},
{
label: t('Status'),
dataIndex: 'status',
render: (value) => InstanceStatus[value] || value,
},
{
label: t('Locality'),
dataIndex: 'locality',
render: (value) => policyType[value] || value,
},
];
return {
title: t('Base Info'),
options,
};
}
get specsCard() {
const options = [
{
label: t('Flavor'),
dataIndex: 'flavor',
render: (value) => {
return this.getLinkRender(
'flavorDetail',
value.name,
{
id: value.id,
},
null
);
},
},
{
label: t('Volume Size'),
dataIndex: 'size',
render: (value) => (value ? `${value}GiB` : '-'),
},
{
label: t('Created'),
dataIndex: 'created',
valueRender: 'toLocalTime',
},
{
label: t('Updated'),
dataIndex: 'updated',
valueRender: 'toLocalTime',
},
{
label: t('Service Status Updated'),
dataIndex: 'service_status_update',
},
];
return {
title: t('Specs'),
options,
};
}
get connectionInfoCard() {
const options = [
{
label: t('Host'),
dataIndex: 'ip',
render: (value) => {
return value && value.length ? (
<span>
{value.map((it) => (
<div key={it}>{it}</div>
))}
</span>
) : (
'-'
);
},
},
{
label: t('Database Port'),
dataIndex: 'type',
render: (value) => {
switch (value) {
case 'mysql':
return '3306';
case 'mongodb':
return '27017';
case 'postgresql':
return '5432';
default:
break;
}
},
},
{
label: t('Connection Examples'),
dataIndex: 'connection_examples',
},
];
return {
title: t('Connection Information'),
options,
};
}
get faultCard() {
const options = [
{
label: t('Created'),
dataIndex: 'created',
valueRender: 'toLocalTime',
},
{
label: t('Message'),
dataIndex: 'fault.message',
},
{
label: t('Message Details'),
dataIndex: 'fault.details',
},
];
return {
title: t('Fault'),
labelCol: 2,
options,
};
}
}
export default inject('rootStore')(observer(BaseDetail));