cleanup: reduce configuration vars
This patch reduces the number of configuration defaults that we ship with no functional changes for users that were not overriding them. Change-Id: Iec7e7b0ca13e2503344d23095c0f1c30b46bb702
This commit is contained in:
parent
ecfedcb0b8
commit
3d99b2bd80
@ -59,8 +59,6 @@ nova_pip_install_args: "{{ pip_install_options | default('') }}"
|
|||||||
nova_venv_tag: "{{ venv_tag | default('untagged') }}"
|
nova_venv_tag: "{{ venv_tag | default('untagged') }}"
|
||||||
nova_bin: "{{ _nova_bin }}"
|
nova_bin: "{{ _nova_bin }}"
|
||||||
|
|
||||||
nova_fatal_deprecations: False
|
|
||||||
|
|
||||||
## Nova user information
|
## Nova user information
|
||||||
nova_system_user_name: nova
|
nova_system_user_name: nova
|
||||||
nova_system_group_name: nova
|
nova_system_group_name: nova
|
||||||
@ -135,13 +133,6 @@ nova_oslomsg_notify_vhost: "{{ nova_oslomsg_rpc_vhost }}"
|
|||||||
# TODO(ansmith): Change structure when more backends will be supported
|
# TODO(ansmith): Change structure when more backends will be supported
|
||||||
nova_oslomsg_amqp1_enabled: "{{ nova_oslomsg_rpc_transport == 'amqp' }}"
|
nova_oslomsg_amqp1_enabled: "{{ nova_oslomsg_rpc_transport == 'amqp' }}"
|
||||||
|
|
||||||
## RabbitMQ info
|
|
||||||
|
|
||||||
## Configuration for RPC communications
|
|
||||||
nova_rpc_thread_pool_size: 64
|
|
||||||
nova_rpc_conn_pool_size: 30
|
|
||||||
nova_rpc_response_timeout: 60
|
|
||||||
|
|
||||||
## Nova virtualization Types
|
## Nova virtualization Types
|
||||||
# The nova_virt_types dictionary contains global overrides used for
|
# The nova_virt_types dictionary contains global overrides used for
|
||||||
# specific compute types. Every variable inside of this dictionary
|
# specific compute types. Every variable inside of this dictionary
|
||||||
@ -208,9 +199,6 @@ nova_service_adminurl: "{{ nova_service_adminuri }}/v2.1"
|
|||||||
nova_service_internaluri: "{{ nova_service_internaluri_proto }}://{{ internal_lb_vip_address }}:{{ nova_service_port }}"
|
nova_service_internaluri: "{{ nova_service_internaluri_proto }}://{{ internal_lb_vip_address }}:{{ nova_service_port }}"
|
||||||
nova_service_internalurl: "{{ nova_service_internaluri }}/v2.1"
|
nova_service_internalurl: "{{ nova_service_internaluri }}/v2.1"
|
||||||
|
|
||||||
## Nova cinder
|
|
||||||
nova_cross_az_attach: True
|
|
||||||
|
|
||||||
## Nova spice
|
## Nova spice
|
||||||
nova_spice_html5proxy_base_proto: "{{ openstack_service_publicuri_proto | default('http') }}"
|
nova_spice_html5proxy_base_proto: "{{ openstack_service_publicuri_proto | default('http') }}"
|
||||||
nova_spice_html5proxy_base_port: 6082
|
nova_spice_html5proxy_base_port: 6082
|
||||||
@ -246,8 +234,6 @@ nova_metadata_bind_address: 0.0.0.0
|
|||||||
nova_metadata_port: 8775
|
nova_metadata_port: 8775
|
||||||
|
|
||||||
## Nova compute
|
## Nova compute
|
||||||
nova_enable_instance_password: True
|
|
||||||
nova_force_config_drive: False
|
|
||||||
nova_nested_virt_enabled: False
|
nova_nested_virt_enabled: False
|
||||||
|
|
||||||
# Uwsgi settings
|
# Uwsgi settings
|
||||||
@ -285,11 +271,7 @@ nova_external_ssl: false
|
|||||||
nova_secure_proxy_ssl_header: HTTP_X_FORWARDED_PROTO
|
nova_secure_proxy_ssl_header: HTTP_X_FORWARDED_PROTO
|
||||||
|
|
||||||
## Nova global config
|
## Nova global config
|
||||||
nova_max_age: 0
|
|
||||||
nova_remove_unused_resized_minimum_age_seconds: 3600
|
|
||||||
nova_image_cache_manager_interval: 0
|
nova_image_cache_manager_interval: 0
|
||||||
nova_resume_guests_state_on_host_boot: False
|
|
||||||
# nova_default_schedule_zone: nova
|
|
||||||
|
|
||||||
# Comma separated list of Glance API servers
|
# Comma separated list of Glance API servers
|
||||||
nova_glance_api_servers: "{{ (glance_service_internalurl | default('http://localhost')) | urlsplit('scheme') ~ '://' ~ (glance_service_internalurl | default('http://localhost')) | urlsplit('netloc') }}"
|
nova_glance_api_servers: "{{ (glance_service_internalurl | default('http://localhost')) | urlsplit('scheme') ~ '://' ~ (glance_service_internalurl | default('http://localhost')) | urlsplit('netloc') }}"
|
||||||
@ -308,28 +290,14 @@ nova_network_services:
|
|||||||
use_forwarded_for: True
|
use_forwarded_for: True
|
||||||
metadata_proxy_enabled: False
|
metadata_proxy_enabled: False
|
||||||
|
|
||||||
# Nova quota
|
|
||||||
nova_quota_cores: 20
|
|
||||||
nova_quota_injected_file_content_bytes: 10240
|
|
||||||
nova_quota_injected_file_path_length: 255
|
|
||||||
nova_quota_injected_files: 5
|
|
||||||
nova_quota_instances: 10
|
|
||||||
nova_quota_key_pairs: 100
|
|
||||||
nova_quota_metadata_items: 128
|
|
||||||
nova_quota_ram: 51200
|
|
||||||
nova_quota_server_group_members: 10
|
|
||||||
nova_quota_server_groups: 10
|
|
||||||
|
|
||||||
# Nova Scheduler
|
# Nova Scheduler
|
||||||
nova_cpu_allocation_ratio: 2.0
|
nova_cpu_allocation_ratio: 2.0
|
||||||
nova_disk_allocation_ratio: 1.0
|
nova_disk_allocation_ratio: 1.0
|
||||||
nova_max_instances_per_host: 50
|
|
||||||
nova_max_io_ops_per_host: 10
|
nova_max_io_ops_per_host: 10
|
||||||
nova_ram_allocation_ratio: 1.0
|
nova_ram_allocation_ratio: 1.0
|
||||||
nova_ram_weight_multiplier: 5.0
|
nova_ram_weight_multiplier: 5.0
|
||||||
nova_reserved_host_disk_mb: 2048
|
nova_reserved_host_disk_mb: 2048
|
||||||
|
|
||||||
nova_scheduler_driver_task_period: 60
|
|
||||||
nova_scheduler_host_subset_size: 10
|
nova_scheduler_host_subset_size: 10
|
||||||
nova_scheduler_max_attempts: 5
|
nova_scheduler_max_attempts: 5
|
||||||
nova_scheduler_default_filters: >-
|
nova_scheduler_default_filters: >-
|
||||||
@ -346,9 +314,6 @@ nova_scheduler_default_filters: >-
|
|||||||
ServerGroupAntiAffinityFilter,
|
ServerGroupAntiAffinityFilter,
|
||||||
ServerGroupAffinityFilter,
|
ServerGroupAffinityFilter,
|
||||||
NUMATopologyFilter
|
NUMATopologyFilter
|
||||||
nova_scheduler_driver: filter_scheduler
|
|
||||||
nova_scheduler_available_filters: nova.scheduler.filters.all_filters
|
|
||||||
nova_scheduler_weight_classes: nova.scheduler.weights.all_weighers
|
|
||||||
|
|
||||||
# This should be tuned depending on the number of compute hosts present in the
|
# This should be tuned depending on the number of compute hosts present in the
|
||||||
# deployment. Large clouds may wish to disable automatic discovery by setting
|
# deployment. Large clouds may wish to disable automatic discovery by setting
|
||||||
@ -388,18 +353,10 @@ nova_cinder_rbd_inuse: False
|
|||||||
nova_rbd_inuse: "{{ (nova_libvirt_images_rbd_pool is defined) or (nova_cinder_rbd_inuse | bool) }}"
|
nova_rbd_inuse: "{{ (nova_libvirt_images_rbd_pool is defined) or (nova_cinder_rbd_inuse | bool) }}"
|
||||||
|
|
||||||
## General Nova configuration
|
## General Nova configuration
|
||||||
# If ``nova_osapi_compute_workers`` is unset the system will use half the number of available VCPUS to
|
|
||||||
# compute the number of api workers to use.
|
|
||||||
# nova_osapi_compute_workers: 16
|
|
||||||
|
|
||||||
# If ``nova_conductor_workers`` is unset the system will use half the number of available VCPUS to
|
# If ``nova_conductor_workers`` is unset the system will use half the number of available VCPUS to
|
||||||
# compute the number of api workers to use.
|
# compute the number of api workers to use.
|
||||||
# nova_conductor_workers: 16
|
# nova_conductor_workers: 16
|
||||||
|
|
||||||
# If ``nova_metadata_workers`` is unset the system will use half the number of available VCPUS to
|
|
||||||
# compute the number of api workers to use.
|
|
||||||
# nova_metadata_workers: 16
|
|
||||||
|
|
||||||
# If ``nova_scheduler_workers`` is unset the system will use half the number of available VCPUS to
|
# If ``nova_scheduler_workers`` is unset the system will use half the number of available VCPUS to
|
||||||
# compute the number of api workers to use.
|
# compute the number of api workers to use.
|
||||||
# nova_scheduler_workers: 16
|
# nova_scheduler_workers: 16
|
||||||
|
@ -10,10 +10,10 @@ Availability zones
|
|||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Deployers with multiple availability zones can set the
|
Deployers with multiple availability zones can set the
|
||||||
``nova_default_schedule_zone`` Ansible variable to specify an availability zone
|
``nova_nova_conf_overrides.DEFAULT.default_schedule_zone`` Ansible
|
||||||
for new requests. This is useful in environments with different types
|
variable to specify an availability zone for new requests. This is useful
|
||||||
of hypervisors, where builds are sent to certain hardware types based on
|
in environments with different types of hypervisors, where builds are sent
|
||||||
their resource requirements.
|
to certain hardware types based on their resource requirements.
|
||||||
|
|
||||||
For example, if you have servers running on two racks without sharing the PDU.
|
For example, if you have servers running on two racks without sharing the PDU.
|
||||||
These two racks can be grouped into two availability zones.
|
These two racks can be grouped into two availability zones.
|
||||||
@ -93,7 +93,9 @@ with every virtual machine:
|
|||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
nova_force_config_drive: True
|
nova_nova_conf_overrides:
|
||||||
|
DEFAULT:
|
||||||
|
force_config_drive: True
|
||||||
|
|
||||||
Certain formats of config drives can prevent instances from migrating properly
|
Certain formats of config drives can prevent instances from migrating properly
|
||||||
between hypervisors. If you need forced config drives and the ability
|
between hypervisors. If you need forced config drives and the ability
|
||||||
|
41
releasenotes/notes/removed-variables-ce24689e104e537c.yaml
Normal file
41
releasenotes/notes/removed-variables-ce24689e104e537c.yaml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
upgrade:
|
||||||
|
- The following Nova tunables have been removed, users need to start
|
||||||
|
using the `nova_nova_conf_overrides` dictionary to override them.
|
||||||
|
If those values were not previously overridden, there should be no
|
||||||
|
need to override them.
|
||||||
|
|
||||||
|
- nova_quota_cores
|
||||||
|
- nova_quota_injected_file_content_bytes
|
||||||
|
- nova_quota_injected_file_path_length
|
||||||
|
- nova_quota_injected_files
|
||||||
|
- nova_quota_instances
|
||||||
|
- nova_quota_key_pairs
|
||||||
|
- nova_quota_metadata_items
|
||||||
|
- nova_quota_ram
|
||||||
|
- nova_quota_server_group_members
|
||||||
|
- nova_quota_server_groups
|
||||||
|
- nova_max_instances_per_host
|
||||||
|
- nova_scheduler_available_filters
|
||||||
|
- nova_scheduler_weight_classes
|
||||||
|
- nova_scheduler_driver
|
||||||
|
- nova_scheduler_driver_task_period
|
||||||
|
- nova_rpc_conn_pool_size
|
||||||
|
- nova_rpc_thread_pool_size
|
||||||
|
- nova_rpc_response_timeout
|
||||||
|
- nova_force_config_drive
|
||||||
|
- nova_enable_instance_password
|
||||||
|
- nova_default_schedule_zone
|
||||||
|
- nova_fatal_deprecations
|
||||||
|
- nova_resume_guests_state_on_host_boot
|
||||||
|
- nova_cross_az_attach
|
||||||
|
- nova_remove_unused_resized_minimum_age_seconds
|
||||||
|
- nova_cpu_model
|
||||||
|
- nova_cpu_model_extra_flags
|
||||||
|
|
||||||
|
- The following Nova variables have been removed because they have no
|
||||||
|
effect in the current release of Nova.
|
||||||
|
|
||||||
|
- nova_max_age
|
||||||
|
- nova_osapi_compute_workers
|
||||||
|
- nova_metadata_workers
|
@ -3,13 +3,9 @@
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
# Logs / State
|
# Logs / State
|
||||||
debug = {{ debug }}
|
debug = {{ debug }}
|
||||||
fatal_deprecations = {{ nova_fatal_deprecations }}
|
|
||||||
use_journal = True
|
use_journal = True
|
||||||
state_path = {{ nova_system_home_folder }}
|
state_path = {{ nova_system_home_folder }}
|
||||||
service_down_time = 120
|
service_down_time = 120
|
||||||
{% if nova_default_schedule_zone is defined %}
|
|
||||||
default_schedule_zone = {{ nova_default_schedule_zone }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# Scheduler
|
# Scheduler
|
||||||
cpu_allocation_ratio = {{ nova_cpu_allocation_ratio }}
|
cpu_allocation_ratio = {{ nova_cpu_allocation_ratio }}
|
||||||
@ -23,7 +19,6 @@ compute_driver = {{ nova_compute_driver }}
|
|||||||
instances_path = {{ nova_system_home_folder }}/instances
|
instances_path = {{ nova_system_home_folder }}/instances
|
||||||
allow_resize_to_same_host = True
|
allow_resize_to_same_host = True
|
||||||
image_cache_manager_interval = {{ nova_image_cache_manager_interval }}
|
image_cache_manager_interval = {{ nova_image_cache_manager_interval }}
|
||||||
resume_guests_state_on_host_boot = {{ nova_resume_guests_state_on_host_boot }}
|
|
||||||
|
|
||||||
{% if nova_console_user_ssl_cert is defined and nova_console_user_ssl_key is defined and ( nova_services['nova-novncproxy']['group'] in group_names or nova_services['nova-spicehtml5proxy']['group'] in group_names or nova_services['nova-serialconsole-proxy']['group'] in group_names ) %}
|
{% if nova_console_user_ssl_cert is defined and nova_console_user_ssl_key is defined and ( nova_services['nova-novncproxy']['group'] in group_names or nova_services['nova-spicehtml5proxy']['group'] in group_names or nova_services['nova-serialconsole-proxy']['group'] in group_names ) %}
|
||||||
# Console SSL keys
|
# Console SSL keys
|
||||||
@ -34,26 +29,16 @@ key = {{ nova_console_ssl_key }}
|
|||||||
|
|
||||||
# Api's
|
# Api's
|
||||||
enabled_apis = {{ nova_enabled_apis }}
|
enabled_apis = {{ nova_enabled_apis }}
|
||||||
osapi_compute_workers = {{ nova_osapi_compute_workers | default(nova_api_threads) }}
|
|
||||||
|
|
||||||
# Rpc all
|
# Rpc all
|
||||||
transport_url = {{ nova_oslomsg_rpc_transport }}://{% for host in nova_oslomsg_rpc_servers.split(',') %}{{ nova_oslomsg_rpc_userid }}:{{ nova_oslomsg_rpc_password }}@{{ host }}:{{ nova_oslomsg_rpc_port }}{% if not loop.last %},{% else %}/{{ nova_oslomsg_rpc_vhost }}{% if nova_oslomsg_rpc_use_ssl | bool %}?ssl=1{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
|
transport_url = {{ nova_oslomsg_rpc_transport }}://{% for host in nova_oslomsg_rpc_servers.split(',') %}{{ nova_oslomsg_rpc_userid }}:{{ nova_oslomsg_rpc_password }}@{{ host }}:{{ nova_oslomsg_rpc_port }}{% if not loop.last %},{% else %}/{{ nova_oslomsg_rpc_vhost }}{% if nova_oslomsg_rpc_use_ssl | bool %}?ssl=1{% else %}?ssl=0{% endif %}{% endif %}{% endfor %}
|
||||||
|
|
||||||
executor_thread_pool_size = {{ nova_rpc_thread_pool_size }}
|
|
||||||
rpc_response_timeout = {{ nova_rpc_response_timeout }}
|
|
||||||
|
|
||||||
# Metadata
|
|
||||||
metadata_workers = {{ nova_metadata_workers | default(nova_api_threads) }}
|
|
||||||
|
|
||||||
# Network
|
# Network
|
||||||
my_ip = {% if nova_management_address == 'localhost' %}127.0.0.1{% else %}{{ nova_management_address }}{% endif %}
|
my_ip = {% if nova_management_address == 'localhost' %}127.0.0.1{% else %}{{ nova_management_address }}{% endif %}
|
||||||
|
|
||||||
# Hypervisor
|
# Hypervisor
|
||||||
default_ephemeral_format = ext4
|
default_ephemeral_format = ext4
|
||||||
|
|
||||||
# Configdrive
|
|
||||||
force_config_drive = {{ nova_force_config_drive }}
|
|
||||||
|
|
||||||
# Ceilometer notification configurations
|
# Ceilometer notification configurations
|
||||||
{% if nova_ceilometer_enabled %}
|
{% if nova_ceilometer_enabled %}
|
||||||
instance_usage_audit = True
|
instance_usage_audit = True
|
||||||
@ -81,7 +66,6 @@ memcache_servers = {{ memcached_servers }}
|
|||||||
# Cinder
|
# Cinder
|
||||||
[cinder]
|
[cinder]
|
||||||
catalog_info = volumev3:cinderv3:internalURL
|
catalog_info = volumev3:cinderv3:internalURL
|
||||||
cross_az_attach = {{ nova_cross_az_attach }}
|
|
||||||
os_region_name = {{ nova_service_region }}
|
os_region_name = {{ nova_service_region }}
|
||||||
|
|
||||||
{% if nova_console_type == 'spice' %}
|
{% if nova_console_type == 'spice' %}
|
||||||
@ -208,7 +192,6 @@ lock_path = {{ nova_lock_path }}
|
|||||||
|
|
||||||
[oslo_messaging_rabbit]
|
[oslo_messaging_rabbit]
|
||||||
ssl = {{ nova_oslomsg_rpc_use_ssl }}
|
ssl = {{ nova_oslomsg_rpc_use_ssl }}
|
||||||
rpc_conn_pool_size = {{ nova_rpc_conn_pool_size }}
|
|
||||||
|
|
||||||
|
|
||||||
{% if nova_virt_type == 'ironic' %}
|
{% if nova_virt_type == 'ironic' %}
|
||||||
@ -229,15 +212,8 @@ inject_partition = {{ nova_libvirt_inject_partition }}
|
|||||||
inject_password = {{ nova_libvirt_inject_password }}
|
inject_password = {{ nova_libvirt_inject_password }}
|
||||||
inject_key = {{ nova_libvirt_inject_key }}
|
inject_key = {{ nova_libvirt_inject_key }}
|
||||||
virt_type = {{ nova_virt_type }}
|
virt_type = {{ nova_virt_type }}
|
||||||
remove_unused_resized_minimum_age_seconds = {{ nova_remove_unused_resized_minimum_age_seconds }}
|
|
||||||
{% if nova_cpu_mode is defined %}
|
{% if nova_cpu_mode is defined %}
|
||||||
cpu_mode = {{ nova_cpu_mode }}
|
cpu_mode = {{ nova_cpu_mode }}
|
||||||
{% if nova_cpu_mode == 'custom' %}
|
|
||||||
cpu_model = {{ nova_cpu_model }}
|
|
||||||
{% endif %}
|
|
||||||
{% if nova_cpu_model_extra_flags is defined %}
|
|
||||||
cpu_model_extra_flags = {{ nova_cpu_model_extra_flags | join(',') }}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if nova_rbd_inuse %}
|
{% if nova_rbd_inuse %}
|
||||||
@ -279,40 +255,21 @@ secure_proxy_ssl_header = {{ nova_secure_proxy_ssl_header }}
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
[api]
|
[api]
|
||||||
enable_instance_password = {{ nova_enable_instance_password }}
|
|
||||||
use_forwarded_for = {{ nova_network_services[nova_network_type]['use_forwarded_for'] | bool }}
|
use_forwarded_for = {{ nova_network_services[nova_network_type]['use_forwarded_for'] | bool }}
|
||||||
vendordata_jsonfile_path = /etc/nova/vendor_data.json
|
vendordata_jsonfile_path = /etc/nova/vendor_data.json
|
||||||
|
|
||||||
[scheduler]
|
[scheduler]
|
||||||
workers = {{ nova_scheduler_workers | default(nova_api_threads) }}
|
workers = {{ nova_scheduler_workers | default(nova_api_threads) }}
|
||||||
max_attempts = {{ nova_scheduler_max_attempts }}
|
max_attempts = {{ nova_scheduler_max_attempts }}
|
||||||
scheduler_driver = {{ nova_scheduler_driver }}
|
|
||||||
periodic_task_interval = {{ nova_scheduler_driver_task_period }}
|
|
||||||
discover_hosts_in_cells_interval = {{ nova_discover_hosts_in_cells_interval }}
|
discover_hosts_in_cells_interval = {{ nova_discover_hosts_in_cells_interval }}
|
||||||
|
|
||||||
[filter_scheduler]
|
[filter_scheduler]
|
||||||
max_instances_per_host = {{ nova_max_instances_per_host }}
|
|
||||||
max_io_ops_per_host = {{ nova_max_io_ops_per_host }}
|
max_io_ops_per_host = {{ nova_max_io_ops_per_host }}
|
||||||
ram_weight_multiplier = {{ nova_ram_weight_multiplier }}
|
ram_weight_multiplier = {{ nova_ram_weight_multiplier }}
|
||||||
available_filters = {{ nova_scheduler_available_filters }}
|
|
||||||
enabled_filters = {{ nova_scheduler_default_filters }}
|
enabled_filters = {{ nova_scheduler_default_filters }}
|
||||||
host_subset_size = {{ nova_scheduler_host_subset_size }}
|
host_subset_size = {{ nova_scheduler_host_subset_size }}
|
||||||
weight_classes = {{ nova_scheduler_weight_classes }}
|
|
||||||
tracks_instance_changes = {{ nova_scheduler_tracks_instance_changes }}
|
tracks_instance_changes = {{ nova_scheduler_tracks_instance_changes }}
|
||||||
|
|
||||||
[quota]
|
|
||||||
cores = {{ nova_quota_cores }}
|
|
||||||
injected_file_content_bytes = {{ nova_quota_injected_file_content_bytes }}
|
|
||||||
injected_file_path_length = {{ nova_quota_injected_file_path_length }}
|
|
||||||
injected_files = {{ nova_quota_injected_files }}
|
|
||||||
instances = {{ nova_quota_instances }}
|
|
||||||
key_pairs = {{ nova_quota_key_pairs }}
|
|
||||||
max_age = {{ nova_max_age }}
|
|
||||||
metadata_items = {{ nova_quota_metadata_items }}
|
|
||||||
ram = {{ nova_quota_ram }}
|
|
||||||
server_group_members = {{ nova_quota_server_group_members }}
|
|
||||||
server_groups = {{ nova_quota_server_groups }}
|
|
||||||
|
|
||||||
[upgrade_levels]
|
[upgrade_levels]
|
||||||
compute=auto
|
compute=auto
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user