Add a simple test case for the allocate-secondary request.
In this example, hail has to avoid the node of the other
group and should prefer the free node as secondary over
the one that already hosts an instance.

Signed-off-by: Klaus Aehlig <[email protected]>
---
 Makefile.am                                |   1 +
 test/data/htools/hail-alloc-secondary.json | 298 +++++++++++++++++++++++++++++
 test/hs/shelltests/htools-hail.test        |   5 +
 3 files changed, 304 insertions(+)
 create mode 100644 test/data/htools/hail-alloc-secondary.json

diff --git a/Makefile.am b/Makefile.am
index fc66e93..ea447a1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1689,6 +1689,7 @@ TEST_FILES = \
        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-secondary.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-secondary.json 
b/test/data/htools/hail-alloc-secondary.json
new file mode 100644
index 0000000..377b4ce
--- /dev/null
+++ b/test/data/htools/hail-alloc-secondary.json
@@ -0,0 +1,298 @@
+{
+  "cluster_tags": [],
+  "instances": {
+
+"instance-2-3":{
+      "disks": [
+        {
+          "spindles": 1,
+          "mode": "rw",
+          "size": 512
+        }
+      ],
+      "disk_space_total": 1024,
+      "hypervisor": "xen-pvm",
+      "tags": [],
+      "nics": [
+        {
+          "ip": null,
+          "mac": "aa:00:00:7f:8c:9c",
+          "link": "xen-br1",
+          "mode": "bridged",
+          "bridge": "xen-br1"
+        }
+      ],
+      "vcpus": 1,
+      "spindle_use": 1,
+      "admin_state": "up",
+      "admin_state_source": "admin",
+      "disk_template": "plain",
+      "memory": 128,
+      "nodes": [
+        "node-2-3"
+      ],
+      "os": "instance-debootstrap"
+    },
+
+
+
+"instance-to-be-converted-to-drbd":{
+      "disks": [
+        {
+          "spindles": 1,
+          "mode": "rw",
+          "size": 512
+        }
+      ],
+      "disk_space_total": 1024,
+      "hypervisor": "xen-pvm",
+      "tags": [],
+      "nics": [
+        {
+          "ip": null,
+          "mac": "aa:00:00:7f:8c:9c",
+          "link": "xen-br1",
+          "mode": "bridged",
+          "bridge": "xen-br1"
+        }
+      ],
+      "vcpus": 1,
+      "spindle_use": 1,
+      "admin_state": "down",
+      "admin_state_source": "admin",
+      "disk_template": "plain",
+      "memory": 128,
+      "nodes": [
+        "node-2-1"
+      ],
+      "os": "instance-debootstrap"
+    }
+
+
+},
+  "nodegroups": {
+    "uuid-group-1": {
+      "ipolicy": {
+        "std": {
+          "nic-count": 1,
+          "disk-size": 1024,
+          "disk-count": 1,
+          "memory-size": 128,
+          "cpu-count": 1,
+          "spindle-use": 1
+        },
+        "minmax": [
+          {
+            "min": {
+              "nic-count": 1,
+              "disk-size": 128,
+              "disk-count": 1,
+              "memory-size": 128,
+              "cpu-count": 1,
+              "spindle-use": 1
+            },
+            "max": {
+              "nic-count": 8,
+              "disk-size": 1048576,
+              "disk-count": 16,
+              "memory-size": 32768,
+              "cpu-count": 8,
+              "spindle-use": 8
+            }
+          }
+        ],
+        "vcpu-ratio": 4.0,
+        "disk-templates": [
+          "sharedfile",
+          "diskless",
+          "plain",
+          "blockdev",
+          "drbd",
+          "file",
+          "rbd"
+        ],
+        "spindle-ratio": 32.0
+      },
+      "networks": [],
+      "alloc_policy": "preferred",
+      "tags": [],
+      "name": "default"
+    },
+    "uuid-group-2":
+{
+      "ipolicy": {
+        "std": {
+          "nic-count": 1,
+          "disk-size": 1024,
+          "disk-count": 1,
+          "memory-size": 128,
+          "cpu-count": 1,
+          "spindle-use": 1
+        },
+        "minmax": [
+          {
+            "min": {
+              "nic-count": 1,
+              "disk-size": 128,
+              "disk-count": 1,
+              "memory-size": 128,
+              "cpu-count": 1,
+              "spindle-use": 1
+            },
+            "max": {
+              "nic-count": 8,
+              "disk-size": 1048576,
+              "disk-count": 16,
+              "memory-size": 32768,
+              "cpu-count": 8,
+              "spindle-use": 8
+            }
+          }
+        ],
+        "vcpu-ratio": 4.0,
+        "disk-templates": [
+          "sharedfile",
+          "diskless",
+          "plain",
+          "blockdev",
+          "drbd",
+          "file",
+          "rbd"
+        ],
+        "spindle-ratio": 32.0
+      },
+      "networks": [],
+      "alloc_policy": "preferred",
+      "tags": [],
+      "name": "default"
+    }
+  },
+  "nodes": {
+
+"node-1-1" :
+{
+      "total_disk": 91552,
+      "total_cpus": 16,
+      "group": "uuid-group-1",
+      "secondary_ip": "192.168.2.1",
+      "i_pri_up_memory": 0,
+      "tags": [],
+      "master_candidate": true,
+      "free_memory": 3100,
+      "ndparams": {
+        "spindle_count": 1,
+        "oob_program": null,
+        "exclusive_storage": false
+      },
+      "reserved_memory": 0,
+      "reserved_cpus": 1,
+      "master_capable": true,
+      "free_disk": 91552,
+      "drained": false,
+      "total_memory": 3100,
+      "primary_ip": "192.168.1.1",
+      "i_pri_memory": 0,
+      "free_spindles": 12,
+      "total_spindles": 12,
+      "vm_capable": true,
+      "offline": false
+    },
+
+
+"node-2-1" :
+{
+      "total_disk": 91552,
+      "total_cpus": 16,
+      "group": "uuid-group-2",
+      "secondary_ip": "192.168.2.101",
+      "i_pri_up_memory": 0,
+      "tags": [],
+      "master_candidate": true,
+      "free_memory": 3100,
+      "ndparams": {
+        "spindle_count": 1,
+        "oob_program": null,
+        "exclusive_storage": false
+      },
+      "reserved_memory": 0,
+      "reserved_cpus": 1,
+      "master_capable": true,
+      "free_disk": 91552,
+      "drained": false,
+      "total_memory": 3100,
+      "primary_ip": "192.168.1.101",
+      "i_pri_memory": 0,
+      "free_spindles": 12,
+      "total_spindles": 12,
+      "vm_capable": true,
+      "offline": false
+    },
+
+
+
+"node-2-2" :
+{
+      "total_disk": 91552,
+      "total_cpus": 16,
+      "group": "uuid-group-2",
+      "secondary_ip": "192.168.2.102",
+      "i_pri_up_memory": 0,
+      "tags": [],
+      "master_candidate": true,
+      "free_memory": 3100,
+      "ndparams": {
+        "spindle_count": 1,
+        "oob_program": null,
+        "exclusive_storage": false
+      },
+      "reserved_memory": 0,
+      "reserved_cpus": 1,
+      "master_capable": true,
+      "free_disk": 91552,
+      "drained": false,
+      "total_memory": 3100,
+      "primary_ip": "192.168.1.102",
+      "i_pri_memory": 0,
+      "free_spindles": 12,
+      "total_spindles": 12,
+      "vm_capable": true,
+      "offline": false
+    },
+
+
+"node-2-3" :
+{
+      "total_disk": 91552,
+      "total_cpus": 16,
+      "group": "uuid-group-2",
+      "secondary_ip": "192.168.2.103",
+      "i_pri_up_memory": 0,
+      "tags": [],
+      "master_candidate": true,
+      "free_memory": 3100,
+      "ndparams": {
+        "spindle_count": 1,
+        "oob_program": null,
+        "exclusive_storage": false
+      },
+      "reserved_memory": 0,
+      "reserved_cpus": 1,
+      "master_capable": true,
+      "free_disk": 91552,
+      "drained": false,
+      "total_memory": 3100,
+      "primary_ip": "192.168.1.103",
+      "i_pri_memory": 0,
+      "free_spindles": 12,
+      "total_spindles": 12,
+      "vm_capable": true,
+      "offline": false
+    }
+
+},
+
+  "request": {
+    "name": "instance-to-be-converted-to-drbd",
+    "type": "allocate-secondary"
+  }
+}
diff --git a/test/hs/shelltests/htools-hail.test 
b/test/hs/shelltests/htools-hail.test
index 35392b3..b933e9c 100644
--- a/test/hs/shelltests/htools-hail.test
+++ b/test/hs/shelltests/htools-hail.test
@@ -211,3 +211,8 @@ cat $TESTDATA_DIR/hail-alloc-invalid-network.json | grep -v 
-e '"network":"uuid-
 ./test/hs/hail -t $TESTDATA_DIR/partly-used.data --restrict-allocation-to 
node-03,node-04 $TESTDATA_DIR/hail-alloc-drbd-restricted.json
 >>> /successes 2,.*"result":\["node-0[34]","node-0[34]"\]/
 >>>= 0
+
+# Verify allocate-secondary
+./test/hs/hail $TESTDATA_DIR/hail-alloc-secondary.json
+>>> /successes 2, failures 0.*"result":"node-2-2"/
+>>>= 0
-- 
2.2.0.rc0.207.ga3a616c

Reply via email to