neutron/neutron/extensions
Rodolfo Alonso Hernandez e135a8221d New Quota driver ``DbQuotaNoLockDriver``
This new quota driver, ``DbQuotaNoLockDriver``, does not create a lock
per (resource, project_id) but retrieves the instant (resource,
project_id) usage and the current (resource, project_id) reservations.
If the requested number of resources fit the available quota, a new
``Reservation`` register is created with the amount of units requested.

All those operations are done inside a DB transaction context. That
means the amount of resources and reservations is guaranteed inside
this transaction (depending on the DB backend isolation level defined)
and the new reservation created will not clash with other DB transation.
That will guarantee the number of resources and instant reservations
never exceed the quota limits defined for this (resource, project_id).

NOTES:
- This change tries to be as unobtrusive as possible. The new driver
  uses the same ``DbQuotaDriver`` dabatase tables (except for
  ``QuotaUsage``) and the same Quota engine API, located in
  ``neutron.quota``. However, the Quota engine resources implements some
  particular API actions like "dirty", that are not used in the new
  driver.
- The Pecan Quota enforcement hooks,
  ``neutron.pecan_wgsi.hooks.quota_enforcement``, execute actions like
  "resync", "mark_resources_dirty" or "set_resources_dirty", that has
  no meaning in the new driver.
- The isolation between the Quota engine and the Pecan hook, and the
  driver itself is not clearly defined. A refactor of the Quota engine,
  Quota service, Quota drivers and a common API between the driver and
  the engine is needed.
- If ``DbQuotaDriver`` is deprecated, ``CountableResource`` and
  ``TrackedResource`` will be joined in a single class. This resource
  class will have a count method (countable) or a hard dependency on a
  database table (tracked resource). The only difference will be the
  "count" method implementation.

Closes-Bug: #1926787

