fix: update the qos policy column in the floating ip list page

1. Update the qos policy name in the floating ip list page, if the user has the admin role, the user can fetch all the qos polices
2. Update the qos policy column title, and support qos policy id and name in the download data

Change-Id: I96a18f24ef2f2e6c09d56eb5ae980202c31b98dd
This commit is contained in:
zhangjingwei 2022-10-18 16:52:29 +08:00
parent 824267546f
commit 47c34e1100
4 changed files with 29 additions and 20 deletions

View File

@ -1863,6 +1863,7 @@
"QoS Policy": "QoS Policy", "QoS Policy": "QoS Policy",
"QoS Policy Detail": "QoS Policy Detail", "QoS Policy Detail": "QoS Policy Detail",
"QoS Policy ID": "QoS Policy ID", "QoS Policy ID": "QoS Policy ID",
"QoS Policy ID/Name": "QoS Policy ID/Name",
"QoS Spec": "QoS Spec", "QoS Spec": "QoS Spec",
"QoS Spec ID": "QoS Spec ID", "QoS Spec ID": "QoS Spec ID",
"QoS Specs": "QoS Specs", "QoS Specs": "QoS Specs",

View File

@ -1863,6 +1863,7 @@
"QoS Policy": "QoS策略", "QoS Policy": "QoS策略",
"QoS Policy Detail": "QoS策略详情", "QoS Policy Detail": "QoS策略详情",
"QoS Policy ID": "QoS策略ID", "QoS Policy ID": "QoS策略ID",
"QoS Policy ID/Name": "QoS策略ID/名称",
"QoS Spec": "QoS规格", "QoS Spec": "QoS规格",
"QoS Spec ID": "QoS规格ID", "QoS Spec ID": "QoS规格ID",
"QoS Specs": "QoS规格", "QoS Specs": "QoS规格",

View File

@ -260,7 +260,7 @@ export class FloatingIps extends Base {
boldName: true, boldName: true,
}, },
{ {
title: t('QoS Policy'), title: t('QoS Policy ID/Name'),
dataIndex: 'qos_policy_name', dataIndex: 'qos_policy_name',
isLink: true, isLink: true,
routeName: this.getRouteName('networkQosDetail'), routeName: this.getRouteName('networkQosDetail'),

View File

@ -18,7 +18,6 @@ import { action, observable } from 'mobx';
import globalRouterStore from 'stores/neutron/router'; import globalRouterStore from 'stores/neutron/router';
import globalServerStore from 'stores/nova/instance'; import globalServerStore from 'stores/nova/instance';
import globalLbaasStore from 'stores/octavia/loadbalancer'; import globalLbaasStore from 'stores/octavia/loadbalancer';
import globalQoSPolicyStore from 'stores/neutron/qos-policy';
import { qosEndpoint } from 'client/client/constants'; import { qosEndpoint } from 'client/client/constants';
export class FloatingIpStore extends Base { export class FloatingIpStore extends Base {
@ -26,6 +25,10 @@ export class FloatingIpStore extends Base {
return client.neutron.floatingips; return client.neutron.floatingips;
} }
get qosClient() {
return client.neutron.qosPolicies;
}
get listFilterByProject() { get listFilterByProject() {
return true; return true;
} }
@ -59,6 +62,19 @@ export class FloatingIpStore extends Base {
async listDidFetch(items, allProjects, filters) { async listDidFetch(items, allProjects, filters) {
const { qos_policy_id } = filters; const { qos_policy_id } = filters;
const hasQos = items.find((it) => !!it.qos_policy_id);
if (hasQos && this.enableQos) {
const qosResult = await this.qosClient.list();
const { policies = [] } = qosResult || {};
items.forEach((it) => {
if (it.qos_policy_id) {
const qosItem = policies.find((p) => p.id === it.qos_policy_id);
if (qosItem) {
it.qos_policy_name = qosItem.name;
}
}
});
}
if (!qos_policy_id) { if (!qos_policy_id) {
return items; return items;
} }
@ -75,26 +91,17 @@ export class FloatingIpStore extends Base {
timeFilter, timeFilter,
...filters ...filters
} = {}) { } = {}) {
const qosReq = this.enableQos ? globalQoSPolicyStore.fetchList() : null; const allData = await this.fetchListByPage({
const [qosResult, allData] = await Promise.all([ limit,
qosReq, page,
this.fetchListByPage({ sortKey,
limit, sortOrder,
page, conditions,
sortKey, timeFilter,
sortOrder, ...filters,
conditions, });
timeFilter,
...filters,
}),
]);
const qosPolicies = qosResult || [];
const promises = []; const promises = [];
allData.forEach((data) => { allData.forEach((data) => {
const qos = qosPolicies.find((it) => it.id === data.qos_policy_id);
if (qos) {
data.qos_policy_name = qos.name;
}
if ( if (
data.port_details && data.port_details &&
data.port_details.device_owner === 'network:router_gateway' data.port_details.device_owner === 'network:router_gateway'