Merge remote-tracking branch 'origin/4.15'

This commit is contained in:
Rohit Yadav 2021-04-05 13:00:18 +05:30
commit 3783fd5cec
7 changed files with 57 additions and 10 deletions

View File

@ -1607,9 +1607,15 @@ Configurable, StateListener<VirtualMachine.State, VirtualMachine.Event, VirtualM
command.setAccessDetail(SetMonitorServiceCommand.ROUTER_HEALTH_CHECKS_BASIC_INTERVAL, RouterHealthChecksBasicInterval.value().toString()); command.setAccessDetail(SetMonitorServiceCommand.ROUTER_HEALTH_CHECKS_BASIC_INTERVAL, RouterHealthChecksBasicInterval.value().toString());
command.setAccessDetail(SetMonitorServiceCommand.ROUTER_HEALTH_CHECKS_ADVANCED_INTERVAL, RouterHealthChecksAdvancedInterval.value().toString()); command.setAccessDetail(SetMonitorServiceCommand.ROUTER_HEALTH_CHECKS_ADVANCED_INTERVAL, RouterHealthChecksAdvancedInterval.value().toString());
String excludedTests = RouterHealthChecksToExclude.valueIn(router.getDataCenterId()); String excludedTests = RouterHealthChecksToExclude.valueIn(router.getDataCenterId());
if (router.getIsRedundantRouter() && RedundantState.BACKUP.equals(router.getRedundantState())) { if (router.getIsRedundantRouter()) {
// Disable gateway check if VPC has no tiers or no active VM's in it
final List<Long> 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; excludedTests = excludedTests.isEmpty() ? BACKUP_ROUTER_EXCLUDED_TESTS : excludedTests + "," + BACKUP_ROUTER_EXCLUDED_TESTS;
} }
}
command.setAccessDetail(SetMonitorServiceCommand.ROUTER_HEALTH_CHECKS_EXCLUDED, excludedTests); command.setAccessDetail(SetMonitorServiceCommand.ROUTER_HEALTH_CHECKS_EXCLUDED, excludedTests);
command.setHealthChecksConfig(getRouterHealthChecksConfig(router)); command.setHealthChecksConfig(getRouterHealthChecksConfig(router));
command.setReconfigureAfterUpdate(reconfigure); command.setReconfigureAfterUpdate(reconfigure);

View File

@ -462,3 +462,4 @@ log-facility=/var/log/dnsmasq.log
conf-dir=/etc/dnsmasq.d conf-dir=/etc/dnsmasq.d
dhcp-optsfile=/etc/dhcpopts.txt dhcp-optsfile=/etc/dhcpopts.txt
localise-queries

View File

@ -127,6 +127,9 @@ class CsDhcp(CsDataBag):
listen_address.append(gateway) listen_address.append(gateway)
else: else:
listen_address.append(ip) 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 idx += 1
# Listen Address # Listen Address

View File

@ -1 +0,0 @@
CS_URL=http://10.0.35.240:8080

View File

