dash-stack/dash/server/views.py

48 lines
1.9 KiB
Python

import datetime, requests, json, string, random
from keystoneauth1 import loading
from keystoneauth1 import session
from novaclient import client
from flask import render_template, redirect, request, url_for, flash
from flask_login import login_user, logout_user, login_required, \
current_user
from flask_login import session as flask_session
from flask_principal import Identity, AnonymousIdentity, \
identity_changed
from . import server
from .. import db
from ..models import User, Role, Provider
from ..email import send_email
from ..decorators import requires_roles
@server.route('/', methods=['GET', 'POST'])
@login_required
@requires_roles("user","admin")
def index():
return render_template('server/index.html')
@server.route('/list-servers', methods=['GET', 'POST'])
@login_required
@requires_roles("user","admin")
def list_servers():
user = User.query.get_or_404(current_user.id)
provider = Provider.query.get_or_404(flask_session['selected_provider'])
loader = loading.get_plugin_loader('password')
auth = loader.load_from_options(auth_url=provider.url,
username=user.username,
password=user.provider_password,
project_name=user.username,
project_domain_name='Default',
user_domain_name='Default')
sess = session.Session(auth=auth)
nova = client.Client('2', session=sess)
servers = nova.servers.list()
for_servers = [(server.id, server.name)
for server in nova.servers.list()]
return render_template('server/list_servers.html',
title="List Servers",
block_description = "list your servers",
user=user, provider=provider,nova=nova,
servers=servers,for_servers=for_servers)