From 7e8a647985e5cbdf95e4e6abaf2ae4c16e988aff Mon Sep 17 00:00:00 2001 From: Mike Carden Date: Thu, 7 Apr 2016 23:01:05 +0000 Subject: [PATCH] Add tests for the ironic CLI This is an initial set of tests of the ironicclient intended to show that the ironic role has been installed and that the API is responding correctly. Tests are: - list chassis - list nodes - list drivers - create node - validate node - create port - update node - delete node Change-Id: I98e67e076bce8711cb1c8e0f8b2e9ae0d89d520d --- tests/test-ironic-cli.yml | 103 ++++++++++++++++++++++++++++++++++++++ tests/test.yml | 3 +- 2 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 tests/test-ironic-cli.yml diff --git a/tests/test-ironic-cli.yml b/tests/test-ironic-cli.yml new file mode 100644 index 00000000..07910103 --- /dev/null +++ b/tests/test-ironic-cli.yml @@ -0,0 +1,103 @@ +--- +# Copyright 2016, Rackspace US, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +- name: Test the ironic CLI + hosts: hosts + user: root + gather_facts: false + tasks: + - name: Run the ironic chassis-list command + shell: > + . /root/openrc && ironic chassis-list + register: chassis_table + - name: Check that the chassis-list command succeeded + assert: + that: + - "'Description' in chassis_table.stdout" + + - name: Run the ironic node-list command + shell: > + . /root/openrc && ironic node-list + register: node_table + - name: Check that the node-list command succeeded + assert: + that: + - "'UUID' in node_table.stdout" + + - name: Run the ironic driver-list command + shell: > + . /root/openrc && ironic driver-list + register: driver_table + - name: Check that the driver-list command succeeded + assert: + that: + - "'Supported' in driver_table.stdout" + + - name: Create a node + shell: > + . /root/openrc && ironic node-create -d agent_ipmitool + -i ipmi_address=1.2.3.4 + -i ipmi_password="TrickyPa55" + -i ipmi_username="admin" + -i deploy_ramdisk="http://example.com/ramdisk.qcow" + -i deploy_kernel="http://example.com/kernel.tgz" + -n happynode + register: node_created + - name: Check that the node was created + assert: + that: + - "'happynode' in node_created.stdout" + - "'agent_ipmitool' in node_created.stdout" + - "'1.2.3.4' in node_created.stdout" + - "'admin' in node_created.stdout" + - "'http://example.com/ramdisk.qcow' in node_created.stdout" + - "'http://example.com/kernel.tgz' in node_created.stdout" + + - name: Run the node-validate command + shell: > + . /root/openrc && ironic node-validate happynode + register: node_validated + - name: Check that node-validate returned something sensible + assert: + that: + - "'Reason' in node_validated.stdout" + + - name: Create a port + shell: > + . /root/openrc && ironic port-create -n $(ironic node-list | grep 'happynode' | cut -f 2 -d "|") -a de:ad:be:ef:de:ad + register: port_created + - name: Check that the port was created + assert: + that: + - "'de:ad:be:ef:de:ad' in port_created.stdout" + + - name: Update a node (in this case, change its name) + shell: > + . /root/openrc && ironic node-update happynode replace name=cheerynode + register: name_changed + - name: Check that the name was changed + assert: + that: + - "'cheerynode' in name_changed.stdout" + + - name: Remove a node + shell: > + . /root/openrc && ironic node-delete cheerynode + register: node_deleted + - name: Check that a node was deleted + assert: + that: + - "'Deleted' in node_deleted.stdout" + diff --git a/tests/test.yml b/tests/test.yml index 48e84c56..0e29e1bf 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -34,4 +34,5 @@ # Test REST API - include: test-rest-api.yml - +# Test the ironicclient CLI +- include: test-ironic-cli.yml