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
|
Need to add API for setting/unsetting arbitrary keys to flavors
|
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
|
Supported by Network API
|
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
|