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
novaAZ and datanode instances in my high-performancenova-highperfAZ.As a end user I want instances from node-group A to be all together in the
nova-1AZ, 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_zoneproperty in NodeGroup and NodeGroupTemplate objects.When a user specifies the (optional) availability zone, check its existence.
In the direct engine, include the
availability_zoneargument in the call to nova.client().servers.create().In the Heat engine, add the
availability_zoneproperty 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.