Change-Id: I4f98c6fcd781459fd7150aff426d19c7fdfa98c1
2021-05-20 07:55:59 +00:00
..
__init__.py Removing vim header lines 2014-04-01 10:38:31 -04:00
_standard_attr_segment_lib.py Replace git.openstack.org URLs with opendev.org URLs 2019-04-23 10:00:45 +08:00
address_group.py Support Address Group CRUD as extensions 2020-08-12 13:59:31 -05:00
address_scope.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
admin_state_down_before_update.py Remove left over code for admin_state_down_before_update 2020-11-09 12:48:53 +00:00
agent.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
agent_resources_synced.py New agent attribute: resources_synced 2019-02-21 13:45:15 +01:00
allowedaddresspairs.py use addr pairs api def from lib 2017-11-13 11:56:32 -07:00
auto_allocated_topology.py use neutron-lib auto allocated topology apidef 2017-07-28 08:38:45 -06:00
availability_zone.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
availability_zone_filter.py Remove left over code for availability_zone_filter 2020-11-18 19:27:24 +01:00
data_plane_status.py use APIExtensionDescriptor for plugins with defs in lib 2017-07-20 20:42:56 +00:00
default_subnetpools.py use default subnetpool api def from lib 2017-10-20 14:44:10 -06:00
dhcpagentscheduler.py Config option to disable the DHCP functions 2021-03-05 14:35:29 +08:00
dns.py use dns api def from neutron-lib 2017-10-20 16:38:33 -06:00
dns_domain_ports.py use dns domain ports api def from neutron-lib 2017-11-16 12:02:04 +00:00
dvr.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
empty_string_filtering.py Use extension 'empty-string-filtering' from neutron-lib 2018-09-25 15:16:14 +00:00
expose_l3_conntrack_helper.py Conntrack Helper - Plugin 2019-08-29 10:41:04 +02:00
expose_port_forwarding_in_fip.py [server side] Expose port forwardings in FIP API 2018-07-27 17:25:10 +08:00
external_net.py use external net api def from lib 2017-10-30 11:16:33 -06:00
extra_dhcp_opt.py use extra_dhcp_opt api-def from neutron-lib 2017-05-31 15:06:35 +00:00
extraroute.py use extra route api def from lib 2017-11-02 13:11:25 -06:00
extraroute_atomic.py New extension: extraroute-atomic 2019-08-09 13:24:44 +02:00
filter_validation.py Remove left over code for filter_validation 2020-11-26 16:38:02 +01:00
fip_pf_description.py Add fip_pf_description extension to be supported by service plugin 2020-03-11 14:10:13 +00:00
fip_port_details.py Use extension fip-port-details from neutron-lib 2018-05-07 15:01:58 +00:00
flavors.py use flavors api def from neutron-lib 2017-11-17 10:21:28 -07:00
floating_ip_port_forwarding.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
floatingip_pools.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
ip_allocation.py use ip allocation api def from neutron-lib 2017-11-09 13:02:01 -07:00
ip_substring_port_filtering.py Use ip_substring_port_filtering from neutron-lib 2018-02-13 22:47:15 +00:00
l2_adjacency.py use l2 adjacency api def from neutron-lib 2017-11-03 13:10:48 -06:00
l3.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
l3_conntrack_helper.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
l3_ext_gw_mode.py use l3 ext gw mode api def from neutron-lib 2017-11-17 07:02:45 -07:00
l3_ext_ha_mode.py use l3 ext ha mode api def from neutron-lib 2017-11-09 15:34:43 -07:00
l3_flavors.py use l3 flavors api def from neutron-lib 2017-11-13 11:15:08 -07:00
l3_port_ip_change_not_allowed.py Prevent some L3 ports change IP address 2018-12-13 14:24:23 +00:00
l3agentscheduler.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
logging.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
metering.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
metering_source_and_destination_fields.py Add source_ip_prefix and destination_ip_prefix to metering label rules 2020-09-29 09:06:03 -03:00
multiprovidernet.py use multiprovidernet api definition from neutron-lib 2018-03-28 07:07:58 -06:00
netmtu.py use net mtu api def from neutron-lib 2017-11-14 14:47:47 -07:00
netmtu_writable.py use net mtu api writable def from neutron-lib 2017-11-14 15:28:28 -07:00
network_availability_zone.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
network_ip_availability.py Remove population of is_filter keyword 2018-10-02 20:45:19 +00:00
network_segment_range.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
pagination.py use pagination api def from neutron-lib 2017-11-06 14:43:13 -07:00
port_device_profile.py Add port device profile extension 2021-01-22 16:17:30 +00:00
port_mac_address_regenerate.py Remove local port regenerate mac address apidef 2019-03-26 15:28:14 +00:00
port_numa_affinity_policy.py Add port NUMA affinity policy 2020-11-13 15:49:34 +00:00
port_resource_request.py Introduce Port resource request extension 2018-10-17 07:34:36 +00:00
portbindings.py use neutron_lib's portbindings api-def 2017-03-31 09:16:22 -06:00
portbindings_extended.py Remove population of is_filter keyword 2018-10-02 20:45:19 +00:00
portsecurity.py use neutron-lib port security api-def 2017-05-01 11:45:42 -06:00
project_id.py use project id api def from neutron-lib 2017-11-08 12:04:24 -07:00
providernet.py Change provider network segmentation ID 2019-04-01 12:55:50 +00:00
qos.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
qos_bw_limit_direction.py Support that an extension extends a sub-resource 2017-11-15 08:59:45 +01:00
qos_bw_minimum_ingress.py Ingress direction for min bandwidth rule 2018-10-09 08:08:05 +00:00
qos_default.py use qos default api def from neutron-lib 2018-02-12 11:13:04 -07:00
qos_fip.py [OVN] Implement floating IP QoS in OVN backend 2020-09-01 07:27:48 +00:00
qos_gateway_ip.py [L3][QoS] Neutron server side router gateway IP QoS 2018-12-01 17:45:46 +08:00
qos_port_network_policy.py Add "qos_network_policy_id" to port definition 2020-01-17 17:57:11 +00:00
qos_rule_type_details.py use qos rule type details api def from neutron-lib 2018-02-22 11:41:13 -07:00
qos_rules_alias.py Define qos-rules-alias extension 2019-03-21 15:06:10 +00:00
quotasv2.py New Quota driver ``DbQuotaNoLockDriver`` 2021-05-20 07:55:59 +00:00
quotasv2_detail.py New Quota driver ``DbQuotaNoLockDriver`` 2021-05-20 07:55:59 +00:00
rbac.py Allow sharing of subnet pools via RBAC mechanism 2020-04-09 19:02:47 +03:00
rbac_address_group.py Allow sharing of address groups via RBAC mechanism 2021-03-01 18:28:31 -06:00
rbac_address_scope.py Allow sharing of address scopes via RBAC mechanism 2020-03-19 16:51:39 +02:00
rbac_security_groups.py Allow sharing of security groups via RBAC mechanism 2019-03-09 17:30:14 -06:00
rbac_subnetpool.py Allow sharing of subnet pools via RBAC mechanism 2020-04-09 19:02:47 +03:00
revisionifmatch.py use revision if match api def from neutron-lib 2018-03-01 09:20:22 -07:00
revisions.py Allow sub-resources to have standard attributes 2018-07-04 20:52:37 +00:00
router_availability_zone.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
routerservicetype.py use router service type api def from neutron-lib 2018-02-22 10:57:39 -07:00
security_groups_normalized_cidr.py Add normalized_cidr column to SG rules 2021-01-07 12:23:59 +01:00
security_groups_port_filtering.py use security_groups_port_filtering from neutron-lib 2018-08-30 08:49:40 -06:00
security_groups_remote_address_group.py Support remote address group in SG rules 2020-11-25 10:34:02 -06:00
securitygroup.py Support remote address group in SG rules 2020-11-25 10:34:02 -06:00
segment.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
segments_peer_subnet_host_routes.py Remove local segment-peer-subnet host-route apidef 2019-03-19 00:40:29 +01:00
servicetype.py use neutron-lib servicetype api def 2018-03-27 14:32:44 -06:00
sorting.py use sorting api def from neutron-lib 2018-02-20 14:35:07 -07:00
standard_attr_segment.py Add a shim extension standard-attr-segment 2018-04-18 19:25:57 +00:00
standardattrdescription.py Allow sub-resources to have standard attributes 2018-07-04 20:52:37 +00:00
stateful_security_group.py Support for stateless security groups 2020-03-03 16:53:42 +01:00
stdattrs_common.py Allow sub-resources to have standard attributes 2018-07-04 20:52:37 +00:00
subnet_dns_publish_fixed_ip.py Allow to select subnets to publish DNS records 2019-12-14 13:36:09 +00:00
subnet_onboard.py Enable adoption of subnets into a subnet pool 2019-02-26 11:13:09 -06:00
subnet_segmentid_writable.py Allow setting network-segment on subnet update 2018-05-24 01:09:02 +02:00
subnet_service_types.py use subnet_service_types extension from neutron-lib 2019-06-18 11:24:18 -06:00
subnetallocation.py Use ExtensionDescriptor from neutron-lib 2016-12-02 14:16:06 -05:00
subnetpool_prefix_ops.py Implement subnetpool prefix operations 2019-07-01 14:22:51 +00:00
tag_ports_during_bulk_creation.py Implement tagging during bulk port creation 2020-01-28 18:23:37 -06:00
tagging.py Allow 255 character strings in tags 2021-03-30 10:44:39 +02:00
timestamp.py Allow sub-resources to have standard attributes 2018-07-04 20:52:37 +00:00
trunk.py use APIExtensionDescriptor for plugins with defs in lib 2017-07-20 20:42:56 +00:00
trunk_details.py use APIExtensionDescriptor for plugins with defs in lib 2017-07-20 20:42:56 +00:00
uplink_status_propagation.py Add propagate_uplink_status to port 2018-11-29 19:33:16 +00:00
vlantransparent.py use vlantransparent api def from neutron-lib 2018-02-20 07:43:03 +00:00