Update nova.conf for OpenStack Yoga

This merge request focuses on fixing the VNC config for OpenStack Yoga
on the Focal and Jammy series. Originally, the Yoga version of this
charm was using a template nova.conf file from Train which did not use
the new [vnc] required for Yoga. Train had the VNC config in the
[DEFAULT] section, which is depreciated in Yoga.

Itemized changes to charm below:

 * Create templates/yoga
 * Move VNC config to [vnc] section in nova.conf
 * Rename VNC config keys to follow the Yoga specification.

Closes-Bug: #1974082
Closes-Bug: #1734683

Change-Id: Ic100528f9f38bbc0c83e4f563166113024e3db59
This commit is contained in:
NucciTheBoss 2022-07-18 13:37:42 -04:00 committed by Jason Nucciarone
parent cf0f464391
commit 73edc4f817
1 changed files with 387 additions and 0 deletions

387
templates/yoga/nova.conf Normal file
View File

@ -0,0 +1,387 @@
# yoga
###############################################################################
# [ WARNING ]
# Configuration file maintained by Juju. Local changes may be overwritten.
{% if restart_trigger -%}
# restart trigger: {{ restart_trigger }}
{% endif -%}
###############################################################################
[DEFAULT]
verbose={{ verbose }}
debug={{ debug }}
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
logdir=/var/log/nova
state_path=/var/lib/nova
force_dhcp_release=True
use_syslog = {{ use_syslog }}
ec2_private_dns_show_ip=True
enabled_apis=osapi_compute,metadata
my_ip = {{ host_ip }}
force_raw_images = {{ force_raw_images }}
{% if block_device_allocate_retries -%}
block_device_allocate_retries = {{ block_device_allocate_retries }}
{% endif -%}
{% if block_device_allocate_retries_interval -%}
block_device_allocate_retries_interval = {{ block_device_allocate_retries_interval }}
{% endif -%}
{% if use_fqdn_hint and host_fqdn -%}
host = {{ host_fqdn }}
{% endif -%}
{% if debug -%}
default_log_levels = "amqp=WARN, amqplib=WARN, boto=WARN, qpid=WARN, sqlalchemy=WARN, suds=INFO, oslo.messaging=INFO, oslo_messaging=DEBUG, iso8601=WARN, requests.packages.urllib3.connectionpool=WARN, urllib3.connectionpool=WARN, websocket=WARN, requests.packages.urllib3.util.retry=WARN, urllib3.util.retry=WARN, keystonemiddleware=WARN, routes.middleware=WARN, stevedore=WARN, taskflow=WARN, keystoneauth=WARN, oslo.cache=INFO, dogpile.core.dogpile=INFO, glanceclient=WARN, oslo.privsep.daemon=INFO"
{% endif -%}
{% if transport_url %}
transport_url = {{ transport_url }}
{% endif %}
{% if dns_domain -%}
# Per LP#1805645, dhcp_domain needs to be configured for nova-metadata-api
# It gets this information from neutron.
dhcp_domain = {{ dns_domain }}
{% endif -%}
{% if arch == 'aarch64' -%}
libvirt_use_virtio_for_bridges=False
libvirt_disk_prefix=vd
{% endif -%}
{% if neutron_plugin and neutron_plugin in ('ovs', 'midonet') -%}
libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtGenericVIFDriver
{% if neutron_security_groups -%}
security_group_api = neutron
firewall_driver = nova.virt.firewall.NoopFirewallDriver
{% endif -%}
{% endif -%}
{% if neutron_plugin and neutron_plugin == 'vsp' -%}
network_api_class=nova.network.neutronv2.api.API
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver
neutron_ovs_bridge=alubr0
security_group_api=neutron
firewall_driver = nova.virt.firewall.NoopFirewallDriver
{% endif -%}
{% if neutron_plugin and (neutron_plugin == 'nvp' or neutron_plugin == 'nsx') -%}
libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtOpenVswitchVirtualPortDriver
security_group_api = neutron
firewall_driver = nova.virt.firewall.NoopFirewallDriver
{% endif -%}
{% if neutron_plugin and neutron_plugin == 'Calico' -%}
security_group_api = neutron
firewall_driver = nova.virt.firewall.NoopFirewallDriver
{% endif -%}
{% if neutron_plugin and neutron_plugin == 'plumgrid' -%}
security_group_api=neutron
firewall_driver = nova.virt.firewall.NoopFirewallDriver
{% endif -%}
{% if network_manager != 'neutron' and network_manager_config -%}
{% for key, value in network_manager_config.items() -%}
{{ key }} = {{ value }}
{% endfor -%}
{% endif -%}
{% if network_manager == 'neutron' -%}
network_api_class = nova.network.neutronv2.api.API
use_neutron = True
{% else -%}
network_manager = nova.network.manager.FlatDHCPManager
{% endif -%}
{% if network_device_mtu -%}
network_device_mtu = {{ network_device_mtu }}
{% endif -%}
{% if volume_service -%}
volume_api_class = nova.volume.cinder.API
{% endif -%}
{% if user_config_flags -%}
{% for key, value in user_config_flags.items() -%}
{{ key }} = {{ value }}
{% endfor -%}
{% endif -%}
{% if instances_path -%}
instances_path = {{ instances_path }}
{% endif -%}
{% if sections and 'DEFAULT' in sections -%}
{% for key, value in sections['DEFAULT'] -%}
{{ key }} = {{ value }}
{% endfor -%}
{% endif -%}
{% if vcpu_pin_set -%}
vcpu_pin_set = {{ vcpu_pin_set }}
{% endif -%}
reserved_host_memory_mb = {{ reserved_host_memory }}
reserved_host_disk_mb = {{ reserved_host_disk }}
{% if reserved_huge_pages -%}
{% for value in reserved_huge_pages -%}
reserved_huge_pages = {{ value }}
{% endfor -%}
{% endif -%}
{% include "section-zeromq" %}
{% if default_availability_zone -%}
default_availability_zone = {{ default_availability_zone }}
{% endif -%}
{% if resume_guests_state_on_host_boot -%}
resume_guests_state_on_host_boot = {{ resume_guests_state_on_host_boot }}
{% endif -%}
metadata_workers = {{ workers }}
{% if initial_cpu_allocation_ratio -%}
initial_cpu_allocation_ratio = {{ initial_cpu_allocation_ratio }}
{% endif -%}
{% if initial_ram_allocation_ratio -%}
initial_ram_allocation_ratio = {{ initial_ram_allocation_ratio }}
{% endif -%}
{% if initial_disk_allocation_ratio -%}
initial_disk_allocation_ratio = {{ initial_disk_allocation_ratio }}
{% endif -%}
{% if cpu_allocation_ratio -%}
cpu_allocation_ratio = {{ cpu_allocation_ratio }}
{% endif -%}
{% if ram_allocation_ratio -%}
ram_allocation_ratio = {{ ram_allocation_ratio }}
{% endif -%}
{% if disk_allocation_ratio -%}
disk_allocation_ratio = {{ disk_allocation_ratio }}
{% endif -%}
{% if allow_resize_to_same_host -%}
allow_resize_to_same_host = {{ allow_resize_to_same_host }}
{% endif -%}
[pci]
{% if pci_passthrough_whitelist -%}
passthrough_whitelist = {{ pci_passthrough_whitelist }}
{% endif -%}
{% if pci_alias %}
alias = {{ pci_alias }}
{% endif %}
{% for alias in pci_aliases -%}
alias = {{ alias }}
{% endfor -%}
{% if network_manager == 'neutron' and network_manager_config -%}
[neutron]
url = {{ network_manager_config.neutron_url }}
{% if region -%}
region_name = {{ region }}
{% endif -%}
{% if network_manager_config.keystone_host or auth_host -%}
{% if neutron_plugin and neutron_plugin == 'vsp' -%}
ovs_bridge = alubr0
{% endif -%}
{% if auth_host -%}
auth_url = {{ auth_protocol }}://{{ auth_host }}:{{ auth_port }}
auth_type = password
{% if admin_domain_name -%}
project_domain_name = {{ admin_domain_name }}
user_domain_name = {{ admin_domain_name }}
{% else -%}
project_domain_name = default
user_domain_name = default
{% endif -%}
project_name = {{ admin_tenant_name }}
username = {{ admin_user }}
password = {{ admin_password }}
signing_dir = {{ signing_dir }}
{% endif -%}
{% if metadata_shared_secret -%}
metadata_proxy_shared_secret = {{ metadata_shared_secret }}
service_metadata_proxy=True
{% endif -%}
{% endif -%}
{% if network_manager_config.neutron_physnets -%}
physnets = {{ network_manager_config.neutron_physnets.keys()|join(',') }}
{% for key, value in network_manager_config.neutron_physnets.items() -%}
[neutron_physnets_{{ key }}]
numa_nodes = {{ value }}
{% endfor -%}
{% endif -%}
{% if network_manager_config.neutron_tunnel -%}
[neutron_tunnel]
numa_nodes = {{ network_manager_config.neutron_tunnel }}
{% endif -%}
{% endif -%}
{% include "section-keystone-authtoken-mitaka" %}
{% if glance_api_servers -%}
[glance]
api_servers = {{ glance_api_servers }}
{% endif -%}
[api]
auth_strategy=keystone
{% if vendor_data or vendor_data_url -%}
vendordata_providers = {{ vendordata_providers }}
{% if vendor_data -%}
vendordata_jsonfile_path = /etc/nova/vendor_data.json
{% endif -%}
{% if vendor_data_url -%}
vendordata_dynamic_targets = {{ vendor_data_url }}
{% endif -%}
{% endif -%}
{% if console_access_protocol == 'spice' -%}
[spice]
agent_enabled = {{ spice_agent_enabled }}
enabled = True
html5proxy_base_url = {{ spice_proxy_address }}
keymap = {{ console_keymap }}
server_listen = {{ console_listen_addr }}
server_proxyclient_address = {{ console_listen_addr }}
{% endif -%}
[libvirt]
inject_key = false
inject_password = {{ inject_password }}
inject_partition = {{ inject_partition }}
{% if cpu_mode -%}
cpu_mode = {{ cpu_mode }}
{% endif -%}
{% if cpu_model -%}
cpu_model = {{ cpu_model }}
{% endif -%}
{% if cpu_model_extra_flags %}
cpu_model_extra_flags = {{ cpu_model_extra_flags }}
{% endif %}
{% if libvirt_images_type -%}
images_type = {{ libvirt_images_type }}
{% endif -%}
{% if libvirt_images_type and rbd_pool -%}
images_rbd_pool = {{ rbd_pool }}
images_rbd_ceph_conf = {{ libvirt_rbd_images_ceph_conf }}
{% endif -%}
rbd_user = {{ rbd_user }}
rbd_secret_uuid = {{ rbd_secret_uuid }}
{% if live_migration_scheme -%}
live_migration_scheme = {{ live_migration_scheme }}
{% endif -%}
{% if live_migration_inbound_addr -%}
live_migration_inbound_addr = {{ live_migration_inbound_addr }}
{% endif -%}
{% if live_migration_completion_timeout -%}
live_migration_completion_timeout = {{ live_migration_completion_timeout }}
{% endif -%}
{% if live_migration_downtime -%}
live_migration_downtime = {{ live_migration_downtime }}
{% endif -%}
{% if live_migration_downtime_steps -%}
live_migration_downtime_steps = {{ live_migration_downtime_steps }}
{% endif -%}
{% if live_migration_downtime_delay -%}
live_migration_downtime_delay = {{ live_migration_downtime_delay }}
{% endif -%}
{% if live_migration_permit_post_copy -%}
live_migration_permit_post_copy = {{ live_migration_permit_post_copy }}
live_migration_timeout_action = force_complete
{% endif -%}
{% if live_migration_permit_auto_converge -%}
live_migration_permit_auto_converge = {{ live_migration_permit_auto_converge }}
{% endif -%}
{% if disk_cachemodes -%}
disk_cachemodes = {{ disk_cachemodes }}
{% endif %}
# Disable tunnelled migration so that selective
# live block migration can be supported.
live_migration_tunnelled = False
{% if use_multipath -%}
volume_use_multipath = {{ use_multipath }}
{% endif %}
{% if default_ephemeral_format -%}
default_ephemeral_format = {{ default_ephemeral_format }}
{% endif %}
hw_disk_discard = unmap
{% if virtio_net_tx_queue_size -%}
tx_queue_size = {{ virtio_net_tx_queue_size }}
{% endif %}
{% if virtio_net_rx_queue_size -%}
rx_queue_size = {{ virtio_net_rx_queue_size }}
{% endif %}
{% if num_pcie_ports -%}
num_pcie_ports = {{ num_pcie_ports }}
{% endif %}
{% if virt_type == 'lxd' -%}
[lxd]
{% if enable_live_migration -%}
allow_live_migration = True
{% endif -%}
{% if storage_pool -%}
pool = {{ storage_pool }}
{% endif -%}
{% endif -%}
{% include "parts/section-database" %}
{% include "section-oslo-messaging-rabbit" %}
{% include "section-oslo-notifications" %}
{% include "parts/section-cinder" %}
[oslo_concurrency]
lock_path=/var/lock/nova
[workarounds]
disable_libvirt_livesnapshot = False
{% include "parts/section-ephemeral" %}
{% include "parts/section-serial-console" %}
{% include "parts/section-placement" %}
{% include "parts/section-ironic" %}
[compute]
{% if cpu_shared_set -%}
cpu_shared_set = {{ cpu_shared_set }}
{% endif -%}
{% if cpu_dedicated_set -%}
cpu_dedicated_set = {{ cpu_dedicated_set }}
{% endif -%}
[vnc]
{% if console_vnc_type -%}
vnc_enabled = True
novnc_enabled = True
vnc_keymap = {{ console_keymap }}
server_listen = {{ console_listen_addr }}
server_proxyclient_address = {{ console_listen_addr }}
{% if console_access_protocol == 'novnc' or console_access_protocol == 'vnc' -%}
novncproxy_base_url = {{ novnc_proxy_address }}
{% endif -%}
{% if console_access_protocol == 'xvpvnc' or console_access_protocol == 'vnc' -%}
xvpvncproxy_port = {{ xvpvnc_proxy_port }}
xvpvncproxy_host = {{ xvpvnc_proxy_host }}
xvpvncproxy_base_url = {{ xvpvnc_proxy_address }}
{% endif -%}
{% else -%}
vnc_enabled = False
novnc_enabled = False
{% endif -%}
[wsgi]
api_paste_config=/etc/nova/api-paste.ini