Skip to content

Commit 8da04eb

Browse files
mnasiadkacityofships
authored andcommitted
Add missing octavia-driver-agent
For using 3rd party Octavia providers (such as OVN provider) an octavia-driver-agent container must be running to expose those providers to use. tasks that used item.value.group where updated to not fail on missing group (to not break existing user inventories) OVN CI job has been extended with deploying Octavia and testing OVN Load Balancer. Closes-Bug: #1903506 Depends-On: https://review.opendev.org/c/openstack/kolla/+/782957 Change-Id: Ibafa8b7307981f2a51e630cc113d18af6162171c (cherry picked from commit 7a066f7)
1 parent 05e82de commit 8da04eb

File tree

18 files changed

+197
-13
lines changed

18 files changed

+197
-13
lines changed

ansible/group_vars/all.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,7 @@ enable_neutron_port_forwarding: "no"
668668
enable_nova_serialconsole_proxy: "no"
669669
enable_nova_ssh: "yes"
670670
enable_octavia: "no"
671+
enable_octavia_driver_agent: "{{ enable_octavia | bool and neutron_plugin_agent == 'ovn' }}"
671672
enable_openvswitch: "{{ enable_neutron | bool and neutron_plugin_agent != 'linuxbridge' }}"
672673
enable_ovn: "{{ enable_neutron | bool and neutron_plugin_agent == 'ovn' }}"
673674
enable_ovs_dpdk: "no"

ansible/inventory/all-in-one

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,9 @@ searchlight
631631
[octavia-api:children]
632632
octavia
633633

634+
[octavia-driver-agent:children]
635+
octavia
636+
634637
[octavia-health-manager:children]
635638
octavia
636639

ansible/inventory/multinode

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,9 @@ searchlight
649649
[octavia-api:children]
650650
octavia
651651

652+
[octavia-driver-agent:children]
653+
octavia
654+
652655
[octavia-health-manager:children]
653656
octavia
654657

ansible/roles/octavia/defaults/main.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ octavia_services:
2020
mode: "http"
2121
external: true
2222
port: "{{ octavia_api_port }}"
23+
octavia-driver-agent:
24+
container_name: octavia_driver_agent
25+
group: octavia-driver-agent
26+
enabled: "{{ enable_octavia_driver_agent }}"
27+
image: "{{ octavia_driver_agent_image_full }}"
28+
volumes: "{{ octavia_driver_agent_default_volumes + octavia_driver_agent_extra_volumes }}"
29+
dimensions: "{{ octavia_driver_agent_dimensions }}"
2330
octavia-health-manager:
2431
container_name: octavia_health_manager
2532
group: octavia-health-manager
@@ -68,6 +75,10 @@ octavia_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ doc
6875
octavia_api_tag: "{{ octavia_tag }}"
6976
octavia_api_image_full: "{{ octavia_api_image }}:{{ octavia_api_tag }}"
7077

78+
octavia_driver_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ octavia_install_type }}-octavia-driver-agent"
79+
octavia_driver_agent_tag: "{{ octavia_tag }}"
80+
octavia_driver_agent_image_full: "{{ octavia_driver_agent_image }}:{{ octavia_driver_agent_tag }}"
81+
7182
octavia_health_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ octavia_install_type }}-octavia-health-manager"
7283
octavia_health_manager_tag: "{{ octavia_tag }}"
7384
octavia_health_manager_image_full: "{{ octavia_health_manager_image }}:{{ octavia_health_manager_tag }}"
@@ -81,6 +92,7 @@ octavia_worker_tag: "{{ octavia_tag }}"
8192
octavia_worker_image_full: "{{ octavia_worker_image }}:{{ octavia_worker_tag }}"
8293

8394
octavia_api_dimensions: "{{ default_container_dimensions }}"
95+
octavia_driver_agent_dimensions: "{{ default_container_dimensions }}"
8496
octavia_health_manager_dimensions: "{{ default_container_dimensions }}"
8597
octavia_housekeeping_dimensions: "{{ default_container_dimensions }}"
8698
octavia_worker_dimensions: "{{ default_container_dimensions }}"
@@ -91,12 +103,20 @@ octavia_api_default_volumes:
91103
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_os_family == 'Debian' else '' }}"
92104
- "kolla_logs:/var/log/kolla/"
93105
- "{{ kolla_dev_repos_directory ~ '/octavia/octavia:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/octavia' if octavia_dev_mode | bool else '' }}"
106+
- "octavia_driver_agent:/var/run/octavia/"
94107
octavia_health_manager_default_volumes:
95108
- "{{ node_config_directory }}/octavia-health-manager/:{{ container_config_directory }}/:ro"
96109
- "/etc/localtime:/etc/localtime:ro"
97110
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_os_family == 'Debian' else '' }}"
98111
- "kolla_logs:/var/log/kolla/"
99112
- "{{ kolla_dev_repos_directory ~ '/octavia/octavia:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/octavia' if octavia_dev_mode | bool else '' }}"
113+
octavia_driver_agent_default_volumes:
114+
- "{{ node_config_directory }}/octavia-driver-agent/:{{ container_config_directory }}/:ro"
115+
- "/etc/localtime:/etc/localtime:ro"
116+
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_os_family == 'Debian' else '' }}"
117+
- "kolla_logs:/var/log/kolla/"
118+
- "{{ kolla_dev_repos_directory ~ '/octavia/octavia:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/octavia' if octavia_dev_mode | bool else '' }}"
119+
- "octavia_driver_agent:/var/run/octavia/"
100120
octavia_housekeeping_default_volumes:
101121
- "{{ node_config_directory }}/octavia-housekeeping/:{{ container_config_directory }}/:ro"
102122
- "/etc/localtime:/etc/localtime:ro"
@@ -112,6 +132,7 @@ octavia_worker_default_volumes:
112132

