From a92d8db81c7f13e46aa64be471de06054379be75 Mon Sep 17 00:00:00 2001 From: LIU Yulong Date: Mon, 22 Nov 2021 15:01:42 +0800 Subject: [PATCH] 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 --- neutronclient/v2_0/client.py | 34 +++++++++++++++++++ .../paket_rate_limit-1266a2a30f18727f.yaml | 7 ++++ 2 files changed, 41 insertions(+) create mode 100644 releasenotes/notes/paket_rate_limit-1266a2a30f18727f.yaml diff --git a/neutronclient/v2_0/client.py b/neutronclient/v2_0/client.py index c264dfd14..b64f3e685 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 000000000..9fdfc1e62 --- /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``.