Skip to content

Commit 203db55

Browse files
nvazquezdhslove
authored andcommitted
UI: Restore AS Numbers and IPv4 Subnets menus (apache#10580)
* UI: Restore AS Numbers menu * Restore IPv4 Subnets menu * Add missing details for network and VPC details and tabs for Isolated networks * Address latest review comments
1 parent 7f69f8b commit 203db55

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

ui/src/config/section/network.js

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export default {
4848
return fields
4949
},
5050
details: () => {
51-
var fields = ['name', 'id', 'description', 'type', 'traffictype', 'vpcid', 'vlan', 'broadcasturi', 'cidr', 'ip6cidr', 'netmask', 'gateway', 'asnumber', 'aclname', 'ispersistent', 'restartrequired', 'reservediprange', 'redundantrouter', 'networkdomain', 'egressdefaultpolicy', 'zonename', 'account', 'domain', 'associatednetwork', 'associatednetworkid', 'ip4routing', 'ip6routing', 'dns1', 'dns2', 'ip6dns1', 'ip6dns2', 'publicmtu', 'privatemtu']
51+
var fields = ['name', 'id', 'description', 'type', 'traffictype', 'vpcid', 'vlan', 'broadcasturi', 'cidr', 'ip6cidr', 'netmask', 'gateway', 'asnumber', 'aclname', 'ispersistent', 'restartrequired', 'reservediprange', 'redundantrouter', 'networkdomain', 'egressdefaultpolicy', 'zonename', 'account', 'domainpath', 'associatednetwork', 'associatednetworkid', 'ip4routing', 'ip6firewall', 'ip6routing', 'ip6routes', 'dns1', 'dns2', 'ip6dns1', 'ip6dns2', 'publicmtu', 'privatemtu']
5252
if (!isAdmin()) {
5353
fields = fields.filter(function (e) { return e !== 'broadcasturi' })
5454
}
@@ -76,6 +76,14 @@ export default {
7676
name: 'routing.firewall',
7777
component: shallowRef(defineAsyncComponent(() => import('@/views/network/RoutingFirewallRulesTab.vue'))),
7878
show: (record, route, user) => { return record.type === 'Isolated' && record.ip4routing && !('vpcname' in record) && 'listRoutingFirewallRules' in store.getters.apis && (['Admin', 'DomainAdmin'].includes(user.roletype) || record.account === user.account || record.projectid) }
79+
}, {
80+
name: 'bgp.peers',
81+
component: shallowRef(defineAsyncComponent(() => import('@/views/infra/zone/BgpPeersTab.vue'))),
82+
show: (record, route, user) => { return !record.vpcid && ['Admin'].includes(user.roletype) && record.ip4routing === 'Dynamic' }
83+
}, {
84+
name: 'routing.firewall',
85+
component: shallowRef(defineAsyncComponent(() => import('@/views/network/RoutingFirewallRulesTab.vue'))),
86+
show: (record, route, user) => { return record.type === 'Isolated' && record.ip4routing && !('vpcname' in record) && 'listRoutingFirewallRules' in store.getters.apis && (['Admin', 'DomainAdmin'].includes(user.roletype) || record.account === user.account || record.projectid) }
7987
}, {
8088
name: 'ip.v6.firewall',
8189
component: shallowRef(defineAsyncComponent(() => import('@/views/network/Ipv6FirewallRulesTab.vue'))),
@@ -1447,6 +1455,46 @@ export default {
14471455
show: (record) => { return (record.allocationstate === 'Allocated') }
14481456
}],
14491457
show: isZoneCreated
1458+
},
1459+
{
1460+
name: 'ipv4subnets',
1461+
title: 'label.ipv4.subnets',
1462+
icon: 'pic-center-outlined',
1463+
permission: ['listIpv4SubnetsForGuestNetwork'],
1464+
columns: ['subnet', 'zonename', 'parentsubnet', 'networkname', 'vpcname', 'created', 'allocated'],
1465+
details: ['subnet', 'zonename', 'zoneid', 'parentsubnet', 'networkname', 'networkid', 'vpcname', 'vpcid', 'created', 'allocated', 'state'],
1466+
searchFilters: ['zoneid'],
1467+
show: () => {
1468+
if (!store.getters.zones || store.getters.zones.length === 0) {
1469+
return false
1470+
}
1471+
const AdvancedZonesWithRoutedmode = store.getters.zones.filter(zone => zone.routedmodeenabled)
1472+
if (isAdmin() && (AdvancedZonesWithRoutedmode && AdvancedZonesWithRoutedmode.length > 0)) {
1473+
return true
1474+
}
1475+
return false
1476+
},
1477+
actions: [
1478+
{
1479+
api: 'createIpv4SubnetForGuestNetwork',
1480+
icon: 'plus-outlined',
1481+
label: 'label.add.ipv4.subnet',
1482+
listView: true,
1483+
popup: true,
1484+
component: shallowRef(defineAsyncComponent(() => import('@/views/network/CreateIpv4SubnetForNetwork.vue')))
1485+
},
1486+
{
1487+
api: 'deleteIpv4SubnetForGuestNetwork',
1488+
icon: 'delete-outlined',
1489+
label: 'label.delete.ipv4.subnet',
1490+
message: 'message.action.delete.ipv4.subnet',
1491+
dataView: true,
1492+
show: (record) => { return !record.networkid },
1493+
groupAction: true,
1494+
popup: true,
1495+
groupMap: (selection) => { return selection.map(x => { return { id: x } }) }
1496+
}
1497+
]
14501498
}
14511499
]
14521500
}

0 commit comments

Comments
 (0)