示例#1
0
def not_found(e):
    user = User(session['userinfo']['preferred_username'])
    return render_template('404.html', user=user, e=e), 404
示例#2
0
def forbidden(e):
    user = User(session['userinfo']['preferred_username'])
    return render_template('403.html', user=user, e=e), 403
示例#3
0
def create():
    user = User(session['userinfo']['preferred_username'])
    proxmox = connect_proxmox()
    if user.active or user.rtp:
        if request.method == 'GET':
            isos = get_isos(proxmox, app.config['PROXMOX_ISO_STORAGE'])
            pools = get_pools(proxmox, db)
            templates = get_templates(db)
            return render_template('create.html',
                                   user=user,
                                   usage=user.usage,
                                   limits=user.limits,
                                   percents=user.usage_percent,
                                   isos=isos,
                                   pools=pools,
                                   templates=templates)
        elif request.method == 'POST':
            name = request.form['name'].lower()
            cores = request.form['cores']
            memory = request.form['mem']
            template = request.form['template']
            disk = request.form['disk']
            iso = request.form['iso']
            ssh_key = request.form['ssh_key']
            if iso != 'none':
                iso = "{}:iso/{}".format(app.config['PROXMOX_ISO_STORAGE'],
                                         iso)
            if not user.rtp:
                if template == 'none':
                    usage_check = user.check_usage(0, 0, disk)
                else:
                    usage_check = user.check_usage(cores, memory, disk)
                username = user.name
            else:
                usage_check = None
                username = request.form['user']
            if usage_check:
                return usage_check
            else:
                valid, available = check_hostname(starrs, name)
                if valid and available:
                    if template == 'none':
                        q.enqueue(create_vm_task,
                                  username,
                                  name,
                                  cores,
                                  memory,
                                  disk,
                                  iso,
                                  timeout=300)
                    else:
                        q.enqueue(setup_template_task,
                                  template,
                                  name,
                                  username,
                                  ssh_key,
                                  cores,
                                  memory,
                                  timeout=600)
                        return '', 200
            return '', 200
    else:
        return '', 403