Exemplo n.º 1
0
def task(request, id):
    user, email, usernum = request.user.username.split("|")[:]
    ROOT = os.path.abspath(os.path.dirname(__file__))

    content_result = Content.objects.filter(id=id).values()[0]

    history_result = History.objects.filter(
        project=content_result['project'],
        env=content_result['env']).order_by('-finish_time').values()[1]

    project_result = Project.objects.filter(
        name=history_result['project'],
        type=history_result['type'],
        gradation=history_result['env'],
    ).values()[0]

    send(request, id, history_result['project'], 104)
    Content.objects.filter(id=id).update(status=104)
    r = Rollback(
        task_id=id,
        start_time=int(time.time()),
        finish_time=None,
        rollback_user=user,
    )
    r.save()

    print project_result['ctl_id'], history_result['version'], history_result[
        'run_id']
    print "source /root/.bash_profile; /usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-run -i %d -- -Version %s" % (
        project_result['ctl_id'], history_result['version'])

    result = os.popen(
        "source /root/.bash_profile; /usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-run -i %d -- -Version %s"
        % (project_result['ctl_id'], history_result['version']))

    os.system("python %s/../scripts/log_tail.py %s %s %s %s %s r &" %
              (ROOT, id, history_result['run_id'], history_result['project'],
               history_result['project'], history_result['env']))

    return HttpResponseRedirect("/task/view/%s/" % id)
Exemplo n.º 2
0
def task(request, id):
    user, email, usernum = request.user.username.split("|")[:]
    ROOT = os.path.abspath(os.path.dirname(__file__))

    content_result = Content.objects.filter(id=id).values()[0]

    history_result = History.objects.filter(project=content_result['project'], env=content_result['env']).order_by('-finish_time').values()[1]

    project_result = Project.objects.filter(
        name = history_result['project'],
        type = history_result['type'],
        gradation = history_result['env'],
    ).values()[0]

    send(request, id, history_result['project'], 104)
    Content.objects.filter(id=id).update(status=104)
    r = Rollback(
        task_id = id,
        start_time = int(time.time()),
        finish_time = None,
        rollback_user = user,
    )
    r.save()



    print project_result['ctl_id'], history_result['version'], history_result['run_id']
    print "source /root/.bash_profile; /usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-run -i %d -- -Version %s" % (project_result['ctl_id'], history_result['version'])

    result = os.popen("source /root/.bash_profile; /usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-run -i %d -- -Version %s" % (project_result['ctl_id'], history_result['version']))

    os.system("python %s/../scripts/log_tail.py %s %s %s %s %s r &" % (ROOT, id, history_result['run_id'], history_result['project'], history_result['project'], history_result['env']))






    return HttpResponseRedirect("/task/view/%s/" % id)
Exemplo n.º 3
0
            )
            h.save()


            mongo_conn.update(
                condition={'task_id':id},
                data={
                    'percent' : 100,
                    'status' : 'success',
                }
            )




            send("", id, project, 102)
        elif stat == 'r':
            mysql_conn.save("update task_content set finish_time = '%s', status = '105' where id = '%s'" % (int(time.time()), id))
            time.sleep(10)

            rollback_history_id = Rollback.objects.filter(task_id=id).order_by('-start_time').values()[0]['id']
            Rollback.objects.filter(id=rollback_history_id, task_id=id).update(finish_time=int(time.time()))
            send("", id, project, 105)
        exit()

    time.sleep(10)




