diff --git a/ansible/roles/octavia/handlers/main.yml b/ansible/roles/octavia/handlers/main.yml index 139f63bad6b46768783e8793824bdc5759daf4bf..44372f35061690b8a90de7b5a462972b0e2548ae 100644 --- a/ansible/roles/octavia/handlers/main.yml +++ b/ansible/roles/octavia/handlers/main.yml @@ -5,6 +5,7 @@ service: "{{ octavia_services[service_name] }}" config_json: "{{ octavia_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}" octavia_conf: "{{ octavia_confs.results|selectattr('item.key', 'equalto', service_name)|first }}" + policy_overwriting: "{{ octavia_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}" octavia_api_container: "{{ check_octavia_containers.results|selectattr('item.key', 'equalto', service_name)|first }}" become: true kolla_docker: @@ -20,6 +21,7 @@ - service.enabled | bool - config_json.changed | bool or octavia_conf.changed | bool + or policy_overwriting.changed | bool or octavia_api_container.changed | bool - name: Restart octavia-health-manager container @@ -28,6 +30,7 @@ service: "{{ octavia_services[service_name] }}" config_json: "{{ octavia_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}" octavia_conf: "{{ octavia_confs.results|selectattr('item.key', 'equalto', service_name)|first }}" + policy_overwriting: "{{ octavia_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}" octavia_health_manager_container: "{{ check_octavia_containers.results|selectattr('item.key', 'equalto', service_name)|first }}" become: true kolla_docker: @@ -43,6 +46,7 @@ - service.enabled | bool - config_json.changed | bool or octavia_conf.changed | bool + or policy_overwriting.changed | bool or octavia_health_manager_certificate.changed | bool or octavia_health_manager_container.changed | bool @@ -52,6 +56,7 @@ service: "{{ octavia_services[service_name] }}" config_json: "{{ octavia_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}" octavia_conf: "{{ octavia_confs.results|selectattr('item.key', 'equalto', service_name)|first }}" + policy_overwriting: "{{ octavia_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}" octavia_housekeeping_container: "{{ check_octavia_containers.results|selectattr('item.key', 'equalto', service_name)|first }}" become: true kolla_docker: @@ -67,6 +72,7 @@ - service.enabled | bool - config_json.changed | bool or octavia_conf.changed | bool + or policy_overwriting.changed | bool or octavia_housekeeping_certificate.changed | bool or octavia_housekeeping_container.changed | bool @@ -76,6 +82,7 @@ service: "{{ octavia_services[service_name] }}" config_json: "{{ octavia_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}" octavia_conf: "{{ octavia_confs.results|selectattr('item.key', 'equalto', service_name)|first }}" + policy_overwriting: "{{ octavia_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}" octavia_worker_container: "{{ check_octavia_containers.results|selectattr('item.key', 'equalto', service_name)|first }}" become: true kolla_docker: @@ -91,5 +98,6 @@ - service.enabled | bool - config_json.changed | bool or octavia_conf.changed | bool + or policy_overwriting.changed | bool or octavia_worker_certificate.changed | bool or octavia_worker_container.changed | bool diff --git a/ansible/roles/octavia/tasks/config.yml b/ansible/roles/octavia/tasks/config.yml index 435bf46eb56047d4e42ad9348c5af77ec0dd3c69..e811c4aa0910e7f3a8660f7a84c11f25130f8acb 100644 --- a/ansible/roles/octavia/tasks/config.yml +++ b/ansible/roles/octavia/tasks/config.yml @@ -12,6 +12,38 @@ - item.value.enabled | bool with_dict: "{{ octavia_services }}" +- name: Check if policies shall be overwritten + local_action: stat path="{{ item }}" + run_once: True + register: octavia_policy + with_first_found: + - files: "{{ supported_policy_format_list }}" + paths: + - "{{ node_custom_config }}/octavia/" + skip: true + +- name: Set octavia policy file + set_fact: + octavia_policy_file: "{{ octavia_policy.results.0.stat.path | basename }}" + octavia_policy_file_path: "{{ octavia_policy.results.0.stat.path }}" + when: + - octavia_policy.results + +- name: Copying over existing policy file + template: + src: "{{ octavia_policy_file_path }}" + dest: "{{ node_config_directory }}/{{ item.key }}/{{ octavia_policy_file }}" + mode: "0660" + become: true + register: octavia_policy_overwriting + when: + - octavia_policy_file is defined + - inventory_hostname in groups[item.value.group] + - item.value.enabled | bool + with_dict: "{{ octavia_services }}" + notify: + - "Restart {{ item.key }} container" + - name: Copying over config.json files for services template: src: "{{ item.key }}.json.j2" diff --git a/ansible/roles/octavia/templates/octavia-api.json.j2 b/ansible/roles/octavia/templates/octavia-api.json.j2 index ede67a722bba346d7675367e9fe6e1c7b32fddde..0e315bebc88f352584a861a08c7e24c1b4c73cb7 100644 --- a/ansible/roles/octavia/templates/octavia-api.json.j2 +++ b/ansible/roles/octavia/templates/octavia-api.json.j2 @@ -6,6 +6,12 @@ "dest": "/etc/octavia/octavia.conf", "owner": "octavia", "perm": "0600" - } + }{% if octavia_policy_file is defined %}, + { + "source": "{{ container_config_directory }}/{{ octavia_policy_file }}", + "dest": "/etc/octavia/{{ octavia_policy_file }}", + "owner": "octavia", + "perm": "0600" + }{% endif %} ] } diff --git a/ansible/roles/octavia/templates/octavia.conf.j2 b/ansible/roles/octavia/templates/octavia.conf.j2 index 468417a36a87f8f0dc6f94102129a712341ec79c..da03227ada1de91133f2fd40e900a1c820300e99 100644 --- a/ansible/roles/octavia/templates/octavia.conf.j2 +++ b/ansible/roles/octavia/templates/octavia.conf.j2 @@ -74,3 +74,8 @@ rpc_thread_pool_size = 2 [oslo_messaging_notifications] transport_url = {{ notify_transport_url }} + +{% if octavia_policy_file is defined %} +[oslo_policy] +policy_file = {{ octavia_policy_file }} +{% endif %} diff --git a/releasenotes/notes/add-octavia-custom-policy-6a55d8cd951ce639.yaml b/releasenotes/notes/add-octavia-custom-policy-6a55d8cd951ce639.yaml new file mode 100644 index 0000000000000000000000000000000000000000..67c2aef405bd541c3281a2ad7915f736eaa963d1 --- /dev/null +++ b/releasenotes/notes/add-octavia-custom-policy-6a55d8cd951ce639.yaml @@ -0,0 +1,3 @@ +--- +features: + - Add support Octavia custom policy.