Commit ac5f3142 by Őry Máté

Merge branch 'connect-via-client' into 'master'

Connect via Client support

fixes #222
parents dd87b7e7 19408a06
......@@ -368,7 +368,7 @@ if get_env_variable('DJANGO_SAML', 'FALSE') == 'TRUE':
from shutilwhich import which
from saml2 import BINDING_HTTP_POST, BINDING_HTTP_REDIRECT
INSTALLED_APPS += (
INSTALLED_APPS += (
'djangosaml2',
)
AUTHENTICATION_BACKENDS = (
......@@ -465,3 +465,6 @@ SESSION_COOKIE_NAME = "csessid%x" % (((getnode() // 139) ^
(getnode() % 983)) & 0xffff)
MAX_NODE_RAM = get_env_variable("MAX_NODE_RAM", 1024)
# Url to download the client: (e.g. http://circlecloud.org/client/download/)
CLIENT_DOWNLOAD_URL = get_env_variable('CLIENT_DOWNLOAD_URL', 'http://circlecloud.org/client/download/')
......@@ -383,6 +383,19 @@ $(function () {
$('.notification-messages').load("/dashboard/notifications/");
$('#notification-button a span[class*="badge-pulse"]').remove();
});
/* on the client confirmation button fire the clientInstalledAction */
$(document).on("click", "#client-check-button", function(event) {
var connectUri = $('#connect-uri').val();
clientInstalledAction(connectUri);
return false;
});
$("#dashboard-vm-details-connect-button").click(function(event) {
var connectUri = $(this).attr("href");
clientInstalledAction(connectUri);
return false;
});
});
function generateVmHTML(pk, name, host, icon, _status, fav, is_last) {
......@@ -589,6 +602,12 @@ function addModalConfirmation(func, data) {
});
}
function clientInstalledAction(location) {
setCookie('downloaded_client', true, 365 * 24 * 60 * 60, "/");
window.location.href = location;
$('#confirmation-modal').modal("hide");
}
// for AJAX calls
/**
* Getter for user cookies
......@@ -611,6 +630,14 @@ function getCookie(name) {
return cookieValue;
}
function setCookie(name, value, seconds, path) {
if (seconds!=null) {
var today = new Date();
var expire = new Date();
expire.setTime(today.getTime() + seconds);
}
document.cookie = name+"="+escape(value)+"; expires="+expire.toUTCString()+"; path="+path;
}
/* no js compatibility */
function noJS() {
......
......@@ -378,8 +378,14 @@ function checkNewActivity(runs) {
}
$("#vm-details-state span").html(data['human_readable_status'].toUpperCase());
if(data['status'] == "RUNNING") {
if(data['connect_uri']) {
$("#dashboard-vm-details-connect-button").removeClass('disabled');
}
$("[data-target=#_console]").attr("data-toggle", "pill").attr("href", "#console").parent("li").removeClass("disabled");
} else {
if(data['connect_uri']) {
$("#dashboard-vm-details-connect-button").addClass('disabled');
}
$("[data-target=#_console]").attr("data-toggle", "_pill").attr("href", "#").parent("li").addClass("disabled");
}
......
......@@ -115,7 +115,7 @@ $(function() {
$('#confirmation-modal').modal("hide");
updateStatuses(1);
/* if there are messages display them */
if(data.messages && data.messages.length > 0) {
addMessage(data.messages.join("<br />"), "danger");
......@@ -123,7 +123,7 @@ $(function() {
},
error: function(xhr, textStatus, error) {
$('#confirmation-modal').modal("hide");
if (xhr.status == 500) {
addMessage("500 Internal Server Error", "danger");
} else {
......@@ -145,7 +145,7 @@ $(function() {
// this didn't work ;;
// var th = $("this").find("th");
$(".table-sorting").hide();
$(".vm-list-table thead th i").remove();
var icon_html = '<i class="fa fa-sort-' + (data.direction == "desc" ? "desc" : "asc") + ' pull-right"></i>';
......@@ -160,13 +160,13 @@ $(function() {
});
$(document).on("click", ".mass-migrate-node", function() {
$(this).find('input[type="radio"]').prop("checked", true);
$(this).find('input[type="radio"]').prop("checked", true);
});
if(checkStatusUpdate() || $("#vm-list-table tbody tr").length >= 100) {
updateStatuses(1);
}
});
......@@ -209,10 +209,10 @@ function updateStatuses(runs) {
$(this).remove();
}
});
if(checkStatusUpdate()) {
setTimeout(
function() {updateStatuses(runs + 1)},
function() {updateStatuses(runs + 1)},
1000 + Math.exp(runs * 0.05)
);
}
......@@ -239,7 +239,7 @@ function collectIds(rows) {
for(var i = 0; i < rows.length; i++) {
ids.push(rows[i].vm);
}
return ids;
return ids;
}
function setRowColor(row) {
......
{% load i18n %}
<p>
{% blocktrans %}
To effortlessly connect to all kind of virtual machines you have to install the <strong>CIRCLE Client</strong>.
{% endblocktrans %}
</p>
<p class="text-info">
{% blocktrans %}
To install the <strong>CIRCLE Client</strong> click on the <strong>Download the Client</strong> button.
The button takes you to the installation detail page, where you can choose your operating system and start
the download or read more detailed information about the <strong>Client</strong>. The program can be installed on Windows XP (and above)
or Debian based Linux operating systems. To successfully install the client you have to have admin (root or elevated) rights.
After the installation complete clicking on the <strong>I have the Client installed</strong> button will launch the appropriate tool
designed for that connection with necessarily predefined configurations. This option will also save your answer and this prompt about
installation will not pop up again.
{% endblocktrans %}
</p>
<br>
<div class="pull-right">
<form method="POST" id="dashboard-client-check" action="">
{% csrf_token %}
<a class="btn btn-default" href="{% url "dashboard.views.detail" pk=instance.pk %}" data-dismiss="modal">{% trans "Cancel" %}</a>
<a class="btn btn-info" href="{{ client_download_url }}" traget="_blank">{% trans "Download the Client" %}</a>
<button data-dismiss="modal" id="client-check-button" type="submit" class="btn btn-success" title="{% trans "I downloaded and installed the client and I want to connect using it. This choice will be saved to your compuer" %}">
<i class="fa fa-external-link"></i> {% trans "I have the Client installed" %}
</button>
<input id="connect-uri" name="connect-uri" type="hidden" value="{% if instance.get_connect_uri %}{{ instance.get_connect_uri}}{% endif %}" />
<input name="vm" type="hidden" value="{% if instance.get_connect_uri %}{{ instance.pk}}{% endif %}" />
</form>
</div>
\ No newline at end of file
<a data-group-pk="{{ record.pk }}"
class="btn btn-danger btn-xs real-link group-delete"
<a data-group-pk="{{ record.pk }}"
class="btn btn-danger btn-xs real-link group-delete"
href="{% url "dashboard.views.delete-group" pk=record.pk %}?next={{ request.path }}">
<i class="fa fa-trash-o"></i>
</a>
......@@ -3,10 +3,10 @@
<div class="panel-heading">
<div class="pull-right toolbar">
<div class="btn-group">
<a href="#index-graph-view" data-index-box="vm" class="btn btn-default btn-xs"
<a href="#index-graph-view" data-index-box="vm" class="btn btn-default btn-xs"
data-container="body"
title="{% trans "summary view" %}"><i class="fa fa-dashboard"></i></a>
<a href="#index-list-view" data-index-box="vm" class="btn btn-default btn-xs disabled"
<a href="#index-list-view" data-index-box="vm" class="btn btn-default btn-xs disabled"
data-container="body"
title="{% trans "list view" %}"><i class="fa fa-list"></i></a>
</div>
......@@ -50,7 +50,7 @@
<div class="row">
<form action="{% url "dashboard.views.vm-list" %}" method="GET" id="dashboard-vm-search-form">
<div class="col-sm-6 col-xs-6 input-group input-group-sm">
<input id="dashboard-vm-search-input" type="text" class="form-control" name="s"
<input id="dashboard-vm-search-input" type="text" class="form-control" name="s"
placeholder="{% trans "Search..." %}" />
<div class="input-group-btn">
<button type="submit" class="form-control btn btn-primary"><i class="fa fa-search"></i></button>
......
......@@ -23,7 +23,7 @@
{{ search_form.s }}
<div class="input-group-btn">
{{ search_form.stype }}
<button type="submit" class="btn btn-primary input-tags">
<button type="submit" class="btn btn-primary input-tags">
<i class="fa fa-search"></i>
</button>
</div>
......
......@@ -133,8 +133,21 @@
<i class="fa fa-copy" title="{% trans "Select all" %}"></i>
</span>
</div>
{% endfor %}
{% if instance.get_connect_uri %}
<div id="dashboard-vm-details-connect" class="operation-wrapper">
{% 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" %}">
<i class="fa fa-external-link"></i> {% trans "Connect" %}
</a>
<a href="{% url "dashboard.views.client-check" %}?vm={{ instance.pk }}">{% trans "Download client" %}</a>
{% else %}
<a id="dashboard-vm-details-connect-download-button" class="btn btn-xs btn-default operation " href="{% url "dashboard.views.client-check" %}?vm={{ instance.pk }}" title="{% trans "Download the CIRCLE Client" %}">
<i class="fa fa-external-link"></i> {% trans "Connect (download client)" %}
</a>
{% endif %}
</div>
{% endif %}
</div>
<div class="col-md-8" id="vm-detail-pane">
<div class="panel panel-default" id="vm-detail-panel">
......
......@@ -21,7 +21,7 @@
<strong>{% trans "Group actions" %}</strong>
<button id="vm-list-group-select-all" class="btn btn-info btn-xs">{% trans "Select all" %}</button>
{% for o in ops %}
<a href="{{ o.get_url }}" class="btn btn-xs btn-{{ o.effect }} mass-operation"
<a href="{{ o.get_url }}" class="btn btn-xs btn-{{ o.effect }} mass-operation"
title="{{ o.name|capfirst }}" disabled>
<i class="fa fa-{{ o.icon }}"></i>
</a>
......@@ -34,12 +34,12 @@
<div class="input-group-btn">
{{ search_form.stype }}
</div>
<label class="input-group-addon input-tags" title="{% trans "Include deleted VMs" %}"
<label class="input-group-addon input-tags" title="{% trans "Include deleted VMs" %}"
id="vm-list-search-checkbox-span" data-container="body">
{{ search_form.include_deleted }}
</label>
<div class="input-group-btn">
<button type="submit" class="btn btn-primary input-tags">
<button type="submit" class="btn btn-primary input-tags">
<i class="fa fa-search"></i>
</button>
</div>
......
......@@ -45,6 +45,7 @@ from .views import (
VmTraitsUpdate, VmRawDataUpdate,
GroupPermissionsView,
LeaseAclUpdateView,
ClientCheck,
)
autocomplete_light.autodiscover()
......@@ -204,4 +205,6 @@ urlpatterns = patterns(
name="dashboard.views.store-new-directory"),
url(r"^store/refresh_toplist$", store_refresh_toplist,
name="dashboard.views.store-refresh-toplist"),
url(r"^client/check$", ClientCheck.as_view(),
name="dashboard.views.client-check"),
)
......@@ -411,6 +411,9 @@ class VmDetailView(CheckedDetailView):
context['can_change_resources'] = self.request.user.has_perm(
"vm.change_resources")
# client info
context['client_download'] = self.request.COOKIES.get(
'downloaded_client')
# can link template
context['can_link_template'] = (
instance.template and instance.template.has_level(user, "operator")
......@@ -1531,6 +1534,37 @@ class GroupAclUpdateView(AclUpdateView):
return super(GroupAclUpdateView, self).get_object().profile
class ClientCheck(LoginRequiredMixin, TemplateView):
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(ClientCheck, self).get_context_data(*args, **kwargs)
context.update({
'box_title': _('About CIRCLE Client'),
'ajax_title': False,
'client_download_url': settings.CLIENT_DOWNLOAD_URL,
'template': "dashboard/_client-check.html",
'instance': get_object_or_404(
Instance, pk=self.request.GET.get('vm')),
})
if not context['instance'].has_level(self.request.user, 'operator'):
raise PermissionDenied()
return context
def post(self, request, *args, **kwargs):
instance = get_object_or_404(Instance, pk=request.POST.get('vm'))
if not instance.has_level(request.user, 'operator'):
raise PermissionDenied()
response = HttpResponseRedirect(instance.get_absolute_url())
response.set_cookie('downloaded_client', 'True', 365 * 24 * 60 * 60)
return response
class TemplateChoose(LoginRequiredMixin, TemplateView):
def get_template_names(self):
......@@ -2675,6 +2709,7 @@ def vm_activity(request, pk):
if not show_all:
activities = activities[:10]
response['connect_uri'] = instance.get_connect_uri()
response['human_readable_status'] = instance.get_status_display()
response['status'] = instance.status
response['icon'] = instance.get_status_icon()
......
......@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-09-03 12:57+0200\n"
"PO-Revision-Date: 2014-09-03 12:50+0200\n"
"POT-Creation-Date: 2014-09-03 18:49+0200\n"
"PO-Revision-Date: 2014-09-03 19:00+0200\n"
"Last-Translator: Mate Ory <ory.mate@ik.bme.hu>\n"
"Language-Team: Hungarian <cloud@ik.bme.hu>\n"
"Language: hu\n"
......@@ -476,7 +476,7 @@ msgstr "Műveletek"
#: dashboard/tables.py:152 dashboard/templates/dashboard/_vm-create-2.html:38
#: dashboard/templates/dashboard/node-detail.html:78
#: dashboard/templates/dashboard/vm-detail.html:150
#: dashboard/templates/dashboard/vm-detail.html:163
msgid "Resources"
msgstr "Erőforrások"
......@@ -531,214 +531,218 @@ msgstr "Érvénytelen sablon."
msgid "console access"
msgstr "konzolhozzáférés"
#: dashboard/views.py:443
#: dashboard/views.py:446
msgid "VM successfully renamed."
msgstr "A virtuális gép átnevezésre került."
#: dashboard/views.py:467
#: dashboard/views.py:470
msgid "VM description successfully updated."
msgstr "A VM leírása megváltoztatásra került."
#: dashboard/views.py:544
#: dashboard/views.py:547
msgid "There is a problem with your input."
msgstr "A megadott érték nem megfelelő."
#: dashboard/views.py:546
#: dashboard/views.py:549
msgid "Unknown error."
msgstr "Ismeretlen hiba."
#: dashboard/views.py:687
#: dashboard/views.py:690
msgid "Could not start operation."
msgstr "A művelet megkezdése meghiúsult."
#: dashboard/views.py:704
#: dashboard/views.py:707
msgid "Operation failed."
msgstr "A művelet meghiúsult."
#: dashboard/views.py:709
#: dashboard/views.py:712
msgid "Operation succeeded."
msgstr "A művelet sikeresen végrehajtásra került."
#: dashboard/views.py:711
#: dashboard/views.py:714
msgid "Operation is started."
msgstr "A művelet megkezdődött."
#: dashboard/views.py:948
#: dashboard/views.py:951
msgid "The token has expired."
msgstr "A token lejárt."
#: dashboard/views.py:1136
#: dashboard/views.py:1139
#, python-format
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."
#: dashboard/views.py:1152
#: dashboard/views.py:1155
#, python-format
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."
#: dashboard/views.py:1230
#: dashboard/views.py:1233
msgid "Node successfully renamed."
msgstr "A csomópont átnevezésre került."
#: dashboard/views.py:1324
#: dashboard/views.py:1327
#, python-format
msgid "User \"%s\" not found."
msgstr "Nem található „%s” felhasználó."
#: dashboard/views.py:1340
#: dashboard/views.py:1343
msgid "Group successfully renamed."
msgstr "A csoport átnevezésre került."
#: dashboard/views.py:1371
#: dashboard/views.py:1374
#, python-format
msgid "Acl user/group %(w)s successfully modified."
msgstr "A(z) %(w)s ACL felhasználó/csoport módosításra került."
#: dashboard/views.py:1373
#: dashboard/views.py:1376
#, python-format
msgid "Acl user/group %(w)s successfully added."
msgstr "A(z) %(w)s ACL felhasználó/csoport hozzáadásra került."
#: dashboard/views.py:1375
#: dashboard/views.py:1378
#, python-format
msgid "Acl user/group %(w)s successfully removed."
msgstr "A(z) %(w)s ACL felhasználó/csoport törlésre került."
#: dashboard/views.py:1459
#: dashboard/views.py:1462
msgid ""
"The original owner cannot be removed, however you can transfer ownership."
msgstr "Az eredeti tulajdonos nem törölhető, azonban a tulajdon átruházható."
#: dashboard/views.py:1495
#: dashboard/views.py:1498
#, python-format
msgid "User \"%s\" has already access to this object."
msgstr "„%s” felhasználó már hozzáfér az objektumhoz."
#: dashboard/views.py:1504
#: dashboard/views.py:1507
#, python-format
msgid "Group \"%s\" has already access to this object."
msgstr "„%s” csoport már hozzáfér az objektumhoz."
#: dashboard/views.py:1509
#: dashboard/views.py:1512
#, python-format
msgid "User or group \"%s\" not found."
msgstr "Nem található „%s” felhasználó vagy csoport."
#: dashboard/views.py:1547
#: dashboard/views.py:1548
msgid "About CIRCLE Client"
msgstr "A CIRCLE kliensről"
#: dashboard/views.py:1581
msgid "Choose template"
msgstr "Válasszon sablont"
#: dashboard/views.py:1562
#: dashboard/views.py:1596
msgid "Select an option to proceed."
msgstr "Válasszon a folytatáshoz."
#: dashboard/views.py:1593
#: dashboard/views.py:1627
msgid "Create a new base VM"
msgstr "Alap VM létrehozása"
#: dashboard/views.py:1649
#: dashboard/views.py:1683
msgid "Successfully modified template."
msgstr "A sablon módosításra került."
#: dashboard/views.py:1755
#: dashboard/views.py:1789
msgid "Error during filtering."
msgstr "A szűrés sikertelen."
#: dashboard/views.py:1780
#: dashboard/views.py:1814
msgid "Template successfully deleted."
msgstr "A sablon törlésre került."
#: dashboard/views.py:1985
#: dashboard/views.py:2019
msgid "Member successfully removed from group."
msgstr "A csoporttag eltávolításra került."
#: dashboard/views.py:2026
#: dashboard/views.py:2060
msgid "Future user successfully removed from group."
msgstr "A leendő csoporttag eltávolításra került."
#: dashboard/views.py:2053
#: dashboard/views.py:2087
msgid "Group successfully deleted."
msgstr "A csoport törlésre került."
#: dashboard/views.py:2102
#: dashboard/views.py:2136
msgid "Customize VM"
msgstr "VM testreszabása"
#: dashboard/views.py:2110
#: dashboard/views.py:2144
msgid "Create a VM"
msgstr "VM létrehozása"
#: dashboard/views.py:2179
#: dashboard/views.py:2213
#, python-format
msgid "Successfully created %(count)d VM."
msgid_plural "Successfully created %(count)d VMs."
msgstr[0] "%(count)d VM létrehozásra került."
msgstr[1] "%(count)d VM létrehozásra került."
#: dashboard/views.py:2184
#: dashboard/views.py:2218
msgid "VM successfully created."
msgstr "VM létrehozásra került."
#: dashboard/views.py:2213
#: dashboard/views.py:2247
#, python-format
msgid "Instance limit (%d) exceeded."
msgstr "A példányok létrehozási korlátját (%d) túllépte."
#: dashboard/views.py:2273
#: dashboard/views.py:2307
msgid "Node successfully created."
msgstr "A csomópont létrehozásra került."
#: dashboard/views.py:2301
#: dashboard/views.py:2335
msgid "Create a Group"
msgstr "Csoport létrehozása"
#: dashboard/views.py:2317
#: dashboard/views.py:2351
msgid "Group successfully created."
msgstr "A csoport létrehozásra került."
#: dashboard/views.py:2331
#: dashboard/views.py:2365
msgid "Group is successfully updated."
msgstr "A csoport frissítésre került."
#: dashboard/views.py:2394
#: dashboard/views.py:2428
msgid "Node successfully deleted."
msgstr "A csomópont törlésre került."
#: dashboard/views.py:2441
#: dashboard/views.py:2475
msgid "Trait successfully added to node."
msgstr "A csomópontjellemző hozzáadásra került."
#: dashboard/views.py:2486
#: dashboard/views.py:2520
msgid "Node successfully changed status."
msgstr "A csomópont állapota megváltoztatásra került."
#: dashboard/views.py:2533
#: dashboard/views.py:2567
msgid "Node successfully flushed."
msgstr "A csomópont ürítésre kerül."
#: dashboard/views.py:2552
#: dashboard/views.py:2586
msgid "Port delete confirmation"
msgstr "Porteltávolítás megerősítése"
#: dashboard/views.py:2553
#: dashboard/views.py:2587
#, python-format
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?"
#: dashboard/views.py:2568
#: dashboard/views.py:2602
msgid "Port successfully removed."
msgstr "A port eltávolításra került."
#: dashboard/views.py:2590
#: dashboard/views.py:2624
msgid "Successfully created a new lease."
msgstr "Új bérlési mód létrehozásra került."
#: dashboard/views.py:2605
#: dashboard/views.py:2639
msgid "Successfully modified lease."
msgstr "A bérlési mód megváltoztatásra került."
#: dashboard/views.py:2635
#: dashboard/views.py:2669
msgid ""
"You can't delete this lease because some templates are still using it, "
"modify these to proceed: "
......@@ -746,19 +750,19 @@ msgstr ""
"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: "
#: dashboard/views.py:2652
#: dashboard/views.py:2686
msgid "Lease successfully deleted."
msgstr "A bérlési mód törlésre került."
#: dashboard/views.py:2734
#: dashboard/views.py:2769
msgid "Can not find specified user."
msgstr "Nem található a megadott felhasználó."
#: dashboard/views.py:2750
#: dashboard/views.py:2785
msgid "Ownership offer"
msgstr "Átruházási ajánlat"
#: dashboard/views.py:2751
#: dashboard/views.py:2786
#, python-format
msgid ""
"%(user)s offered you to take the ownership of his/her virtual machine called "
......@@ -768,49 +772,49 @@ msgstr ""
"%(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>"
#: dashboard/views.py:2757
#: dashboard/views.py:2792
msgid "Can not notify selected user."
msgstr "A kiválaszott felhasználó értesítése sikertelen."
#: dashboard/views.py:2760
#: dashboard/views.py:2795
#, python-format
msgid "User %s is notified about the offer."
msgstr "%s felhasználó értesítésre került az ajánlatról."
#: dashboard/views.py:2771
#: dashboard/views.py:2806
msgid "Ownership successfully transferred to you."
msgstr "A tulajdon átruházásra került."
#: dashboard/views.py:2784
#: dashboard/views.py:2819
msgid "This token is for an other user."
msgstr "A token más felhasználó nevére szól."
#: dashboard/views.py:2787
#: dashboard/views.py:2822
msgid "This token is invalid or has expired."
msgstr "A token érvénytelen vagy lejárt."
#: dashboard/views.py:2809
#: dashboard/views.py:2844
msgid "Ownership accepted"
msgstr "Átruházás elfogadva"
#: dashboard/views.py:2810
#: dashboard/views.py:2845
#, python-format
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."
#: dashboard/views.py:2989
#: dashboard/views.py:3024
msgid "You don't have a profile."
msgstr "Nincs profilja."
#: dashboard/views.py:3027
#: dashboard/views.py:3062
msgid "Successfully modified subscription."
msgstr "A feliratkozás módosításra került."
#: dashboard/views.py:3088
#: dashboard/views.py:3123
msgid "Disk remove confirmation"
msgstr "Lemez törlésének megerősítése"
#: dashboard/views.py:3089
#: dashboard/views.py:3124
#, python-format
msgid ""
"Are you sure you want to remove <strong>%(disk)s</strong> from <strong>"
......@@ -819,71 +823,71 @@ msgstr ""
"Biztosan eltávolítja a(z) <strong>%(disk)s</strong> lemezt a következőből: "
"%(app)s?"
#: dashboard/views.py:3108
#: dashboard/views.py:3143
msgid "Disk successfully removed."
msgstr "A lemez eltávolításra került."
#: dashboard/views.py:3205
#: dashboard/views.py:3240
#, python-format
msgid ""
"Are you sure you want to remove this interface from <strong>%(vm)s</strong>?"
msgstr ""
"Biztosan eltávolítja az interfészt a(z) <strong>%(vm)s</strong> gépből?"
#: dashboard/views.py:3219
#: dashboard/views.py:3254
msgid "Interface successfully deleted."
msgstr "Az interfész törlésre került."
#: dashboard/views.py:3320
#: dashboard/views.py:3355
msgid "Successfully modified SSH key."
msgstr "Az SSH kulcs módosításra került."
#: dashboard/views.py:3358
#: dashboard/views.py:3393
msgid "SSH key successfully deleted."
msgstr "Az SSH kulcs törlésre került."
#: dashboard/views.py:3374
#: dashboard/views.py:3409
msgid "Successfully created a new SSH key."
msgstr "Az új SSH kulcs hozzáadásra került."
#: dashboard/views.py:3390
#: dashboard/views.py:3425
msgid "Successfully modified command template."
msgstr "A parancssablon módosításra került."
#: dashboard/views.py:3433
#: dashboard/views.py:3468
msgid "Command template successfully deleted."
msgstr "A parancssablon törlésre került."
#: dashboard/views.py:3450
#: dashboard/views.py:3485
msgid "Successfully created a new command template."
msgstr "A parancssablon létrehozásra került."
#: dashboard/views.py:3499
#: dashboard/views.py:3534
msgid "No store."
msgstr "Nincs tárhely."
#: dashboard/views.py:3501
#: dashboard/views.py:3536
msgid "Store has some problems now. Try again later."
msgstr "A tárhely nem működik. Próbálja később."
#: dashboard/views.py:3505
#: dashboard/views.py:3540
msgid "Unknown store error."
msgstr "Ismeretlen tárhelyhiba."
#: dashboard/views.py:3522
#: dashboard/views.py:3557
msgid "Something went wrong during download."
msgstr "Hiba a letöltésben."
#: dashboard/views.py:3537 dashboard/views.py:3557
#: dashboard/views.py:3572 dashboard/views.py:3592
msgid "Unable to upload file."
msgstr "Fájl feltöltése sikertelen."
#: dashboard/views.py:3594
#: dashboard/views.py:3629
#, python-format
msgid "Unable to remove %s."
msgstr "%s törlése sikertelen."
#: dashboard/views.py:3613
#: dashboard/views.py:3648
msgid "Unable to create folder."
msgstr "Mappa létrehozása sikertelen."
......@@ -920,6 +924,76 @@ msgstr "Támogatás"
msgid "Confirmation"
msgstr "Megerősítés"
#: dashboard/templates/dashboard/_client-check.html:4
msgid ""
"\n"
" To effortlessly connect to all kind of virtual machines you have to "
"install the <strong>CIRCLE Client</strong>.\n"
" "
msgstr ""
"\n"
" A virtuális gépekhez való könnyű csatlakozáshoz telepítse a "
"<strong>CIRCLE klienst</strong>.\n"
" "
#: dashboard/templates/dashboard/_client-check.html:9
msgid ""
"\n"
" To install the <strong>CIRCLE Client</strong> click on the "
"<strong>Download the Client</strong> button. \n"
" The button takes you to the installation detail page, where you can "
"choose your operating system and start \n"
" the download or read more detailed information about the <strong>Client</"
"strong>. The program can be installed on Windows XP (and above)\n"
" or Debian based Linux operating systems. To successfully install the "
"client you have to have admin (root or elevated) rights.\n"
" After the installation complete clicking on the <strong>I have the "
"Client installed</strong> button will launch the appropriate tool\n"
" designed for that connection with necessarily predefined configurations. "
"This option will also save your answer and this prompt about\n"
" installation will not pop up again.\n"
" "
msgstr ""
"\n"
" A <strong>CIRCLE kliens</strong> letöltéséhez kattintson a "
"<strong>Kliens letöltése</strong> gombra. \n"
" A gomb a letöltőoldalra visz, ahol kiválaszthatja a megfelelő <strong>"
"kliens</strong> "
"telepítőcsomagot.\n"
" A telepítés után kattintson a <strong>Már telepítve van</strong> gombra a "
"megfelelő eszköz indításához. "
"Ezt a választást a rendszer megjegyzi.\n"
" "
#: dashboard/templates/dashboard/_client-check.html:23
#: dashboard/templates/dashboard/mass-operate.html:33
#: dashboard/templates/dashboard/operate.html:21
#: dashboard/templates/dashboard/confirm/ajax-delete.html:15
#: dashboard/templates/dashboard/confirm/ajax-node-flush.html:17
#: dashboard/templates/dashboard/confirm/ajax-node-status.html:17
#: dashboard/templates/dashboard/confirm/base-delete.html:27
#: dashboard/templates/dashboard/confirm/mass-delete.html:11
#: dashboard/templates/dashboard/confirm/node-status.html:27
#: dashboard/templates/dashboard/store/remove.html:34
msgid "Cancel"
msgstr "Mégsem"
#: dashboard/templates/dashboard/_client-check.html:24
msgid "Download the Client"
msgstr "Kliens letöltése"
#: dashboard/templates/dashboard/_client-check.html:25
msgid ""
"I downloaded and installed the client and I want to connect using it. This "
"choice will be saved to your compuer"
msgstr ""
"A kliens letöltésre és telepítésre került. Ez a beállítás "
"mentésre kerül."
#: dashboard/templates/dashboard/_client-check.html:26
msgid "I have the Client installed"
msgstr "Már telepítve van"
#: dashboard/templates/dashboard/_disk-list-element.html:10
#: dashboard/templates/dashboard/node-detail/_activity-timeline.html:28
#: dashboard/templates/dashboard/vm-detail/_activity-timeline.html:45
......@@ -1054,7 +1128,7 @@ msgstr "Lemezek"
#: dashboard/templates/dashboard/_vm-create-1.html:40
#: dashboard/templates/dashboard/_vm-create-2.html:65
#: dashboard/templates/dashboard/base.html:46
#: dashboard/templates/dashboard/vm-detail.html:164
#: dashboard/templates/dashboard/vm-detail.html:177
msgid "Network"
msgstr "Hálózat"
......@@ -1454,7 +1528,7 @@ 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/node-detail.html:91
#: dashboard/templates/dashboard/vm-detail.html:169
#: dashboard/templates/dashboard/vm-detail.html:182
#: dashboard/templates/dashboard/node-detail/activity.html:3
#: dashboard/templates/dashboard/vm-detail/activity.html:3
msgid "Activity"
......@@ -1536,18 +1610,6 @@ msgstr[1] ""
"Biztosan végrehajtja a(z) <strong>%(op)s</strong> műveletet a következő "
"%(count)s példányon?\n"
#: dashboard/templates/dashboard/mass-operate.html:33
#: dashboard/templates/dashboard/operate.html:21
#: dashboard/templates/dashboard/confirm/ajax-delete.html:15
#: dashboard/templates/dashboard/confirm/ajax-node-flush.html:17
#: dashboard/templates/dashboard/confirm/ajax-node-status.html:17
#: dashboard/templates/dashboard/confirm/base-delete.html:27
#: dashboard/templates/dashboard/confirm/mass-delete.html:11
#: dashboard/templates/dashboard/confirm/node-status.html:27
#: dashboard/templates/dashboard/store/remove.html:34
msgid "Cancel"
msgstr "Mégsem"
#: dashboard/templates/dashboard/node-add-trait.html:19
msgid "Add Trait"
msgstr "Jellemző hozzáadása"
......@@ -1591,7 +1653,7 @@ msgid "Remove node and it's host."
msgstr "Csomópont és hoszt törlése."
#: dashboard/templates/dashboard/node-detail.html:72
#: dashboard/templates/dashboard/vm-detail.html:145
#: dashboard/templates/dashboard/vm-detail.html:158
msgid "Home"
msgstr "Kezdőoldal"
......@@ -1845,11 +1907,31 @@ msgstr "Összes kiválasztása"
msgid "Connection is not possible."
msgstr "A csatlakozás nem lehetséges."
#: dashboard/templates/dashboard/vm-detail.html:155
#: dashboard/templates/dashboard/vm-detail.html:140
msgid "Connect via the CIRCLE Client"
msgstr "Csatlakozás CIRCLE klienssel"
#: dashboard/templates/dashboard/vm-detail.html:141
msgid "Connect"
msgstr "Csatlakozás"
#: dashboard/templates/dashboard/vm-detail.html:143
msgid "Download client"
msgstr "Kliens letöltése"
#: dashboard/templates/dashboard/vm-detail.html:145
msgid "Download the CIRCLE Client"
msgstr "A CIRCLE kliens letöltése"
#: dashboard/templates/dashboard/vm-detail.html:146
msgid "Connect (download client)"
msgstr "Csatlakozás (kliens letöltése)"
#: dashboard/templates/dashboard/vm-detail.html:168
msgid "Console"
msgstr "Konzol"
#: dashboard/templates/dashboard/vm-detail.html:159
#: dashboard/templates/dashboard/vm-detail.html:172
msgid "Access"
msgstr "Hozzáférés"
......@@ -3631,7 +3713,7 @@ msgstr ""
"lemezen, mivel az alapja, „%(b_name)s” (%(b_pk)s) [%(b_filename)s] nem "
"volt még csatolva."
#: storage/models.py:413 storage/models.py:488 vm/models/instance.py:899
#: storage/models.py:413 storage/models.py:488 vm/models/instance.py:897
msgid "Operation aborted by user."
msgstr "A műveletet a felhasználó megszakította."
......@@ -5041,7 +5123,7 @@ msgstr "példány létrehozása"
msgid "vm state changed to %(state)s"
msgstr "VM állapota erre változott: %(state)s"
#: vm/models/instance.py:663
#: vm/models/instance.py:661
#, python-format
msgid ""
"Your instance <a href=\"%(url)s\">%(instance)s</a> is going to expire. It "
......@@ -5053,7 +5135,7 @@ msgstr ""
"kerül. Kérjük, <a href=\"%(token)s\">újítsa meg</a> vagy <a href=\"%(url)s"
"\">törölje</a> most."
#: vm/models/instance.py:675
#: vm/models/instance.py:673
#, python-format
msgid ""
"%(failed)s notifications failed and %(success) succeeded. Failed ones are: "
......@@ -5062,7 +5144,7 @@ msgstr ""
"%(failed)s értesítés sikertelen és %(success) sikeres. A sikertelenek: "
"%(faileds)s."
#: vm/models/instance.py:677
#: vm/models/instance.py:675
#, python-format
msgid ""
"%(failed)s notifications failed and %(success) succeeded. Failed ones are: "
......@@ -5071,16 +5153,16 @@ msgstr ""
"%(failed)s értesítés sikertelen és %(success) sikeres. A sikertelenek: "
"%(faileds_ex)s."
#: vm/models/instance.py:685
#: vm/models/instance.py:683
#, python-format
msgid "%(success)s notifications succeeded."
msgstr "%(success)s sikeres értesítés."
#: vm/models/instance.py:690
#: vm/models/instance.py:688
msgid "notify owner about expiration"
msgstr "tulaj értesítése a lejáratról"
#: vm/models/instance.py:698
#: vm/models/instance.py:696
#, python-format
msgid "%(instance)s expiring soon"
msgstr "%(instance)s hamarosan lejár"
......
......@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-09-03 12:57+0200\n"
"POT-Creation-Date: 2014-09-03 18:49+0200\n"
"PO-Revision-Date: 2014-09-03 12:51+0200\n"
"Last-Translator: Mate Ory <ory.mate@ik.bme.hu>\n"
"Language-Team: Hungarian <cloud@ik.bme.hu>\n"
......
......@@ -607,9 +607,7 @@ class Instance(AclBase, VirtualMachineDescModel, StatusModel, OperatedMixin,
port = self.get_connect_port(use_ipv6=use_ipv6)
host = self.get_connect_host(use_ipv6=use_ipv6)
proto = self.access_method
if proto == 'ssh':
proto = 'sshterm'
return ('%(proto)s:cloud:%(pw)s:%(host)s:%(port)d' %
return ('circle:%(proto)s:cloud:%(pw)s:%(host)s:%(port)d' %
{'port': port, 'proto': proto, 'pw': self.pw,
'host': host})
except:
......
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