From bf6d9308aacfe44a32dd1f013d20bdc2f5fd1d18 Mon Sep 17 00:00:00 2001
From: Carsten Koester <carsten@ckoester.net>
Date: Wed, 27 Jan 2021 02:39:25 -0800
Subject: [PATCH] Add IPv6 configuration options to Octavia management network

If the Octavia/Amphora management network is created by Kolla, support
setting the IP address family and IPv6 address/RA mode.

Closes-Bug: 1913409

Change-Id: I9f2ef2196654c91596cb5c4b3c157bcee267226a
---
 ansible/roles/octavia/defaults/main.yml     | 3 +++
 ansible/roles/octavia/tasks/prepare.yml     | 3 +++
 doc/source/reference/networking/octavia.rst | 3 +++
 etc/kolla/globals.yml                       | 3 +++
 4 files changed, 12 insertions(+)

diff --git a/ansible/roles/octavia/defaults/main.yml b/ansible/roles/octavia/defaults/main.yml
index 6972226490..e04b2eb0a6 100644
--- a/ansible/roles/octavia/defaults/main.yml
+++ b/ansible/roles/octavia/defaults/main.yml
@@ -227,6 +227,9 @@ octavia_amp_security_groups:
 # - gateway_ip (optional)
 # - name
 # - no_gateway_ip (optional)
+# - ip_version (optional)
+# - ipv6_address_mode (optional)
+# - ipv6_ra_mode (optional)
 octavia_amp_network:
   name: lb-mgmt-net
   shared: false
diff --git a/ansible/roles/octavia/tasks/prepare.yml b/ansible/roles/octavia/tasks/prepare.yml
index 3bc0be4ea4..67a57cd1b2 100644
--- a/ansible/roles/octavia/tasks/prepare.yml
+++ b/ansible/roles/octavia/tasks/prepare.yml
@@ -127,5 +127,8 @@
       enable_dhcp: "{{ octavia_amp_network['subnet']['enable_dhcp'] | default(omit) }}"
       no_gateway_ip: "{{ octavia_amp_network['subnet']['no_gateway_ip'] | default(omit) }}"
       gateway_ip: "{{ octavia_amp_network['gateway_ip'] | default(omit, true) }}"
+      ip_version: "{{ octavia_amp_network['subnet']['ip_version'] | default(omit) }}"
+      ipv6_address_mode: "{{ octavia_amp_network['subnet']['ipv6_address_mode'] | default(omit) }}"
+      ipv6_ra_mode: "{{ octavia_amp_network['subnet']['ipv6_ra_mode'] | default(omit) }}"
   run_once: True
   delegate_to: "{{ groups['octavia-api'][0] }}"
diff --git a/doc/source/reference/networking/octavia.rst b/doc/source/reference/networking/octavia.rst
index a276221218..2ef743ebe9 100644
--- a/doc/source/reference/networking/octavia.rst
+++ b/doc/source/reference/networking/octavia.rst
@@ -176,6 +176,9 @@ The subnet parameter has the following supported parameters:
 - ``gateway_ip`` (optional)
 - ``name``
 - ``no_gateway_ip`` (optional)
+- ``ip_version`` (optional)
+- ``ipv6_address_mode`` (optional)
+- ``ipv6_ra_mode`` (optional)
 
 For example:
 
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 198cf87e90..04b1655f1b 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -772,6 +772,9 @@
 # - gateway_ip (optional)
 # - name
 # - no_gateway_ip (optional)
+# - ip_version (optional)
+# - ipv6_address_mode (optional)
+# - ipv6_ra_mode (optional)
 #octavia_amp_network:
 #  name: lb-mgmt-net
 #  shared: false