diff --git a/ui/src/config/section/network.js b/ui/src/config/section/network.js
index 3ea3fe071048..f274fd51d737 100644
--- a/ui/src/config/section/network.js
+++ b/ui/src/config/section/network.js
@@ -48,7 +48,7 @@ export default {
}, {
name: 'public.ip.addresses',
component: () => import('@/views/network/IpAddressesTab.vue'),
- show: (record) => { return record.type === 'Isolated' && !('vpcid' in record) && 'listPublicIpAddresses' in store.getters.apis }
+ show: (record) => { return (record.type === 'Isolated' || record.type === 'Shared') && !('vpcid' in record) && 'listPublicIpAddresses' in store.getters.apis }
}, {
name: 'virtual.routers',
component: () => import('@/views/network/RoutersTab.vue'),
diff --git a/ui/src/views/compute/InstanceTab.vue b/ui/src/views/compute/InstanceTab.vue
index 29a5cdedebd2..8ad259b290ac 100644
--- a/ui/src/views/compute/InstanceTab.vue
+++ b/ui/src/views/compute/InstanceTab.vue
@@ -102,7 +102,7 @@
icon="environment"
shape="circle"
:disabled="(!('addIpToNic' in $store.getters.apis) && !('addIpToNic' in $store.getters.apis))"
- @click="fetchSecondaryIPs(record.nic.id)" />
+ @click="onAcquireSecondaryIPAddress(record)" />
@@ -220,7 +220,23 @@
{{ $t('message.network.secondaryip') }}
-
+
+
{{ $t('label.add.secondary.ip') }}
{{ $t('label.close') }}
@@ -298,6 +314,7 @@ export default {
loadingNic: false,
editIpAddressNic: '',
editIpAddressValue: '',
+ editNetworkId: '',
secondaryIPs: [],
selectedNicId: '',
newSecondaryIp: '',
@@ -444,6 +461,17 @@ export default {
this.fetchPublicIps(record.nic.networkid)
}
},
+ onAcquireSecondaryIPAddress (record) {
+ if (record.nic.type === 'Shared') {
+ this.fetchPublicIps(record.nic.networkid)
+ } else {
+ this.listIps.opts = []
+ }
+
+ this.editNicResource = record.nic
+ this.editNetworkId = record.nic.networkid
+ this.fetchSecondaryIPs(record.nic.id)
+ },
submitAddNetwork () {
const params = {}
params.virtualmachineid = this.vm.id
@@ -613,6 +641,9 @@ export default {
}).catch(error => {
this.$notifyError(error)
this.loadingNic = false
+ }).finally(() => {
+ this.newSecondaryIp = null
+ this.fetchPublicIps(this.editNetworkId)
})
},
removeSecondaryIP (id) {
@@ -625,6 +656,7 @@ export default {
successMethod: () => {
this.loadingNic = false
this.fetchSecondaryIPs(this.selectedNicId)
+ this.fetchPublicIps(this.editNetworkId)
this.parentFetchData()
},
errorMessage: this.$t('message.error.remove.secondary.ipaddress'),
diff --git a/ui/src/views/network/IpAddressesTab.vue b/ui/src/views/network/IpAddressesTab.vue
index ab7874cf0570..111fbee95639 100644
--- a/ui/src/views/network/IpAddressesTab.vue
+++ b/ui/src/views/network/IpAddressesTab.vue
@@ -19,7 +19,7 @@
- {{ text }}
+ {{ text }}
+ {{ text }}
source-nat
@@ -66,12 +67,13 @@
- {{ record.associatednetworkname || record.associatednetworkid }}
+ {{ record.associatednetworkname || record.associatednetworkid }}
+ {{ record.networkname }}