Difference between revisions of "NovaManageDBAnalysis"
(Initial direct db usage analysis) |
m (Text replace - "__NOTOC__" to "") |
||
(8 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | ||
= nova-manage DB analysis = | = 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 | 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 == | ||
+ | |||
+ | {| border="1" cellpadding="2" cellspacing="0" | ||
+ | | Command | ||
+ | | Subcommand | ||
+ | | REST API | ||
+ | | nova CLI | ||
+ | |- | ||
+ | |rowspan="2" | 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 | ||
+ | |- | ||
+ | |rowspan="4" | agent | ||
+ | | create | ||
+ | |rowspan="4" | No support | ||
+ | |rowspan="4" | No support | ||
+ | |- | ||
+ | |- | ||
+ | |- | ||
+ | |- | ||
+ | |rowspan="2" | db | ||
+ | | sync | ||
+ | |rowspan="2" | No support | ||
+ | |rowspan="2" | No support | ||
+ | |- | ||
+ | |- | ||
+ | |rowspan="3" |fixed | ||
+ | | list | ||
+ | |rowspan="3" | Need Fixed IP extension | ||
+ | |rowspan="3" |No nova support | ||
+ | |- | ||
+ | |- | ||
+ | |- | ||
+ | |rowspan="5" |flavor/instance_type | ||
+ | | create | ||
+ | |rowspan="3" |Can be implemented using core Nova API and Flavor management extension | ||
+ | |rowspan="3" | Already implemented in nova client | ||
+ | |- | ||
+ | |- | ||
+ | |- | ||
+ | | set_key | ||
+ | |rowspan="2" |API exists in flavorextraspecs.py but not documented at api.openstack.org | ||
+ | |rowspan="2" |Need to add support to nova client | ||
+ | |- | ||
+ | |- | ||
+ | |rowspan="3" |floating | ||
+ | | create | ||
+ | |rowspan="3" |Need to add REST API for bulk creation of floating ips and to list | ||
+ | |rowspan="3" |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 | ||
+ | | | ||
+ | |- | ||
+ | |rowspan="4" |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 | ||
+ | |- | ||
+ | |rowspan="4" |service | ||
+ | | list | ||
+ | |rowspan="4" |No REST API exist for list/enable/disable/describe nova services | ||
+ | |rowspan="4" |Need nova client support | ||
+ | |- | ||
+ | |- | ||
+ | |- | ||
+ | |- | ||
+ | | shell | ||
+ | | | ||
+ | | No API support required. No db access | ||
+ | | | ||
+ | |- | ||
+ | |rowspan="5" |sm | ||
+ | | flavor_list | ||
+ | |rowspan="5" | Need a storage manager extension API | ||
+ | |rowspan="5" |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 == | == Direct/Indirect DB calls by nova-manage command == |
Latest revision as of 23:29, 17 February 2013
Contents
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 |