Skip to content

Commit f3858e5

Browse files
RitchieVincentyadvr
andcommitted
network: Egress, PF, FW, VPN, LB tabs (#84)
Implements the egress, pf, fw, vpn and lb tabs for a guest network (ip). Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com> Co-authored-by: Rohit Yadav <rohit@apache.org>
1 parent 759921e commit f3858e5

14 files changed

Lines changed: 3041 additions & 147 deletions

File tree

ui/docs/api/apis.remaining

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,16 @@ addNetworkServiceProvider
22
addResourceDetail
33
addTrafficType
44
assignCertToLoadBalancer
5-
assignToLoadBalancerRule
65
authorizeSamlSso
7-
authorizeSecurityGroupEgress
8-
authorizeSecurityGroupIngress
96
configureInternalLoadBalancerElement
107
configureVirtualRouterElement
11-
createEgressFirewallRule
12-
createFirewallRule
138
createLBHealthCheckPolicy
14-
createLBStickinessPolicy
159
createLoadBalancer
16-
createLoadBalancerRule
1710
createManagementNetworkIpRange
1811
createNetworkACL
1912
createNetworkACLList
2013
createPhysicalNetwork
2114
createPortableIpRange
22-
createPortForwardingRule
2315
createPrivateGateway
2416
createSecondaryStagingStore
2517
createSnapshotFromVMSnapshot
@@ -30,25 +22,17 @@ createVpnConnection
3022
createVpnGateway
3123
dedicateGuestVlanRange
3224
dedicatePublicIpRange
33-
deleteAccountFromProject
34-
deleteEgressFirewallRule
35-
deleteFirewallRule
3625
deleteLBHealthCheckPolicy
37-
deleteLBStickinessPolicy
38-
deleteLdapConfiguration
3926
deleteLoadBalancer
40-
deleteLoadBalancerRule
4127
deleteManagementNetworkIpRange
4228
deleteNetworkACL
4329
deleteNetworkACLList
4430
deleteNetworkServiceProvider
4531
deletePhysicalNetwork
4632
deletePortableIpRange
47-
deletePortForwardingRule
4833
deletePrivateGateway
4934
deleteProjectInvitation
5035
deleteSecondaryStagingStore
51-
deleteSnapshotPolicies
5236
deleteStaticRoute
5337
deleteStorageNetworkIpRange
5438
deleteVlanIpRange
@@ -57,74 +41,47 @@ deleteVpnGateway
5741
findStoragePoolsForMigration
5842
importLdapUsers
5943
ldapCreateAccount
60-
linkDomainToLdap
6144
listAffinityGroupTypes
6245
listAndSwitchSamlAccount
63-
listCapabilities
6446
listDedicatedClusters
6547
listDedicatedGuestVlanRanges
6648
listDedicatedHosts
6749
listDedicatedPods
6850
listDedicatedZones
6951
listDeploymentPlanners
70-
listEgressFirewallRules
71-
listFirewallRules
7252
listHostHAProviders
7353
listHostTags
74-
listHypervisors
7554
listIdps
7655
listInternalLoadBalancerElements
7756
listInternalLoadBalancerVMs
7857
listLBHealthCheckPolicies
79-
listLBStickinessPolicies
8058
listLdapUsers
81-
listLoadBalancerRuleInstances
82-
listLoadBalancerRules
8359
listLoadBalancers
84-
listNetworkACLLists
8560
listNetworkACLs
8661
listNetworkServiceProviders
8762
listOsCategories
8863
listPortableIpRanges
89-
listPortForwardingRules
90-
listPrivateGateways
91-
listProjectAccounts
92-
listProjectInvitations
9364
listRegisteredServicePackages
94-
listRemoteAccessVpns
95-
listResourceLimits
9665
listSamlAuthorization
9766
listSecondaryStagingStores
98-
listSnapshotPolicies
9967
listStaticRoutes
10068
listStorageNetworkIpRange
10169
listStorageProviders
10270
listStorageTags
10371
listSupportedNetworkServices
10472
listTemplateOvfProperties
105-
listTemplatePermissions
10673
listTrafficTypes
10774
listVirtualRouterElements
10875
listVlanIpRanges
10976
listVmwareDcs
110-
listVpnConnections
111-
listVpnGateways
11277
moveNetworkAclItem
11378
releaseDedicatedGuestVlanRange
11479
releasePublicIpRange
115-
removeFromLoadBalancerRule
116-
replaceNetworkACLList
11780
resetVpnConnection
118-
revokeSecurityGroupEgress
119-
revokeSecurityGroupIngress
12081
startInternalLoadBalancerVM
12182
stopInternalLoadBalancerVM
122-
updateLoadBalancerRule
12383
updateNetworkACLItem
12484
updateNetworkACLList
12585
updateNetworkServiceProvider
12686
updatePhysicalNetwork
127-
updateProjectInvitation
128-
updateResourceLimit
12987
updateTrafficType
130-
updateVpnCustomerGateway

ui/legacy/generateOldLayout.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ var loadLabel = function (allFields, fieldDict, prefix) {
1313
allFields[fieldId].components.push(prefix)
1414
} else {
1515
allFields[fieldId] = {
16-
'labels': [fieldDict[fieldId].label],
17-
'components': [prefix]
16+
labels: [fieldDict[fieldId].label],
17+
components: [prefix]
1818
}
1919
}
2020
cols = cols + "'" + fieldId + "', "
@@ -28,8 +28,8 @@ var loadLabel = function (allFields, fieldDict, prefix) {
2828
allFields[colId].components.push(prefix)
2929
} else {
3030
allFields[colId] = {
31-
'labels': [columns[colId].label],
32-
'components': [prefix]
31+
labels: [columns[colId].label],
32+
components: [prefix]
3333
}
3434
}
3535
})
@@ -63,9 +63,9 @@ var loadFields = function (data, prefix) {
6363
var curActions = []
6464
$.each(Object.keys(acVal), function (idx, acKey) {
6565
if (acVal[acKey].createForm) {
66-
curActions.push({ 'action': acKey, 'label': acVal[acKey].label, 'keys': acVal[acKey].createForm.fields })
66+
curActions.push({ action: acKey, label: acVal[acKey].label, keys: acVal[acKey].createForm.fields })
6767
} else {
68-
curActions.push({ 'action': acKey, 'label': acVal[acKey].label })
68+
curActions.push({ action: acKey, label: acVal[acKey].label })
6969
}
7070
})
7171
countActions = countActions + curActions.length
@@ -77,5 +77,5 @@ var loadFields = function (data, prefix) {
7777
$.extend(actions, recRes.actions)
7878
}
7979
})
80-
return { 'allFields': allFields, 'columnsOrder': columnsOrder, 'actions': actions }
80+
return { allFields: allFields, columnsOrder: columnsOrder, actions: actions }
8181
}

