Ignore deleted services in minimum version calculation

When we go to detect the minimum version for a given service, we
should ignore any deleted services. Without this, we will return
the minimum version of all records, including those that have been
deleted with "nova service-delete". This patch filters deleted
services from the query.

Conflicts:
        nova/db/sqlalchemy/api.py
        nova/tests/unit/db/test_db_api.py

NOTE(mriedem): The conflicts are due to not having change
11cb56a224 in Mitaka.

Closes-Bug: #1668310
Change-Id: Ic96a5eb3728f97a3c35d2c5121e6fdcd4fd1c70b
(cherry picked from commit c79770e615)
(cherry picked from commit a1dd547d3b)
(cherry picked from commit 1ad5c7305c)
This commit is contained in:
Dan Smith 2017-02-27 07:52:29 -08:00 committed by Matt Riedemann
parent fb1b9f224d
commit 2e05c82b80
2 changed files with 5 additions and 0 deletions

View File

@ -512,6 +512,7 @@ def service_get_minimum_version(context, binary):
min_version = context.session.query(
func.min(models.Service.version)).\
filter(models.Service.binary == binary).\
filter(models.Service.deleted == 0).\
filter(models.Service.forced_down == false()).\
scalar()
return min_version

View File

@ -3427,6 +3427,10 @@ class ServiceTestCase(test.TestCase, ModelsObjectComparatorMixin):
self._create_service({'version': 3,
'host': 'host2',
'binary': 'compute'})
self._create_service({'version': 0,
'host': 'host0',
'binary': 'compute',
'deleted': 1})
self.assertEqual(2, db.service_get_minimum_version(self.ctxt,
'compute'))