'Openstack Trove: database instance creation fails with error "Invalid key_name provided"

During Trove database instance creation I run into the error "Invalid key_name provided"

openstack database instance create mysql_instance_4 \
    --flavor 6 \
    --volume-type __DEFAULT__ \
    --size 6 \
    --nic net-id=c45740a2-8846-4e51-afba-ed8983e27748 \
    --databases test --users userA:password \
    --datastore mysql --datastore-version mysql_5.7 \
    --is-public \
    --debug

...
2021-12-04 23:41:15.170 1729 DEBUG trove.common.clients_admin [-] Re-use admin nova client nova_client_trove_admin /usr/lib/python3/dist-packages/trove/common/clients_admin.py:65
2021-12-04 23:41:15.440 1729 ERROR trove.taskmanager.models [-] Failed to create server for instance f3ca7c57-77ff-43d0-b20e-53f555b70d33
Invalid key_name provided. (HTTP 400) (Request-ID: req-f3893f97-130c-4047-8520-760b6311b201)
Traceback (most recent call last):
...

However, it is possible to start the instance from the generated volume manually. This is my config:

root@control:~# nova flavor-create mysql-minimum 6 512 5 1
+----+---------------+------------+------+-----------+------+-------+-------------+-----------+-------------+
| ID | Name          | Memory_MiB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | Description |
+----+---------------+------------+------+-----------+------+-------+-------------+-----------+-------------+
| 6  | mysql-minimum | 512        | 5    | 0         | 0    | 1     | 1.0         | True      | -           |
+----+---------------+------------+------+-----------+------+-------+-------------+-----------+-------------+

root@control:/etc/trove# cat trove.conf
[DEFAULT]
network_driver = trove.network.neutron.NeutronDriver
management_networks = c5b9c743-d74b-47d8-a85b-751bde6ee6d4
management_security_groups = 0380d519-00b5-4673-bd28-29e0f81335d1
cinder_volume_type = lvm
nova_keypair = trove-mgmt
default_datastore = mysql
taskmanager_manager = trove.taskmanager.manager.Manager
trove_api_workers = 5
transport_url = rabbit://openstack:pass@control:5672/
control_exchange = trove
rpc_backend = rabbit
reboot_time_out = 300
usage_timeout = 900
agent_call_high_timeout = 1200
use_syslog = False
debug = True
[keystone_authtoken]
memcached_servers = control:11211
cafile = /devstack/stack/data/ca-bundle.pem
project_domain_name = Default
project_name = service
user_domain_name = Default
password = pass
username = trove
auth_url = http://control:5000/identity
auth_type = password
[service_credentials]
auth_url = http://control:5000/identity/v3
region_name = RegionOne
project_name = service
password = pass
project_domain_name = Default
user_domain_name = Default
username = trove
[database]
connection = mysql+pymysql://trove:pass@control/trove?charset=utf8
[mariadb]
tcp_ports = 3306,4444,4567,4568
[mysql]
tcp_ports = 3306
[postgresql]
tcp_ports = 5432
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_policy]

root@control:/etc/trove# cat trove-guestagent.conf
[DEFAULT]
log_file = trove-guestagent.log
log_dir = /var/log/trove/
ignore_users = os_admin
control_exchange = trove
transport_url = rabbit://openstack:pass@control:5672/
rpc_backend = rabbit
command_process_timeout = 60
use_syslog = False
debug = True
[service_credentials]
auth_url = http://control:5000/v3
region_name = RegionOne
project_name = service
password = pass
project_domain_name = Default
user_domain_name = Default
username = trove

I also played around with "nova_keypair = trove-mgmt" in trove.conf but without success. It exists, for admin and/or demo-user, but no influence. Any help is appreciated!



Solution 1:[1]

The keypair should be created as trove user. I had same error and I was creating keypair under another user (admin).

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1