@ -48,7 +48,7 @@ export default {
}, { }, {
name: 'public.ip.addresses', name: 'public.ip.addresses',
component: () => import('@/views/network/IpAddressesTab.vue'), 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', name: 'virtual.routers',
component: () => import('@/views/network/RoutersTab.vue'), component: () => import('@/views/network/RoutersTab.vue'),

View File

@ -102,7 +102,7 @@
icon="environment" icon="environment"
shape="circle" shape="circle"
:disabled="(!('addIpToNic' in $store.getters.apis) && !('addIpToNic' in $store.getters.apis))" :disabled="(!('addIpToNic' in $store.getters.apis) && !('addIpToNic' in $store.getters.apis))"
@click="fetchSecondaryIPs(record.nic.id)" /> @click="onAcquireSecondaryIPAddress(record)" />
</a-tooltip> </a-tooltip>
<a-tooltip placement="bottom"> <a-tooltip placement="bottom">
<template slot="title"> <template slot="title">
@ -220,7 +220,23 @@
{{ $t('message.network.secondaryip') }} {{ $t('message.network.secondaryip') }}
</p> </p>
<a-divider /> <a-divider />
<a-input :placeholder="$t('label.new.secondaryip.description')" v-model="newSecondaryIp" autoFocus></a-input> <div class="modal-form">
<p class="modal-form__label">{{ $t('label.publicip') }}:</p>
<a-select
showSearch
v-if="editNicResource.type==='Shared'"
v-model="newSecondaryIp"
:loading="listIps.loading">
<a-select-option v-for="ip in listIps.opts" :key="ip.ipaddress">
{{ ip.ipaddress }}
</a-select-option>
</a-select>
<a-input
v-else
:placeholder="$t('label.new.secondaryip.description')"
v-model="newSecondaryIp"></a-input>
</div>
<div style="margin-top: 10px; display: flex; justify-content:flex-end;"> <div style="margin-top: 10px; display: flex; justify-content:flex-end;">
<a-button @click="submitSecondaryIP" type="primary" style="margin-right: 10px;">{{ $t('label.add.secondary.ip') }}</a-button> <a-button @click="submitSecondaryIP" type="primary" style="margin-right: 10px;">{{ $t('label.add.secondary.ip') }}</a-button>
<a-button @click="closeModals">{{ $t('label.close') }}</a-button> <a-button @click="closeModals">{{ $t('label.close') }}</a-button>
@ -298,6 +314,7 @@ export default {
loadingNic: false, loadingNic: false,
editIpAddressNic: '', editIpAddressNic: '',
editIpAddressValue: '', editIpAddressValue: '',
editNetworkId: '',
secondaryIPs: [], secondaryIPs: [],
selectedNicId: '', selectedNicId: '',
newSecondaryIp: '', newSecondaryIp: '',
@ -444,6 +461,17 @@ export default {
this.fetchPublicIps(record.nic.networkid) 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 () { submitAddNetwork () {
const params = {} const params = {}
params.virtualmachineid = this.vm.id params.virtualmachineid = this.vm.id
@ -613,6 +641,9 @@ export default {
}).catch(error => { }).catch(error => {
this.$notifyError(error) this.$notifyError(error)
this.loadingNic = false this.loadingNic = false
}).finally(() => {
this.newSecondaryIp = null
this.fetchPublicIps(this.editNetworkId)
}) })
}, },
removeSecondaryIP (id) { removeSecondaryIP (id) {
@ -625,6 +656,7 @@ export default {
successMethod: () => { successMethod: () => {
this.loadingNic = false this.loadingNic = false
this.fetchSecondaryIPs(this.selectedNicId) this.fetchSecondaryIPs(this.selectedNicId)
this.fetchPublicIps(this.editNetworkId)
this.parentFetchData() this.parentFetchData()
}, },
errorMessage: this.$t('message.error.remove.secondary.ipaddress'), errorMessage: this.$t('message.error.remove.secondary.ipaddress'),

View File

@ -19,7 +19,7 @@
<div> <div>
<a-spin :spinning="fetchLoading"> <a-spin :spinning="fetchLoading">
<a-button <a-button
:disabled="!('associateIpAddress' in $store.getters.apis)" :disabled="!('associateIpAddress' in $store.getters.apis) || resource.type === 'Shared'"
type="dashed" type="dashed"
icon="plus" icon="plus"
style="width: 100%; margin-bottom: 15px" style="width: 100%; margin-bottom: 15px"
@ -52,7 +52,8 @@
:rowKey="item => item.id" :rowKey="item => item.id"
:pagination="false" > :pagination="false" >
<template slot="ipaddress" slot-scope="text, record"> <template slot="ipaddress" slot-scope="text, record">
<router-link :to="{ path: '/publicip/' + record.id }" >{{ text }} </router-link> <router-link v-if="record.forvirtualnetwork === true" :to="{ path: '/publicip/' + record.id }" >{{ text }} </router-link>
<div v-else>{{ text }}</div>
<a-tag v-if="record.issourcenat === true">source-nat</a-tag> <a-tag v-if="record.issourcenat === true">source-nat</a-tag>
</template> </template>
@ -66,12 +67,13 @@
</template> </template>
<template slot="associatednetworkname" slot-scope="text, record"> <template slot="associatednetworkname" slot-scope="text, record">
<router-link :to="{ path: '/guestnetwork/' + record.associatednetworkid }" > {{ record.associatednetworkname || record.associatednetworkid }} </router-link> <router-link v-if="record.forvirtualnetwork === true" :to="{ path: '/guestnetwork/' + record.associatednetworkid }" > {{ record.associatednetworkname || record.associatednetworkid }} </router-link>
<div v-else>{{ record.networkname }}</div>
</template> </template>
<template slot="action" slot-scope="text, record"> <template slot="action" slot-scope="text, record">
<a-button <a-button
v-if="record.issourcenat !== true" v-if="record.issourcenat !== true && record.forvirtualnetwork === true"
type="danger" type="danger"
icon="delete" icon="delete"
shape="circle" shape="circle"
@ -212,6 +214,10 @@ export default {
if (this.vpcTier) { if (this.vpcTier) {
params.associatednetworkid = this.vpcTier params.associatednetworkid = this.vpcTier
} }
} else if (this.resource.type === 'Shared') {
params.networkid = this.resource.id
params.allocatedonly = false
params.forvirtualnetwork = false
} else { } else {
params.associatednetworkid = this.resource.id params.associatednetworkid = this.resource.id
} }