39 QEMU virtual machines

This commit is contained in:
Vyacheslav Anzhiganov 2016-05-19 10:22:01 +03:00
parent 4c0afeb1f7
commit c44c890cde
4 changed files with 54 additions and 12 deletions

View file

@ -6,7 +6,9 @@ class ControllerVMS(object):
self.user_id = user_id self.user_id = user_id
pass pass
def get(self): def get(self, vm_id=None):
if vm_id:
return Vms.select().where(Vms.user == self.user_id, Vms.id == vm_id).get()
return Vms.select().where(Vms.user == self.user_id) return Vms.select().where(Vms.user == self.user_id)
def create(self, datacenter_id, server_id, vm_id, def create(self, datacenter_id, server_id, vm_id,
@ -27,3 +29,8 @@ class ControllerVMS(object):
status=status status=status
) )
return True return True
def exists(self, vm_id):
if Vms.select().where(Vms.user == self.user_id, Vms.id == vm_id).count() == 0:
return False
return True

View file

@ -54,7 +54,7 @@
{% endif %} {% endif %}
</td> </td>
<td> <td>
<a href="{# { url_for('vm.settings', vm_id=vm.id) } #}">Настройки</a> <a href="{{ url_for('vms.settings', vm_id=vm.id) }}">Настройки</a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}

View file

@ -0,0 +1,35 @@
{% extends "default/_layout.html" %}
{% block title %}Статистика{% endblock %}
{% block content %}
<div class="row">
<div class="large-12 columns">
<h3>Настройки</h3>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<h4>Статус</h4>
{% if vm.status == 0 %}
<p style="color: red">Неактивен</p>
{% else %}
<p style="color: green">Активен</p>
{% endif %}
<form action="{{ url_for('vms.settings', vm_id=vm.id) }}" method="post">
<input type="hidden" name="action" value="set_status">
<div class="input-group">
<select name="status">
<option value="active">Активировать</option>
<option value="inactive">Деактивировать</option>
</select>
</div>
<input type="submit" value="Изменить статус" class="button success small">
</form>
<h4>Удалить</h4>
<a href="{{ url_for('vms.delete', vm_id=vm.id) }}">
<button class="button alert">Удалить</button>
</a>
</div>
</div>
{% endblock %}

View file

@ -182,8 +182,8 @@ def create():
) )
@viewVMs.route('/delete/<uuid:container_id>.html', methods=['GET', 'POST']) @viewVMs.route('/delete/<uuid:vm_id>.html', methods=['GET', 'POST'])
def delete(container_id): def delete(vm_id):
# check session # check session
if not ControllerUsers().check_session(): if not ControllerUsers().check_session():
return redirect(url_for("account.logout")) return redirect(url_for("account.logout"))
@ -221,8 +221,8 @@ def delete(container_id):
) )
@viewVMs.route('/settings/<uuid:container_id>', methods=['GET', 'POST']) @viewVMs.route('/settings/<uuid:vm_id>.html', methods=['GET', 'POST'])
def settings(container_id): def settings(vm_id):
# check session # check session
if not ControllerUsers().check_session(): if not ControllerUsers().check_session():
return redirect(url_for("account.logout")) return redirect(url_for("account.logout"))
@ -230,15 +230,15 @@ def settings(container_id):
if not ControllerUsers().auth(session['email'], session['password']): if not ControllerUsers().auth(session['email'], session['password']):
return redirect(url_for("account.logout")) return redirect(url_for("account.logout"))
containers = ControllerContainers(session['user_id']) vm = ControllerVMS(session['user_id'])
# check the user have a selected rule # check the user have a selected rule
# if user not have a container then redirect to the container list # if user not have a container then redirect to the container list
if not containers.check_exists_item(container_id): if not vm.exists(vm_id):
return redirect(url_for('containers.index')) return redirect(url_for('vms.index'))
# get container details # get container details
container_details = containers.get_item(container_id) vm_details = vm.get(vm_id=vm_id)
if request.method == 'POST': if request.method == 'POST':
if request.form['action'] == 'set_status': if request.form['action'] == 'set_status':
@ -273,8 +273,8 @@ def settings(container_id):
return redirect(url_for('containers.settings', container_id=container_id)) return redirect(url_for('containers.settings', container_id=container_id))
return render_template( return render_template(
'default/containers/settings.html', 'default/vms/settings.html',
container=container_details vm=vm_details
) )