diff options
author | 2017-04-05 11:20:46 +0100 | |
---|---|---|
committer | 2017-05-12 21:01:54 +0000 | |
commit | d002db9a10fed7cdba2cc43a8c064864250994ce (patch) | |
tree | 5cda13ea59ad732c2cd047ebfb0468e6ee425aef /yardstick/benchmark | |
parent | 344921452e405189b8b5ec0697bf5d1ca88eb8ed (diff) |
Create flavor from heat context
JIRA: YARDSTICK-582
Create a customizable flavor via heat context. All heat parameters
are configurable including Core Affinity. The default flavor name
is XXXX-flavor where XXXX is stackname. Flavor attributes are taken
from the heat context file. If a flavor attribute is not used it
takes default attribute value. If flavor name is not specified it
uses the server name + "-flavor" or stack-name + "-flavor".
Compute node specific attributes are configurable via "extra_specs"
attribute. See
https://docs.openstack.org/admin-guide/compute-flavors.html for
details.
Change-Id: If4015970b889b0b95bfa8eba9491ebf31e92f2c7
Signed-off-by: DanielMartinBuckley <daniel.m.buckley@intel.com>
Diffstat (limited to 'yardstick/benchmark')
-rw-r--r-- | yardstick/benchmark/contexts/heat.py | 18 | ||||
-rw-r--r-- | yardstick/benchmark/contexts/model.py | 18 |
2 files changed, 30 insertions, 6 deletions
diff --git a/yardstick/benchmark/contexts/heat.py b/yardstick/benchmark/contexts/heat.py index d5dccd2a2..b689ac09c 100644 --- a/yardstick/benchmark/contexts/heat.py +++ b/yardstick/benchmark/contexts/heat.py @@ -47,6 +47,7 @@ class HeatContext(Context): self._server_map = {} self._image = None self._flavor = None + self.flavors = set() self._user = None self.template_file = None self.heat_parameters = None @@ -129,6 +130,13 @@ class HeatContext(Context): def _add_resources_to_template(self, template): """add to the template the resources represented by this context""" + + if self.flavor: + if isinstance(self.flavor, dict): + flavor = self.flavor.setdefault("name", self.name + "-flavor") + template.add_flavor(**self.flavor) + self.flavors.add(flavor) + template.add_keypair(self.keypair_name, self.key_uuid) template.add_security_group(self.secgroup_name) @@ -136,8 +144,7 @@ class HeatContext(Context): template.add_network(network.stack_name, network.physical_network, network.provider) - template.add_subnet(network.subnet_stack_name, - network.stack_name, + template.add_subnet(network.subnet_stack_name, network.stack_name, network.subnet_cidr) if network.router: @@ -164,6 +171,13 @@ class HeatContext(Context): availability_servers.append(server) break + for server in availability_servers: + if isinstance(server.flavor, dict): + try: + self.flavors.add(server.flavor["name"]) + except KeyError: + self.flavors.add(server.stack_name + "-flavor") + # add servers with availability policy added_servers = [] for server in availability_servers: diff --git a/yardstick/benchmark/contexts/model.py b/yardstick/benchmark/contexts/model.py index 816ec7972..546201e9b 100644 --- a/yardstick/benchmark/contexts/model.py +++ b/yardstick/benchmark/contexts/model.py @@ -130,7 +130,8 @@ class Network(Object): @staticmethod def find_external_network(): """return the name of an external network some network in this - context has a route to""" + context has a route to + """ for network in Network.list: if network.router: return network.router.external_gateway_info @@ -250,8 +251,17 @@ class Server(Object): # pragma: no cover self.floating_ip_assoc["stack_name"], self.floating_ip["stack_name"], port_name) - - template.add_server(server_name, self.image, self.flavor, + if self.flavor: + if isinstance(self.flavor, dict): + self.flavor["name"] = \ + self.flavor.setdefault("name", self.stack_name + "-flavor") + template.add_flavor(**self.flavor) + self.flavor_name = self.flavor["name"] + else: + self.flavor_name = self.flavor + + template.add_server(server_name, self.image, flavor=self.flavor_name, + flavors=self.context.flavors, ports=port_name_list, user=self.user, key_name=self.keypair_name, @@ -273,7 +283,7 @@ class Server(Object): # pragma: no cover def update_scheduler_hints(scheduler_hints, added_servers, placement_group): - """ update scheduler hints from server's placement configuration + """update scheduler hints from server's placement configuration TODO: this code is openstack specific and should move somewhere else """ if placement_group.policy == "affinity": |