ui/src/components/view/InfoCard.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
</div>
3030
<slot name="name">
3131
<h4 class="name">
32-
{{ resource.displayname || resource.name }}
32+
{{ resource.displayname || resource.name || resource.displaytext || resource.hostname || resource.username || resource.ipaddress }}
3333
</h4>
3434
<console style="margin-left: 10px" :resource="resource" size="default" v-if="resource.id" />
3535
</slot>

ui/src/components/view/ResourceView.vue

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
v-for="tab in tabs"
3737
:tab="$t(tab.name)"
3838
:key="tab.name"
39-
v-if="'show' in tab ? tab.show(resource, $route, $store.getters.userInfo) : true">
39+
v-if="showHideTab(tab)">
4040
<component :is="tab.component" :resource="resource" :loading="loading" :tab="activeTab" />
4141
</a-tab-pane>
4242
</a-tabs>
@@ -49,6 +49,7 @@
4949
import DetailsTab from '@/components/view/DetailsTab'
5050
import InfoCard from '@/components/view/InfoCard'
5151
import ResourceLayout from '@/layouts/ResourceLayout'
52+
import { api } from '@/api'
5253
5354
export default {
5455
name: 'ResourceView',
@@ -77,12 +78,45 @@ export default {
7778
},
7879
data () {
7980
return {
80-
activeTab: ''
81+
activeTab: '',
82+
networkService: null,
83+
vpnEnabled: false
84+
}
85+
},
86+
watch: {
87+
resource: function (newItem, oldItem) {
88+
this.resource = newItem
89+
if (newItem.id === oldItem.id) return
90+
91+
if (this.resource.associatednetworkid) {
92+
api('listNetworks', { id: this.resource.associatednetworkid }).then(response => {
93+
this.networkService = response.listnetworksresponse.network[0]
94+
})
95+
}
96+
97+
if (this.resource.id && this.resource.ipaddress) {
98+
api('listRemoteAccessVpns', {
99+
publicipid: this.resource.id,
100+
listAll: true
101+
}).then(response => {
102+
this.vpnEnabled = response.listremoteaccessvpnsresponse.remoteaccessvpn && response.listremoteaccessvpnsresponse.remoteaccessvpn.length > 0
103+
})
104+
}
81105
}
82106
},
83107
methods: {
84108
onTabChange (key) {
85109
this.activeTab = key
110+
},
111+
showHideTab (tab) {
112+
if ('networkServiceFilter' in tab) {
113+
return this.networkService && this.networkService.service &&
114+
tab.networkServiceFilter(this.networkService.service)
115+
} else if ('show' in tab) {
116+
return tab.show(this.resource, this.$route, this.$store.getters.userInfo)
117+
} else {
118+
return true
119+
}
86120
}
87121
}
88122
}

