← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1357491] [NEW] Detach service from compute_node

 

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


Follow ups

References