From 814c6f41391cac5e51b6b6833ba6576f59039e48 Mon Sep 17 00:00:00 2001
From: Ladislav Smola <lsmola@redhat.com>
Date: Thu, 27 Feb 2014 07:32:04 -0500
Subject: [PATCH] Fix of Overcloud Update

- little fix of Overcloud Update, counts has to be passed as db_models
  so they have the overcloud_role relation avaiable
- tested with UI

Change-Id: I2bf8ad86774c542daf5da453a5501aba06a3877d
---
 tuskar/api/controllers/v1/overcloud.py        |  5 ++--
 .../api/controllers/v1/test_overcloud.py      | 24 +++++++++++++++++--
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/tuskar/api/controllers/v1/overcloud.py b/tuskar/api/controllers/v1/overcloud.py
index f88f392a..714024af 100644
--- a/tuskar/api/controllers/v1/overcloud.py
+++ b/tuskar/api/controllers/v1/overcloud.py
@@ -277,9 +277,8 @@ class OvercloudsController(rest.RestController):
         # this probably should also have workflow
         # step 1- build template and stack-update
         # step 2- set the correct overcloud status
-
-        process_stack(updated_overcloud.attributes, updated_overcloud.counts,
-                      get_overcloud_roles_dict(), create=True)
+        process_stack(updated_overcloud.attributes, result.counts,
+                      get_overcloud_roles_dict())
 
         return updated_overcloud
 
diff --git a/tuskar/tests/api/controllers/v1/test_overcloud.py b/tuskar/tests/api/controllers/v1/test_overcloud.py
index ef414cd4..ad33c73a 100644
--- a/tuskar/tests/api/controllers/v1/test_overcloud.py
+++ b/tuskar/tests/api/controllers/v1/test_overcloud.py
@@ -319,9 +319,25 @@ class OvercloudTests(base.TestCase):
         # Setup
         changes = {'name': 'updated'}
 
+        overcloud_role_1 = db_models.OvercloudRole(
+            image_name='overcloud-compute', flavor_id='1')
+
+        overcloud_role_2 = db_models.OvercloudRole(
+            image_name='overcloud-cinder-volume', flavor_id='1')
+
+        overcloud_role_count_1 = db_models.OvercloudRoleCount(
+            overcloud_role_id=1, num_nodes=5, overcloud_role=overcloud_role_1)
+
+        overcloud_role_count_2 = db_models.OvercloudRoleCount(
+            overcloud_role_id=2, num_nodes=9, overcloud_role=overcloud_role_2)
+
+        attribute_1 = db_models.OvercloudAttribute(
+            overcloud_id=1, key='name', value='updated')
+
         fake_updated = db_models.Overcloud(name='after-update',
-                                           attributes=[],
-                                           counts=[])
+                                           attributes=[attribute_1],
+                                           counts=[overcloud_role_count_1,
+                                                   overcloud_role_count_2])
         mock_db_update.return_value = fake_updated
         mock_process_stack.return_value = None
 
@@ -341,6 +357,10 @@ class OvercloudTests(base.TestCase):
         self.assertEqual(db_update_model.id, 12345)
         self.assertEqual(db_update_model.name, changes['name'])
 
+        mock_process_stack.assert_called_once_with(
+            {'name': 'updated'}, [overcloud_role_count_1,
+                                  overcloud_role_count_2], {})
+
     @mock.patch('tuskar.db.sqlalchemy.api.'
                 'Connection.delete_overcloud_by_id')
     @mock.patch(