From c5b303732315e2f01e7f80a799ba91787f2881fd Mon Sep 17 00:00:00 2001
From: Gaetan Trellu <gaetan.trellu@incloudus.com>
Date: Wed, 17 Jan 2018 11:15:20 -0500
Subject: [PATCH] Missing configuration for Trove single tenant

The nova_proxy_* options are not needed when Trove single tenant
functionnality is not used.

The current way how Kolla configure trove-taskmanager.conf is to use the
user tenant so the nova_proxy_* options are not required by default.

I added the "enable_trove_singletenant" option to enable the single tenant
functionnality if required and complete the configuration to make it works.

When enable_trove_singletenant is true, the below configuration will be
applied to trove-task-manager.conf configuration file:

nova_proxy_admin_pass = {{ trove_keystone_password }}
nova_proxy_admin_tenant_name = services
nova_proxy_admin_user = trove
remote_nova_client = \
    trove.common.single_tenant_remote.nova_client_trove_admin
remote_cinder_client = \
    trove.common.single_tenant_remote.cinder_client_trove_admin
remote_neutron_client = \
    trove.common.single_tenant_remote.neutron_client_trove_admin

Change-Id: I9858acd9486a3f6a07c1edad14fde12f49df772b
Closes-Bug: #1743394
---
 ansible/group_vars/all.yml                                  | 1 +
 ansible/roles/trove/templates/trove-taskmanager.conf.j2     | 5 +++++
 etc/kolla/globals.yml                                       | 1 +
 .../notes/add-trove-singletenant-dd02a7b7cc1a4f99.yaml      | 6 ++++++
 4 files changed, 13 insertions(+)
 create mode 100644 releasenotes/notes/add-trove-singletenant-dd02a7b7cc1a4f99.yaml

diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 0562ad3678..64eed5e9ba 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -466,6 +466,7 @@ enable_tacker: "no"
 enable_telegraf: "no"
 enable_tempest: "no"
 enable_trove: "no"
+enable_trove_singletenant: "no"
 enable_vitrage: "no"
 enable_vmtp: "no"
 enable_watcher: "no"
diff --git a/ansible/roles/trove/templates/trove-taskmanager.conf.j2 b/ansible/roles/trove/templates/trove-taskmanager.conf.j2
index 3f35dc3e1c..0da8f4e782 100644
--- a/ansible/roles/trove/templates/trove-taskmanager.conf.j2
+++ b/ansible/roles/trove/templates/trove-taskmanager.conf.j2
@@ -3,9 +3,14 @@ debug = {{ trove_logging_debug }}
 
 log_dir = /var/log/kolla/trove
 
+{% if enable_trove_singletenant | bool %}
 nova_proxy_admin_pass = {{ trove_keystone_password }}
 nova_proxy_admin_tenant_name = services
 nova_proxy_admin_user = trove
+remote_nova_client = trove.common.single_tenant_remote.nova_client_trove_admin
+remote_cinder_client = trove.common.single_tenant_remote.cinder_client_trove_admin
+remote_neutron_client = trove.common.single_tenant_remote.neutron_client_trove_admin
+{% endif %}
 taskmanager_manager = trove.taskmanager.manager.Manager
 
 transport_url = {{ rpc_transport_url }}
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 88ba199690..d22772d249 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -225,6 +225,7 @@ kolla_internal_vip_address: "10.10.10.254"
 #enable_tacker: "no"
 #enable_tempest: "no"
 #enable_trove: "no"
+#enable_trove_singletenant: "no"
 #enable_vitrage: "no"
 #enable_vmtp: "no"
 #enable_watcher: "no"
diff --git a/releasenotes/notes/add-trove-singletenant-dd02a7b7cc1a4f99.yaml b/releasenotes/notes/add-trove-singletenant-dd02a7b7cc1a4f99.yaml
new file mode 100644
index 0000000000..8615136879
--- /dev/null
+++ b/releasenotes/notes/add-trove-singletenant-dd02a7b7cc1a4f99.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Add "enable_trove_singletenant" option to enable the Trove single
+    tenant functionnality. This feature will allow Trove to create
+    Nova instances in a different tenant than the user tenant.