ui/src/config/section/network.js

Lines changed: 19 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,9 @@ export default {
4545
name: 'details',
4646
component: () => import('@/components/view/DetailsTab.vue')
4747
}, {
48-
name: 'egress-rules',
49-
component: () => import('@/views/network/EgressConfigure.vue')
48+
name: 'Egress Rules',
49+
component: () => import('@/views/network/EgressConfigure.vue'),
50+
show: () => true
5051
}],
5152
actions: [
5253
{
@@ -227,14 +228,23 @@ export default {
227228
columns: ['ipaddress', 'state', 'associatednetworkname', 'virtualmachinename', 'allocated', 'account', 'zonename'],
228229
details: ['ipaddress', 'id', 'associatednetworkname', 'virtualmachinename', 'networkid', 'issourcenat', 'isstaticnat', 'virtualmachinename', 'vmipaddress', 'vlan', 'allocated', 'account', 'zonename'],
229230
tabs: [{
230-
name: 'configure',
231-
component: () => import('@/views/network/IpConfigure.vue')
232-
}, {
233-
name: 'vpn',
234-
component: () => import('@/views/network/VpnDetails.vue')
235-
}, {
236231
name: 'details',
237232
component: () => import('@/components/view/DetailsTab.vue')
233+
}, {
234+
name: 'Firewall',
235+
component: () => import('@/views/network/FirewallRules.vue'),
236+
networkServiceFilter: networkService => networkService.filter(x => x.name === 'Firewall').length > 0
237+
}, {
238+
name: 'Port Forwarding',
239+
component: () => import('@/views/network/PortForwarding.vue'),
240+
networkServiceFilter: networkService => networkService.filter(x => x.name === 'PortForwarding').length > 0
241+
}, {
242+
name: 'Load Balancing',
243+
component: () => import('@/views/network/LoadBalancing.vue'),
244+
networkServiceFilter: networkService => networkService.filter(x => x.name === 'Lb').length > 0
245+
}, {
246+
name: 'VPN',
247+
component: () => import('@/views/network/VpnDetails.vue')
238248
}],
239249
actions: [
240250
{
@@ -244,39 +254,6 @@ export default {
244254
listView: true,
245255
args: ['networkid']
246256
},
247-
{
248-
api: 'createRemoteAccessVpn',
249-
icon: 'link',
250-
label: 'Enable Remote Access VPN',
251-
dataView: true,
252-
args: ['publicipid', 'domainid', 'account'],
253-
mapping: {
254-
publicipid: {
255-
value: (record) => { return record.id }
256-
},
257-
domainid: {
258-
value: (record) => { return record.domainid }
259-
},
260-
account: {
261-
value: (record) => { return record.account }
262-
}
263-
}
264-
},
265-
{
266-
api: 'deleteRemoteAccessVpn',
267-
icon: 'disconnect',
268-
label: 'Disable Remove Access VPN',
269-
dataView: true,
270-
args: ['publicipid', 'domainid'],
271-
mapping: {
272-
publicipid: {
273-
value: (record) => { return record.id }
274-
},
275-
domainid: {
276-
value: (record) => { return record.domainid }
277-
}
278-
}
279-
},
280257
{
281258
api: 'enableStaticNat',
282259
icon: 'plus-circle',
@@ -306,7 +283,7 @@ export default {
306283
{
307284
api: 'disassociateIpAddress',
308285
icon: 'delete',
309-
label: 'Delete IP',
286+
label: 'Release IP',
310287
dataView: true,
311288
show: (record) => { return !record.issourcenat }
312289
}

0 commit comments

Comments
 (0)