Workround for openstack nova bug 37/6337/2
authorQiLiang <liangqi1@huawei.com>
Tue, 12 Jan 2016 20:10:40 +0000 (20:10 +0000)
committerqi liang <liangqi1@huawei.com>
Tue, 12 Jan 2016 12:52:06 +0000 (12:52 +0000)
Notes: if placement_groups policy is "availability"
and > 2 servers in this group may still have this issue.

JIRA: YARDSTICK-200

Signed-off-by: QiLiang <liangqi1@huawei.com>
yardstick/benchmark/contexts/heat.py

index 7bd430b..8c514d2 100644 (file)
@@ -129,8 +129,27 @@ class HeatContext(Context):
             scheduler_hints = {}
             for pg in server.placement_groups:
                 update_scheduler_hints(scheduler_hints, added_servers, pg)
-            server.add_to_template(template, self.networks, scheduler_hints)
-            added_servers.append(server.stack_name)
+            # workround for openstack nova bug, check JIRA: YARDSTICK-200
+            # for details
+            if len(availability_servers) == 2:
+                if len(scheduler_hints["different_host"]) == 0:
+                    scheduler_hints.pop("different_host", None)
+                    server.add_to_template(template,
+                                           self.networks,
+                                           scheduler_hints)
+                    added_servers.append(server.stack_name)
+                else:
+                    scheduler_hints["different_host"] = \
+                        scheduler_hints["different_host"][0]
+                    server.add_to_template(template,
+                                           self.networks,
+                                           scheduler_hints)
+                    added_servers.append(server.stack_name)
+            else:
+                server.add_to_template(template,
+                                       self.networks,
+                                       scheduler_hints)
+                added_servers.append(server.stack_name)
 
         # create list of servers with affinity policy
         affinity_servers = []