def check_security_group_rule_quota( cls, proj_dict, db_conn, rule_count): quota_counter = cls.server.quota_counter obj_type = 'security_group_rule' quota_limit = QuotaHelper.get_quota_limit(proj_dict, obj_type) if (rule_count and quota_limit >= 0): path_prefix = _DEFAULT_ZK_COUNTER_PATH_PREFIX + proj_dict['uuid'] path = path_prefix + "/" + obj_type if not quota_counter.get(path): # Init quota counter for security group rule QuotaHelper._zk_quota_counter_init( path_prefix, {obj_type: quota_limit}, proj_dict['uuid'], db_conn, quota_counter) ok, result = QuotaHelper.verify_quota( obj_type, quota_limit, quota_counter[path], count=rule_count) if not ok: msg = "security_group_entries: %d" % quota_limit return False, (QUOTA_OVER_ERROR_CODE, msg) def undo(): # Revert back quota count quota_counter[path] -= rule_count get_context().push_undo(undo) return True, ""
def check_security_group_rule_quota(cls, proj_dict, db_conn, rule_count): quota_counter = cls.server.quota_counter obj_type = 'security_group_rule' quota_limit = QuotaHelper.get_quota_limit(proj_dict, obj_type) if (rule_count and quota_limit >= 0): path_prefix = _DEFAULT_ZK_COUNTER_PATH_PREFIX + proj_dict['uuid'] path = path_prefix + "/" + obj_type if not quota_counter.get(path): # Init quota counter for security group rule QuotaHelper._zk_quota_counter_init(path_prefix, {obj_type: quota_limit}, proj_dict['uuid'], db_conn, quota_counter) ok, result = QuotaHelper.verify_quota(obj_type, quota_limit, quota_counter[path], count=rule_count) if not ok: msg = "security_group_entries: %d" % quota_limit return False, (QUOTA_OVER_ERROR_CODE, msg) def undo(): # Revert back quota count quota_counter[path] -= rule_count get_context().push_undo(undo) return True, ""
def check_openstack_firewall_group_quota(cls, obj_dict, deleted=False): obj_type = 'firewall_group' if (not obj_dict['id_perms'].get('user_visible', True) or obj_dict.get('parent_type') != Project.object_type): return True, '' ok, result = QuotaHelper.get_project_dict_for_quota( obj_dict['parent_uuid'], cls.db_conn) if not ok: return False, result project = result quota_limit = QuotaHelper.get_quota_limit(project, obj_type) if quota_limit < 0: return True, '' quota_count = 1 if deleted: quota_count = -1 path_prefix = _DEFAULT_ZK_COUNTER_PATH_PREFIX + project['uuid'] path = path_prefix + "/" + obj_type if not cls.server.quota_counter.get(path): QuotaHelper._zk_quota_counter_init( path_prefix, {obj_type: quota_limit}, project['uuid'], cls.db_conn, cls.server.quota_counter) return QuotaHelper.verify_quota( obj_type, quota_limit, cls.server.quota_counter[path], quota_count) def undo(): # revert back counter in case of any failure during creation if not deleted: cls.server.quota_counter[path] -= 1 else: cls.server.quota_counter[path] += 1 get_context().push_undo(undo) return True, ''