Alex, thank you for looking into this bug. Please see attached nova.conf from the nova-ironic unit. Interestingly, for other sections, e.g. [neutron], keystone-internal endpoint is rendered without specifying the API version at all: ``` [neutron] auth_url = https://keystone-internal.engineering-cloud.example.com:35357 ``` It looks like auth_ver is only rendered in [ironic] section: ``` root@juju-4bb50e-1-lxd-6:/var/lib/juju/agents/unit-nova-ironic-0/charm/templates# grep -RP auth_url kilo/nova.conf:admin_auth_url = {{ network_manager_config.auth_protocol }}://{{ network_manager_config.keystone_host }}:{{ network_manager_config.auth_port }}/v2.0 rocky/nova.conf:auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }} parts/section-ironic:auth_url = {{auth_protocol}}://{{auth_host}}:{{auth_port}}/{{auth_ver}} parts/section-placement:auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }} train/nova.conf:auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }} ocata/nova.conf:auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }} stein/nova.conf:auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }} newton/nova.conf:auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }} queens/nova.conf:auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }} mitaka/nova.conf:auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }} pike/nova.conf:auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }} ``` Relation data between nova-cloud-controller and nova-ironic does indeed specify `api_version: "2.0"`: ``` $ juju run --unit nova-cloud-controller/0 'relation-ids cloud-compute' cloud-compute:350 cloud-compute:351 $ juju run --unit nova-cloud-controller/0 'relation-list -r cloud-compute:350' nova-compute/0 nova-compute/1 nova-compute/2 nova-compute/3 nova-compute/4 nova-compute/5 nova-compute/6 nova-compute/7 nova-compute/8 $ juju run --unit nova-cloud-controller/0 'relation-list -r cloud-compute:351' nova-ironic/0 $ juju run --unit nova-cloud-controller/0 'relation-get -r cloud-compute:351 - nova-cloud-controller/0' admin_domain_name: service_domain allow_resize_to_same_host: "False" api_version: "2.0" auth_host: keystone-internal.engineering-cloud.example.com auth_port: "35357" auth_protocol: https ca_cert: REDACTED console_access_protocol: spice console_keymap: en-us console_proxy_spice_address: https://nova.engineering-cloud.example.com:6082/spice_auto.html console_proxy_spice_host: nova.engineering-cloud.example.com console_proxy_spice_port: "6082" cpu_allocation_ratio: "16" cross_az_attach: "True" disk_allocation_ratio: "1" dns_domain: engineering-cloud.de.example.lan. ec2_host: 10.9.186.7 egress-subnets: 192.168.4.90/32 enable_serial_console: "false" ingress-address: 192.168.4.90 keystone_host: keystone-internal.engineering-cloud.example.com network_manager: neutron private-address: 192.168.4.90 quantum_host: neutron-internal.engineering-cloud.example.com quantum_plugin: ovs quantum_port: "9696" quantum_security_groups: "yes" quantum_url: https://neutron-internal.engineering-cloud.example.com:9696 ram_allocation_ratio: "1" region: ABT102 restart_trigger: eab4201a-9bf0-4c3f-afe8-871bdfd918f0 serial_console_base_url: ws://nova.engineering-cloud.example.com:6083/ service_password: REDACTED service_port: "5000" service_protocol: https service_tenant: services service_tenant_name: services service_username: nova spice_agent_enabled: "True" vendor_data: '{"vendor_data": false}' vendor_json: '{}' volume_service: cinder ``` Relation between nova-cloud-controller and regular nova-compute units (not nova-ironic unit) also contain `api_version: "2.0"` but this information is never rendered in nova.conf, as the `auth_ver` is only taken into accound in `parts/section-ironic`.