Skip to content

Commit bc106fd

Browse files
committed
end rebase and adjust list project vms of tier
1 parent 369984b commit bc106fd

2 files changed

Lines changed: 87 additions & 20 deletions

File tree

ui/src/views/network/IpAddressesTab.vue

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,9 @@
145145
centered
146146
width="450px">
147147
<a-spin :spinning="acquireLoading" v-ctrl-enter="acquireIpAddress">
148-
<a-alert :message="$t('message.action.acquire.ip')" type="warning" />
148+
<div v-if="$route.path.startsWith('/vpc') && !isNormalUserOrProject()">
149+
<ownership-selection :override="possibleOwnership" @fetch-owner="fetchOwnerOptions"/>
150+
</div>
149151
<a-form layout="vertical" style="margin-top: 10px">
150152
<a-form-item :label="$t('label.ipaddress')">
151153
<infinite-scroll-select
@@ -160,6 +162,7 @@
160162
:autoSelectFirstOption="true"
161163
@change-option-value="(ip) => acquireIp = ip" />
162164
</a-form-item>
165+
<a-alert :message="$t('message.action.acquire.ip')" type="warning" />
163166
<div :span="24" class="action-button">
164167
<a-button @click="onCloseModal">{{ $t('label.cancel') }}</a-button>
165168
<a-button ref="submit" type="primary" @click="acquireIpAddress">{{ $t('label.ok') }}</a-button>
@@ -210,14 +213,16 @@ import TooltipButton from '@/components/widgets/TooltipButton'
210213
import BulkActionView from '@/components/view/BulkActionView'
211214
import eventBus from '@/config/eventBus'
212215
import InfiniteScrollSelect from '@/components/widgets/InfiniteScrollSelect'
216+
import OwnershipSelection from '@/views/compute/wizard/OwnershipSelection.vue'
213217
214218
export default {
215219
name: 'IpAddressesTab',
216220
components: {
217221
Status,
218222
TooltipButton,
219223
BulkActionView,
220-
InfiniteScrollSelect
224+
InfiniteScrollSelect,
225+
OwnershipSelection
221226
},
222227
props: {
223228
resource: {
@@ -281,7 +286,12 @@ export default {
281286
acquireLoading: false,
282287
acquireIp: null,
283288
changeSourceNat: false,
284-
zoneExtNetProvider: ''
289+
zoneExtNetProvider: '',
290+
possibleOwnership: {
291+
domains: null,
292+
projects: null,
293+
accounts: null
294+
}
285295
}
286296
},
287297
async created () {
@@ -321,6 +331,9 @@ export default {
321331
}
322332
},
323333
methods: {
334+
isNormalUserOrProject () {
335+
return ['User'].includes(this.$store.getters.userInfo.roletype) || this.$store.getters.project?.id
336+
},
324337
fetchData () {
325338
const params = {
326339
listall: true,
@@ -334,6 +347,7 @@ export default {
334347
if (this.vpcTier) {
335348
params.associatednetworkid = this.vpcTier
336349
}
350+
this.getAvailableOwnersForIP()
337351
} else if (this.resource.type === 'Shared') {
338352
params.networkid = this.resource.id
339353
params.allocatedonly = false
@@ -362,13 +376,20 @@ export default {
362376
}).catch(reject)
363377
})
364378
},
365-
fetchListPublicIpAddress (state) {
366-
return new Promise((resolve, reject) => {
367-
getAPI('listPublicIpAddresses', this.listApiParams).then(json => {
368-
const listPublicIps = json.listpublicipaddressesresponse.publicipaddress || []
369-
resolve(listPublicIps)
370-
}).catch(reject)
371-
})
379+
fetchOwnerOptions (OwnerOptions) {
380+
this.owner = {}
381+
if (OwnerOptions.selectedAccountType === this.$t('label.account')) {
382+
if (!OwnerOptions.selectedAccount) {
383+
return
384+
}
385+
this.owner.account = OwnerOptions.selectedAccount
386+
this.owner.domainid = OwnerOptions.selectedDomain
387+
} else if (OwnerOptions.selectedAccountType === this.$t('label.project')) {
388+
if (!OwnerOptions.selectedProject) {
389+
return
390+
}
391+
this.owner.projectid = OwnerOptions.selectedProject
392+
}
372393
},
373394
handleTierSelect (tier) {
374395
this.vpcTier = tier
@@ -453,6 +474,11 @@ export default {
453474
const params = {}
454475
if (this.$route.path.startsWith('/vpc')) {
455476
params.vpcid = this.resource.id
477+
if (this.owner) {
478+
params.domainid = this.owner.domainid
479+
params.account = this.owner.projectid ? null : this.owner.account
480+
params.projectid = this.owner.projectid ? this.owner.projectid : null
481+
}
456482
if (this.vpcTier) {
457483
params.networkid = this.vpcTier
458484
}
@@ -560,6 +586,20 @@ export default {
560586
default: return '/vm/'
561587
}
562588
},
589+
getAvailableOwnersForIP () {
590+
this.possibleOwnership.domains = new Set([this.resource.domainid])
591+
this.possibleOwnership.projects = this.resource.projectid ? new Set([this.resource.projectid]) : new Set([])
592+
this.possibleOwnership.accounts = this.resource.projectid ? new Set([]) : new Set([this.resource.account])
593+
594+
this.resource.network.forEach(network => {
595+
this.possibleOwnership.domains.add(network.domainid)
596+
if (network.projectid) {
597+
this.possibleOwnership.projects.add(network.projectid)
598+
} else {
599+
this.possibleOwnership.accounts.add(network.account)
600+
}
601+
})
602+
},
563603
async onShowAcquireIp () {
564604
this.showAcquireIp = true
565605
},

ui/src/views/network/VpcTiersTab.vue

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,14 @@
3434
{{ $t('label.name') }}
3535
</div>
3636
<div>
37-
<router-link :to="{ path: '/guestnetwork/' + network.id }">{{ network.name }} </router-link>
37+
<router-link
38+
v-if="network.projectid"
39+
:to="{ path: '/guestnetwork/' + network.id, query: {projectid: -1 }}">
40+
{{ network.name }}
41+
</router-link>
42+
<router-link v-else :to="{ path: '/guestnetwork/' + network.id }">
43+
{{ network.name }}
44+
</router-link>
3845
<a-tag v-if="network.broadcasturi">{{ network.broadcasturi }}</a-tag>
3946
</div>
4047
</div>
@@ -58,7 +65,23 @@
5865
</router-link>
5966
</div>
6067
</div>
61-
<div class="list__col" v-if="!(resource.domainid === network.domainid && resource.account === network.account)">
68+
<div
69+
class="list__col"
70+
v-if="(network.projectid && resource.account) || (network.projectid !== resource.projectid)"
71+
>
72+
<div class="list__label">
73+
{{ $t('label.project') }}
74+
</div>
75+
<div>
76+
<router-link :to="{ path: '/project/' + network.projectid }">
77+
{{ network.project }}
78+
</router-link>
79+
</div>
80+
</div>
81+
<div
82+
class="list__col"
83+
v-else-if="(network.account && resource.projectid) || network.account !== resource.account || network.domainid !== resource.domainid"
84+
>
6285
<div class="list__label">
6386
{{ $t('label.account') }}
6487
</div>
@@ -549,7 +572,7 @@ export default {
549572
}
550573
for (const network of this.networks) {
551574
this.fetchLoadBalancers(network.id)
552-
this.fetchVMs(network.id)
575+
this.fetchVMs(network)
553576
this.updateDisplayCollapsible(network.networkofferingid, network)
554577
}
555578
this.publicLBNetworkExists()
@@ -710,17 +733,21 @@ export default {
710733
this.fetchLoading = false
711734
})
712735
},
713-
fetchVMs (id) {
736+
fetchVMs (network) {
714737
this.fetchLoading = true
715-
getAPI('listVirtualMachines', {
738+
var params = {
716739
listAll: true,
717740
vpcid: this.resource.id,
718-
networkid: id,
741+
networkid: network.id,
719742
page: this.page,
720743
pagesize: this.pageSize
721-
}).then(json => {
722-
this.vms[id] = json.listvirtualmachinesresponse.virtualmachine || []
723-
this.itemCounts.vms[id] = json.listvirtualmachinesresponse.count || 0
744+
}
745+
if (network.projectid) {
746+
params.projectid = -1
747+
}
748+
getAPI('listVirtualMachines', params).then(json => {
749+
this.vms[network.id] = json.listvirtualmachinesresponse.virtualmachine || []
750+
this.itemCounts.vms[network.id] = json.listvirtualmachinesresponse.count || 0
724751
}).finally(() => {
725752
this.fetchLoading = false
726753
})
@@ -784,7 +811,7 @@ export default {
784811
var params = {
785812
vpcid: this.resource.id,
786813
domainid: this.owner?.domainid || this.resource.domainid,
787-
account: this.owner?.projectid ? null : (this.owner?.account ? this.owner.account : this.resource.account),
814+
account: this.owner?.projectid ? null : (this.owner?.account || this.resource.account),
788815
projectid: this.owner?.projectid || null,
789816
networkOfferingId: values.networkOffering,
790817
name: values.name,

0 commit comments

Comments
 (0)