113133
octavia_extra_volumes: "{{ default_extra_volumes }}"
114134
octavia_api_extra_volumes: "{{ octavia_extra_volumes }}"
135+
octavia_driver_agent_extra_volumes: "{{ octavia_extra_volumes }}"
115136
octavia_health_manager_extra_volumes: "{{ octavia_extra_volumes }}"
116137
octavia_housekeeping_extra_volumes: "{{ octavia_extra_volumes }}"
117138
octavia_worker_extra_volumes: "{{ octavia_extra_volumes }}"
@@ -238,3 +259,7 @@ octavia_amp_network:
238259

239260
# Octavia management network subnet CIDR.
240261
octavia_amp_network_cidr: 10.1.0.0/24
262+
263+
# Octavia provider drivers
264+
octavia_provider_drivers: "amphora:Amphora provider{% if neutron_plugin_agent == 'ovn'%}, ovn:OVN provider{% endif %}"
265+
octavia_provider_agents: "amphora_agent{% if neutron_plugin_agent == 'ovn'%}, ovn{% endif %}"

ansible/roles/octavia/handlers/main.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,21 @@
1414
when:
1515
- kolla_action != "config"
1616

17+
- name: Restart octavia-driver-agent container
18+
vars:
19+
service_name: "octavia-driver-agent"
20+
service: "{{ octavia_services[service_name] }}"
21+
become: true
22+
kolla_docker:
23+
action: "recreate_or_restart_container"
24+
common_options: "{{ docker_common_options }}"
25+
name: "{{ service.container_name }}"
26+
image: "{{ service.image }}"
27+
volumes: "{{ service.volumes | reject('equalto', '') | list }}"
28+
dimensions: "{{ service.dimensions }}"
29+
when:
30+
- kolla_action != "config"
31+
1732
- name: Restart octavia-health-manager container
1833
vars:
1934
service_name: "octavia-health-manager"

ansible/roles/octavia/tasks/check-containers.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
volumes: "{{ item.value.volumes }}"
1010
dimensions: "{{ item.value.dimensions }}"
1111
when:
12-
- inventory_hostname in groups[item.value.group]
12+
- inventory_hostname in groups.get(item.value.group, [])
1313
- item.value.enabled | bool
1414
with_dict: "{{ octavia_services }}"
1515
notify:

ansible/roles/octavia/tasks/config.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
mode: "0770"
99
become: true
1010
when:
11-
- inventory_hostname in groups[item.value.group]
11+
- inventory_hostname in groups.get(item.value.group, [])
1212
- item.value.enabled | bool
1313
with_dict: "{{ octavia_services }}"
1414

@@ -39,7 +39,7 @@
3939
become: true
4040
when:
4141
- octavia_policy_file is defined
42-
- inventory_hostname in groups[item.value.group]
42+
- inventory_hostname in groups.get(item.value.group, [])
4343
- item.value.enabled | bool
4444
with_dict: "{{ octavia_services }}"
4545
notify:
@@ -56,7 +56,7 @@
5656
mode: "0660"
5757
become: true
5858
when:
59-
- inventory_hostname in groups[item.value.group]
59+
- inventory_hostname in groups.get(item.value.group, [])
6060
- item.value.enabled | bool
6161
with_dict: "{{ octavia_services }}"
6262
notify:
@@ -76,7 +76,7 @@
7676
mode: "0660"
7777
become: true
7878
when:
79-
- inventory_hostname in groups[item.value.group]
79+
- inventory_hostname in groups.get(item.value.group, [])
8080
- item.value.enabled | bool
8181
with_dict: "{{ octavia_services }}"
8282
notify:

ansible/roles/octavia/templates/octavia-api.json.j2

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,11 @@
1313
"owner": "octavia",
1414
"perm": "0600"
1515
}{% endif %}
16+
],
17+
"permissions": [
18+
{
19+
"path": "/var/run/octavia",
20+
"owner": "octavia:octavia"
21+
}
1622
]
1723
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"command": "octavia-driver-agent --config-file /etc/octavia/octavia.conf",
3+
"config_files": [
4+
{
5+
"source": "{{ container_config_directory }}/octavia.conf",
6+
"dest": "/etc/octavia/octavia.conf",
7+
"owner": "octavia",
8+
"perm": "0600"
9+
}{% if octavia_policy_file is defined %},
10+
{
11+
"source": "{{ container_config_directory }}/{{ octavia_policy_file }}",
12+
"dest": "/etc/octavia/{{ octavia_policy_file }}",
13+
"owner": "octavia",
14+
"perm": "0600"
15+
}{% endif %}
16+
],
17+
"permissions": [
18+
{
19+
"path": "/var/run/octavia",
20+
"owner": "octavia:octavia"
21+
}
22+
]
23+
}

ansible/roles/octavia/templates/octavia.conf.j2

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,17 @@ endpoint_type = internal
1919
ca_certificates_file = {{ openstack_cacert }}
2020
{% endif %}
2121

22+
[api_settings]
23+
enabled_provider_drivers = '{{ octavia_provider_drivers }}'
24+
25+
[driver_agent]
26+
enabled_provider_agents = {{ octavia_provider_agents }}
27+
28+
{% if neutron_plugin_agent == 'ovn' %}
29+
[ovn]
30+
ovn_nb_connection = {{ ovn_nb_connection }}
31+
{% endif %}
32+
2233
[haproxy_amphora]
2334
server_ca = /etc/octavia/certs/server_ca.cert.pem
2435
client_cert = /etc/octavia/certs/client.cert-and-key.pem

0 commit comments

Comments
 (0)