fix: fix the router path and logs in zun container

1. fix the router path from 'container' to 'container-service' to get the same format as magnum

2. Follow the api doc to hide the log tab in the container detail if the status is not acceptable

Closes-Bug: #1997326
Change-Id: I3c1e4299ec2e10bfcd02bcf6cd07f0ed42b3b783
This commit is contained in:
xusongfu 2022-11-22 15:39:32 +08:00
parent 47b3cead09
commit 801bf664c2
13 changed files with 207 additions and 177 deletions

View File

@ -878,39 +878,39 @@ const renderMenu = (t) => {
icon: <ContainerOutlined />, icon: <ContainerOutlined />,
children: [ children: [
{ {
path: '/container/containers-admin', path: '/container-service/containers-admin',
name: t('Containers'), name: t('Containers'),
key: 'zunContainersAdmin', key: 'zunContainersAdmin',
endpoints: 'zun', endpoints: 'zun',
level: 1, level: 1,
children: [ children: [
{ {
path: /^\/container\/containers-admin\/detail\/.[^/]+$/, path: /^\/container-service\/containers-admin\/detail\/.[^/]+$/,
name: t('Container Detail'), name: t('Container Detail'),
key: 'zunContainerDetailAdmin', key: 'zunContainerDetailAdmin',
level: 2, level: 2,
routePath: '/container/containers-admin/detail/:id', routePath: '/container-service/containers-admin/detail/:id',
}, },
], ],
}, },
{ {
path: '/container/hosts-admin', path: '/container-service/hosts-admin',
name: t('Hosts'), name: t('Hosts'),
key: 'zunHostsAdmin', key: 'zunHostsAdmin',
endpoints: 'zun', endpoints: 'zun',
level: 1, level: 1,
children: [ children: [
{ {
path: /^\/container\/hosts-admin\/detail\/.[^/]+$/, path: /^\/container-service\/hosts-admin\/detail\/.[^/]+$/,
name: t('Host Detail'), name: t('Host Detail'),
key: 'zuHostsDetailAdmin', key: 'zuHostsDetailAdmin',
level: 2, level: 2,
routePath: '/container/hosts-admin/detail/:id', routePath: '/container-service/hosts-admin/detail/:id',
}, },
], ],
}, },
{ {
path: '/container/services-admin', path: '/container-service/services-admin',
name: t('Services'), name: t('Services'),
key: 'zunServicesAdmin', key: 'zunServicesAdmin',
endpoints: 'zun', endpoints: 'zun',

View File

@ -637,40 +637,40 @@ const renderMenu = (t) => {
icon: <ContainerOutlined />, icon: <ContainerOutlined />,
children: [ children: [
{ {
path: '/container/containers', path: '/container-service/containers',
name: t('Containers'), name: t('Containers'),
key: 'zunContainers', key: 'zunContainers',
endpoints: 'zun', endpoints: 'zun',
level: 1, level: 1,
children: [ children: [
{ {
path: '/container/containers/create', path: '/container-service/containers/create',
name: t('Create Container'), name: t('Create Container'),
key: 'zunContainersCreateContainer', key: 'zunContainersCreateContainer',
level: 2, level: 2,
}, },
{ {
path: /^\/container\/containers\/detail\/.[^/]+$/, path: /^\/container-service\/containers\/detail\/.[^/]+$/,
name: t('Container Detail'), name: t('Container Detail'),
key: 'zunContainerDetail', key: 'zunContainerDetail',
level: 2, level: 2,
routePath: '/container/containers/detail/:id', routePath: '/container-service/containers/detail/:id',
}, },
], ],
}, },
{ {
path: '/container/capsules', path: '/container-service/capsules',
name: t('Capsules'), name: t('Capsules'),
key: 'zunCapsules', key: 'zunCapsules',
endpoints: 'zun', endpoints: 'zun',
level: 1, level: 1,
children: [ children: [
{ {
path: /^\/container\/capsules\/detail\/.[^/]+$/, path: /^\/container-service\/capsules\/detail\/.[^/]+$/,
name: t('Capsule Detail'), name: t('Capsule Detail'),
key: 'zunCapsuleDetail', key: 'zunCapsuleDetail',
level: 2, level: 2,
routePath: '/container/capsules/detail/:id', routePath: '/container-service/capsules/detail/:id',
}, },
], ],
}, },

View File

@ -53,7 +53,7 @@ const Share = lazy(() =>
const ContainerInfra = lazy(() => const ContainerInfra = lazy(() =>
import(/* webpackChunkName: "container-infra" */ 'pages/container-infra/App') import(/* webpackChunkName: "container-infra" */ 'pages/container-infra/App')
); );
const Containers = lazy(() => const ContainerService = lazy(() =>
import(/* webpackChunkName: "Container" */ 'pages/container-service/App') import(/* webpackChunkName: "Container" */ 'pages/container-service/App')
); );
const E404 = lazy(() => const E404 = lazy(() =>
@ -113,8 +113,8 @@ export default [
component: ContainerInfra, component: ContainerInfra,
}, },
{ {
path: `/container`, path: `/container-service`,
component: Containers, component: ContainerService,
}, },
{ path: '*', component: E404 }, { path: '*', component: E404 },
], ],

View File

@ -36,7 +36,8 @@ export class Capsules extends Base {
return actionConfigs; return actionConfigs;
} }
getColumns = () => [ getColumns() {
return [
{ {
title: t('ID/Name'), title: t('ID/Name'),
dataIndex: 'meta_name', dataIndex: 'meta_name',
@ -61,6 +62,7 @@ export class Capsules extends Base {
dataIndex: 'memory', dataIndex: 'memory',
}, },
]; ];
}
} }
export default inject('rootStore')(observer(Capsules)); export default inject('rootStore')(observer(Capsules));

View File

@ -59,7 +59,9 @@ export class ContainerDetail extends Base {
} }
get showLogs() { get showLogs() {
return checkPolicyRule('container:logs'); const { status } = this.detailData || {};
const acceptedStatus = ['Created', 'Running', 'Stopped', 'Paused'];
return checkPolicyRule('container:logs') && acceptedStatus.includes(status);
} }
get tabs() { get tabs() {

View File

@ -34,7 +34,7 @@ export class StepCreate extends StepAction {
static title = t('Create Container'); static title = t('Create Container');
static path = '/container/containers/create'; static path = '/container-service/containers/create';
static policy = 'container:create'; static policy = 'container:create';

View File

@ -39,11 +39,8 @@ export class Containers extends Base {
return actionConfigs.actionConfigs; return actionConfigs.actionConfigs;
} }
get rowKey() { getColumns() {
return 'uuid'; return [
}
getColumns = () => [
{ {
title: t('ID/Name'), title: t('ID/Name'),
dataIndex: 'name', dataIndex: 'name',
@ -69,6 +66,7 @@ export class Containers extends Base {
valueMap: containerTaskStatus, valueMap: containerTaskStatus,
}, },
]; ];
}
} }
export default inject('rootStore')(observer(Containers)); export default inject('rootStore')(observer(Containers));

View File

@ -32,7 +32,8 @@ export class Hosts extends Base {
return 'host:get_all'; return 'host:get_all';
} }
getColumns = () => [ getColumns() {
return [
{ {
title: t('ID/Name'), title: t('ID/Name'),
dataIndex: 'name', dataIndex: 'name',
@ -52,7 +53,10 @@ export class Hosts extends Base {
title: t('CPU (Core)'), title: t('CPU (Core)'),
dataIndex: 'cpu_percent', dataIndex: 'cpu_percent',
render: (value, record) => ( render: (value, record) => (
<Progress value={value} label={`${record.cpu_used} / ${record.cpus}`} /> <Progress
value={value}
label={`${record.cpu_used} / ${record.cpus}`}
/>
), ),
width: 180, width: 180,
stringify: (value, record) => stringify: (value, record) =>
@ -91,6 +95,7 @@ export class Hosts extends Base {
})`, })`,
}, },
]; ];
}
} }
export default inject('rootStore')(observer(Hosts)); export default inject('rootStore')(observer(Hosts));

View File

@ -32,7 +32,8 @@ export class Services extends Base {
return 'zun-service:get_all'; return 'zun-service:get_all';
} }
getColumns = () => [ getColumns() {
return [
{ {
title: t('Name'), title: t('Name'),
dataIndex: 'binary', dataIndex: 'binary',
@ -76,6 +77,7 @@ export class Services extends Base {
valueRender: 'sinceTime', valueRender: 'sinceTime',
}, },
]; ];
}
} }
export default inject('rootStore')(observer(Services)); export default inject('rootStore')(observer(Services));

View File

@ -23,7 +23,7 @@ import HostsDetail from '../containers/Hosts/Detail';
import StepCreateContainer from '../containers/Containers/actions/StepCreate'; import StepCreateContainer from '../containers/Containers/actions/StepCreate';
import Services from '../containers/Services'; import Services from '../containers/Services';
const PATH = '/container'; const PATH = '/container-service';
export default [ export default [
{ {
path: PATH, path: PATH,

View File

@ -21,6 +21,13 @@ export class CapsulesStore extends Base {
return client.zun.capsules; return client.zun.capsules;
} }
get mapper() {
return (data) => ({
...data,
id: data.uuid,
});
}
@action @action
async create(newbody) { async create(newbody) {
return this.client.create(newbody); return this.client.create(newbody);

View File

@ -22,6 +22,13 @@ export class ContainersStore extends Base {
return client.zun.containers; return client.zun.containers;
} }
get mapper() {
return (data) => ({
...data,
id: data.uuid,
});
}
@action @action
async create(newbody) { async create(newbody) {
return this.submitting(this.client.create(newbody)); return this.submitting(this.client.create(newbody));

View File

@ -19,6 +19,13 @@ export class ServicesStore extends Base {
get client() { get client() {
return client.zun.services; return client.zun.services;
} }
get mapper() {
return (data) => ({
...data,
id: data.uuid,
});
}
} }
const globalServicesStore = new ServicesStore(); const globalServicesStore = new ServicesStore();