Exemplo n.º 4
0
def main(id, run_id, project, group, percent, stat):
    """ A demo daemon main routine, write a datestamp to
        /tmp/daemon-log every 10 seconds.
    """
    import time

    mysql_conn = Mysql(
        host='127.0.0.1',
        user='******',
        password='******',
        database='autorelease',
        )

    mongo_conn = Mongo(
    host='127.0.0.1',
    database='log',
    table='log_' + id,
    )


                 #stat: u(update)  ro r(rollback)

    try:
        int(percent)
    except:
        l = Log(project, group, percent)
    else:
        l = Log(project, group, "%s%%" % percent)

    content = l.load()


    mongo_conn.drop()

    mongo_conn.insert(
        id=id,
        run_id=run_id,
        content="",
        update_time=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(time.time())))
    )

    while True:
        content = l.load()
        result = os.popen("/usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-queue").read()

        if run_id in result:
            mongo_conn.update(condition={'id': id}, data={"content": content})
            continue
        else:
            mongo_conn.update(condition={'id': id}, data={"content": content})
            if stat == 'u':
                mysql_conn.save(
                    "update task_content set finish_time = '%s', status = '102' where id = '%s'" % (int(time.time()), id))
                time.sleep(10)
                send("", id, project, 102)

            #history

                content_result = Content.objects.filter(id=id, project=project, env=percent).order_by('-finish_time').values()[0]

                h = History(
                task_id=content_result['id'],
                type=content_result['type'],
                project=content_result['project'],
                env=content_result['env'],
                run_id=content_result['run_id'],
                version=content_result['version'],
                status=content_result['status'],
                deploy_time=content_result['deploy_time'],
                finish_time=content_result['finish_time'],
                create_user=content_result['create_user'],
                deploy_user=content_result['deploy_user'],
                )
                h.save()
            elif stat == 'r':
                mysql_conn.save(
                    "update task_content set finish_time = '%s', status = '105' where id = '%s'" % (int(time.time()), id))
                time.sleep(10)

                rollback_history_id = Rollback.objects.filter(task_id=id).order_by('-start_time').values()[0]['id']
                Rollback.objects.filter(id=rollback_history_id, task_id=id).update(finish_time=int(time.time()))
                send("", id, project, 105)
            exit()

        time.sleep(10)
Exemplo n.º 5
0
def run(request, id, env):  #env == percent
    print id, env
    user, email, usernum = request.user.username.split("|")[:]
    Content.objects.filter(id=id).update(env=env)
    ROOT = os.path.abspath(os.path.dirname(__file__))

    version, ctl_id = "", 0
    cursor = connection.cursor()
    sql = """
    select tc.version, tp.ctl_id from task_content tc left join task_project tp on tc.project = tp.name where tc.id = '%s' and tp.gradation = '%s';
    """ % (id, env)
    cursor.execute(sql)
    row = cursor.fetchone()
    version, ctl_id = row[0:]

    #result = subprocess.call("ctl-run -i %d -- -Version %s" % (ctl_id, version), shell=True, stderr=subprocess.STDOUT)
    result = os.popen(
        "source /root/.bash_profile; /usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-run -i %d -- -Version %s"
        % (ctl_id, version))

    #update or insert case status
    mongo_conn = Mongo(
        host='127.0.0.1',
        database='release',
        table='percent',
    )

    mongo_conn.remove(task_id=int(id))

    mongo_conn.insert(task_id=int(id), status='running', percent=1)

    cursor = connection.cursor()
    sql = """
    select tp.name, tp.group, tp.gradation, tc.status from task_content tc
    left join task_project tp
    on  tc.project = tp.name and tc.env = tp.gradation
    where tc.id = '%s'
    """ % id
    cursor.execute(sql)
    row = cursor.fetchone()

    project, group, percent, status = row[0], row[1], row[2], row[3]

    run_id = ""
    print result
    for i in result:
        if re.search("^\[(\d+)\].*", i):
            run_id = re.search("^\[(\d+)\].*", i).group(1)

    print run_id

    Content.objects.filter(id=id).update(
        run_id=run_id,
        deploy_time=int(time.time()),
        deploy_user=user,
        status=101,
    )
    send(request, id, project, 101)

    print "nohup /usr/bin/python /data/python/web/autorelease/scripts/log_tail.py %s %s %s %s %s u >> /tmp/run.log &\n" % (
        id, run_id, project, group, percent)

    print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(time.time())))

    cmd = "nohup /usr/bin/python /data/python/web/autorelease/scripts/log_tail.py %s %s %s %s %s u >> /tmp/run.log &\n" % (
        id, run_id, project, group, percent)

    f = open("/tmp/task", "a")
    f.write(cmd)
    f.close()

    #    subprocess.call(
    #        "nohup python %s/../scripts/log_tail.py %s %s %s %s %s u >/dev/null 2>&1 &" % (ROOT, id, run_id, project, group, percent),
    #        shell=True,
    #        stdout=open('/dev/null', 'w'),
    #        stderr=subprocess.STDOUT
    #    )

    #os.system("nohup python %s/../scripts/log_tail.py %s %s %s %s %s u >/dev/null 2>&1 &" % (ROOT, id, run_id, project, group, percent))

    return HttpResponseRedirect("/task/view/%s?m=1&p=%s" % (id, project))
