From 73edc4f817d0a8c281284a0df850d93ea5427014 Mon Sep 17 00:00:00 2001 From: NucciTheBoss Date: Mon, 18 Jul 2022 13:37:42 -0400 Subject: [PATCH] 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 --- templates/yoga/nova.conf | 387 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 387 insertions(+) create mode 100644 templates/yoga/nova.conf diff --git a/templates/yoga/nova.conf b/templates/yoga/nova.conf new file mode 100644 index 00000000..a0ab7096 --- /dev/null +++ b/templates/yoga/nova.conf @@ -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