Add MAX_STATEMENT_TIME resource limit (#523)

* Add MAX_STATEMENT_TIME to resource_limits

* Move version check for resource_limits to implementations
This commit is contained in:
Maximilian Stinsky 2023-04-07 10:20:49 +02:00 committed by GitHub
commit 526e674e6f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 177 additions and 29 deletions

View file

@ -129,4 +129,151 @@
that:
- result.rowcount[0] == 1
- name: Resource limits | Drop mysql user {{ user_name_1 }} if exists
community.mysql.mysql_user:
<<: *mysql_params
name: '{{ user_name_1 }}'
host_all: true
state: absent
- name: Resource limits | Create mysql user {{ user_name_1 }} with MAX_STATEMENT_TIME in check_mode
community.mysql.mysql_user:
<<: *mysql_params
name: '{{ user_name_1 }}'
password: '{{ user_password_1 }}'
state: present
resource_limits:
MAX_QUERIES_PER_HOUR: 10
MAX_STATEMENT_TIME: 1
check_mode: true
register: result
ignore_errors: true
- name: Resource limits | Assert that create user with MAX_STATEMENT_TIME is changed for mariadb
ansible.builtin.assert:
that:
- result is changed
when: db_engine == 'mariadb'
- name: Resource limits | Assert that create user with MAX_STATEMENT_TIME is failed for mysql
ansible.builtin.assert:
that:
- result is failed
when: db_engine == 'mysql'
- name: Resource limits | Create mysql user {{ user_name_1 }} with MAX_STATEMENT_TIME in actual mode
community.mysql.mysql_user:
<<: *mysql_params
name: '{{ user_name_1 }}'
password: '{{ user_password_1 }}'
state: present
resource_limits:
MAX_QUERIES_PER_HOUR: 10
MAX_STATEMENT_TIME: 1
register: result
ignore_errors: true
- name: Resource limits | Assert that create user with MAX_STATEMENT_TIME is changed for MariaDB
ansible.builtin.assert:
that:
- result is changed
when: db_engine == 'mariadb'
- name: Resource limits | Assert that create user with MAX_STATEMENT_TIME is failed for MySQL
ansible.builtin.assert:
that:
- result is failed
when: db_engine == 'mysql'
- name: Resource limits | Retrieve user with MAX_STATEMENT_TIME
community.mysql.mysql_query:
<<: *mysql_params
query: >
SELECT User FROM mysql.user
WHERE User = '{{ user_name_1 }}'
AND Host = 'localhost'
AND max_questions = 10
AND max_statement_time = 1
register: result
when: db_engine == 'mariadb'
- name: Resource limits | Assert that rowcount is 1 with MAX_STATEMENT_TIME
ansible.builtin.assert:
that:
- result.rowcount[0] == 1
when: db_engine == 'mariadb'
- name: Resource limits | Try to set the same limits with MAX_STATEMENT_TIME again in check mode
community.mysql.mysql_user:
<<: *mysql_params
name: '{{ user_name_1 }}'
password: '{{ user_password_1 }}'
state: present
resource_limits:
MAX_QUERIES_PER_HOUR: 10
MAX_STATEMENT_TIME: 1
check_mode: true
register: result
when: db_engine == 'mariadb'
- name: Resource limits | Assert that set same limits with MAX_STATEMENT_TIME again is not changed
ansible.builtin.assert:
that:
- result is not changed
when: db_engine == 'mariadb'
- name: Resource limits | Try to set the same limits with MAX_STATEMENT_TIME again in actual mode
community.mysql.mysql_user:
<<: *mysql_params
name: '{{ user_name_1 }}'
password: '{{ user_password_1 }}'
state: present
resource_limits:
MAX_QUERIES_PER_HOUR: 10
MAX_STATEMENT_TIME: 1
register: result
when: db_engine == 'mariadb'
- name: Resource limits | Assert that set same limits with MAX_STATEMENT_TIME again in actual mode is not changed
ansible.builtin.assert:
that:
- result is not changed
when: db_engine == 'mariadb'
- name: Resource limits | Change limits with MAX_STATEMENT_TIME
community.mysql.mysql_user:
<<: *mysql_params
name: '{{ user_name_1 }}'
password: '{{ user_password_1 }}'
state: present
resource_limits:
MAX_QUERIES_PER_HOUR: 5
MAX_STATEMENT_TIME: 2
register: result
when: db_engine == 'mariadb'
- name: Resource limits | Assert limits with MAX_STATEMENT_TIME changed
ansible.builtin.assert:
that:
- result is changed
when: db_engine == 'mariadb'
- name: Resource limits | Get user limits with MAX_STATEMENT_TIME
community.mysql.mysql_query:
<<: *mysql_params
query: >
SELECT User FROM mysql.user
WHERE User = '{{ user_name_1 }}'
AND Host = 'localhost'
AND max_questions = 5
AND max_statement_time = 2
register: result
when: db_engine == 'mariadb'
- name: Resource limits | Assert limit with MAX_STATEMENT_TIME row count
ansible.builtin.assert:
that:
- result.rowcount[0] == 1
when: db_engine == 'mariadb'
when: (ansible_distribution == 'Ubuntu' and ansible_distribution_major_version >= '18') or (ansible_distribution == 'CentOS' and ansible_distribution_major_version >= '8')