aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Hardy <shardy@redhat.com>2015-12-08 10:28:08 +0000
committerSteven Hardy <shardy@redhat.com>2015-12-08 10:28:08 +0000
commit5d61012f86a2e036908a2f7441672e43cbd34790 (patch)
tree9ab7396dffc3dfe48d4c4367c705ee01a32ced14
parent10b6bb97133eb36ef0185fd903b3f112cd70a5db (diff)
Enable per-role SchedulerHints
This adds a parameter for each role, where optional scheduler hints may be passed to nova. One potential use-case for this is using the ComputeCapabilities to pin deployment to a specific node (not just a specific role/profile mapping to a pool of nodes like we have currently documented in the ahc-match docs). This could work as follows: 1. Tag a specific node as "node:controller-0" in Ironic: ironic node-update <id> replace properties/capabilities='node:controller-0,boot_option:local' 2. Create a heat environment file which uses %index% parameters: ControllerSchedulerHints: 'capabilities:node': 'controller-%index%' Change-Id: I79251dde719b4bb5c3b0cce90d0c9d1581ae66f2
-rw-r--r--overcloud.yaml28
-rw-r--r--puppet/ceph-storage.yaml6
-rw-r--r--puppet/cinder-storage.yaml5
-rw-r--r--puppet/compute.yaml6
-rw-r--r--puppet/controller.yaml5
-rw-r--r--puppet/swift-storage.yaml6
6 files changed, 52 insertions, 4 deletions
diff --git a/overcloud.yaml b/overcloud.yaml
index faec16dd..aa150a54 100644
--- a/overcloud.yaml
+++ b/overcloud.yaml
@@ -368,6 +368,10 @@ parameters:
default: true
description: Whether to enable Swift Storage on the Controller
type: boolean
+ ControllerSchedulerHints:
+ type: json
+ description: Optional scheduler hints to pass to nova
+ default: {}
ExtraConfig:
default: {}
description: |
@@ -585,6 +589,10 @@ parameters:
default: ''
description: Libvirt VIF driver configuration for the network
type: string
+ NovaComputeSchedulerHints:
+ type: json
+ description: Optional scheduler hints to pass to nova
+ default: {}
NovaEnableRbdBackend:
default: false
description: Whether to enable or not the Rbd backend for Nova
@@ -659,6 +667,11 @@ parameters:
BlockStorage specific configuration to inject into the cluster. Same
structure as ExtraConfig.
type: json
+ BlockStorageSchedulerHints:
+ type: json
+ description: Optional scheduler hints to pass to nova
+ default: {}
+
# Object storage specific parameters
ObjectStorageCount:
@@ -678,7 +691,10 @@ parameters:
ObjectStorage specific configuration to inject into the cluster. Same
structure as ExtraConfig.
type: json
-
+ ObjectStorageSchedulerHints:
+ type: json
+ description: Optional scheduler hints to pass to nova
+ default: {}
# Ceph storage specific parameters
CephStorageCount:
@@ -699,6 +715,11 @@ parameters:
CephStorage specific configuration to inject into the cluster. Same
structure as ExtraConfig.
type: json
+ CephStorageSchedulerHints:
+ type: json
+ description: Optional scheduler hints to pass to nova
+ default: {}
+
# Hostname format for each role
# Note %index% is translated into the index of the node, e.g 0/1/2 etc
@@ -936,6 +957,7 @@ resources:
'%stackname%': {get_param: 'OS::stack_name'}
NodeIndex: '%index%'
ServerMetadata: {get_param: ServerMetadata}
+ SchedulerHints: {get_param: ControllerSchedulerHints}
Compute:
type: OS::Heat::ResourceGroup
@@ -1011,6 +1033,7 @@ resources:
'%stackname%': {get_param: 'OS::stack_name'}
CloudDomain: {get_param: CloudDomain}
ServerMetadata: {get_param: ServerMetadata}
+ SchedulerHints: {get_param: NovaComputeSchedulerHints}
BlockStorage:
type: OS::Heat::ResourceGroup
@@ -1050,6 +1073,7 @@ resources:
BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
CloudDomain: {get_param: CloudDomain}
ServerMetadata: {get_param: ServerMetadata}
+ SchedulerHints: {get_param: BlockStorageSchedulerHints}
ObjectStorage:
type: OS::Heat::ResourceGroup
@@ -1080,6 +1104,7 @@ resources:
ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
CloudDomain: {get_param: CloudDomain}
ServerMetadata: {get_param: ServerMetadata}
+ SchedulerHints: {get_param: ObjectStorageSchedulerHints}
CephStorage:
type: OS::Heat::ResourceGroup
@@ -1105,6 +1130,7 @@ resources:
CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
CloudDomain: {get_param: CloudDomain}
ServerMetadata: {get_param: ServerMetadata}
+ SchedulerHints: {get_param: CephStorageSchedulerHints}
ControllerIpListMap:
type: OS::TripleO::Network::Ports::NetIpListMap
diff --git a/puppet/ceph-storage.yaml b/puppet/ceph-storage.yaml
index b34d2c02..adbf4bc5 100644
--- a/puppet/ceph-storage.yaml
+++ b/puppet/ceph-storage.yaml
@@ -71,7 +71,10 @@ parameters:
Extra properties or metadata passed to Nova for the created nodes in
the overcloud. It's accessible via the Nova metadata API.
type: json
-
+ SchedulerHints:
+ type: json
+ description: Optional scheduler hints to pass to nova
+ default: {}
resources:
CephStorage:
@@ -87,6 +90,7 @@ resources:
user_data: {get_resource: UserData}
name: {get_param: Hostname}
metadata: {get_param: ServerMetadata}
+ scheduler_hints: {get_param: SchedulerHints}
# Combine the NodeAdminUserData and NodeUserData mime archives
UserData:
diff --git a/puppet/cinder-storage.yaml b/puppet/cinder-storage.yaml
index 82c0e814..1c05b387 100644
--- a/puppet/cinder-storage.yaml
+++ b/puppet/cinder-storage.yaml
@@ -124,6 +124,10 @@ parameters:
Extra properties or metadata passed to Nova for the created nodes in
the overcloud. It's accessible via the Nova metadata API.
type: json
+ SchedulerHints:
+ type: json
+ description: Optional scheduler hints to pass to nova
+ default: {}
resources:
@@ -140,6 +144,7 @@ resources:
user_data: {get_resource: UserData}
name: {get_param: Hostname}
metadata: {get_param: ServerMetadata}
+ scheduler_hints: {get_param: SchedulerHints}
# Combine the NodeAdminUserData and NodeUserData mime archives
UserData:
diff --git a/puppet/compute.yaml b/puppet/compute.yaml
index 42c6e276..5e38d1c1 100644
--- a/puppet/compute.yaml
+++ b/puppet/compute.yaml
@@ -296,13 +296,16 @@ parameters:
description: >
The DNS domain used for the hosts. This should match the dhcp_domain
configured in the Undercloud neutron. Defaults to localdomain.
-
ServerMetadata:
default: {}
description: >
Extra properties or metadata passed to Nova for the created nodes in
the overcloud. It's accessible via the Nova metadata API.
type: json
+ SchedulerHints:
+ type: json
+ description: Optional scheduler hints to pass to nova
+ default: {}
resources:
@@ -321,6 +324,7 @@ resources:
user_data: {get_resource: UserData}
name: {get_param: Hostname}
metadata: {get_param: ServerMetadata}
+ scheduler_hints: {get_param: SchedulerHints}
# Combine the NodeAdminUserData and NodeUserData mime archives
UserData:
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
index 97b5456b..fc257069 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
@@ -644,6 +644,10 @@ parameters:
Extra properties or metadata passed to Nova for the created nodes in
the overcloud. It's accessible via the Nova metadata API.
type: json
+ SchedulerHints:
+ type: json
+ description: Optional scheduler hints to pass to nova
+ default: {}
resources:
@@ -660,6 +664,7 @@ resources:
user_data: {get_resource: UserData}
name: {get_param: Hostname}
metadata: {get_param: ServerMetadata}
+ scheduler_hints: {get_param: SchedulerHints}
# Combine the NodeAdminUserData and NodeUserData mime archives
UserData:
diff --git a/puppet/swift-storage.yaml b/puppet/swift-storage.yaml
index a8183f76..840cf540 100644
--- a/puppet/swift-storage.yaml
+++ b/puppet/swift-storage.yaml
@@ -94,7 +94,10 @@ parameters:
Extra properties or metadata passed to Nova for the created nodes in
the overcloud. It's accessible via the Nova metadata API.
type: json
-
+ SchedulerHints:
+ type: json
+ description: Optional scheduler hints to pass to nova
+ default: {}
resources:
@@ -110,6 +113,7 @@ resources:
user_data: {get_resource: UserData}
name: {get_param: Hostname}
metadata: {get_param: ServerMetadata}
+ scheduler_hints: {get_param: SchedulerHints}
# Combine the NodeAdminUserData and NodeUserData mime archives
UserData: