openstack-k8s-operators / nova-operator Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
The current default RabbitMQCluster configuration does not enable durable queues and auto delete features so nova cannot use them and they are disabled by #159. Eventually we want to enable these cluster wide but it needs agreement and adaptation from all the operators using rabbit.
After may failed attempt I think @stuggi found the solution.
type SimpleSpec struct {
// +kubebuilder:validation:Optional
// +kubebuilder:default={one:Example1, two:Example2}
Pair Pair `json:"pair,omitempty"`
// +kubebuilder:validation:Optional
// +kubebuilder:default="bar"
Foo string `json:"foo,omitempty"`
}
type Pair struct {
// +kubebuilder:validation:Optional
// +kubebuilder:default=Example1
One string `json:"one"`
// +kubebuilder:validation:Optional
// +kubebuilder:default=Example2
Two string `json:"two"`
}
Pair
needs to have a full default defined so that when pair
is missing from the input this default will be used as the valueOne
and Two
needs to have its own default defined at the field level, so that when only one of them is defined in the input the other can use the default value defined at the field level.2023-03-22 13:05:33.041 20 ERROR nova.network.neutron [None req-1046e0ce-73a1-430a-9e4b-79637a1a24ea edc732502b8448b2b6dcbce3afed8416 5507f208ce5d434dbbfa30468cf3c011 - - default default] The [neutron] section of your nova configuration file must be configured for authentication with the networking service endpoint. See the networking service install guide for details: https://docs.openstack.org/neutron/latest/install/
2023-03-22 13:05:33.068 20 WARNING nova.scheduler.utils [None req-1046e0ce-73a1-430a-9e4b-79637a1a24ea edc732502b8448b2b6dcbce3afed8416 5507f208ce5d434dbbfa30468cf3c011 - - default default] Failed to compute_task_migrate_server: Unknown auth type: None: neutronclient.common.exceptions.Unauthorized: Unknown auth type: None
2023-03-22 13:05:33.069 20 WARNING nova.scheduler.utils [None req-1046e0ce-73a1-430a-9e4b-79637a1a24ea edc732502b8448b2b6dcbce3afed8416 5507f208ce5d434dbbfa30468cf3c011 - - default default] [instance: 507bd531-6541-43a2-91a1-5052600cf6cd] Setting instance to ACTIVE state.: neutronclient.common.exceptions.Unauthorized: Unknown auth type: None
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server [None req-1046e0ce-73a1-430a-9e4b-79637a1a24ea edc732502b8448b2b6dcbce3afed8416 5507f208ce5d434dbbfa30468cf3c011 - - default default] Exception during message handling: neutronclient.common.exceptions.Unauthorized: Unknown auth type: None
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server Traceback (most recent call last):
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/oslo_messaging/rpc/server.py", line 165, in _process_incoming
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server res = self.dispatcher.dispatch(message)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/oslo_messaging/rpc/dispatcher.py", line 309, in dispatch
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server return self._do_dispatch(endpoint, method, ctxt, args)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/oslo_messaging/rpc/dispatcher.py", line 229, in _do_dispatch
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server result = func(ctxt, **new_args)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/oslo_messaging/rpc/server.py", line 241, in inner
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server return func(*args, **kwargs)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/conductor/manager.py", line 100, in wrapper
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server return fn(self, context, *args, **kwargs)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/compute/utils.py", line 1439, in decorated_function
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server return function(self, context, *args, **kwargs)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/conductor/manager.py", line 331, in migrate_server
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server self._cold_migrate(context, instance, flavor,
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/conductor/manager.py", line 426, in _cold_migrate
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server LOG.info('During %s the instance was deleted.',
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/oslo_utils/excutils.py", line 227, in __exit__
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server self.force_reraise()
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server raise self.value
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/conductor/manager.py", line 385, in _cold_migrate
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server task.execute()
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/conductor/tasks/base.py", line 26, in wrap
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server self.rollback(ex)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/oslo_utils/excutils.py", line 227, in __exit__
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server self.force_reraise()
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server raise self.value
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/conductor/tasks/base.py", line 23, in wrap
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server return original(self)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/conductor/tasks/base.py", line 40, in execute
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server return self._execute()
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/conductor/tasks/migrate.py", line 253, in _execute
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server self.network_api.get_requested_resource_for_instance(
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/network/neutron.py", line 2586, in get_requested_resource_for_instance
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server neutron = get_client(context, admin=True)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/network/neutron.py", line 247, in get_client
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server auth_plugin = _get_auth_plugin(context, admin=admin)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/network/neutron.py", line 227, in _get_auth_plugin
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server _ADMIN_AUTH = _load_auth_plugin(CONF)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server File "/usr/lib/python3.9/site-packages/nova/network/neutron.py", line 88, in _load_auth_plugin
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server raise neutron_client_exc.Unauthorized(message=err_msg)
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server neutronclient.common.exceptions.Unauthorized: Unknown auth type: None
2023-03-22 13:05:33.106 20 ERROR oslo_messaging.rpc.server
This is due to the limited service token configuration in https://github.com/openstack-k8s-operators/nova-operator/blob/master/templates/novaconductor/config/nova.conf
We need to move the conductors to use the new config generation pattern as that config already has a templated out neutron neutron section.
Current we use /bin/true but we should use http-get
$ oc rsh -c nova-metadata-metadata nova-metadata-0 cat /etc/nova/nova.conf
[snip]
[keystone_authtoken]
www_authenticate_uri = <no value>
auth_url = <no value>
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = <no value>
password = <no value>
cafile =
region_name = regionOne
[snip]
This cause metadata request failre:
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler [None req-ec4090a6-681f-43ca-abe9-8d3c89d92d03 - - - - - -] Failed to get metadata for instance id: 1a261b7b-0fbc-4c6d-8324-95fda749f161: keystoneauth1.exceptions.catalog.EndpointNotFound: Could not find requested endpoint in Service Catalog.
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler Traceback (most recent call last):
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/api/metadata/handler.py", line 324, in _get_meta_by_instance_id
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler meta_data = self.get_metadata_by_instance_id(instance_id,
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/api/metadata/handler.py", line 89, in get_metadata_by_instance_id
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler data = base.get_metadata_by_instance_id(instance_id, address)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/api/metadata/base.py", line 694, in get_metadata_by_instance_id
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler return InstanceMetadata(instance, address)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/api/metadata/base.py", line 150, in __init__
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler self.security_groups = security_group_api.get_instance_security_groups(
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/network/security_group_api.py", line 584, in get_instance_security_groups
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler sg_bindings = get_instances_security_groups_bindings(
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/network/security_group_api.py", line 541, in get_instances_security_groups_bindings
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler ports = _get_ports_from_server_list(servers, neutron)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/network/security_group_api.py", line 490, in _get_ports_from_server_list
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler ports.extend(neutron.list_ports(**search_opts).get('ports'))
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/network/neutron.py", line 196, in wrapper
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler ret = obj(*args, **kwargs)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 815, in list_ports
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler return self.list('ports', self.ports_path, retrieve_all,
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/network/neutron.py", line 196, in wrapper
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler ret = obj(*args, **kwargs)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 372, in list
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler for r in self._pagination(collection, path, **params):
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 387, in _pagination
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler res = self.get(path, params=params)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/network/neutron.py", line 196, in wrapper
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler ret = obj(*args, **kwargs)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 356, in get
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler return self.retry_request("GET", action, body=body,
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/network/neutron.py", line 196, in wrapper
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler ret = obj(*args, **kwargs)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 333, in retry_request
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler return self.do_request(method, action, body=body,
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/nova/network/neutron.py", line 196, in wrapper
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler ret = obj(*args, **kwargs)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 284, in do_request
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler resp, replybody = self.httpclient.do_request(action, method, body=body,
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/neutronclient/client.py", line 341, in do_request
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler self._check_uri_length(url)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/neutronclient/client.py", line 334, in _check_uri_length
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler uri_len = len(self.endpoint_url) + len(url)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/neutronclient/client.py", line 348, in endpoint_url
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler return self.get_endpoint()
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/adapter.py", line 291, in get_endpoint
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler return self.session.get_endpoint(auth or self.auth, **kwargs)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/session.py", line 1243, in get_endpoint
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler return auth.get_endpoint(self, **kwargs)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/identity/base.py", line 375, in get_endpoint
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler endpoint_data = self.get_endpoint_data(
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/identity/base.py", line 271, in get_endpoint_data
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler service_catalog = self.get_access(session).service_catalog
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/identity/base.py", line 134, in get_access
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler self.auth_ref = self.get_auth_ref(session)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/identity/generic/base.py", line 206, in get_auth_ref
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler self._plugin = self._do_create_plugin(session)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/identity/generic/base.py", line 136, in _do_create_plugin
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler disc = self.get_discovery(session,
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/identity/base.py", line 608, in get_discovery
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler return discover.get_discovery(session=session, url=url,
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/discover.py", line 1455, in get_discovery
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler disc = Discover(session, url, authenticated=authenticated)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/discover.py", line 535, in __init__
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler self._data = get_version_data(session, url,
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/discover.py", line 102, in get_version_data
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler resp = session.get(url, headers=headers, authenticated=authenticated)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/session.py", line 1141, in get
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler return self.request(url, 'GET', **kwargs)
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler File "/usr/lib/python3.9/site-packages/keystoneauth1/session.py", line 815, in request
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler raise exceptions.EndpointNotFound()
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler keystoneauth1.exceptions.catalog.EndpointNotFound: Could not find requested endpoint in Service Catalog.
2023-03-27 12:01:19.803 12 ERROR nova.api.metadata.handler
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These problems occurred while renovating this repository.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
github.com/openstack-k8s-operators/infra-operator/apis
, github.com/openstack-k8s-operators/keystone-operator/api
, github.com/openstack-k8s-operators/lib-common/modules/common
, github.com/openstack-k8s-operators/lib-common/modules/database
, github.com/openstack-k8s-operators/lib-common/modules/test
, github.com/openstack-k8s-operators/mariadb-operator/api
)api/go.mod
go 1.19
github.com/openstack-k8s-operators/lib-common/modules/common v0.0.0-20230130113944-08eaed348cec@08eaed348cec
k8s.io/api v0.26.1
k8s.io/apimachinery v0.26.1
sigs.k8s.io/controller-runtime v0.14.2
go.mod
go 1.19
github.com/go-logr/logr v1.2.3
github.com/google/uuid v1.3.0
github.com/onsi/ginkgo/v2 v2.8.0
github.com/onsi/gomega v1.26.0
github.com/openshift/api v3.9.0+incompatible
github.com/openstack-k8s-operators/infra-operator/apis v0.0.0-20230203151002-5ca00e898340@5ca00e898340
github.com/openstack-k8s-operators/keystone-operator/api v0.0.0-20230127072022-efdd85d844e1@efdd85d844e1
github.com/openstack-k8s-operators/lib-common/modules/common v0.0.0-20230130113944-08eaed348cec@08eaed348cec
github.com/openstack-k8s-operators/lib-common/modules/database v0.0.0-20230130113944-08eaed348cec@08eaed348cec
github.com/openstack-k8s-operators/lib-common/modules/test v0.0.0-20230130113944-08eaed348cec@08eaed348cec
github.com/openstack-k8s-operators/mariadb-operator/api v0.0.0-20230118093207-9764a3d19c85@9764a3d19c85
go.uber.org/zap v1.24.0
gopkg.in/yaml.v3 v3.0.1
k8s.io/api v0.26.1
k8s.io/apimachinery v0.26.1
k8s.io/client-go v0.26.1
sigs.k8s.io/controller-runtime v0.14.2
There is a bunch of config rendered for the nova-api service that are not needed for the nova-api and therefore confusing to have it in the config of nova-api. E.g.:
[fedora@gibi-f35 install_yamls]$ oc rsh -c nova-api-api pod/nova-api-0
sh-5.1# egrep -e "^[^#]" /etc/nova/nova.conf
[DEFAULT]
state_path = /var/lib/nova
allow_resize_to_same_host = true
max_logfile_count=5
max_logfile_size_mb=50
log_rotation_type=size
log_file = /var/log/nova/nova-api.log
debug=true
initial_cpu_allocation_ratio=4.0
initial_ram_allocation_ratio=1.0
initial_disk_allocation_ratio=0.9
instance_name_template="instance-%(uuid)s"
force_config_drive=True
transport_url=rabbit://fixme
osapi_compute_workers=1
metadata_workers=0
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[oslo_messaging_rabbit]
amqp_durable_queues=true
amqp_auto_delete=true
heartbeat_in_pthread=true
[oslo_policy]
enforce_new_defaults=true
[api]
use_forwarded_for = true
auth_strategy = keystone
[oslo_middleware]
enable_proxy_headers_parsing = True
[wsgi]
api_paste_config = /etc/nova/api-paste.ini
[upgrade_levels]
compute = auto
[oslo_messaging_notifications]
driver = noop
[notifications]
[cache]
enabled = True
backend = oslo_cache.dict
[workarounds]
disable_fallback_pcpu_query=true
enable_qemu_monitor_announce_self=true
reserve_disk_resource_for_image_cache=true
[database]
connection = mysql+pymysql://nova_cell0:12345678@openstack/nova_cell0
[api_database]
connection = mysql+pymysql://nova_api:12345678@openstack/nova_api
[keystone_authtoken]
www_authenticate_uri = http://keystone-public-openstack.apps-crc.testing
auth_url = http://keystone-public-openstack.apps-crc.testing
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = 12345678
cafile =
region_name = regionOne
[placement]
www_authenticate_uri = http://keystone-public-openstack.apps-crc.testing
auth_url = http://keystone-public-openstack.apps-crc.testing
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = 12345678
cafile =
region_name = regionOne
valid_interfaces = internal
[glance]
www_authenticate_uri = http://keystone-public-openstack.apps-crc.testing
auth_url = http://keystone-public-openstack.apps-crc.testing
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = 12345678
cafile =
region_name = regionOne
valid_interfaces = internal
[neutron]
www_authenticate_uri = http://keystone-public-openstack.apps-crc.testing
auth_url = http://keystone-public-openstack.apps-crc.testing
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = 12345678
cafile =
region_name = regionOne
valid_interfaces = internal
metadata_proxy_shared_secret = 42
service_metadata_proxy = true
[root@standalone ~]# ls /etc/ceph
ceph.client.admin.keyring ceph.client.radosgw.keyring
ceph.client.openstack.keyring ceph.conf
[root@standalone ~]# ls /etc/ceph/${cluster}.client.*.keyring | grep -v admin | awk -F . '{print $3}'
openstack
radosgw
[root@standalone ~]# echo ${CLUSTER_USER_MAP[$cluster]}
openstack radosgw
[root@standalone ~]# keyring=$(awk '$1 == "key" {print $3}' /etc/ceph/${cluster}.client.${CLUSTER_USER_MAP[$cluster]}.keyring)
awk: fatal: cannot open file `/etc/ceph/ceph.client.openstack' for reading: No such file or directory
openstack-k8s-operators/data-plane-adoption#58 (comment)
/etc/ceph/${cluster}.client.${CLUSTER_USER_MAP[$cluster]}.keyring
is expanded to /etc/ceph/ceph.client.openstack radosgw.keyring
which breaks the script
To avoid the need to service de-registration at any Deployment restart event we should use StatefulSet instead to keep the hostnames stable. So that we only need to handle service de-registration at a real scale down event.
enforce_new_defaults shoudl be set to true for the api
nova-operator/pkg/novaapi/dbsync.go
Line 53 in 6e5ff21
we should not be runnign as root
https://sdk.operatorframework.io/docs/best-practices/best-practices/#summary-1
"Does not run as root"
we should be using the nova user here.
the nova user and group is 42436
https://github.com/openstack/kolla/blob/master/kolla/common/users.py#L148-L151
Originally posted by @SeanMooney in #84 (comment)
also in
Originally posted by @SeanMooney in #84 (comment)
also in
nova-operator/pkg/novaapi/deployment.go
Line 37 in 6e5ff21
Originally posted by @SeanMooney in #84 (comment)
Current TransportURL Secret handling does not ensure the Secret exists, has a transport_url key, and we don't include it in the InputHash of our Service CRD so we don't detect if the content of the Secret changes.
nova-operator/controllers/novametadata_controller.go
Lines 437 to 443 in 165d29f
calls
nova-operator/controllers/novaapi_controller.go
Lines 603 to 607 in 165d29f
that makes nova-metadata service connected to nova-api pods instead of the nova-metadata pods.
$ oc describe pod nova-metadata | grep service=
service=nova-metadata
$ oc describe service nova-metadata | grep service=
service=nova-api
Selector: service=nova-api
This causes connection error when ovn-metadata agent tries to connect to the nova-metadata from the external compute
nova-api should have
[DEFAULT]
enabled_apis=['osapi_compute']
and the metadtat confg should have
[DEFAULT]
enabled_apis=['metadata']
There are 2 issues with the current naming
reconcileNormal is not partially descriptive in what the function is doing
or differentiating it from the public Reconcile function.
it is a private function used to actually implemented the reconsile called within Reconcile
after reconsile is able to satisfy some basic preconditions like retrieving the instance of the
resource that is to be managed and preparing some commen clients/helpers that will be required to
interact with the k8s API
the other issue is that reconcileNormal is not a particularly PC name scheme
there as some unavoidable uses of normal such as normalisation of import or in vector calculus
where using a different term would be incorrect but we do not need to prop use it to describe the happy path ie. the work to be done if setup succeeds.
The one param per line comes from the python black style to me. I can let that go but what should we do with long lines? I need to wrap it at some point to fit into a screen :) What would be the place of the split? In your example you split at after some parameters in a single line then switched to one line per param for the rest of the params.
Maybe we have too many params for a single function call and we should wrap the params to a single struct.
Originally posted by @gibizer in #87 (comment)
nova-operator/api/v1beta1/novaapi_types.go
Line 100 in 6e5ff21
The nova-api service depends on cell0 DB to register itself. So when the NovaAPI is created it should get the connection information.
We have some flaky test cases where we update Job or Deployment Status to simulate success. However we can race with the nova-operator, that is also updating those entities in parallel. Which can lead to conflict response to in the test. (In the controller too but that is already handled via requeuing the reconciliation)
TODOs left for followup:
Originally posted by @gibizer in #268 (review)
As we want to only support that mode in production we should have the samples reflect that. This though needs install_yamls changes to actually create multiple MariaDB CRs during make nova_deploy
When envtest run locally the test case simulate Job and Deployment success by directly updating Status fields of CRs. When envtest runs against an external cluster the test should not simulate the success but actually need to wait for the success to happen automatically by the cluster. So make the simulation steps dependent on USE_EXISTING_CLUSTER ENV variable.
Today we use a deferred call to always update the Status field when the Reconcile() call exists. We should consider not doing that if the Reconcile() exited due to panic, to avoid persisting potentially incorrect data.
As openstack-k8s-operators/lib-common#63 merged we can now support different DB Service instance for different DB schemas by passing the MariaDB CR name to lib-common to indicate which DB Service we want to use. So Nova controller needs to be adapted to do so when create nova_api and cell0 DB.
i have not had time to dig into this but it looks like our multi cell support is not entirely correct.
[centos@vscode nova-operator]$ oc logs job/nova-cell1-conductor-db-sync
Defaulted container "nova-cell1-conductor-db-sync" out of: nova-cell1-conductor-db-sync, init (init)
INFO:__main__:Loading config file at /var/lib/config-data/merged/nova-conductor-config.json
INFO:__main__:Validating config file
INFO:__main__:Kolla config strategy set to: COPY_ALWAYS
INFO:__main__:Copying service configuration files
INFO:__main__:Deleting /etc/nova/nova.conf
INFO:__main__:Copying /var/lib/config-data/merged/nova.conf to /etc/nova/nova.conf
INFO:__main__:Setting permission for /etc/nova/nova.conf
INFO:__main__:Copying /var/lib/config-data/merged/custom.conf to /etc/nova/nova.conf.d/custom.conf
INFO:__main__:Setting permission for /etc/nova/nova.conf.d/custom.conf
INFO:__main__:Writing out command to execute
INFO:__main__:Setting permission for /var/log/nova
+ '[' cell1 = cell0 ']'
++ crudini --get /etc/nova/nova.conf api_database connection
+ API_DB=mysql+pymysql://nova_api:12345678@openstack/nova_api
+ '[' '!' -z API_DB ']'
++ crudini --get /etc/nova/nova.conf database connection
+ DB=mysql+pymysql://nova_cell1:12345678@openstack/nova_cell1
++ crudini --get /etc/nova/nova.conf DEFAULT transport_url
+ MQ=rabbit://default_user_VPe0WObxmJCkA-XPoHM:[email protected]:5672
+ nova-manage cell_v2 create_cell --name cell1 --database_connection mysql+pymysql://nova_cell1:12345678@openstack/nova_cell1 --transport-url rabbit://default_user_VPe0WObxmJCkA-XPoHM:[email protected]:5672 --verbose
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
The specified transport_url and/or database_connection combination already exists for another cell with uuid 4f99322a-6304-4b1a-a572-3abe98e792c9.
Work is ongoing to have a TransportURL CR openstack-k8s-operators/openstack-operator#27 we can use for rabbit access. After that code is stabilized we can start using them
When an entry is removed from Nova.cellTemplates map the nova-controller does not delete the corresponding NovaCell CR today. But it should.
Nova uses a bunch of other OpenStack services to function. To be able to call those services nova needs their user and password configured.
we are not actuly seeting the requeue timeout here we proably shoudl do that because otherwise the log message is not correct
to have here. we woudl want to log where we actully reque or just remove Requeuing from the error log above
Originally posted by @SeanMooney in #87 (comment)
openstack --debug server create --flavor c1 --image cirros-0.5.2-x86_64-disk --nic net-id=private vm5 --wait
openstack client got 504:
http://nova-public-openstack.apps-crc.testing:80 "POST /v2.1/servers HTTP/1.1" 504 92
RESP: [504] cache-control: no-cache connection: close content-length: 92 content-type: text/html
RESP BODY: Omitted, Content-Type is set to text/html. Only text/plain, application/json responses have their bodies logged.
Unknown Error (HTTP 504)
Traceback (most recent call last):
File "/home/gibi/.local/lib/python3.11/site-packages/cliff/app.py", line 410, in run_subcommand
result = cmd.run(parsed_args)
^^^^^^^^^^^^^^^^^^^^
File "/home/gibi/.local/lib/python3.11/site-packages/osc_lib/command/command.py", line 39, in run
return super(Command, self).run(parsed_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gibi/.local/lib/python3.11/site-packages/cliff/display.py", line 117, in run
column_names, data = self.take_action(parsed_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gibi/.local/lib/python3.11/site-packages/openstackclient/compute/v2/server.py", line 1729, in take_action
server = compute_client.servers.create(*boot_args, **boot_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gibi/.local/lib/python3.11/site-packages/novaclient/v2/servers.py", line 1562, in create
return self._boot(response_key, *boot_args, **boot_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gibi/.local/lib/python3.11/site-packages/novaclient/v2/servers.py", line 887, in _boot
return self._create('/servers', body, response_key,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gibi/.local/lib/python3.11/site-packages/novaclient/base.py", line 363, in _create
resp, body = self.api.client.post(url, body=body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gibi/.local/lib/python3.11/site-packages/keystoneauth1/adapter.py", line 401, in post
return self.request(url, 'POST', **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gibi/.local/lib/python3.11/site-packages/novaclient/client.py", line 78, in request
raise exceptions.from_response(resp, body, url, method)
novaclient.exceptions.ClientException: Unknown Error (HTTP 504)
clean_up CreateServer: Unknown Error (HTTP 504)
END return value: 1
nova-api-0 pods logs:
2023-03-22 17:23:54.283 12 DEBUG nova.api.openstack.wsgi [None req-1c727214-bb04-45fa-94bf-9214b172635d 1475b41fa12f4ccd917600dbdfab9f4c a715e52df9b14daca69eaa2c93c2add9 - - default default] Returning 404 to user: Flavor c1 could not be found. __call__ /usr/lib/python3.9/site-packages/nova/api/openstack/wsgi.py:942
2023-03-22 17:23:54.283 12 INFO nova.api.openstack.requestlog [None req-1c727214-bb04-45fa-94bf-9214b172635d 1475b41fa12f4ccd917600dbdfab9f4c a715e52df9b14daca69eaa2c93c2add9 - - default default] 192.168.130.1 "GET /v2.1/flavors/c1" status: 404 len: 75 microversion: 2.1 time: 0.082676
2023-03-22 17:23:54.287 12 DEBUG nova.api.openstack.wsgi [None req-91a1058c-df04-4435-aa99-c9b176e53e94 1475b41fa12f4ccd917600dbdfab9f4c a715e52df9b14daca69eaa2c93c2add9 - - default default] Calling method '<bound method FlavorsController.index of <nova.api.openstack.compute.flavors.FlavorsController object at 0x7f38522bcc70>>' _process_stack /usr/lib/python3.9/site-packages/nova/api/openstack/wsgi.py:513
2023-03-22 17:23:54.290 12 INFO nova.api.openstack.requestlog [None req-91a1058c-df04-4435-aa99-c9b176e53e94 1475b41fa12f4ccd917600dbdfab9f4c a715e52df9b14daca69eaa2c93c2add9 - - default default] 192.168.130.1 "GET /v2.1/flavors" status: 200 len: 333 microversion: 2.1 time: 0.004020
2023-03-22 17:23:54.293 12 DEBUG nova.api.openstack.wsgi [None req-30f1ef57-930c-4aa4-9cde-f9aa5b386912 1475b41fa12f4ccd917600dbdfab9f4c a715e52df9b14daca69eaa2c93c2add9 - - default default] Calling method '<bound method FlavorsController.show of <nova.api.openstack.compute.flavors.FlavorsController object at 0x7f3852246df0>>' _process_stack /usr/lib/python3.9/site-packages/nova/api/openstack/wsgi.py:513
2023-03-22 17:23:54.296 12 INFO nova.api.openstack.requestlog [None req-30f1ef57-930c-4aa4-9cde-f9aa5b386912 1475b41fa12f4ccd917600dbdfab9f4c a715e52df9b14daca69eaa2c93c2add9 - - default default] 192.168.130.1 "GET /v2.1/flavors/7c596f09-3ea0-4f77-8cc1-118e624d9243" status: 200 len: 500 microversion: 2.1 time: 0.003312
2023-03-22 17:23:54.457 12 DEBUG nova.api.openstack.wsgi [None req-147455bd-4973-457c-b8d8-243e846be3dc 1475b41fa12f4ccd917600dbdfab9f4c a715e52df9b14daca69eaa2c93c2add9 - - default default] Action: 'create', calling method: <bound method ServersController.create of <nova.api.openstack.compute.servers.ServersController object at 0x7f385208f8b0>>, body: {"server": {"name": "vm5", "imageRef": "fa062cd8-9cc0-458a-9181-c811e005ae44", "flavorRef": "7c596f09-3ea0-4f77-8cc1-118e624d9243", "min_count": 1, "max_count": 1, "networks": [{"uuid": "6e1cf8b3-6aee-4054-804f-074787a4bd43"}]}} _process_stack /usr/lib/python3.9/site-packages/nova/api/openstack/wsgi.py:511
at this point nova-api-0 hangs, then after a while k8s kills the pod and starts a new one.
There is no event in the statefulset nova-api about the restart but by watching the statefulset during the reproduction I see that the availableReplicas goes from 1 to 0 then back to 1.
Content of the log of nova-api-api container:
192.168.130.1 - - [22/Mar/2023:17:36:21 +0000] "GET /v2.1/flavors/c1 HTTP/1.1" 404 75 "-" "python-novaclient"
AH01628: authorization result: granted (no directives)
192.168.130.1 - - [22/Mar/2023:17:36:21 +0000] "GET /v2.1/flavors HTTP/1.1" 200 333 "-" "python-novaclient"
AH01628: authorization result: granted (no directives)
192.168.130.1 - - [22/Mar/2023:17:36:21 +0000] "GET /v2.1/flavors/7c596f09-3ea0-4f77-8cc1-118e624d9243 HTTP/1.1" 200 500 "-" "python-novaclient"
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
Timeout when reading response headers from daemon process 'nova-api': /usr/bin/nova-api-wsgi
192.168.130.1 - - [22/Mar/2023:17:36:21 +0000] "POST /v2.1/servers HTTP/1.1" 504 247 "-" "python-novaclient"
AH00470: network write failure in core output filter
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
Timeout when reading response headers from daemon process 'nova-api': /usr/bin/nova-api-wsgi
10.217.0.1 - - [22/Mar/2023:17:36:24 +0000] "GET / HTTP/1.1" 504 247 "-" "kube-probe/1.25"
Timeout when reading response headers from daemon process 'nova-api': /usr/bin/nova-api-wsgi
10.217.0.1 - - [22/Mar/2023:17:36:24 +0000] "GET / HTTP/1.1" 504 247 "-" "kube-probe/1.25"
Timeout when reading response headers from daemon process 'nova-api': /usr/bin/nova-api-wsgi
10.217.0.1 - - [22/Mar/2023:17:36:24 +0000] "GET / HTTP/1.1" 504 247 "-" "kube-probe/1.25"
Timeout when reading response headers from daemon process 'nova-api': /usr/bin/nova-api-wsgi
10.217.0.1 - - [22/Mar/2023:17:36:24 +0000] "GET / HTTP/1.1" 504 247 "-" "kube-probe/1.25"
Timeout when reading response headers from daemon process 'nova-api': /usr/bin/nova-api-wsgi
10.217.0.1 - - [22/Mar/2023:17:36:29 +0000] "GET / HTTP/1.1" 504 247 "-" "kube-probe/1.25"
AH00470: network write failure in core output filter
Timeout when reading response headers from daemon process 'nova-api': /usr/bin/nova-api-wsgi
10.217.0.1 - - [22/Mar/2023:17:36:29 +0000] "GET / HTTP/1.1" 504 247 "-" "kube-probe/1.25"
AH00470: network write failure in core output filter
mod_wsgi (pid=12): Shutdown requested 'nova-api'.
Based on this the nova-api-wsgi just hang and that blocked the kube-probe requests as well.
โณ Pushing "nova-operator:latest, nova-operator:9d34e43bd0dfa07b8f77804bea77c1cdb937e275" to "quay.io//nova-operator:latest, quay.io//nova-operator:9d34e43bd0dfa07b8f77804bea77c1cdb937e275" respectively as ""
/usr/bin/podman push --quiet --digestfile nova-operator-latest_digest.txt nova-operator:latest quay.io//nova-operator:latest --tls-verify=true --creds=:
Error: writing blob: initiating layer upload to /v2/***/nova-operator/blobs/uploads/ in quay.io: unauthorized: access to the requested resource is not authorized
https://github.com/openstack-k8s-operators/nova-operator/actions/runs/3225689260
basically i just need to change the cluster user map form a map of string to string to a map of string to list of string and add an additional loop over the users
Originally posted by @SeanMooney in #301 (comment)
Currently the [keystone_authtoken] www_authenticate_uri
option points internal url, but this should point public url, because the url is returned to clients when auth request fails.
We probably have to add separate options for public/internal endpoint and use different endpoints accordingly.
as of ab34bb0
the edpm ssh key secrete is being passed to the config gen function instead of the instance CR secret
ab34bb0#diff-195a08f97364d8db1117085a1fe611eb7a17542c70dd06f224e439bdc2ddd439R161-R194
as a result, the nova keystone user password is not set in the nova.conf in compute nodes.
Currently the dbsync run by NovaConductor controller registers the cell to the DB if the cell has API DB access. We should move this logic to a Job in Nova controller to make it work for cells without API DB access.
Another reason to move the cell registration logic to Nova as the top level services (nova-api, nova super conductor, nova-scheduyler) need to be restarted after a new cell is registered to clean up the cell caches in these services.
It seems the current reconciler re-runs the deployment steps after each nova-operator restart.
To reproduce:
Expected behavior:
If nothing is changed in the NovaExternalCompute resource then the ansible code is not re-run
Actual behavior:
The ansible code is re-run each time.
While re-running ansible should not cause any trouble as we expect that the ansible code is idempotent it will still causes many 2N ansible execution in an environment with N compute for each nova-operator restart.
To tease out unstable tests run them in parallel and in random order. This might need a change to the make test
target to call ginkgo directly instead of via go test
Our Job (e.g. DB sync) execution logic is the following:
Even after fixing the logic error in lib-common and moving the job deletion after the hash is persisted I can still reproduce duplicated Job execution in envtest but with less frequency and with a different root cause.
Note that this can be reproduced infrequently and it needs the compute running the test env to be (IO?) loaded. I used pre-commit run -a
in a loop in parallel to generate the load.
The below logs produced with an instrumented version of the nova-operator
The test were run with KUBEBUILDER_ASSETS=/home/gibi/.local/share/kubebuilder-envtest/k8s/1.24.2-linux-amd64/ ginkgo --focus '' -v --fail-fast ./...
There are two types of reproduction:
1.6658193073443248e+09 INFO ---Test--- Simulated job success {"on": "66c980f4-8034-42fb-8121-9090bfa3d3d3/192d77d4-ce9d-4473-8ee8-34049e11ac0f-cell-db-sync"} 1.6658193073443933e+09 INFO ---Test--- ExpectCondition {"type": "DBSyncReady", "expected status": "True", "on": "66c980f4-8034-42fb-8121-9090bfa3d3d3/192d77d4-ce9d-4473-8ee8-34049e11ac0f"} 1.665819307349581e+09 INFO Reconciling {"controller": "novaconductor", "controllerGroup": "nova.openstack.org", "controllerKind": "NovaConductor", "NovaConductor": {"name":"cf487061-647c-4a70-ad62-fbcb97f7de2e","namespace":"1c365e00-0f5c-46d0-85b7-15d327e17da6"}, "namespace": "1c365e00-0f5c-46d0-85b7-15d327e17da6", "name": "cf487061-647c-4a70-ad62-fbcb97f7de2e", "reconcileID": "fea4a743-e4fd-4e41-9806-f576d0503f65", "request": "1c365e00-0f5c-46d0-85b7-15d327e17da6/cf487061-647c-4a70-ad62-fbcb97f7de2e"} 1.6658193073497856e+09 INFO controllers.NovaConductor Reconciling {"hash": "", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "1c365e00-0f5c-46d0-85b7-15d327e17da6", "ObjectName": "cf487061-647c-4a70-ad62-fbcb97f7de2e"} 1.6658193073630116e+09 INFO Reconciling {"controller": "novaconductor", "controllerGroup": "nova.openstack.org", "controllerKind": "NovaConductor", "NovaConductor": {"name":"30653c02-33ff-403b-9385-7e14a9dad922","namespace":"d5687987-fea3-44d1-bb6a-8d5e3c5856d4"}, "namespace": "d5687987-fea3-44d1-bb6a-8d5e3c5856d4", "name": "30653c02-33ff-403b-9385-7e14a9dad922", "reconcileID": "f41669b2-4019-4894-ad29-615735fa8bec", "request": "d5687987-fea3-44d1-bb6a-8d5e3c5856d4/30653c02-33ff-403b-9385-7e14a9dad922"} 1.6658193073632247e+09 INFO controllers.NovaConductor Reconciling {"hash": "", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "d5687987-fea3-44d1-bb6a-8d5e3c5856d4", "ObjectName": "30653c02-33ff-403b-9385-7e14a9dad922"} 1.6658193073699455e+09 INFO Reconciling {"controller": "novaconductor", "controllerGroup": "nova.openstack.org", "controllerKind": "NovaConductor", "NovaConductor": {"name":"192d77d4-ce9d-4473-8ee8-34049e11ac0f","namespace":"66c980f4-8034-42fb-8121-9090bfa3d3d3"}, "namespace": "66c980f4-8034-42fb-8121-9090bfa3d3d3", "name": "192d77d4-ce9d-4473-8ee8-34049e11ac0f", "reconcileID": "801b971f-08ea-453a-a69b-28b1f81bc898", "request": "66c980f4-8034-42fb-8121-9090bfa3d3d3/192d77d4-ce9d-4473-8ee8-34049e11ac0f"} 1.6658193073700974e+09 INFO controllers.NovaConductor Reconciling {"hash": "", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "66c980f4-8034-42fb-8121-9090bfa3d3d3", "ObjectName": "192d77d4-ce9d-4473-8ee8-34049e11ac0f"} 1.6658193073709254e+09 INFO controllers.NovaConductor Job Status Successful 1.6658193073709402e+09 INFO controllers.NovaConductor DoJob {"persisted hash": "", "new job hash": "n55ch64dh76h659h57dh566h54h65dh89h5ddh64ch5d5hbdh98h64h6ch664h8h8dh578h97h64fh8dhd7h655h554h54bhf6h69h9fh5f7h65bq", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "66c980f4-8034-42fb-8121-9090bfa3d3d3", "ObjectName": "192d77d4-ce9d-4473-8ee8-34049e11ac0f"} 1.6658193073709626e+09 INFO controllers.NovaConductor !@!@!@!@!@!@!@!@!@!About to persist DB sync hash {"hash": "n55ch64dh76h659h57dh566h54h65dh89h5ddh64ch5d5hbdh98h64h6ch664h8h8dh578h97h64fh8dhd7h655h554h54bhf6h69h9fh5f7h65bq", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "66c980f4-8034-42fb-8121-9090bfa3d3d3", "ObjectName": "192d77d4-ce9d-4473-8ee8-34049e11ac0f"} 1.6658193073753877e+09 INFO controllers.NovaConductor Deleting Job {"Job.Namespace": "66c980f4-8034-42fb-8121-9090bfa3d3d3", "Job.Name": "192d77d4-ce9d-4473-8ee8-34049e11ac0f-cell-db-sync", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "66c980f4-8034-42fb-8121-9090bfa3d3d3", "ObjectName": "192d77d4-ce9d-4473-8ee8-34049e11ac0f"} 1.6658193073759675e+09 INFO ---Test--- ExpectCondition succeeded {"type": "DBSyncReady", "expected status": "True", "on": "66c980f4-8034-42fb-8121-9090bfa3d3d3/192d77d4-ce9d-4473-8ee8-34049e11ac0f"} 1.6658193073774097e+09 INFO controllers.NovaConductor @@ successfully saved hash {"hash": "n55ch64dh76h659h57dh566h54h65dh89h5ddh64ch5d5hbdh98h64h6ch664h8h8dh578h97h64fh8dhd7h655h554h54bhf6h69h9fh5f7h65bq", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "66c980f4-8034-42fb-8121-9090bfa3d3d3", "ObjectName": "192d77d4-ce9d-4473-8ee8-34049e11ac0f"} 1.665819307377457e+09 INFO controllers.NovaConductor @@ instance read back {"hash": "n55ch64dh76h659h57dh566h54h65dh89h5ddh64ch5d5hbdh98h64h6ch664h8h8dh578h97h64fh8dhd7h655h554h54bhf6h69h9fh5f7h65bq", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "66c980f4-8034-42fb-8121-9090bfa3d3d3", "ObjectName": "192d77d4-ce9d-4473-8ee8-34049e11ac0f"} 1.6658193073775167e+09 INFO Reconciling {"controller": "novaconductor", "controllerGroup": "nova.openstack.org", "controllerKind": "NovaConductor", "NovaConductor": {"name":"4c10a882-b51d-4a8d-97d7-560e5151e505","namespace":"dab13b22-73aa-4ee7-b238-f007942d3297"}, "namespace": "dab13b22-73aa-4ee7-b238-f007942d3297", "name": "4c10a882-b51d-4a8d-97d7-560e5151e505", "reconcileID": "7792e8d0-3698-4623-b4ea-e0a7685c97a6", "request": "dab13b22-73aa-4ee7-b238-f007942d3297/4c10a882-b51d-4a8d-97d7-560e5151e505"} 1.6658193073776546e+09 INFO controllers.NovaConductor Reconciling {"hash": "", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "dab13b22-73aa-4ee7-b238-f007942d3297", "ObjectName": "4c10a882-b51d-4a8d-97d7-560e5151e505"} 1.665819307385968e+09 INFO Reconciling {"controller": "novaconductor", "controllerGroup": "nova.openstack.org", "controllerKind": "NovaConductor", "NovaConductor": {"name":"cf487061-647c-4a70-ad62-fbcb97f7de2e","namespace":"1c365e00-0f5c-46d0-85b7-15d327e17da6"}, "namespace": "1c365e00-0f5c-46d0-85b7-15d327e17da6", "name": "cf487061-647c-4a70-ad62-fbcb97f7de2e", "reconcileID": "30e6a162-6c99-44f5-a4cc-aba9760af803", "request": "1c365e00-0f5c-46d0-85b7-15d327e17da6/cf487061-647c-4a70-ad62-fbcb97f7de2e"} 1.6658193073861756e+09 INFO controllers.NovaConductor Reconciling {"hash": "", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "1c365e00-0f5c-46d0-85b7-15d327e17da6", "ObjectName": "cf487061-647c-4a70-ad62-fbcb97f7de2e"}
The log shows that NovaConductor saved the hash without an error and it was even able to read it back from k8s. Then the next reconciliation of NovaConductor the controller reads the instance again and it has no hash. But the test ends here so the second job creation is not visible in the log but based on the code it would lead to a second DB sync.
1.665822723452333e+09 INFO controllers.NovaConductor Reconciling {"hash": "", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227234566615e+09 INFO controllers.NovaConductor Job Status incomplete... requeuing 1.665822723456689e+09 INFO controllers.NovaConductor DoJob {"persisted hash": "", "new job hash": "n587h5cfhffh67fhbdh5ffhdch695h67dh677h97h8h689h59dhd9hb9h84h698h55ch598h5cdh5f6h4h5d9hd8h64bh64fh548h57fh699h594h57dq", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.665822723457244e+09 INFO ---Test--- Simulated job success {"on": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c/f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0-cell-db-sync"} 1.6658227234574397e+09 INFO controllers.NovaCell NovaConductor f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0 updated. {"ObjectType": "*v1beta1.NovaCell", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227234574695e+09 INFO controllers.NovaCell After updating conductor {"hash": "", "ObjectType": "*v1beta1.NovaCell", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227234736543e+09 INFO controllers.Nova Updated status at the end of reconciliation {"ObjectType": "*v1beta1.Nova", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc"} 1.665822723473751e+09 INFO Reconciling {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc","namespace":"ff442c24-e9d5-470b-b54b-ce6d48bf8f0c"}, "namespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "name": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc", "reconcileID": "28628b44-6dea-45af-b1f4-30a3ca334114", "request": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c/f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc"} 1.6658227234741585e+09 INFO controllers.Nova Reconciling {"ObjectType": "*v1beta1.Nova", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc"} 1.665822723479182e+09 INFO Reconciling {"controller": "novaconductor", "controllerGroup": "nova.openstack.org", "controllerKind": "NovaConductor", "NovaConductor": {"name":"f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0","namespace":"ff442c24-e9d5-470b-b54b-ce6d48bf8f0c"}, "namespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "name": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0", "reconcileID": "12b8e326-f4e4-4a28-9712-77a6f0490dd4", "request": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c/f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227234793909e+09 INFO controllers.NovaConductor Reconciling {"hash": "", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227234871306e+09 INFO controllers.NovaCell Updated status at the end of reconciliation {"ObjectType": "*v1beta1.NovaCell", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227234947073e+09 INFO Reconciling {"controller": "novacell", "controllerGroup": "nova.openstack.org", "controllerKind": "NovaCell", "NovaCell": {"name":"f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0","namespace":"ff442c24-e9d5-470b-b54b-ce6d48bf8f0c"}, "namespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "name": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0", "reconcileID": "c65a37d8-3f90-41a4-9c87-14f377e30c74", "request": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c/f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227234975305e+09 INFO controllers.NovaConductor Job Status Successful 1.6658227234975674e+09 INFO controllers.NovaConductor DoJob {"persisted hash": "", "new job hash": "n587h5cfhffh67fhbdh5ffhdch695h67dh677h97h8h689h59dhd9hb9h84h698h55ch598h5cdh5f6h4h5d9hd8h64bh64fh548h57fh699h594h57dq", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.665822723497598e+09 INFO controllers.NovaConductor !@!@!@!@!@!@!@!@!@!About to persist DB sync hash {"hash": "n587h5cfhffh67fhbdh5ffhdch695h67dh677h97h8h689h59dhd9hb9h84h698h55ch598h5cdh5f6h4h5d9hd8h64bh64fh548h57fh699h594h57dq", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227234992487e+09 INFO controllers.NovaCell Reconciling {"ObjectType": "*v1beta1.NovaCell", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227234993303e+09 INFO controllers.NovaCell Before updating conductor {"hash": "", "ObjectType": "*v1beta1.NovaCell", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227235178542e+09 INFO controllers.NovaConductor Deleting Job {"Job.Namespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "Job.Name": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0-cell-db-sync", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227235287838e+09 INFO controllers.NovaConductor @@ successfully saved hash {"hash": "n587h5cfhffh67fhbdh5ffhdch695h67dh677h97h8h689h59dhd9hb9h84h698h55ch598h5cdh5f6h4h5d9hd8h64bh64fh548h57fh699h594h57dq", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227235288546e+09 INFO controllers.NovaConductor @@ instance read back {"hash": "n587h5cfhffh67fhbdh5ffhdch695h67dh677h97h8h689h59dhd9hb9h84h698h55ch598h5cdh5f6h4h5d9hd8h64bh64fh548h57fh699h594h57dq", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227235289252e+09 INFO Reconciling {"controller": "novaconductor", "controllerGroup": "nova.openstack.org", "controllerKind": "NovaConductor", "NovaConductor": {"name":"f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0","namespace":"ff442c24-e9d5-470b-b54b-ce6d48bf8f0c"}, "namespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "name": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0", "reconcileID": "a534f3d5-5df8-4734-9cd2-f4d9de67cb5c", "request": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c/f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227235291655e+09 INFO controllers.NovaConductor Reconciling {"hash": "", "ObjectType": "*v1beta1.NovaConductor", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227235402277e+09 INFO controllers.NovaCell Updated status at the end of reconciliation {"ObjectType": "*v1beta1.NovaCell", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227235402787e+09 ERROR Reconciler error {"controller": "novacell", "controllerGroup": "nova.openstack.org", "controllerKind": "NovaCell", "NovaCell": {"name":"f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0","namespace":"ff442c24-e9d5-470b-b54b-ce6d48bf8f0c"}, "namespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "name": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0", "reconcileID": "c65a37d8-3f90-41a4-9c87-14f377e30c74", "error": "Operation cannot be fulfilled on novaconductors.nova.openstack.org \"f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0\": the object has been modified; please apply your changes to the latest version and try again"} sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler /home/gibi/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:326 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem /home/gibi/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:273 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2 /home/gibi/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:234 1.6658227235403993e+09 INFO Reconciling {"controller": "novacell", "controllerGroup": "nova.openstack.org", "controllerKind": "NovaCell", "NovaCell": {"name":"f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0","namespace":"ff442c24-e9d5-470b-b54b-ce6d48bf8f0c"}, "namespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "name": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0", "reconcileID": "e09db44e-2ca7-4950-8373-1d5374f83bca", "request": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c/f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.665822723540631e+09 INFO controllers.NovaCell Reconciling {"ObjectType": "*v1beta1.NovaCell", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.6658227235406656e+09 INFO controllers.NovaCell Before updating conductor {"hash": "n587h5cfhffh67fhbdh5ffhdch695h67dh677h97h8h689h59dhd9hb9h84h698h55ch598h5cdh5f6h4h5d9hd8h64bh64fh548h57fh699h594h57dq", "ObjectType": "*v1beta1.NovaCell", "ObjectNamespace": "ff442c24-e9d5-470b-b54b-ce6d48bf8f0c", "ObjectName": "f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0"} 1.665822723546473e+09 INFO controllers.NovaConductor Job dbsync f5f7bc8c-bf1c-4c0a-a1a5-0c80f0d942cc-cell0-cell-db-sync - created
This also shows that the job finished, the hash is persisted and read back and the Job is deleted. Then the next reconcile of NovaConductor does not see the persisted hash and therefore creates the Job again.
It is almost like the reconciler reads stale data from k8s / etcd. I tried to reproduce this stale read behavior in a simple operator but without luck.
im not partically happy with supporting this.
but im glad you at least have tests for it
if we do support this when its set back to false it shoudl delete all jobs that were created while the deleteion is disabeld.
Originally posted by @SeanMooney in #87 (comment)
it took me a while to realise we are not prefixing the names here because i assume
we are using the rc name as the name of the db right?
can you add a comment to descibe why the dbs are differnt just to make it clear.
Originally posted by @SeanMooney in #87 (comment)
We set metadata_workers to 0 for the nova-api and the nova-api starts but fails to load the full oslo configuration as the config validation fails with:
$ oc logs nova-api-0 -f -c nova-api-api
[snip]
+ exec /usr/sbin/httpd -DFOREGROUND
mod_wsgi (pid=12): Attach interpreter ''.
mod_wsgi (pid=12): Imported 'mod_wsgi'.
mod_wsgi (pid=12): Started thread 0 in daemon process 'nova-api'.
AH01628: authorization result: granted (no directives)
AH01628: authorization result: granted (no directives)
mod_wsgi (pid=12, process='nova-api', application=''): Loading Python script file '/usr/bin/nova-api-wsgi'.
Modules with known eventlet monkey patching issues were imported prior to eventlet monkey patching: urllib3. This warning can usually be ignored if the caller is only importing and not executing nova code.
mod_wsgi (pid=12): Callback registration for signal 12 ignored.
File "/usr/bin/nova-api-wsgi", line 52, in <module>
application = init_application()
File "/usr/lib/python3.9/site-packages/nova/api/openstack/compute/wsgi.py", line 20, in init_application
return wsgi_app.init_application(NAME)
File "/usr/lib/python3.9/site-packages/nova/api/openstack/wsgi_app.py", line 128, in init_application
init_global_data(conf_files, name)
File "/usr/lib/python3.9/site-packages/nova/utils.py", line 1122, in wrapper
return func(*args, **kwargs)
File "/usr/lib/python3.9/site-packages/nova/api/openstack/wsgi_app.py", line 105, in init_global_data
gmr.TextGuruMeditation.setup_autorun(
File "/usr/lib/python3.9/site-packages/oslo_reports/guru_meditation_report.py", line 152, in setup_autorun
cls._setup_signal(signal.SIGUSR2,
File "/usr/lib/python3.9/site-packages/oslo_reports/guru_meditation_report.py", line 185, in _setup_signal
signal.signal(signum,
mod_wsgi (pid=12): Failed to exec Python script file '/usr/bin/nova-api-wsgi'.
mod_wsgi (pid=12): Exception occurred processing WSGI script '/usr/bin/nova-api-wsgi'.
Traceback (most recent call last):
File "/usr/lib/python3.9/site-packages/oslo_config/cfg.py", line 2716, in _do_get
return (convert(val), alt_loc)
File "/usr/lib/python3.9/site-packages/oslo_config/cfg.py", line 2685, in convert
return self._convert_value(
File "/usr/lib/python3.9/site-packages/oslo_config/cfg.py", line 2813, in _convert_value
return opt.type(value)
File "/usr/lib/python3.9/site-packages/oslo_config/types.py", line 315, in __call__
raise ValueError('Should be greater than or equal to %g' %
ValueError: Should be greater than or equal to 1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/nova-api-wsgi", line 52, in <module>
application = init_application()
File "/usr/lib/python3.9/site-packages/nova/api/openstack/compute/wsgi.py", line 20, in init_application
return wsgi_app.init_application(NAME)
File "/usr/lib/python3.9/site-packages/nova/api/openstack/wsgi_app.py", line 128, in init_application
init_global_data(conf_files, name)
File "/usr/lib/python3.9/site-packages/nova/utils.py", line 1122, in wrapper
return func(*args, **kwargs)
File "/usr/lib/python3.9/site-packages/nova/api/openstack/wsgi_app.py", line 114, in init_global_data
CONF.log_opt_values(
File "/usr/lib/python3.9/site-packages/oslo_config/cfg.py", line 2603, in log_opt_values
_sanitize(opt, getattr(self, opt_name)))
File "/usr/lib/python3.9/site-packages/oslo_config/cfg.py", line 2219, in __getattr__
return self._get(name)
File "/usr/lib/python3.9/site-packages/oslo_config/cfg.py", line 2653, in _get
value, loc = self._do_get(name, group, namespace)
File "/usr/lib/python3.9/site-packages/oslo_config/cfg.py", line 2732, in _do_get
raise ConfigFileValueError(message)
oslo_config.cfg.ConfigFileValueError: Value for option metadata_workers from LocationInfo(location=<Locations.user: (4, True)>, detail='/etc/nova/nova.conf.d/01-nova.conf') is not valid: Should be greater than or equal to 1
Then the nova-api only logs a subset of the oslo.config parameters so it actually runs with a partial config:
2023-07-05 08:33:50.247 12 DEBUG nova.api.openstack.wsgi_app [-] ******************************************************************************** log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2589
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] Configuration options gathered from: log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2590
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] command line args: [] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2591
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] config files: ['/etc/nova/api-paste.ini', '/etc/nova/nova.conf'] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2592
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] ================================================================================ log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2594
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] allow_resize_to_same_host = True log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] arq_binding_timeout = 300 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] block_device_allocate_retries = 60 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] block_device_allocate_retries_interval = 3 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] cert = self.pem log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] compute_driver = None log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.248 12 DEBUG nova.api.openstack.wsgi_app [-] compute_monitors = [] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] config_dir = ['/etc/nova/nova.conf.d'] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] config_drive_format = iso9660 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] config_file = ['/etc/nova/api-paste.ini', '/etc/nova/nova.conf'] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] config_source = [] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] console_host = nova-api-0 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] control_exchange = nova log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] cpu_allocation_ratio = None log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] daemon = False log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] debug = True log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] default_access_ip_network_name = None log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] default_availability_zone = nova log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] default_ephemeral_format = None log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.249 12 DEBUG nova.api.openstack.wsgi_app [-] default_log_levels = ['amqp=WARN', 'amqplib=WARN', 'boto=WARN', 'qpid=WARN', 'sqlalchemy=WARN', 'suds=INFO', 'oslo.messaging=INFO', 'oslo_messaging=INFO', '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', 'oslo_policy=INFO', 'dogpile.core.dogpile=INFO', 'glanceclient=WARN', 'oslo.privsep.daemon=INFO'] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] default_schedule_zone = None log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] disk_allocation_ratio = None log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] enable_new_services = True log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] enabled_apis = ['osapi_compute', 'metadata'] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] enabled_ssl_apis = [] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] flat_injected = False log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] force_config_drive = True log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] force_raw_images = True log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] graceful_shutdown_timeout = 60 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] heal_instance_info_cache_interval = 60 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] host = nova-api-0 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] initial_cpu_allocation_ratio = 4.0 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] initial_disk_allocation_ratio = 1.0 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] initial_ram_allocation_ratio = 1.0 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.250 12 DEBUG nova.api.openstack.wsgi_app [-] injected_network_template = /usr/lib/python3.9/site-packages/nova/virt/interfaces.template log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] instance_build_timeout = 0 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] instance_delete_interval = 300 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] instance_format = [instance: %(uuid)s] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] instance_name_template = instance-%08x log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] instance_usage_audit = False log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] instance_usage_audit_period = month log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] instance_uuid_format = [instance: %(uuid)s] log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] instances_path = /var/lib/nova/instances log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] internal_service_availability_zone = internal log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] key = None log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] live_migration_retry_count = 30 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] log_config_append = None log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] log_date_format = %Y-%m-%d %H:%M:%S log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] log_dir = None log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] log_file = /var/log/nova/nova-api.log log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] log_options = True log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] log_rotate_interval = 1 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.251 12 DEBUG nova.api.openstack.wsgi_app [-] log_rotate_interval_type = days log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] log_rotation_type = size log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] logging_user_identity_format = %(user)s %(project)s %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] long_rpc_timeout = 1800 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] max_concurrent_builds = 10 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] max_concurrent_live_migrations = 1 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] max_concurrent_snapshots = 5 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] max_local_block_devices = 3 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] max_logfile_count = 5 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] max_logfile_size_mb = 50 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] maximum_instance_delete_attempts = 5 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] metadata_listen = 0.0.0.0 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.252 12 DEBUG nova.api.openstack.wsgi_app [-] metadata_listen_port = 8775 log_opt_values /usr/lib/python3.9/site-packages/oslo_config/cfg.py:2602
2023-07-05 08:33:50.254 12 INFO nova.api.openstack.wsgi_app [-] Global data already initialized, not re-initializing.
If the metadata_workers
is set to 1 the nova-api dumps the full oslo.config as expected see full.txt
if this was nova i woudl wonder if we should have a hacking check to ensure that where we have a Gomega object in scope we use it when adding asserts like this to ensure the failures are captures properly
Originally posted by @SeanMooney in #111 (comment)
The current ceph integration does not have env test coverage or other test in ci.
we should fix that.
A failed ansible run leaves the job and ansibleee CRs in place for forensic reasons. However, even deleting the NovaExternalCompute will cause those to not be re-created on the next run, leading to confusion about why changes are not being taken into account.
Any time we're going to do an ansible run, we should delete/recreate/update a previous failed ansibleee CR so that new changes to any of the inputs are used for the subsequent job.
When envtest runs agains an existing cluster it can be slower than with running locally, so test timeouts needs to come from ENV variables.
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
github.com/openstack-k8s-operators/infra-operator/apis
, github.com/openstack-k8s-operators/keystone-operator/api
, github.com/openstack-k8s-operators/mariadb-operator/api
)api/go.mod
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240306153230-dc65ab49ebc0@dc65ab49ebc0
github.com/robfig/cron/v3 v3.0.1
k8s.io/api v0.28.7
k8s.io/apimachinery v0.28.7
k8s.io/utils v0.0.0-20240102154912-e7106e64919e@e7106e64919e
sigs.k8s.io/controller-runtime v0.16.5
github.com/go-logr/logr v1.4.1
github.com/onsi/ginkgo/v2 v2.16.0
k8s.io/apiextensions-apiserver v0.28.7
k8s.io/client-go v0.28.7
k8s.io/component-base v0.28.7
k8s.io/klog/v2 v2.120.1
go.mod
github.com/go-logr/logr v1.4.1
github.com/google/uuid v1.6.0
github.com/gophercloud/gophercloud v1.10.0
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.4.0
github.com/onsi/ginkgo/v2 v2.16.0
github.com/onsi/gomega v1.31.1
github.com/openstack-k8s-operators/infra-operator/apis v0.3.1-0.20240304123904-038a5ec77a70@038a5ec77a70
github.com/openstack-k8s-operators/keystone-operator/api v0.3.1-0.20240307113114-033a606862c3@033a606862c3
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240306153230-dc65ab49ebc0@dc65ab49ebc0
github.com/openstack-k8s-operators/lib-common/modules/openstack v0.3.1-0.20240306153230-dc65ab49ebc0@dc65ab49ebc0
github.com/openstack-k8s-operators/lib-common/modules/test v0.3.1-0.20240306153230-dc65ab49ebc0@dc65ab49ebc0
github.com/openstack-k8s-operators/mariadb-operator/api v0.3.1-0.20240303091826-438dde8600d3@438dde8600d3
go.uber.org/zap v1.27.0
gopkg.in/yaml.v3 v3.0.1
k8s.io/api v0.28.7
k8s.io/apimachinery v0.28.7
k8s.io/client-go v0.28.7
k8s.io/utils v0.0.0-20240102154912-e7106e64919e@e7106e64919e
sigs.k8s.io/controller-runtime v0.16.5
k8s.io/apiextensions-apiserver v0.28.7
k8s.io/component-base v0.28.7
k8s.io/klog/v2 v2.120.1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.