From d5d8bd2703ab5162f53eb9ddb1fcd18ebca5c9d7 Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur <divius.inside@gmail.com> Date: Fri, 23 Jun 2017 18:08:15 +0200 Subject: [PATCH] [devstack] use resource classes by default Scheduling based on properties is disabled completely. Properties are still populated for nodes, we need to figure out an appropriate wait loop without them first. Depends-On: I2fd1e4a95f000da19864e75299afa51527697101 Change-Id: I58601cb8301e23560ea666d4ea088ce51af37ee6 --- devstack/lib/ironic | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/devstack/lib/ironic b/devstack/lib/ironic index 244e1531f9..bc9a20de70 100644 --- a/devstack/lib/ironic +++ b/devstack/lib/ironic @@ -183,7 +183,7 @@ IRONIC_VM_LOG_DIR=${IRONIC_VM_LOG_DIR:-$IRONIC_DATA_DIR/logs/} IRONIC_VM_LOG_ROTATE=$(trueorfalse True IRONIC_VM_LOG_ROTATE) # Set resource_classes for nodes to use Nova's placement engine -IRONIC_USE_RESOURCE_CLASSES=$(trueorfalse False IRONIC_USE_RESOURCE_CLASSES) +IRONIC_USE_RESOURCE_CLASSES=$(trueorfalse True IRONIC_USE_RESOURCE_CLASSES) IRONIC_DEFAULT_RESOURCE_CLASS=${IRONIC_DEFAULT_RESOURCE_CLASS:-baremetal} # Whether to build the ramdisk or download a prebuilt one. @@ -1819,9 +1819,6 @@ function enroll_nodes { --driver $IRONIC_DEPLOY_DRIVER \ --name $node_name \ --resource-class $IRONIC_DEFAULT_RESOURCE_CLASS \ - --property cpus=$ironic_node_cpu\ - --property memory_mb=$ironic_node_ram\ - --property local_gb=$ironic_node_disk\ --property cpu_arch=$ironic_node_arch \ $node_capabilities \ $node_options \ @@ -1832,6 +1829,11 @@ function enroll_nodes { $IRONIC_CMD node manage $node_id --wait $IRONIC_MANAGE_TIMEOUT || \ die $LINENO "Node did not reach manageable state in $IRONIC_MANAGE_TIMEOUT seconds" + # TODO(dtantsur): only do it if IRONIC_USE_RESOURCE_CLASSES is False + $IRONIC_CMD node set $node_id --property cpus=$ironic_node_cpu \ + --property memory_mb=$ironic_node_ram \ + --property local_gb=$ironic_node_disk + # NOTE(vsaienko) IPA didn't automatically recognize root devices less than 4Gb. # Setting root hint allows to install OS on such devices. # 0x1af4 is VirtIO vendor device ID. @@ -1885,9 +1887,15 @@ function enroll_nodes { if [[ "$HOST_TOPOLOGY_ROLE" != 'subnode' ]]; then local adjusted_disk adjusted_disk=$(($ironic_node_disk - $ironic_ephemeral_disk)) - # TODO(jroll) use (yet to be defined) new-style flavor here, - # if IRONIC_USE_RESOURCE_CLASSES == True openstack flavor create --ephemeral $ironic_ephemeral_disk --ram $ironic_node_ram --disk $adjusted_disk --vcpus $ironic_node_cpu baremetal + if [[ "$IRONIC_USE_RESOURCE_CLASSES" == "True" ]]; then + local resource_class=${IRONIC_DEFAULT_RESOURCE_CLASS^^} + openstack flavor set baremetal --property "resources:CUSTOM_$resource_class"="1" + openstack flavor set baremetal --property "resources:DISK_GB"="0" + openstack flavor set baremetal --property "resources:MEMORY_MB"="0" + openstack flavor set baremetal --property "resources:VCPU"="0" + fi + openstack flavor set baremetal --property "cpu_arch"="$ironic_node_arch" if [[ "$IRONIC_BOOT_MODE" == "uefi" ]]; then @@ -1909,6 +1917,7 @@ function enroll_nodes { total_cpus=$(( total_cpus * 2 )) fi wait_for_nova_resources "count" $total_nodes + # TODO(dtantsur): only do it when IRONIC_USE_RESOURCE_CLASSES is False wait_for_nova_resources "vcpus" $total_cpus fi }