Add basic tests for OSC plugin baremetal chassis commands
Add smoke tests for commands: openstack baremetal chassis delete, openstack baremetal chassis list, openstack baremetal chassis show, openstack baremetal chassis set, openstack baremetal chassis unset. Change-Id: Ie953a786f92539cfd5195cd8601360da63cea356 Partial-Bug: #1566329
This commit is contained in:
		@@ -227,3 +227,60 @@ class TestCase(base.FunctionalTestBase):
 | 
			
		||||
        output = self.openstack('baremetal port group show {0} {1} {2}'
 | 
			
		||||
                                .format(identifier, opts, params))
 | 
			
		||||
        return json.loads(output)
 | 
			
		||||
 | 
			
		||||
    def chassis_create(self, params=''):
 | 
			
		||||
        """Create baremetal chassis and add cleanup.
 | 
			
		||||
 | 
			
		||||
        :param String params: Additional args and kwargs
 | 
			
		||||
        :return: JSON object of created chassis
 | 
			
		||||
        """
 | 
			
		||||
        opts = self.get_opts()
 | 
			
		||||
        chassis = self.openstack('baremetal chassis create {0} {1}'
 | 
			
		||||
                                 .format(opts, params))
 | 
			
		||||
 | 
			
		||||
        chassis = json.loads(chassis)
 | 
			
		||||
        if not chassis:
 | 
			
		||||
            self.fail('Baremetal chassis has not been created!')
 | 
			
		||||
        self.addCleanup(self.chassis_delete, chassis['uuid'], True)
 | 
			
		||||
 | 
			
		||||
        return chassis
 | 
			
		||||
 | 
			
		||||
    def chassis_delete(self, uuid, ignore_exceptions=False):
 | 
			
		||||
        """Try to delete baremetal chassis by UUID.
 | 
			
		||||
 | 
			
		||||
        :param String uuid: UUID of the chassis
 | 
			
		||||
        :param Bool ignore_exceptions: Ignore exception (needed for cleanUp)
 | 
			
		||||
        :return: raw values output
 | 
			
		||||
        :raise: CommandFailed exception when command fails to delete a chassis
 | 
			
		||||
        """
 | 
			
		||||
        try:
 | 
			
		||||
            return self.openstack('baremetal chassis delete {0}'
 | 
			
		||||
                                  .format(uuid))
 | 
			
		||||
        except exceptions.CommandFailed:
 | 
			
		||||
            if not ignore_exceptions:
 | 
			
		||||
                raise
 | 
			
		||||
 | 
			
		||||
    def chassis_list(self, fields=None, params=''):
 | 
			
		||||
        """List baremetal chassis.
 | 
			
		||||
 | 
			
		||||
        :param List fields: List of fields to show
 | 
			
		||||
        :param String params: Additional kwargs
 | 
			
		||||
        :return: list of JSON chassis objects
 | 
			
		||||
        """
 | 
			
		||||
        opts = self.get_opts(fields=fields)
 | 
			
		||||
        output = self.openstack('baremetal chassis list {0} {1}'
 | 
			
		||||
                                .format(opts, params))
 | 
			
		||||
        return json.loads(output)
 | 
			
		||||
 | 
			
		||||
    def chassis_show(self, uuid, fields=None, params=''):
 | 
			
		||||
        """Show specified baremetal chassis.
 | 
			
		||||
 | 
			
		||||
        :param String uuid: UUID of the chassis
 | 
			
		||||
        :param List fields: List of fields to show
 | 
			
		||||
        :param List params: Additional kwargs
 | 
			
		||||
        :return: JSON object of chassis
 | 
			
		||||
        """
 | 
			
		||||
        opts = self.get_opts(fields)
 | 
			
		||||
        chassis = self.openstack('baremetal chassis show {0} {1} {2}'
 | 
			
		||||
                                 .format(opts, uuid, params))
 | 
			
		||||
        return json.loads(chassis)
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,86 @@
 | 
			
		||||
#    Copyright (c) 2016 Mirantis, 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.
 | 
			
		||||
 | 
			
		||||
