Jump to: navigation, search

NovaManageDBAnalysis

nova-manage DB analysis

Analysis of the direct database usage by nova-manage. A place to keep information about where nova-manage is directly manipulating the database and extra Nova APIs that we will need in order in order to stop doing this. The blueprint for this work is here https://blueprints.launchpad.net/nova/+spec/apis-for-nova-manage

Changes needed by nova-manage command

Command Subcommand REST API nova CLI
account/project quota Quota Sets extension implements required functionality Already supported
scrub Network and Security extensions have required support Need to get list of networks for a tenant, disassociate them and then destroy the security groups. The nova command currently allows people to do the secgroup changes but not the network changes
agent create No support No support
db sync No support No support
fixed list Need Fixed IP extension No nova support
flavor/instance_type create Can be implemented using core Nova API and Flavor management extension Already implemented in nova client
set_key API exists in flavorextraspecs.py but not documented at api.openstack.org Need to add support to nova client
floating create Need to add REST API for bulk creation of floating ips and to list Need to add support to nova client
host list Host extensions API can list physical hosts, but does not show availability zones Exists in nova client (without availability zone display)
logs No API required. No DB access
network create Network API extension exists but needs extra options for creation (cf. API vs ""nova-manage network create"" options) Need nova client support
list Network API extension exists but needs to return more information (eg DNS2, vlan) Need nova client support
delete delete by id supported by Network API, but not deletion by fixed-range Need nova client support
modify Can add network to project using Network API but need support to add network to host. Similarly for disassociate. Need nova client support
service list No REST API exist for list/enable/disable/describe nova services Need nova client support
shell No API support required. No db access
sm flavor_list Need a storage manager extension API Need nova client support
version No API support required. No db access
vm list Core API support Support already in nova client
volume reattach Volume extension API does not have reattach, but does have attach
vpn change Need to add to cloudpipe API to change ip and port for vpn Need nova interface

Nova REST API additions/modifications

Direct/Indirect DB calls by nova-manage command

Command Subcommand DB calls
account/project quota db.quota_update, db.quota_create, get_project_quotas
scrub db.project_get_networks, db.network_disassociate
agent create db.agent_build_create
delete db.agent_build_get_by_triple, db.agent_build_destroy
list db.agent_build_get_all
modify db.agent_build_get_by_triple, db.agent_build_update
db sync migration.db_sync
version migration.db_version
fixed list db.fixed_ip_get_all db.fixed_ip_get_all_by_instance_host db.instance_get_all
reserve/unreserve/_set_reserved db.fixed_ip_get_by_address db.fixed_ip_update
flavor / instance_type create instance_types.create
delete instance_types.destroy
list instance_types.get_all_types instance_types.get_instance_type_by_name
set_key instance_types.get_instance_type_by_name db.instance_type_extra_specs_update_or_create
unset_key instance_types.get_instance_type_by_name db.instance_type_extra_specs_delete
floating create db.floating_ip_bulk_create
delete
list db.floating_ip_get_all db.floating_ip_get_all_by_host
host
list db.service_get_all
logs
network create netmanager.create_networks
list db.network_get_all
delete netmanager.delete_network
modify db.network_get_by_cidr db.network_update
service list db.service_get_all
enable db.service_get_by_args db.service_update
disable db.service_get_by_args db.service_update
describe_resource
shell
sm flavor_list db.sm_flavor_get_all db.sm_flavor_get
flavor_create db.sm_flavor_create
flavor_delete db.sm_flavor_delete
backend_list db.sm_backend_conf_get_all db.sm_backend_conf_get
backend_add db.sm_backend_conf_get_by_sr db.sm_backend_conf_update db.sm_flavor_get_by_label db.sm_backend_conf_create db.sm_backend_conf_delete
version
vm list db.instance_get_all db.instance_get_all_by_host
volume reattach db.instance_get, db.volume_get
vpn change db.project_get_networks db.network_update