This is an automated email from the ASF dual-hosted git repository. rohit pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cloudstack-primate.git
commit 06a438f3d08c0e366308807e8967f568c345ce08 Author: Rohit Yadav <[email protected]> AuthorDate: Sun Jun 28 18:36:02 2020 +0530 network: fix network related issues Signed-off-by: Rohit Yadav <[email protected]> --- src/components/view/InfoCard.vue | 13 ++++++-- src/components/view/ListView.vue | 6 ++++ src/components/widgets/Status.vue | 37 ++++++++++++--------- src/views/network/InternalLBAssignVmForm.vue | 2 +- src/views/network/InternalLBAssignedVmTab.vue | 4 ++- src/views/network/LoadBalancing.vue | 41 +++++++++++------------ src/views/network/PortForwarding.vue | 47 ++++++++++++++++----------- src/views/network/VpcTiersTab.vue | 10 +++++- 8 files changed, 100 insertions(+), 60 deletions(-) diff --git a/src/components/view/InfoCard.vue b/src/components/view/InfoCard.vue index 6adc9fe..673d3f2 100644 --- a/src/components/view/InfoCard.vue +++ b/src/components/view/InfoCard.vue @@ -334,6 +334,13 @@ <router-link :to="{ path: '/guestnetwork/' + resource.associatednetworkid }">{{ resource.associatednetworkname || resource.associatednetworkid }} </router-link> </div> </div> + <div class="resource-detail-item" v-if="resource.sourceipaddressnetworkid"> + <div class="resource-detail-item__label">{{ $t('label.network') }}</div> + <div class="resource-detail-item__details"> + <a-icon type="wifi" /> + <router-link :to="{ path: '/guestnetwork/' + resource.sourceipaddressnetworkid }">{{ resource.sourceipaddressnetworkname || resource.sourceipaddressnetworkid }} </router-link> + </div> + </div> <div class="resource-detail-item" v-if="resource.guestnetworkid"> <div class="resource-detail-item__label">{{ $t('label.guestnetwork') }}</div> <div class="resource-detail-item__details"> @@ -386,14 +393,14 @@ <div class="resource-detail-item__label">{{ $t('label.backupofferingid') }}</div> <a-icon type="cloud-upload" /> <router-link v-if="$router.resolve('/backupoffering/' + resource.backupofferingid).route.name !== '404'" :to="{ path: '/backupoffering/' + resource.backupofferingid }">{{ resource.backupofferingname || resource.backupofferingid }} </router-link> - <span v-else>{{ resource.backupofferingname || resourece.backupofferingid }}</span> + <span v-else>{{ resource.backupofferingname || resource.backupofferingid }}</span> </div> <div class="resource-detail-item" v-if="resource.networkofferingid"> <div class="resource-detail-item__label">{{ $t('label.networkofferingid') }}</div> <div class="resource-detail-item__details"> <a-icon type="wifi" /> <router-link v-if="$router.resolve('/networkoffering/' + resource.networkofferingid).route.name !== '404'" :to="{ path: '/networkoffering/' + resource.networkofferingid }">{{ resource.networkofferingname || resource.networkofferingid }} </router-link> - <span v-else>{{ resource.networkofferingname || resourece.networkofferingid }}</span> + <span v-else>{{ resource.networkofferingname || resource.networkofferingid }}</span> </div> </div> <div class="resource-detail-item" v-if="resource.vpcofferingid"> @@ -401,7 +408,7 @@ <div class="resource-detail-item__details"> <a-icon type="deployment-unit" /> <router-link v-if="$router.resolve('/vpcoffering/' + resource.vpcofferingid).route.name !== '404'" :to="{ path: '/vpcoffering/' + resource.vpcofferingid }">{{ resource.vpcofferingname || resource.vpcofferingid }} </router-link> - <span v-else>{{ resource.vpcofferingname || resourece.vpcofferingid }}</span> + <span v-else>{{ resource.vpcofferingname || resource.vpcofferingid }}</span> </div> </div> <div class="resource-detail-item" v-if="resource.storageid"> diff --git a/src/components/view/ListView.vue b/src/components/view/ListView.vue index 4534c36..e5ec25e 100644 --- a/src/components/view/ListView.vue +++ b/src/components/view/ListView.vue @@ -97,6 +97,9 @@ <a slot="vmname" slot-scope="text, record" href="javascript:;"> <router-link :to="{ path: '/vm/' + record.virtualmachineid }">{{ text }}</router-link> </a> + <a slot="virtualmachinename" slot-scope="text, record" href="javascript:;"> + <router-link :to="{ path: '/vm/' + record.virtualmachineid }">{{ text }}</router-link> + </a> <span slot="hypervisor" slot-scope="text, record"> <span v-if="$route.name === 'hypervisorcapability'"> <router-link :to="{ path: $route.path + '/' + record.id }">{{ text }}</router-link> @@ -121,6 +124,9 @@ <a slot="guestnetworkname" slot-scope="text, record" href="javascript:;"> <router-link :to="{ path: '/guestnetwork/' + record.guestnetworkid }">{{ text }}</router-link> </a> + <a slot="associatednetworkname" slot-scope="text, record" href="javascript:;"> + <router-link :to="{ path: '/guestnetwork/' + record.associatednetworkid }">{{ text }}</router-link> + </a> <a slot="vpcname" slot-scope="text, record" href="javascript:;"> <router-link :to="{ path: '/vpc/' + record.vpcid }">{{ text }}</router-link> </a> diff --git a/src/components/widgets/Status.vue b/src/components/widgets/Status.vue index fa032ce..2301d56 100644 --- a/src/components/widgets/Status.vue +++ b/src/components/widgets/Status.vue @@ -48,44 +48,51 @@ export default { getBadgeStatus (state) { var status = 'default' switch (state) { - case 'Running': - case 'Ready': - case 'Up': - case 'BackedUp': - case 'Implemented': - case 'Enabled': - case 'enabled': case 'Active': + case 'BackedUp': case 'Completed': case 'Connected': - case 'Started': case 'Download Complete': + case 'Enabled': + case 'Implemented': + case 'Ready': + case 'Running': + case 'Setup': + case 'Started': case 'Successfully Installed': case 'True': + case 'Up': + case 'enabled': status = 'success' break + case 'Alert': + case 'Declined': case 'Disabled': + case 'Disconnected': case 'Down': case 'Error': - case 'Stopped': - case 'Declined': - case 'Disconnected': case 'False': + case 'Stopped': status = 'error' break case 'Migrating': + case 'Scaling': + case 'Scheduled': case 'Starting': case 'Stopping': - case 'Scheduled': - case 'Scaling': case 'Upgrading': status = 'processing' break - case 'Alert': case 'Allocated': + if (this.$route.path.startsWith('/publicip')) { + status = 'success' + } else { + status = 'warning' + } + break case 'Created': - case 'Pending': case 'Maintenance': + case 'Pending': status = 'warning' break } diff --git a/src/views/network/InternalLBAssignVmForm.vue b/src/views/network/InternalLBAssignVmForm.vue index 1d891e9..330a8e5 100644 --- a/src/views/network/InternalLBAssignVmForm.vue +++ b/src/views/network/InternalLBAssignVmForm.vue @@ -167,7 +167,7 @@ export default { this.addVmModalNicLoading = true api('listNics', { virtualmachineid: e.target.value, - networkid: this.resource.associatednetworkid + networkid: this.resource.networkid }).then(response => { if (!response.listnicsresponse.nic[0]) return const newItem = [] diff --git a/src/views/network/InternalLBAssignedVmTab.vue b/src/views/network/InternalLBAssignedVmTab.vue index 5e92587..9be6101 100644 --- a/src/views/network/InternalLBAssignedVmTab.vue +++ b/src/views/network/InternalLBAssignedVmTab.vue @@ -30,7 +30,9 @@ </template> <template slot="ipaddress" slot-scope="text, record"> <span v-for="nic in record.nic" :key="nic.id"> - {{ nic.ipaddress }} <br/> + <span v-if="nic.networkid === resource.networkid"> + {{ nic.ipaddress }} <br/> + </span> </span> </template> <template slot="remove" slot-scope="text, record"> diff --git a/src/views/network/LoadBalancing.vue b/src/views/network/LoadBalancing.vue index 2feb090..a3d0a59 100644 --- a/src/views/network/LoadBalancing.vue +++ b/src/views/network/LoadBalancing.vue @@ -18,21 +18,6 @@ <template> <div> <div> - <div class="filter" v-if="'vpcid' in resource && !('associatednetworkid' in resource)"> - <div class="form"> - <div class="form__item" ref="newRuleTier"> - <div class="form__label">{{ $t('label.tiername') }}</div> - <a-select v-model="newRule.tier"> - <a-select-option - v-for="tier in tiers.data" - :loading="tiers.loading" - :key="tier.id"> - {{ tier.displaytext }} - </a-select-option> - </a-select> - </div> - </div> - </div> <div class="form"> <div class="form__item" ref="newRuleName"> <div class="form__label"><span class="form__required">*</span>{{ $t('label.name') }}</div> @@ -294,6 +279,21 @@ @cancel="closeModal" > <div> + <span + v-if="'vpcid' in resource && !('associatednetworkid' in resource)"> + <strong>{{ $t('label.select.tier') }} </strong> + <a-select + v-model="selectedTier" + @change="fetchVirtualMachines()" + :placeholder="$t('label.select.tier')" > + <a-select-option + v-for="tier in tiers.data" + :loading="tiers.loading" + :key="tier.id"> + {{ tier.displaytext }} + </a-select-option> + </a-select> + </span> <a-input-search class="input-search" placeholder="Search" @@ -377,6 +377,7 @@ export default { tagsModalLoading: false, tags: [], selectedRule: null, + selectedTier: null, stickinessModalVisible: false, stickinessPolicies: [], stickinessPolicyForm: this.$form.createForm(this), @@ -524,7 +525,7 @@ export default { vpcid: this.resource.vpcid }).then(json => { this.tiers.data = json.listnetworksresponse.network || [] - this.newRule.tier = this.tiers.data && this.tiers.data[0].id ? this.tiers.data[0].id : null + this.selectedTier = this.tiers.data && this.tiers.data[0].id ? this.tiers.data[0].id : null this.$forceUpdate() }).catch(error => { this.$notifyError(error) @@ -982,7 +983,7 @@ export default { api('listNics', { virtualmachineid: e.target.value, - networkid: this.resource.associatednetworkid + networkid: ('vpcid' in this.resource && !('associatednetworkid' in this.resource)) ? this.selectedTier : this.resource.associatednetworkid }).then(response => { if (!response || !response.listnicsresponse || !response.listnicsresponse.nic[0]) return const newItem = [] @@ -1002,7 +1003,7 @@ export default { this.vmCount = 0 this.vms = [] this.addVmModalLoading = true - const networkId = ('vpcid' in this.resource && !('associatednetworkid' in this.resource)) ? this.newRule.tier : this.resource.associatednetworkid + const networkId = ('vpcid' in this.resource && !('associatednetworkid' in this.resource)) ? this.selectedTier : this.resource.associatednetworkid api('listVirtualMachines', { listAll: true, keyword: this.searchQuery, @@ -1085,7 +1086,7 @@ export default { return } - const networkId = ('vpcid' in this.resource && !('associatednetworkid' in this.resource)) ? this.newRule.tier : this.resource.associatednetworkid + const networkId = ('vpcid' in this.resource && !('associatednetworkid' in this.resource)) ? this.selectedTier : this.resource.associatednetworkid api('createLoadBalancerRule', { openfirewall: false, networkid: networkId, @@ -1496,7 +1497,7 @@ export default { .input-search { margin-bottom: 10px; - width: 220px; + width: 50%; float: right; } </style> diff --git a/src/views/network/PortForwarding.vue b/src/views/network/PortForwarding.vue index dabf6e3..5d53101 100644 --- a/src/views/network/PortForwarding.vue +++ b/src/views/network/PortForwarding.vue @@ -18,21 +18,6 @@ <template> <div> <div> - <div class="filter" v-if="'vpcid' in resource && !('associatednetworkid' in resource)"> - <div class="form"> - <div class="form__item" ref="newRuleTier"> - <div class="form__label">{{ $t('label.tiername') }}</div> - <a-select v-model="newRule.tier"> - <a-select-option - v-for="tier in tiers.data" - :loading="tiers.loading" - :key="tier.id"> - {{ tier.displaytext }} - </a-select-option> - </a-select> - </div> - </div> - </div> <div class="form"> <div class="form__item"> <div class="form__label">{{ $t('label.privateport') }}</div> @@ -175,6 +160,21 @@ @cancel="closeModal" > <div> + <span + v-if="'vpcid' in resource && !('associatednetworkid' in resource)"> + <strong>{{ $t('label.select.tier') }} </strong> + <a-select + v-model="selectedTier" + @change="fetchVirtualMachines()" + :placeholder="$t('label.select.tier')" > + <a-select-option + v-for="tier in tiers.data" + :loading="tiers.loading" + :key="tier.id"> + {{ tier.displaytext }} + </a-select-option> + </a-select> + </span> <a-input-search class="input-search" placeholder="Search" @@ -261,6 +261,7 @@ export default { }, tagsModalVisible: false, selectedRule: null, + selectedTier: null, tags: [], newTag: { key: null, @@ -382,7 +383,7 @@ export default { vpcid: this.resource.vpcid }).then(json => { this.tiers.data = json.listnetworksresponse.network || [] - this.newRule.tier = this.tiers.data && this.tiers.data[0].id ? this.tiers.data[0].id : null + this.selectedTier = this.tiers.data && this.tiers.data[0].id ? this.tiers.data[0].id : null this.$forceUpdate() }).catch(error => { this.$notifyError(error) @@ -425,7 +426,7 @@ export default { addRule () { this.loading = true this.addVmModalVisible = false - const networkId = ('vpcid' in this.resource && !('associatednetworkid' in this.resource)) ? this.newRule.tier : this.resource.associatednetworkid + const networkId = ('vpcid' in this.resource && !('associatednetworkid' in this.resource)) ? this.selectedTier : this.resource.associatednetworkid api('createPortForwardingRule', { ...this.newRule, ipaddressid: this.resource.id, @@ -436,11 +437,13 @@ export default { successMessage: `Successfully added new Port Forwarding rule`, successMethod: () => { this.closeModal() + this.parentFetchData() this.fetchData() }, errorMessage: 'Adding new Port Forwarding rule failed', errorMethod: () => { this.closeModal() + this.parentFetchData() this.fetchData() }, loadingMessage: `Adding new Port Forwarding rule...`, @@ -578,7 +581,7 @@ export default { this.newRule.virtualmachineid = e.target.value api('listNics', { virtualmachineid: e.target.value, - networkid: this.resource.associatednetworkid + networkId: ('vpcid' in this.resource && !('associatednetworkid' in this.resource)) ? this.selectedTier : this.resource.associatednetworkid }).then(response => { if (!response.listnicsresponse.nic || response.listnicsresponse.nic.length < 1) return const nic = response.listnicsresponse.nic[0] @@ -598,7 +601,7 @@ export default { this.vmCount = 0 this.vms = [] this.addVmModalLoading = true - const networkId = ('vpcid' in this.resource && !('associatednetworkid' in this.resource)) ? this.newRule.tier : this.resource.associatednetworkid + const networkId = ('vpcid' in this.resource && !('associatednetworkid' in this.resource)) ? this.selectedTier : this.resource.associatednetworkid api('listVirtualMachines', { listAll: true, keyword: this.searchQuery, @@ -832,4 +835,10 @@ export default { width: 100%; } } + + .input-search { + margin-bottom: 10px; + width: 50%; + float: right; + } </style> diff --git a/src/views/network/VpcTiersTab.vue b/src/views/network/VpcTiersTab.vue index 8cb1261..b4be7a6 100644 --- a/src/views/network/VpcTiersTab.vue +++ b/src/views/network/VpcTiersTab.vue @@ -83,9 +83,12 @@ :to="{ path: '/vm/'+item.id}">{{ item.name }} </router-link> </template> + <template slot="state" slot-scope="text, item"> + <status :text="item.state" displayText></status> + </template> <template slot="ip" slot-scope="text, item"> <div v-for="nic in item.nic" :key="nic.id"> - {{ nic.isdefault === true ? nic.ipaddress : '' }} + {{ nic.networkid === network.id ? nic.ipaddress : '' }} </div> </template> </a-table> @@ -331,6 +334,11 @@ export default { scopedSlots: { customRender: 'name' } }, { + title: this.$t('label.state'), + dataIndex: 'state', + scopedSlots: { customRender: 'state' } + }, + { title: this.$t('label.ip'), scopedSlots: { customRender: 'ip' } }
