Commit fc553851 by Bach Dániel

Merge remote-tracking branch 'origin/master' into feature-port-operations

Conflicts:
	circle/dashboard/urls.py
parents c4872897 833d5490
...@@ -64,6 +64,13 @@ CACHES = { ...@@ -64,6 +64,13 @@ CACHES = {
########## END CACHE CONFIGURATION ########## END CACHE CONFIGURATION
########## ROSETTA CONFIGURATION
INSTALLED_APPS += (
'rosetta',
)
########## END ROSETTA CONFIGURATION
########## TOOLBAR CONFIGURATION ########## TOOLBAR CONFIGURATION
# https://github.com/django-debug-toolbar/django-debug-toolbar#installation # https://github.com/django-debug-toolbar/django-debug-toolbar#installation
if get_env_variable('DJANGO_TOOLBAR', 'FALSE') == 'TRUE': if get_env_variable('DJANGO_TOOLBAR', 'FALSE') == 'TRUE':
......
...@@ -18,9 +18,11 @@ ...@@ -18,9 +18,11 @@
from django.conf.urls import patterns, include, url from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView from django.views.generic import TemplateView
from django.conf import settings
from django.contrib import admin from django.contrib import admin
from django.shortcuts import redirect
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.shortcuts import redirect
from circle.settings.base import get_env_variable from circle.settings.base import get_env_variable
from dashboard.views import circle_login, HelpView from dashboard.views import circle_login, HelpView
...@@ -71,6 +73,13 @@ urlpatterns = patterns( ...@@ -71,6 +73,13 @@ urlpatterns = patterns(
) )
if 'rosetta' in settings.INSTALLED_APPS:
urlpatterns += patterns(
'',
url(r'^rosetta/', include('rosetta.urls')),
)
if get_env_variable('DJANGO_SAML', 'FALSE') == 'TRUE': if get_env_variable('DJANGO_SAML', 'FALSE') == 'TRUE':
urlpatterns += patterns( urlpatterns += patterns(
'', '',
......
...@@ -216,7 +216,7 @@ html { ...@@ -216,7 +216,7 @@ html {
} }
#vm-list-rename-name, #node-list-rename-name, #group-list-rename-name { #vm-list-rename-name, #node-list-rename-name, #group-list-rename-name {
max-width: 100px; max-width: 150px;
} }
.label-tag { .label-tag {
...@@ -1042,3 +1042,12 @@ textarea[name="new_members"] { ...@@ -1042,3 +1042,12 @@ textarea[name="new_members"] {
#vm-migrate-node-list li { #vm-migrate-node-list li {
cursor: pointer; cursor: pointer;
} }
.group-list-table .actions,
.group-list-table .admin,
.group-list-table .number_of_users,
.group-list-table .pk {
width: 1px;
white-space: nowrap;
text-align: center;
}
...@@ -50,6 +50,21 @@ $(function () { ...@@ -50,6 +50,21 @@ $(function () {
return false; return false;
}); });
$('.tx-tpl-ownership').click(function(e) {
$.ajax({
type: 'GET',
url: $('.tx-tpl-ownership').attr('href'),
success: function(data) {
$('body').append(data);
$('#confirmation-modal').modal('show');
$('#confirmation-modal').on('hidden.bs.modal', function() {
$('#confirmation-modal').remove();
});
}
});
return false;
});
$('.template-choose').click(function(e) { $('.template-choose').click(function(e) {
$.ajax({ $.ajax({
type: 'GET', type: 'GET',
...@@ -428,7 +443,7 @@ function generateVmHTML(pk, name, host, icon, _status, fav, is_last) { ...@@ -428,7 +443,7 @@ function generateVmHTML(pk, name, host, icon, _status, fav, is_last) {
return '<a href="/dashboard/vm/' + pk + '/" class="list-group-item' + return '<a href="/dashboard/vm/' + pk + '/" class="list-group-item' +
(is_last ? ' list-group-item-last' : '') + '">' + (is_last ? ' list-group-item-last' : '') + '">' +
'<span class="index-vm-list-name">' + '<span class="index-vm-list-name">' +
'<i class="fa ' + icon + '" title="' + _status + '"></i> ' + name + '<i class="fa ' + icon + '" title="' + _status + '"></i> ' + safe_tags_replace(name) +
'</span>' + '</span>' +
'<small class="text-muted"> ' + host + '</small>' + '<small class="text-muted"> ' + host + '</small>' +
'<div class="pull-right dashboard-vm-favourite" data-vm="' + pk + '">' + '<div class="pull-right dashboard-vm-favourite" data-vm="' + pk + '">' +
...@@ -441,14 +456,14 @@ function generateVmHTML(pk, name, host, icon, _status, fav, is_last) { ...@@ -441,14 +456,14 @@ function generateVmHTML(pk, name, host, icon, _status, fav, is_last) {
function generateGroupHTML(url, name, is_last) { function generateGroupHTML(url, name, is_last) {
return '<a href="' + url + '" class="list-group-item real-link' + (is_last ? " list-group-item-last" : "") +'">'+ return '<a href="' + url + '" class="list-group-item real-link' + (is_last ? " list-group-item-last" : "") +'">'+
'<i class="fa fa-users"></i> '+ name + '<i class="fa fa-users"></i> '+ safe_tags_replace(name) +
'</a>'; '</a>';
} }
function generateNodeHTML(name, icon, _status, url, is_last) { function generateNodeHTML(name, icon, _status, url, is_last) {
return '<a href="' + url + '" class="list-group-item real-link' + (is_last ? ' list-group-item-last' : '') + '">' + return '<a href="' + url + '" class="list-group-item real-link' + (is_last ? ' list-group-item-last' : '') + '">' +
'<span class="index-node-list-name">' + '<span class="index-node-list-name">' +
'<i class="fa ' + icon + '" title="' + _status + '"></i> ' + name + '<i class="fa ' + icon + '" title="' + _status + '"></i> ' + safe_tags_replace(name) +
'</span>' + '</span>' +
'<div style="clear: both;"></div>' + '<div style="clear: both;"></div>' +
'</a>'; '</a>';
...@@ -456,7 +471,7 @@ function generateNodeHTML(name, icon, _status, url, is_last) { ...@@ -456,7 +471,7 @@ function generateNodeHTML(name, icon, _status, url, is_last) {
function generateNodeTagHTML(name, icon, _status, label , url) { function generateNodeTagHTML(name, icon, _status, label , url) {
return '<a href="' + url + '" class="label ' + label + '" >' + return '<a href="' + url + '" class="label ' + label + '" >' +
'<i class="fa ' + icon + '" title="' + _status + '"></i> ' + name + '<i class="fa ' + icon + '" title="' + _status + '"></i> ' + safe_tags_replace(name) +
'</a> '; '</a> ';
} }
...@@ -678,3 +693,18 @@ function getParameterByName(name) { ...@@ -678,3 +693,18 @@ function getParameterByName(name) {
results = regex.exec(location.search); results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
} }
var tagsToReplace = {
'&': '&amp;',
'<': '&lt;',
'>': '&gt;'
};
function replaceTag(tag) {
return tagsToReplace[tag] || tag;
}
function safe_tags_replace(str) {
return str.replace(/[&<>]/g, replaceTag);
}
$(function() {
$(".disk-list-disk-percentage").each(function() {
var disk = $(this).data("disk-pk");
var element = $(this);
refreshDisk(disk, element);
});
});
function refreshDisk(disk, element) {
$.get("/dashboard/disk/" + disk + "/status/", function(result) {
if(result.percentage == null || result.failed == "True") {
location.reload();
} else {
var diff = result.percentage - parseInt(element.html());
var refresh = 5 - diff;
refresh = refresh < 1 ? 1 : (result.percentage == 0 ? 1 : refresh);
if(isNaN(refresh)) refresh = 2; // this should not happen
element.html(result.percentage);
setTimeout(function() {refreshDisk(disk, element)}, refresh * 1000);
}
});
}
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
data: {'new_name': name}, data: {'new_name': name},
headers: {"X-CSRFToken": getCookie('csrftoken')}, headers: {"X-CSRFToken": getCookie('csrftoken')},
success: function(data, textStatus, xhr) { success: function(data, textStatus, xhr) {
$("#group-details-h1-name").html(data['new_name']).show(); $("#group-details-h1-name").text(data['new_name']).show();
$('#group-details-rename').hide(); $('#group-details-rename').hide();
// addMessage(data['message'], "success"); // addMessage(data['message'], "success");
}, },
......
...@@ -3,6 +3,7 @@ $(function() { ...@@ -3,6 +3,7 @@ $(function() {
$("#group-list-rename-button, .group-details-rename-button").click(function() { $("#group-list-rename-button, .group-details-rename-button").click(function() {
$("#group-list-column-name", $(this).closest("tr")).hide(); $("#group-list-column-name", $(this).closest("tr")).hide();
$("#group-list-rename", $(this).closest("tr")).css('display', 'inline'); $("#group-list-rename", $(this).closest("tr")).css('display', 'inline');
$("#group-list-rename").find("input").select();
}); });
/* rename ajax */ /* rename ajax */
......
...@@ -15,7 +15,7 @@ $(function() { ...@@ -15,7 +15,7 @@ $(function() {
data: {'new_name': name}, data: {'new_name': name},
headers: {"X-CSRFToken": getCookie('csrftoken')}, headers: {"X-CSRFToken": getCookie('csrftoken')},
success: function(data, textStatus, xhr) { success: function(data, textStatus, xhr) {
$("#node-details-h1-name").html(data['new_name']).show(); $("#node-details-h1-name").text(data['new_name']).show();
$('#node-details-rename').hide(); $('#node-details-rename').hide();
// addMessage(data['message'], "success"); // addMessage(data['message'], "success");
}, },
......
...@@ -12,40 +12,6 @@ $(function() { ...@@ -12,40 +12,6 @@ $(function() {
tr.removeClass('danger'); tr.removeClass('danger');
} }
/* rename */
$("#node-list-rename-button, .node-details-rename-button").click(function() {
$("#node-list-column-name", $(this).closest("tr")).hide();
$("#node-list-rename", $(this).closest("tr")).css('display', 'inline');
});
/* rename ajax */
$('.node-list-rename-submit').click(function() {
var row = $(this).closest("tr")
var name = $('#node-list-rename-name', row).val();
var url = '/dashboard/node/' + row.children("td:first-child").text().replace(" ", "") + '/';
$.ajax({
method: 'POST',
url: url,
data: {'new_name': name},
headers: {"X-CSRFToken": getCookie('csrftoken')},
success: function(data, textStatus, xhr) {
$("#node-list-column-name", row).html(
$("<a/>", {
'class': "real-link",
href: "/dashboard/node/" + data['node_pk'] + "/",
text: data['new_name']
})
).show();
$('#node-list-rename', row).hide();
// addMessage(data['message'], "success");
},
error: function(xhr, textStatus, error) {
addMessage("Error during renaming!", "danger");
}
});
return false;
});
function statuschangeSuccess(tr){ function statuschangeSuccess(tr){
var tspan=tr.children('.enabled').children(); var tspan=tr.children('.enabled').children();
......
...@@ -88,18 +88,21 @@ class GroupListTable(Table): ...@@ -88,18 +88,21 @@ class GroupListTable(Table):
number_of_users = TemplateColumn( number_of_users = TemplateColumn(
orderable=False, orderable=False,
verbose_name=_("Number of users"),
template_name='dashboard/group-list/column-users.html', template_name='dashboard/group-list/column-users.html',
attrs={'th': {'class': 'group-list-table-admin'}}, attrs={'th': {'class': 'group-list-table-admin'}},
) )
admin = TemplateColumn( admin = TemplateColumn(
orderable=False, orderable=False,
verbose_name=_("Admin"),
template_name='dashboard/group-list/column-admin.html', template_name='dashboard/group-list/column-admin.html',
attrs={'th': {'class': 'group-list-table-admin'}}, attrs={'th': {'class': 'group-list-table-admin'}},
) )
actions = TemplateColumn( actions = TemplateColumn(
orderable=False, orderable=False,
verbose_name=_("Actions"),
attrs={'th': {'class': 'group-list-table-thin'}}, attrs={'th': {'class': 'group-list-table-thin'}},
template_code=('{% include "dashboard/group-list/column-' template_code=('{% include "dashboard/group-list/column-'
'actions.html" with btn_size="btn-xs" %}'), 'actions.html" with btn_size="btn-xs" %}'),
......
...@@ -15,11 +15,11 @@ ...@@ -15,11 +15,11 @@
<form action="{% url "dashboard.views.status-node" pk=object.pk %}" method="POST"> <form action="{% url "dashboard.views.status-node" pk=object.pk %}" method="POST">
{% csrf_token %} {% csrf_token %}
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Cancel" %}</button> <button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Cancel" %}</button>
<input type="hidden" name="change_status" value=""/> <input type="hidden" name="change_status" value=""/>
<button class="btn btn-warning">{% blocktrans with status=status %}Yes, {{status}}{% endblocktrans %}</button> <button class="btn btn-warning">{% blocktrans with status=status %}Yes, {{status}}{% endblocktrans %}</button>
</form> </form>
</div> </div>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</div><!-- /.modal-content --> </div><!-- /.modal-content -->
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
{{ text }} {{ text }}
{% else %} {% else %}
{%blocktrans with object=object%} {%blocktrans with object=object%}
Are you sure you want to remove <strong>{{ member }}</strong> from <strong>{{ object }}</strong>? Are you sure you want to remove <strong>{{ member }}</strong> from <strong>{{ object }}</strong>?
{%endblocktrans%} {%endblocktrans%}
{% endif %} {% endif %}
<br /> <br />
......
...@@ -23,9 +23,9 @@ ...@@ -23,9 +23,9 @@
<div class="pull-right"> <div class="pull-right">
<form action="" method="POST"> <form action="" method="POST">
{% csrf_token %} {% csrf_token %}
<a class="btn btn-default">{% trans "Back" %}</a> <a class="btn btn-default">{% trans "Back" %}</a>
<input type="hidden" name="flush" value=""/> <input type="hidden" name="flush" value=""/>
<button class="btn btn-warning">{% trans "Yes" %}</button> <button class="btn btn-warning">{% trans "Yes" %}</button>
</form> </form>
</div> </div>
</div> </div>
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
{% csrf_token %} {% csrf_token %}
<a class="btn btn-default">{% trans "Cancel" %}</a> <a class="btn btn-default">{% trans "Cancel" %}</a>
<button type="button" class="btn btn-default" data-dismiss="modal"></button> <button type="button" class="btn btn-default" data-dismiss="modal"></button>
<input type="hidden" name="change_status" value=""/> <input type="hidden" name="change_status" value=""/>
<button class="btn btn-warning">{% blocktrans with status=status %}Yes, {{status}}{% endblocktrans %}</button> <button class="btn btn-warning">{% blocktrans with status=status %}Yes, {{status}}{% endblocktrans %}</button>
</form> </form>
</div> </div>
......
...@@ -6,15 +6,15 @@ ...@@ -6,15 +6,15 @@
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="no-margin"> <h3 class="no-margin">
{% trans "Ownership transfer" %} {% trans "Ownership transfer" %}
</h3> </h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">
{% blocktrans with owner=instance.owner name=instance.name id=instance.id%} {% blocktrans with owner=instance.owner name=instance.name id=instance.id%}
<strong>{{ owner }}</strong> offered to take the ownership of <strong>{{ owner }}</strong> offered to take the ownership of
virtual machine <strong>{{name}} ({{id}})</strong>. virtual machine <strong>{{name}} ({{id}})</strong>.
Do you accept the responsility of being the host's owner? Do you accept the responsility of being the host's owner?
{% endblocktrans %} {% endblocktrans %}
<div class="pull-right"> <div class="pull-right">
<form action="" method="POST"> <form action="" method="POST">
{% csrf_token %} {% csrf_token %}
......
{% extends "dashboard/base.html" %}
{% load i18n %}
{% block content %}
<div class="body-content">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="no-margin">
{% trans "Ownership transfer" %}
</h3>
</div>
<div class="panel-body">
{% blocktrans with owner=instance.owner name=instance.name id=instance.id%}
<strong>{{ owner }}</strong> offered to take the ownership of
template <strong>{{name}} ({{id}})</strong>.
Do you accept the responsility of being the template's owner?
{% endblocktrans %}
<div class="pull-right">
<form action="" method="POST">
{% csrf_token %}
<a class="btn btn-default" href="{% url "dashboard.index" %}">{% trans "No" %}</a>
<input type="hidden" name="key" value="{{ key }}"/>
<button class="btn btn-danger" type="submit">{% trans "Yes" %}</button>
</form>
</div>
</div>
</div>
{% endblock %}
{% extends "dashboard/base.html" %} {% extends "dashboard/base.html" %}
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% load i18n %} {% load i18n %}
{% load static %}
{% block title-page %}{{ group.name }} | {% trans "group" %}{% endblock %} {% block title-page %}{{ group.name }} | {% trans "group" %}{% endblock %}
...@@ -8,9 +9,15 @@ ...@@ -8,9 +9,15 @@
<div class="body-content"> <div class="body-content">
<div class="page-header"> <div class="page-header">
<div class="pull-right" style="padding-top: 15px;"> <div class="pull-right" style="padding-top: 15px;">
<a title="{% trans "Rename" %}" href="#" class="btn btn-default btn-xs group-details-rename-button"><i class="fa fa-pencil"></i></a> <a title="{% trans "Rename" %}" href="#" class="btn btn-default btn-xs group-details-rename-button">
<a title="{% trans "Delete" %}" data-group-pk="{{ group.pk }}" class="btn btn-default btn-xs real-link group-delete" href="{% url "dashboard.views.delete-group" pk=group.pk %}"><i class="fa fa-trash-o"></i></a> <i class="fa fa-pencil"></i>
<a title="{% trans "Help" %}" href="#" class="btn btn-default btn-xs group-details-help-button"><i class="fa fa-question"></i></a> </a>
<a title="{% trans "Delete" %}" data-group-pk="{{ group.pk }}" class="btn btn-default btn-xs real-link group-delete" href="{% url "dashboard.views.delete-group" pk=group.pk %}">
<i class="fa fa-trash-o"></i>
</a>
<a title="{% trans "Help" %}" href="#" class="btn btn-default btn-xs group-details-help-button">
<i class="fa fa-question"></i>
</a>
</div> </div>
<h1> <h1>
<div id="group-details-rename"> <div id="group-details-rename">
...@@ -39,122 +46,125 @@ ...@@ -39,122 +46,125 @@
</li> </li>
</ul> </ul>
</div> </div>
</div> </div><!-- .page-header -->
<div class="row"> <div class="row">
<div class="col-md-12" id="group-detail-pane"> <div class="col-md-12" id="group-detail-pane">
<div class="panel panel-default" id="group-detail-panel"> <div class="panel panel-default panel-body" id="group-detail-panel">
<div class="tab-content panel-body" id="group-form-body"> <form method="POST" action="{% url "dashboard.views.group-update" pk=group.pk %}">
{% csrf_token %}
<form method="POST" action="{% url "dashboard.views.group-update" pk=group.pk %}"> {% crispy group_profile_form %}
{% csrf_token %} </form>
{% crispy group_profile_form %} <hr />
</form>
<hr />
<h3>{% trans "Available objects for this group" %}</h3>
<ul class="dashboard-profile-vm-list fa-ul">
{% for i in vm_objects %}
<li>
<a href="{{ i.get_absolute_url }}">
<i class="fa fa-li {{ i.get_status_icon }}"></i>
{{ i }}
</a>
</li>
{% endfor %}
{% for t in template_objects %}
<li>
<a href="{{ t.get_absolute_url }}">
<i class="fa fa-li fa-puzzle-piece"></i>
{{ t }}
</a>
</li>
{% endfor %}
{% for g in group_objects %}
<li>
<a href="{{ g.get_absolute_url }}">
<i class="fa fa-li fa-users"></i>
{{ g }}
</a>
</li>
{% endfor %}
</ul>
<hr />
<h3>{% trans "User list"|capfirst %} <h3>{% trans "Available objects for this group" %}</h3>
{% if perms.auth.add_user %} <ul class="dashboard-profile-vm-list fa-ul">
<a href="{% url "dashboard.views.create-user" group.pk %}" class="btn btn-success pull-right">{% trans "Create user" %}</a> {% for i in vm_objects %}
{% endif %} <li>
</h3> <a href="{{ i.get_absolute_url }}">
<form action="" method="post">{% csrf_token %} <i class="fa fa-li {{ i.get_status_icon }}"></i>
<table class="table table-striped table-with-form-fields table-bordered" id="group-detail-user-table"> {{ i }}
<tbody> </a>
<thead><tr><th></th><th>{% trans "Who" %}</th><th>{% trans "Remove" %}</th></tr></thead> </li>
{% for i in users %} {% endfor %}
<tr> {% for t in template_objects %}
<td> <li>
<i class="fa fa-user"></i> <a href="{{ t.get_absolute_url }}">
</td> <i class="fa fa-li fa-puzzle-piece"></i>
<td> {{ t }}
<a href="{% url "dashboard.views.profile" username=i.username %}" title="{{ i.username }}" </a>
>{% include "dashboard/_display-name.html" with user=i show_org=True %}</a> </li>
</td> {% endfor %}
<td> {% for g in group_objects %}
<a data-group_pk="{{ group.pk }}" data-member_pk="{{i.pk}}" href="{% url "dashboard.views.remove-user" member_pk=i.pk group_pk=group.pk %}" class="real-link delete-from-group btn btn-link btn-xs"><i class="fa fa-times"><span class="sr-only">{% trans "remove" %}</span></i></a> <li>
</td> <a href="{{ g.get_absolute_url }}">
</tr> <i class="fa fa-li fa-users"></i>
{% endfor %} {{ g }}
{% for i in future_users %} </a>
<tr> </li>
<td> {% endfor %}
<i class="fa fa-user text-muted"></i> </ul>
</td> <hr />
<td> {{ i.org_id }} </td>
<td>
<a href="{% url "dashboard.views.remove-future-user" member_org_id=i.org_id group_pk=group.pk %}"
class="real-link btn-link btn-xs">
<i class="fa fa-times"><span class="sr-only">{% trans "remove" %}</span></i></a>
</td>
</tr>
{% endfor %}
<tr>
<td><i class="fa fa-plus"></i></td>
<td colspan="2">
{{addmemberform.new_member}}
</td>
</tr>
</tbody>
</table>
<textarea name="new_members" class="form-control"
placeholder="{% trans "Add multiple users at once (one identifier per line)." %}"></textarea>
<div class="form-actions">
<button type="submit" class="btn btn-success">{% trans "Save" %}</button>
</div>
</form>
<hr /> <h3>
<h3 id="group-detail-perm-header">{% trans "Access permissions"|capfirst %}</h3> {% trans "User list" %}
{% include "dashboard/_manage_access.html" with table_id="group-detail-perm-table" %} {% if perms.auth.add_user %}
{% if user.is_superuser %} <a href="{% url "dashboard.views.create-user" group.pk %}" class="btn btn-success pull-right">
<hr /> {% trans "Create user" %}
</a>
{% endif %}
</h3>
<form action="" method="post">{% csrf_token %}
<table class="table table-striped table-with-form-fields table-bordered" id="group-detail-user-table">
<tbody>
<thead><tr><th></th><th>{% trans "Who" %}</th><th>{% trans "Remove" %}</th></tr></thead>
{% for i in users %}
<tr>
<td>
<i class="fa fa-user"></i>
</td>
<td>
<a href="{% url "dashboard.views.profile" username=i.username %}" title="{{ i.username }}"
>{% include "dashboard/_display-name.html" with user=i show_org=True %}</a>
</td>
<td>
<a data-group_pk="{{ group.pk }}" data-member_pk="{{i.pk}}" href="{% url "dashboard.views.remove-user" member_pk=i.pk group_pk=group.pk %}" class="real-link delete-from-group btn btn-link btn-xs"><i class="fa fa-times">
<span class="sr-only">{% trans "remove" %}</span></i>
</a>
</td>
</tr>
{% endfor %}
{% for i in future_users %}
<tr>
<td>
<i class="fa fa-user text-muted"></i>
</td>
<td> {{ i.org_id }} </td>
<td>
<a href="{% url "dashboard.views.remove-future-user" member_org_id=i.org_id group_pk=group.pk %}"
class="real-link btn-link btn-xs">
<i class="fa fa-times"><span class="sr-only">{% trans "remove" %}</span></i></a>
</td>
</tr>
{% endfor %}
<tr>
<td><i class="fa fa-plus"></i></td>
<td colspan="2">
{{addmemberform.new_member}}
</td>
</tr>
</tbody>
</table>
<textarea name="new_members" class="form-control"
placeholder="{% trans "Add multiple users at once (one identifier per line)." %}"></textarea>
<div class="form-actions">
<button type="submit" class="btn btn-success">{% trans "Save" %}</button>
</div>
</form>
<hr />
<h3 id="group-detail-perm-header">{% trans "Access permissions" %}</h3>
{% include "dashboard/_manage_access.html" with table_id="group-detail-perm-table" %}
<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script> {% if user.is_superuser %}
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script> <hr />
{{ group_perm_form.media }}
<h3>{% trans "Group permissions" %}</h3> <script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
{{ group_perm_form.media }}
<div id="group-detail-permissions"> <h3>{% trans "Group permissions" %}</h3>
{% crispy group_perm_form %}
</div>
<link rel="stylesheet" type="text/css" href="/static/admin/css/widgets.css" /> <div id="group-detail-permissions">
{% crispy group_perm_form %}
</div>
{% endif %} <link rel="stylesheet" type="text/css" href="/static/admin/css/widgets.css" />
</div> {% endif %}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% block extra_js %}
<script type="text/javascript" src="{% static "dashboard/group-details.js" %}"></script>
{% endblock %}
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="no-margin"><i class="fa fa-group"></i> Your groups</h3> <h3 class="no-margin"><i class="fa fa-group"></i> {% trans "Groups" %}</h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">
<div id="table_container"> <div id="table_container">
<div id="rendered_table" class="panel-body"> <div id="rendered_table" class="panel-body">
{% render_table table %} {% render_table table %}
</div> </div>
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<div class="col-sm-6 text-right"> <div class="col-sm-6 text-right">
<a class="btn btn-primary btn-xs" href="{% url "dashboard.views.group-list" %}"> <a class="btn btn-primary btn-xs" href="{% url "dashboard.views.group-list" %}">
<i class="fa fa-chevron-circle-right"></i> <i class="fa fa-chevron-circle-right"></i>
{% if more_groups > 0 %} {% if more_groups > 0 %}
{% blocktrans count more=more_groups %} {% blocktrans count more=more_groups %}
<strong>{{ more }}</strong> more <strong>{{ more }}</strong> more
{% plural %} {% plural %}
......
...@@ -74,9 +74,11 @@ ...@@ -74,9 +74,11 @@
{% trans "list" %} {% trans "list" %}
{% endif %} {% endif %}
</a> </a>
{% if request.user.is_superuser %}
<a class="btn btn-success btn-xs node-create" href="{% url "dashboard.views.node-create" %}"> <a class="btn btn-success btn-xs node-create" href="{% url "dashboard.views.node-create" %}">
<i class="fa fa-plus-circle"></i> {% trans "new" %} <i class="fa fa-plus-circle"></i> {% trans "new" %}
</a> </a>
{% endif %}
</div> </div>
</div> </div>
</div> </div>
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
</div> </div>
{% endif %} {% endif %}
{% if user.is_superuser %} {% if perms.vm.view_statistics %}
<div class="col-lg-4 col-sm-6"> <div class="col-lg-4 col-sm-6">
{% include "dashboard/index-nodes.html" %} {% include "dashboard/index-nodes.html" %}
</div> </div>
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="no-margin"><i class="fa fa-plus"></i> {% trans "Add Trait" %}</h3> <h3 class="no-margin"><i class="fa fa-plus"></i> {% trans "Add Trait" %}</h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">
{% with form=form %} {% with form=form %}
......
...@@ -6,14 +6,16 @@ ...@@ -6,14 +6,16 @@
{% block content %} {% block content %}
<div class="body-content"> <div class="body-content">
<div class="page-header"> <div class="page-header">
{% if request.user.is_superuser %}
<div class="pull-right" id="ops"> <div class="pull-right" id="ops">
{% include "dashboard/vm-detail/_operations.html" %} {% include "dashboard/vm-detail/_operations.html" %}
</div> </div>
<div class="pull-right" style="padding-top: 15px;"> <div class="pull-right" style="padding-top: 15px;">
<a title="{% trans "Rename" %}" href="#" class="btn btn-default btn-xs node-details-rename-button"><i class="fa fa-pencil"></i></a> <a title="{% trans "Rename" %}" href="#" class="btn btn-default btn-xs node-details-rename-button"><i class="fa fa-pencil"></i></a>
<a title="{% trans "Delete" %}" data-node-pk="{{ node.pk }}" class="btn btn-default btn-xs real-link node-delete" href="{% url "dashboard.views.delete-node" pk=node.pk %}"><i class="fa fa-trash-o"></i></a> <a title="{% trans "Delete" %}" data-node-pk="{{ node.pk }}" class="btn btn-default btn-xs real-link node-delete" href="{% url "dashboard.views.delete-node" pk=node.pk %}"><i class="fa fa-trash-o"></i></a>
</div> </div>
<h1> {% endif %}
<h1>
<div id="node-details-rename"> <div id="node-details-rename">
<form action="" method="POST" id="node-details-rename-form"> <form action="" method="POST" id="node-details-rename-form">
{% csrf_token %} {% csrf_token %}
...@@ -69,26 +71,26 @@ ...@@ -69,26 +71,26 @@
{% trans "Resources" %} {% trans "Resources" %}
</a> </a>
</li> </li>
<li> <li>
<a href="{% url "dashboard.views.vm-list" %}?s=node:{{ node.name }}" <a href="{% url "dashboard.views.vm-list" %}?s=node:{{ node.name }}"
target="blank" class="text-center"> target="blank" class="text-center">
<i class="fa fa-desktop fa-2x"></i><br> <i class="fa fa-desktop fa-2x"></i><br>
{% trans "Virtual Machines" %} {% trans "Virtual Machines" %}
</a> </a>
</li> </li>
<li> <li>
<a href="#activity" data-toggle="pill" class="text-center"> <a href="#activity" data-toggle="pill" class="text-center">
<i class="fa fa-clock-o fa-2x"></i><br> <i class="fa fa-clock-o fa-2x"></i><br>
{% trans "Activity" %} {% trans "Activity" %}
</a> </a>
</li> </li>
</ul> </ul>
<div id="panel-body" class="tab-content panel-body"> <div id="panel-body" class="tab-content panel-body">
<div class="tab-pane active" id="home">{% include "dashboard/node-detail/home.html" %}</div> <div class="tab-pane active" id="home">{% include "dashboard/node-detail/home.html" %}</div>
<div class="tab-pane" id="resources">{% include "dashboard/node-detail/resources.html" %}</div> <div class="tab-pane" id="resources">{% include "dashboard/node-detail/resources.html" %}</div>
<div class="tab-pane" id="activity">{% include "dashboard/node-detail/activity.html" %}</div> <div class="tab-pane" id="activity">{% include "dashboard/node-detail/activity.html" %}</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -8,24 +8,27 @@ ...@@ -8,24 +8,27 @@
{% for t in node.traits.all %} {% for t in node.traits.all %}
<div class="label label-success label-tag" style="display: inline-block"> <div class="label label-success label-tag" style="display: inline-block">
{{ t }} {{ t }}
<a data-trait-pk="{{ t.pk }}" href="#" class="node-details-remove-trait"><i class="fa fa-times"></i></a> <a data-trait-pk="{{ t.pk }}" href="#" class="node-details-remove-trait"><i class="fa fa-times"></i></a>
</div> </div>
{% endfor %} {% endfor %}
{% else %} {% else %}
<small>{% trans "No trait added!" %}</small> <small>{% trans "No trait added!" %}</small>
{% endif %} {% endif %}
</div> </div>
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
<style> <style>
.row { .row {
margin-bottom: 15px; margin-bottom: 15px;
} }
</style> </style>
<form action="{% url "dashboard.views.node-addtrait" node.pk %}" method="POST"> {% if request.user.is_superuser %}
{% csrf_token %} <form action="{% url "dashboard.views.node-addtrait" node.pk %}" method="POST">
{% crispy trait_form %} {% csrf_token %}
</form> {% crispy trait_form %}
</form>
{% endif %}
</div><!-- id:node-details-traits --> </div><!-- id:node-details-traits -->
</div> </div>
<div class="col-md-8"> <div class="col-md-8">
......
...@@ -10,6 +10,16 @@ ...@@ -10,6 +10,16 @@
<dt>{% trans "Enabled" %}:</dt><dd>{{ node.enabled }}</dd> <dt>{% trans "Enabled" %}:</dt><dd>{{ node.enabled }}</dd>
<dt>{% trans "Host online" %}:</dt><dd> {{ node.online }}</dd> <dt>{% trans "Host online" %}:</dt><dd> {{ node.online }}</dd>
<dt>{% trans "Priority" %}:</dt><dd>{{ node.priority }}</dd> <dt>{% trans "Priority" %}:</dt><dd>{{ node.priority }}</dd>
<dt>{% trans "Driver Version:" %}</dt>
<dd>
{% if node.driver_version %}
{{ node.driver_version.branch }} at
{{ node.driver_version.commit }} ({{ node.driver_version.commit_text }})
{% if node.driver_version.is_dirty %}
<span class="label label-danger">{% trans "with uncommitted changes!" %}</span>
{% endif %}
{% endif %}
</dd>
<dt>{% trans "Host owner" %}:</dt> <dt>{% trans "Host owner" %}:</dt>
<dd> <dd>
{% include "dashboard/_display-name.html" with user=node.host.owner show_org=True %} {% include "dashboard/_display-name.html" with user=node.host.owner show_org=True %}
...@@ -18,10 +28,12 @@ ...@@ -18,10 +28,12 @@
<dt>{% trans "Host name" %}:</dt> <dt>{% trans "Host name" %}:</dt>
<dd> <dd>
{{ node.host.hostname }} {{ node.host.hostname }}
{% if request.user.is_superuser %}
<a href="{{ node.host.get_absolute_url }}" class="btn btn-default btn-xs"> <a href="{{ node.host.get_absolute_url }}" class="btn btn-default btn-xs">
<i class="fa fa-pencil"></i> <i class="fa fa-pencil"></i>
{% trans "Edit host" %} {% trans "Edit host" %}
</a> </a>
{% endif %}
</dd> </dd>
</dl> </dl>
......
...@@ -81,6 +81,26 @@ ...@@ -81,6 +81,26 @@
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h4 class="no-margin"><i class="fa fa-user"></i> {% trans "Owner" %}</h4>
</div>
<div class="panel-body">
{% if user == object.owner %}
{% blocktrans %}You are the current owner of this template.{% endblocktrans %}
{% else %}
{% url "dashboard.views.profile" username=object.owner.username as url %}
{% blocktrans with owner=object.owner name=object.owner.get_full_name%}
The current owner of this template is <a href="{{url}}">{{name}} ({{owner}})</a>.
{% endblocktrans %}
{% endif %}
{% if user == object.owner or user.is_superuser %}
<a href="{% url "dashboard.views.template-transfer-ownership" object.pk %}"
class="btn btn-link tx-tpl-ownership">{% trans "Transfer ownership..." %}</a>
{% endif %}
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="no-margin"><i class="fa fa-group"></i> {% trans "Manage access" %}</h4> <h4 class="no-margin"><i class="fa fa-group"></i> {% trans "Manage access" %}</h4>
</div> </div>
<div class="panel-body"> <div class="panel-body">
......
{% load i18n %}
<div class="pull-right">
<form action="{% url "dashboard.views.template-transfer-ownership" pk=object.pk %}" method="POST" style="max-width: 400px;">
{% csrf_token %}
<label>
{{ form.name.label }}
</label>
<div class="input-group">
{{form.name}}
<div class="input-group-btn">
<input type="submit" value="{% trans "Save" %}" class="btn btn-primary">
</div>
</div>
</form>
</div>
...@@ -6,19 +6,19 @@ ...@@ -6,19 +6,19 @@
{% block content %} {% block content %}
{% if instance.is_base %} {% if instance.is_base %}
<div class="alert alert-info alert-new-template" id="alert-new-template" style="position: relative;"> <div class="alert alert-info alert-new-template" id="alert-new-template" style="position: relative;">
<form action="{% url "dashboard.views.vm-toggle-tutorial" pk=instance.pk %}" <form action="{% url "dashboard.views.vm-toggle-tutorial" pk=instance.pk %}"
method="POST"> method="POST">
{% csrf_token %} {% csrf_token %}
<input name="hidden" type="hidden" <input name="hidden" type="hidden"
value="{{ hide_tutorial|yesno:"false,true" }}"/> value="{{ hide_tutorial|yesno:"false,true" }}"/>
<button type="submit" <button type="submit"
id="dashboard-tutorial-toggle" class="btn btn-sm pull-right btn-success"> id="dashboard-tutorial-toggle" class="btn btn-sm pull-right btn-success">
<i class="fa fa-caret-{% if hide_tutorial %}down{% else %}up{% endif %}"></i> <i class="fa fa-caret-{% if hide_tutorial %}down{% else %}up{% endif %}"></i>
{% trans "Toggle tutorial panel" %} {% trans "Toggle tutorial panel" %}
</button> </button>
<a href="#" class="btn btn-default btn-sm pull-right" <a href="#" class="btn btn-default btn-sm pull-right"
id="vm-details-start-template-tour"> id="vm-details-start-template-tour">
<i class="fa fa-play"></i> {% trans "Start template tutorial" %} <i class="fa fa-play"></i> {% trans "Start template tutorial" %}
</a> </a>
...@@ -121,7 +121,14 @@ ...@@ -121,7 +121,14 @@
<dd style="font-size: 10px; text-align: right; padding-top: 8px;"> <dd style="font-size: 10px; text-align: right; padding-top: 8px;">
<div id="vm-details-pw-reset"> <div id="vm-details-pw-reset">
{% with op=op.password_reset %}{% if op %} {% with op=op.password_reset %}{% if op %}
<a href="{% if op.disabled %}#{% else %}{{op.get_url}}{% endif %}" class="operation operation-{{op.op}}" data-disabled="{% if op.disabled %}true" title="{% trans "Start the VM to change the password." %}"{% else %}false" {% endif %}>{% trans "Generate new password!" %}</a> <a href="{% if op.disabled %}#{% else %}{{op.get_url}}{% endif %}"
class="operation operation-{{op.op}}"
{% if op.disabled %}
data-disabled="true"
title="{% if instance.has_agent %}{% trans "Start the VM to change the password." %}{% else %}{% trans "This machine has no agent installed." %}{% endif %}"
{% endif %}>
{% trans "Generate new password!" %}
</a>
{% endif %}{% endwith %} {% endif %}{% endwith %}
</div> </div>
</dd> </dd>
...@@ -149,7 +156,7 @@ ...@@ -149,7 +156,7 @@
</div> </div>
{% endfor %} {% endfor %}
{% if instance.get_connect_uri %} {% if instance.get_connect_uri %}
<div id="dashboard-vm-details-connect" class="operation-wrapper"> <div id="dashboard-vm-details-connect" class="operation-wrapper">
{% if client_download %} {% if client_download %}
<a id="dashboard-vm-details-connect-button" class="btn btn-xs btn-default operation " href="{{ instance.get_connect_uri}}" title="{% trans "Connect via the CIRCLE Client" %}"> <a id="dashboard-vm-details-connect-button" class="btn btn-xs btn-default operation " href="{{ instance.get_connect_uri}}" title="{% trans "Connect via the CIRCLE Client" %}">
<i class="fa fa-external-link"></i> {% trans "Connect" %} <i class="fa fa-external-link"></i> {% trans "Connect" %}
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
{% if user == instance.owner %} {% if user == instance.owner %}
{% blocktrans %}You are the current owner of this instance.{% endblocktrans %} {% blocktrans %}You are the current owner of this instance.{% endblocktrans %}
{% else %} {% else %}
{% blocktrans with owner=instance.owner %} {% url "dashboard.views.profile" username=instance.owner.username as url %}
The current owner of this instance is {{owner}}. {% blocktrans with owner=instance.owner name=instance.owner.get_full_name%}
The current owner of this instance is <a href="{{url}}">{{name}} ({{owner}})</a>.
{% endblocktrans %} {% endblocktrans %}
{% endif %} {% endif %}
{% if user == instance.owner or user.is_superuser %} {% if user == instance.owner or user.is_superuser %}
......
...@@ -637,7 +637,7 @@ class NodeDetailTest(LoginMixin, TestCase): ...@@ -637,7 +637,7 @@ class NodeDetailTest(LoginMixin, TestCase):
c = Client() c = Client()
self.login(c, 'user1') self.login(c, 'user1')
response = c.get('/dashboard/node/25555/') response = c.get('/dashboard/node/25555/')
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 403)
def test_anon_node_page(self): def test_anon_node_page(self):
c = Client() c = Client()
...@@ -667,7 +667,7 @@ class NodeDetailTest(LoginMixin, TestCase): ...@@ -667,7 +667,7 @@ class NodeDetailTest(LoginMixin, TestCase):
node = Node.objects.get(pk=1) node = Node.objects.get(pk=1)
old_name = node.name old_name = node.name
response = c.post("/dashboard/node/1/", {'new_name': 'test1235'}) response = c.post("/dashboard/node/1/", {'new_name': 'test1235'})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 403)
self.assertEqual(Node.objects.get(pk=1).name, old_name) self.assertEqual(Node.objects.get(pk=1).name, old_name)
def test_permitted_set_name(self): def test_permitted_set_name(self):
...@@ -721,7 +721,7 @@ class NodeDetailTest(LoginMixin, TestCase): ...@@ -721,7 +721,7 @@ class NodeDetailTest(LoginMixin, TestCase):
c = Client() c = Client()
self.login(c, "user2") self.login(c, "user2")
response = c.post("/dashboard/node/1/", {'to_remove': traitid}) response = c.post("/dashboard/node/1/", {'to_remove': traitid})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 403)
self.assertEqual(Node.objects.get(pk=1).traits.count(), trait_count) self.assertEqual(Node.objects.get(pk=1).traits.count(), trait_count)
def test_permitted_remove_trait(self): def test_permitted_remove_trait(self):
......
...@@ -27,8 +27,8 @@ from .views import ( ...@@ -27,8 +27,8 @@ from .views import (
MyPreferencesView, NodeAddTraitView, NodeCreate, NodeDelete, MyPreferencesView, NodeAddTraitView, NodeCreate, NodeDelete,
NodeDetailView, NodeList, NodeStatus, NodeDetailView, NodeList, NodeStatus,
NotificationView, TemplateAclUpdateView, TemplateCreate, NotificationView, TemplateAclUpdateView, TemplateCreate,
TemplateDelete, TemplateDetail, TemplateList, TransferOwnershipConfirmView, TemplateDelete, TemplateDetail, TemplateList,
TransferOwnershipView, vm_activity, VmCreate, VmDetailView, vm_activity, VmCreate, VmDetailView,
VmDetailVncTokenView, VmList, VmDetailVncTokenView, VmList,
DiskRemoveView, get_disk_download_status, InterfaceDeleteView, DiskRemoveView, get_disk_download_status, InterfaceDeleteView,
GroupRemoveUserView, GroupRemoveUserView,
...@@ -48,6 +48,8 @@ from .views import ( ...@@ -48,6 +48,8 @@ from .views import (
toggle_template_tutorial, toggle_template_tutorial,
ClientCheck, TokenLogin, ClientCheck, TokenLogin,
VmGraphView, NodeGraphView, NodeListGraphView, VmGraphView, NodeGraphView, NodeListGraphView,
TransferInstanceOwnershipView, TransferInstanceOwnershipConfirmView,
TransferTemplateOwnershipView, TransferTemplateOwnershipConfirmView,
) )
from .views.vm import vm_ops, vm_mass_ops from .views.vm import vm_ops, vm_mass_ops
from .views.node import node_ops from .views.node import node_ops
...@@ -78,13 +80,15 @@ urlpatterns = patterns( ...@@ -78,13 +80,15 @@ urlpatterns = patterns(
name="dashboard.views.template-list"), name="dashboard.views.template-list"),
url(r"^template/delete/(?P<pk>\d+)/$", TemplateDelete.as_view(), url(r"^template/delete/(?P<pk>\d+)/$", TemplateDelete.as_view(),
name="dashboard.views.template-delete"), name="dashboard.views.template-delete"),
url(r'^template/(?P<pk>\d+)/tx/$', TransferTemplateOwnershipView.as_view(),
name='dashboard.views.template-transfer-ownership'),
url(r'^vm/(?P<pk>\d+)/$', VmDetailView.as_view(), url(r'^vm/(?P<pk>\d+)/$', VmDetailView.as_view(),
name='dashboard.views.detail'), name='dashboard.views.detail'),
url(r'^vm/(?P<pk>\d+)/vnctoken/$', VmDetailVncTokenView.as_view(), url(r'^vm/(?P<pk>\d+)/vnctoken/$', VmDetailVncTokenView.as_view(),
name='dashboard.views.detail-vnc'), name='dashboard.views.detail-vnc'),
url(r'^vm/(?P<pk>\d+)/acl/$', AclUpdateView.as_view(model=Instance), url(r'^vm/(?P<pk>\d+)/acl/$', AclUpdateView.as_view(model=Instance),
name='dashboard.views.vm-acl'), name='dashboard.views.vm-acl'),
url(r'^vm/(?P<pk>\d+)/tx/$', TransferOwnershipView.as_view(), url(r'^vm/(?P<pk>\d+)/tx/$', TransferInstanceOwnershipView.as_view(),
name='dashboard.views.vm-transfer-ownership'), name='dashboard.views.vm-transfer-ownership'),
url(r'^vm/list/$', VmList.as_view(), name='dashboard.views.vm-list'), url(r'^vm/list/$', VmList.as_view(), name='dashboard.views.vm-list'),
url(r'^vm/create/$', VmCreate.as_view(), url(r'^vm/create/$', VmCreate.as_view(),
...@@ -106,8 +110,12 @@ urlpatterns = patterns( ...@@ -106,8 +110,12 @@ urlpatterns = patterns(
name='dashboard.views.node-detail'), name='dashboard.views.node-detail'),
url(r'^node/(?P<pk>\d+)/add-trait/$', NodeAddTraitView.as_view(), url(r'^node/(?P<pk>\d+)/add-trait/$', NodeAddTraitView.as_view(),
name='dashboard.views.node-addtrait'), name='dashboard.views.node-addtrait'),
url(r'^tx/(?P<key>.*)/?$', TransferOwnershipConfirmView.as_view(), url(r'^vm/tx/(?P<key>.*)/?$',
TransferInstanceOwnershipConfirmView.as_view(),
name='dashboard.views.vm-transfer-ownership-confirm'), name='dashboard.views.vm-transfer-ownership-confirm'),
url(r'^template/tx/(?P<key>.*)/?$',
TransferTemplateOwnershipConfirmView.as_view(),
name='dashboard.views.template-transfer-ownership-confirm'),
url(r'^node/delete/(?P<pk>\d+)/$', NodeDelete.as_view(), url(r'^node/delete/(?P<pk>\d+)/$', NodeDelete.as_view(),
name="dashboard.views.delete-node"), name="dashboard.views.delete-node"),
url(r'^node/status/(?P<pk>\d+)/$', NodeStatus.as_view(), url(r'^node/status/(?P<pk>\d+)/$', NodeStatus.as_view(),
......
...@@ -26,7 +26,7 @@ from django.http import HttpResponse, Http404 ...@@ -26,7 +26,7 @@ from django.http import HttpResponse, Http404
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import View from django.views.generic import View
from braces.views import LoginRequiredMixin, SuperuserRequiredMixin from braces.views import LoginRequiredMixin
from vm.models import Instance, Node from vm.models import Instance, Node
...@@ -142,22 +142,28 @@ class VmGraphView(GraphViewBase): ...@@ -142,22 +142,28 @@ class VmGraphView(GraphViewBase):
base = VmMetric base = VmMetric
class NodeGraphView(SuperuserRequiredMixin, GraphViewBase): class NodeGraphView(GraphViewBase):
model = Node model = Node
base = NodeMetric base = NodeMetric
def get_object(self, request, pk): def get_object(self, request, pk):
if not self.request.user.has_perm('vm.view_statistics'):
raise PermissionDenied()
return self.model.objects.get(id=pk) return self.model.objects.get(id=pk)
class NodeListGraphView(SuperuserRequiredMixin, GraphViewBase): class NodeListGraphView(GraphViewBase):
model = Node model = Node
base = Metric base = Metric
def get_object(self, request, pk): def get_object(self, request, pk):
if not self.request.user.has_perm('vm.view_statistics'):
raise PermissionDenied()
return Node.objects.filter(enabled=True) return Node.objects.filter(enabled=True)
def get(self, request, metric, time, *args, **kwargs): def get(self, request, metric, time, *args, **kwargs):
if not self.request.user.has_perm('vm.view_statistics'):
raise PermissionDenied()
return super(NodeListGraphView, self).get(request, None, metric, time) return super(NodeListGraphView, self).get(request, None, metric, time)
......
...@@ -62,7 +62,7 @@ class IndexView(LoginRequiredMixin, TemplateView): ...@@ -62,7 +62,7 @@ class IndexView(LoginRequiredMixin, TemplateView):
}) })
# nodes # nodes
if user.is_superuser: if user.has_perm('vm.view_statistics'):
nodes = Node.objects.all() nodes = Node.objects.all()
context.update({ context.update({
'nodes': nodes[:5], 'nodes': nodes[:5],
......
...@@ -75,13 +75,18 @@ node_ops = OrderedDict([ ...@@ -75,13 +75,18 @@ node_ops = OrderedDict([
]) ])
class NodeDetailView(LoginRequiredMixin, SuperuserRequiredMixin, class NodeDetailView(LoginRequiredMixin,
GraphMixin, DetailView): GraphMixin, DetailView):
template_name = "dashboard/node-detail.html" template_name = "dashboard/node-detail.html"
model = Node model = Node
form = None form = None
form_class = TraitForm form_class = TraitForm
def get(self, *args, **kwargs):
if not self.request.user.has_perm('vm.view_statistics'):
raise PermissionDenied()
return super(NodeDetailView, self).get(*args, **kwargs)
def get_context_data(self, form=None, **kwargs): def get_context_data(self, form=None, **kwargs):
if form is None: if form is None:
form = self.form_class() form = self.form_class()
...@@ -98,6 +103,8 @@ class NodeDetailView(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -98,6 +103,8 @@ class NodeDetailView(LoginRequiredMixin, SuperuserRequiredMixin,
return context return context
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
if not request.user.is_superuser:
raise PermissionDenied()
if request.POST.get('new_name'): if request.POST.get('new_name'):
return self.__set_name(request) return self.__set_name(request)
if request.POST.get('to_remove'): if request.POST.get('to_remove'):
...@@ -145,13 +152,14 @@ class NodeDetailView(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -145,13 +152,14 @@ class NodeDetailView(LoginRequiredMixin, SuperuserRequiredMixin,
return redirect(self.object.get_absolute_url()) return redirect(self.object.get_absolute_url())
class NodeList(LoginRequiredMixin, SuperuserRequiredMixin, class NodeList(LoginRequiredMixin, GraphMixin, SingleTableView):
GraphMixin, SingleTableView):
template_name = "dashboard/node-list.html" template_name = "dashboard/node-list.html"
table_class = NodeListTable table_class = NodeListTable
table_pagination = False table_pagination = False
def get(self, *args, **kwargs): def get(self, *args, **kwargs):
if not self.request.user.has_perm('vm.view_statistics'):
raise PermissionDenied()
if self.request.is_ajax(): if self.request.is_ajax():
nodes = Node.objects.all() nodes = Node.objects.all()
nodes = [{ nodes = [{
......
...@@ -26,7 +26,7 @@ from django.core.urlresolvers import reverse, reverse_lazy ...@@ -26,7 +26,7 @@ from django.core.urlresolvers import reverse, reverse_lazy
from django.core.exceptions import PermissionDenied, SuspiciousOperation from django.core.exceptions import PermissionDenied, SuspiciousOperation
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import redirect, get_object_or_404 from django.shortcuts import redirect, get_object_or_404
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _, ugettext_noop
from django.views.generic import ( from django.views.generic import (
TemplateView, CreateView, DeleteView, UpdateView, TemplateView, CreateView, DeleteView, UpdateView,
) )
...@@ -44,7 +44,10 @@ from ..forms import ( ...@@ -44,7 +44,10 @@ from ..forms import (
) )
from ..tables import TemplateListTable, LeaseListTable from ..tables import TemplateListTable, LeaseListTable
from .util import AclUpdateView, FilterMixin from .util import (
AclUpdateView, FilterMixin,
TransferOwnershipConfirmView, TransferOwnershipView,
)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -488,3 +491,20 @@ class LeaseDelete(LoginRequiredMixin, DeleteView): ...@@ -488,3 +491,20 @@ class LeaseDelete(LoginRequiredMixin, DeleteView):
else: else:
messages.success(request, success_message) messages.success(request, success_message)
return HttpResponseRedirect(success_url) return HttpResponseRedirect(success_url)
class TransferTemplateOwnershipConfirmView(TransferOwnershipConfirmView):
template = "dashboard/confirm/transfer-template-ownership.html"
model = InstanceTemplate
class TransferTemplateOwnershipView(TransferOwnershipView):
confirm_view = TransferTemplateOwnershipConfirmView
model = InstanceTemplate
notification_msg = ugettext_noop(
'%(user)s offered you to take the ownership of '
'his/her template called %(instance)s. '
'<a href="%(token)s" '
'class="btn btn-success btn-small">Accept</a>')
token_url = 'dashboard.views.template-transfer-ownership-confirm'
template = "dashboard/template-tx-owner.html"
...@@ -24,14 +24,15 @@ from urlparse import urljoin ...@@ -24,14 +24,15 @@ from urlparse import urljoin
from django.conf import settings from django.conf import settings
from django.contrib.auth.models import User, Group from django.contrib.auth.models import User, Group
from django.core.exceptions import PermissionDenied from django.core import signing
from django.core.exceptions import PermissionDenied, SuspiciousOperation
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.views import redirect_to_login from django.contrib.auth.views import redirect_to_login
from django.db.models import Q from django.db.models import Q
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.shortcuts import redirect from django.shortcuts import redirect, render
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _, ugettext_noop
from django.views.generic import DetailView, View from django.views.generic import DetailView, View
from django.views.generic.detail import SingleObjectMixin from django.views.generic.detail import SingleObjectMixin
...@@ -40,7 +41,8 @@ from braces.views._access import AccessMixin ...@@ -40,7 +41,8 @@ from braces.views._access import AccessMixin
from celery.exceptions import TimeoutError from celery.exceptions import TimeoutError
from common.models import HumanReadableException, HumanReadableObject from common.models import HumanReadableException, HumanReadableObject
from ..models import GroupProfile from ..models import GroupProfile, Profile
from ..forms import TransferOwnershipForm
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
saml_available = hasattr(settings, "SAML_CONFIG") saml_available = hasattr(settings, "SAML_CONFIG")
...@@ -563,3 +565,132 @@ class GraphMixin(object): ...@@ -563,3 +565,132 @@ class GraphMixin(object):
def absolute_url(url): def absolute_url(url):
return urljoin(settings.DJANGO_URL, url) return urljoin(settings.DJANGO_URL, url)
class TransferOwnershipView(CheckedDetailView, DetailView):
def get_template_names(self):
if self.request.is_ajax():
return ['dashboard/_modal.html']
else:
return ['dashboard/nojs-wrapper.html']
def get_context_data(self, *args, **kwargs):
context = super(TransferOwnershipView, self).get_context_data(
*args, **kwargs)
context['form'] = TransferOwnershipForm()
context.update({
'box_title': _("Transfer ownership"),
'ajax_title': True,
'template': self.template,
})
return context
def post(self, request, *args, **kwargs):
form = TransferOwnershipForm(request.POST)
if not form.is_valid():
return self.get(request)
try:
new_owner = search_user(request.POST['name'])
except User.DoesNotExist:
messages.error(request, _('Can not find specified user.'))
return self.get(request, *args, **kwargs)
except KeyError:
raise SuspiciousOperation()
obj = self.get_object()
if not (obj.owner == request.user or
request.user.is_superuser):
raise PermissionDenied()
token = signing.dumps(
(obj.pk, new_owner.pk),
salt=self.confirm_view.get_salt())
token_path = reverse(self.token_url, args=[token])
try:
new_owner.profile.notify(
ugettext_noop('Ownership offer'),
self.notification_msg,
{'instance': obj, 'token': token_path})
except Profile.DoesNotExist:
messages.error(request, _('Can not notify selected user.'))
else:
messages.success(request,
_('User %s is notified about the offer.') % (
unicode(new_owner), ))
return redirect(obj.get_absolute_url())
class TransferOwnershipConfirmView(LoginRequiredMixin, View):
"""User can accept an ownership offer."""
max_age = 3 * 24 * 3600
success_message = _("Ownership successfully transferred to you.")
@classmethod
def get_salt(cls):
return unicode(cls) + unicode(cls.model)
def get(self, request, key, *args, **kwargs):
"""Confirm ownership transfer based on token.
"""
logger.debug('Confirm dialog for token %s.', key)
try:
instance, new_owner = self.get_instance(key, request.user)
except PermissionDenied:
messages.error(request, _('This token is for an other user.'))
raise
except SuspiciousOperation:
messages.error(request, _('This token is invalid or has expired.'))
raise PermissionDenied()
return render(request, self.template,
dictionary={'instance': instance, 'key': key})
def change_owner(self, instance, new_owner):
instance.owner = new_owner
instance.clean()
instance.save()
def post(self, request, key, *args, **kwargs):
"""Really transfer ownership based on token.
"""
instance, owner = self.get_instance(key, request.user)
old = instance.owner
self.change_owner(instance, request.user)
messages.success(request, self.success_message)
logger.info('Ownership of %s transferred from %s to %s.',
unicode(instance), unicode(old), unicode(request.user))
if old.profile:
old.profile.notify(
ugettext_noop('Ownership accepted'),
ugettext_noop('Your ownership offer of %(instance)s has been '
'accepted by %(user)s.'),
{'instance': instance})
return redirect(instance.get_absolute_url())
def get_instance(self, key, user):
"""Get object based on signed token.
"""
try:
instance, new_owner = (
signing.loads(key, max_age=self.max_age,
salt=self.get_salt()))
except (signing.BadSignature, ValueError, TypeError) as e:
logger.error('Tried invalid token. Token: %s, user: %s. %s',
key, unicode(user), unicode(e))
raise SuspiciousOperation()
try:
instance = self.model.objects.get(id=instance)
except self.model.DoesNotExist as e:
logger.error('Tried token to nonexistent instance %d. '
'Token: %s, user: %s. %s',
instance, key, unicode(user), unicode(e))
raise Http404()
if new_owner != user.pk:
logger.error('%s (%d) tried the token for %s. Token: %s.',
unicode(user), user.pk, new_owner, key)
raise PermissionDenied()
return (instance, new_owner)
...@@ -29,7 +29,7 @@ from django.core import signing ...@@ -29,7 +29,7 @@ from django.core import signing
from django.core.exceptions import PermissionDenied, SuspiciousOperation from django.core.exceptions import PermissionDenied, SuspiciousOperation
from django.core.urlresolvers import reverse, reverse_lazy from django.core.urlresolvers import reverse, reverse_lazy
from django.http import HttpResponse, Http404, HttpResponseRedirect from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.shortcuts import redirect, get_object_or_404, render from django.shortcuts import redirect, get_object_or_404
from django.template import RequestContext from django.template import RequestContext
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.utils.translation import ( from django.utils.translation import (
...@@ -37,7 +37,7 @@ from django.utils.translation import ( ...@@ -37,7 +37,7 @@ from django.utils.translation import (
) )
from django.views.decorators.http import require_GET from django.views.decorators.http import require_GET
from django.views.generic import ( from django.views.generic import (
UpdateView, ListView, TemplateView, DeleteView, DetailView, View, UpdateView, ListView, TemplateView, DeleteView
) )
from braces.views import SuperuserRequiredMixin, LoginRequiredMixin from braces.views import SuperuserRequiredMixin, LoginRequiredMixin
...@@ -54,17 +54,18 @@ from vm.models import ( ...@@ -54,17 +54,18 @@ from vm.models import (
) )
from .util import ( from .util import (
CheckedDetailView, AjaxOperationMixin, OperationView, AclUpdateView, CheckedDetailView, AjaxOperationMixin, OperationView, AclUpdateView,
FormOperationMixin, FilterMixin, search_user, GraphMixin, FormOperationMixin, FilterMixin, GraphMixin,
TransferOwnershipConfirmView, TransferOwnershipView,
) )
from ..forms import ( from ..forms import (
AclUserOrGroupAddForm, VmResourcesForm, TraitsForm, RawDataForm, AclUserOrGroupAddForm, VmResourcesForm, TraitsForm, RawDataForm,
VmAddInterfaceForm, VmCreateDiskForm, VmDownloadDiskForm, VmSaveForm, VmAddInterfaceForm, VmCreateDiskForm, VmDownloadDiskForm, VmSaveForm,
VmRenewForm, VmStateChangeForm, VmListSearchForm, VmCustomizeForm, VmRenewForm, VmStateChangeForm, VmListSearchForm, VmCustomizeForm,
TransferOwnershipForm, VmDiskResizeForm, RedeployForm, VmDiskRemoveForm, VmDiskResizeForm, RedeployForm, VmDiskRemoveForm,
VmMigrateForm, VmDeployForm, VmMigrateForm, VmDeployForm,
VmPortRemoveForm, VmPortAddForm, VmPortRemoveForm, VmPortAddForm,
) )
from ..models import Favourite, Profile from ..models import Favourite
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -1284,139 +1285,29 @@ class FavouriteView(TemplateView): ...@@ -1284,139 +1285,29 @@ class FavouriteView(TemplateView):
return HttpResponse("Added.") return HttpResponse("Added.")
class TransferOwnershipView(CheckedDetailView, DetailView): class TransferInstanceOwnershipConfirmView(TransferOwnershipConfirmView):
template = "dashboard/confirm/transfer-instance-ownership.html"
model = Instance model = Instance
def get_template_names(self): def change_owner(self, instance, new_owner):
if self.request.is_ajax(): with instance.activity(
return ['dashboard/_modal.html'] code_suffix='ownership-transferred',
else: readable_name=ugettext_noop("transfer ownership"),
return ['dashboard/nojs-wrapper.html'] concurrency_check=False, user=new_owner):
super(TransferInstanceOwnershipConfirmView, self).change_owner(
def get_context_data(self, *args, **kwargs): instance, new_owner)
context = super(TransferOwnershipView, self).get_context_data(
*args, **kwargs)
context['form'] = TransferOwnershipForm()
context.update({
'box_title': _("Transfer ownership"),
'ajax_title': True,
'template': "dashboard/vm-detail/tx-owner.html",
})
return context
def post(self, request, *args, **kwargs):
form = TransferOwnershipForm(request.POST)
if not form.is_valid():
return self.get(request)
try:
new_owner = search_user(request.POST['name'])
except User.DoesNotExist:
messages.error(request, _('Can not find specified user.'))
return self.get(request, *args, **kwargs)
except KeyError:
raise SuspiciousOperation()
obj = self.get_object()
if not (obj.owner == request.user or
request.user.is_superuser):
raise PermissionDenied()
token = signing.dumps((obj.pk, new_owner.pk),
salt=TransferOwnershipConfirmView.get_salt())
token_path = reverse(
'dashboard.views.vm-transfer-ownership-confirm', args=[token])
try:
new_owner.profile.notify(
ugettext_noop('Ownership offer'),
ugettext_noop('%(user)s offered you to take the ownership of '
'his/her virtual machine called %(instance)s. '
'<a href="%(token)s" '
'class="btn btn-success btn-small">Accept</a>'),
{'instance': obj, 'token': token_path})
except Profile.DoesNotExist:
messages.error(request, _('Can not notify selected user.'))
else:
messages.success(request,
_('User %s is notified about the offer.') % (
unicode(new_owner), ))
return redirect(reverse_lazy("dashboard.views.detail",
kwargs={'pk': obj.pk}))
class TransferOwnershipConfirmView(LoginRequiredMixin, View): class TransferInstanceOwnershipView(TransferOwnershipView):
"""User can accept an ownership offer.""" confirm_view = TransferInstanceOwnershipConfirmView
model = Instance
max_age = 3 * 24 * 3600 notification_msg = ugettext_noop(
success_message = _("Ownership successfully transferred to you.") '%(user)s offered you to take the ownership of '
'his/her virtual machine called %(instance)s. '
@classmethod '<a href="%(token)s" '
def get_salt(cls): 'class="btn btn-success btn-small">Accept</a>')
return unicode(cls) token_url = 'dashboard.views.vm-transfer-ownership-confirm'
template = "dashboard/vm-detail/tx-owner.html"
def get(self, request, key, *args, **kwargs):
"""Confirm ownership transfer based on token.
"""
logger.debug('Confirm dialog for token %s.', key)
try:
instance, new_owner = self.get_instance(key, request.user)
except PermissionDenied:
messages.error(request, _('This token is for an other user.'))
raise
except SuspiciousOperation:
messages.error(request, _('This token is invalid or has expired.'))
raise PermissionDenied()
return render(request,
"dashboard/confirm/base-transfer-ownership.html",
dictionary={'instance': instance, 'key': key})
def post(self, request, key, *args, **kwargs):
"""Really transfer ownership based on token.
"""
instance, owner = self.get_instance(key, request.user)
old = instance.owner
with instance.activity(code_suffix='ownership-transferred',
concurrency_check=False, user=request.user):
instance.owner = request.user
instance.clean()
instance.save()
messages.success(request, self.success_message)
logger.info('Ownership of %s transferred from %s to %s.',
unicode(instance), unicode(old), unicode(request.user))
if old.profile:
old.profile.notify(
ugettext_noop('Ownership accepted'),
ugettext_noop('Your ownership offer of %(instance)s has been '
'accepted by %(user)s.'),
{'instance': instance})
return redirect(instance.get_absolute_url())
def get_instance(self, key, user):
"""Get object based on signed token.
"""
try:
instance, new_owner = (
signing.loads(key, max_age=self.max_age,
salt=self.get_salt()))
except (signing.BadSignature, ValueError, TypeError) as e:
logger.error('Tried invalid token. Token: %s, user: %s. %s',
key, unicode(user), unicode(e))
raise SuspiciousOperation()
try:
instance = Instance.objects.get(id=instance)
except Instance.DoesNotExist as e:
logger.error('Tried token to nonexistent instance %d. '
'Token: %s, user: %s. %s',
instance, key, unicode(user), unicode(e))
raise Http404()
if new_owner != user.pk:
logger.error('%s (%d) tried the token for %s. Token: %s.',
unicode(user), user.pk, new_owner, key)
raise PermissionDenied()
return (instance, new_owner)
@login_required @login_required
......
...@@ -6,8 +6,8 @@ msgid "" ...@@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-09-24 13:16+0200\n" "POT-Creation-Date: 2014-10-20 12:09+0200\n"
"PO-Revision-Date: 2014-09-24 13:18+0200\n" "PO-Revision-Date: 2014-10-20 13:01+0200\n"
"Last-Translator: Mate Ory <ory.mate@ik.bme.hu>\n" "Last-Translator: Mate Ory <ory.mate@ik.bme.hu>\n"
"Language-Team: Hungarian <cloud@ik.bme.hu>\n" "Language-Team: Hungarian <cloud@ik.bme.hu>\n"
"Language: hu\n" "Language: hu\n"
...@@ -25,90 +25,90 @@ msgstr "Angol" ...@@ -25,90 +25,90 @@ msgstr "Angol"
msgid "Hungarian" msgid "Hungarian"
msgstr "Magyar" msgstr "Magyar"
#: common/models.py:62 #: common/models.py:71
msgid "Failure." msgid "Failure."
msgstr "Hiba." msgstr "Hiba."
#: common/models.py:63 #: common/models.py:72
#, python-format #, python-format
msgid "Unhandled exception: %(error)s" msgid "Unhandled exception: %(error)s"
msgstr "Kezeletlen kivétel: %(error)s" msgstr "Kezeletlen kivétel: %(error)s"
#: common/models.py:138 #: common/models.py:147
#: dashboard/templates/dashboard/instanceactivity_detail.html:28 #: dashboard/templates/dashboard/instanceactivity_detail.html:28
msgid "activity code" msgid "activity code"
msgstr "tevékenységkód" msgstr "tevékenységkód"
#: common/models.py:141 #: common/models.py:150
msgid "human readable name" msgid "human readable name"
msgstr "olvasható név" msgstr "olvasható név"
#: common/models.py:142 #: common/models.py:151
msgid "Human readable name of activity." msgid "Human readable name of activity."
msgstr "A tevékenység neve olvasható formában." msgstr "A tevékenység neve olvasható formában."
#: common/models.py:146 #: common/models.py:155
msgid "Celery task unique identifier." msgid "Celery task unique identifier."
msgstr "Celery feladat egyedi azonosítója." msgstr "Celery feladat egyedi azonosítója."
#: common/models.py:147 #: common/models.py:156
msgid "task_uuid" msgid "task_uuid"
msgstr "feladat uuid" msgstr "feladat uuid"
#: common/models.py:148 #: common/models.py:157
#: dashboard/templates/dashboard/instanceactivity_detail.html:37 #: dashboard/templates/dashboard/instanceactivity_detail.html:37
#: firewall/models.py:273 vm/models/common.py:84 vm/models/instance.py:140 #: firewall/models.py:273 vm/models/common.py:84 vm/models/instance.py:131
#: vm/models/instance.py:221 #: vm/models/instance.py:212
msgid "user" msgid "user"
msgstr "felhasználó" msgstr "felhasználó"
#: common/models.py:149 #: common/models.py:158
msgid "The person who started this activity." msgid "The person who started this activity."
msgstr "A tevékenységet indító felhasználó." msgstr "A tevékenységet indító felhasználó."
#: common/models.py:150 #: common/models.py:159
msgid "started at" msgid "started at"
msgstr "indítás ideje" msgstr "indítás ideje"
#: common/models.py:152 #: common/models.py:161
msgid "Time of activity initiation." msgid "Time of activity initiation."
msgstr "A tevékenység megkezdésének időpontja." msgstr "A tevékenység megkezdésének időpontja."
#: common/models.py:153 #: common/models.py:162
msgid "finished at" msgid "finished at"
msgstr "befejezés ideje" msgstr "befejezés ideje"
#: common/models.py:155 #: common/models.py:164
msgid "Time of activity finalization." msgid "Time of activity finalization."
msgstr "A tevékenység befejeztének ideje." msgstr "A tevékenység befejeztének ideje."
#: common/models.py:157 #: common/models.py:166
msgid "True, if the activity has finished successfully." msgid "True, if the activity has finished successfully."
msgstr "Igaz, ha a tevékenység sikeresen befejeződött." msgstr "Igaz, ha a tevékenység sikeresen befejeződött."
#: common/models.py:159 #: common/models.py:168
#: dashboard/templates/dashboard/instanceactivity_detail.html:56 #: dashboard/templates/dashboard/instanceactivity_detail.html:56
msgid "result" msgid "result"
msgstr "eredmény" msgstr "eredmény"
#: common/models.py:161 #: common/models.py:170
msgid "Human readable result of activity." msgid "Human readable result of activity."
msgstr "A tevékenység eredménye olvasható formában." msgstr "A tevékenység eredménye olvasható formában."
#: common/models.py:523 #: common/models.py:543
msgid "Permission Denied" msgid "Permission Denied"
msgstr "Hozzáférés megtagadva" msgstr "Hozzáférés megtagadva"
#: common/models.py:525 #: common/models.py:545
msgid "Unknown error" msgid "Unknown error"
msgstr "Ismeretlen hiba" msgstr "Ismeretlen hiba"
#: common/models.py:526 #: common/models.py:546
#, python-format #, python-format
msgid "Unknown error: %(ex)s" msgid "Unknown error: %(ex)s"
msgstr "Ismeretlen hiba: %(ex)s" msgstr "Ismeretlen hiba: %(ex)s"
#: common/operations.py:160 #: common/operations.py:177
msgid "Superuser privileges are required." msgid "Superuser privileges are required."
msgstr "Rendszergazdai jogosultság szükséges." msgstr "Rendszergazdai jogosultság szükséges."
...@@ -121,24 +121,24 @@ msgstr "%s (csoport)" ...@@ -121,24 +121,24 @@ msgstr "%s (csoport)"
msgid "no matches found" msgid "no matches found"
msgstr "nincs találat" msgstr "nincs találat"
#: dashboard/forms.py:65 #: dashboard/forms.py:67
msgid "idle" msgid "idle"
msgstr "üresjáratban" msgstr "üresjáratban"
#: dashboard/forms.py:66 #: dashboard/forms.py:68
msgid "normal" msgid "normal"
msgstr "normál" msgstr "normál"
#: dashboard/forms.py:67 #: dashboard/forms.py:69
msgid "server" msgid "server"
msgstr "szerver" msgstr "szerver"
#: dashboard/forms.py:68 #: dashboard/forms.py:70
msgid "realtime" msgid "realtime"
msgstr "valós idejű" msgstr "valós idejű"
#: dashboard/forms.py:73 dashboard/forms.py:776 dashboard/forms.py:797 #: dashboard/forms.py:88 dashboard/forms.py:805 dashboard/forms.py:895
#: dashboard/forms.py:1084 dashboard/tables.py:225 #: dashboard/forms.py:1196 dashboard/tables.py:225
#: dashboard/templates/dashboard/_vm-create-2.html:20 #: dashboard/templates/dashboard/_vm-create-2.html:20
#: dashboard/templates/dashboard/vm-list.html:60 #: dashboard/templates/dashboard/vm-list.html:60
#: dashboard/templates/dashboard/vm-detail/home.html:8 firewall/models.py:285 #: dashboard/templates/dashboard/vm-detail/home.html:8 firewall/models.py:285
...@@ -147,20 +147,31 @@ msgstr "valós idejű" ...@@ -147,20 +147,31 @@ msgstr "valós idejű"
msgid "Name" msgid "Name"
msgstr "Név" msgstr "Név"
#: dashboard/forms.py:74 vm/models/instance.py:145 #: dashboard/forms.py:89 vm/models/instance.py:136
msgid "Human readable name of template." msgid "Human readable name of template."
msgstr "A sablon olvasható neve." msgstr "A sablon olvasható neve."
#: dashboard/forms.py:190 dashboard/templates/dashboard/_vm-create-1.html:53 #: dashboard/forms.py:99
#: dashboard/templates/dashboard/vm-detail/home.html:30 msgid "Clone template permissions"
msgstr "Sablon jogosultságainak klónozása"
#: dashboard/forms.py:100
msgid ""
"Clone the access list of parent template. Useful for updating a template."
msgstr ""
"A szülősablon hozzáférési listájának másolása. Sablonok frissítéséhez "
"ajánlott."
#: dashboard/forms.py:211 dashboard/templates/dashboard/_vm-create-1.html:53
#: dashboard/templates/dashboard/vm-detail/home.html:33
msgid "Description" msgid "Description"
msgstr "Leírás" msgstr "Leírás"
#: dashboard/forms.py:201 dashboard/forms.py:249 #: dashboard/forms.py:222 dashboard/forms.py:269
msgid "Directory identifier" msgid "Directory identifier"
msgstr "Címtári azonosító" msgstr "Címtári azonosító"
#: dashboard/forms.py:204 #: dashboard/forms.py:225
msgid "" msgid ""
"If you select an item here, the members of this directory group will be " "If you select an item here, the members of this directory group will be "
"automatically added to the group at the time they log in. Please note that " "automatically added to the group at the time they log in. Please note that "
...@@ -171,7 +182,7 @@ msgstr "" ...@@ -171,7 +182,7 @@ msgstr ""
"kerülnek, ha bejelentkeznek. Vegye figyelembe, hogy más, az önhöz hasonló " "kerülnek, ha bejelentkeznek. Vegye figyelembe, hogy más, az önhöz hasonló "
"jogosultságú felhasználók is csoportadminisztrátorrá válhatnak." "jogosultságú felhasználók is csoportadminisztrátorrá válhatnak."
#: dashboard/forms.py:228 #: dashboard/forms.py:249
#: dashboard/templates/dashboard/store/_list-box.html:57 #: dashboard/templates/dashboard/store/_list-box.html:57
#: network/templates/network/blacklist-create.html:8 #: network/templates/network/blacklist-create.html:8
#: network/templates/network/dashboard.html:25 #: network/templates/network/dashboard.html:25
...@@ -193,13 +204,13 @@ msgstr "" ...@@ -193,13 +204,13 @@ msgstr ""
msgid "Create" msgid "Create"
msgstr "Létrehozás" msgstr "Létrehozás"
#: dashboard/forms.py:257 dashboard/forms.py:1004 dashboard/forms.py:1021 #: dashboard/forms.py:277 dashboard/forms.py:1116 dashboard/forms.py:1133
#: dashboard/forms.py:1047 dashboard/forms.py:1097 dashboard/forms.py:1138 #: dashboard/forms.py:1159 dashboard/forms.py:1209 dashboard/forms.py:1250
#: dashboard/forms.py:1158 dashboard/forms.py:1187 #: dashboard/forms.py:1270 dashboard/forms.py:1299
#: dashboard/templates/dashboard/_manage_access.html:73 #: dashboard/templates/dashboard/_manage_access.html:73
#: dashboard/templates/dashboard/connect-command-create.html:37 #: dashboard/templates/dashboard/connect-command-create.html:37
#: dashboard/templates/dashboard/connect-command-edit.html:37 #: dashboard/templates/dashboard/connect-command-edit.html:37
#: dashboard/templates/dashboard/group-detail.html:102 #: dashboard/templates/dashboard/group-detail.html:132
#: dashboard/templates/dashboard/lease-edit.html:96 #: dashboard/templates/dashboard/lease-edit.html:96
#: dashboard/templates/dashboard/vm-detail/tx-owner.html:12 #: dashboard/templates/dashboard/vm-detail/tx-owner.html:12
#: network/forms.py:82 network/forms.py:103 network/forms.py:139 #: network/forms.py:82 network/forms.py:103 network/forms.py:139
...@@ -208,175 +219,226 @@ msgstr "Létrehozás" ...@@ -208,175 +219,226 @@ msgstr "Létrehozás"
msgid "Save" msgid "Save"
msgstr "Mentés" msgstr "Mentés"
#: dashboard/forms.py:289 dashboard/templates/dashboard/vm-detail.html:78 #: dashboard/forms.py:307 dashboard/templates/dashboard/vm-detail.html:92
msgid "Host" msgid "Host"
msgstr "Gép" msgstr "Gép"
#: dashboard/forms.py:359 dashboard/templates/dashboard/node-detail.html:4 #: dashboard/forms.py:378 dashboard/forms.py:776 dashboard/forms.py:933
#: dashboard/templates/dashboard/vm-list.html:81 #: dashboard/templates/dashboard/node-detail.html:4
#: dashboard/templates/dashboard/vm-list.html:85
#: dashboard/templates/dashboard/vm-detail/home.html:116
msgid "Node" msgid "Node"
msgstr "Csomópont" msgstr "Csomópont"
#: dashboard/forms.py:438 #: dashboard/forms.py:457
msgid "Networks" msgid "Networks"
msgstr "Hálózatok" msgstr "Hálózatok"
#: dashboard/forms.py:667 #: dashboard/forms.py:683
msgid "Suspend in" msgid "Suspend in"
msgstr "Felfüggesztés ideje" msgstr "Felfüggesztés ideje"
#: dashboard/forms.py:671 dashboard/forms.py:695 #: dashboard/forms.py:687 dashboard/forms.py:711
msgid "hours" msgid "hours"
msgstr "óra" msgstr "óra"
#: dashboard/forms.py:676 dashboard/forms.py:700 #: dashboard/forms.py:692 dashboard/forms.py:716
msgid "days" msgid "days"
msgstr "nap" msgstr "nap"
#: dashboard/forms.py:681 dashboard/forms.py:705 #: dashboard/forms.py:697 dashboard/forms.py:721
msgid "weeks" msgid "weeks"
msgstr "hét" msgstr "hét"
#: dashboard/forms.py:686 dashboard/forms.py:710 #: dashboard/forms.py:702 dashboard/forms.py:726
msgid "months" msgid "months"
msgstr "hónap" msgstr "hónap"
#: dashboard/forms.py:691 #: dashboard/forms.py:707
msgid "Delete in" msgid "Delete in"
msgstr "Törlés ideje" msgstr "Törlés ideje"
#: dashboard/forms.py:716 dashboard/templates/dashboard/template-edit.html:64 #: dashboard/forms.py:732 dashboard/templates/dashboard/template-edit.html:63
#: network/forms.py:60 #: network/forms.py:60
msgid "Save changes" msgid "Save changes"
msgstr "Változások mentése" msgstr "Változások mentése"
#: dashboard/forms.py:726 #: dashboard/forms.py:742
msgid "Set expiration times even if they are shorter than the current value." msgid "Set expiration times even if they are shorter than the current value."
msgstr "" msgstr ""
"Akkor is állítsa át a lejárati időket, ha rövidebbek lesznek a jelenleginél." "Akkor is állítsa át a lejárati időket, ha rövidebbek lesznek a jelenleginél."
#: dashboard/forms.py:729 #: dashboard/forms.py:745
msgid "Save selected lease." msgid "Save selected lease."
msgstr "Kiválasztott bérlet mentése." msgstr "Kiválasztott bérlet mentése."
#: dashboard/forms.py:738 #: dashboard/forms.py:754
msgid "Length" msgid "Length"
msgstr "Hossz" msgstr "Hossz"
#: dashboard/forms.py:753 #: dashboard/forms.py:762
msgid "Live migration"
msgstr "Live migration"
#: dashboard/forms.py:764
msgid ""
"Live migration is a way of moving virtual machines between hosts with a "
"service interruption of at most some seconds. Please note that it can take "
"very long and cause much network traffic in case of busy machines."
msgstr ""
"A live migration lehetővé teszi virtuális gépek csomópontok közti mozgatását "
"legfeljebb néhány másodperces szolgáltatáskimaradással. Vegye figyelembe, "
"hogy ez terhelt gépek esetén sokáig tarthat és nagy hálózati forgalommal jár."
#: dashboard/forms.py:782
msgid "Forcibly interrupt all running activities." msgid "Forcibly interrupt all running activities."
msgstr "Futó tevékenységek erőltetett befejezése." msgstr "Futó tevékenységek erőltetett befejezése."
#: dashboard/forms.py:754 #: dashboard/forms.py:783
msgid "Set all activities to finished state, but don't interrupt any tasks." msgid "Set all activities to finished state, but don't interrupt any tasks."
msgstr "" msgstr ""
"Minden tevékenység befejezettre állítása (a feladatok megszakítása nélkül)." "Minden tevékenység befejezettre állítása (a feladatok megszakítása nélkül)."
#: dashboard/forms.py:757 #: dashboard/forms.py:786
msgid "New status" msgid "New status"
msgstr "Új állapot" msgstr "Új állapot"
#: dashboard/forms.py:778 #: dashboard/forms.py:787
msgid "Reset node"
msgstr "Csomópont visszaállítása"
#: dashboard/forms.py:801
msgid "use emergency state change"
msgstr "vész-állapotváltás használata"
#: dashboard/forms.py:807 dashboard/forms.py:827
#: dashboard/templates/dashboard/store/_list-box.html:117 #: dashboard/templates/dashboard/store/_list-box.html:117
msgid "Size" msgid "Size"
msgstr "Méret" msgstr "Méret"
#: dashboard/forms.py:779 #: dashboard/forms.py:808
msgid "Size of disk to create in bytes or with units like MB or GB." msgid "Size of disk to create in bytes or with units like MB or GB."
msgstr "Létrehozandó lemez mérete byte-okban vagy mértékegységgel (MB, GB)." msgstr "Létrehozandó lemez mérete byte-okban vagy mértékegységgel (MB, GB)."
#: dashboard/forms.py:785 #: dashboard/forms.py:820 dashboard/forms.py:849
msgid "Invalid format, you can use GB or MB!" msgid "Invalid format, you can use GB or MB!"
msgstr "Érvénytelen formátum. „GB” és „MB” is használható." msgstr "Érvénytelen formátum. „GB” és „MB” is használható."
#: dashboard/forms.py:798 #: dashboard/forms.py:828
msgid "Size to resize the disk in bytes or with units like MB or GB."
msgstr "A lemez kívánt mérete byte-okban vagy mértékegységgel (MB, GB)."
#: dashboard/forms.py:839 dashboard/forms.py:875
msgid "Disk"
msgstr "Lemez"
#: dashboard/forms.py:852
msgid "Disk size must be greater than the actual size."
msgstr "A lemez mérete nagyobb kell legyen a jelenleginél."
#: dashboard/forms.py:861 dashboard/forms.py:886
#, python-format
msgid "<label>Disk:</label> %s"
msgstr "<label>Lemez:</label> %s"
#: dashboard/forms.py:896
msgid "URL" msgid "URL"
msgstr "URL" msgstr "URL"
#: dashboard/forms.py:813 #: dashboard/forms.py:906
msgid "Could not find filename in URL, please specify a name explicitly."
msgstr "Az URL-ben nem található fájlnév. Kérem adja meg explicite."
#: dashboard/forms.py:917
#: dashboard/templates/dashboard/node-detail/resources.html:17 #: dashboard/templates/dashboard/node-detail/resources.html:17
msgid "Vlan" msgid "Vlan"
msgstr "Vlan" msgstr "Vlan"
#: dashboard/forms.py:816 #: dashboard/forms.py:920
msgid "No more networks." msgid "No more networks."
msgstr "Nincs több hálózat." msgstr "Nincs több hálózat."
#: dashboard/forms.py:844 dashboard/templates/dashboard/profile.html:31 #: dashboard/forms.py:934
#: dashboard/templates/dashboard/vm-detail.html:94 msgid ""
"Deploy virtual machine to this node (blank allows scheduling automatically)."
msgstr ""
"A virtuális gép elindítása ezen a csomóponton (üresen hagyva automatikus "
"ütemezés)."
#: dashboard/forms.py:956 dashboard/templates/dashboard/profile.html:31
#: dashboard/templates/dashboard/vm-detail.html:108
msgid "Username" msgid "Username"
msgstr "Felhasználónév" msgstr "Felhasználónév"
#: dashboard/forms.py:858 dashboard/templates/dashboard/vm-detail.html:96 #: dashboard/forms.py:970 dashboard/templates/dashboard/vm-detail.html:110
msgid "Password" msgid "Password"
msgstr "Jelszó" msgstr "Jelszó"
#: dashboard/forms.py:863 #: dashboard/forms.py:975
msgid "Sign in" msgid "Sign in"
msgstr "Bejelentkezés" msgstr "Bejelentkezés"
#: dashboard/forms.py:886 dashboard/templates/dashboard/profile.html:37 #: dashboard/forms.py:998 dashboard/templates/dashboard/profile.html:37
msgid "Email address" msgid "Email address"
msgstr "E-mail cím" msgstr "E-mail cím"
#: dashboard/forms.py:891 #: dashboard/forms.py:1003
msgid "Reset password" msgid "Reset password"
msgstr "Új jelszó" msgstr "Új jelszó"
#: dashboard/forms.py:907 dashboard/forms.py:1030 #: dashboard/forms.py:1019 dashboard/forms.py:1142
msgid "Change password" msgid "Change password"
msgstr "Jelszóváltoztatás" msgstr "Jelszóváltoztatás"
#: dashboard/forms.py:979 #: dashboard/forms.py:1091
msgid "Add trait" msgid "Add trait"
msgstr "Jellemző hozzáadása" msgstr "Jellemző hozzáadása"
#: dashboard/forms.py:1061 dashboard/templates/dashboard/lease-edit.html:86 #: dashboard/forms.py:1173 dashboard/templates/dashboard/lease-edit.html:86
msgid "Name of group or user" msgid "Name of group or user"
msgstr "Csoport vagy felhasználó neve" msgstr "Csoport vagy felhasználó neve"
#: dashboard/forms.py:1069 dashboard/forms.py:1078 #: dashboard/forms.py:1181 dashboard/forms.py:1190
msgid "Name of user" msgid "Name of user"
msgstr "Felhasználó neve" msgstr "Felhasználó neve"
#: dashboard/forms.py:1071 dashboard/forms.py:1080 #: dashboard/forms.py:1183 dashboard/forms.py:1192
msgid "E-mail address or identifier of user" msgid "E-mail address or identifier of user"
msgstr "A felhasználó e-mail címe vagy azonosítója" msgstr "A felhasználó e-mail címe vagy azonosítója"
#: dashboard/forms.py:1086 #: dashboard/forms.py:1198
msgid "Key" msgid "Key"
msgstr "Kulcs" msgstr "Kulcs"
#: dashboard/forms.py:1087 #: dashboard/forms.py:1199
msgid "For example: ssh-rsa AAAAB3NzaC1yc2ED..." msgid "For example: ssh-rsa AAAAB3NzaC1yc2ED..."
msgstr "Például: ssh-rsa AAAAB3NzaC1yc2ED…" msgstr "Például: ssh-rsa AAAAB3NzaC1yc2ED…"
#: dashboard/forms.py:1173 #: dashboard/forms.py:1285
msgid "permissions" msgid "permissions"
msgstr "jogosultságok" msgstr "jogosultságok"
#: dashboard/forms.py:1230 #: dashboard/forms.py:1342
msgid "owned" msgid "owned"
msgstr "saját" msgstr "saját"
#: dashboard/forms.py:1231 #: dashboard/forms.py:1343
msgid "shared" msgid "shared"
msgstr "osztott" msgstr "osztott"
#: dashboard/forms.py:1232 #: dashboard/forms.py:1344
msgid "all" msgid "all"
msgstr "összes" msgstr "összes"
#: dashboard/forms.py:1239 dashboard/forms.py:1263 #: dashboard/forms.py:1351 dashboard/forms.py:1375
#: dashboard/templates/dashboard/index-groups.html:21 #: dashboard/templates/dashboard/index-groups.html:21
#: dashboard/templates/dashboard/index-nodes.html:34 #: dashboard/templates/dashboard/index-nodes.html:61
#: dashboard/templates/dashboard/index-vm.html:57 #: dashboard/templates/dashboard/index-vm.html:57
msgid "Search..." msgid "Search..."
msgstr "Keresés..." msgstr "Keresés..."
#: dashboard/models.py:65 dashboard/templates/dashboard/index-groups.html:39 #: dashboard/models.py:65 dashboard/templates/dashboard/index-groups.html:39
#: dashboard/templates/dashboard/index-nodes.html:48 #: dashboard/templates/dashboard/index-nodes.html:78
#: dashboard/templates/dashboard/index-nodes.html:73
#: dashboard/templates/dashboard/index-templates.html:38 #: dashboard/templates/dashboard/index-templates.html:38
#: dashboard/templates/dashboard/index-vm.html:76 #: dashboard/templates/dashboard/index-vm.html:76
#: dashboard/templates/dashboard/store/_list-box.html:101 #: dashboard/templates/dashboard/store/_list-box.html:101
...@@ -391,7 +453,7 @@ msgstr "kézbesített" ...@@ -391,7 +453,7 @@ msgstr "kézbesített"
msgid "read" msgid "read"
msgstr "olvasott" msgstr "olvasott"
#: dashboard/models.py:108 vm/models/instance.py:107 #: dashboard/models.py:108 vm/models/instance.py:98
msgid "access method" msgid "access method"
msgstr "elérés módja" msgstr "elérés módja"
...@@ -402,8 +464,8 @@ msgstr "Távoli elérési mód típusa." ...@@ -402,8 +464,8 @@ msgstr "Távoli elérési mód típusa."
#: dashboard/models.py:110 firewall/models.py:413 firewall/models.py:440 #: dashboard/models.py:110 firewall/models.py:413 firewall/models.py:440
#: firewall/models.py:828 firewall/models.py:850 firewall/models.py:871 #: firewall/models.py:828 firewall/models.py:850 firewall/models.py:871
#: storage/models.py:47 storage/models.py:86 vm/models/common.py:65 #: storage/models.py:47 storage/models.py:86 vm/models/common.py:65
#: vm/models/common.py:89 vm/models/common.py:165 vm/models/instance.py:144 #: vm/models/common.py:89 vm/models/common.py:165 vm/models/instance.py:135
#: vm/models/instance.py:234 vm/models/node.py:65 #: vm/models/instance.py:225 vm/models/node.py:65
msgid "name" msgid "name"
msgstr "név" msgstr "név"
...@@ -468,14 +530,14 @@ msgid "Can use autocomplete." ...@@ -468,14 +530,14 @@ msgid "Can use autocomplete."
msgstr "Használhat automatikus kiegészítést." msgstr "Használhat automatikus kiegészítést."
#: dashboard/models.py:229 firewall/models.py:274 vm/models/common.py:85 #: dashboard/models.py:229 firewall/models.py:274 vm/models/common.py:85
#: vm/models/instance.py:141 vm/models/instance.py:222 #: vm/models/instance.py:132 vm/models/instance.py:213
msgid "operator" msgid "operator"
msgstr "operátor" msgstr "operátor"
#: dashboard/models.py:230 firewall/models.py:100 firewall/models.py:369 #: dashboard/models.py:230 firewall/models.py:100 firewall/models.py:369
#: firewall/models.py:422 firewall/models.py:445 firewall/models.py:510 #: firewall/models.py:422 firewall/models.py:445 firewall/models.py:510
#: firewall/models.py:851 firewall/models.py:880 vm/models/common.py:86 #: firewall/models.py:851 firewall/models.py:880 vm/models/common.py:86
#: vm/models/instance.py:142 vm/models/instance.py:223 #: vm/models/instance.py:133 vm/models/instance.py:214
msgid "owner" msgid "owner"
msgstr "tulajdonos" msgstr "tulajdonos"
...@@ -501,12 +563,12 @@ msgstr "Állapot" ...@@ -501,12 +563,12 @@ msgstr "Állapot"
#: dashboard/tables.py:145 dashboard/templates/dashboard/_vm-create-2.html:38 #: dashboard/tables.py:145 dashboard/templates/dashboard/_vm-create-2.html:38
#: dashboard/templates/dashboard/node-detail.html:69 #: dashboard/templates/dashboard/node-detail.html:69
#: dashboard/templates/dashboard/vm-detail.html:163 #: dashboard/templates/dashboard/vm-detail.html:177
msgid "Resources" msgid "Resources"
msgstr "Erőforrások" msgstr "Erőforrások"
#: dashboard/tables.py:151 dashboard/templates/dashboard/vm-list.html:72 #: dashboard/tables.py:151 dashboard/templates/dashboard/vm-list.html:72
#: vm/models/instance.py:113 #: vm/models/instance.py:104
msgid "Lease" msgid "Lease"
msgstr "Bérlet" msgstr "Bérlet"
...@@ -545,7 +607,7 @@ msgid "Access method" ...@@ -545,7 +607,7 @@ msgid "Access method"
msgstr "Elérés módja" msgstr "Elérés módja"
#: dashboard/tables.py:265 #: dashboard/tables.py:265
#: dashboard/templates/dashboard/vm-detail/home.html:94 #: dashboard/templates/dashboard/vm-detail/home.html:129
msgid "Template" msgid "Template"
msgstr "Sablon" msgstr "Sablon"
...@@ -659,33 +721,37 @@ msgstr "" ...@@ -659,33 +721,37 @@ msgstr ""
msgid "I have the Client installed" msgid "I have the Client installed"
msgstr "Már telepítve van" msgstr "Már telepítve van"
#: dashboard/templates/dashboard/_disk-list-element.html:10 #: dashboard/templates/dashboard/_disk-list-element.html:12
#: dashboard/templates/dashboard/node-detail/_activity-timeline.html:28
#: dashboard/templates/dashboard/vm-detail/_activity-timeline.html:45
msgid "failed"
msgstr "meghiúsult"
#: dashboard/templates/dashboard/_disk-list-element.html:16
#: dashboard/templates/dashboard/_disk-list-element.html:18
#: dashboard/templates/dashboard/_manage_access.html:34 #: dashboard/templates/dashboard/_manage_access.html:34
#: dashboard/templates/dashboard/_manage_access.html:56 #: dashboard/templates/dashboard/_manage_access.html:56
#: dashboard/templates/dashboard/group-detail.html:63 #: dashboard/templates/dashboard/group-detail.html:93
#: dashboard/templates/dashboard/lease-edit.html:60 #: dashboard/templates/dashboard/lease-edit.html:60
#: dashboard/templates/dashboard/lease-edit.html:80 #: dashboard/templates/dashboard/lease-edit.html:80
#: dashboard/templates/dashboard/template-edit.html:107
#: dashboard/templates/dashboard/template-edit.html:108
#: dashboard/templates/dashboard/confirm/base-remove.html:12 #: dashboard/templates/dashboard/confirm/base-remove.html:12
#: dashboard/templates/dashboard/store/_list-box.html:133 #: dashboard/templates/dashboard/store/_list-box.html:133
#: dashboard/templates/dashboard/store/remove.html:36 #: dashboard/templates/dashboard/store/remove.html:36
#: dashboard/templates/dashboard/vm-detail/network.html:79 #: dashboard/templates/dashboard/vm-detail/network.html:81
#: dashboard/templates/dashboard/vm-detail/network.html:111 #: dashboard/templates/dashboard/vm-detail/network.html:113
msgid "Remove" msgid "Remove"
msgstr "Eltávolítás" msgstr "Eltávolítás"
#: dashboard/templates/dashboard/_disk-list-element.html:21
msgid "Resize"
msgstr "Átméretezés"
#: dashboard/templates/dashboard/_disk-list-element.html:28
#: dashboard/templates/dashboard/store/remove.html:20
msgid "File name"
msgstr "Fájlnév"
#: dashboard/templates/dashboard/_display-name.html:10 #: dashboard/templates/dashboard/_display-name.html:10
msgid "username" msgid "username"
msgstr "felhasználónév" msgstr "felhasználónév"
#: dashboard/templates/dashboard/_manage_access.html:7 #: dashboard/templates/dashboard/_manage_access.html:7
#: dashboard/templates/dashboard/group-detail.html:63 #: dashboard/templates/dashboard/group-detail.html:93
#: dashboard/templates/dashboard/lease-edit.html:35 #: dashboard/templates/dashboard/lease-edit.html:35
msgid "Who" msgid "Who"
msgstr "Ki" msgstr "Ki"
...@@ -746,17 +812,17 @@ msgid "Next" ...@@ -746,17 +812,17 @@ msgid "Next"
msgstr "Tovább" msgstr "Tovább"
#: dashboard/templates/dashboard/_template-create.html:15 #: dashboard/templates/dashboard/_template-create.html:15
#: dashboard/templates/dashboard/template-edit.html:40 #: dashboard/templates/dashboard/template-edit.html:39
msgid "Resource configuration" msgid "Resource configuration"
msgstr "Erőforrásbeállítások" msgstr "Erőforrásbeállítások"
#: dashboard/templates/dashboard/_template-create.html:21 #: dashboard/templates/dashboard/_template-create.html:21
#: dashboard/templates/dashboard/template-edit.html:46 #: dashboard/templates/dashboard/template-edit.html:45
msgid "Virtual machine settings" msgid "Virtual machine settings"
msgstr "Virtuális gépek beállításai" msgstr "Virtuális gépek beállításai"
#: dashboard/templates/dashboard/_template-create.html:31 #: dashboard/templates/dashboard/_template-create.html:31
#: dashboard/templates/dashboard/template-edit.html:57 #: dashboard/templates/dashboard/template-edit.html:56
msgid "External resources" msgid "External resources"
msgstr "Külső erőforrások" msgstr "Külső erőforrások"
...@@ -780,20 +846,21 @@ msgid "CPU" ...@@ -780,20 +846,21 @@ msgid "CPU"
msgstr "CPU" msgstr "CPU"
#: dashboard/templates/dashboard/_vm-create-1.html:23 #: dashboard/templates/dashboard/_vm-create-1.html:23
#: dashboard/templates/dashboard/vm-list.html:76
#: dashboard/templates/dashboard/node-list/column-monitor.html:20 #: dashboard/templates/dashboard/node-list/column-monitor.html:20
msgid "Memory" msgid "Memory"
msgstr "Memória" msgstr "Memória"
#: dashboard/templates/dashboard/_vm-create-1.html:33 #: dashboard/templates/dashboard/_vm-create-1.html:33
#: dashboard/templates/dashboard/_vm-create-2.html:49 #: dashboard/templates/dashboard/_vm-create-2.html:49
#: dashboard/templates/dashboard/vm-detail/resources.html:28 #: dashboard/templates/dashboard/vm-detail/resources.html:25
msgid "Disks" msgid "Disks"
msgstr "Lemezek" msgstr "Lemezek"
#: dashboard/templates/dashboard/_vm-create-1.html:40 #: dashboard/templates/dashboard/_vm-create-1.html:40
#: dashboard/templates/dashboard/_vm-create-2.html:65 #: dashboard/templates/dashboard/_vm-create-2.html:65
#: dashboard/templates/dashboard/base.html:46 #: dashboard/templates/dashboard/base.html:46
#: dashboard/templates/dashboard/vm-detail.html:177 #: dashboard/templates/dashboard/vm-detail.html:191
#: dashboard/views/graph.py:192 dashboard/views/graph.py:215 #: dashboard/views/graph.py:192 dashboard/views/graph.py:215
#: network/forms.py:123 network/templates/network/base.html:7 #: network/forms.py:123 network/templates/network/base.html:7
msgid "Network" msgid "Network"
...@@ -826,6 +893,7 @@ msgid "Amount" ...@@ -826,6 +893,7 @@ msgid "Amount"
msgstr "Mennyiség" msgstr "Mennyiség"
#: dashboard/templates/dashboard/_vm-create-2.html:56 #: dashboard/templates/dashboard/_vm-create-2.html:56
#: dashboard/templates/dashboard/vm-detail/resources.html:34
msgid "No disks are added." msgid "No disks are added."
msgstr "Egy lemez sincs hozzáadva." msgstr "Egy lemez sincs hozzáadva."
...@@ -833,25 +901,25 @@ msgstr "Egy lemez sincs hozzáadva." ...@@ -833,25 +901,25 @@ msgstr "Egy lemez sincs hozzáadva."
msgid "Not added to any network." msgid "Not added to any network."
msgstr "Egy hálózathoz sincs hozzáadva." msgstr "Egy hálózathoz sincs hozzáadva."
#: dashboard/templates/dashboard/_vm-mass-migrate.html:12 #: dashboard/templates/dashboard/_vm-mass-migrate.html:13
msgid "Reschedule" msgid "Reschedule"
msgstr "Újraütemezés" msgstr "Újraütemezés"
#: dashboard/templates/dashboard/_vm-mass-migrate.html:16 #: dashboard/templates/dashboard/_vm-mass-migrate.html:17
msgid "This option will reschedule each virtual machine to the optimal node." msgid "This option will reschedule each virtual machine to the optimal node."
msgstr "Ez a lehetőség minden virtuális gépet az optimális csomópontra migrál." msgstr "Ez a lehetőség minden virtuális gépet az optimális csomópontra migrál."
#: dashboard/templates/dashboard/_vm-mass-migrate.html:28 #: dashboard/templates/dashboard/_vm-mass-migrate.html:29
#: dashboard/templates/dashboard/_vm-migrate.html:27 #: dashboard/templates/dashboard/_vm-migrate.html:31
msgid "CPU load" msgid "CPU load"
msgstr "CPU-terhelés" msgstr "CPU-terhelés"
#: dashboard/templates/dashboard/_vm-mass-migrate.html:29 #: dashboard/templates/dashboard/_vm-mass-migrate.html:30
#: dashboard/templates/dashboard/_vm-migrate.html:28 #: dashboard/templates/dashboard/_vm-migrate.html:33
msgid "RAM usage" msgid "RAM usage"
msgstr "RAM-használat" msgstr "RAM-használat"
#: dashboard/templates/dashboard/_vm-migrate.html:7 #: dashboard/templates/dashboard/_vm-migrate.html:8
#, python-format #, python-format
msgid "" msgid ""
"\n" "\n"
...@@ -860,11 +928,11 @@ msgstr "" ...@@ -860,11 +928,11 @@ msgstr ""
"\n" "\n"
"Válasszon csomópontot %(obj)s migrálásához.\n" "Válasszon csomópontot %(obj)s migrálásához.\n"
#: dashboard/templates/dashboard/_vm-migrate.html:21 #: dashboard/templates/dashboard/_vm-migrate.html:24
msgid "current" msgid "current"
msgstr "jelenlegi" msgstr "jelenlegi"
#: dashboard/templates/dashboard/_vm-migrate.html:22 #: dashboard/templates/dashboard/_vm-migrate.html:25
msgid "recommended" msgid "recommended"
msgstr "javasolt" msgstr "javasolt"
...@@ -914,7 +982,7 @@ msgstr "Parancssablon létrehozása" ...@@ -914,7 +982,7 @@ msgstr "Parancssablon létrehozása"
#: dashboard/templates/dashboard/lease-create.html:13 #: dashboard/templates/dashboard/lease-create.html:13
#: dashboard/templates/dashboard/lease-edit.html:12 #: dashboard/templates/dashboard/lease-edit.html:12
#: dashboard/templates/dashboard/profile.html:19 #: dashboard/templates/dashboard/profile.html:19
#: dashboard/templates/dashboard/template-edit.html:14 #: dashboard/templates/dashboard/template-edit.html:15
#: dashboard/templates/dashboard/userkey-create.html:13 #: dashboard/templates/dashboard/userkey-create.html:13
#: dashboard/templates/dashboard/userkey-edit.html:14 #: dashboard/templates/dashboard/userkey-edit.html:14
#: dashboard/templates/dashboard/confirm/base-renew.html:26 #: dashboard/templates/dashboard/confirm/base-renew.html:26
...@@ -956,10 +1024,10 @@ msgstr "csoport" ...@@ -956,10 +1024,10 @@ msgstr "csoport"
#: dashboard/templates/dashboard/group-detail.html:33 #: dashboard/templates/dashboard/group-detail.html:33
#: dashboard/templates/dashboard/node-detail.html:13 #: dashboard/templates/dashboard/node-detail.html:13
#: dashboard/templates/dashboard/node-detail.html:21 #: dashboard/templates/dashboard/node-detail.html:21
#: dashboard/templates/dashboard/vm-detail.html:50 #: dashboard/templates/dashboard/vm-detail.html:63
#: dashboard/templates/dashboard/group-list/column-name.html:7 #: dashboard/templates/dashboard/group-list/column-name.html:7
#: dashboard/templates/dashboard/node-list/column-name.html:7 #: dashboard/templates/dashboard/node-list/column-name.html:7
#: dashboard/templates/dashboard/vm-detail/home.html:22 #: dashboard/templates/dashboard/vm-detail/home.html:24
#: dashboard/templates/dashboard/vm-list/column-name.html:7 #: dashboard/templates/dashboard/vm-list/column-name.html:7
msgid "Rename" msgid "Rename"
msgstr "Átnevezés" msgstr "Átnevezés"
...@@ -967,6 +1035,7 @@ msgstr "Átnevezés" ...@@ -967,6 +1035,7 @@ msgstr "Átnevezés"
#: dashboard/templates/dashboard/group-detail.html:12 #: dashboard/templates/dashboard/group-detail.html:12
#: dashboard/templates/dashboard/group-detail.html:37 #: dashboard/templates/dashboard/group-detail.html:37
#: dashboard/templates/dashboard/node-detail.html:14 #: dashboard/templates/dashboard/node-detail.html:14
#: dashboard/templates/dashboard/template-edit.html:75
#: dashboard/templates/dashboard/confirm/ajax-delete.html:18 #: dashboard/templates/dashboard/confirm/ajax-delete.html:18
#: dashboard/templates/dashboard/confirm/mass-delete.html:12 #: dashboard/templates/dashboard/confirm/mass-delete.html:12
#: dashboard/templates/dashboard/connect-command-list/column-command-actions.html:5 #: dashboard/templates/dashboard/connect-command-list/column-command-actions.html:5
...@@ -985,28 +1054,32 @@ msgid "Delete group." ...@@ -985,28 +1054,32 @@ msgid "Delete group."
msgstr "Csoport törlése." msgstr "Csoport törlése."
#: dashboard/templates/dashboard/group-detail.html:55 #: dashboard/templates/dashboard/group-detail.html:55
msgid "Available objects for this group"
msgstr "Csoport számára elérhető objektumok"
#: dashboard/templates/dashboard/group-detail.html:85
msgid "User list" msgid "User list"
msgstr "Felhasználók" msgstr "Felhasználók"
#: dashboard/templates/dashboard/group-detail.html:57 #: dashboard/templates/dashboard/group-detail.html:87
msgid "Create user" msgid "Create user"
msgstr "Új felhasználó" msgstr "Új felhasználó"
#: dashboard/templates/dashboard/group-detail.html:74 #: dashboard/templates/dashboard/group-detail.html:104
#: dashboard/templates/dashboard/group-detail.html:87 #: dashboard/templates/dashboard/group-detail.html:117
#: dashboard/templates/dashboard/vm-detail/network.html:27 #: dashboard/templates/dashboard/vm-detail/network.html:28
msgid "remove" msgid "remove"
msgstr "eltávolítás" msgstr "eltávolítás"
#: dashboard/templates/dashboard/group-detail.html:100 #: dashboard/templates/dashboard/group-detail.html:130
msgid "Add multiple users at once (one identifier per line)." msgid "Add multiple users at once (one identifier per line)."
msgstr "Több felhasználó hozzáadása (egy azonosító soronként)." msgstr "Több felhasználó hozzáadása (egy azonosító soronként)."
#: dashboard/templates/dashboard/group-detail.html:107 #: dashboard/templates/dashboard/group-detail.html:137
msgid "Access permissions" msgid "Access permissions"
msgstr "Hozzáférési jogosultságok" msgstr "Hozzáférési jogosultságok"
#: dashboard/templates/dashboard/group-detail.html:116 #: dashboard/templates/dashboard/group-detail.html:146
msgid "Group permissions" msgid "Group permissions"
msgstr "Csoportjogosultságok" msgstr "Csoportjogosultságok"
...@@ -1024,7 +1097,7 @@ msgstr "Azon csoportok, amelyekhez hozzáférése van." ...@@ -1024,7 +1097,7 @@ msgstr "Azon csoportok, amelyekhez hozzáférése van."
#: dashboard/templates/dashboard/index-groups.html:7 #: dashboard/templates/dashboard/index-groups.html:7
#: dashboard/templates/dashboard/profile.html:56 #: dashboard/templates/dashboard/profile.html:56
#: dashboard/templates/dashboard/vm-detail/network.html:37 #: dashboard/templates/dashboard/vm-detail/network.html:39
#: network/templates/network/host-edit.html:32 templates/info/help.html:192 #: network/templates/network/host-edit.html:32 templates/info/help.html:192
msgid "Groups" msgid "Groups"
msgstr "Csoportok" msgstr "Csoportok"
...@@ -1049,12 +1122,12 @@ msgstr[1] "" ...@@ -1049,12 +1122,12 @@ msgstr[1] ""
" " " "
#: dashboard/templates/dashboard/index-groups.html:36 #: dashboard/templates/dashboard/index-groups.html:36
#: dashboard/templates/dashboard/index-nodes.html:45 #: dashboard/templates/dashboard/index-nodes.html:74
#: dashboard/templates/dashboard/index-vm.html:73 #: dashboard/templates/dashboard/index-vm.html:73
msgid "list" msgid "list"
msgstr "felsorolás" msgstr "felsorolás"
#: dashboard/templates/dashboard/index-nodes.html:12 #: dashboard/templates/dashboard/index-nodes.html:11
msgid "" msgid ""
"List of compute nodes, also called worker nodes or hypervisors, which run " "List of compute nodes, also called worker nodes or hypervisors, which run "
"the virtual machines." "the virtual machines."
...@@ -1062,13 +1135,16 @@ msgstr "" ...@@ -1062,13 +1135,16 @@ msgstr ""
"A virtuális gépeket futtató számítási csomópontok (más néven worker node-ok, " "A virtuális gépeket futtató számítási csomópontok (más néven worker node-ok, "
"hypervisorok) listája." "hypervisorok) listája."
#: dashboard/templates/dashboard/index-nodes.html:15 #: dashboard/templates/dashboard/index-nodes.html:16
#: dashboard/templates/dashboard/node-list.html:5 #: dashboard/templates/dashboard/node-list.html:5
msgid "Nodes" msgid "Nodes"
msgstr "Csomópontok" msgstr "Csomópontok"
#: dashboard/templates/dashboard/index-nodes.html:43 #: dashboard/templates/dashboard/index-nodes.html:63
#: dashboard/templates/dashboard/index-nodes.html:70 msgid "Search"
msgstr "Keresés"
#: dashboard/templates/dashboard/index-nodes.html:72
#, python-format #, python-format
msgid "<strong>%(count)s</strong> more" msgid "<strong>%(count)s</strong> more"
msgstr "még <strong>%(count)s</strong>" msgstr "még <strong>%(count)s</strong>"
...@@ -1132,7 +1208,7 @@ msgid "Mark as favorite" ...@@ -1132,7 +1208,7 @@ msgid "Mark as favorite"
msgstr "Kedvencnek jelölés" msgstr "Kedvencnek jelölés"
#: dashboard/templates/dashboard/index-vm.html:43 #: dashboard/templates/dashboard/index-vm.html:43
#: dashboard/templates/dashboard/vm-list.html:124 #: dashboard/templates/dashboard/vm-list.html:135
msgid "You have no virtual machines." msgid "You have no virtual machines."
msgstr "Még nincs virtuális gépe." msgstr "Még nincs virtuális gépe."
...@@ -1195,14 +1271,14 @@ msgstr "Nincs jogosultsága virtuális gépek indítására vagy kezelésére." ...@@ -1195,14 +1271,14 @@ msgstr "Nincs jogosultsága virtuális gépek indítására vagy kezelésére."
#: dashboard/templates/dashboard/instanceactivity_detail.html:25 #: dashboard/templates/dashboard/instanceactivity_detail.html:25
#: dashboard/templates/dashboard/node-detail.html:82 #: dashboard/templates/dashboard/node-detail.html:82
#: dashboard/templates/dashboard/vm-detail.html:182 #: dashboard/templates/dashboard/vm-detail.html:196
#: dashboard/templates/dashboard/node-detail/activity.html:3 #: dashboard/templates/dashboard/node-detail/activity.html:3
#: dashboard/templates/dashboard/vm-detail/activity.html:3 #: dashboard/templates/dashboard/vm-detail/activity.html:3
msgid "Activity" msgid "Activity"
msgstr "Tevékenységek" msgstr "Tevékenységek"
#: dashboard/templates/dashboard/instanceactivity_detail.html:31 #: dashboard/templates/dashboard/instanceactivity_detail.html:31
#: vm/models/activity.py:71 vm/models/instance.py:282 vm/models/network.py:68 #: vm/models/activity.py:70 vm/models/instance.py:274 vm/models/network.py:67
msgid "instance" msgid "instance"
msgstr "példány" msgstr "példány"
...@@ -1242,6 +1318,20 @@ msgstr "állapot" ...@@ -1242,6 +1318,20 @@ msgstr "állapot"
msgid "resultant state" msgid "resultant state"
msgstr "új állapot" msgstr "új állapot"
#: dashboard/templates/dashboard/instanceactivity_detail.html:62
msgid "subactivities"
msgstr "altevékenységek"
#: dashboard/templates/dashboard/instanceactivity_detail.html:74
#: dashboard/templates/dashboard/node-detail/_activity-timeline.html:28
#: dashboard/templates/dashboard/vm-detail/_activity-timeline.html:48
msgid "failed"
msgstr "meghiúsult"
#: dashboard/templates/dashboard/instanceactivity_detail.html:78
msgid "none"
msgstr "nincs"
#: dashboard/templates/dashboard/lease-create.html:5 #: dashboard/templates/dashboard/lease-create.html:5
#: dashboard/templates/dashboard/lease-create.html:14 #: dashboard/templates/dashboard/lease-create.html:14
msgid "Create lease" msgid "Create lease"
...@@ -1253,7 +1343,7 @@ msgid "Edit lease" ...@@ -1253,7 +1343,7 @@ msgid "Edit lease"
msgstr "Bérlési mód szerkesztése" msgstr "Bérlési mód szerkesztése"
#: dashboard/templates/dashboard/lease-edit.html:27 #: dashboard/templates/dashboard/lease-edit.html:27
#: dashboard/templates/dashboard/template-edit.html:73 #: dashboard/templates/dashboard/template-edit.html:84
#: network/templates/network/vlan-edit.html:26 #: network/templates/network/vlan-edit.html:26
msgid "Manage access" msgid "Manage access"
msgstr "Jogosultságok kezelése" msgstr "Jogosultságok kezelése"
...@@ -1307,7 +1397,7 @@ msgid "Offline" ...@@ -1307,7 +1397,7 @@ msgid "Offline"
msgstr "Offline" msgstr "Offline"
#: dashboard/templates/dashboard/node-detail.html:63 #: dashboard/templates/dashboard/node-detail.html:63
#: dashboard/templates/dashboard/vm-detail.html:158 #: dashboard/templates/dashboard/vm-detail.html:172
msgid "Home" msgid "Home"
msgstr "Kezdőoldal" msgstr "Kezdőoldal"
...@@ -1431,24 +1521,27 @@ msgid "Command templates" ...@@ -1431,24 +1521,27 @@ msgid "Command templates"
msgstr "Parancssablonok" msgstr "Parancssablonok"
#: dashboard/templates/dashboard/template-edit.html:6 #: dashboard/templates/dashboard/template-edit.html:6
#: vm/models/instance.py:167 vm/models/instance.py:240 vm/models/network.py:45 #: vm/models/instance.py:158 vm/models/instance.py:231 vm/models/network.py:44
msgid "template" msgid "template"
msgstr "sablon" msgstr "sablon"
#: dashboard/templates/dashboard/template-edit.html:15 #: dashboard/templates/dashboard/template-edit.html:17
msgid "Edit template" msgid "Edit template"
msgstr "Sablon szerkesztése" msgstr "Sablon szerkesztése"
#: dashboard/templates/dashboard/template-edit.html:32 #: dashboard/templates/dashboard/template-edit.html:29
msgid "Visit" msgid "Parent template"
msgstr "Megtekintés" msgstr "Szülősablon"
#: dashboard/templates/dashboard/template-edit.html:83 #: dashboard/templates/dashboard/template-edit.html:77
msgid "Delete template"
msgstr "Sablon törlése"
#: dashboard/templates/dashboard/template-edit.html:94
msgid "Disk list" msgid "Disk list"
msgstr "Lemezek" msgstr "Lemezek"
#: dashboard/templates/dashboard/template-edit.html:88 #: dashboard/templates/dashboard/template-edit.html:99
#: dashboard/templates/dashboard/vm-detail/resources.html:39
msgid "No disks are added!" msgid "No disks are added!"
msgstr "Egy lemez sincs hozzáadva!" msgstr "Egy lemez sincs hozzáadva!"
...@@ -1478,131 +1571,135 @@ msgstr "SSH publikus kulcs létrehozása" ...@@ -1478,131 +1571,135 @@ msgstr "SSH publikus kulcs létrehozása"
msgid "Edit SSH public key" msgid "Edit SSH public key"
msgstr "SSH publikus kulcs módosítása" msgstr "SSH publikus kulcs módosítása"
#: dashboard/templates/dashboard/vm-detail.html:10 #: dashboard/templates/dashboard/vm-detail.html:18
msgid "This is the master vm of your new template" msgid "Toggle tutorial panel"
msgstr "Ez a mesterpéldány egy új sablonhoz" msgstr "Kalauz engedélyezése/tiltása"
#: dashboard/templates/dashboard/vm-detail.html:13 #: dashboard/templates/dashboard/vm-detail.html:23
msgid "Start template tutorial" msgid "Start template tutorial"
msgstr "Sablon-kalauz indítása" msgstr "Sablon-kalauz indítása"
#: dashboard/templates/dashboard/vm-detail.html:17 #: dashboard/templates/dashboard/vm-detail.html:26
msgid "This is the master vm of your new template"
msgstr "Ez a mesterpéldány egy új sablonhoz"
#: dashboard/templates/dashboard/vm-detail.html:28
msgid "" msgid ""
"Modify the virtual machine to suit your needs <strong>(optional)</strong>" "Modify the virtual machine to suit your needs <strong>(optional)</strong>"
msgstr "Módosítsa a virtuális gépet <strong>(igény szerint)</strong>" msgstr "Módosítsa a virtuális gépet <strong>(igény szerint)</strong>"
#: dashboard/templates/dashboard/vm-detail.html:19 #: dashboard/templates/dashboard/vm-detail.html:30
msgid "Change the description" msgid "Change the description"
msgstr "Változtassa meg a leírást" msgstr "Változtassa meg a leírást"
#: dashboard/templates/dashboard/vm-detail.html:20 #: dashboard/templates/dashboard/vm-detail.html:31
msgid "Change resources (CPU and RAM)" msgid "Change resources (CPU and RAM)"
msgstr "Állítsa be az erőforrásokat (CPU és memória)" msgstr "Állítsa be az erőforrásokat (CPU és memória)"
#: dashboard/templates/dashboard/vm-detail.html:21 #: dashboard/templates/dashboard/vm-detail.html:32
msgid "Attach or detach disks" msgid "Attach or detach disks"
msgstr "Csatoljon vagy válasszon le lemezeket" msgstr "Csatoljon vagy válasszon le lemezeket"
#: dashboard/templates/dashboard/vm-detail.html:22 #: dashboard/templates/dashboard/vm-detail.html:33
msgid "Add or remove network interfaces" msgid "Add or remove network interfaces"
msgstr "Adjon hozz vagy törljön hálózati interfészeket" msgstr "Adjon hozz vagy törljön hálózati interfészeket"
#: dashboard/templates/dashboard/vm-detail.html:25 #: dashboard/templates/dashboard/vm-detail.html:36
msgid "Deploy the virtual machine" msgid "Deploy the virtual machine"
msgstr "Indítsa el a virtuális gépet" msgstr "Indítsa el a virtuális gépet"
#: dashboard/templates/dashboard/vm-detail.html:26 #: dashboard/templates/dashboard/vm-detail.html:37
msgid "Connect to the machine" msgid "Connect to the machine"
msgstr "Csatlakozzon a géphez" msgstr "Csatlakozzon a géphez"
#: dashboard/templates/dashboard/vm-detail.html:27 #: dashboard/templates/dashboard/vm-detail.html:38
msgid "Do all the needed installations/customizations" msgid "Do all the needed installations/customizations"
msgstr "Végezze el a szükséges telepítéseket, testreszabásokat" msgstr "Végezze el a szükséges telepítéseket, testreszabásokat"
#: dashboard/templates/dashboard/vm-detail.html:28 #: dashboard/templates/dashboard/vm-detail.html:39
msgid "Log off from the machine" msgid "Log off from the machine"
msgstr "Jelentkezzen ki a gépből" msgstr "Jelentkezzen ki a gépből"
#: dashboard/templates/dashboard/vm-detail.html:30 #: dashboard/templates/dashboard/vm-detail.html:41
msgid "Press the Save as template button" msgid "Press the Save as template button"
msgstr "Kattintson a Mentés sablonként gombra" msgstr "Kattintson a Mentés sablonként gombra"
#: dashboard/templates/dashboard/vm-detail.html:33 #: dashboard/templates/dashboard/vm-detail.html:44
msgid "Delete this virtual machine <strong>(optional)</strong>" msgid "Delete this virtual machine <strong>(optional)</strong>"
msgstr "Törölje a virtális gépet <strong>(ha szükséges)</strong>" msgstr "Törölje a virtális gépet <strong>(ha szükséges)</strong>"
#: dashboard/templates/dashboard/vm-detail.html:74 #: dashboard/templates/dashboard/vm-detail.html:88
msgid "Connection details" msgid "Connection details"
msgstr "Kapcsolat részletei" msgstr "Kapcsolat részletei"
#: dashboard/templates/dashboard/vm-detail.html:76 #: dashboard/templates/dashboard/vm-detail.html:90
msgid "Protocol" msgid "Protocol"
msgstr "Protokoll" msgstr "Protokoll"
#: dashboard/templates/dashboard/vm-detail.html:83 #: dashboard/templates/dashboard/vm-detail.html:97
msgid "The VM doesn't have any network interface." msgid "The VM doesn't have any network interface."
msgstr "A VM-nek nincs hálózati interfésze." msgstr "A VM-nek nincs hálózati interfésze."
#: dashboard/templates/dashboard/vm-detail.html:85 #: dashboard/templates/dashboard/vm-detail.html:99
msgid "The required port for this protocol is not forwarded." msgid "The required port for this protocol is not forwarded."
msgstr "A csatlakozáshoz szükséges port nincs továbbítva." msgstr "A csatlakozáshoz szükséges port nincs továbbítva."
#: dashboard/templates/dashboard/vm-detail.html:90 #: dashboard/templates/dashboard/vm-detail.html:104
msgid "Host (IPv6)" msgid "Host (IPv6)"
msgstr "Gép (IPv6)" msgstr "Gép (IPv6)"
#: dashboard/templates/dashboard/vm-detail.html:102 #: dashboard/templates/dashboard/vm-detail.html:116
msgid "Show password" msgid "Show password"
msgstr "Jelszó megjelenítése" msgstr "Jelszó megjelenítése"
#: dashboard/templates/dashboard/vm-detail.html:110 #: dashboard/templates/dashboard/vm-detail.html:124
msgid "Start the VM to change the password." msgid "Start the VM to change the password."
msgstr "Jelszóváltoztatáshoz el kell indítani a gépet." msgstr "Jelszóváltoztatáshoz el kell indítani a gépet."
#: dashboard/templates/dashboard/vm-detail.html:110 #: dashboard/templates/dashboard/vm-detail.html:124
msgid "Generate new password!" msgid "Generate new password!"
msgstr "Új jelszó generálása" msgstr "Új jelszó generálása"
#: dashboard/templates/dashboard/vm-detail.html:117 #: dashboard/templates/dashboard/vm-detail.html:131
#: dashboard/templates/dashboard/vm-detail.html:129 #: dashboard/templates/dashboard/vm-detail.html:143
msgid "Command" msgid "Command"
msgstr "Parancs" msgstr "Parancs"
#: dashboard/templates/dashboard/vm-detail.html:122 #: dashboard/templates/dashboard/vm-detail.html:136
#: dashboard/templates/dashboard/vm-detail.html:133 #: dashboard/templates/dashboard/vm-detail.html:147
#: dashboard/templates/dashboard/vm-list.html:22 #: dashboard/templates/dashboard/vm-list.html:22
msgid "Select all" msgid "Select all"
msgstr "Összes kiválasztása" msgstr "Összes kiválasztása"
#: dashboard/templates/dashboard/vm-detail.html:130 #: dashboard/templates/dashboard/vm-detail.html:144
msgid "Connection is not possible." msgid "Connection is not possible."
msgstr "A csatlakozás nem lehetséges." msgstr "A csatlakozás nem lehetséges."
#: dashboard/templates/dashboard/vm-detail.html:140 #: dashboard/templates/dashboard/vm-detail.html:154
msgid "Connect via the CIRCLE Client" msgid "Connect via the CIRCLE Client"
msgstr "Csatlakozás CIRCLE klienssel" msgstr "Csatlakozás CIRCLE klienssel"
#: dashboard/templates/dashboard/vm-detail.html:141 #: dashboard/templates/dashboard/vm-detail.html:155
msgid "Connect" msgid "Connect"
msgstr "Csatlakozás" msgstr "Csatlakozás"
#: dashboard/templates/dashboard/vm-detail.html:143 #: dashboard/templates/dashboard/vm-detail.html:157
msgid "Download client" msgid "Download client"
msgstr "Kliens letöltése" msgstr "Kliens letöltése"
#: dashboard/templates/dashboard/vm-detail.html:145 #: dashboard/templates/dashboard/vm-detail.html:159
msgid "Download the CIRCLE Client" msgid "Download the CIRCLE Client"
msgstr "A CIRCLE kliens letöltése" msgstr "A CIRCLE kliens letöltése"
#: dashboard/templates/dashboard/vm-detail.html:146 #: dashboard/templates/dashboard/vm-detail.html:160
msgid "Connect (download client)" msgid "Connect (download client)"
msgstr "Csatlakozás (kliens letöltése)" msgstr "Csatlakozás (kliens letöltése)"
#: dashboard/templates/dashboard/vm-detail.html:168 #: dashboard/templates/dashboard/vm-detail.html:182
msgid "Console" msgid "Console"
msgstr "Konzol" msgstr "Konzol"
#: dashboard/templates/dashboard/vm-detail.html:172 #: dashboard/templates/dashboard/vm-detail.html:186
msgid "Access" msgid "Access"
msgstr "Hozzáférés" msgstr "Hozzáférés"
...@@ -1626,15 +1723,15 @@ msgstr "ID" ...@@ -1626,15 +1723,15 @@ msgstr "ID"
msgid "State" msgid "State"
msgstr "Állapot" msgstr "Állapot"
#: dashboard/templates/dashboard/vm-list.html:77 #: dashboard/templates/dashboard/vm-list.html:81
msgid "IP address" msgid "IP address"
msgstr "IP cím" msgstr "IP cím"
#: dashboard/templates/dashboard/vm-list.html:122 #: dashboard/templates/dashboard/vm-list.html:133
msgid "No result." msgid "No result."
msgstr "Nincs eredmény." msgstr "Nincs eredmény."
#: dashboard/templates/dashboard/vm-list.html:141 #: dashboard/templates/dashboard/vm-list.html:152
msgid "" msgid ""
"You can select multiple vm instances while holding down the <strong>CTRL</" "You can select multiple vm instances while holding down the <strong>CTRL</"
"strong> key." "strong> key."
...@@ -1642,7 +1739,7 @@ msgstr "" ...@@ -1642,7 +1739,7 @@ msgstr ""
"Több virtuális gépet is kiválaszthat a <strong>CTRL</strong> billentyű " "Több virtuális gépet is kiválaszthat a <strong>CTRL</strong> billentyű "
"lenyomásával." "lenyomásával."
#: dashboard/templates/dashboard/vm-list.html:142 #: dashboard/templates/dashboard/vm-list.html:153
msgid "" msgid ""
"If you want to select multiple instances by one click select an instance " "If you want to select multiple instances by one click select an instance "
"then hold down <strong>SHIFT</strong> key and select another one!" "then hold down <strong>SHIFT</strong> key and select another one!"
...@@ -1990,7 +2087,7 @@ msgstr "Felsorolás" ...@@ -1990,7 +2087,7 @@ msgstr "Felsorolás"
#: dashboard/templates/dashboard/store/list.html:4 #: dashboard/templates/dashboard/store/list.html:4
#: dashboard/templates/dashboard/store/upload.html:4 #: dashboard/templates/dashboard/store/upload.html:4
#: dashboard/templates/dashboard/vm-detail/home.html:111 #: dashboard/templates/dashboard/vm-detail/home.html:146
msgid "Store" msgid "Store"
msgstr "Tárhely" msgstr "Tárhely"
...@@ -2025,10 +2122,6 @@ msgstr "Fájl törlésének megerősítése" ...@@ -2025,10 +2122,6 @@ msgstr "Fájl törlésének megerősítése"
msgid "File directory" msgid "File directory"
msgstr "Fájl helye" msgstr "Fájl helye"
#: dashboard/templates/dashboard/store/remove.html:20
msgid "File name"
msgstr "Fájlnév"
#: dashboard/templates/dashboard/store/remove.html:22 #: dashboard/templates/dashboard/store/remove.html:22
#, python-format #, python-format
msgid "" msgid ""
...@@ -2077,19 +2170,19 @@ msgstr[1] "" ...@@ -2077,19 +2170,19 @@ msgstr[1] ""
"\n" "\n"
" %(num_cores)s CPU mag\n" " %(num_cores)s CPU mag\n"
#: dashboard/templates/dashboard/vm-detail/_activity-timeline.html:29 #: dashboard/templates/dashboard/vm-detail/_activity-timeline.html:31
msgid "Abort" msgid "Abort"
msgstr "Megszakítás" msgstr "Megszakítás"
#: dashboard/templates/dashboard/vm-detail/_activity-timeline.html:59 #: dashboard/templates/dashboard/vm-detail/_activity-timeline.html:62
msgid "Show less activities" msgid "Show less activities"
msgstr "Kevesebb tevékenység megjelenítése" msgstr "Kevesebb tevékenység megjelenítése"
#: dashboard/templates/dashboard/vm-detail/_activity-timeline.html:61 #: dashboard/templates/dashboard/vm-detail/_activity-timeline.html:64
msgid "Show all activities" msgid "Show all activities"
msgstr "Összes tevékenység megjelenítése" msgstr "Összes tevékenység megjelenítése"
#: dashboard/templates/dashboard/vm-detail/_network-port-add.html:14 #: dashboard/templates/dashboard/vm-detail/_network-port-add.html:15
msgid "Add" msgid "Add"
msgstr "Hozzáadás" msgstr "Hozzáadás"
...@@ -2137,35 +2230,35 @@ msgstr "Bezárás" ...@@ -2137,35 +2230,35 @@ msgstr "Bezárás"
msgid "System" msgid "System"
msgstr "Rendszer" msgstr "Rendszer"
#: dashboard/templates/dashboard/vm-detail/home.html:42 #: dashboard/templates/dashboard/vm-detail/home.html:48
msgid "Update" msgid "Update"
msgstr "Frissítés" msgstr "Frissítés"
#: dashboard/templates/dashboard/vm-detail/home.html:49 #: dashboard/templates/dashboard/vm-detail/home.html:57
msgid "Expiration" msgid "Expiration"
msgstr "Lejárat" msgstr "Lejárat"
#: dashboard/templates/dashboard/vm-detail/home.html:60 #: dashboard/templates/dashboard/vm-detail/home.html:69
msgid "Suspended at:" msgid "Suspended at:"
msgstr "Felfüggesztve:" msgstr "Felfüggesztve:"
#: dashboard/templates/dashboard/vm-detail/home.html:62 #: dashboard/templates/dashboard/vm-detail/home.html:75
msgid "Destroyed at:" msgid "Destroyed at:"
msgstr "Megsemmisítve:" msgstr "Megsemmisítve:"
#: dashboard/templates/dashboard/vm-detail/home.html:66 #: dashboard/templates/dashboard/vm-detail/home.html:84
msgid "Tags" msgid "Tags"
msgstr "Címkék" msgstr "Címkék"
#: dashboard/templates/dashboard/vm-detail/home.html:77 #: dashboard/templates/dashboard/vm-detail/home.html:97
msgid "No tag added!" msgid "No tag added."
msgstr "Nincs címke." msgstr "Nincs címke."
#: dashboard/templates/dashboard/vm-detail/home.html:88 #: dashboard/templates/dashboard/vm-detail/home.html:109
msgid "Add tag" msgid "Add tag"
msgstr "Címke hozzáadása" msgstr "Címke hozzáadása"
#: dashboard/templates/dashboard/vm-detail/network.html:8 vm/operations.py:123 #: dashboard/templates/dashboard/vm-detail/network.html:8 vm/operations.py:201
msgid "add interface" msgid "add interface"
msgstr "új interfész" msgstr "új interfész"
...@@ -2181,35 +2274,35 @@ msgstr "nem menedzselt" ...@@ -2181,35 +2274,35 @@ msgstr "nem menedzselt"
msgid "edit" msgid "edit"
msgstr "szerkesztés" msgstr "szerkesztés"
#: dashboard/templates/dashboard/vm-detail/network.html:34 #: dashboard/templates/dashboard/vm-detail/network.html:36
#: firewall/models.py:482 #: firewall/models.py:482
msgid "IPv4 address" msgid "IPv4 address"
msgstr "IPv4 cím" msgstr "IPv4 cím"
#: dashboard/templates/dashboard/vm-detail/network.html:35 #: dashboard/templates/dashboard/vm-detail/network.html:37
#: firewall/models.py:492 #: firewall/models.py:492
msgid "IPv6 address" msgid "IPv6 address"
msgstr "IPv6 cím" msgstr "IPv6 cím"
#: dashboard/templates/dashboard/vm-detail/network.html:36 #: dashboard/templates/dashboard/vm-detail/network.html:38
msgid "DNS name" msgid "DNS name"
msgstr "DNS név" msgstr "DNS név"
#: dashboard/templates/dashboard/vm-detail/network.html:49 #: dashboard/templates/dashboard/vm-detail/network.html:51
#: network/forms.py:246 #: network/forms.py:246
msgid "IPv4" msgid "IPv4"
msgstr "IPv4" msgstr "IPv4"
#: dashboard/templates/dashboard/vm-detail/network.html:50 #: dashboard/templates/dashboard/vm-detail/network.html:52
#: network/forms.py:253 #: network/forms.py:253
msgid "IPv6" msgid "IPv6"
msgstr "IPv6" msgstr "IPv6"
#: dashboard/templates/dashboard/vm-detail/network.html:52 #: dashboard/templates/dashboard/vm-detail/network.html:54
msgid "Port access" msgid "Port access"
msgstr "Portok elérése" msgstr "Portok elérése"
#: dashboard/templates/dashboard/vm-detail/network.html:119 #: dashboard/templates/dashboard/vm-detail/network.html:121
msgid "This VM doesn't have an IPv6 address!" msgid "This VM doesn't have an IPv6 address!"
msgstr "A VM-nek nincs IPv6 címe." msgstr "A VM-nek nincs IPv6 címe."
...@@ -2226,11 +2319,11 @@ msgstr "Erőforrások mentése" ...@@ -2226,11 +2319,11 @@ msgstr "Erőforrások mentése"
msgid "Stop your VM to change resources." msgid "Stop your VM to change resources."
msgstr "Állítsa le a VM-et az erőforrások módosításához." msgstr "Állítsa le a VM-et az erőforrások módosításához."
#: dashboard/templates/dashboard/vm-detail/resources.html:57 #: dashboard/templates/dashboard/vm-detail/resources.html:51
msgid "Required traits" msgid "Required traits"
msgstr "Elvárt jellemzők" msgstr "Elvárt jellemzők"
#: dashboard/templates/dashboard/vm-detail/resources.html:69 #: dashboard/templates/dashboard/vm-detail/resources.html:63
msgid "Raw data" msgid "Raw data"
msgstr "Nyers adat" msgstr "Nyers adat"
...@@ -2254,121 +2347,146 @@ msgstr "példányok száma" ...@@ -2254,121 +2347,146 @@ msgstr "példányok száma"
msgid "Allocated memory (bytes)" msgid "Allocated memory (bytes)"
msgstr "Foglalt memória (byte)" msgstr "Foglalt memória (byte)"
#: dashboard/views/group.py:140 #: dashboard/views/group.py:150
#, python-format #, python-format
msgid "User \"%s\" not found." msgid "User \"%s\" not found."
msgstr "Nem található „%s” felhasználó." msgstr "Nem található „%s” felhasználó."
#: dashboard/views/group.py:154 #: dashboard/views/group.py:164
msgid "Group successfully renamed." msgid "Group successfully renamed."
msgstr "A csoport átnevezésre került." msgstr "A csoport átnevezésre került."
#: dashboard/views/group.py:261 #: dashboard/views/group.py:268
msgid "Member successfully removed from group." msgid "Member successfully removed from group."
msgstr "A csoporttag eltávolításra került." msgstr "A csoporttag eltávolításra került."
#: dashboard/views/group.py:302 #: dashboard/views/group.py:309
msgid "Future user successfully removed from group." msgid "Future user successfully removed from group."
msgstr "A leendő csoporttag eltávolításra került." msgstr "A leendő csoporttag eltávolításra került."
#: dashboard/views/group.py:329 #: dashboard/views/group.py:336
msgid "Group successfully deleted." msgid "Group successfully deleted."
msgstr "A csoport törlésre került." msgstr "A csoport törlésre került."
#: dashboard/views/group.py:369 #: dashboard/views/group.py:376
msgid "Create a Group" msgid "Create a Group"
msgstr "Csoport létrehozása" msgstr "Csoport létrehozása"
#: dashboard/views/group.py:385 #: dashboard/views/group.py:392
msgid "Group successfully created." msgid "Group successfully created."
msgstr "A csoport létrehozásra került." msgstr "A csoport létrehozásra került."
#: dashboard/views/group.py:399 #: dashboard/views/group.py:406
msgid "Group is successfully updated." msgid "Group is successfully updated."
msgstr "A csoport frissítésre került." msgstr "A csoport frissítésre került."
#: dashboard/views/node.py:112 #: dashboard/views/node.py:114
msgid "Node successfully renamed." msgid "Node successfully renamed."
msgstr "A csomópont átnevezésre került." msgstr "A csomópont átnevezésre került."
#: dashboard/views/node.py:220 #: dashboard/views/node.py:222
msgid "Node successfully created." msgid "Node successfully created."
msgstr "A csomópont létrehozásra került." msgstr "A csomópont létrehozásra került."
#: dashboard/views/node.py:248 #: dashboard/views/node.py:250
msgid "Node successfully deleted." msgid "Node successfully deleted."
msgstr "A csomópont törlésre került." msgstr "A csomópont törlésre került."
#: dashboard/views/node.py:295 #: dashboard/views/node.py:297
msgid "Trait successfully added to node." msgid "Trait successfully added to node."
msgstr "A csomópontjellemző hozzáadásra került." msgstr "A csomópontjellemző hozzáadásra került."
#: dashboard/views/node.py:340 #: dashboard/views/node.py:342
msgid "Node successfully changed status." msgid "Node successfully changed status."
msgstr "A csomópont állapota megváltoztatásra került." msgstr "A csomópont állapota megváltoztatásra került."
#: dashboard/views/store.py:72 #: dashboard/views/store.py:73
msgid "No store." msgid "No store."
msgstr "Nincs tárhely." msgstr "Nincs tárhely."
#: dashboard/views/store.py:74 #: dashboard/views/store.py:75
msgid "Store has some problems now. Try again later." msgid "Store has some problems now. Try again later."
msgstr "A tárhely nem működik. Próbálja később." msgstr "A tárhely nem működik. Próbálja később."
#: dashboard/views/store.py:78 #: dashboard/views/store.py:79
msgid "Unknown store error." msgid "Unknown store error."
msgstr "Ismeretlen tárhelyhiba." msgstr "Ismeretlen tárhelyhiba."
#: dashboard/views/store.py:95 #: dashboard/views/store.py:96
msgid "Something went wrong during download." msgid "Something went wrong during download."
msgstr "Hiba a letöltésben." msgstr "Hiba a letöltésben."
#: dashboard/views/store.py:110 dashboard/views/store.py:130 #: dashboard/views/store.py:111 dashboard/views/store.py:131
msgid "Unable to upload file." msgid "Unable to upload file."
msgstr "Fájl feltöltése sikertelen." msgstr "Fájl feltöltése sikertelen."
#: dashboard/views/store.py:167 #: dashboard/views/store.py:168
#, python-format #, python-format
msgid "Unable to remove %s." msgid "Unable to remove %s."
msgstr "%s törlése sikertelen." msgstr "%s törlése sikertelen."
#: dashboard/views/store.py:186 #: dashboard/views/store.py:187
msgid "Unable to create folder." msgid "Unable to create folder."
msgstr "Mappa létrehozása sikertelen." msgstr "Mappa létrehozása sikertelen."
#: dashboard/views/template.py:64 #: dashboard/views/template.py:65
msgid "Choose template" msgid "Choose template"
msgstr "Válasszon sablont" msgstr "Válasszon sablont"
#: dashboard/views/template.py:79 #: dashboard/views/template.py:80
msgid "Select an option to proceed." msgid "Select an option to proceed."
msgstr "Válasszon a folytatáshoz." msgstr "Válasszon a folytatáshoz."
#: dashboard/views/template.py:110 #: dashboard/views/template.py:111
msgid "Create a new base VM" msgid "Create a new base VM"
msgstr "Alap VM létrehozása" msgstr "Alap VM létrehozása"
#: dashboard/views/template.py:225 #: dashboard/views/template.py:226
msgid "Error during filtering." msgid "Error during filtering."
msgstr "A szűrés sikertelen." msgstr "A szűrés sikertelen."
#: dashboard/views/template.py:250 #: dashboard/views/template.py:245
msgid "Only the owners can delete the selected template."
msgstr "A kiválasztott sablont csak a tulajdonosok törölhetik."
#: dashboard/views/template.py:261
msgid "Template successfully deleted." msgid "Template successfully deleted."
msgstr "A sablon törlésre került." msgstr "A sablon törlésre került."
#: dashboard/views/template.py:266 #: dashboard/views/template.py:277
msgid "Successfully modified template." msgid "Successfully modified template."
msgstr "A sablon módosításra került." msgstr "A sablon módosításra került."
#: dashboard/views/template.py:327 #: dashboard/views/template.py:352
msgid "Disk remove confirmation"
msgstr "Lemez törlésének megerősítése"
#: dashboard/views/template.py:353
#, python-format
msgid ""
"Are you sure you want to remove <strong>%(disk)s</strong> from <strong>"
"%(app)s</strong>?"
msgstr ""
"Biztosan eltávolítja a(z) <strong>%(disk)s</strong> lemezt a következőből: "
"%(app)s?"
#: dashboard/views/template.py:372
msgid "Disk successfully removed."
msgstr "A lemez eltávolításra került."
#: dashboard/views/template.py:390
msgid "Successfully created a new lease." msgid "Successfully created a new lease."
msgstr "Új bérlési mód létrehozásra került." msgstr "Új bérlési mód létrehozásra került."
#: dashboard/views/template.py:342 #: dashboard/views/template.py:409
msgid "Successfully modified lease." msgid "Successfully modified lease."
msgstr "A bérlési mód megváltoztatásra került." msgstr "A bérlési mód megváltoztatásra került."
#: dashboard/views/template.py:372 #: dashboard/views/template.py:423
msgid "Only the owners can modify the selected lease."
msgstr "Csak a tulajdonosai törölhetik a kiválasztott bérleti módot."
#: dashboard/views/template.py:452
msgid "" msgid ""
"You can't delete this lease because some templates are still using it, " "You can't delete this lease because some templates are still using it, "
"modify these to proceed: " "modify these to proceed: "
...@@ -2376,7 +2494,11 @@ msgstr "" ...@@ -2376,7 +2494,11 @@ msgstr ""
"Nem törölhető a bérleti mód, mivel az alábbi sablonok még használják. A " "Nem törölhető a bérleti mód, mivel az alábbi sablonok még használják. A "
"folytatáshoz módosítsa őket: " "folytatáshoz módosítsa őket: "
#: dashboard/views/template.py:389 #: dashboard/views/template.py:463
msgid "Only the owners can delete the selected lease."
msgstr "Csak a tulajdonos törölheti a kiválasztott bérleti módot."
#: dashboard/views/template.py:481
msgid "Lease successfully deleted." msgid "Lease successfully deleted."
msgstr "A bérlési mód törlésre került." msgstr "A bérlési mód törlésre került."
...@@ -2393,27 +2515,27 @@ msgstr "Nincs profilja." ...@@ -2393,27 +2515,27 @@ msgstr "Nincs profilja."
msgid "Successfully modified subscription." msgid "Successfully modified subscription."
msgstr "A feliratkozás módosításra került." msgstr "A feliratkozás módosításra került."
#: dashboard/views/user.py:350 #: dashboard/views/user.py:369
msgid "Successfully modified SSH key." msgid "Successfully modified SSH key."
msgstr "Az SSH kulcs módosításra került." msgstr "Az SSH kulcs módosításra került."
#: dashboard/views/user.py:388 #: dashboard/views/user.py:407
msgid "SSH key successfully deleted." msgid "SSH key successfully deleted."
msgstr "Az SSH kulcs törlésre került." msgstr "Az SSH kulcs törlésre került."
#: dashboard/views/user.py:404 #: dashboard/views/user.py:423
msgid "Successfully created a new SSH key." msgid "Successfully created a new SSH key."
msgstr "Az új SSH kulcs hozzáadásra került." msgstr "Az új SSH kulcs hozzáadásra került."
#: dashboard/views/user.py:420 #: dashboard/views/user.py:439
msgid "Successfully modified command template." msgid "Successfully modified command template."
msgstr "A parancssablon módosításra került." msgstr "A parancssablon módosításra került."
#: dashboard/views/user.py:463 #: dashboard/views/user.py:482
msgid "Command template successfully deleted." msgid "Command template successfully deleted."
msgstr "A parancssablon törlésre került." msgstr "A parancssablon törlésre került."
#: dashboard/views/user.py:480 #: dashboard/views/user.py:499
msgid "Successfully created a new command template." msgid "Successfully created a new command template."
msgstr "A parancssablon létrehozásra került." msgstr "A parancssablon létrehozásra került."
...@@ -2448,170 +2570,153 @@ msgstr "A(z) %(w)s ACL felhasználó/csoport hozzáadásra került." ...@@ -2448,170 +2570,153 @@ msgstr "A(z) %(w)s ACL felhasználó/csoport hozzáadásra került."
msgid "Acl user/group %(w)s successfully removed." msgid "Acl user/group %(w)s successfully removed."
msgstr "A(z) %(w)s ACL felhasználó/csoport törlésre került." msgstr "A(z) %(w)s ACL felhasználó/csoport törlésre került."
#: dashboard/views/util.py:474 #: dashboard/views/util.py:475
msgid "" msgid ""
"The original owner cannot be removed, however you can transfer ownership." "The original owner cannot be removed, however you can transfer ownership."
msgstr "Az eredeti tulajdonos nem törölhető, azonban a tulajdon átruházható." msgstr "Az eredeti tulajdonos nem törölhető, azonban a tulajdon átruházható."
#: dashboard/views/util.py:510 #: dashboard/views/util.py:511
#, python-format #, python-format
msgid "User \"%s\" has already access to this object." msgid "User \"%s\" has already access to this object."
msgstr "„%s” felhasználó már hozzáfér az objektumhoz." msgstr "„%s” felhasználó már hozzáfér az objektumhoz."
#: dashboard/views/util.py:519 #: dashboard/views/util.py:520
#, python-format #, python-format
msgid "Group \"%s\" has already access to this object." msgid "Group \"%s\" has already access to this object."
msgstr "„%s” csoport már hozzáfér az objektumhoz." msgstr "„%s” csoport már hozzáfér az objektumhoz."
#: dashboard/views/util.py:524 #: dashboard/views/util.py:525
#, python-format #, python-format
msgid "User or group \"%s\" not found." msgid "User or group \"%s\" not found."
msgstr "Nem található „%s” felhasználó vagy csoport." msgstr "Nem található „%s” felhasználó vagy csoport."
#: dashboard/views/util.py:540 #: dashboard/views/util.py:541
msgid "1 hour" msgid "1 hour"
msgstr "1 óra" msgstr "1 óra"
#: dashboard/views/util.py:541 #: dashboard/views/util.py:542
msgid "6 hours" msgid "6 hours"
msgstr "6 óra" msgstr "6 óra"
#: dashboard/views/util.py:542 #: dashboard/views/util.py:543
msgid "1 day" msgid "1 day"
msgstr "1 nap" msgstr "1 nap"
#: dashboard/views/util.py:543 #: dashboard/views/util.py:544
msgid "1 week" msgid "1 week"
msgstr "1 hét" msgstr "1 hét"
#: dashboard/views/util.py:544 #: dashboard/views/util.py:545
msgid "1 month" msgid "1 month"
msgstr "1 hónap" msgstr "1 hónap"
#: dashboard/views/util.py:545 #: dashboard/views/util.py:546
msgid "6 months" msgid "6 months"
msgstr "6 hónap" msgstr "6 hónap"
#: dashboard/views/util.py:554 #: dashboard/views/util.py:555
msgid "Bad graph time format, available periods are: h, d, w, and y." msgid "Bad graph time format, available periods are: h, d, w, and y."
msgstr "Hibás grafikon időformátum. Lehetséges egységek: h, d, w és y." msgstr "Hibás grafikon időformátum. Lehetséges egységek: h, d, w és y."
#: dashboard/views/vm.py:82 #: dashboard/views/vm.py:84
msgid "console access" msgid "console access"
msgstr "konzolhozzáférés" msgstr "konzolhozzáférés"
#: dashboard/views/vm.py:183 #: dashboard/views/vm.py:193
msgid "VM successfully renamed." msgid "VM successfully renamed."
msgstr "A virtuális gép átnevezésre került." msgstr "A virtuális gép átnevezésre került."
#: dashboard/views/vm.py:207 #: dashboard/views/vm.py:217
msgid "VM description successfully updated." msgid "VM description successfully updated."
msgstr "A VM leírása megváltoztatásra került." msgstr "A VM leírása megváltoztatásra került."
#: dashboard/views/vm.py:284 #: dashboard/views/vm.py:294
msgid "There is a problem with your input." msgid "There is a problem with your input."
msgstr "A megadott érték nem megfelelő." msgstr "A megadott érték nem megfelelő."
#: dashboard/views/vm.py:286 #: dashboard/views/vm.py:296
msgid "Unknown error." msgid "Unknown error."
msgstr "Ismeretlen hiba." msgstr "Ismeretlen hiba."
#: dashboard/views/vm.py:491 #: dashboard/views/vm.py:543
msgid "The token has expired." msgid "The token has expired."
msgstr "A token lejárt." msgstr "A token lejárt."
#: dashboard/views/vm.py:676 #: dashboard/views/vm.py:757
#, python-format #, python-format
msgid "Failed to execute %(op)s operation on instance %(instance)s." msgid "Failed to execute %(op)s operation on instance %(instance)s."
msgstr "%(op)s végrehajtása meghiúsult a következőn: %(instance)s." msgstr "%(op)s végrehajtása meghiúsult a következőn: %(instance)s."
#: dashboard/views/vm.py:692 #: dashboard/views/vm.py:773
#, python-format #, python-format
msgid "You are not permitted to execute %(op)s on instance %(instance)s." msgid "You are not permitted to execute %(op)s on instance %(instance)s."
msgstr "Nem engedélyezett a(z) %(op)s végrehajtása a(z) %(instance)s gépen." msgstr "Nem engedélyezett a(z) %(op)s végrehajtása a(z) %(instance)s gépen."
#: dashboard/views/vm.py:868 #: dashboard/views/vm.py:955
msgid "Customize VM" msgid "Customize VM"
msgstr "VM testreszabása" msgstr "VM testreszabása"
#: dashboard/views/vm.py:876 #: dashboard/views/vm.py:963
msgid "Create a VM" msgid "Create a VM"
msgstr "VM létrehozása" msgstr "VM létrehozása"
#: dashboard/views/vm.py:941 #: dashboard/views/vm.py:1028
#, python-format #, python-format
msgid "Successfully created %(count)d VM." msgid "Successfully created %(count)d VM."
msgid_plural "Successfully created %(count)d VMs." msgid_plural "Successfully created %(count)d VMs."
msgstr[0] "%(count)d VM létrehozásra került." msgstr[0] "%(count)d VM létrehozásra került."
msgstr[1] "%(count)d VM létrehozásra került." msgstr[1] "%(count)d VM létrehozásra került."
#: dashboard/views/vm.py:946 #: dashboard/views/vm.py:1033
msgid "VM successfully created." msgid "VM successfully created."
msgstr "VM létrehozásra került." msgstr "VM létrehozásra került."
#: dashboard/views/vm.py:975 #: dashboard/views/vm.py:1062
#, python-format #, python-format
msgid "Instance limit (%d) exceeded." msgid "Instance limit (%d) exceeded."
msgstr "A példányok létrehozási korlátját (%d) túllépte." msgstr "A példányok létrehozási korlátját (%d) túllépte."
#: dashboard/views/vm.py:1013 #: dashboard/views/vm.py:1100
#, python-format #, python-format
msgid "" msgid ""
"Are you sure you want to remove this interface from <strong>%(vm)s</strong>?" "Are you sure you want to remove this interface from <strong>%(vm)s</strong>?"
msgstr "" msgstr ""
"Biztosan eltávolítja az interfészt a(z) <strong>%(vm)s</strong> gépből?" "Biztosan eltávolítja az interfészt a(z) <strong>%(vm)s</strong> gépből?"
#: dashboard/views/vm.py:1027 #: dashboard/views/vm.py:1114
msgid "Interface successfully deleted." msgid "Interface successfully deleted."
msgstr "Az interfész törlésre került." msgstr "Az interfész törlésre került."
#: dashboard/views/vm.py:1080 #: dashboard/views/vm.py:1183
msgid "Disk remove confirmation"
msgstr "Lemez törlésének megerősítése"
#: dashboard/views/vm.py:1081
#, python-format
msgid ""
"Are you sure you want to remove <strong>%(disk)s</strong> from <strong>"
"%(app)s</strong>?"
msgstr ""
"Biztosan eltávolítja a(z) <strong>%(disk)s</strong> lemezt a következőből: "
"%(app)s?"
#: dashboard/views/vm.py:1100
msgid "Disk successfully removed."
msgstr "A lemez eltávolításra került."
#: dashboard/views/vm.py:1141
msgid "Port delete confirmation" msgid "Port delete confirmation"
msgstr "Porteltávolítás megerősítése" msgstr "Porteltávolítás megerősítése"
#: dashboard/views/vm.py:1142 #: dashboard/views/vm.py:1184
#, python-format #, python-format
msgid "Are you sure you want to close %(port)d/%(proto)s on %(vm)s?" msgid "Are you sure you want to close %(port)d/%(proto)s on %(vm)s?"
msgstr "Biztosan bezárja a(z) %(port)d/%(proto)s portot a következőn: %(vm)s?" msgstr "Biztosan bezárja a(z) %(port)d/%(proto)s portot a következőn: %(vm)s?"
#: dashboard/views/vm.py:1157 #: dashboard/views/vm.py:1199
msgid "Port successfully removed." msgid "Port successfully removed."
msgstr "A port eltávolításra került." msgstr "A port eltávolításra került."
#: dashboard/views/vm.py:1184 #: dashboard/views/vm.py:1226
msgid "About CIRCLE Client" msgid "About CIRCLE Client"
msgstr "A CIRCLE kliensről" msgstr "A CIRCLE kliensről"
#: dashboard/views/vm.py:1281 #: dashboard/views/vm.py:1323
msgid "Transfer ownership" msgid "Transfer ownership"
msgstr "Tulajdon átruházása" msgstr "Tulajdon átruházása"
#: dashboard/views/vm.py:1294 #: dashboard/views/vm.py:1336
msgid "Can not find specified user." msgid "Can not find specified user."
msgstr "Nem található a megadott felhasználó." msgstr "Nem található a megadott felhasználó."
#: dashboard/views/vm.py:1310 #: dashboard/views/vm.py:1352
msgid "Ownership offer" msgid "Ownership offer"
msgstr "Átruházási ajánlat" msgstr "Átruházási ajánlat"
#: dashboard/views/vm.py:1311 #: dashboard/views/vm.py:1353
#, python-format #, python-format
msgid "" msgid ""
"%(user)s offered you to take the ownership of his/her virtual machine called " "%(user)s offered you to take the ownership of his/her virtual machine called "
...@@ -2621,32 +2726,32 @@ msgstr "" ...@@ -2621,32 +2726,32 @@ msgstr ""
"%(user)s át kívánja ruházni %(instance)s nevű virtuális gépét Önre. <a href=" "%(user)s át kívánja ruházni %(instance)s nevű virtuális gépét Önre. <a href="
"\"%(token)s\" class=\"btn btn-success btn-small\">Elfogadás</a>" "\"%(token)s\" class=\"btn btn-success btn-small\">Elfogadás</a>"
#: dashboard/views/vm.py:1317 #: dashboard/views/vm.py:1359
msgid "Can not notify selected user." msgid "Can not notify selected user."
msgstr "A kiválaszott felhasználó értesítése sikertelen." msgstr "A kiválaszott felhasználó értesítése sikertelen."
#: dashboard/views/vm.py:1320 #: dashboard/views/vm.py:1362
#, python-format #, python-format
msgid "User %s is notified about the offer." msgid "User %s is notified about the offer."
msgstr "%s felhasználó értesítésre került az ajánlatról." msgstr "%s felhasználó értesítésre került az ajánlatról."
#: dashboard/views/vm.py:1331 #: dashboard/views/vm.py:1373
msgid "Ownership successfully transferred to you." msgid "Ownership successfully transferred to you."
msgstr "A tulajdon átruházásra került." msgstr "A tulajdon átruházásra került."
#: dashboard/views/vm.py:1344 #: dashboard/views/vm.py:1386
msgid "This token is for an other user." msgid "This token is for an other user."
msgstr "A token más felhasználó nevére szól." msgstr "A token más felhasználó nevére szól."
#: dashboard/views/vm.py:1347 #: dashboard/views/vm.py:1389
msgid "This token is invalid or has expired." msgid "This token is invalid or has expired."
msgstr "A token érvénytelen vagy lejárt." msgstr "A token érvénytelen vagy lejárt."
#: dashboard/views/vm.py:1370 #: dashboard/views/vm.py:1411
msgid "Ownership accepted" msgid "Ownership accepted"
msgstr "Átruházás elfogadva" msgstr "Átruházás elfogadva"
#: dashboard/views/vm.py:1371 #: dashboard/views/vm.py:1412
#, python-format #, python-format
msgid "Your ownership offer of %(instance)s has been accepted by %(user)s." msgid "Your ownership offer of %(instance)s has been accepted by %(user)s."
msgstr "%(instance)s gépre vonatkozó átruházási ajánlatát elfogadta %(user)s." msgstr "%(instance)s gépre vonatkozó átruházási ajánlatát elfogadta %(user)s."
...@@ -2728,8 +2833,8 @@ msgstr "A szabály kimenő vagy bejövő csomagokra illeszkedik." ...@@ -2728,8 +2833,8 @@ msgstr "A szabály kimenő vagy bejövő csomagokra illeszkedik."
#: firewall/models.py:68 firewall/models.py:334 firewall/models.py:419 #: firewall/models.py:68 firewall/models.py:334 firewall/models.py:419
#: firewall/models.py:442 firewall/models.py:499 firewall/models.py:857 #: firewall/models.py:442 firewall/models.py:499 firewall/models.py:857
#: firewall/models.py:881 firewall/models.py:951 vm/models/instance.py:146 #: firewall/models.py:881 firewall/models.py:951 vm/models/instance.py:137
#: vm/models/instance.py:236 #: vm/models/instance.py:227
msgid "description" msgid "description"
msgstr "leírás" msgstr "leírás"
...@@ -2828,8 +2933,8 @@ msgstr "módosítva" ...@@ -2828,8 +2933,8 @@ msgstr "módosítva"
#: firewall/models.py:124 firewall/models.py:507 #: firewall/models.py:124 firewall/models.py:507
#: network/templates/network/vlan-create.html:8 #: network/templates/network/vlan-create.html:8
#: network/templates/network/vlan-edit.html:8 vm/models/network.py:40 #: network/templates/network/vlan-edit.html:8 vm/models/network.py:39
#: vm/models/network.py:65 #: vm/models/network.py:64
msgid "vlan" msgid "vlan"
msgstr "vlan" msgstr "vlan"
...@@ -2848,7 +2953,7 @@ msgstr "Erre a vlan-csoportra vonatkozik a szabály (ha a típus vlan)." ...@@ -2848,7 +2953,7 @@ msgstr "Erre a vlan-csoportra vonatkozik a szabály (ha a típus vlan)."
#: firewall/models.py:133 firewall/models.py:874 firewall/models.py:994 #: firewall/models.py:133 firewall/models.py:874 firewall/models.py:994
#: network/templates/network/host-create.html:8 #: network/templates/network/host-create.html:8
#: network/templates/network/host-edit.html:8 vm/models/network.py:67 #: network/templates/network/host-edit.html:8 vm/models/network.py:66
#: vm/models/node.py:70 #: vm/models/node.py:70
msgid "host" msgid "host"
msgstr "gép" msgstr "gép"
...@@ -2968,7 +3073,7 @@ msgstr "" ...@@ -2968,7 +3073,7 @@ msgstr ""
msgid "network type" msgid "network type"
msgstr "hálózat típusa" msgstr "hálózat típusa"
#: firewall/models.py:333 vm/models/network.py:42 #: firewall/models.py:333 vm/models/network.py:41
msgid "managed" msgid "managed"
msgstr "menedzselt" msgstr "menedzselt"
...@@ -3788,7 +3893,7 @@ msgstr "eszközazonosító" ...@@ -3788,7 +3893,7 @@ msgstr "eszközazonosító"
msgid "disk" msgid "disk"
msgstr "lemez" msgstr "lemez"
#: storage/models.py:104 vm/models/instance.py:151 vm/models/instance.py:257 #: storage/models.py:104 vm/models/instance.py:142 vm/models/instance.py:248
msgid "disks" msgid "disks"
msgstr "lemezek" msgstr "lemezek"
...@@ -3800,77 +3905,81 @@ msgstr "Létrehozhat új lemezt." ...@@ -3800,77 +3905,81 @@ msgstr "Létrehozhat új lemezt."
msgid "Can download a disk." msgid "Can download a disk."
msgstr "Letölthet lemezt." msgstr "Letölthet lemezt."
#: storage/models.py:120 #: storage/models.py:108
msgid "Can resize a disk."
msgstr "Átméretezhet lemezt."
#: storage/models.py:122
#, python-format #, python-format
msgid "Operation can't be invoked on disk '%(name)s' of type '%(type)s'." msgid "Operation can't be invoked on disk '%(name)s' of type '%(type)s'."
msgstr "" msgstr ""
"A kér művelet nem hajtható végre a(z) %(type)s típusú „%(name)s” lemezen." "A kért művelet nem hajtható végre a(z) %(type)s típusú „%(name)s” lemezen."
#: storage/models.py:124 #: storage/models.py:126
#, python-format #, python-format
msgid "" msgid ""
"Operation can't be invoked on disk '%(name)s' (%(pk)s) of type '%(type)s'." "Operation can't be invoked on disk '%(name)s' (%(pk)s) of type '%(type)s'."
msgstr "" msgstr ""
"A kér művelet nem hajtható végre a(z) %(type)s típusú „%(name)s” (%(pk)s) " "A kért művelet nem hajtható végre a(z) %(type)s típusú „%(name)s” (%(pk)s) "
"lemezen." "lemezen."
#: storage/models.py:133 #: storage/models.py:135
#, python-format #, python-format
msgid "" msgid ""
"The requested operation can't be performed on disk '%(name)s' because it is " "The requested operation can't be performed on disk '%(name)s' because it is "
"in use." "in use."
msgstr "" msgstr ""
"A kér művelet nem hajtható végre a(z) „%(name)s” lemezen, mivel használatban " "A kért művelet nem hajtható végre a(z) „%(name)s” lemezen, mivel használatban "
"van." "van."
#: storage/models.py:137 #: storage/models.py:139
#, python-format #, python-format
msgid "" msgid ""
"The requested operation can't be performed on disk '%(name)s' (%(pk)s) " "The requested operation can't be performed on disk '%(name)s' (%(pk)s) "
"because it is in use." "because it is in use."
msgstr "" msgstr ""
"A kér művelet nem hajtható végre a(z) „%(name)s” (%(pk)s) lemezen, mivel " "A kért művelet nem hajtható végre a(z) „%(name)s” (%(pk)s) lemezen, mivel "
"használatban van." "használatban van."
#: storage/models.py:146 #: storage/models.py:148
#, python-format #, python-format
msgid "" msgid ""
"The requested operation can't be performed on disk '%(name)s' because it has " "The requested operation can't be performed on disk '%(name)s' because it has "
"never been deployed." "never been deployed."
msgstr "" msgstr ""
"A kér művelet nem hajtható végre a(z) „%(name)s” lemezen, mivel nem volt még " "A kért művelet nem hajtható végre a(z) „%(name)s” lemezen, mivel nem volt még "
"csatolva." "csatolva."
#: storage/models.py:150 #: storage/models.py:152
#, python-format #, python-format
msgid "" msgid ""
"The requested operation can't be performed on disk '%(name)s' (%(pk)s) " "The requested operation can't be performed on disk '%(name)s' (%(pk)s) "
"[%(filename)s] because it has never beendeployed." "[%(filename)s] because it has never beendeployed."
msgstr "" msgstr ""
"A kér művelet nem hajtható végre a(z) „%(name)s” (%(pk)s) [%(filename)s] " "A kért művelet nem hajtható végre a(z) „%(name)s” (%(pk)s) [%(filename)s] "
"lemezen, mivel nem volt még csatolva." "lemezen, mivel nem volt még csatolva."
#: storage/models.py:161 #: storage/models.py:163
#, python-format #, python-format
msgid "" msgid ""
"The requested operation can't be performed on disk '%(name)s' because its " "The requested operation can't be performed on disk '%(name)s' because its "
"base has never been deployed." "base has never been deployed."
msgstr "" msgstr ""
"A kér művelet nem hajtható végre a(z) „%(name)s” lemezen, mivel az alapja " "A kért művelet nem hajtható végre a(z) „%(name)s” lemezen, mivel az alapja "
"nem volt még csatolva." "nem volt még csatolva."
#: storage/models.py:165 #: storage/models.py:167
#, python-format #, python-format
msgid "" msgid ""
"The requested operation can't be performed on disk '%(name)s' (%(pk)s) " "The requested operation can't be performed on disk '%(name)s' (%(pk)s) "
"[%(filename)s] because its base '%(b_name)s' (%(b_pk)s) [%(b_filename)s] has " "[%(filename)s] because its base '%(b_name)s' (%(b_pk)s) [%(b_filename)s] has "
"never beendeployed." "never beendeployed."
msgstr "" msgstr ""
"A kér művelet nem hajtható végre a(z) „%(name)s” (%(pk)s) [%(filename)s] " "A kért művelet nem hajtható végre a(z) „%(name)s” (%(pk)s) [%(filename)s] "
"lemezen, mivel az alapja, „%(b_name)s” (%(b_pk)s) [%(b_filename)s] nem " "lemezen, mivel az alapja, „%(b_name)s” (%(b_pk)s) [%(b_filename)s] nem "
"volt még csatolva." "volt még csatolva."
#: storage/models.py:414 storage/models.py:489 vm/models/instance.py:890 #: storage/models.py:416 storage/models.py:493 vm/operations.py:92
msgid "Operation aborted by user." msgid "Operation aborted by user."
msgstr "A műveletet a felhasználó megszakította." msgstr "A műveletet a felhasználó megszakította."
...@@ -4518,59 +4627,68 @@ msgstr "Jelszó visszaállítása" ...@@ -4518,59 +4627,68 @@ msgstr "Jelszó visszaállítása"
msgid "Enter your email address to reset your password." msgid "Enter your email address to reset your password."
msgstr "Adja meg e-mail címét a jelszó visszaállításához." msgstr "Adja meg e-mail címét a jelszó visszaállításához."
#: vm/operations.py:86 #: vm/operations.py:129
#, python-format #, python-format
msgid "%(acl_level)s level is required for this operation." msgid "%(acl_level)s level is required for this operation."
msgstr "%(acl_level)s jogosultság szükséges a művelethez." msgstr "%(acl_level)s jogosultság szükséges a művelethez."
#: vm/operations.py:124 #: vm/operations.py:202
msgid "Add a new network interface for the specified VLAN to the VM." msgid "Add a new network interface for the specified VLAN to the VM."
msgstr "Új hálózati interfész hozzáadása a megadott VLAN-ba." msgstr "Új hálózati interfész hozzáadása a megadott VLAN-ba."
#: vm/operations.py:132 #: vm/operations.py:210
msgid "destroy network (rollback)" msgid "destroy network (rollback)"
msgstr "hálózat megsemmisítése (visszagörgetés)" msgstr "hálózat megsemmisítése (visszagörgetés)"
#: vm/operations.py:139 #: vm/operations.py:217
#, python-format #, python-format
msgid "User acces to vlan %(vlan)s is required." msgid "User acces to vlan %(vlan)s is required."
msgstr "Használói jogosultság szükséges a(z) %(vlan)s vlan-hoz." msgstr "Használói jogosultság szükséges a(z) %(vlan)s vlan-hoz."
#: vm/operations.py:151 #: vm/operations.py:238
msgid "attach network"
msgstr "hálózat csatolása"
#: vm/operations.py:161
#, python-format #, python-format
msgid "add %(vlan)s interface" msgid "add %(vlan)s interface"
msgstr "új %(vlan)s interfész" msgstr "új %(vlan)s interfész"
#: vm/operations.py:170 #: vm/operations.py:246
msgid "create disk" msgid "create disk"
msgstr "lemez létrehozása" msgstr "lemez létrehozása"
#: vm/operations.py:171 #: vm/operations.py:247
msgid "Create and attach empty disk to the virtual machine." msgid "Create and attach empty disk to the virtual machine."
msgstr "Üres lemez létehozása és virtuális géphez csatolása." msgstr "Üres lemez létehozása és virtuális géphez csatolása."
#: vm/operations.py:192 #: vm/operations.py:268
msgid "deploying disk" msgid "deploying disk"
msgstr "lemez létrehozása" msgstr "lemez létrehozása"
#: vm/operations.py:197 vm/operations.py:241 #: vm/operations.py:275
msgid "attach disk"
msgstr "lemez csatolása"
#: vm/operations.py:203
#, python-format #, python-format
msgid "create disk %(name)s (%(size)s)" msgid "create disk %(name)s (%(size)s)"
msgstr "%(name)s lemez létrehozása (%(size)s)" msgstr "%(name)s lemez létrehozása (%(size)s)"
#: vm/operations.py:211 #: vm/operations.py:283
msgid "resize disk"
msgstr "lemez átméretezése"
#: vm/operations.py:284
msgid ""
"Resize the virtual disk image. Size must be greater value than the actual "
"size."
msgstr ""
"Virtuális lemezkép átméretezése. Az új méret meg kell haladja "
"a jelenlegit."
#: vm/operations.py:298
#, python-format
msgid "resize disk %(name)s to %(size)s"
msgstr "%(name)s lemez átméretezése (%(size)s)"
#: vm/operations.py:310
msgid "download disk" msgid "download disk"
msgstr "lemez letöltése" msgstr "lemez letöltése"
#: vm/operations.py:212 #: vm/operations.py:311
msgid "" msgid ""
"Download and attach disk image (ISO file) for the virtual machine. Most " "Download and attach disk image (ISO file) for the virtual machine. Most "
"operating systems do not detect a new optical drive, so you may have to " "operating systems do not detect a new optical drive, so you may have to "
...@@ -4580,16 +4698,21 @@ msgstr "" ...@@ -4580,16 +4698,21 @@ msgstr ""
"operációs rendszer nem érzékeli az új optikai meghajtót, így valószínűleg " "operációs rendszer nem érzékeli az új optikai meghajtót, így valószínűleg "
"újra kell indítania a virtuális gépet." "újra kell indítania a virtuális gépet."
#: vm/operations.py:235 #: vm/operations.py:333
#, python-format #, python-format
msgid "download %(name)s" msgid "download %(name)s"
msgstr "%(name)s letöltése" msgstr "%(name)s letöltése"
#: vm/operations.py:250 #: vm/operations.py:336
#, python-format
msgid "Downloading %(url)s is finished. The file md5sum is: '%(checksum)s'."
msgstr "%(url)s letöltése sikeres. A fájl md5sum összege: '%(checksum)s'."
#: vm/operations.py:347
msgid "deploy" msgid "deploy"
msgstr "indítás" msgstr "indítás"
#: vm/operations.py:251 #: vm/operations.py:348
msgid "" msgid ""
"Deploy and start the virtual machine (including storage and network " "Deploy and start the virtual machine (including storage and network "
"configuration)." "configuration)."
...@@ -4597,101 +4720,117 @@ msgstr "" ...@@ -4597,101 +4720,117 @@ msgstr ""
"Virtuális gép elhelyezése és indítása (valamint a lemezek és a hálózat " "Virtuális gép elhelyezése és indítása (valamint a lemezek és a hálózat "
"beállítása)." "beállítása)."
#: vm/operations.py:268 #: vm/operations.py:365
#, python-format #, python-format
msgid "virtual machine successfully deployed to node: %(node)s" msgid "virtual machine successfully deployed to node: %(node)s"
msgstr "a virtuális gép sikeresen elindítva a következő csomóponton: %(node)s" msgstr "a virtuális gép sikeresen elindítva a következő csomóponton: %(node)s"
#: vm/operations.py:280 #: vm/operations.py:388 vm/operations.py:563 vm/operations.py:889
msgid "deploy disks" msgid "deploy network"
msgstr "lemez létrehozása" msgstr "hálózati kapcsolat létrehozása"
#: vm/operations.py:400 vm/operations.py:581 vm/operations.py:645
msgid "wait operating system loading"
msgstr "várakozás az operációs rendszer betöltésére"
#: vm/operations.py:405
msgid "deploy vm"
msgstr "vm indítása"
#: vm/operations.py:406
msgid "Deploy virtual machine."
msgstr "Virtuális gép létrehozása."
#: vm/operations.py:285 #: vm/operations.py:415
msgid "deploy virtual machine" msgid "deploy virtual machine"
msgstr "virtuális gép létrehozása" msgstr "virtuális gép létrehozása"
#: vm/operations.py:286 #: vm/operations.py:416
#, python-format #, python-format
msgid "deploy vm to %(node)s" msgid "deploy vm to %(node)s"
msgstr "vm létrehozása: %(node)s" msgstr "vm létrehozása: %(node)s"
#: vm/operations.py:295 vm/operations.py:408 vm/operations.py:734 #: vm/operations.py:422
msgid "deploy network" msgid "deploy disks"
msgstr "hálózati kapcsolat létrehozása" msgstr "lemez létrehozása"
#: vm/operations.py:423
msgid "Deploy all associated disks."
msgstr "Csatolt lemezek létrehozása."
#: vm/operations.py:306 #: vm/operations.py:440
msgid "boot virtual machine" msgid "boot virtual machine"
msgstr "virtuális gép indítása" msgstr "virtuális gép indítása"
#: vm/operations.py:311 vm/operations.py:426 vm/operations.py:498 #: vm/operations.py:448
msgid "wait operating system loading"
msgstr "várakozás az operációs rendszer betöltésére"
#: vm/operations.py:318
msgid "destroy" msgid "destroy"
msgstr "megsemmisítés" msgstr "megsemmisítés"
#: vm/operations.py:319 #: vm/operations.py:449
msgid "Permanently destroy virtual machine, its network settings and disks." msgid "Permanently destroy virtual machine, its network settings and disks."
msgstr "" msgstr ""
"Virtuális gép és lemezeinek, hálózati beállításainak végleges eltávolítása." "Virtuális gép és lemezeinek, hálózati beállításainak végleges eltávolítása."
#: vm/operations.py:328 #: vm/operations.py:458
msgid "destroy network" msgid "destroy network"
msgstr "hálózat megsemmisítése" msgstr "hálózat megsemmisítése"
#: vm/operations.py:337 #: vm/operations.py:469
msgid "destroy disks"
msgstr "lemez megsemmisítése"
#: vm/operations.py:488
msgid "destroy virtual machine" msgid "destroy virtual machine"
msgstr "virtuális gép megsemmisítése" msgstr "virtuális gép megsemmisítése"
#: vm/operations.py:343 #: vm/operations.py:496
msgid "destroy disks" msgid "removing memory dump"
msgstr "lemez megsemmisítése" msgstr "memóriamentés törlése"
#: vm/operations.py:364 #: vm/operations.py:510
msgid "migrate" msgid "migrate"
msgstr "migrálás" msgstr "migrálás"
#: vm/operations.py:365 #: vm/operations.py:511
msgid "" msgid ""
"Move virtual machine to an other worker node with a few seconds of " "Move a running virtual machine to an other worker node keeping its full "
"interruption (live migration)." "state."
msgstr "" msgstr ""
"A virtuális gép áthelyezése egy másik számítási csomópontra néhány másodperc " "A virtuális gép mozgatása egy másik számítási csomópontra állapotának "
"kimaradással (live migration)." "megtartásával."
#: vm/operations.py:375 #: vm/operations.py:528
msgid "redeploy network (rollback)" msgid "redeploy network (rollback)"
msgstr "hálózati kapcsolat újraépítése (visszagörgetés)" msgstr "hálózati kapcsolat újraépítése (visszagörgetés)"
#: vm/operations.py:382 #: vm/operations.py:535
msgid "schedule" msgid "schedule"
msgstr "ütemezés" msgstr "ütemezés"
#: vm/operations.py:389 #: vm/operations.py:542
#, python-format #, python-format
msgid "migrate to %(node)s" msgid "migrate to %(node)s"
msgstr "migrálás %(node)s csomópontra" msgstr "migrálás %(node)s csomópontra"
#: vm/operations.py:399 vm/operations.py:686 #: vm/operations.py:553 vm/operations.py:838
msgid "shutdown network" msgid "shutdown network"
msgstr "hálózati kapcsolat leállítása" msgstr "hálózati kapcsolat leállítása"
#: vm/operations.py:416 #: vm/operations.py:570
msgid "reboot" msgid "reboot"
msgstr "újraindítás" msgstr "újraindítás"
#: vm/operations.py:417 #: vm/operations.py:571
msgid "" msgid ""
"Warm reboot virtual machine by sending Ctrl+Alt+Del signal to its console." "Warm reboot virtual machine by sending Ctrl+Alt+Del signal to its console."
msgstr "" msgstr ""
"Virtuális gép újraindítása a konzoljára a Ctrl+Alt+Del kombináció küldésével." "Virtuális gép újraindítása a konzoljára a Ctrl+Alt+Del kombináció küldésével."
#: vm/operations.py:433 #: vm/operations.py:587
msgid "remove interface" msgid "remove interface"
msgstr "interfész törlése" msgstr "interfész törlése"
#: vm/operations.py:434 #: vm/operations.py:588
msgid "" msgid ""
"Remove the specified network interface and erase IP address allocations, " "Remove the specified network interface and erase IP address allocations, "
"related firewall rules and hostnames." "related firewall rules and hostnames."
...@@ -4699,50 +4838,42 @@ msgstr "" ...@@ -4699,50 +4838,42 @@ msgstr ""
"A kiválasztott hálózati interfész eltávolítása, a foglalt IP címek, " "A kiválasztott hálózati interfész eltávolítása, a foglalt IP címek, "
"tűzfalszabályok és gépnevek törlése." "tűzfalszabályok és gépnevek törlése."
#: vm/operations.py:444 #: vm/operations.py:604
msgid "detach network"
msgstr "hálózat lecsatolása"
#: vm/operations.py:453
#, python-format #, python-format
msgid "remove %(vlan)s interface" msgid "remove %(vlan)s interface"
msgstr "%(vlan)s interfész törlése" msgstr "%(vlan)s interfész törlése"
#: vm/operations.py:461 #: vm/operations.py:611
msgid "remove disk" msgid "remove disk"
msgstr "lemez eltávolítása" msgstr "lemez eltávolítása"
#: vm/operations.py:462 #: vm/operations.py:612
msgid "" msgid ""
"Remove the specified disk from the virtual machine, and destroy the data." "Remove the specified disk from the virtual machine, and destroy the data."
msgstr "A megadott lemez eltávolítása a virtuális gépből és az adat törlése." msgstr "A megadott lemez eltávolítása a virtuális gépből és az adat törlése."
#: vm/operations.py:471 #: vm/operations.py:622
msgid "detach disk"
msgstr "lemez leválasztása"
#: vm/operations.py:476
msgid "destroy disk" msgid "destroy disk"
msgstr "lemez megsemmisítése" msgstr "lemez megsemmisítése"
#: vm/operations.py:481 #: vm/operations.py:628
#, python-format #, python-format
msgid "remove disk %(name)s" msgid "remove disk %(name)s"
msgstr "%(name)s lemez eltávolítása" msgstr "%(name)s lemez eltávolítása"
#: vm/operations.py:489 #: vm/operations.py:635 vm/operations.py:1041
msgid "reset" msgid "reset"
msgstr "reset" msgstr "reset"
#: vm/operations.py:490 #: vm/operations.py:636
msgid "Cold reboot virtual machine (power cycle)." msgid "Cold reboot virtual machine (power cycle)."
msgstr "Virtuális gép hideg újraindítása (hálózati tápellátás megszakítása)." msgstr "Virtuális gép hideg újraindítása (hálózati tápellátás megszakítása)."
#: vm/operations.py:505 #: vm/operations.py:651
msgid "save as template" msgid "save as template"
msgstr "mentés sablonként" msgstr "mentés sablonként"
#: vm/operations.py:506 #: vm/operations.py:652
msgid "" msgid ""
"Save virtual machine as a template so they can be shared with users and " "Save virtual machine as a template so they can be shared with users and "
"groups. Anyone who has access to a template (and to the networks it uses) " "groups. Anyone who has access to a template (and to the networks it uses) "
...@@ -4752,16 +4883,16 @@ msgstr "" ...@@ -4752,16 +4883,16 @@ msgstr ""
"felhasználókkal és csoportokkal. Mindenki, aki hozzáférést kap egy sablonhoz " "felhasználókkal és csoportokkal. Mindenki, aki hozzáférést kap egy sablonhoz "
"(és az általa használt hálózatokhoz), képes lesz egy példányát elindítani." "(és az általa használt hálózatokhoz), képes lesz egy példányát elindítani."
#: vm/operations.py:576 #: vm/operations.py:728
#, python-format #, python-format
msgid "saving disk %(name)s" msgid "saving disk %(name)s"
msgstr "%(name)s lemez mentése" msgstr "%(name)s lemez mentése"
#: vm/operations.py:601 #: vm/operations.py:755
msgid "shutdown" msgid "shutdown"
msgstr "leállítás" msgstr "leállítás"
#: vm/operations.py:602 #: vm/operations.py:756
msgid "" msgid ""
"Try to halt virtual machine by a standard ACPI signal, allowing the " "Try to halt virtual machine by a standard ACPI signal, allowing the "
"operating system to keep a consistent state. The operation will fail if the " "operating system to keep a consistent state. The operation will fail if the "
...@@ -4771,7 +4902,7 @@ msgstr "" ...@@ -4771,7 +4902,7 @@ msgstr ""
"operációs rendszer számár a szabályos leállást. A művelet meghiúsul, ha a " "operációs rendszer számár a szabályos leállást. A művelet meghiúsul, ha a "
"gép nem áll le." "gép nem áll le."
#: vm/operations.py:618 #: vm/operations.py:775
msgid "" msgid ""
"The virtual machine did not switch off in the provided time limit. Most of " "The virtual machine did not switch off in the provided time limit. Most of "
"the time this is caused by incorrect ACPI settings. You can also try to " "the time this is caused by incorrect ACPI settings. You can also try to "
...@@ -4781,11 +4912,11 @@ msgstr "" ...@@ -4781,11 +4912,11 @@ msgstr ""
"ez a nem megfelelő ACPI beállítások miatt van. Megpróbálhatja a gépet az " "ez a nem megfelelő ACPI beállítások miatt van. Megpróbálhatja a gépet az "
"operációs rendszerből, kézzel leállítani." "operációs rendszerből, kézzel leállítani."
#: vm/operations.py:631 #: vm/operations.py:787
msgid "shut off" msgid "shut off"
msgstr "kikapcsolás" msgstr "kikapcsolás"
#: vm/operations.py:632 #: vm/operations.py:788
msgid "" msgid ""
"Forcibly halt a virtual machine without notifying the operating system. This " "Forcibly halt a virtual machine without notifying the operating system. This "
"operation will even work in cases when shutdown does not, but the operating " "operation will even work in cases when shutdown does not, but the operating "
...@@ -4798,11 +4929,11 @@ msgstr "" ...@@ -4798,11 +4929,11 @@ msgstr ""
"rendszer és a fájlrendszer sérülhet, adatvesztés történhet. A művelet hatása " "rendszer és a fájlrendszer sérülhet, adatvesztés történhet. A művelet hatása "
"hasonló, mint egy fizikai gép tápellátásának megszüntetése." "hasonló, mint egy fizikai gép tápellátásának megszüntetése."
#: vm/operations.py:659 #: vm/operations.py:811
msgid "sleep" msgid "sleep"
msgstr "altatás" msgstr "altatás"
#: vm/operations.py:660 #: vm/operations.py:812
msgid "" msgid ""
"Suspend virtual machine. This means the machine is stopped and its memory is " "Suspend virtual machine. This means the machine is stopped and its memory is "
"saved to disk, so if the machine is waked up, all the applications will keep " "saved to disk, so if the machine is waked up, all the applications will keep "
...@@ -4818,15 +4949,15 @@ msgstr "" ...@@ -4818,15 +4949,15 @@ msgstr ""
"megállhatnak visszaállítás után. A felfüggesztés ideje alatt a virtuális gép " "megállhatnak visszaállítás után. A felfüggesztés ideje alatt a virtuális gép "
"csak tárterületet és hálózati erőforrásokat foglal." "csak tárterületet és hálózati erőforrásokat foglal."
#: vm/operations.py:692 #: vm/operations.py:846
msgid "suspend virtual machine" msgid "suspend virtual machine"
msgstr "virtuális gép felfüggesztése" msgstr "virtuális gép felfüggesztése"
#: vm/operations.py:703 #: vm/operations.py:860
msgid "wake up" msgid "wake up"
msgstr "virtuális gép ébresztése" msgstr "virtuális gép ébresztése"
#: vm/operations.py:704 #: vm/operations.py:861
msgid "" msgid ""
"Wake up sleeping (suspended) virtual machine. This will load the saved " "Wake up sleeping (suspended) virtual machine. This will load the saved "
"memory of the system and start the virtual machine from this state." "memory of the system and start the virtual machine from this state."
...@@ -4834,15 +4965,15 @@ msgstr "" ...@@ -4834,15 +4965,15 @@ msgstr ""
"Alvó (felfüggesztett) gép ébresztése: az elmentett memóriatartalom " "Alvó (felfüggesztett) gép ébresztése: az elmentett memóriatartalom "
"visszatöltése és a virtuális gép indítása ebből a mentett állapotból." "visszatöltése és a virtuális gép indítása ebből a mentett állapotból."
#: vm/operations.py:728 #: vm/operations.py:900
msgid "resume virtual machine" msgid "resume virtual machine"
msgstr "virtuális gép ébresztése" msgstr "virtuális gép ébresztése"
#: vm/operations.py:747 #: vm/operations.py:914
msgid "renew" msgid "renew"
msgstr "megújítás" msgstr "megújítás"
#: vm/operations.py:748 #: vm/operations.py:915
msgid "" msgid ""
"Virtual machines are suspended and destroyed after they expire. This " "Virtual machines are suspended and destroyed after they expire. This "
"operation renews expiration times according to the lease type. If the " "operation renews expiration times according to the lease type. If the "
...@@ -4852,7 +4983,7 @@ msgstr "" ...@@ -4852,7 +4983,7 @@ msgstr ""
"a művelet megújítja a bérletet a kiválasztott típusnak megfelelően. Ha egy " "a művelet megújítja a bérletet a kiválasztott típusnak megfelelően. Ha egy "
"gép közeledik a lejárathoz, a tulajdonost értesítjük." "gép közeledik a lejárathoz, a tulajdonost értesítjük."
#: vm/operations.py:761 #: vm/operations.py:928
msgid "" msgid ""
"Renewing the machine with the selected lease would result in its suspension " "Renewing the machine with the selected lease would result in its suspension "
"time get earlier than before." "time get earlier than before."
...@@ -4860,7 +4991,7 @@ msgstr "" ...@@ -4860,7 +4991,7 @@ msgstr ""
"A gép megújítása a kiválasztott bérleti mód mellett a felfüggesztési időt " "A gép megújítása a kiválasztott bérleti mód mellett a felfüggesztési időt "
"korábbra állította volna, mint a jelenlegi érték." "korábbra állította volna, mint a jelenlegi érték."
#: vm/operations.py:766 #: vm/operations.py:933
msgid "" msgid ""
"Renewing the machine with the selected lease would result in its delete time " "Renewing the machine with the selected lease would result in its delete time "
"get earlier than before." "get earlier than before."
...@@ -4868,17 +4999,17 @@ msgstr "" ...@@ -4868,17 +4999,17 @@ msgstr ""
"A gép megújítása a kiválasztott bérleti mód mellett a törlési időt korábbra " "A gép megújítása a kiválasztott bérleti mód mellett a törlési időt korábbra "
"állította volna, mint a jelenlegi érték." "állította volna, mint a jelenlegi érték."
#: vm/operations.py:774 #: vm/operations.py:941
#, python-format #, python-format
msgid "Renewed to suspend at %(suspend)s and destroy at %(delete)s." msgid "Renewed to suspend at %(suspend)s and destroy at %(delete)s."
msgstr "" msgstr ""
"Megújítás után felfüggesztés ideje: %(suspend)s, a törlésé: %(delete)s." "Megújítás után felfüggesztés ideje: %(suspend)s, a törlésé: %(delete)s."
#: vm/operations.py:782 #: vm/operations.py:948
msgid "emergency state change" msgid "emergency state change"
msgstr "vész-állapotváltás" msgstr "vész-állapotváltás"
#: vm/operations.py:783 #: vm/operations.py:949
msgid "" msgid ""
"Change the virtual machine state to NOSTATE. This should only be used if " "Change the virtual machine state to NOSTATE. This should only be used if "
"manual intervention was needed in the virtualization layer, and the machine " "manual intervention was needed in the virtualization layer, and the machine "
...@@ -4889,46 +5020,68 @@ msgstr "" ...@@ -4889,46 +5020,68 @@ msgstr ""
"rétegben, és úgy szeretné a gépet újból elindítani, hogy ne vesszenek el " "rétegben, és úgy szeretné a gépet újból elindítani, hogy ne vesszenek el "
"lemezei vagy hálózati erőforrásai." "lemezei vagy hálózati erőforrásai."
#: vm/operations.py:795 #: vm/operations.py:962
msgid "Activity is forcibly interrupted." msgid "Activity is forcibly interrupted."
msgstr "A tevékenység erőszakos megszakításra került." msgstr "A tevékenység erőszakos megszakításra került."
#: vm/operations.py:817 #: vm/operations.py:977
msgid "redeploy"
msgstr "újbóli létrehozás"
#: vm/operations.py:978
msgid ""
"Change the virtual machine state to NOSTATE and redeploy the VM. This "
"operation allows starting machines formerly running on a failed node."
msgstr ""
"A virtuális gép állapotának átállítása NOSTATE-re, majd a VM újbóli "
"létrehozása. "
"Ez a művelet lehetővé teszi olyan gépek elindítását, amelyek korábban egy "
"meghibásodott csomóponton futnak."
#: vm/operations.py:1014
msgid "You cannot call this operation on an offline node." msgid "You cannot call this operation on an offline node."
msgstr "Nem hívható ez a művelet elérhetetlen csomópontra." msgstr "Nem hívható ez a művelet elérhetetlen csomópontra."
#: vm/operations.py:844 #: vm/operations.py:1042
msgid "Disable missing node and redeploy all instances on other ones."
msgstr "Hiányzó csomópont letiltása és az összes példány elindítása a többin."
#: vm/operations.py:1052
msgid "You cannot reset a disabled or online node."
msgstr "Tiltott vagy elérhető csomópont resetelése nem lehetséges."
#: vm/operations.py:1060 vm/operations.py:1080
#, python-format
msgid "migrate %(instance)s (%(pk)s)"
msgstr "%(instance)s (%(pk)s) migrálása"
#: vm/operations.py:1069
msgid "flush" msgid "flush"
msgstr "ürítés" msgstr "ürítés"
#: vm/operations.py:845 #: vm/operations.py:1070
msgid "Passivate node and move all instances to other ones." msgid "Passivate node and move all instances to other ones."
msgstr "" msgstr ""
"A csomópont passzívra állítása és az összes példány másikakra mozgatása." "A csomópont passzívra állítása és az összes példány másikakra mozgatása."
#: vm/operations.py:855 #: vm/operations.py:1089
#, python-format
msgid "migrate %(instance)s (%(pk)s)"
msgstr "%(instance)s (%(pk)s) migrálása"
#: vm/operations.py:865
msgid "activate" msgid "activate"
msgstr "aktiválás" msgstr "aktiválás"
#: vm/operations.py:866 #: vm/operations.py:1090
msgid "" msgid ""
"Make node active, i.e. scheduler is allowed to deploy virtual machines to it." "Make node active, i.e. scheduler is allowed to deploy virtual machines to it."
msgstr "Csomópont aktívvá tétele: az ütemező indíthat virtuális gépeket rajta." msgstr "Csomópont aktívvá tétele: az ütemező indíthat virtuális gépeket rajta."
#: vm/operations.py:874 #: vm/operations.py:1098
msgid "You cannot activate an active node." msgid "You cannot activate an active node."
msgstr "Aktív csomópont aktiválása nem lehetséges." msgstr "Aktív csomópont aktiválása nem lehetséges."
#: vm/operations.py:886 #: vm/operations.py:1109
msgid "passivate" msgid "passivate"
msgstr "passziválás" msgstr "passziválás"
#: vm/operations.py:887 #: vm/operations.py:1110
msgid "" msgid ""
"Make node passive, i.e. scheduler is denied to deploy virtual machines to " "Make node passive, i.e. scheduler is denied to deploy virtual machines to "
"it, but remaining instances and the ones manually migrated will continue " "it, but remaining instances and the ones manually migrated will continue "
...@@ -4937,31 +5090,31 @@ msgstr "" ...@@ -4937,31 +5090,31 @@ msgstr ""
"Csomópont passzívvá tétele: az ütemező nem indíthat rajta virtuális gépeket, " "Csomópont passzívvá tétele: az ütemező nem indíthat rajta virtuális gépeket, "
"azonban a megmaradt példányok és a kézzel idemigráltak tovább működnek." "azonban a megmaradt példányok és a kézzel idemigráltak tovább működnek."
#: vm/operations.py:895 #: vm/operations.py:1118
msgid "You cannot passivate a passive node." msgid "You cannot passivate a passive node."
msgstr "Passzív csomópont passziválása nem lehetséges." msgstr "Passzív csomópont passziválása nem lehetséges."
#: vm/operations.py:908 #: vm/operations.py:1130
msgid "disable" msgid "disable"
msgstr "tiltás" msgstr "tiltás"
#: vm/operations.py:909 #: vm/operations.py:1131
msgid "Disable node." msgid "Disable node."
msgstr "Csomópont tiltása." msgstr "Csomópont tiltása."
#: vm/operations.py:916 #: vm/operations.py:1138
msgid "You cannot disable a disabled node." msgid "You cannot disable a disabled node."
msgstr "Tiltott csomópont tiltása nem lehetséges." msgstr "Tiltott csomópont tiltása nem lehetséges."
#: vm/operations.py:919 #: vm/operations.py:1141
msgid "You cannot disable a node which is hosting instances." msgid "You cannot disable a node which is hosting instances."
msgstr "Nem tiltható le olyan csomópont, amelyen még futnak példányok." msgstr "Nem tiltható le olyan csomópont, amelyen még futnak példányok."
#: vm/operations.py:933 #: vm/operations.py:1154
msgid "screenshot" msgid "screenshot"
msgstr "képernyőkép" msgstr "képernyőkép"
#: vm/operations.py:934 #: vm/operations.py:1155
msgid "" msgid ""
"Get a screenshot about the virtual machine's console. A key will be pressed " "Get a screenshot about the virtual machine's console. A key will be pressed "
"on the keyboard to stop screensaver." "on the keyboard to stop screensaver."
...@@ -4969,11 +5122,11 @@ msgstr "" ...@@ -4969,11 +5122,11 @@ msgstr ""
"Képernyőkép készítése a virtuális gép konzoljáról. Egy billentyűnyomást " "Képernyőkép készítése a virtuális gép konzoljáról. Egy billentyűnyomást "
"követően készül a kép a képernyővédő miatt." "követően készül a kép a képernyővédő miatt."
#: vm/operations.py:949 #: vm/operations.py:1167
msgid "recover" msgid "recover"
msgstr "visszaállítás" msgstr "visszaállítás"
#: vm/operations.py:950 #: vm/operations.py:1168
msgid "" msgid ""
"Try to recover virtual machine disks from destroyed state. Network resources " "Try to recover virtual machine disks from destroyed state. Network resources "
"(allocations) are already lost, so you will have to manually add interfaces " "(allocations) are already lost, so you will have to manually add interfaces "
...@@ -4983,15 +5136,15 @@ msgstr "" ...@@ -4983,15 +5136,15 @@ msgstr ""
"hálózati erőforrások foglalásai már végleg elvesztek, így az interfészeket " "hálózati erőforrások foglalásai már végleg elvesztek, így az interfészeket "
"kézzel kell a visszaállítás után pótolni." "kézzel kell a visszaállítás után pótolni."
#: vm/operations.py:977 #: vm/operations.py:1194
msgid "resources change" msgid "resources change"
msgstr "erőforrások módosítása" msgstr "erőforrások módosítása"
#: vm/operations.py:978 #: vm/operations.py:1195
msgid "Change resources of a stopped virtual machine." msgid "Change resources of a stopped virtual machine."
msgstr "Leállított virtuális gép erőforrásainak változtatása." msgstr "Leállított virtuális gép erőforrásainak változtatása."
#: vm/operations.py:995 #: vm/operations.py:1212
#, python-format #, python-format
msgid "" msgid ""
"Priority: %(priority)s, Num cores: %(num_cores)s, Ram size: %(ram_size)s" "Priority: %(priority)s, Num cores: %(num_cores)s, Ram size: %(ram_size)s"
...@@ -4999,11 +5152,11 @@ msgstr "" ...@@ -4999,11 +5152,11 @@ msgstr ""
"Prioritás: %(priority)s, magok száma: %(num_cores)s, memória mérete: " "Prioritás: %(priority)s, magok száma: %(num_cores)s, memória mérete: "
"%(ram_size)s" "%(ram_size)s"
#: vm/operations.py:1024 #: vm/operations.py:1221
msgid "password reset" msgid "password reset"
msgstr "jelszó visszaállítása" msgstr "jelszó visszaállítása"
#: vm/operations.py:1025 #: vm/operations.py:1222
msgid "" msgid ""
"Generate and set a new login password on the virtual machine. This operation " "Generate and set a new login password on the virtual machine. This operation "
"requires the agent running. Resetting the password is not warranted to allow " "requires the agent running. Resetting the password is not warranted to allow "
...@@ -5013,11 +5166,52 @@ msgstr "" ...@@ -5013,11 +5166,52 @@ msgstr ""
"művelet megköveteli az ügynök futását. A jelszó átállítása nem garantálja a " "művelet megköveteli az ügynök futását. A jelszó átállítása nem garantálja a "
"sikeres belépést, mivel más beállítások is megakadályozhatják ezt." "sikeres belépést, mivel más beállítások is megakadályozhatják ezt."
#: vm/operations.py:1045 #: vm/operations.py:1246
msgid "agent"
msgstr "ügynök"
#: vm/operations.py:1287
msgid "starting"
msgstr "indítás"
#: vm/operations.py:1305
msgid "wait agent restarting"
msgstr "várakozás az ügynök újraindulására"
#: vm/operations.py:1322
msgid "cleanup"
msgstr "takarítás"
#: vm/operations.py:1328
msgid "set time"
msgstr "óra beállítása"
#: vm/operations.py:1339
msgid "set hostname"
msgstr "gépnév beállítása"
#: vm/operations.py:1350
msgid "restart networking"
msgstr "hálózat újratöltése"
#: vm/operations.py:1356
msgid "change ip"
msgstr "IP cím beállítása"
#: vm/operations.py:1371
msgid "update agent"
msgstr "ügynök frissítése"
#: vm/operations.py:1377
#, python-format
msgid "update agent to %(version)s"
msgstr "ügynökfrissítés erre: %(version)s"
#: vm/operations.py:1460
msgid "mount store" msgid "mount store"
msgstr "tárhely csatolása" msgstr "tárhely csatolása"
#: vm/operations.py:1047 #: vm/operations.py:1462
msgid "" msgid ""
"This operation attaches your personal file store. Other users who have " "This operation attaches your personal file store. Other users who have "
"access to this machine can see these files as well." "access to this machine can see these files as well."
...@@ -5025,37 +5219,62 @@ msgstr "" ...@@ -5025,37 +5219,62 @@ msgstr ""
"Ez a művelet csatolja az ön személyes tárhelyét. A gép más felhasználói is " "Ez a művelet csatolja az ön személyes tárhelyét. A gép más felhasználói is "
"elérhetik fájljait." "elérhetik fájljait."
#: vm/models/activity.py:47 #: vm/operations.py:1496
msgid "attach disk"
msgstr "lemez csatolása"
#: vm/operations.py:1507
msgid "Resource was not found."
msgstr "Nem található az erőforrás."
#: vm/operations.py:1508
#, python-format
msgid "Resource was not found. %(exception)s"
msgstr "Nem található az erőforrás. %(exception)s"
#: vm/operations.py:1517
msgid "detach disk"
msgstr "lemez leválasztása"
#: vm/operations.py:1532
msgid "attach network"
msgstr "hálózat csatolása"
#: vm/operations.py:1539
msgid "detach network"
msgstr "hálózat lecsatolása"
#: vm/models/activity.py:46
#, python-format #, python-format
msgid "%(activity)s activity is currently in progress." msgid "%(activity)s activity is currently in progress."
msgstr "%(activity)s folyamatban van." msgstr "%(activity)s folyamatban van."
#: vm/models/activity.py:48 #: vm/models/activity.py:47
#, python-format #, python-format
msgid "%(activity)s (%(pk)s) activity is currently in progress." msgid "%(activity)s (%(pk)s) activity is currently in progress."
msgstr "%(activity)s (%(pk)s) folyamatban van." msgstr "%(activity)s (%(pk)s) folyamatban van."
#: vm/models/activity.py:70 #: vm/models/activity.py:69
msgid "Instance this activity works on." msgid "Instance this activity works on."
msgstr "A tevékenység tárgyát képező példány." msgstr "A tevékenység tárgyát képező példány."
#: vm/models/activity.py:74 #: vm/models/activity.py:73
msgid "Other activities can interrupt this one." msgid "Other activities can interrupt this one."
msgstr "Más tevékenységek megszakíthatják ezt." msgstr "Más tevékenységek megszakíthatják ezt."
#: vm/models/activity.py:105 #: vm/models/activity.py:104
msgid "Interrupted by other activity." msgid "Interrupted by other activity."
msgstr "Egy másik tevékenység megszakította." msgstr "Egy másik tevékenység megszakította."
#: vm/models/activity.py:227 #: vm/models/activity.py:211
msgid "Node this activity works on." msgid "Node this activity works on."
msgstr "A tevékenység tárgyát képező csomópont." msgstr "A tevékenység tárgyát képező csomópont."
#: vm/models/activity.py:228 #: vm/models/activity.py:212
msgid "node" msgid "node"
msgstr "csomópont" msgstr "csomópont"
#: vm/models/activity.py:286 #: vm/models/activity.py:267
msgid "Manager is restarted, activity is cleaned up. You can try again now." msgid "Manager is restarted, activity is cleaned up. You can try again now."
msgstr "" msgstr ""
"A menedzser újraindítása miatt a tevékenység lezárásra került. Próbálja újra." "A menedzser újraindítása miatt a tevékenység lezárásra került. Próbálja újra."
...@@ -5125,60 +5344,60 @@ msgstr "soha" ...@@ -5125,60 +5344,60 @@ msgstr "soha"
msgid "%(name)s (suspend: %(s)s, remove: %(r)s)" msgid "%(name)s (suspend: %(s)s, remove: %(r)s)"
msgstr "%(name)s (felfüggesztés: %(s)s, törlés: %(r)s)" msgstr "%(name)s (felfüggesztés: %(s)s, törlés: %(r)s)"
#: vm/models/instance.py:108 #: vm/models/instance.py:99
msgid "Primary remote access method." msgid "Primary remote access method."
msgstr "Elsődleges távoli elérési mód." msgstr "Elsődleges távoli elérési mód."
#: vm/models/instance.py:109 #: vm/models/instance.py:100
msgid "boot menu" msgid "boot menu"
msgstr "rendszerbetöltő menüje" msgstr "rendszerbetöltő menüje"
#: vm/models/instance.py:111 #: vm/models/instance.py:102
msgid "Show boot device selection menu on boot." msgid "Show boot device selection menu on boot."
msgstr "" msgstr ""
"A rendszerbetöltés eszközének kiválasztását lehetővé tevő menü megjelenítése " "A rendszerbetöltés eszközének kiválasztását lehetővé tevő menü megjelenítése "
"indításkor." "indításkor."
#: vm/models/instance.py:112 #: vm/models/instance.py:103
msgid "Preferred expiration periods." msgid "Preferred expiration periods."
msgstr "Javasolt bérlési mód." msgstr "Javasolt bérlési mód."
#: vm/models/instance.py:114 #: vm/models/instance.py:105
msgid "raw_data" msgid "raw_data"
msgstr "nyers adat" msgstr "nyers adat"
#: vm/models/instance.py:115 #: vm/models/instance.py:106
msgid "Additional libvirt domain parameters in XML format." msgid "Additional libvirt domain parameters in XML format."
msgstr "További libvirt domain-paraméterek XML formátumban." msgstr "További libvirt domain-paraméterek XML formátumban."
#: vm/models/instance.py:117 #: vm/models/instance.py:108
msgid "" msgid ""
"A set of traits required for a node to declare to be suitable for hosting " "A set of traits required for a node to declare to be suitable for hosting "
"the VM." "the VM."
msgstr "A VM indításához szükséges csomópontjellemzők halmaza." msgstr "A VM indításához szükséges csomópontjellemzők halmaza."
#: vm/models/instance.py:120 #: vm/models/instance.py:111
msgid "required traits" msgid "required traits"
msgstr "elvárt jellemzők" msgstr "elvárt jellemzők"
#: vm/models/instance.py:121 #: vm/models/instance.py:112
msgid "operating system" msgid "operating system"
msgstr "operációs rendszer" msgstr "operációs rendszer"
#: vm/models/instance.py:122 #: vm/models/instance.py:113
#, python-format #, python-format
msgid "Name of operating system in format like \"%s\"." msgid "Name of operating system in format like \"%s\"."
msgstr "Az operációs rendszer neve. Például „%s”." msgstr "Az operációs rendszer neve. Például „%s”."
#: vm/models/instance.py:125 vm/models/node.py:83 #: vm/models/instance.py:116 vm/models/node.py:83
msgid "tags" msgid "tags"
msgstr "címkék" msgstr "címkék"
#: vm/models/instance.py:126 #: vm/models/instance.py:117
msgid "has agent" msgid "has agent"
msgstr "van ügynöke" msgstr "van ügynöke"
#: vm/models/instance.py:128 #: vm/models/instance.py:119
msgid "" msgid ""
"If the machine has agent installed, and the manager should wait for its " "If the machine has agent installed, and the manager should wait for its "
"start." "start."
...@@ -5186,161 +5405,165 @@ msgstr "" ...@@ -5186,161 +5405,165 @@ msgstr ""
"A gépre telepítve van-e az ügynökszoftver, vagyis a menedzser várjon-e az " "A gépre telepítve van-e az ügynökszoftver, vagyis a menedzser várjon-e az "
"indulására." "indulására."
#: vm/models/instance.py:148 #: vm/models/instance.py:139
msgid "parent template" msgid "parent template"
msgstr "szülősablon" msgstr "szülősablon"
#: vm/models/instance.py:150 #: vm/models/instance.py:141
msgid "Template which this one is derived of." msgid "Template which this one is derived of."
msgstr "Az a sablon, amelyből az aktuális származik." msgstr "Az a sablon, amelyből az aktuális származik."
#: vm/models/instance.py:153 #: vm/models/instance.py:144
msgid "Disks which are to be mounted." msgid "Disks which are to be mounted."
msgstr "A csatolandó lemezek." msgstr "A csatolandó lemezek."
#: vm/models/instance.py:161 #: vm/models/instance.py:152
msgid "Can create an instance template." msgid "Can create an instance template."
msgstr "Létrehozhat példánysablont." msgstr "Létrehozhat példánysablont."
#: vm/models/instance.py:163 #: vm/models/instance.py:154
msgid "Can create an instance template (base)." msgid "Can create an instance template (base)."
msgstr "Létrehozhat példánysablont (alapokból)." msgstr "Létrehozhat példánysablont (alapokból)."
#: vm/models/instance.py:165 #: vm/models/instance.py:156
msgid "Can change resources of a template." msgid "Can change resources of a template."
msgstr "Változtathatja egy sablon erőforrásait." msgstr "Változtathatja egy sablon erőforrásait."
#: vm/models/instance.py:168 #: vm/models/instance.py:159
msgid "templates" msgid "templates"
msgstr "sablonok" msgstr "sablonok"
#: vm/models/instance.py:226 #: vm/models/instance.py:217
msgid "no state" msgid "no state"
msgstr "nincs állapot" msgstr "nincs állapot"
#: vm/models/instance.py:227 #: vm/models/instance.py:218
msgid "running" msgid "running"
msgstr "fut" msgstr "fut"
#: vm/models/instance.py:228 #: vm/models/instance.py:219
msgid "stopped" msgid "stopped"
msgstr "leállítva" msgstr "leállítva"
#: vm/models/instance.py:229 #: vm/models/instance.py:220
msgid "suspended" msgid "suspended"
msgstr "felfüggesztve" msgstr "felfüggesztve"
#: vm/models/instance.py:230 #: vm/models/instance.py:221
msgid "error" msgid "error"
msgstr "hiba" msgstr "hiba"
#: vm/models/instance.py:231 #: vm/models/instance.py:222
msgid "pending" msgid "pending"
msgstr "függő" msgstr "függő"
#: vm/models/instance.py:232 #: vm/models/instance.py:223
msgid "destroyed" msgid "destroyed"
msgstr "megsemmisítve" msgstr "megsemmisítve"
#: vm/models/instance.py:235 #: vm/models/instance.py:226
msgid "Human readable name of instance." msgid "Human readable name of instance."
msgstr "A példány olvasható neve." msgstr "A példány olvasható neve."
#: vm/models/instance.py:239 #: vm/models/instance.py:230
msgid "Template the instance derives from." msgid "Template the instance derives from."
msgstr "Az a sablon, amelyből a példány származik." msgstr "Az a sablon, amelyből a példány származik."
#: vm/models/instance.py:241 #: vm/models/instance.py:232
msgid "Original password of the instance." msgid "Original password of the instance."
msgstr "A példány eredeti jelszava." msgstr "A példány eredeti jelszava."
#: vm/models/instance.py:242 #: vm/models/instance.py:233
msgid "password" msgid "password"
msgstr "jelszó" msgstr "jelszó"
#: vm/models/instance.py:244 #: vm/models/instance.py:235
msgid "time of suspend" msgid "time of suspend"
msgstr "felfüggesztés ideje" msgstr "felfüggesztés ideje"
#: vm/models/instance.py:245 #: vm/models/instance.py:236
msgid "Proposed time of automatic suspension." msgid "Proposed time of automatic suspension."
msgstr "A felfüggesztés kijelölt ideje." msgstr "A felfüggesztés kijelölt ideje."
#: vm/models/instance.py:248 #: vm/models/instance.py:239
msgid "time of delete" msgid "time of delete"
msgstr "törlés ideje" msgstr "törlés ideje"
#: vm/models/instance.py:249 #: vm/models/instance.py:240
msgid "Proposed time of automatic deletion." msgid "Proposed time of automatic deletion."
msgstr "Automatikus törlés kijelölt ideje." msgstr "Automatikus törlés kijelölt ideje."
#: vm/models/instance.py:253 #: vm/models/instance.py:244
msgid "Current hypervisor of this instance." msgid "Current hypervisor of this instance."
msgstr "A példány jelenlegi hypervisorja." msgstr "A példány jelenlegi hypervisorja."
#: vm/models/instance.py:254 #: vm/models/instance.py:245
msgid "host node" msgid "host node"
msgstr "csomópont" msgstr "csomópont"
#: vm/models/instance.py:256 #: vm/models/instance.py:247
msgid "Set of mounted disks." msgid "Set of mounted disks."
msgstr "1Csatolt lemezek halmaza." msgstr "1Csatolt lemezek halmaza."
#: vm/models/instance.py:259 #: vm/models/instance.py:250
msgid "TCP port where VNC console listens." msgid "TCP port where VNC console listens."
msgstr "Az a TCP port, amelyen a VNC konzol hallgat." msgstr "Az a TCP port, amelyen a VNC konzol hallgat."
#: vm/models/instance.py:260 #: vm/models/instance.py:251
msgid "vnc_port" msgid "vnc_port"
msgstr "VNC port" msgstr "VNC port"
#: vm/models/instance.py:264 #: vm/models/instance.py:255
msgid "The virtual machine's time of destruction." msgid "The virtual machine's time of destruction."
msgstr "A virtuális gép megsemmisítésének ideje." msgstr "A virtuális gép megsemmisítésének ideje."
#: vm/models/instance.py:274 #: vm/models/instance.py:265
msgid "Can access the graphical console of a VM." msgid "Can access the graphical console of a VM."
msgstr "Elérheti a VM grafikus konzolját." msgstr "Elérheti a VM grafikus konzolját."
#: vm/models/instance.py:275 #: vm/models/instance.py:266
msgid "Can change resources of a running VM." msgid "Can change resources of a running VM."
msgstr "Megváltoztathatja a VM erőforrásait." msgstr "Megváltoztathatja a VM erőforrásait."
#: vm/models/instance.py:276 #: vm/models/instance.py:267
msgid "Can change resources of a new VM." msgid "Can change resources of a new VM."
msgstr "Megválaszthatja egy új VM erőforrásait." msgstr "Megválaszthatja egy új VM erőforrásait."
#: vm/models/instance.py:277 #: vm/models/instance.py:268
msgid "Can create a new VM." msgid "Can create a new VM."
msgstr "Létrehozhat új VM-et." msgstr "Létrehozhat új VM-et."
#: vm/models/instance.py:278 #: vm/models/instance.py:269
msgid "Can redeploy a VM."
msgstr "Újból létrehozhat futó VM-et."
#: vm/models/instance.py:270
msgid "Can configure port forwards." msgid "Can configure port forwards."
msgstr "Beállíthat porttovábbításokat." msgstr "Beállíthat porttovábbításokat."
#: vm/models/instance.py:279 #: vm/models/instance.py:271
msgid "Can recover a destroyed VM." msgid "Can recover a destroyed VM."
msgstr "Visszaállíthat egy megsemmisített VM-et." msgstr "Visszaállíthat egy megsemmisített VM-et."
#: vm/models/instance.py:280 #: vm/models/instance.py:272
msgid "Can change VM state to NOSTATE." msgid "Can change VM state to NOSTATE."
msgstr "Átállíthatja a VM állapotát NOSTATE-re." msgstr "Átállíthatja a VM állapotát NOSTATE-re."
#: vm/models/instance.py:283 #: vm/models/instance.py:275
msgid "instances" msgid "instances"
msgstr "példányok" msgstr "példányok"
#: vm/models/instance.py:295 #: vm/models/instance.py:287
#, python-format #, python-format
msgid "Instance %(instance)s has already been destroyed." msgid "Instance %(instance)s has already been destroyed."
msgstr "%(instance)s példány már meg van semmisítve." msgstr "%(instance)s példány már meg van semmisítve."
#: vm/models/instance.py:299 #: vm/models/instance.py:291
#, python-format #, python-format
msgid "No agent software is running on instance %(instance)s." msgid "No agent software is running on instance %(instance)s."
msgstr "Nem fut ügynökszoftver a következőn: %(instance)s." msgstr "Nem fut ügynökszoftver a következőn: %(instance)s."
#: vm/models/instance.py:303 #: vm/models/instance.py:295
#, python-format #, python-format
msgid "" msgid ""
"Current state (%(state)s) of instance %(instance)s is inappropriate for the " "Current state (%(state)s) of instance %(instance)s is inappropriate for the "
...@@ -5349,16 +5572,16 @@ msgstr "" ...@@ -5349,16 +5572,16 @@ msgstr ""
"A(z) %(instance)s példány aktuális állapota (%(state)s) nem megfelelő a " "A(z) %(instance)s példány aktuális állapota (%(state)s) nem megfelelő a "
"választott művelethez." "választott művelethez."
#: vm/models/instance.py:377 #: vm/models/instance.py:369
msgid "create instance" msgid "create instance"
msgstr "példány létrehozása" msgstr "példány létrehozása"
#: vm/models/instance.py:458 #: vm/models/instance.py:450
#, python-format #, python-format
msgid "vm state changed to %(state)s on %(node)s" msgid "vm state changed to %(state)s on %(node)s"
msgstr "VM állapota erre változott: %(state)s, %(node)s" msgstr "VM állapota erre változott: %(state)s (ezen: %(node)s)"
#: vm/models/instance.py:654 #: vm/models/instance.py:646
#, python-format #, python-format
msgid "" msgid ""
"Your instance <a href=\"%(url)s\">%(instance)s</a> is going to expire. It " "Your instance <a href=\"%(url)s\">%(instance)s</a> is going to expire. It "
...@@ -5370,7 +5593,7 @@ msgstr "" ...@@ -5370,7 +5593,7 @@ msgstr ""
"kerül. Kérjük, <a href=\"%(token)s\">újítsa meg</a> vagy <a href=\"%(url)s" "kerül. Kérjük, <a href=\"%(token)s\">újítsa meg</a> vagy <a href=\"%(url)s"
"\">törölje</a> most." "\">törölje</a> most."
#: vm/models/instance.py:666 #: vm/models/instance.py:658
#, python-format #, python-format
msgid "" msgid ""
"%(failed)s notifications failed and %(success) succeeded. Failed ones are: " "%(failed)s notifications failed and %(success) succeeded. Failed ones are: "
...@@ -5379,7 +5602,7 @@ msgstr "" ...@@ -5379,7 +5602,7 @@ msgstr ""
"%(failed)s értesítés sikertelen és %(success) sikeres. A sikertelenek: " "%(failed)s értesítés sikertelen és %(success) sikeres. A sikertelenek: "
"%(faileds)s." "%(faileds)s."
#: vm/models/instance.py:668 #: vm/models/instance.py:660
#, python-format #, python-format
msgid "" msgid ""
"%(failed)s notifications failed and %(success) succeeded. Failed ones are: " "%(failed)s notifications failed and %(success) succeeded. Failed ones are: "
...@@ -5388,49 +5611,49 @@ msgstr "" ...@@ -5388,49 +5611,49 @@ msgstr ""
"%(failed)s értesítés sikertelen és %(success) sikeres. A sikertelenek: " "%(failed)s értesítés sikertelen és %(success) sikeres. A sikertelenek: "
"%(faileds_ex)s." "%(faileds_ex)s."
#: vm/models/instance.py:676 #: vm/models/instance.py:668
#, python-format #, python-format
msgid "%(success)s notifications succeeded." msgid "%(success)s notifications succeeded."
msgstr "%(success)s sikeres értesítés." msgstr "%(success)s sikeres értesítés."
#: vm/models/instance.py:681 #: vm/models/instance.py:673
msgid "notify owner about expiration" msgid "notify owner about expiration"
msgstr "tulaj értesítése a lejáratról" msgstr "tulaj értesítése a lejáratról"
#: vm/models/instance.py:689 #: vm/models/instance.py:681
#, python-format #, python-format
msgid "%(instance)s expiring soon" msgid "%(instance)s expiring soon"
msgstr "%(instance)s hamarosan lejár" msgstr "%(instance)s hamarosan lejár"
#: vm/models/network.py:41 #: vm/models/network.py:40
msgid "Network the interface belongs to." msgid "Network the interface belongs to."
msgstr "Az a hálózat, amelyhez a példány tartozik." msgstr "Az a hálózat, amelyhez a példány tartozik."
#: vm/models/network.py:43 #: vm/models/network.py:42
msgid "If a firewall host (i.e. IP address association) should be generated." msgid "If a firewall host (i.e. IP address association) should be generated."
msgstr "Tűzfal host generálása (IP cím hozzárendelése)." msgstr "Tűzfal host generálása (IP cím hozzárendelése)."
#: vm/models/network.py:47 #: vm/models/network.py:46
msgid "Template the interface template belongs to." msgid "Template the interface template belongs to."
msgstr "Sablon, amelyhez az interfészsablon tartozik." msgstr "Sablon, amelyhez az interfészsablon tartozik."
#: vm/models/network.py:54 #: vm/models/network.py:53
msgid "interface template" msgid "interface template"
msgstr "interfészsablon" msgstr "interfészsablon"
#: vm/models/network.py:55 #: vm/models/network.py:54
msgid "interface templates" msgid "interface templates"
msgstr "interfészsablonok" msgstr "interfészsablonok"
#: vm/models/network.py:125 vm/models/network.py:130 #: vm/models/network.py:124 vm/models/network.py:129
msgid "allocate IP address" msgid "allocate IP address"
msgstr "IP cím foglalása" msgstr "IP cím foglalása"
#: vm/models/network.py:136 #: vm/models/network.py:135
msgid "Interface successfully created." msgid "Interface successfully created."
msgstr "Az interfész létrehozásra került." msgstr "Az interfész létrehozásra került."
#: vm/models/network.py:137 #: vm/models/network.py:136
#, python-format #, python-format
msgid "" msgid ""
"Interface successfully created. New addresses: ipv4: %(ip4)s, ipv6: %(ip6)s, " "Interface successfully created. New addresses: ipv4: %(ip4)s, ipv6: %(ip6)s, "
...@@ -5503,60 +5726,10 @@ msgstr "passzív" ...@@ -5503,60 +5726,10 @@ msgstr "passzív"
msgid "active" msgid "active"
msgstr "aktív" msgstr "aktív"
#: vm/tasks/local_agent_tasks.py:40 #: vm/tasks/local_agent_tasks.py:39
msgid "cleanup"
msgstr "takarítás"
#: vm/tasks/local_agent_tasks.py:43
msgid "change password"
msgstr "jelszóváltoztatás"
#: vm/tasks/local_agent_tasks.py:45
msgid "set time"
msgstr "óra beállítása"
#: vm/tasks/local_agent_tasks.py:48
msgid "set hostname"
msgstr "gépnév beállítása"
#: vm/tasks/local_agent_tasks.py:56
msgid "change ip"
msgstr "IP cím beállítása"
#: vm/tasks/local_agent_tasks.py:60
msgid "restart networking"
msgstr "hálózat újratöltése"
#: vm/tasks/local_agent_tasks.py:93
msgid "agent"
msgstr "ügynök"
#: vm/tasks/local_agent_tasks.py:97
msgid "starting"
msgstr "indítás"
#: vm/tasks/local_agent_tasks.py:113
msgid "wait agent restarting"
msgstr "várakozás az ügynök újraindulására"
#: vm/tasks/local_agent_tasks.py:123
msgid "start access server"
msgstr "távoli elérés indítása"
#: vm/tasks/local_agent_tasks.py:154
msgid "stopping" msgid "stopping"
msgstr "leállítás" msgstr "leállítás"
#: vm/tasks/local_agent_tasks.py:170
#, python-format
msgid "update to %(version)s"
msgstr "frissítés erre: %(version)s"
#: vm/tasks/local_agent_tasks.py:177
#, python-format
msgid "update agent to %(version)s"
msgstr "ügynökfrissítés erre: %(version)s"
#: vm/tasks/local_periodic_tasks.py:51 #: vm/tasks/local_periodic_tasks.py:51
#, python-format #, python-format
msgid "%(instance)s destroyed" msgid "%(instance)s destroyed"
...@@ -5585,19 +5758,28 @@ msgstr "" ...@@ -5585,19 +5758,28 @@ msgstr ""
"<a href=\"%(url)s\">%(instance)s</a> gépe felfüggesztésre került, mivel " "<a href=\"%(url)s\">%(instance)s</a> gépe felfüggesztésre került, mivel "
"lejárt. Felébresztheti vagy megsemmisítheti." "lejárt. Felébresztheti vagy megsemmisítheti."
#: vm/tests/test_models.py:215 #: vm/tests/test_models.py:218
msgid "x" msgid "x"
msgstr "x" msgstr "x"
#~ msgid "Visit"
#~ msgstr "Megtekintés"
#~ msgid "change password"
#~ msgstr "jelszóváltoztatás"
#~ msgid "start access server"
#~ msgstr "távoli elérés indítása"
#~ msgid "update to %(version)s"
#~ msgstr "frissítés erre: %(version)s"
#~ msgid "Change the name of the node." #~ msgid "Change the name of the node."
#~ msgstr "Válasszon nevet a csomópontnak." #~ msgstr "Válasszon nevet a csomópontnak."
#~ msgid "Flush" #~ msgid "Flush"
#~ msgstr "Ürítés" #~ msgstr "Ürítés"
#~ msgid "Disable node and move all instances to other one."
#~ msgstr "Csomópont letiltása és az összes példány migrálása a többire."
#~ msgid "Enable" #~ msgid "Enable"
#~ msgstr "Engedélyezés" #~ msgstr "Engedélyezés"
......
...@@ -6,8 +6,8 @@ msgid "" ...@@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-09-24 12:19+0200\n" "POT-Creation-Date: 2014-10-20 12:09+0200\n"
"PO-Revision-Date: 2014-09-03 12:51+0200\n" "PO-Revision-Date: 2014-10-20 12:21+0200\n"
"Last-Translator: Mate Ory <ory.mate@ik.bme.hu>\n" "Last-Translator: Mate Ory <ory.mate@ik.bme.hu>\n"
"Language-Team: Hungarian <cloud@ik.bme.hu>\n" "Language-Team: Hungarian <cloud@ik.bme.hu>\n"
"Language: en_US\n" "Language: en_US\n"
...@@ -88,9 +88,9 @@ msgstr "Válasszon a folytatáshoz." ...@@ -88,9 +88,9 @@ msgstr "Válasszon a folytatáshoz."
#: static_collected/dashboard/dashboard.fe0a2f126346.js:258 #: static_collected/dashboard/dashboard.fe0a2f126346.js:258
#: static_collected/dashboard/dashboard.fe0a2f126346.js:306 #: static_collected/dashboard/dashboard.fe0a2f126346.js:306
#: static_collected/dashboard/dashboard.fe0a2f126346.js:316 #: static_collected/dashboard/dashboard.fe0a2f126346.js:316
#: static_collected/dashboard/dashboard.js:258 #: static_collected/dashboard/dashboard.js:259
#: static_collected/dashboard/dashboard.js:306 #: static_collected/dashboard/dashboard.js:307
#: static_collected/dashboard/dashboard.js:316 #: static_collected/dashboard/dashboard.js:317
msgid "No result" msgid "No result"
msgstr "Nincs eredmény" msgstr "Nincs eredmény"
...@@ -128,6 +128,14 @@ msgstr "Nincs jogosultsága a profil módosításához." ...@@ -128,6 +128,14 @@ msgstr "Nincs jogosultsága a profil módosításához."
msgid "Unknown error." msgid "Unknown error."
msgstr "Ismeretlen hiba." msgstr "Ismeretlen hiba."
#: dashboard/static/dashboard/template-list.js:103
msgid "Only the owners can delete the selected object."
msgstr "Csak a tulajdonos törölheti a kiválasztott elemet."
#: dashboard/static/dashboard/template-list.js:105
msgid "An error occurred. ("
msgstr "Hiba történt. ("
#: dashboard/static/dashboard/vm-create.js:111 #: dashboard/static/dashboard/vm-create.js:111
#: dashboard/static/dashboard/vm-create.js:174 #: dashboard/static/dashboard/vm-create.js:174
#: static_collected/all.047675ebf594.js:4813 #: static_collected/all.047675ebf594.js:4813
...@@ -176,33 +184,17 @@ msgstr "Nincs több hálózat." ...@@ -176,33 +184,17 @@ msgstr "Nincs több hálózat."
msgid "Not added to any network" msgid "Not added to any network"
msgstr "Nincs hálózathoz adva" msgstr "Nincs hálózathoz adva"
#: dashboard/static/dashboard/vm-details.js:115 #: dashboard/static/dashboard/vm-details.js:116
#: static_collected/dashboard/vm-details.js:115 #: static_collected/dashboard/vm-details.js:116
msgid "Hide password" msgid "Hide password"
msgstr "Jelszó rejtése" msgstr "Jelszó rejtése"
#: dashboard/static/dashboard/vm-details.js:119 #: dashboard/static/dashboard/vm-details.js:120
#: static_collected/dashboard/vm-details.js:119 #: static_collected/dashboard/vm-details.js:120
msgid "Show password" msgid "Show password"
msgstr "Jelszó megjelenítése" msgstr "Jelszó megjelenítése"
#: dashboard/static/dashboard/vm-tour.js:20 #: dashboard/static/dashboard/vm-tour.js:6
#: static_collected/vm-detail.09737c69abc3.js:5853
#: static_collected/vm-detail.15d710d8ccf0.js:6389
#: static_collected/vm-detail.234990ca6ec1.js:6962
#: static_collected/vm-detail.47b1d21da259.js:5853
#: static_collected/vm-detail.9e1734ade019.js:5854
#: static_collected/vm-detail.c47949114749.js:6962
#: static_collected/vm-detail.e3f398067c8a.js:6891
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6389
#: static_collected/dashboard/vm-tour.1562cc89a659.js:20
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:20
#: static_collected/dashboard/vm-tour.js:20
msgid "Prev"
msgstr "Vissza"
#: dashboard/static/dashboard/vm-tour.js:22
#: static_collected/vm-detail.09737c69abc3.js:5855 #: static_collected/vm-detail.09737c69abc3.js:5855
#: static_collected/vm-detail.15d710d8ccf0.js:6391 #: static_collected/vm-detail.15d710d8ccf0.js:6391
#: static_collected/vm-detail.234990ca6ec1.js:6964 #: static_collected/vm-detail.234990ca6ec1.js:6964
...@@ -218,7 +210,11 @@ msgstr "Vissza" ...@@ -218,7 +210,11 @@ msgstr "Vissza"
msgid "Next" msgid "Next"
msgstr "Tovább" msgstr "Tovább"
#: dashboard/static/dashboard/vm-tour.js:26 #: dashboard/static/dashboard/vm-tour.js:7
msgid "Previous"
msgstr "Vissza"
#: dashboard/static/dashboard/vm-tour.js:8
#: static_collected/vm-detail.09737c69abc3.js:5859 #: static_collected/vm-detail.09737c69abc3.js:5859
#: static_collected/vm-detail.15d710d8ccf0.js:6395 #: static_collected/vm-detail.15d710d8ccf0.js:6395
#: static_collected/vm-detail.234990ca6ec1.js:6968 #: static_collected/vm-detail.234990ca6ec1.js:6968
...@@ -234,43 +230,19 @@ msgstr "Tovább" ...@@ -234,43 +230,19 @@ msgstr "Tovább"
msgid "End tour" msgid "End tour"
msgstr "Befejezés" msgstr "Befejezés"
#: dashboard/static/dashboard/vm-tour.js:33 #: dashboard/static/dashboard/vm-tour.js:9
#: static_collected/vm-detail.09737c69abc3.js:5866 msgid "Done"
#: static_collected/vm-detail.15d710d8ccf0.js:6402 msgstr "Kész"
#: static_collected/vm-detail.234990ca6ec1.js:6975
#: static_collected/vm-detail.47b1d21da259.js:5866
#: static_collected/vm-detail.9e1734ade019.js:5867
#: static_collected/vm-detail.c47949114749.js:6975
#: static_collected/vm-detail.e3f398067c8a.js:6904
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6402
#: static_collected/dashboard/vm-tour.1562cc89a659.js:33
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:33
#: static_collected/dashboard/vm-tour.js:33
msgid "Template Tutorial Tour"
msgstr "Sablon-kalauz"
#: dashboard/static/dashboard/vm-tour.js:34 #: dashboard/static/dashboard/vm-tour.js:56
#: static_collected/vm-detail.09737c69abc3.js:5867
#: static_collected/vm-detail.15d710d8ccf0.js:6403
#: static_collected/vm-detail.234990ca6ec1.js:6976
#: static_collected/vm-detail.47b1d21da259.js:5867
#: static_collected/vm-detail.9e1734ade019.js:5868
#: static_collected/vm-detail.c47949114749.js:6976
#: static_collected/vm-detail.e3f398067c8a.js:6905
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6403
#: static_collected/dashboard/vm-tour.1562cc89a659.js:34
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:34
#: static_collected/dashboard/vm-tour.js:34
msgid "" msgid ""
"Welcome to the template tutorial. In this quick tour, we gonna show you how " "Welcome to the template tutorial. In this quick tour, we are going to show "
"to do the steps described above." "you how to do the steps described above."
msgstr "" msgstr ""
"Üdvözöli a sablon-kalauz. A túra során bemutatjuk, hogyan végezze el a fenti " "Üdvözöli a sablon-kalauz. A túra során bemutatjuk, hogyan végezze el a fenti "
"lépéseket." "lépéseket."
#: dashboard/static/dashboard/vm-tour.js:35 #: dashboard/static/dashboard/vm-tour.js:57
#: static_collected/vm-detail.09737c69abc3.js:5868 #: static_collected/vm-detail.09737c69abc3.js:5868
#: static_collected/vm-detail.15d710d8ccf0.js:6404 #: static_collected/vm-detail.15d710d8ccf0.js:6404
#: static_collected/vm-detail.234990ca6ec1.js:6977 #: static_collected/vm-detail.234990ca6ec1.js:6977
...@@ -290,111 +262,41 @@ msgstr "" ...@@ -290,111 +262,41 @@ msgstr ""
"A következő lépéshez kattintson a \"Tovább\" gombra vagy használja a " "A következő lépéshez kattintson a \"Tovább\" gombra vagy használja a "
"nyílbillentyűket." "nyílbillentyűket."
#: dashboard/static/dashboard/vm-tour.js:36 #: dashboard/static/dashboard/vm-tour.js:61
#: static_collected/vm-detail.09737c69abc3.js:5869
#: static_collected/vm-detail.15d710d8ccf0.js:6405
#: static_collected/vm-detail.234990ca6ec1.js:6978
#: static_collected/vm-detail.47b1d21da259.js:5869
#: static_collected/vm-detail.9e1734ade019.js:5870
#: static_collected/vm-detail.c47949114749.js:6978
#: static_collected/vm-detail.e3f398067c8a.js:6907
#: static_collected/vm-detail.js:6405
#: static_collected/dashboard/vm-tour.1562cc89a659.js:36
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:36
#: static_collected/dashboard/vm-tour.js:36
msgid "" msgid ""
"During the tour please don't try the functions because it may lead to " "In this tab you can extend the expiration date of your virtual machine, add "
"graphical glitches, however " "tags and modify the name and description."
msgstr "A túra során még ne próbálja ki a bemutatott funkciókat." msgstr ""
"Ezen a lapon megújíthatja a virtuális gép lejáratát, címkéket adhat hozzá, "
#: dashboard/static/dashboard/vm-tour.js:45 "vagy módosíthatja a nevét, leírását."
#: static_collected/vm-detail.09737c69abc3.js:5878
#: static_collected/vm-detail.15d710d8ccf0.js:6414
#: static_collected/vm-detail.234990ca6ec1.js:6987
#: static_collected/vm-detail.47b1d21da259.js:5878
#: static_collected/vm-detail.9e1734ade019.js:5879
#: static_collected/vm-detail.c47949114749.js:6987
#: static_collected/vm-detail.e3f398067c8a.js:6916
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6414
#: static_collected/dashboard/vm-tour.1562cc89a659.js:45
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:45
#: static_collected/dashboard/vm-tour.js:45
msgid "Home tab"
msgstr "Kezdőoldal"
#: dashboard/static/dashboard/vm-tour.js:46 #: dashboard/static/dashboard/vm-tour.js:65
#: static_collected/vm-detail.09737c69abc3.js:5879
#: static_collected/vm-detail.15d710d8ccf0.js:6415
#: static_collected/vm-detail.234990ca6ec1.js:6988
#: static_collected/vm-detail.47b1d21da259.js:5879
#: static_collected/vm-detail.9e1734ade019.js:5880
#: static_collected/vm-detail.c47949114749.js:6988
#: static_collected/vm-detail.e3f398067c8a.js:6917
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6415
#: static_collected/dashboard/vm-tour.1562cc89a659.js:46
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:46
#: static_collected/dashboard/vm-tour.js:46
msgid "" msgid ""
"In this tab you can tag your virtual machine and modify the name and " "Please add a meaningful description to the virtual machine. Changing the "
"description." "name is also recommended, however you can choose a new name when saving the "
"template."
msgstr "" msgstr ""
"Ezen a lapon címkéket adhat a virtuális géphez, vagy módosíthatja a nevét, " "Kérjük, adjon meg egy informatív leírást. A név megváltoztatása is "
"leírását." "ajánlott, azonban a mentéskor is van a sablon nevének "
"megválasztására."
#: dashboard/static/dashboard/vm-tour.js:55 #: dashboard/static/dashboard/vm-tour.js:69
#: static_collected/vm-detail.09737c69abc3.js:5888 msgid ""
#: static_collected/vm-detail.15d710d8ccf0.js:6424 "You can change the lease to extend the expiration date. This will be the "
#: static_collected/vm-detail.234990ca6ec1.js:6997 "lease of the new template."
#: static_collected/vm-detail.47b1d21da259.js:5888 msgstr ""
#: static_collected/vm-detail.9e1734ade019.js:5889 "Megváltoztathatja a bérleti módot is a lejárat bővítéséhez. Az gép "
#: static_collected/vm-detail.c47949114749.js:6997 "bérleti módját örökli majd a sablon is."
#: static_collected/vm-detail.e3f398067c8a.js:6926
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6424
#: static_collected/dashboard/vm-tour.1562cc89a659.js:55
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:55
#: static_collected/dashboard/vm-tour.js:55
msgid "Resources tab"
msgstr "Erőforrások lap"
#: dashboard/static/dashboard/vm-tour.js:58 #: dashboard/static/dashboard/vm-tour.js:73
#: static_collected/vm-detail.09737c69abc3.js:5891
#: static_collected/vm-detail.15d710d8ccf0.js:6427
#: static_collected/vm-detail.234990ca6ec1.js:7000
#: static_collected/vm-detail.47b1d21da259.js:5891
#: static_collected/vm-detail.9e1734ade019.js:5892
#: static_collected/vm-detail.c47949114749.js:7000
#: static_collected/vm-detail.e3f398067c8a.js:6929
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6427
#: static_collected/dashboard/vm-tour.1562cc89a659.js:58
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:58
#: static_collected/dashboard/vm-tour.js:58
msgid "" msgid ""
"On the resources tab you can edit the CPU/RAM options and add/remove disks!" "On the resources tab you can edit the CPU/RAM options and add/remove disks "
"if you have required permissions."
msgstr "" msgstr ""
"Az erőforrások lapon szerkesztheti a CPU/memória-beállításokat, valamint " "Az erőforrások lapon szerkesztheti a CPU/memória-beállításokat, valamint "
"hozzáadhat és törölhet lemezeket." "hozzáadhat és törölhet lemezeket, ha van ehhez jogosultsága."
#: dashboard/static/dashboard/vm-tour.js:68
#: static_collected/vm-detail.09737c69abc3.js:5901
#: static_collected/vm-detail.15d710d8ccf0.js:6437
#: static_collected/vm-detail.234990ca6ec1.js:7010
#: static_collected/vm-detail.47b1d21da259.js:5901
#: static_collected/vm-detail.9e1734ade019.js:5902
#: static_collected/vm-detail.c47949114749.js:7010
#: static_collected/vm-detail.e3f398067c8a.js:6939
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6437
#: static_collected/dashboard/vm-tour.1562cc89a659.js:68
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:68
#: static_collected/dashboard/vm-tour.js:68
msgid "Resources"
msgstr "Erőforrások"
#: dashboard/static/dashboard/vm-tour.js:69 #: dashboard/static/dashboard/vm-tour.js:81
#: static_collected/vm-detail.09737c69abc3.js:5902 #: static_collected/vm-detail.09737c69abc3.js:5902
#: static_collected/vm-detail.15d710d8ccf0.js:6438 #: static_collected/vm-detail.15d710d8ccf0.js:6438
#: static_collected/vm-detail.234990ca6ec1.js:7011 #: static_collected/vm-detail.234990ca6ec1.js:7011
...@@ -410,7 +312,7 @@ msgstr "Erőforrások" ...@@ -410,7 +312,7 @@ msgstr "Erőforrások"
msgid "CPU priority" msgid "CPU priority"
msgstr "CPU prioritás" msgstr "CPU prioritás"
#: dashboard/static/dashboard/vm-tour.js:69 #: dashboard/static/dashboard/vm-tour.js:82
#: static_collected/vm-detail.09737c69abc3.js:5902 #: static_collected/vm-detail.09737c69abc3.js:5902
#: static_collected/vm-detail.15d710d8ccf0.js:6438 #: static_collected/vm-detail.15d710d8ccf0.js:6438
#: static_collected/vm-detail.234990ca6ec1.js:7011 #: static_collected/vm-detail.234990ca6ec1.js:7011
...@@ -426,7 +328,7 @@ msgstr "CPU prioritás" ...@@ -426,7 +328,7 @@ msgstr "CPU prioritás"
msgid "higher is better" msgid "higher is better"
msgstr "a nagyobb érték a jobb" msgstr "a nagyobb érték a jobb"
#: dashboard/static/dashboard/vm-tour.js:70 #: dashboard/static/dashboard/vm-tour.js:83
#: static_collected/vm-detail.09737c69abc3.js:5903 #: static_collected/vm-detail.09737c69abc3.js:5903
#: static_collected/vm-detail.15d710d8ccf0.js:6439 #: static_collected/vm-detail.15d710d8ccf0.js:6439
#: static_collected/vm-detail.234990ca6ec1.js:7012 #: static_collected/vm-detail.234990ca6ec1.js:7012
...@@ -442,7 +344,7 @@ msgstr "a nagyobb érték a jobb" ...@@ -442,7 +344,7 @@ msgstr "a nagyobb érték a jobb"
msgid "CPU count" msgid "CPU count"
msgstr "CPU-k száma" msgstr "CPU-k száma"
#: dashboard/static/dashboard/vm-tour.js:70 #: dashboard/static/dashboard/vm-tour.js:84
#: static_collected/vm-detail.09737c69abc3.js:5903 #: static_collected/vm-detail.09737c69abc3.js:5903
#: static_collected/vm-detail.15d710d8ccf0.js:6439 #: static_collected/vm-detail.15d710d8ccf0.js:6439
#: static_collected/vm-detail.234990ca6ec1.js:7012 #: static_collected/vm-detail.234990ca6ec1.js:7012
...@@ -458,7 +360,7 @@ msgstr "CPU-k száma" ...@@ -458,7 +360,7 @@ msgstr "CPU-k száma"
msgid "number of CPU cores." msgid "number of CPU cores."
msgstr "A CPU-magok száma." msgstr "A CPU-magok száma."
#: dashboard/static/dashboard/vm-tour.js:71 #: dashboard/static/dashboard/vm-tour.js:85
#: static_collected/vm-detail.09737c69abc3.js:5904 #: static_collected/vm-detail.09737c69abc3.js:5904
#: static_collected/vm-detail.15d710d8ccf0.js:6440 #: static_collected/vm-detail.15d710d8ccf0.js:6440
#: static_collected/vm-detail.234990ca6ec1.js:7013 #: static_collected/vm-detail.234990ca6ec1.js:7013
...@@ -474,7 +376,7 @@ msgstr "A CPU-magok száma." ...@@ -474,7 +376,7 @@ msgstr "A CPU-magok száma."
msgid "RAM amount" msgid "RAM amount"
msgstr "RAM mennyiség" msgstr "RAM mennyiség"
#: dashboard/static/dashboard/vm-tour.js:71 #: dashboard/static/dashboard/vm-tour.js:86
#: static_collected/vm-detail.09737c69abc3.js:5904 #: static_collected/vm-detail.09737c69abc3.js:5904
#: static_collected/vm-detail.15d710d8ccf0.js:6440 #: static_collected/vm-detail.15d710d8ccf0.js:6440
#: static_collected/vm-detail.234990ca6ec1.js:7013 #: static_collected/vm-detail.234990ca6ec1.js:7013
...@@ -490,23 +392,7 @@ msgstr "RAM mennyiség" ...@@ -490,23 +392,7 @@ msgstr "RAM mennyiség"
msgid "amount of RAM." msgid "amount of RAM."
msgstr "a memória mennyisége." msgstr "a memória mennyisége."
#: dashboard/static/dashboard/vm-tour.js:81 #: dashboard/static/dashboard/vm-tour.js:96
#: static_collected/vm-detail.09737c69abc3.js:5914
#: static_collected/vm-detail.15d710d8ccf0.js:6450
#: static_collected/vm-detail.234990ca6ec1.js:7023
#: static_collected/vm-detail.47b1d21da259.js:5914
#: static_collected/vm-detail.9e1734ade019.js:5915
#: static_collected/vm-detail.c47949114749.js:7023
#: static_collected/vm-detail.e3f398067c8a.js:6952
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6450
#: static_collected/dashboard/vm-tour.1562cc89a659.js:81
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:81
#: static_collected/dashboard/vm-tour.js:81
msgid "Disks"
msgstr "Lemezek"
#: dashboard/static/dashboard/vm-tour.js:82
#: static_collected/vm-detail.09737c69abc3.js:5915 #: static_collected/vm-detail.09737c69abc3.js:5915
#: static_collected/vm-detail.15d710d8ccf0.js:6451 #: static_collected/vm-detail.15d710d8ccf0.js:6451
#: static_collected/vm-detail.234990ca6ec1.js:7024 #: static_collected/vm-detail.234990ca6ec1.js:7024
...@@ -525,23 +411,7 @@ msgstr "" ...@@ -525,23 +411,7 @@ msgstr ""
"Hozzáadhat üres lemezeket, letölthet lemezképeket, vagy törölheti a " "Hozzáadhat üres lemezeket, letölthet lemezképeket, vagy törölheti a "
"meglévőket." "meglévőket."
#: dashboard/static/dashboard/vm-tour.js:92 #: dashboard/static/dashboard/vm-tour.js:105
#: static_collected/vm-detail.09737c69abc3.js:5925
#: static_collected/vm-detail.15d710d8ccf0.js:6461
#: static_collected/vm-detail.234990ca6ec1.js:7034
#: static_collected/vm-detail.47b1d21da259.js:5925
#: static_collected/vm-detail.9e1734ade019.js:5926
#: static_collected/vm-detail.c47949114749.js:7034
#: static_collected/vm-detail.e3f398067c8a.js:6963
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6461
#: static_collected/dashboard/vm-tour.1562cc89a659.js:92
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:92
#: static_collected/dashboard/vm-tour.js:92
msgid "Network tab"
msgstr "Hálózat lap"
#: dashboard/static/dashboard/vm-tour.js:93
#: static_collected/vm-detail.09737c69abc3.js:5926 #: static_collected/vm-detail.09737c69abc3.js:5926
#: static_collected/vm-detail.15d710d8ccf0.js:6462 #: static_collected/vm-detail.15d710d8ccf0.js:6462
#: static_collected/vm-detail.234990ca6ec1.js:7035 #: static_collected/vm-detail.234990ca6ec1.js:7035
...@@ -557,23 +427,7 @@ msgstr "Hálózat lap" ...@@ -557,23 +427,7 @@ msgstr "Hálózat lap"
msgid "You can add new network interfaces or remove existing ones here." msgid "You can add new network interfaces or remove existing ones here."
msgstr "Hozzáadhat új hálózati interfészeket, vagy törölheti a meglévőket." msgstr "Hozzáadhat új hálózati interfészeket, vagy törölheti a meglévőket."
#: dashboard/static/dashboard/vm-tour.js:102 #: dashboard/static/dashboard/vm-tour.js:109
#: static_collected/vm-detail.09737c69abc3.js:5935
#: static_collected/vm-detail.15d710d8ccf0.js:6471
#: static_collected/vm-detail.234990ca6ec1.js:7044
#: static_collected/vm-detail.47b1d21da259.js:5935
#: static_collected/vm-detail.9e1734ade019.js:5936
#: static_collected/vm-detail.c47949114749.js:7044
#: static_collected/vm-detail.e3f398067c8a.js:6973
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6471
#: static_collected/dashboard/vm-tour.1562cc89a659.js:102
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:102
#: static_collected/dashboard/vm-tour.js:102
msgid "Deploy"
msgstr "Indítás"
#: dashboard/static/dashboard/vm-tour.js:105
#: static_collected/vm-detail.09737c69abc3.js:5938 #: static_collected/vm-detail.09737c69abc3.js:5938
#: static_collected/vm-detail.15d710d8ccf0.js:6474 #: static_collected/vm-detail.15d710d8ccf0.js:6474
#: static_collected/vm-detail.234990ca6ec1.js:7047 #: static_collected/vm-detail.234990ca6ec1.js:7047
...@@ -589,55 +443,15 @@ msgstr "Indítás" ...@@ -589,55 +443,15 @@ msgstr "Indítás"
msgid "Deploy the virtual machine." msgid "Deploy the virtual machine."
msgstr "A virtuális gép elindítása." msgstr "A virtuális gép elindítása."
#: dashboard/static/dashboard/vm-tour.js:110
#: static_collected/vm-detail.09737c69abc3.js:5943
#: static_collected/vm-detail.15d710d8ccf0.js:6479
#: static_collected/vm-detail.234990ca6ec1.js:7052
#: static_collected/vm-detail.47b1d21da259.js:5943
#: static_collected/vm-detail.9e1734ade019.js:5944
#: static_collected/vm-detail.c47949114749.js:7052
#: static_collected/vm-detail.e3f398067c8a.js:6981
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6479
#: static_collected/dashboard/vm-tour.1562cc89a659.js:110
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:110
#: static_collected/dashboard/vm-tour.js:110
msgid "Connect"
msgstr "Csatlakozás"
#: dashboard/static/dashboard/vm-tour.js:113 #: dashboard/static/dashboard/vm-tour.js:113
#: static_collected/vm-detail.09737c69abc3.js:5946 msgid ""
#: static_collected/vm-detail.15d710d8ccf0.js:6482 "Use the CIRCLE client or the connection string to connect to the virtual "
#: static_collected/vm-detail.234990ca6ec1.js:7055 "machine."
#: static_collected/vm-detail.47b1d21da259.js:5946 msgstr ""
#: static_collected/vm-detail.9e1734ade019.js:5947 "Használja a CIRCLE klienst vagy a kapcsolódási adatokat a "
#: static_collected/vm-detail.c47949114749.js:7055 "virtuális géphez való csatlakozáshoz."
#: static_collected/vm-detail.e3f398067c8a.js:6984
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6482
#: static_collected/dashboard/vm-tour.1562cc89a659.js:113
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:113
#: static_collected/dashboard/vm-tour.js:113
msgid "Use the connection string or connect with your choice of client!"
msgstr "Használja a megadott parancsot, vagy kedvenc kliensét."
#: dashboard/static/dashboard/vm-tour.js:120
#: static_collected/vm-detail.09737c69abc3.js:5953
#: static_collected/vm-detail.15d710d8ccf0.js:6489
#: static_collected/vm-detail.234990ca6ec1.js:7062
#: static_collected/vm-detail.47b1d21da259.js:5953
#: static_collected/vm-detail.9e1734ade019.js:5954
#: static_collected/vm-detail.c47949114749.js:7062
#: static_collected/vm-detail.e3f398067c8a.js:6991
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6489
#: static_collected/dashboard/vm-tour.1562cc89a659.js:120
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:120
#: static_collected/dashboard/vm-tour.js:120
msgid "Customize the virtual machine"
msgstr "Szabja testre a gépet"
#: dashboard/static/dashboard/vm-tour.js:121 #: dashboard/static/dashboard/vm-tour.js:117
#: static_collected/vm-detail.09737c69abc3.js:5954 #: static_collected/vm-detail.09737c69abc3.js:5954
#: static_collected/vm-detail.15d710d8ccf0.js:6490 #: static_collected/vm-detail.15d710d8ccf0.js:6490
#: static_collected/vm-detail.234990ca6ec1.js:7063 #: static_collected/vm-detail.234990ca6ec1.js:7063
...@@ -657,23 +471,7 @@ msgstr "" ...@@ -657,23 +471,7 @@ msgstr ""
"Miután csatlakozott, végezze el a szükséges módosításokat, majd jelentkezzen " "Miután csatlakozott, végezze el a szükséges módosításokat, majd jelentkezzen "
"ki." "ki."
#: dashboard/static/dashboard/vm-tour.js:126 #: dashboard/static/dashboard/vm-tour.js:121
#: static_collected/vm-detail.09737c69abc3.js:5959
#: static_collected/vm-detail.15d710d8ccf0.js:6495
#: static_collected/vm-detail.234990ca6ec1.js:7068
#: static_collected/vm-detail.47b1d21da259.js:5959
#: static_collected/vm-detail.9e1734ade019.js:5960
#: static_collected/vm-detail.c47949114749.js:7068
#: static_collected/vm-detail.e3f398067c8a.js:6997
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6495
#: static_collected/dashboard/vm-tour.1562cc89a659.js:126
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:126
#: static_collected/dashboard/vm-tour.js:126
msgid "Save as"
msgstr "Mentés sablonként"
#: dashboard/static/dashboard/vm-tour.js:129
#: static_collected/vm-detail.09737c69abc3.js:5962 #: static_collected/vm-detail.09737c69abc3.js:5962
#: static_collected/vm-detail.15d710d8ccf0.js:6498 #: static_collected/vm-detail.15d710d8ccf0.js:6498
#: static_collected/vm-detail.234990ca6ec1.js:7071 #: static_collected/vm-detail.234990ca6ec1.js:7071
...@@ -692,39 +490,13 @@ msgstr "" ...@@ -692,39 +490,13 @@ msgstr ""
"Kattintson a „mentés sablonként” gombra, majd várjon, amíg a lemez mentése " "Kattintson a „mentés sablonként” gombra, majd várjon, amíg a lemez mentése "
"elkészül." "elkészül."
#: dashboard/static/dashboard/vm-tour.js:135 #: dashboard/static/dashboard/vm-tour.js:125
#: static_collected/vm-detail.09737c69abc3.js:5968
#: static_collected/vm-detail.15d710d8ccf0.js:6504
#: static_collected/vm-detail.234990ca6ec1.js:7077
#: static_collected/vm-detail.47b1d21da259.js:5968
#: static_collected/vm-detail.9e1734ade019.js:5969
#: static_collected/vm-detail.c47949114749.js:7077
#: static_collected/vm-detail.e3f398067c8a.js:7006
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6504
#: static_collected/dashboard/vm-tour.1562cc89a659.js:135
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:135
#: static_collected/dashboard/vm-tour.js:135
msgid "Finish"
msgstr "Befejezés"
#: dashboard/static/dashboard/vm-tour.js:138
#: static_collected/vm-detail.09737c69abc3.js:5971
#: static_collected/vm-detail.15d710d8ccf0.js:6507
#: static_collected/vm-detail.234990ca6ec1.js:7080
#: static_collected/vm-detail.47b1d21da259.js:5971
#: static_collected/vm-detail.9e1734ade019.js:5972
#: static_collected/vm-detail.c47949114749.js:7080
#: static_collected/vm-detail.e3f398067c8a.js:7009
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6507
#: static_collected/dashboard/vm-tour.1562cc89a659.js:138
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:138
#: static_collected/dashboard/vm-tour.js:138
msgid "" msgid ""
"This is the last message, if something is not clear you can do the the tour " "This is the last message, if something is not clear you can do the the tour "
"again!" "again."
msgstr "A túra véget ért. Ha valami nem érthető, újrakezdheti az útmutatót." msgstr ""
"A túra véget ért. Ha valami nem érthető, újrakezdheti az "
"útmutatót."
#: network/static/js/host.js:10 static_collected/all.047675ebf594.js:5239 #: network/static/js/host.js:10 static_collected/all.047675ebf594.js:5239
#: static_collected/all.0aecd87e873a.js:5309 #: static_collected/all.0aecd87e873a.js:5309
...@@ -834,6 +606,290 @@ msgstr "Eltávolítás" ...@@ -834,6 +606,290 @@ msgstr "Eltávolítás"
msgid "Are you sure you want to delete this device?" msgid "Are you sure you want to delete this device?"
msgstr "Biztosan törli ezt az eszközt?" msgstr "Biztosan törli ezt az eszközt?"
#: static_collected/vm-detail.09737c69abc3.js:5853
#: static_collected/vm-detail.15d710d8ccf0.js:6389
#: static_collected/vm-detail.234990ca6ec1.js:6962
#: static_collected/vm-detail.47b1d21da259.js:5853
#: static_collected/vm-detail.9e1734ade019.js:5854
#: static_collected/vm-detail.c47949114749.js:6962
#: static_collected/vm-detail.e3f398067c8a.js:6891
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6389
#: static_collected/dashboard/vm-tour.1562cc89a659.js:20
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:20
#: static_collected/dashboard/vm-tour.js:20
msgid "Prev"
msgstr "Vissza"
#: static_collected/vm-detail.09737c69abc3.js:5866
#: static_collected/vm-detail.15d710d8ccf0.js:6402
#: static_collected/vm-detail.234990ca6ec1.js:6975
#: static_collected/vm-detail.47b1d21da259.js:5866
#: static_collected/vm-detail.9e1734ade019.js:5867
#: static_collected/vm-detail.c47949114749.js:6975
#: static_collected/vm-detail.e3f398067c8a.js:6904
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6402
#: static_collected/dashboard/vm-tour.1562cc89a659.js:33
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:33
#: static_collected/dashboard/vm-tour.js:33
msgid "Template Tutorial Tour"
msgstr "Sablon-kalauz"
#: static_collected/vm-detail.09737c69abc3.js:5867
#: static_collected/vm-detail.15d710d8ccf0.js:6403
#: static_collected/vm-detail.234990ca6ec1.js:6976
#: static_collected/vm-detail.47b1d21da259.js:5867
#: static_collected/vm-detail.9e1734ade019.js:5868
#: static_collected/vm-detail.c47949114749.js:6976
#: static_collected/vm-detail.e3f398067c8a.js:6905
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6403
#: static_collected/dashboard/vm-tour.1562cc89a659.js:34
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:34
#: static_collected/dashboard/vm-tour.js:34
msgid ""
"Welcome to the template tutorial. In this quick tour, we gonna show you how "
"to do the steps described above."
msgstr ""
"Üdvözöli a sablon-kalauz. A túra során bemutatjuk, hogyan végezze el a fenti "
"lépéseket."
#: static_collected/vm-detail.09737c69abc3.js:5869
#: static_collected/vm-detail.15d710d8ccf0.js:6405
#: static_collected/vm-detail.234990ca6ec1.js:6978
#: static_collected/vm-detail.47b1d21da259.js:5869
#: static_collected/vm-detail.9e1734ade019.js:5870
#: static_collected/vm-detail.c47949114749.js:6978
#: static_collected/vm-detail.e3f398067c8a.js:6907
#: static_collected/vm-detail.js:6405
#: static_collected/dashboard/vm-tour.1562cc89a659.js:36
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:36
#: static_collected/dashboard/vm-tour.js:36
msgid ""
"During the tour please don't try the functions because it may lead to "
"graphical glitches, however "
msgstr "A túra során még ne próbálja ki a bemutatott funkciókat."
#: static_collected/vm-detail.09737c69abc3.js:5878
#: static_collected/vm-detail.15d710d8ccf0.js:6414
#: static_collected/vm-detail.234990ca6ec1.js:6987
#: static_collected/vm-detail.47b1d21da259.js:5878
#: static_collected/vm-detail.9e1734ade019.js:5879
#: static_collected/vm-detail.c47949114749.js:6987
#: static_collected/vm-detail.e3f398067c8a.js:6916
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6414
#: static_collected/dashboard/vm-tour.1562cc89a659.js:45
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:45
#: static_collected/dashboard/vm-tour.js:45
msgid "Home tab"
msgstr "Kezdőoldal"
#: static_collected/vm-detail.09737c69abc3.js:5879
#: static_collected/vm-detail.15d710d8ccf0.js:6415
#: static_collected/vm-detail.234990ca6ec1.js:6988
#: static_collected/vm-detail.47b1d21da259.js:5879
#: static_collected/vm-detail.9e1734ade019.js:5880
#: static_collected/vm-detail.c47949114749.js:6988
#: static_collected/vm-detail.e3f398067c8a.js:6917
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6415
#: static_collected/dashboard/vm-tour.1562cc89a659.js:46
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:46
#: static_collected/dashboard/vm-tour.js:46
msgid ""
"In this tab you can tag your virtual machine and modify the name and "
"description."
msgstr ""
"Ezen a lapon címkéket adhat a virtuális géphez, vagy módosíthatja a nevét, "
"leírását."
#: static_collected/vm-detail.09737c69abc3.js:5888
#: static_collected/vm-detail.15d710d8ccf0.js:6424
#: static_collected/vm-detail.234990ca6ec1.js:6997
#: static_collected/vm-detail.47b1d21da259.js:5888
#: static_collected/vm-detail.9e1734ade019.js:5889
#: static_collected/vm-detail.c47949114749.js:6997
#: static_collected/vm-detail.e3f398067c8a.js:6926
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6424
#: static_collected/dashboard/vm-tour.1562cc89a659.js:55
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:55
#: static_collected/dashboard/vm-tour.js:55
msgid "Resources tab"
msgstr "Erőforrások lap"
#: static_collected/vm-detail.09737c69abc3.js:5891
#: static_collected/vm-detail.15d710d8ccf0.js:6427
#: static_collected/vm-detail.234990ca6ec1.js:7000
#: static_collected/vm-detail.47b1d21da259.js:5891
#: static_collected/vm-detail.9e1734ade019.js:5892
#: static_collected/vm-detail.c47949114749.js:7000
#: static_collected/vm-detail.e3f398067c8a.js:6929
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6427
#: static_collected/dashboard/vm-tour.1562cc89a659.js:58
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:58
#: static_collected/dashboard/vm-tour.js:58
msgid ""
"On the resources tab you can edit the CPU/RAM options and add/remove disks!"
msgstr ""
"Az erőforrások lapon szerkesztheti a CPU/memória-beállításokat, valamint "
"hozzáadhat és törölhet lemezeket."
#: static_collected/vm-detail.09737c69abc3.js:5901
#: static_collected/vm-detail.15d710d8ccf0.js:6437
#: static_collected/vm-detail.234990ca6ec1.js:7010
#: static_collected/vm-detail.47b1d21da259.js:5901
#: static_collected/vm-detail.9e1734ade019.js:5902
#: static_collected/vm-detail.c47949114749.js:7010
#: static_collected/vm-detail.e3f398067c8a.js:6939
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6437
#: static_collected/dashboard/vm-tour.1562cc89a659.js:68
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:68
#: static_collected/dashboard/vm-tour.js:68
msgid "Resources"
msgstr "Erőforrások"
#: static_collected/vm-detail.09737c69abc3.js:5914
#: static_collected/vm-detail.15d710d8ccf0.js:6450
#: static_collected/vm-detail.234990ca6ec1.js:7023
#: static_collected/vm-detail.47b1d21da259.js:5914
#: static_collected/vm-detail.9e1734ade019.js:5915
#: static_collected/vm-detail.c47949114749.js:7023
#: static_collected/vm-detail.e3f398067c8a.js:6952
#: static_collected/vm-detail.e81fe84bf4c0.js:9
#: static_collected/vm-detail.js:6450
#: static_collected/dashboard/vm-tour.1562cc89a659.js:81
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:81
#: static_collected/dashboard/vm-tour.js:81
msgid "Disks"
msgstr "Lemezek"
#: static_collected/vm-detail.09737c69abc3.js:5925
#: static_collected/vm-detail.15d710d8ccf0.js:6461
#: static_collected/vm-detail.234990ca6ec1.js:7034
#: static_collected/vm-detail.47b1d21da259.js:5925
#: static_collected/vm-detail.9e1734ade019.js:5926
#: static_collected/vm-detail.c47949114749.js:7034
#: static_collected/vm-detail.e3f398067c8a.js:6963
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6461
#: static_collected/dashboard/vm-tour.1562cc89a659.js:92
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:92
#: static_collected/dashboard/vm-tour.js:92
msgid "Network tab"
msgstr "Hálózat lap"
#: static_collected/vm-detail.09737c69abc3.js:5935
#: static_collected/vm-detail.15d710d8ccf0.js:6471
#: static_collected/vm-detail.234990ca6ec1.js:7044
#: static_collected/vm-detail.47b1d21da259.js:5935
#: static_collected/vm-detail.9e1734ade019.js:5936
#: static_collected/vm-detail.c47949114749.js:7044
#: static_collected/vm-detail.e3f398067c8a.js:6973
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6471
#: static_collected/dashboard/vm-tour.1562cc89a659.js:102
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:102
#: static_collected/dashboard/vm-tour.js:102
msgid "Deploy"
msgstr "Indítás"
#: static_collected/vm-detail.09737c69abc3.js:5943
#: static_collected/vm-detail.15d710d8ccf0.js:6479
#: static_collected/vm-detail.234990ca6ec1.js:7052
#: static_collected/vm-detail.47b1d21da259.js:5943
#: static_collected/vm-detail.9e1734ade019.js:5944
#: static_collected/vm-detail.c47949114749.js:7052
#: static_collected/vm-detail.e3f398067c8a.js:6981
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6479
#: static_collected/dashboard/vm-tour.1562cc89a659.js:110
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:110
#: static_collected/dashboard/vm-tour.js:110
msgid "Connect"
msgstr "Csatlakozás"
#: static_collected/vm-detail.09737c69abc3.js:5946
#: static_collected/vm-detail.15d710d8ccf0.js:6482
#: static_collected/vm-detail.234990ca6ec1.js:7055
#: static_collected/vm-detail.47b1d21da259.js:5946
#: static_collected/vm-detail.9e1734ade019.js:5947
#: static_collected/vm-detail.c47949114749.js:7055
#: static_collected/vm-detail.e3f398067c8a.js:6984
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6482
#: static_collected/dashboard/vm-tour.1562cc89a659.js:113
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:113
#: static_collected/dashboard/vm-tour.js:113
msgid "Use the connection string or connect with your choice of client!"
msgstr "Használja a megadott parancsot, vagy kedvenc kliensét."
#: static_collected/vm-detail.09737c69abc3.js:5953
#: static_collected/vm-detail.15d710d8ccf0.js:6489
#: static_collected/vm-detail.234990ca6ec1.js:7062
#: static_collected/vm-detail.47b1d21da259.js:5953
#: static_collected/vm-detail.9e1734ade019.js:5954
#: static_collected/vm-detail.c47949114749.js:7062
#: static_collected/vm-detail.e3f398067c8a.js:6991
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6489
#: static_collected/dashboard/vm-tour.1562cc89a659.js:120
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:120
#: static_collected/dashboard/vm-tour.js:120
msgid "Customize the virtual machine"
msgstr "Szabja testre a gépet"
#: static_collected/vm-detail.09737c69abc3.js:5959
#: static_collected/vm-detail.15d710d8ccf0.js:6495
#: static_collected/vm-detail.234990ca6ec1.js:7068
#: static_collected/vm-detail.47b1d21da259.js:5959
#: static_collected/vm-detail.9e1734ade019.js:5960
#: static_collected/vm-detail.c47949114749.js:7068
#: static_collected/vm-detail.e3f398067c8a.js:6997
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6495
#: static_collected/dashboard/vm-tour.1562cc89a659.js:126
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:126
#: static_collected/dashboard/vm-tour.js:126
msgid "Save as"
msgstr "Mentés sablonként"
#: static_collected/vm-detail.09737c69abc3.js:5968
#: static_collected/vm-detail.15d710d8ccf0.js:6504
#: static_collected/vm-detail.234990ca6ec1.js:7077
#: static_collected/vm-detail.47b1d21da259.js:5968
#: static_collected/vm-detail.9e1734ade019.js:5969
#: static_collected/vm-detail.c47949114749.js:7077
#: static_collected/vm-detail.e3f398067c8a.js:7006
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6504
#: static_collected/dashboard/vm-tour.1562cc89a659.js:135
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:135
#: static_collected/dashboard/vm-tour.js:135
msgid "Finish"
msgstr "Befejezés"
#: static_collected/vm-detail.09737c69abc3.js:5971
#: static_collected/vm-detail.15d710d8ccf0.js:6507
#: static_collected/vm-detail.234990ca6ec1.js:7080
#: static_collected/vm-detail.47b1d21da259.js:5971
#: static_collected/vm-detail.9e1734ade019.js:5972
#: static_collected/vm-detail.c47949114749.js:7080
#: static_collected/vm-detail.e3f398067c8a.js:7009
#: static_collected/vm-detail.e81fe84bf4c0.js:10
#: static_collected/vm-detail.js:6507
#: static_collected/dashboard/vm-tour.1562cc89a659.js:138
#: static_collected/dashboard/vm-tour.7b4cf596f543.js:138
#: static_collected/dashboard/vm-tour.js:138
msgid ""
"This is the last message, if something is not clear you can do the the tour "
"again!"
msgstr "A túra véget ért. Ha valami nem érthető, újrakezdheti az útmutatót."
#: static_collected/vm-detail.e81fe84bf4c0.js:9 #: static_collected/vm-detail.e81fe84bf4c0.js:9
msgid "" msgid ""
"During the tour please don't try the functions because it may lead to " "During the tour please don't try the functions because it may lead to "
......
...@@ -88,7 +88,9 @@ class Node(OperatedMixin, TimeStampedModel): ...@@ -88,7 +88,9 @@ class Node(OperatedMixin, TimeStampedModel):
class Meta: class Meta:
app_label = 'vm' app_label = 'vm'
db_table = 'vm_node' db_table = 'vm_node'
permissions = () permissions = (
('view_statistics', _('Can view Node box and statistics.')),
)
ordering = ('-enabled', 'normalized_name') ordering = ('-enabled', 'normalized_name')
def __unicode__(self): def __unicode__(self):
...@@ -288,6 +290,11 @@ class Node(OperatedMixin, TimeStampedModel): ...@@ -288,6 +290,11 @@ class Node(OperatedMixin, TimeStampedModel):
@property @property
@node_available @node_available
def driver_version(self):
return self.info.get('driver_version')
@property
@node_available
def cpu_usage(self): def cpu_usage(self):
return self.monitor_info.get('cpu.percent') / 100 return self.monitor_info.get('cpu.percent') / 100
......
...@@ -717,7 +717,7 @@ class SaveAsTemplateOperation(InstanceOperation): ...@@ -717,7 +717,7 @@ class SaveAsTemplateOperation(InstanceOperation):
with_shutdown=True, clone=False, task=None, **kwargs): with_shutdown=True, clone=False, task=None, **kwargs):
try: try:
self.instance._cleanup(parent_activity=activity, user=user) self.instance._cleanup(parent_activity=activity, user=user)
except Instance.WrongStateError: except:
pass pass
if with_shutdown: if with_shutdown:
...@@ -1135,6 +1135,7 @@ class ActivateOperation(NodeOperation): ...@@ -1135,6 +1135,7 @@ class ActivateOperation(NodeOperation):
def _operation(self): def _operation(self):
self.node.enabled = True self.node.enabled = True
self.node.schedule_enabled = True self.node.schedule_enabled = True
self.node.get_info(invalidate_cache=True)
self.node.save() self.node.save()
...@@ -1156,6 +1157,7 @@ class PassivateOperation(NodeOperation): ...@@ -1156,6 +1157,7 @@ class PassivateOperation(NodeOperation):
def _operation(self): def _operation(self):
self.node.enabled = True self.node.enabled = True
self.node.schedule_enabled = False self.node.schedule_enabled = False
self.node.get_info(invalidate_cache=True)
self.node.save() self.node.save()
...@@ -1214,13 +1216,27 @@ class RecoverOperation(InstanceOperation): ...@@ -1214,13 +1216,27 @@ class RecoverOperation(InstanceOperation):
except Instance.InstanceDestroyedError: except Instance.InstanceDestroyedError:
pass pass
def _operation(self): def _operation(self, user, activity):
for disk in self.instance.disks.all(): with activity.sub_activity(
disk.destroyed = None 'recover_instance',
disk.restore() readable_name=ugettext_noop("recover instance")):
disk.save() self.instance.destroyed_at = None
self.instance.destroyed_at = None for disk in self.instance.disks.all():
self.instance.save() disk.destroyed = None
disk.restore()
disk.save()
self.instance.status = 'PENDING'
self.instance.save()
try:
self.instance.renew(parent_activity=activity)
except:
pass
if self.instance.template:
for net in self.instance.template.interface_set.all():
self.instance.add_interface(
parent_activity=activity, user=user, vlan=net.vlan)
@register_operation @register_operation
......
...@@ -2,4 +2,5 @@ ...@@ -2,4 +2,5 @@
-r base.txt -r base.txt
coverage==3.7.1 coverage==3.7.1
django-debug-toolbar==1.1 django-debug-toolbar==1.1
django-rosetta==0.7.4
Sphinx==1.2.2 Sphinx==1.2.2
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment