summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLIU Yulong <i@liuyulong.me>2021-11-22 15:01:42 +0800
committerliuyulong <i@liuyulong.me>2021-11-24 00:23:08 +0000
commita92d8db81c7f13e46aa64be471de06054379be75 (patch)
tree26f066fc35ddcd359b39da1a5b7d6c61dd6838cc
parent3a65712b451d3eed93cbf7eef773d46c49df6358 (diff)
downloadpython-neutronclient-a92d8db81c7f13e46aa64be471de06054379be75.tar.gz
Add CURD actions for packet rate limit rule
Neutron added new QoS rule [1] for packet rate limit. Neutron fullstack test cases [2] rely on the neutron client to interact with the neutron-server (API), so for new QoS rule `packet rate limit`, we add the needed methods for new cases of the QoS driver testing. [1] https://docs.openstack.org/api-ref/network/v2/index.html#qos-packet-rate-limit-rules [2] https://github.com/openstack/neutron/blob/master/neutron/tests/fullstack/resources/process.py#L24 Change-Id: I0ad236c9e585a25fbd405813ac48898a2df897d2
-rw-r--r--neutronclient/v2_0/client.py34
-rw-r--r--releasenotes/notes/paket_rate_limit-1266a2a30f18727f.yaml7
2 files changed, 41 insertions, 0 deletions
diff --git a/neutronclient/v2_0/client.py b/neutronclient/v2_0/client.py
index c264dfd..b64f3e6 100644
--- a/neutronclient/v2_0/client.py
+++ b/neutronclient/v2_0/client.py
@@ -619,6 +619,10 @@ class Client(ClientBase):
qos_policy_path = "/qos/policies/%s"
qos_bandwidth_limit_rules_path = "/qos/policies/%s/bandwidth_limit_rules"
qos_bandwidth_limit_rule_path = "/qos/policies/%s/bandwidth_limit_rules/%s"
+ qos_packet_rate_limit_rules_path = \
+ "/qos/policies/%s/packet_rate_limit_rules"
+ qos_packet_rate_limit_rule_path = \
+ "/qos/policies/%s/packet_rate_limit_rules/%s"
qos_dscp_marking_rules_path = "/qos/policies/%s/dscp_marking_rules"
qos_dscp_marking_rule_path = "/qos/policies/%s/dscp_marking_rules/%s"
qos_minimum_bandwidth_rules_path = \
@@ -708,6 +712,7 @@ class Client(ClientBase):
'qos_policies': 'qos_policy',
'policies': 'policy',
'bandwidth_limit_rules': 'bandwidth_limit_rule',
+ 'packet_rate_limit_rules': 'packet_rate_limit_rule',
'minimum_bandwidth_rules': 'minimum_bandwidth_rule',
'rules': 'rule',
'dscp_marking_rules': 'dscp_marking_rule',
@@ -1972,6 +1977,35 @@ class Client(ClientBase):
return self.post(self.qos_minimum_bandwidth_rules_path % policy,
body=body)
+ def list_packet_rate_limit_rules(self, policy_id, retrieve_all=True,
+ **_params):
+ """Fetches a list of all packet rate limit rules for the given policy
+
+ """
+ return self.list('packet_rate_limit_rules',
+ self.qos_packet_rate_limit_rules_path %
+ policy_id, retrieve_all, **_params)
+
+ def show_packet_rate_limit_rule(self, rule, policy, body=None):
+ """Fetches information of a certain packet rate limit rule."""
+ return self.get(self.qos_packet_rate_limit_rule_path %
+ (policy, rule), body=body)
+
+ def create_packet_rate_limit_rule(self, policy, body=None):
+ """Creates a new packet rate limit rule."""
+ return self.post(self.qos_packet_rate_limit_rules_path % policy,
+ body=body)
+
+ def update_packet_rate_limit_rule(self, rule, policy, body=None):
+ """Updates a packet rate limit rule."""
+ return self.put(self.qos_packet_rate_limit_rule_path %
+ (policy, rule), body=body)
+
+ def delete_packet_rate_limit_rule(self, rule, policy):
+ """Deletes a packet rate limit rule."""
+ return self.delete(self.qos_packet_rate_limit_rule_path %
+ (policy, rule))
+
def update_minimum_bandwidth_rule(self, rule, policy, body=None):
"""Updates a minimum bandwidth rule."""
return self.put(self.qos_minimum_bandwidth_rule_path %
diff --git a/releasenotes/notes/paket_rate_limit-1266a2a30f18727f.yaml b/releasenotes/notes/paket_rate_limit-1266a2a30f18727f.yaml
new file mode 100644
index 0000000..9fdfc1e
--- /dev/null
+++ b/releasenotes/notes/paket_rate_limit-1266a2a30f18727f.yaml
@@ -0,0 +1,7 @@
+---
+features:
+ - |
+ Added new client methods for QoS packet rate limit rule:
+ ``list_packet_rate_limit_rules``, ``show_packet_rate_limit_rule``,
+ ``create_packet_rate_limit_rule``, ``update_packet_rate_limit_rule``,
+ ``delete_packet_rate_limit_rule``.