diff --git a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 60aa8df98b1..ebcf16afe3c 100644
--- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -1607,9 +1607,15 @@ Configurable, StateListener routerGuestNtwkIds = _routerDao.getRouterNetworks(router.getId());
+ if (RedundantState.BACKUP.equals(router.getRedundantState()) ||
+ routerGuestNtwkIds == null || routerGuestNtwkIds.isEmpty()) {
+ excludedTests = excludedTests.isEmpty() ? BACKUP_ROUTER_EXCLUDED_TESTS : excludedTests + "," + BACKUP_ROUTER_EXCLUDED_TESTS;
+ }
}
+
command.setAccessDetail(SetMonitorServiceCommand.ROUTER_HEALTH_CHECKS_EXCLUDED, excludedTests);
command.setHealthChecksConfig(getRouterHealthChecksConfig(router));
command.setReconfigureAfterUpdate(reconfigure);
diff --git a/systemvm/debian/etc/vpcdnsmasq.conf b/systemvm/debian/etc/vpcdnsmasq.conf
index 1a4b0c29552..4016374caa2 100644
--- a/systemvm/debian/etc/vpcdnsmasq.conf
+++ b/systemvm/debian/etc/vpcdnsmasq.conf
@@ -462,3 +462,4 @@ log-facility=/var/log/dnsmasq.log
conf-dir=/etc/dnsmasq.d
dhcp-optsfile=/etc/dhcpopts.txt
+localise-queries
diff --git a/systemvm/debian/opt/cloud/bin/cs/CsDhcp.py b/systemvm/debian/opt/cloud/bin/cs/CsDhcp.py
index 2c0deea4abe..91b95c6c676 100755
--- a/systemvm/debian/opt/cloud/bin/cs/CsDhcp.py
+++ b/systemvm/debian/opt/cloud/bin/cs/CsDhcp.py
@@ -127,6 +127,9 @@ class CsDhcp(CsDataBag):
listen_address.append(gateway)
else:
listen_address.append(ip)
+ # Add localized "data-server" records in /etc/hosts for VPC routers
+ if self.config.is_vpc():
+ self.add_host(gateway, "%s data-server" % CsHelper.get_hostname())
idx += 1
# Listen Address
diff --git a/ui/.env.local b/ui/.env.local
deleted file mode 100644
index 92ec87a7b0d..00000000000
--- a/ui/.env.local
+++ /dev/null
@@ -1 +0,0 @@
-CS_URL=http://10.0.35.240:8080
\ No newline at end of file
diff --git a/ui/src/config/section/network.js b/ui/src/config/section/network.js
index 3ea3fe07104..f274fd51d73 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 29a5cdedebd..8ad259b290a 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 ab7874cf057..111fbee9563 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 }}