update administrator dashboard

This commit is contained in:
Vyacheslav Anzhiganov 2016-05-22 12:36:54 +03:00
parent b62e9433c4
commit 595bd2bea9
4 changed files with 55 additions and 33 deletions

View file

@ -13,3 +13,11 @@ class ControllerPlans(object):
if status: if status:
return PlansVMs.select().where(PlansVMs.status == status) return PlansVMs.select().where(PlansVMs.status == status)
return PlansVMs.select() return PlansVMs.select()
def plan_get(self, plan_id):
return PlansVMs.select().where(PlansVMs.id == plan_id).get()
def exists(self, plan_id):
if PlansVMs.select().where(PlansVMs.id == plan_id).count() == 0:
return False
return True

View file

@ -8,24 +8,24 @@
<table class="table table-bordered" width="100%"> <table class="table table-bordered" width="100%">
<thead> <thead>
<tr> <tr>
<th>Users</th>
<th>Containers</th>
<th>VMs</th>
<th>Datacenters</th> <th>Datacenters</th>
<th>Servers</th> <th>Servers</th>
<th>IPs</th> <th>IPs</th>
<th>Users</th>
<th>Containers</th>
<th>VMs</th>
<th>Payments</th> <th>Payments</th>
<th>Traffic</th> <th>Traffic</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td>{{ stats.users }}</td>
<td>{{ stats.containers }}</td>
<td>{{ stats.vms }}</td>
<td>{{ stats.datacenters }}</td> <td>{{ stats.datacenters }}</td>
<td>{{ stats.servers }}</td> <td>{{ stats.servers }}</td>
<td>{{ stats.ips }}</td> <td>{{ stats.ips }}</td>
<td>{{ stats.users }}</td>
<td>{{ stats.containers }}</td>
<td>{{ stats.vms }}</td>
<td>{{ stats.payments }}</td> <td>{{ stats.payments }}</td>
<td>{{ stats.traffic }}</td> <td>{{ stats.traffic }}</td>
</tr> </tr>

View file

@ -78,9 +78,11 @@ def dashboard():
# #
stats = { stats = {
'users': models.Users.select().count(), 'users': models.Users.select().count(),
'datacenters': models.DataCenters.select().count(),
'servers': models.Servers.select().count(),
'containers': models.Containers.select().count(), 'containers': models.Containers.select().count(),
'ips': models.Ips.select().count(), 'ips': models.Ips.select().count(),
# 'traffic': models.RulesTraffic.select().count(), 'vms': models.Vms.select().count(),
'payments': models.UsersBalanceTransactions.select().count(), 'payments': models.UsersBalanceTransactions.select().count(),
} }
# #

View file

@ -44,6 +44,7 @@ def create():
user_balance = ControllerBilling().get(session['user_id']) user_balance = ControllerBilling().get(session['user_id'])
user_ssh = ControllerSSHKey(session['user_id']) user_ssh = ControllerSSHKey(session['user_id'])
controller_plans = ControllerPlans()
if request.method == "POST": if request.method == "POST":
# check user money # check user money
@ -54,6 +55,14 @@ def create():
new_vm = dict() new_vm = dict()
new_vm['vm_id'] = str(uuid.uuid4()) new_vm['vm_id'] = str(uuid.uuid4())
# check exists plan
if not controller_plans.exists(request.form.get('plan')):
flash(u'Необходимо выбрать план')
return redirect(url_for('vms.create'))
# load plan details
plan_details = controller_plans.plan_get(request.form.get('plan'))
new_vm['plan'] = request.form.get('plan') new_vm['plan'] = request.form.get('plan')
# select server from selected region with available ip-addresses # select server from selected region with available ip-addresses
@ -80,10 +89,10 @@ def create():
new_vm['dns1'] = '8.8.8.8' new_vm['dns1'] = '8.8.8.8'
new_vm['dns2'] = '8.8.4.4' new_vm['dns2'] = '8.8.4.4'
new_vm['cores'] = 1 new_vm['cores'] = plan_details.cores
new_vm['storage'] = 20000 new_vm['storage'] = plan_details.storage
new_vm['swap'] = 512 new_vm['swap'] = plan_details.swap
new_vm['memory'] = 512 new_vm['memory'] = plan_details.memory
new_vm['os_name'] = 'ubuntu' new_vm['os_name'] = 'ubuntu'
new_vm['os_suite'] = 'trusty' new_vm['os_suite'] = 'trusty'
@ -140,15 +149,18 @@ def create():
ssh_key=new_vm['ssh_key'], ssh_key=new_vm['ssh_key'],
) )
#
# # send mail message with recovery code # Show login/password on page
# message_parts = [] flash(u'Виртуальный сервер будет доступен через несколько минут.')
#
# if new_container['ipv4']: # send mail message with recovery code
# message_parts.append(u"IPv4: %s" % new_container['ipv4']) message_parts = []
# if new_container['ipv6']:
# message_parts.append(u"IPv6: %s" % new_container['ipv6']) if new_vm['ipv4']:
# message_parts.append(u"Пользователь: %s" % new_container['username']) message_parts.append(u"IPv4: %s" % new_vm['ipv4'])
if new_vm['ipv6']:
message_parts.append(u"IPv6: %s" % new_vm['ipv6'])
# message_parts.append(u"Пользователь: %s" % new_vm['username'])
# message_parts.append(u"Пароль: %s" % new_container['password']) # message_parts.append(u"Пароль: %s" % new_container['password'])
# if new_container['ssh_key']: # if new_container['ssh_key']:
# message_parts.append(u"SSH ключ: добавлен") # message_parts.append(u"SSH ключ: добавлен")
@ -242,34 +254,34 @@ def settings(vm_id):
if request.method == 'POST': if request.method == 'POST':
if request.form['action'] == 'set_status': if request.form['action'] == 'set_status':
if request.form['status'] == 'inactive': if request.form['status'] == 'inactive':
containers.set_status(container_id, 3) vm.status_set(vm_id, 3)
# Создание задания # Создание задания
ControllerTasks(session['user_id']).create( ControllerTasks(session['user_id']).create(
container_details.datacenter.id, vm_details.datacenter.id,
container_details.server.id, vm_details.server.id,
'container_stop', 'vm_stop',
0, 0,
container_id=container_id vm_id=vm_id
) )
return redirect(url_for('containers.settings', container_id=container_id)) return redirect(url_for('vms.settings', vm_id=vm_id))
if request.form['status'] == 'active': if request.form['status'] == 'active':
balance = ControllerBilling().get(session['user_id']) balance = ControllerBilling().get(session['user_id'])
if balance <= 0: if balance <= 0:
flash(u'Недостаточно средств на балансе.') flash(u'Недостаточно средств на балансе.')
return redirect(url_for('containers.settings', container_id=container_id)) return redirect(url_for('vms.settings', vm_id=vm_id))
containers.set_status(container_id, 2) vm.set_status(vm_id, 2)
# Создание задания # Создание задания
ControllerTasks(session['user_id']).create( ControllerTasks(session['user_id']).create(
container_details.datacenter.id, vm_details.datacenter.id,
container_details.server.id, vm_details.server.id,
'container_start', 'vm_start',
0, 0,
container_id=container_details.id vm_id=vm_details.id
) )
return redirect(url_for('containers.settings', container_id=container_id)) return redirect(url_for('vms.settings', vm_id=vm_id))
return render_template( return render_template(
'default/vms/settings.html', 'default/vms/settings.html',