From d33fb18dbe7f3613407bd4043f10f25d8540c021 Mon Sep 17 00:00:00 2001 From: Bryan Lima Date: Mon, 15 Apr 2024 15:58:16 -0300 Subject: [PATCH 1/6] Add ownership selection when deploying VMs --- ui/src/views/compute/AssignInstance.vue | 167 +------------ ui/src/views/compute/DeployVM.vue | 84 ++++++- .../compute/wizard/OwnershipSelection.vue | 228 ++++++++++++++++++ 3 files changed, 311 insertions(+), 168 deletions(-) create mode 100644 ui/src/views/compute/wizard/OwnershipSelection.vue diff --git a/ui/src/views/compute/AssignInstance.vue b/ui/src/views/compute/AssignInstance.vue index 9726dc215774..873d10f57704 100644 --- a/ui/src/views/compute/AssignInstance.vue +++ b/ui/src/views/compute/AssignInstance.vue @@ -29,86 +29,7 @@ -
-

{{ $t('label.accounttype') }}

- - {{ $t('label.account') }} - {{ $t('label.project') }} - -
- -
-

*{{ $t('label.domain') }}

- - - - - - {{ domain.path || domain.name || domain.description }} - - - -
- - - - +

{{ $t('label.network') }}

@@ -146,6 +67,7 @@ From 997760ce759b31871e7672ae1b576d60a129d2cd Mon Sep 17 00:00:00 2001 From: Bryan Lima Date: Tue, 16 Apr 2024 14:38:34 -0300 Subject: [PATCH 2/6] Add small fixes when changing owner --- ui/src/views/compute/DeployVM.vue | 9 ++- .../compute/wizard/OwnershipSelection.vue | 61 ++++++++++++++----- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/ui/src/views/compute/DeployVM.vue b/ui/src/views/compute/DeployVM.vue index 8cc151ccb118..c0e3c90c1422 100644 --- a/ui/src/views/compute/DeployVM.vue +++ b/ui/src/views/compute/DeployVM.vue @@ -2221,17 +2221,24 @@ export default { }) }, fetchOwnerOptions (OwnerOptions) { - this.owner = {} + this.owner = { + projectid: null, + domainid: store.getters.userInfo.domainid, + account: store.getters.userInfo.account + } if (OwnerOptions.selectedAccountType === this.$t('label.account')) { if (!OwnerOptions.selectedAccount) { return } this.owner.account = OwnerOptions.selectedAccount this.owner.domainid = OwnerOptions.selectedDomain + this.owner.projectid = null } else if (OwnerOptions.selectedAccountType === this.$t('label.project')) { if (!OwnerOptions.selectedProject) { return } + this.owner.account = null + this.owner.domainid = null this.owner.projectid = OwnerOptions.selectedProject } this.resetData() diff --git a/ui/src/views/compute/wizard/OwnershipSelection.vue b/ui/src/views/compute/wizard/OwnershipSelection.vue index eef0963a8046..afdf2320fbb2 100644 --- a/ui/src/views/compute/wizard/OwnershipSelection.vue +++ b/ui/src/views/compute/wizard/OwnershipSelection.vue @@ -19,6 +19,7 @@ { this.domains = response.listdomainsresponse.domain - this.selectedDomain = this.domains[0].id - this.fetchAccounts() - this.fetchProjects() + if (this.override) { + this.domains = this.domains.filter(item => this.override.domains.has(item.id)) + } + if (this.domains.length === 0) { + this.selectedDomain = null + this.selectedProject = null + this.selectedAccount = null + return + } + const domainIds = this.domains?.map(domain => domain.id) + const ownerDomainId = this.$store.getters.project?.domainid || this.$store.getters.userInfo.domainid + this.selectedDomain = domainIds?.includes(ownerDomainId) ? ownerDomainId : this.domains?.[0]?.id + this.changeDomain() }) .catch((error) => { this.$notifyError(error) @@ -181,6 +197,17 @@ export default { }) .then((response) => { this.accounts = response.listaccountsresponse.account + if (this.override?.accounts && this.accounts) { + this.accounts = this.accounts.filter(item => this.override.accounts.has(item.name)) + } + const accountNames = this.accounts.map(account => account.name) + if (this.selectedDomain === this.$store.getters.userInfo.domainid && accountNames.includes(this.$store.getters.userInfo.account)) { + this.selectedAccount = this.$store.getters.userInfo.account + } else { + this.selectedAccount = this.accounts?.[0]?.name + } + this.selectedProject = null + this.emitChangeEvent() }) .catch((error) => { this.$notifyError(error) @@ -201,6 +228,12 @@ export default { }) .then((response) => { this.projects = response.listprojectsresponse.project + if (this.override?.projects && this.projects) { + this.projects = this.projects.filter(item => this.override.projects.has(item.id)) + } + this.selectedProject = this.projects?.map(project => project.id)?.includes(this.$store.getters.project?.id) ? this.$store.getters.project?.id : this.projects?.[0]?.id + this.selectedAccount = null + this.emitChangeEvent() }) .catch((error) => { this.$notifyError(error) @@ -210,17 +243,13 @@ export default { }) }, changeDomain () { - this.selectedAccount = null - this.selectedProject = null - this.fetchAccounts() - this.fetchProjects() - }, - changeAccount () { - this.selectedProject = null - this.$emit('fetch-owner', this) + if (this.selectedAccountType === this.$t('label.account')) { + this.fetchAccounts() + } else { + this.fetchProjects() + } }, - changeProject () { - this.selectedAccount = null + emitChangeEvent () { this.$emit('fetch-owner', this) } } From 93f76fd995a91b4538200d550547197358ee8921 Mon Sep 17 00:00:00 2001 From: Bryan Lima Date: Tue, 16 Apr 2024 14:44:03 -0300 Subject: [PATCH 3/6] Present affinity groups for the selected account --- ui/src/views/compute/DeployVM.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/src/views/compute/DeployVM.vue b/ui/src/views/compute/DeployVM.vue index c0e3c90c1422..3e460ff5e491 100644 --- a/ui/src/views/compute/DeployVM.vue +++ b/ui/src/views/compute/DeployVM.vue @@ -1145,6 +1145,9 @@ export default { options: { page: 1, pageSize: 10, + account: this.owner.account, + domainid: this.owner.domainid, + projectid: this.owner.projectid, keyword: undefined, listall: false } From 3945144d847708d51a7f021918284535af149cad Mon Sep 17 00:00:00 2001 From: Bryan Lima Date: Tue, 23 Apr 2024 10:47:23 -0300 Subject: [PATCH 4/6] Add ownership to isolated and L2 networks forms --- ui/public/locales/en.json | 1 + ui/public/locales/pt_BR.json | 1 + .../compute/wizard/OwnershipSelection.vue | 2 +- .../network/CreateIsolatedNetworkForm.vue | 172 ++++-------------- ui/src/views/network/CreateL2NetworkForm.vue | 145 ++++----------- 5 files changed, 74 insertions(+), 247 deletions(-) diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json index 8ff510865a60..0284bc7639f4 100644 --- a/ui/public/locales/en.json +++ b/ui/public/locales/en.json @@ -1532,6 +1532,7 @@ "label.ovmnetworklabel": "OVM traffic label", "label.ovs": "OVS", "label.owner.account": "Owner Account", +"label.owner.type": "Owner type", "label.owners": "Owners", "label.pa": "Palo Alto", "label.page": "page", diff --git a/ui/public/locales/pt_BR.json b/ui/public/locales/pt_BR.json index a3aec03bf26d..0666f7ba0f75 100644 --- a/ui/public/locales/pt_BR.json +++ b/ui/public/locales/pt_BR.json @@ -1155,6 +1155,7 @@ "label.ovmnetworklabel": "R\u00f3tulo de tr\u00e1fego OVM", "label.ovs": "OVS", "label.owner.account": "Dono da conta", +"label.owner.type": "Tipo de dono", "label.owners": "Donos", "label.pa": "Palo Alto", "label.page": "p\u00e1gina", diff --git a/ui/src/views/compute/wizard/OwnershipSelection.vue b/ui/src/views/compute/wizard/OwnershipSelection.vue index afdf2320fbb2..0d914de854c4 100644 --- a/ui/src/views/compute/wizard/OwnershipSelection.vue +++ b/ui/src/views/compute/wizard/OwnershipSelection.vue @@ -17,7 +17,7 @@