def run_delete_sm(self, tenant_id, fw_dict, is_fw_virt):
<EOL>ret = True<EOL>serv_obj = self.get_service_obj(tenant_id)<EOL>state = serv_obj.get_state()<EOL>new_state = serv_obj.fixup_state(fw_const.FW_DEL_OP, state)<EOL>serv_obj.store_local_final_result(fw_const.RESULT_FW_DELETE_INIT)<EOL>if state != new_state:<EOL><INDENT>state = new_state<EOL>serv_obj.store_state(state)<EOL><DEDENT>while ret:<EOL><INDENT>try:<EOL><INDENT>ret = self.fabric_fsm[state][<NUM_LIT:1>](tenant_id, fw_dict,<EOL>is_fw_virt=is_fw_virt)<EOL><DEDENT>except Exception as exc:<EOL><INDENT>LOG.error("<STR_LIT>",<EOL>{'<STR_LIT>': str(exc), '<STR_LIT:state>':<EOL>fw_const.fw_state_fn_del_dict.get(state)})<EOL>ret = False<EOL><DEDENT>if ret:<EOL><INDENT>LOG.info("<STR_LIT>",<EOL>fw_const.fw_state_fn_del_dict.get(state))<EOL><DEDENT>if state == fw_const.INIT_STATE:<EOL><INDENT>break<EOL><DEDENT>state = self.get_next_state(state, ret, fw_const.FW_DEL_OP)<EOL>serv_obj.store_state(state)<EOL><DEDENT>return ret<EOL>
Runs the delete State Machine.

        Goes through every state function until the end or when one state
        returns failure.