
This change introduces two new configuration options to the Nova Cloud Controller charm: - `enable-notify`: Allows users to enable the `notify_on_state_change` setting in the Nova Cloud Controller. This controls whether notifications should be sent for changes in instance states. If `enable-notify` is set to `True`, users can configure the `notify-on-state-change` option to specify the types of state changes to notify on. - `notify-on-state-change`: Specifies when to send `compute.instance.update` notifications on instance state changes. The possible values are: - `None`: Disables notifications. - `vm_state`: Sends notifications on changes to the VM state. - `vm_and_task_state`: Sends notifications on changes to both VM and task states. If `enable-notify` is set to `True`, the following configuration is added to `nova.conf`: [DEFAULT] notify_on_state_change = {{ notify_on_state_change }} By default, `enable-notify` is set to `False`, keeping the existing behavior unchanged unless explicitly configured. This ensures that no notifications are sent unless the user opts in, providing backward compatibility while offering the flexibility to enable state change notifications when needed. Closes-Bug: #2085354 Change-Id: I2f8926a89c89b03e81d05d36dd65579eb8bec16c
315 lines
8.7 KiB
Plaintext
315 lines
8.7 KiB
Plaintext
# yoga
|
|
###############################################################################
|
|
# [ WARNING ]
|
|
# Configuration file maintained by Juju. Local changes may be overwritten.
|
|
###############################################################################
|
|
[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
|
|
iscsi_helper=tgtadm
|
|
libvirt_use_virtio_for_bridges=True
|
|
connection_type=libvirt
|
|
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
|
|
volumes_path=/var/lib/nova/volumes
|
|
enabled_apis=osapi_compute,metadata
|
|
compute_driver=libvirt.LibvirtDriver
|
|
use_ipv6 = {{ use_ipv6 }}
|
|
osapi_compute_listen = {{ bind_host }}
|
|
{% if unique_server_names -%}
|
|
osapi_compute_unique_unique_server_names = {{ unique_server_names }}
|
|
{% endif -%}
|
|
metadata_host = {{ bind_host }}
|
|
s3_listen = {{ bind_host }}
|
|
enable_new_services = {{ enable_new_services }}
|
|
|
|
{% 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"
|
|
glance.debug = True
|
|
{% 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 -%}
|
|
|
|
osapi_compute_workers = {{ workers }}
|
|
|
|
cpu_allocation_ratio = {{ cpu_allocation_ratio }}
|
|
ram_allocation_ratio = {{ ram_allocation_ratio }}
|
|
disk_allocation_ratio = {{ disk_allocation_ratio }}
|
|
|
|
use_syslog={{ use_syslog }}
|
|
my_ip = {{ host_ip }}
|
|
|
|
{% include "parts/novnc" %}
|
|
|
|
{% if max_local_block_devices is not none -%}
|
|
max_local_block_devices = {{ max_local_block_devices }}
|
|
{% endif -%}
|
|
|
|
{% if rbd_pool -%}
|
|
rbd_pool = {{ rbd_pool }}
|
|
rbd_user = {{ rbd_user }}
|
|
rbd_secret_uuid = {{ rbd_secret_uuid }}
|
|
{% endif -%}
|
|
|
|
{% if neutron_plugin and neutron_plugin in ('ovs', 'midonet') -%}
|
|
libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtGenericVIFDriver
|
|
libvirt_user_virtio_for_bridges = True
|
|
{% if neutron_security_groups -%}
|
|
security_group_api = {{ network_manager }}
|
|
nova_firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
|
{% endif -%}
|
|
{% if external_network -%}
|
|
default_floating_pool = {{ external_network }}
|
|
{% endif -%}
|
|
{% endif -%}
|
|
|
|
{% if neutron_plugin and neutron_plugin == 'vsp' -%}
|
|
neutron_ovs_bridge = alubr0
|
|
{% endif -%}
|
|
|
|
{% if neutron_plugin and neutron_plugin == 'nvp' -%}
|
|
security_group_api = neutron
|
|
nova_firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
|
{% if external_network -%}
|
|
default_floating_pool = {{ external_network }}
|
|
{% endif -%}
|
|
{% endif -%}
|
|
|
|
{% if neutron_plugin and neutron_plugin == 'Calico' -%}
|
|
security_group_api = neutron
|
|
nova_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_config -%}
|
|
{% for key, value in network_manager_config.items() -%}
|
|
{{ key }} = {{ value }}
|
|
{% endfor -%}
|
|
{% endif -%}
|
|
|
|
{% if network_manager and network_manager == 'neutron' -%}
|
|
network_api_class = nova.network.neutronv2.api.API
|
|
{% else -%}
|
|
network_manager = nova.network.manager.FlatDHCPManager
|
|
{% endif -%}
|
|
|
|
{% if default_floating_pool -%}
|
|
default_floating_pool = {{ default_floating_pool }}
|
|
{% endif -%}
|
|
|
|
{% if volume_service -%}
|
|
volume_api_class=nova.volume.cinder.API
|
|
{% endif -%}
|
|
|
|
{% if enable_notify -%}
|
|
notify_on_state_change = {{ notify_on_state_change }}
|
|
{% endif -%}
|
|
|
|
{% if allow_resize_to_same_host -%}
|
|
allow_resize_to_same_host = True
|
|
{% endif -%}
|
|
|
|
{% if user_config_flags -%}
|
|
{% for key, value in user_config_flags.items() -%}
|
|
{{ key }} = {{ value }}
|
|
{% endfor -%}
|
|
{% endif -%}
|
|
|
|
{% if listen_ports -%}
|
|
{% for key, value in listen_ports.items() -%}
|
|
{{ key }} = {{ value }}
|
|
{% endfor -%}
|
|
{% endif -%}
|
|
|
|
{% if sections and 'DEFAULT' in sections -%}
|
|
{% for key, value in sections['DEFAULT'] -%}
|
|
{{ key }} = {{ value }}
|
|
{% endfor -%}
|
|
{% endif %}
|
|
|
|
[upgrade_levels]
|
|
compute = auto
|
|
|
|
{% include "section-zeromq" %}
|
|
|
|
{% include "parts/database-v2" %}
|
|
|
|
{% include "parts/database-api" %}
|
|
|
|
{% if glance_api_servers -%}
|
|
[glance]
|
|
api_servers = {{ glance_api_servers }}
|
|
{% endif -%}
|
|
|
|
{% if network_manager and network_manager == 'neutron' %}
|
|
{% include "parts/section-neutron" %}
|
|
{% endif %}
|
|
|
|
{% include "section-keystone-authtoken-mitaka" %}
|
|
|
|
{% include "section-service-user" %}
|
|
|
|
{% include "parts/section-cinder" %}
|
|
|
|
[osapi_v3]
|
|
enabled=True
|
|
|
|
{% include "parts/cell" %}
|
|
|
|
[conductor]
|
|
workers = {{ workers }}
|
|
|
|
{% include "section-oslo-messaging-rabbit" %}
|
|
|
|
{% include "section-oslo-notifications" %}
|
|
|
|
[oslo_concurrency]
|
|
lock_path=/var/lock/nova
|
|
|
|
[vnc]
|
|
{% if console_access_port and console_access_protocol == 'novnc' -%}
|
|
novncproxy_port = {{ console_access_port }}
|
|
{% endif %}
|
|
{% if console_access_port and console_access_protocol == 'xvpvnc' -%}
|
|
xvpvncproxy_port = {{ console_access_port }}
|
|
{% endif %}
|
|
|
|
[spice]
|
|
{% include "parts/spice" %}
|
|
{% if console_access_port and console_access_protocol == 'spice' -%}
|
|
html5proxy_port = {{ console_access_port }}
|
|
{% endif %}
|
|
|
|
{% include "parts/section-serial-console" %}
|
|
|
|
{% include "parts/section-console" %}
|
|
|
|
{% if memcached_servers %}
|
|
[cache]
|
|
enabled = true
|
|
backend = oslo_cache.memcache_pool
|
|
memcache_servers = {{ memcached_servers }}
|
|
{% endif %}
|
|
|
|
{% include "section-placement" %}
|
|
|
|
[scheduler]
|
|
# NOTE(jamespage): perform automatic host cell mapping
|
|
# until we can orchestrate this better
|
|
# using the nova-cc <--> nova-compute
|
|
# relation
|
|
discover_hosts_in_cells_interval = 30
|
|
|
|
workers = {{ workers }}
|
|
|
|
{% if limit_tenants_to_placement_aggregate -%}
|
|
limit_tenants_to_placement_aggregate = True
|
|
{%- endif %}
|
|
{%- if placement_aggregate_required_for_tenants %}
|
|
placement_aggregate_required_for_tenants = True
|
|
{%- endif %}
|
|
{%- if enable_isolated_aggregate_filtering %}
|
|
enable_isolated_aggregate_filtering = True
|
|
{%- endif %}
|
|
|
|
[filter_scheduler]
|
|
{% if additional_neutron_filters is defined %}
|
|
enabled_filters = {{ scheduler_default_filters }},{{ additional_neutron_filters }}
|
|
{% else %}
|
|
enabled_filters = {{ scheduler_default_filters }}
|
|
{% endif %}
|
|
|
|
{% if not skip_hosts_with_build_failures %}
|
|
# Disable BuildFailureWeigher as any failed build will result
|
|
# in a very low weighting for the hypervisor, resulting in
|
|
# instances all being scheduled to hypervisors with no build
|
|
# failures.
|
|
# https://bugs.launchpad.net/charm-nova-cloud-controller/+bug/1818239
|
|
build_failure_weight_multiplier = 0.0
|
|
{% endif %}
|
|
|
|
{%- if scheduler_host_subset_size %}
|
|
host_subset_size = {{ scheduler_host_subset_size }}
|
|
{%- endif %}
|
|
|
|
{%- if scheduler_max_attempts %}
|
|
max_attempts = {{ scheduler_max_attempts }}
|
|
{%- 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 -%}
|
|
|
|
[wsgi]
|
|
api_paste_config=/etc/nova/api-paste.ini
|
|
|
|
[pci]
|
|
{% if pci_alias %}
|
|
alias = {{ pci_alias }}
|
|
{% endif %}
|
|
{% for alias in pci_aliases -%}
|
|
alias = {{ alias }}
|
|
{% endfor -%}
|
|
|
|
{% include "section-oslo-middleware" %}
|
|
|
|
{% include "section-audit-middleware-notifications" %}
|
|
|
|
[quota]
|
|
{% if quota_instances is not none -%}
|
|
instances = {{ quota_instances }}
|
|
{% endif -%}
|
|
{% if quota_cores is not none -%}
|
|
cores = {{ quota_cores }}
|
|
{% endif -%}
|
|
{% if quota_ram is not none -%}
|
|
ram = {{ quota_ram }}
|
|
{% endif -%}
|
|
{% if quota_metadata_items is not none -%}
|
|
metadata_items = {{ quota_metadata_items }}
|
|
{% endif -%}
|
|
{% if quota_injected_files is not none -%}
|
|
injected_files = {{ quota_injected_files }}
|
|
{% endif -%}
|
|
{% if quota_injected_file_content_bytes is not none -%}
|
|
injected_file_content_bytes = {{ quota_injected_file_content_bytes }}
|
|
{% endif -%}
|
|
{% if quota_injected_file_path_length is not none -%}
|
|
injected_file_path_length = {{ quota_injected_file_path_length }}
|
|
{% endif -%}
|
|
{% if quota_key_pairs is not none -%}
|
|
key_pairs = {{ quota_key_pairs }}
|
|
{% endif -%}
|
|
{% if quota_server_groups is not none -%}
|
|
server_groups = {{ quota_server_groups }}
|
|
{% endif -%}
|
|
{% if quota_server_group_members is not none -%}
|
|
server_group_members = {{ quota_server_group_members }}
|
|
{% endif -%}
|
|
{% if quota_count_usage_from_placement is sameas true -%}
|
|
count_usage_from_placement = {{ quota_count_usage_from_placement }}
|
|
{% endif -%}
|