from ironicclient.tests.functional.osc.v1 import base
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BaremetalChassisTests(base.TestCase):
 | 
			
		||||
    """Functional tests for baremetal chassis commands."""
 | 
			
		||||
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        super(BaremetalChassisTests, self).setUp()
 | 
			
		||||
        self.chassis = self.chassis_create()
 | 
			
		||||
 | 
			
		||||
    def test_list(self):
 | 
			
		||||
        """Check baremetal chassis list command.
 | 
			
		||||
 | 
			
		||||
        Test steps:
 | 
			
		||||
        1) Create baremetal chassis in setUp.
 | 
			
		||||
        2) List baremetal chassis.
 | 
			
		||||
        3) Check chassis description and UUID in chassis list.
 | 
			
		||||
        """
 | 
			
		||||
        chassis_list = self.chassis_list()
 | 
			
		||||
        self.assertIn(self.chassis['uuid'],
 | 
			
		||||
                      [x['UUID'] for x in chassis_list])
 | 
			
		||||
        self.assertIn(self.chassis['description'],
 | 
			
		||||
                      [x['Description'] for x in chassis_list])
 | 
			
		||||
 | 
			
		||||
    def test_show(self):
 | 
			
		||||
        """Check baremetal chassis show command.
 | 
			
		||||
 | 
			
		||||
        Test steps:
 | 
			
		||||
        1) Create baremetal chassis in setUp.
 | 
			
		||||
        2) Show baremetal chassis.
 | 
			
		||||
        3) Check chassis in chassis show.
 | 
			
		||||
        """
 | 
			
		||||
        chassis = self.chassis_show(self.chassis['uuid'])
 | 
			
		||||
        self.assertEqual(self.chassis['uuid'], chassis['uuid'])
 | 
			
		||||
        self.assertEqual(self.chassis['description'], chassis['description'])
 | 
			
		||||
 | 
			
		||||
    def test_delete(self):
 | 
			
		||||
        """Check baremetal chassis delete command.
 | 
			
		||||
 | 
			
		||||
        Test steps:
 | 
			
		||||
        1) Create baremetal chassis in setUp.
 | 
			
		||||
        2) Delete baremetal chassis by UUID.
 | 
			
		||||
        3) Check that chassis deleted successfully.
 | 
			
		||||
        """
 | 
			
		||||
        output = self.chassis_delete(self.chassis['uuid'])
 | 
			
		||||
        self.assertIn('Deleted chassis {0}'.format(self.chassis['uuid']),
 | 
			
		||||
                      output)
 | 
			
		||||
        self.assertNotIn(self.chassis['uuid'], self.chassis_list(['UUID']))
 | 
			
		||||
 | 
			
		||||
    def test_set_unset_extra(self):
 | 
			
		||||
        """Check baremetal chassis set and unset commands.
 | 
			
		||||
 | 
			
		||||
        Test steps:
 | 
			
		||||
        1) Create baremetal chassis in setUp.
 | 
			
		||||
        2) Set extra data for chassis.
 | 
			
		||||
        3) Check that baremetal chassis extra data was set.
 | 
			
		||||
        4) Unset extra data for chassis.
 | 
			
		||||
        5) Check that baremetal chassis extra data was unset.
 | 
			
		||||
        """
 | 
			
		||||
        extra_key = 'ext'
 | 
			
		||||
        extra_value = 'testdata'
 | 
			
		||||
        self.openstack('baremetal chassis set --extra {0}={1} {2}'
 | 
			
		||||
                       .format(extra_key, extra_value, self.chassis['uuid']))
 | 
			
		||||
 | 
			
		||||
        show_prop = self.chassis_show(self.chassis['uuid'], ['extra'])
 | 
			
		||||
        self.assertEqual(extra_value, show_prop['extra'][extra_key])
 | 
			
		||||
 | 
			
		||||
        self.openstack('baremetal chassis unset --extra {0} {1}'
 | 
			
		||||
                       .format(extra_key, self.chassis['uuid']))
 | 
			
		||||
 | 
			
		||||
        show_prop = self.chassis_show(self.chassis['uuid'], ['extra'])
 | 
			
		||||
        self.assertNotIn(extra_key, show_prop['extra'])
 | 
			
		||||
		Reference in New Issue
	
	Block a user