Support Nova availability zones¶
https://blueprints.launchpad.net/sahara/+spec/support-nova-availability-zones
Extend API to support specifying Nova availability zones where to spawn instances.
Problem description¶
It can be desirable to assign Nova availability zones to node groups, in order to have fine-grained clusters topologies.
Use cases:
As a end user I want namenode instances to be spawned in the regular
nova
AZ and datanode instances in my high-performancenova-highperf
AZ.As a end user I want instances from node-group A to be all together in the
nova-1
AZ, separated from instances from node-group B innova-2
.
Proposed change¶
The proposed change is already implemented at [1].
It adds an availability_zone
property in NodeGroup and NodeGroupTemplate
objects. When set, it modifies the direct and Heat engines to force spawning
of instances into the right AZ.
Alternatives¶
None
Data model impact¶
This change will add availability_zone
columns in the sahara database
(node_groups
, node_group_templates
and templates_relations
tables).
A database migration will accompany this change.
REST API impact¶
Each API method which deals with node groups and node groups templates will
have an additional (and optional) availability_zone
parameter.
Other end user impact¶
python-saharaclient should be modified to integrate this new feature.
Deployer impact¶
Needs to migrate DB version using:
sahara-db-manage --config-file /etc/sahara/sahara.conf upgrade head
Developer impact¶
None
Sahara-image-elements impact¶
None
Sahara-dashboard / Horizon impact¶
sahara-dashboard should be modified to integrate this new feature.
Implementation¶
Assignee(s)¶
- Primary assignee:
adrien-verge
Work Items¶
The proposed change is already implemented at [1].
Add an
availability_zone
property in NodeGroup and NodeGroupTemplate objects.When a user specifies the (optional) availability zone, check its existence.
In the direct engine, include the
availability_zone
argument in the call to nova.client().servers.create().In the Heat engine, add the
availability_zone
property in sahara/resources/instance.heat.
Dependencies¶
None
Testing¶
Test cluster creation without availability zone specified.
Test cluster creation with availability zone specified.
Test cluster creation with wrong availability zone specified.
Documentation Impact¶
Documentation will need to be updated, at sections related to node group template creation and cluster creation.