In this example, the instance cannot be placed without violating exclusion tags. As those are, however, soft errors, adding --ignore-soft-errors, the placement is possible.
Signed-off-by: Klaus Aehlig <aeh...@google.com> --- Makefile.am | 1 + test/data/htools/hail-alloc-plain-tags.json | 271 ++++++++++++++++++++++++++++ test/hs/shelltests/htools-hail.test | 9 + 3 files changed, 281 insertions(+) create mode 100644 test/data/htools/hail-alloc-plain-tags.json diff --git a/Makefile.am b/Makefile.am index fa915e5..f830754 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1545,6 +1545,7 @@ TEST_FILES = \ test/data/htools/hail-alloc-invalid-network.json \ test/data/htools/hail-alloc-invalid-twodisks.json \ test/data/htools/hail-alloc-restricted-network.json \ + test/data/htools/hail-alloc-plain-tags.json \ test/data/htools/hail-alloc-spindles.json \ test/data/htools/hail-alloc-twodisks.json \ test/data/htools/hail-change-group.json \ diff --git a/test/data/htools/hail-alloc-plain-tags.json b/test/data/htools/hail-alloc-plain-tags.json new file mode 100644 index 0000000..57ae474 --- /dev/null +++ b/test/data/htools/hail-alloc-plain-tags.json @@ -0,0 +1,271 @@ +{ + "cluster_tags": [ + "htools:iextags:service" + ], + "instances": { + "instance-1": { + "admin_state": "up", + "admin_state_source": "admin", + "disk_space_total": 256, + "disk_template": "drbd", + "disks": [ + { + "mode": "rw", + "size": 128, + "spindles": 1 + } + ], + "hypervisor": "xen-pvm", + "memory": 128, + "nics": [ + { + "bridge": "xen-br0", + "ip": null, + "link": "xen-br0", + "mac": "aa:00:00:15:92:6f", + "mode": "bridged" + } + ], + "nodes": [ + "node1", + "node2" + ], + "os": "debian-image", + "spindle_use": 1, + "tags": [ + "service:foo" + ], + "vcpus": 1 + }, + "instance-2": { + "admin_state": "up", + "admin_state_source": "admin", + "disk_space_total": 256, + "disk_template": "drbd", + "disks": [ + { + "mode": "rw", + "size": 128, + "spindles": 1 + } + ], + "hypervisor": "xen-pvm", + "memory": 128, + "nics": [ + { + "bridge": "xen-br0", + "ip": null, + "link": "xen-br0", + "mac": "aa:00:00:15:92:6f", + "mode": "bridged" + } + ], + "nodes": [ + "node2", + "node3" + ], + "os": "debian-image", + "spindle_use": 1, + "tags": [ + "service:foo" + ], + "vcpus": 1 + }, + "instance-3": { + "admin_state": "up", + "admin_state_source": "admin", + "disk_space_total": 256, + "disk_template": "drbd", + "disks": [ + { + "mode": "rw", + "size": 128, + "spindles": 1 + } + ], + "hypervisor": "xen-pvm", + "memory": 128, + "nics": [ + { + "bridge": "xen-br0", + "ip": null, + "link": "xen-br0", + "mac": "aa:00:00:15:92:6f", + "mode": "bridged" + } + ], + "nodes": [ + "node3", + "node1" + ], + "os": "debian-image", + "spindle_use": 1, + "tags": [ + "service:foo" + ], + "vcpus": 1 + } + }, + "nodegroups": { + "uuid-group-1": { + "alloc_policy": "preferred", + "ipolicy": { + "disk-templates": [ + "sharedfile", + "diskless", + "plain", + "blockdev", + "drbd", + "file", + "rbd" + ], + "minmax": [ + { + "max": { + "cpu-count": 8, + "disk-count": 16, + "disk-size": 1048576, + "memory-size": 32768, + "nic-count": 8, + "spindle-use": 8 + }, + "min": { + "cpu-count": 1, + "disk-count": 1, + "disk-size": 128, + "memory-size": 128, + "nic-count": 1, + "spindle-use": 1 + } + } + ], + "spindle-ratio": 32.0, + "std": { + "cpu-count": 1, + "disk-count": 1, + "disk-size": 1024, + "memory-size": 128, + "nic-count": 1, + "spindle-use": 1 + }, + "vcpu-ratio": 4.0 + }, + "name": "default", + "networks": [], + "tags": [] + } + }, + "nodes": { + "node1": { + "drained": false, + "free_disk": 1377024, + "free_memory": 32635, + "free_spindles": 12, + "group": "uuid-group-1", + "i_pri_memory": 0, + "i_pri_up_memory": 0, + "master_candidate": true, + "master_capable": true, + "ndparams": { + "exclusive_storage": false, + "oob_program": null, + "spindle_count": 1 + }, + "offline": false, + "primary_ip": "192.168.1.1", + "reserved_cpus": 0, + "reserved_memory": 0, + "secondary_ip": "192.168.2.1", + "tags": [], + "total_cpus": 4, + "total_disk": 1377280, + "total_memory": 32763, + "total_spindles": 12, + "vm_capable": true + }, + "node2": { + "drained": false, + "free_disk": 1377024, + "free_memory": 32635, + "free_spindles": 12, + "group": "uuid-group-1", + "i_pri_memory": 0, + "i_pri_up_memory": 0, + "master_candidate": true, + "master_capable": true, + "ndparams": { + "exclusive_storage": false, + "oob_program": null, + "spindle_count": 1 + }, + "offline": false, + "primary_ip": "192.168.1.2", + "reserved_cpus": 0, + "reserved_memory": 0, + "secondary_ip": "192.168.2.2", + "tags": [], + "total_cpus": 4, + "total_disk": 1377280, + "total_memory": 32763, + "total_spindles": 12, + "vm_capable": true + }, + "node3": { + "drained": false, + "free_disk": 1377024, + "free_memory": 32635, + "free_spindles": 12, + "group": "uuid-group-1", + "i_pri_memory": 0, + "i_pri_up_memory": 0, + "master_candidate": true, + "master_capable": true, + "ndparams": { + "exclusive_storage": false, + "oob_program": null, + "spindle_count": 1 + }, + "offline": false, + "primary_ip": "192.168.1.3", + "reserved_cpus": 0, + "reserved_memory": 0, + "secondary_ip": "192.168.2.3", + "tags": [], + "total_cpus": 4, + "total_disk": 1377280, + "total_memory": 32763, + "total_spindles": 12, + "vm_capable": true + } + }, + "request": { + "disk_space_total": 1024, + "disk_template": "plain", + "disks": [ + { + "mode": "rw", + "size": 1024, + "spindles": 1 + } + ], + "hypervisor": "xen-pvm", + "memory": 1024, + "name": "instance-new", + "nics": [ + { + "bridge": null, + "ip": null, + "mac": "00:11:22:33:44:55" + } + ], + "os": "instance-debootstrap", + "required_nodes": 1, + "spindle_use": 1, + "tags": [ + "service:foo", + "service:bar" + ], + "type": "allocate", + "vcpus": 1 + } +} diff --git a/test/hs/shelltests/htools-hail.test b/test/hs/shelltests/htools-hail.test index 44df47a..be035c4 100644 --- a/test/hs/shelltests/htools-hail.test +++ b/test/hs/shelltests/htools-hail.test @@ -162,3 +162,12 @@ cat $TESTDATA_DIR/hail-alloc-invalid-network.json | grep -v -e '"network":"uuid- ./test/hs/hail $T/hail-alloc-spindles.json.excl-stor >>> /"success":true,"info":"Request successful: Selected group: >>> group1,.*FailSpindles: 2",.*"result":\["node1"\]/ >>>= 0 + +# Check that --ignore-soft-errors works and ignores tag errors +./test/hs/hail $TESTDATA_DIR/hail-alloc-plain-tags.json +>>> /"success":false,.*FailTags: 3/ +>>>= 0 + +./test/hs/hail --ignore-soft-errors $TESTDATA_DIR/hail-alloc-plain-tags.json +>>> /"success":true/ +>>>= 0 -- 2.2.0.rc0.207.ga3a616c