Public bug reported: AFAICT, there's no good reason to have a foreign key relation between compute_nodes and services. In fact, I see no reason why compute_nodes needs to have a service_id column at all.
The service is the representation of the message bus between the nova- conductor and the nova-compute worker processes. The compute node is merely the collection of resources for a provider of compute resources. There's really no reason to relate the two with each other. The fact that they are related to each other means that the resource tracker ends up needing to "find" its compute node record by first looking up the service record for the 'compute' topic and the host for the resource tracker, and then grabs the first compute_node record that is related to the service record that matches that query. There is no reason to do this in the resource tracker ... other than the fact that right now the compute_node table has a service_id field and a relation to the services table. But this relationship is contrived and is not needed AFAICT. The solution to this is to remove the service_id column from the compute_nodes table and model, remove the foreign key relation to the services table from the compute_nodes table, and then simply look up a compute_node record directly from the host and nodename fields instead of looking up a service record first. ** Affects: nova Importance: Wishlist Status: Triaged ** Tags: low-hanging-fruit resource-tracker -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1357491 Title: Detach service from compute_node Status in OpenStack Compute (Nova): Triaged Bug description: AFAICT, there's no good reason to have a foreign key relation between compute_nodes and services. In fact, I see no reason why compute_nodes needs to have a service_id column at all. The service is the representation of the message bus between the nova- conductor and the nova-compute worker processes. The compute node is merely the collection of resources for a provider of compute resources. There's really no reason to relate the two with each other. The fact that they are related to each other means that the resource tracker ends up needing to "find" its compute node record by first looking up the service record for the 'compute' topic and the host for the resource tracker, and then grabs the first compute_node record that is related to the service record that matches that query. There is no reason to do this in the resource tracker ... other than the fact that right now the compute_node table has a service_id field and a relation to the services table. But this relationship is contrived and is not needed AFAICT. The solution to this is to remove the service_id column from the compute_nodes table and model, remove the foreign key relation to the services table from the compute_nodes table, and then simply look up a compute_node record directly from the host and nodename fields instead of looking up a service record first. To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1357491/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp