Bugfix:can not run a test suite if not under yardstick root path
[yardstick.git] / yardstick / benchmark / contexts / model.py
index 91020b9..1d0a5a1 100644 (file)
 """ Logical model
 
 """
+from __future__ import absolute_import
+from six.moves import range
 
 
 class Object(object):
     '''Base class for classes in the logical model
     Contains common attributes and methods
     '''
+
     def __init__(self, name, context):
         # model identities and reference
         self.name = name
@@ -61,6 +64,7 @@ class PlacementGroup(Object):
 
 class Router(Object):
     '''Class that represents a router in the logical model'''
+
     def __init__(self, name, network_name, context, external_gateway_info):
         super(self.__class__, self).__init__(name, context)
 
@@ -118,6 +122,7 @@ class Server(Object):
         self.stack_name = self.name + "." + context.name
         self.keypair_name = context.keypair_name
         self.secgroup_name = context.secgroup_name
+        self.user = context.user
         self.context = context
         self.public_ip = None
         self.private_ip = None
@@ -144,8 +149,10 @@ class Server(Object):
         self.ports = {}
 
         self.floating_ip = None
+        self.floating_ip_assoc = None
         if "floating_ip" in attrs:
             self.floating_ip = {}
+            self.floating_ip_assoc = {}
 
         if self.floating_ip is not None:
             ext_net = Network.find_external_network()
@@ -198,9 +205,16 @@ class Server(Object):
                                              port_name,
                                              network.router.stack_if_name,
                                              self.secgroup_name)
+                    self.floating_ip_assoc["stack_name"] = \
+                        server_name + "-fip-assoc"
+                    template.add_floating_ip_association(
+                        self.floating_ip_assoc["stack_name"],
+                        self.floating_ip["stack_name"],
+                        port_name)
 
         template.add_server(server_name, self.image, self.flavor,
                             ports=port_name_list,
+                            user=self.user,
                             key_name=self.keypair_name,
                             scheduler_hints=scheduler_hints)