diff --git a/hooks/nova_compute_context.py b/hooks/nova_compute_context.py index 7bce97d6..8a4231b4 100644 --- a/hooks/nova_compute_context.py +++ b/hooks/nova_compute_context.py @@ -654,6 +654,7 @@ class CloudComputeContext(context.OSContextGenerator): 'api_version', **rel) or '2.0', 'neutron_plugin': _neutron_plugin(), 'neutron_url': url, + 'admin_role': relation_get('admin_role', **rel) or 'Admin', } # DNS domain is optional dns_domain = relation_get('dns_domain', **rel) @@ -772,6 +773,7 @@ class CloudComputeContext(context.OSContextGenerator): ctxt['admin_user'] = net_manager.get('neutron_admin_username') ctxt['admin_password'] = net_manager.get( 'neutron_admin_password') + ctxt['admin_role'] = net_manager.get('admin_role') ctxt['auth_protocol'] = net_manager.get('auth_protocol') ctxt['auth_host'] = net_manager.get('keystone_host') ctxt['auth_port'] = net_manager.get('auth_port') diff --git a/templates/queens/nova.conf b/templates/queens/nova.conf index 7393c655..97220550 100644 --- a/templates/queens/nova.conf +++ b/templates/queens/nova.conf @@ -206,6 +206,8 @@ service_metadata_proxy=True {% include "section-keystone-authtoken-mitaka" %} +{% include "section-service-user" %} + {% if glance_api_servers -%} [glance] api_servers = {{ glance_api_servers }} diff --git a/templates/rocky/nova.conf b/templates/rocky/nova.conf index d074cfe7..385a7fa8 100644 --- a/templates/rocky/nova.conf +++ b/templates/rocky/nova.conf @@ -224,6 +224,8 @@ numa_nodes = {{ network_manager_config.neutron_tunnel }} {% include "section-keystone-authtoken-mitaka" %} +{% include "section-service-user" %} + {% if glance_api_servers -%} [glance] api_servers = {{ glance_api_servers }} diff --git a/templates/stein/nova.conf b/templates/stein/nova.conf index 5add5bc8..46a30eb1 100644 --- a/templates/stein/nova.conf +++ b/templates/stein/nova.conf @@ -237,6 +237,8 @@ numa_nodes = {{ network_manager_config.neutron_tunnel }} {% include "section-keystone-authtoken-mitaka" %} +{% include "section-service-user" %} + {% if glance_api_servers -%} [glance] api_servers = {{ glance_api_servers }} diff --git a/templates/train/nova.conf b/templates/train/nova.conf index 54e3dacf..9f07d1b3 100644 --- a/templates/train/nova.conf +++ b/templates/train/nova.conf @@ -251,6 +251,8 @@ numa_nodes = {{ network_manager_config.neutron_tunnel }} {% include "section-keystone-authtoken-mitaka" %} +{% include "section-service-user" %} + {% if glance_api_servers -%} [glance] api_servers = {{ glance_api_servers }} diff --git a/templates/yoga/nova.conf b/templates/yoga/nova.conf index 173798ab..4824972e 100644 --- a/templates/yoga/nova.conf +++ b/templates/yoga/nova.conf @@ -234,6 +234,8 @@ numa_nodes = {{ network_manager_config.neutron_tunnel }} {% include "section-keystone-authtoken-mitaka" %} +{% include "section-service-user" %} + {% if glance_api_servers -%} [glance] api_servers = {{ glance_api_servers }} diff --git a/unit_tests/test_nova_compute_contexts.py b/unit_tests/test_nova_compute_contexts.py index 34af2c36..09f3be7f 100644 --- a/unit_tests/test_nova_compute_contexts.py +++ b/unit_tests/test_nova_compute_contexts.py @@ -232,6 +232,7 @@ class NovaComputeContextTests(CharmTestCase): 'network_manager': 'neutron', 'network_manager_config': { 'api_version': '2.0', + 'admin_role': 'Admin', 'auth_protocol': 'https', 'service_protocol': 'http', 'auth_port': '5000', @@ -252,6 +253,7 @@ class NovaComputeContextTests(CharmTestCase): 'admin_tenant_name': 'admin', 'admin_user': 'admin', 'admin_password': 'openstack', + 'admin_role': 'Admin', 'admin_domain_name': 'admin_domain', 'auth_port': '5000', 'auth_protocol': 'https', @@ -281,6 +283,7 @@ class NovaComputeContextTests(CharmTestCase): 'network_manager': 'neutron', 'network_manager_config': { 'api_version': '2.0', + 'admin_role': 'Admin', 'auth_protocol': 'https', 'service_protocol': 'http', 'auth_port': '5000', @@ -302,6 +305,7 @@ class NovaComputeContextTests(CharmTestCase): 'admin_tenant_name': 'admin', 'admin_user': 'admin', 'admin_password': 'openstack', + 'admin_role': 'Admin', 'admin_domain_name': 'admin_domain', 'auth_port': '5000', 'auth_protocol': 'https', @@ -330,6 +334,7 @@ class NovaComputeContextTests(CharmTestCase): cloud_compute = context.CloudComputeContext() ex_ctxt = { 'api_version': '2.0', + 'admin_role': 'Admin', 'auth_protocol': 'https', 'service_protocol': 'http', 'auth_port': '5000',