Support pages and actions for the fwaas v2 service. Change-Id: Ieecd972ac2c5e9934bba9160681c4e390dc126dc
843 lines
24 KiB
JavaScript
843 lines
24 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 {
|
|
DesktopOutlined,
|
|
DatabaseOutlined,
|
|
GlobalOutlined,
|
|
// ToolOutlined,
|
|
HomeOutlined,
|
|
DatabaseFilled,
|
|
AppstoreOutlined,
|
|
SwitcherOutlined,
|
|
ContainerOutlined,
|
|
} from '@ant-design/icons';
|
|
|
|
const renderMenu = (t) => {
|
|
if (!t) {
|
|
return [];
|
|
}
|
|
const menu = [
|
|
{
|
|
path: '/base/overview',
|
|
name: t('Home'),
|
|
key: 'overview',
|
|
icon: <HomeOutlined />,
|
|
level: 0,
|
|
hasBreadcrumb: false,
|
|
hasChildren: false,
|
|
},
|
|
{
|
|
path: '/compute',
|
|
name: t('Compute'),
|
|
key: 'compute',
|
|
icon: <DesktopOutlined />,
|
|
children: [
|
|
{
|
|
path: '/compute/instance',
|
|
name: t('Instances'),
|
|
key: 'instance',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/compute\/instance\/detail\/.[^/]+$/,
|
|
name: t('Instance Detail'),
|
|
key: 'instanceDetail',
|
|
level: 2,
|
|
routePath: '/compute/instance/detail/:id',
|
|
},
|
|
{
|
|
path: '/compute/instance/create',
|
|
name: t('Create Instance'),
|
|
key: 'instanceCreate',
|
|
level: 2,
|
|
},
|
|
{
|
|
path: '/compute/ironic-instance/create',
|
|
name: t('Create Ironic Instance'),
|
|
key: 'ironicCreate',
|
|
level: 2,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/compute/instance-snapshot',
|
|
name: t('Instance Snapshots'),
|
|
key: 'instanceSnapshot',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/compute\/instance-snapshot\/detail\/[^/]+$/,
|
|
name: t('Instance Snapshot Detail'),
|
|
key: 'instanceSnapshotDetail',
|
|
level: 2,
|
|
routePath: '/compute/instance-snapshot/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/compute/flavor',
|
|
name: t('Flavors'),
|
|
key: 'flavor',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/compute\/flavor\/detail\/.[^/]+$/,
|
|
name: t('Flavor Detail'),
|
|
key: 'flavorDetail',
|
|
level: 2,
|
|
routePath: '/compute/flavor/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/compute/server-group',
|
|
name: t('Server Groups'),
|
|
key: 'serverGroup',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/compute\/server-group\/detail\/.[^/]+$/,
|
|
name: t('Server Group Detail'),
|
|
key: 'serverGroupDetail',
|
|
level: 2,
|
|
routePath: '/compute/server-group/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/compute/image',
|
|
name: t('Images'),
|
|
key: 'image',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/compute\/image\/detail\/.[^/]+$/,
|
|
name: t('Image Detail'),
|
|
key: 'imageDetail',
|
|
level: 2,
|
|
routePath: '/compute/image/detail/:id',
|
|
},
|
|
{
|
|
path: '/compute/image/create',
|
|
name: t('Create Image'),
|
|
key: 'imageCreate',
|
|
level: 2,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/compute/keypair',
|
|
name: t('Key Pairs'),
|
|
key: 'keypair',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/compute\/keypair\/detail\/.[^/]*$/,
|
|
name: t('Keypair Detail'),
|
|
key: 'keypairDetail',
|
|
level: 2,
|
|
routePath: '/compute/keypair/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/storage',
|
|
name: t('Storage'),
|
|
key: 'storage',
|
|
icon: <DatabaseOutlined />,
|
|
children: [
|
|
{
|
|
path: '/storage/volume',
|
|
name: t('Volumes'),
|
|
key: 'volume',
|
|
level: 1,
|
|
endpoints: 'cinder',
|
|
children: [
|
|
{
|
|
path: '/storage/volume/create',
|
|
name: t('Create Volume'),
|
|
key: 'volumeCreate',
|
|
level: 2,
|
|
},
|
|
{
|
|
path: /^\/storage\/volume\/detail\/.[^/]+$/,
|
|
name: t('Volume Detail'),
|
|
key: 'volumeDetail',
|
|
level: 2,
|
|
routePath: '/storage/volume/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/storage/backup',
|
|
name: t('Volume Backups'),
|
|
key: 'backup',
|
|
level: 1,
|
|
endpoints: 'cinder',
|
|
children: [
|
|
{
|
|
path: /^\/storage\/backup\/detail\/.[^/]+$/,
|
|
name: t('Volume Backup Detail'),
|
|
key: 'backupDetail',
|
|
level: 2,
|
|
routePath: '/storage/backup/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/storage/snapshot',
|
|
name: t('Volume Snapshots'),
|
|
key: 'snapshot',
|
|
level: 1,
|
|
endpoints: 'cinder',
|
|
children: [
|
|
{
|
|
path: /^\/storage\/snapshot\/detail\/.[^/]+$/,
|
|
name: t('Volume Snapshot Detail'),
|
|
key: 'snapshotDetail',
|
|
level: 2,
|
|
routePath: '/storage/snapshot/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/storage/container',
|
|
name: t('Object Storage'),
|
|
key: 'containers',
|
|
endpoints: 'swift',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/storage\/container\/detail\/[^/]+$/,
|
|
name: t('Container Detail'),
|
|
key: 'containerDetail',
|
|
level: 2,
|
|
routePath: '/storage/container/detail/:id',
|
|
},
|
|
{
|
|
path: /^\/storage\/container\/detail\/[^/]+\/.+$/,
|
|
name: t('Folder Detail'),
|
|
key: 'folderDetail',
|
|
level: 2,
|
|
routePath: '/storage/container/detail/:container/:folder',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network',
|
|
name: t('Network'),
|
|
key: '/network',
|
|
icon: <GlobalOutlined />,
|
|
children: [
|
|
{
|
|
path: '/network/networks',
|
|
name: t('Networks'),
|
|
key: 'network',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/network\/networks\/detail\/.[^/]+$/,
|
|
name: t('Network Detail'),
|
|
key: 'networkDetail',
|
|
level: 2,
|
|
routePath: '/network/networks/detail/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/networks\/detail\/.[^/]+\/subnet\/.[^/]+$/,
|
|
name: t('Subnet Detail'),
|
|
key: 'subnetDetail',
|
|
level: 2,
|
|
routePath: '/network/networks/detail/:networkId/subnet/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/port',
|
|
name: t('Ports'),
|
|
key: 'port',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/network\/port\/detail\/.[^/]+$/,
|
|
name: t('Port Detail'),
|
|
key: 'portDetail',
|
|
level: 2,
|
|
routePath: '/network/port/detail/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/networks\/detail\/.[^/]+\/port\/.[^/]+$/,
|
|
name: t('Port Detail'),
|
|
key: 'networkPortDetail',
|
|
level: 2,
|
|
routePath: '/network/networks/detail/:networkId/port/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/networks\/detail\/.[^/]+\/subnet\/.[^/]+\/port\/.[^/]+$/,
|
|
name: t('Port Detail'),
|
|
key: 'subnetPortDetail',
|
|
level: 2,
|
|
routePath:
|
|
'/network/networks/detail/:networkId/subnet/:subnetId/port/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/instance\/detail\/.[^/]+\/port\/.[^/]+$/,
|
|
name: t('Port Detail'),
|
|
key: 'instancePortDetail',
|
|
level: 2,
|
|
routePath: '/network/instance/detail/:instanceId/port/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/qos-policy',
|
|
name: t('QoS Policies'),
|
|
key: 'networkQos',
|
|
endpoints: 'neutron_qos',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/network\/qos-policy\/detail\/.[^/]+$/,
|
|
name: t('QoS Policy Detail'),
|
|
key: 'networkQosDetail',
|
|
level: 2,
|
|
routePath: '/network/qos-policy/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/router',
|
|
name: t('Routers'),
|
|
key: 'router',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/network\/router\/detail\/.[^/]+$/,
|
|
name: t('Router Detail'),
|
|
key: 'routerDetail',
|
|
level: 2,
|
|
routePath: '/network/router/detail/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/router\/.[^/]+\/port\/.[^/]+$/,
|
|
name: t('Port Detail'),
|
|
key: 'routerPortDetail',
|
|
level: 2,
|
|
routePath: '/network/router/:routerId/port/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/floatingip',
|
|
name: t('Floating IPs'),
|
|
key: 'fip',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/network\/floatingip\/detail\/.[^/]+$/,
|
|
name: t('Floating Ip Detail'),
|
|
key: 'fipDetail',
|
|
level: 2,
|
|
routePath: '/network/floatingip/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/topo',
|
|
name: t('Topology'),
|
|
key: 'networkTopo',
|
|
level: 1,
|
|
children: [],
|
|
},
|
|
{
|
|
path: '/network/load-balancers',
|
|
name: t('Load Balancers'),
|
|
key: 'lb',
|
|
endpoints: 'octavia',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: '/network/load-balancers/create',
|
|
name: t('Create Loadbalancer'),
|
|
key: 'lbCreate',
|
|
level: 2,
|
|
},
|
|
{
|
|
path: /^\/network\/load-balancers\/detail\/.[^/]+$/,
|
|
name: t('Load Balancer Detail'),
|
|
key: 'lbDetail',
|
|
level: 2,
|
|
routePath: '/network/load-balancers/detail/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/load-balancers\/.[^/]+\/listener\/.[^/]+$/,
|
|
name: t('Listener Detail'),
|
|
key: 'lbListenerDetail',
|
|
level: 2,
|
|
routePath: '/network/load-balancers/:loadBalancerId/listener/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/certificate',
|
|
name: t('Certificates'),
|
|
key: 'certificate',
|
|
endpoints: 'barbican',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/network\/certificate-container\/detail\/.[^/]+$/,
|
|
name: t('Certificate Detail'),
|
|
key: 'certificateContainerDetail',
|
|
level: 2,
|
|
routePath: '/network/certificate-container/detail/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/certificate-secret\/detail\/.[^/]+$/,
|
|
name: t('Certificate Detail'),
|
|
key: 'certificateSecretDetail',
|
|
level: 2,
|
|
routePath: '/network/certificate-secret/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/vpn',
|
|
name: t('VPNs'),
|
|
key: 'vpn',
|
|
endpoints: 'neutron_vpn',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/network\/ipsec-site-connection\/detail\/.[^/]+$/,
|
|
name: t('IPsec site connection Detail'),
|
|
key: 'ipsecDetail',
|
|
level: 2,
|
|
routePath: '/network/ipsec-site-connection/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/security-group',
|
|
name: t('Security Groups'),
|
|
key: 'securityGroup',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/network\/security-group\/detail\/.[^/]+$/,
|
|
name: t('Security Group Detail'),
|
|
key: 'securityGroupDetail',
|
|
level: 2,
|
|
routePath: '/network/security-group/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/firewall',
|
|
name: t('Firewalls'),
|
|
key: 'firewall',
|
|
level: 1,
|
|
endpoints: 'neutron_firewall',
|
|
children: [
|
|
{
|
|
path: /^\/network\/firewall-policy\/detail\/[^/]+$/,
|
|
name: t('Policy Detail'),
|
|
key: 'firewallPolicyDetail',
|
|
level: 2,
|
|
routePath: '/network/firewall-policy/detail/:id',
|
|
},
|
|
{
|
|
path: '/network/firewall-rule/create',
|
|
name: t('Create Rule'),
|
|
key: 'firewallRuleCreate',
|
|
level: 2,
|
|
},
|
|
{
|
|
path: '/network/firewall-policy/add',
|
|
name: t('Add Policy'),
|
|
key: 'firewallPolicyCreate',
|
|
level: 2,
|
|
},
|
|
{
|
|
path: '/network/firewall/create',
|
|
name: t('Create Firewall'),
|
|
key: 'firewallCreate',
|
|
level: 2,
|
|
},
|
|
{
|
|
path: /^\/network\/firewall\/[^/]+\/port\/[^/]+$/,
|
|
name: t('Firewall Port'),
|
|
key: 'firewallPortDetail',
|
|
level: 2,
|
|
routePath: '/network/firewall/:firewallId/port/:portId',
|
|
},
|
|
{
|
|
path: /^\/network\/firewall-rule\/edit\/[^/]+$/,
|
|
name: t('Rule Edit'),
|
|
key: 'firewallRuleEdit',
|
|
level: 2,
|
|
routePath: '/network/firewall-rule/edit/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/firewall\/detail\/[^/]+$/,
|
|
name: t('Firewall Detail'),
|
|
key: 'firewallDetail',
|
|
level: 2,
|
|
routePath: '/network/firewall/detail/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/firewall-rule\/detail\/[^/]+$/,
|
|
name: t('Rule Detail'),
|
|
key: 'firewallRuleDetail',
|
|
level: 2,
|
|
routePath: '/network/firewall-rule/detail/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/firewall-policy\/edit\/[^/]+$/,
|
|
name: t('Policy Edit'),
|
|
key: 'firewallPolicyEdit',
|
|
level: 2,
|
|
routePath: '/network/firewall-policy/edit/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/dns/zones',
|
|
name: t('DNS Zones'),
|
|
key: 'dnsZones',
|
|
endpoints: 'designate',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/network\/dns\/zones\/detail\/.[^/]+$/,
|
|
name: t('Zones Detail'),
|
|
key: 'dnsZonesDetail',
|
|
level: 2,
|
|
routePath: '/network/dns/zones/detail/:id',
|
|
},
|
|
{
|
|
path: /^\/network\/dns\/zones\/detail\/.[^/]+\/recordsets\/.[^/]+$/,
|
|
name: t('Recordsets Detail'),
|
|
key: 'dnsRecordSetDetail',
|
|
level: 2,
|
|
routePath: '/network/dns/zones/detail/:zoneId/recordsets/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/network/dns/reverse',
|
|
name: t('DNS Reverse'),
|
|
key: 'dnsReverse',
|
|
endpoints: 'designate',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/network\/dns\/reverse\/detail\/.[^/]+$/,
|
|
name: t('Reverse DNS Detail'),
|
|
key: 'dnsReverseDetail',
|
|
level: 2,
|
|
routePath: '/network/dns/reverse/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/share',
|
|
name: t('Share File Storage'),
|
|
key: 'fileStorage',
|
|
endpoints: 'manilav2',
|
|
icon: <SwitcherOutlined />,
|
|
children: [
|
|
{
|
|
path: '/share/share',
|
|
name: t('Shares'),
|
|
key: 'share',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/share\/share\/detail\/.[^/]+$/,
|
|
name: t('Share Detail'),
|
|
key: 'shareDetail',
|
|
level: 2,
|
|
routePath: '/share/share/detail/:id',
|
|
},
|
|
{
|
|
path: '/share/share/create',
|
|
name: t('Create Share'),
|
|
key: 'shareCreate',
|
|
level: 2,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/share/share-network',
|
|
name: t('Share Networks'),
|
|
key: 'shareNetwork',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/share\/share-network\/detail\/.[^/]+$/,
|
|
name: t('Share Network Detail'),
|
|
key: 'shareNetworkDetail',
|
|
level: 2,
|
|
routePath: '/share/share-network/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/share/share-group',
|
|
name: t('Share Groups'),
|
|
key: 'shareGroup',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/share\/share-group\/detail\/.[^/]+$/,
|
|
name: t('Share Group Detail'),
|
|
key: 'shareGroupDetail',
|
|
level: 2,
|
|
routePath: '/share/share-group/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
// {
|
|
// path: '/management',
|
|
// name: t('Maintenance'),
|
|
// key: '/management',
|
|
// icon: <ToolOutlined />,
|
|
// children: [
|
|
// {
|
|
// path: '/management/recycle-bin',
|
|
// name: t('Recycle Bin'),
|
|
// key: 'recycleBin',
|
|
// level: 1,
|
|
// children: [
|
|
// {
|
|
// path: /^\/management\/recycle-bin\/detail\/.[^/]+$/,
|
|
// name: t('Instance Detail'),
|
|
// key: 'recycleBinDetail',
|
|
// level: 2,
|
|
// routePath: '/management/recycle-bin/detail/:id',
|
|
// },
|
|
// ],
|
|
// },
|
|
// ],
|
|
// },
|
|
{
|
|
path: '/heat',
|
|
name: t('Orchestration'),
|
|
key: 'heat',
|
|
endpoints: 'heat',
|
|
icon: <AppstoreOutlined />,
|
|
children: [
|
|
{
|
|
path: '/heat/stack',
|
|
name: t('Stacks'),
|
|
key: 'stack',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/heat\/stack\/detail\/.[^/]+\/.[^/]+$/,
|
|
name: t('Stack Detail'),
|
|
key: 'stackDetail',
|
|
level: 2,
|
|
routePath: '/heat/stack/detail/:id/:name',
|
|
},
|
|
{
|
|
path: '/heat/stack/create',
|
|
name: t('Create Stack'),
|
|
key: 'stackCreate',
|
|
level: 2,
|
|
},
|
|
{
|
|
path: /^\/heat\/stack\/edit\/.[^/]+\/.[^/]+$/,
|
|
name: t('Update Template'),
|
|
key: 'stackEdit',
|
|
level: 2,
|
|
routePath: '/heat/stack/edit/:id/:name',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/database',
|
|
name: t('Database'),
|
|
key: 'database',
|
|
endpoints: 'trove',
|
|
icon: <DatabaseFilled />,
|
|
children: [
|
|
{
|
|
path: '/database/instances',
|
|
name: t('Database Instances'),
|
|
key: 'databaseInstances',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/database\/instances\/detail\/.[^/]+$/,
|
|
name: t('Database Instance Detail'),
|
|
key: 'databaseInstanceDetail',
|
|
level: 2,
|
|
routePath: '/database/instances/detail/:id',
|
|
},
|
|
{
|
|
path: '/database/instances/create',
|
|
name: t('Create Database Instance'),
|
|
key: 'databaseInstanceCreate',
|
|
level: 2,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/database/backups',
|
|
name: t('Backups'),
|
|
key: 'databaseBackups',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/database\/backup\/detail\/.[^/]+$/,
|
|
name: t('Backup Detail'),
|
|
key: 'databaseBackupDetail',
|
|
level: 2,
|
|
routePath: '/database/backups/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/database/configurations',
|
|
name: t('Configuration Groups'),
|
|
key: 'configurations',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/database\/configuration\/detail\/.[^/]+$/,
|
|
name: t('Configuration Detail'),
|
|
key: 'configurationsDetail',
|
|
level: 2,
|
|
routePath: '/database/configurations/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/container',
|
|
name: t('Container'),
|
|
key: 'container',
|
|
icon: <ContainerOutlined />,
|
|
children: [
|
|
{
|
|
path: '/container-service/containers',
|
|
name: t('Containers'),
|
|
key: 'zunContainers',
|
|
endpoints: 'zun',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: '/container-service/containers/create',
|
|
name: t('Create Container'),
|
|
key: 'zunContainersCreateContainer',
|
|
level: 2,
|
|
},
|
|
{
|
|
path: /^\/container-service\/containers\/detail\/.[^/]+$/,
|
|
name: t('Container Detail'),
|
|
key: 'zunContainerDetail',
|
|
level: 2,
|
|
routePath: '/container-service/containers/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/container-service/capsules',
|
|
name: t('Capsules'),
|
|
key: 'zunCapsules',
|
|
endpoints: 'zun',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/container-service\/capsules\/detail\/.[^/]+$/,
|
|
name: t('Capsule Detail'),
|
|
key: 'zunCapsuleDetail',
|
|
level: 2,
|
|
routePath: '/container-service/capsules/detail/:id',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/container-infra/clusters',
|
|
name: t('Clusters'),
|
|
key: 'containerInfraClusters',
|
|
endpoints: 'magnum',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/container-infra\/clusters\/detail\/.[^/]+$/,
|
|
name: t('Cluster Detail'),
|
|
key: 'containerInfraClusterDetail',
|
|
level: 2,
|
|
routePath: '/container-infra/clusters/detail/:id',
|
|
},
|
|
{
|
|
path: '/container-infra/clusters/create',
|
|
name: t('Create Cluster'),
|
|
key: 'containerInfraCreateCluster',
|
|
level: 2,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/container-infra/cluster-template',
|
|
name: t('Cluster Templates'),
|
|
key: 'clusterTemplate',
|
|
endpoints: 'magnum',
|
|
level: 1,
|
|
children: [
|
|
{
|
|
path: /^\/container-infra\/cluster-template\/detail\/.[^/]+$/,
|
|
name: t('Cluster Template Detail'),
|
|
key: 'containerInfraClusterTemplateDetail',
|
|
level: 2,
|
|
routePath: '/container-infra/cluster-template/detail/:id',
|
|
},
|
|
{
|
|
path: '/container-infra/cluster-template/create',
|
|
name: t('Create Cluster Template'),
|
|
key: 'containerInfraCreateClusterTemplate',
|
|
level: 2,
|
|
},
|
|
{
|
|
path: /^\/container-infra\/cluster-template\/update\/.[^/]+$/,
|
|
name: t('Update Cluster Template'),
|
|
key: 'containerInfraUpdateClusterTemplate',
|
|
level: 2,
|
|
routePath: '/container-infra/cluster-template/update/:id',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
];
|
|
return menu;
|
|
};
|
|
|
|
export default renderMenu;
|