summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Smith <dansmith@redhat.com>2017-02-27 07:52:29 -0800
committerMatt Riedemann <mriedem.os@gmail.com>2017-02-27 12:17:03 -0500
commit2e05c82b807624b8420df4c94d68b75563b230d2 (patch)
treef80d9f3b145463428f9d330abd2039a015f241b2
parentfb1b9f224d6f05674667a7ddf7c8ba77f4f257aa (diff)
downloadnova-2e05c82b807624b8420df4c94d68b75563b230d2.tar.gz
Ignore deleted services in minimum version calculation13.1.3
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 11cb56a2243faa9f2614a8f9a9a84603bc91d6b1 in Mitaka. Closes-Bug: #1668310 Change-Id: Ic96a5eb3728f97a3c35d2c5121e6fdcd4fd1c70b (cherry picked from commit c79770e615799cd4457ac603dcad4fb3452fe2bc) (cherry picked from commit a1dd547d3ba7d9cf5b73da1ce9668e412501ace1) (cherry picked from commit 1ad5c7305c37079ced24bf623810e63d5eac2661)
-rw-r--r--nova/db/sqlalchemy/api.py1
-rw-r--r--nova/tests/unit/db/test_db_api.py4
2 files changed, 5 insertions, 0 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 30bbb09c06..7f983d2bfa 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -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
diff --git a/nova/tests/unit/db/test_db_api.py b/nova/tests/unit/db/test_db_api.py
index cb50fc9675..9e0eda9601 100644
--- a/nova/tests/unit/db/test_db_api.py
+++ b/nova/tests/unit/db/test_db_api.py
@@ -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'))