Exemplo n.º 6
0
def run(request, id, env):              #env == percent
    print id,env
    user, email, usernum = request.user.username.split("|")[:]
    Content.objects.filter(id=id).update(env=env)
    ROOT = os.path.abspath(os.path.dirname(__file__))

    version, ctl_id = "", 0
    cursor = connection.cursor()
    sql = """
    select tc.version, tp.ctl_id from task_content tc left join task_project tp on tc.project = tp.name where tc.id = '%s' and tp.gradation = '%s';
    """ % (id, env)
    cursor.execute(sql)
    row = cursor.fetchone()
    version, ctl_id = row[0:]

    #result = subprocess.call("ctl-run -i %d -- -Version %s" % (ctl_id, version), shell=True, stderr=subprocess.STDOUT)
    result = os.popen("source /root/.bash_profile; /usr/local/ctier/pkgs/ctl-3.6.1/bin/ctl-run -i %d -- -Version %s" % (ctl_id, version))

    #update or insert case status
    mongo_conn = Mongo(
        host = '127.0.0.1',
        database = 'release',
        table = 'percent',
    )

    mongo_conn.remove(
        task_id = int(id)
    )

    mongo_conn.insert(
        task_id = int(id),
        status = 'running',
        percent = 1
    )


    cursor = connection.cursor()
    sql = """
    select tp.name, tp.group, tp.gradation, tc.status from task_content tc
    left join task_project tp
    on  tc.project = tp.name and tc.env = tp.gradation
    where tc.id = '%s'
    """ % id
    cursor.execute(sql)
    row = cursor.fetchone()

    project, group, percent, status = row[0], row[1], row[2], row[3]


    run_id = ""
    print result
    for i in result:
        if re.search("^\[(\d+)\].*", i):
            run_id = re.search("^\[(\d+)\].*", i).group(1)



    print run_id



    Content.objects.filter(id=id).update(
        run_id=run_id,
        deploy_time = int(time.time()),
        deploy_user = user,
        status = 101,
    )
    send(request, id, project, 101)

    print "nohup /usr/bin/python /data/python/web/autorelease/scripts/log_tail.py %s %s %s %s %s u >> /tmp/run.log &\n" % (id, run_id, project, group, percent)

    print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(time.time())))

    cmd = "nohup /usr/bin/python /data/python/web/autorelease/scripts/log_tail.py %s %s %s %s %s u >> /tmp/run.log &\n" % (id, run_id, project, group, percent)



    f = open("/tmp/task", "a")
    f.write(cmd)
    f.close()














#    subprocess.call(
#        "nohup python %s/../scripts/log_tail.py %s %s %s %s %s u >/dev/null 2>&1 &" % (ROOT, id, run_id, project, group, percent),
#        shell=True,
#        stdout=open('/dev/null', 'w'),
#        stderr=subprocess.STDOUT
#    )

    #os.system("nohup python %s/../scripts/log_tail.py %s %s %s %s %s u >/dev/null 2>&1 &" % (ROOT, id, run_id, project, group, percent))




    return HttpResponseRedirect("/task/view/%s?m=1&p=%s" % (id, project))