def retry_failure_fab_dev_create(self, tenant_id, fw_data, fw_dict):
result = fw_data.get('<STR_LIT:result>').split('<STR_LIT:(>')[<NUM_LIT:0>]<EOL>is_fw_virt = self.is_device_virtual()<EOL>if result == fw_constants.RESULT_FW_CREATE_INIT:<EOL><INDENT>name = dfa_dbm.DfaDBMixin.get_project_name(self, tenant_id)<EOL>ret = self.fabric.retry_failure(tenant_id, name, fw_dict,<EOL>is_fw_virt, result)<EOL>if not ret:<EOL><INDENT>LOG.error("<STR_LIT>",<EOL>tenant_id)<EOL>return<EOL><DEDENT>else:<EOL><INDENT>result = fw_constants.RESULT_FW_CREATE_DONE<EOL>self.update_fw_db_final_result(fw_dict.get('<STR_LIT>'), result)<EOL><DEDENT><DEDENT>if result == fw_constants.RESULT_FW_CREATE_DONE:<EOL><INDENT>if fw_data.get('<STR_LIT>') != '<STR_LIT>':<EOL><INDENT>ret = self.create_fw_device(tenant_id, fw_dict.get('<STR_LIT>'),<EOL>fw_dict)<EOL>if ret:<EOL><INDENT>self.fwid_attr[tenant_id].fw_drvr_created(True)<EOL>self.update_fw_db_dev_status(fw_dict.get('<STR_LIT>'),<EOL>'<STR_LIT>')<EOL>LOG.info("<STR_LIT>"<EOL>"<STR_LIT>", tenant_id)<EOL><DEDENT><DEDENT><DEDENT>
This module calls routine in fabric to retry the failure cases.

        If device is not successfully cfg/uncfg, it calls the device manager
        routine to cfg/uncfg the device.