From b450ff75888f7801094ca88957a237f33f5e85f1 Mon Sep 17 00:00:00 2001
From: tzumainn <tzumainn@redhat.com>
Date: Fri, 13 Oct 2017 05:21:26 -0400
Subject: Allow the specification of server group policies when provisioning
 openstack (#747)

* Allow for the specifying of server policies during OpenStack provisioning

* documentation for openstack server group policies

* add doc link detailing allowed policies

* changed default to anti-affinity
---
 roles/openstack-stack/templates/heat_stack.yaml.j2 | 22 ++++++++++++++++++++++
 .../templates/heat_stack_server.yaml.j2            |  6 ++++++
 .../templates/heat_stack_server_nofloating.yaml.j2 |  6 ++++++
 3 files changed, 34 insertions(+)

(limited to 'roles/openstack-stack/templates')

diff --git a/roles/openstack-stack/templates/heat_stack.yaml.j2 b/roles/openstack-stack/templates/heat_stack.yaml.j2
index ef46211a4..a6b088efb 100644
--- a/roles/openstack-stack/templates/heat_stack.yaml.j2
+++ b/roles/openstack-stack/templates/heat_stack.yaml.j2
@@ -536,6 +536,20 @@ resources:
       - interface
 {% endif %}
 
+{% if master_server_group_policies|length > 0 %}
+  master_server_group:
+    type: OS::Nova::ServerGroup
+    properties:
+      name: master_server_group
+      policies: {{ master_server_group_policies }}
+{% endif %}
+{% if infra_server_group_policies|length > 0 %}
+  infra_server_group:
+    type: OS::Nova::ServerGroup
+    properties:
+      name: infra_server_group
+      policies: {{ infra_server_group_policies }}
+{% endif %}
 {% if num_masters|int > 1 %}
   loadbalancer:
     type: OS::Heat::ResourceGroup
@@ -643,6 +657,10 @@ resources:
           floating_network: {{ external_network }}
 {% endif %}
           volume_size: {{ master_volume_size }}
+{% if master_server_group_policies|length > 0 %}
+          scheduler_hints:
+            group: { get_resource: master_server_group }
+{% endif %}
 {% if not provider_network %}
     depends_on:
       - interface
@@ -766,6 +784,10 @@ resources:
           floating_network: {{ external_network }}
 {% endif %}
           volume_size: {{ infra_volume_size }}
+{% if infra_server_group_policies|length > 0 %}
+          scheduler_hints:
+            group: { get_resource: infra_server_group }
+{% endif %}
 {% if not provider_network %}
     depends_on:
       - interface
diff --git a/roles/openstack-stack/templates/heat_stack_server.yaml.j2 b/roles/openstack-stack/templates/heat_stack_server.yaml.j2
index fc797941e..66c2491a9 100644
--- a/roles/openstack-stack/templates/heat_stack_server.yaml.j2
+++ b/roles/openstack-stack/templates/heat_stack_server.yaml.j2
@@ -98,6 +98,11 @@ parameters:
     description: OpenShift Node Labels
     default: {"region": "default" }
 
+  scheduler_hints:
+    type: json
+    description: Server scheduler hints.
+    default: {}
+
 outputs:
 
   name:
@@ -154,6 +159,7 @@ resources:
         host-type: { get_param: type }
         sub-host-type:    { get_param: subtype }
         node_labels: { get_param: node_labels }
+      scheduler_hints: { get_param: scheduler_hints }
 
 {% if use_trunk_ports|default(false)|bool %}
   trunk-port:
diff --git a/roles/openstack-stack/templates/heat_stack_server_nofloating.yaml.j2 b/roles/openstack-stack/templates/heat_stack_server_nofloating.yaml.j2
index 2c16ad778..4b79d5ab6 100644
--- a/roles/openstack-stack/templates/heat_stack_server_nofloating.yaml.j2
+++ b/roles/openstack-stack/templates/heat_stack_server_nofloating.yaml.j2
@@ -89,6 +89,11 @@ parameters:
     description: OpenShift Node Labels
     default: {"region": "default" }
 
+  scheduler_hints:
+    type: json
+    description: Server scheduler hints.
+    default: {}
+
 outputs:
 
   name:
@@ -131,6 +136,7 @@ resources:
         host-type: { get_param: type }
         sub-host-type:    { get_param: subtype }
         node_labels: { get_param: node_labels }
+      scheduler_hints: { get_param: scheduler_hints }
 
 {% if use_trunk_ports|default(false)|bool %}
   trunk-port:
-- 
cgit v1.2.3