From 6c1aa56429f9ce27428b9bf55791903228e24083 Mon Sep 17 00:00:00 2001 From: Igor Kalnitsky Date: Tue, 12 Jul 2016 18:45:01 +0300 Subject: [PATCH] Fix fake.FakeBoot.prepare_ramdisk() signature According to `BootInterface` [1], the `prepare_ramdisk` method must receive 3 arguments (self, task, ramdisk_params) while `FakeBoot` implementation receives only 2 arguments (self, task). This cause a runtime error when one wants one to use `FakeBoot` driver as a part of its own driver (for test purposes or in case of standalone Ironic with static PXE configuration). The reason why it works now is, no one use `FakeBoot` without other fake parts, so `prepare_ramdisk` is never called. [1]: http://git.openstack.org/cgit/openstack/ironic/tree/ironic/drivers/base.py#n416 Change-Id: I0a55bfaf8aa58747ad2cfcd14ec84430d139e68c --- ironic/drivers/modules/fake.py | 2 +- ironic/tests/unit/drivers/test_fake.py | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ironic/drivers/modules/fake.py b/ironic/drivers/modules/fake.py index 2497cb8fc9..bb2aab875f 100644 --- a/ironic/drivers/modules/fake.py +++ b/ironic/drivers/modules/fake.py @@ -63,7 +63,7 @@ class FakeBoot(base.BootInterface): def validate(self, task): pass - def prepare_ramdisk(self, task): + def prepare_ramdisk(self, task, ramdisk_params): pass def clean_up_ramdisk(self, task): diff --git a/ironic/tests/unit/drivers/test_fake.py b/ironic/tests/unit/drivers/test_fake.py index 68acc59423..c0a849f5a5 100644 --- a/ironic/tests/unit/drivers/test_fake.py +++ b/ironic/tests/unit/drivers/test_fake.py @@ -43,9 +43,9 @@ class FakeDriverTestCase(db_base.DbTestCase): self.task.driver = self.driver def test_driver_interfaces(self): - # fake driver implements only 5 out of 6 interfaces self.assertIsInstance(self.driver.power, driver_base.PowerInterface) self.assertIsInstance(self.driver.deploy, driver_base.DeployInterface) + self.assertIsInstance(self.driver.boot, driver_base.BootInterface) self.assertIsInstance(self.driver.vendor, driver_base.VendorInterface) self.assertIsInstance(self.driver.console, driver_base.ConsoleInterface) @@ -78,6 +78,14 @@ class FakeDriverTestCase(db_base.DbTestCase): self.driver.deploy.clean_up(None) self.driver.deploy.tear_down(None) + def test_boot_interface(self): + self.assertEqual({}, self.driver.boot.get_properties()) + self.driver.boot.validate(self.task) + self.driver.boot.prepare_ramdisk(self.task, {}) + self.driver.boot.clean_up_ramdisk(self.task) + self.driver.boot.prepare_instance(self.task) + self.driver.boot.clean_up_instance(self.task) + def test_console_interface(self): self.assertEqual({}, self.driver.console.get_properties()) self.driver.console.validate(self.task)