feat: support quota info when create security group rule

1. Show quota info when create security group rule
2. Add left quota check when create security group rule

Change-Id: Iab21d57e4e2fd5c3973281256d0aa79d438a2e8c
This commit is contained in:
Jingwei.Zhang 2022-06-23 14:51:15 +08:00
parent 919840a1e0
commit 0a7c3a3f36

View File

@ -16,6 +16,7 @@ import { inject, observer } from 'mobx-react';
import { ModalAction } from 'containers/Action';
import globalSecurityGroupRuleStore from 'stores/neutron/security-rule';
import globalSecurityGroupStore from 'stores/neutron/security-group';
import globalProjectStore from 'stores/keystone/project';
import { ipProtocols } from 'resources/neutron/security-group-rule';
import { has } from 'lodash';
import { cidrAllValidate } from 'utils/validate';
@ -41,9 +42,13 @@ export class Create extends ModalAction {
}
init() {
this.state.quota = {};
this.state.quotaLoading = true;
this.store = globalSecurityGroupRuleStore;
this.groupStore = globalSecurityGroupStore;
this.projectStore = globalProjectStore;
this.getAllGroups();
this.getQuota();
}
static policy = 'create_security_group_rule';
@ -62,6 +67,45 @@ export class Create extends ModalAction {
}));
}
static get disableSubmit() {
const { neutronQuota: { security_group_rule: { left = 0 } = {} } = {} } =
globalProjectStore;
return left === 0;
}
static get showQuota() {
return true;
}
get showQuota() {
return true;
}
async getQuota() {
const result = await this.projectStore.fetchProjectNeutronQuota();
const { security_group_rule: quota = {} } = result || {};
this.setState({
quota,
quotaLoading: false,
});
}
get quotaInfo() {
const { quota = {}, quotaLoading } = this.state;
if (quotaLoading) {
return [];
}
const { left = 0 } = quota || {};
const add = left === 0 ? 0 : 1;
const data = {
...quota,
add,
name: 'security_group_rule',
title: t('Security Group Rule'),
};
return [data];
}
get defaultRules() {
return {
custom_tcp: {