With newer build of ironic python agent from http://tarballs.openstack.org/ironic-python-agent/coreos/files/ I started running into failed cleaning.
Snippet of error from ironic-conductor DEBUG logging (pardon the text blob ... not sure how to properly format in launchpad):
2015-06-29 17:50:20.045 1904 DEBUG ironic.drivers.modules.agent_base_vendor [-] Cleaning command status for node 355f28d4-35b8-45ce-aba3-946952c8c0d9 on step {u'priority': 10, u'interface': u'deploy', u'step': u'erase_devices', u'reboot_requested': False}: {u'command_error': {u'message': u'Clean step failed.', u'code': 500, u'type': u'CleaningError', u'details': u'Error performing clean_step erase_devices: sequence item 5: expected string, int found'}, u'command_status': u'FAILED', u'command_params': {u'node': {u'target_power_state': None, u'target_provision_state': u'available', u'last_error': None, u'updated_at': u'2015-06-29T17:49:17.000000', u'maintenance_reason': None, u'provision_state': u'cleaning', u'clean_step': {u'priority': 10, u'interface': u'deploy', u'step': u'erase_devices', u'reboot_requested': False}, u'id': 2, u'uuid': u'355f28d4-35b8-45ce-aba3-946952c8c0d9', u'console_enabled': False, u'extra': {}, u'chassis_id': None, u'provision_updated_at': u'2015-06-29T17:47:51.000000', u'maintenance': False, u'conductor_affinity': 1, u'inspection_started_at': None, u'inspection_finished_at': None, u'power_state': u'power on', u'driver': u'agent_vbox', u'reservation': u'default-centos-70', u'properties': {u'memory_mb': 4096, u'cpu_arch': u'x86_64', u'local_gb': 11, u'cpus': 1}, u'instance_uuid': None, u'name': u'my-baremetal', u'driver_info': {u'virtualbox_vmname': u'baremetal', u'virtualbox_host': u'10.0.2.2', u'deploy_kernel': u'2fbbcb70-db8e-4c10-a373-5829b24fffb2', u'deploy_ramdisk': u'f87a6d09-b1f8-479a-9da0-785d8560804c'}, u'created_at': u'2015-06-29T17:41:25.000000', u'driver_internal_info': {u'agent_url': u'http://192.168.50.104:9999', u'hardware_manager_version': {u'generic_hardware_manager': u'1.0'}, u'clean_steps': [{u'priority': 10, u'interface': u'deploy', u'step': u'erase_devices', u'reboot_requested': False}], u'is_whole_disk_image': True, u'agent_last_heartbeat': 1435600147}, u'instance_info': {}}, u'step': {u'priority': 10, u'interface': u'deploy', u'step': u'erase_devices', u'reboot_requested': False}, u'ports': [{u'uuid': u'e040eef7-503c-4f7b-b639-6a6f7c70b86e', u'extra': {}, u'created_at': u'2015-06-29T17:41:40.000000', u'updated_at': u'2015-06-29T17:47:57.000000', u'node_id': 2, u'address': u'08:00:27:6e:df:70', u'id': 9}], u'clean_version': {u'generic_hardware_manager': u'1.0'}}, u'command_result': None, u'id': u'899c16d7-18bf-4a40-8a6f-d9bfb1cad48e', u'command_name': u'execute_clean_step'} continue_cleaning /usr/lib/python2.7/site-packages/ironic/drivers/modules/agent_base_vendor.py:153
This seems to stem from https://github.com/openstack/ironic-python-agent/commit/4c1d2cdb190a894e7cc83ed5d30061a53fe9e09b where it was made possible to pass iterations to shred. However the value used before was String '1' (https://github.com/openstack/ironic-python-agent/blob/8cef029d0d052df38a4f424f90b4434d230cecd0/ironic_python_agent/hardware.py#L456-L457) and now the default value being set seems to be an int 1 (https://github.com/openstack/ironic-python-agent/blob/4c1d2cdb190a894e7cc83ed5d30061a53fe9e09b/ironic_python_agent/hardware.py#L457-L460). This is just a quick guess. I'm going to continue to debug by attempting to figure out how to build my own ramdisk.
I did verify this to myself after generating my own IPA from https:/ /github. com/openstack/ ironic- python- agent (after working through other issues in getting that to work).
I generated a ramdisk from the latest code and it continued to fail.
I then edited the default for npasses from 1 to '1' and generated a new IPA and it worked fine.
I'll now work on contributing back a fix.