'Returns True for done, False for timeout.'

def _call_policy_plugin(self, plugin, pol_base, pol_this):

    pol_inp_data = dict(pol_base)
    pol_inp_data.update(pol_this, starttime=str(time.time()))
    retry = 0
    while True:
        (res, pol_result) = self.call_or_reconnect(self.odm.run_external_plugin, plugin, pol_inp_data)
        self._check_result(res)
        if (pol_result['result'] == dm_const.BOOL_TRUE):
            return True
        if (pol_result['timeout'] == dm_const.BOOL_TRUE):
            return False
        eventlet.sleep(min((0.5 + (retry / 5)), 2))
        retry += 1
