feat: support zun services
Enables administrative users to view details for all Zun services. Change-Id: I9bcd7178b80882588bc1d777b68e82b81bd02062
This commit is contained in:
parent
24b7c3a52b
commit
cf9349537b
@ -88,6 +88,10 @@ export class ZunClient extends Base {
|
|||||||
{
|
{
|
||||||
key: 'quotas',
|
key: 'quotas',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
key: 'services',
|
||||||
|
responseKey: 'service',
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -870,6 +870,13 @@ const renderMenu = (t) => {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/container/services-admin',
|
||||||
|
name: t('Services'),
|
||||||
|
key: 'zunServicesAdmin',
|
||||||
|
endpoints: 'zun',
|
||||||
|
level: 1,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -970,6 +970,7 @@
|
|||||||
"Force Delete Container": "Force Delete Container",
|
"Force Delete Container": "Force Delete Container",
|
||||||
"Force Delete Share Instance": "Force Delete Share Instance",
|
"Force Delete Share Instance": "Force Delete Share Instance",
|
||||||
"Force release": "Force release",
|
"Force release": "Force release",
|
||||||
|
"Forced Down": "Forced Down",
|
||||||
"Forced Shutdown": "Forced Shutdown",
|
"Forced Shutdown": "Forced Shutdown",
|
||||||
"Forced shutdown may result in data loss or file system damage. You can also take the initiative to shut down and perform operations.": "Forced shutdown may result in data loss or file system damage. You can also take the initiative to shut down and perform operations.",
|
"Forced shutdown may result in data loss or file system damage. You can also take the initiative to shut down and perform operations.": "Forced shutdown may result in data loss or file system damage. You can also take the initiative to shut down and perform operations.",
|
||||||
"Forgot your password?": "Forgot your password?",
|
"Forgot your password?": "Forgot your password?",
|
||||||
@ -1912,6 +1913,7 @@
|
|||||||
"Rename": "Rename",
|
"Rename": "Rename",
|
||||||
"Rename is to copy the current file to the new file address and delete the current file, which will affect the creation time of the file.": "Rename is to copy the current file to the new file address and delete the current file, which will affect the creation time of the file.",
|
"Rename is to copy the current file to the new file address and delete the current file, which will affect the creation time of the file.": "Rename is to copy the current file to the new file address and delete the current file, which will affect the creation time of the file.",
|
||||||
"Replication Change": "Replication Change",
|
"Replication Change": "Replication Change",
|
||||||
|
"Report Count": "Report Count",
|
||||||
"Republic of the Congo": "Republic of the Congo",
|
"Republic of the Congo": "Republic of the Congo",
|
||||||
"Request ID": "Request ID",
|
"Request ID": "Request ID",
|
||||||
"Require": "Require",
|
"Require": "Require",
|
||||||
|
@ -970,6 +970,7 @@
|
|||||||
"Force Delete Container": "强制删除容器",
|
"Force Delete Container": "强制删除容器",
|
||||||
"Force Delete Share Instance": "强制删除共享实例",
|
"Force Delete Share Instance": "强制删除共享实例",
|
||||||
"Force release": "强制释放",
|
"Force release": "强制释放",
|
||||||
|
"Forced Down": "强制关闭",
|
||||||
"Forced Shutdown": "强制关机",
|
"Forced Shutdown": "强制关机",
|
||||||
"Forced shutdown may result in data loss or file system damage. You can also take the initiative to shut down and perform operations.": "强制关机可能会导致数据丢失或文件系统损坏,您也可以主动关机后再进行操作。",
|
"Forced shutdown may result in data loss or file system damage. You can also take the initiative to shut down and perform operations.": "强制关机可能会导致数据丢失或文件系统损坏,您也可以主动关机后再进行操作。",
|
||||||
"Forgot your password?": "忘记密码?",
|
"Forgot your password?": "忘记密码?",
|
||||||
@ -1912,6 +1913,7 @@
|
|||||||
"Rename": "重命名",
|
"Rename": "重命名",
|
||||||
"Rename is to copy the current file to the new file address and delete the current file, which will affect the creation time of the file.": "重命名是把当前文件复制到新文件地址,并删除当前文件,会影响文件的创建时间。",
|
"Rename is to copy the current file to the new file address and delete the current file, which will affect the creation time of the file.": "重命名是把当前文件复制到新文件地址,并删除当前文件,会影响文件的创建时间。",
|
||||||
"Replication Change": "复制更改中",
|
"Replication Change": "复制更改中",
|
||||||
|
"Report Count": "报告数量",
|
||||||
"Republic of the Congo": "刚果共和国",
|
"Republic of the Congo": "刚果共和国",
|
||||||
"Request ID": "请求ID",
|
"Request ID": "请求ID",
|
||||||
"Require": "强制",
|
"Require": "强制",
|
||||||
|
81
src/pages/container-service/containers/Services/index.jsx
Normal file
81
src/pages/container-service/containers/Services/index.jsx
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
// 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 Base from 'containers/List';
|
||||||
|
import { inject, observer } from 'mobx-react';
|
||||||
|
import globalServicesStore from 'src/stores/zun/services';
|
||||||
|
import { serviceState } from 'resources/nova/service';
|
||||||
|
|
||||||
|
export class Services extends Base {
|
||||||
|
init() {
|
||||||
|
this.store = globalServicesStore;
|
||||||
|
this.downloadStore = globalServicesStore;
|
||||||
|
}
|
||||||
|
|
||||||
|
get name() {
|
||||||
|
return t('services');
|
||||||
|
}
|
||||||
|
|
||||||
|
get policy() {
|
||||||
|
return 'zun-service:get_all';
|
||||||
|
}
|
||||||
|
|
||||||
|
getColumns = () => [
|
||||||
|
{
|
||||||
|
title: t('Name'),
|
||||||
|
dataIndex: 'binary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('Hosts'),
|
||||||
|
dataIndex: 'host',
|
||||||
|
isHideable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('Availability Zone'),
|
||||||
|
dataIndex: 'availability_zone',
|
||||||
|
isHideable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('Report Count'),
|
||||||
|
dataIndex: 'report_count',
|
||||||
|
isHideable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('Forced Down'),
|
||||||
|
dataIndex: 'forced_down',
|
||||||
|
valueRender: 'yesNo',
|
||||||
|
isHideable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('Forbidden'),
|
||||||
|
dataIndex: 'disabled',
|
||||||
|
valueRender: 'yesNo',
|
||||||
|
isHideable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('Service State'),
|
||||||
|
dataIndex: 'state',
|
||||||
|
render: (value) => serviceState[value] || value,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('Last Updated'),
|
||||||
|
dataIndex: 'updated_at',
|
||||||
|
isHideable: true,
|
||||||
|
valueRender: 'sinceTime',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
export default inject('rootStore')(observer(Services));
|
@ -21,6 +21,7 @@ import ContainersDetail from '../containers/Containers/Detail';
|
|||||||
import CapsulesDetail from '../containers/Capsules/Detail';
|
import CapsulesDetail from '../containers/Capsules/Detail';
|
||||||
import HostsDetail from '../containers/Hosts/Detail';
|
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';
|
||||||
|
|
||||||
const PATH = '/container';
|
const PATH = '/container';
|
||||||
export default [
|
export default [
|
||||||
@ -66,6 +67,11 @@ export default [
|
|||||||
component: HostsDetail,
|
component: HostsDetail,
|
||||||
exact: true,
|
exact: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: `${PATH}/services-admin`,
|
||||||
|
component: Services,
|
||||||
|
exact: true,
|
||||||
|
},
|
||||||
// All
|
// All
|
||||||
{ path: '*', component: E404 },
|
{ path: '*', component: E404 },
|
||||||
],
|
],
|
||||||
|
25
src/stores/zun/services.js
Normal file
25
src/stores/zun/services.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// 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 Base from 'stores/base';
|
||||||
|
import client from 'client';
|
||||||
|
|
||||||
|
export class ServicesStore extends Base {
|
||||||
|
get client() {
|
||||||
|
return client.zun.services;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const globalServicesStore = new ServicesStore();
|
||||||
|
export default globalServicesStore;
|
Loading…
Reference in New Issue
Block a user