Commit b50cf907 by Őry Máté

Merge branch 'release-13.03.1' of ssh://giccero.cloud.ik.bme.hu/cloud

parents affff889 c9fa8b10
...@@ -5,7 +5,7 @@ DEBUG = True ...@@ -5,7 +5,7 @@ DEBUG = True
TEMPLATE_DEBUG = DEBUG TEMPLATE_DEBUG = DEBUG
ADMINS = ( ADMINS = (
('IK', 'cloud@iit.bme.hu'), ('IK', 'cloud@ik.bme.hu'),
) )
MANAGERS = ADMINS MANAGERS = ADMINS
...@@ -223,7 +223,7 @@ firewall_settings = { ...@@ -223,7 +223,7 @@ firewall_settings = {
"dns_ttl": "300", "dns_ttl": "300",
} }
EMAIL_HOST='cronos.ik.bme.hu' EMAIL_HOST='152.66.243.92' # giccero ipv4
CLOUD_URL='https://cloud.ik.bme.hu/' CLOUD_URL='https://cloud.ik.bme.hu/'
try: try:
......
{% extends "base.html" %} {% extends "base.html" %}
{% load i18n %} {% load i18n %}
{% load staticfiles %}
{% get_current_language as LANGUAGE_CODE %} {% get_current_language as LANGUAGE_CODE %}
{% block content %} {% block content %}
<div class="irasmu"> <div class="irasmu">
<p>Hamarosan a mozikban!</p> <p>A súgó elkészültéig kérjük szíves türelmüket.</p>
<p>Addig is ajánljuk figyelmükbe a rendszer <a href="/info/">rövid ismertetőjét</a>, a használat módját részletező <a href="/sites/policy/">szabályzatot</a>, valamint a felület számos pontján megjelenő <img src="{% static "icons/information-frame.png" %}" alt="Súgó" /> ikonnal jelölt információdobozokat.</p>
<p>Amennyiben kérdése maradt, örömmel segítünk a <a href="/sites/support/">támogatás</a> oldalon leírt elérhetőségeinken.</p>
</div> </div>
{% endblock %} {% endblock %}
...@@ -5,9 +5,11 @@ ...@@ -5,9 +5,11 @@
{% block content %} {% block content %}
<div class="irasmu"> <div class="irasmu">
<p>Az IK Cloud a BME IK és IIT együttműködésében, a VIK támogatásával létrejött rendszer, amelyben az IIT oktatói és hallgatói szükség szerint vehetnek igénybe <b>virtuális erőforrásokat</b>.</p> <p>Az IK Cloud a BME IK és IIT együttműködésében, a VIK támogatásával létrejött rendszer, amelyben az IIT oktatói és hallgatói szükség szerint vehetnek igénybe <strong>virtuális erőforrásokat</strong>.</p>
<p>Az IIT géptermeiben telepített kliensszoftver segítségével az oktató által előkészített és kiajánlott <b>virtuális környezetet a hallgató</b> a számára megszabott <b>kvóta keretein belül</b> igény szerint indíthatja.</p> <p>Az IIT géptermeiben telepített kliensszoftver segítségével az oktató által előkészített és kiajánlott <strong>virtuális környezetet a hallgató</strong> a számára megszabott <strong>kvóta keretein belül</strong> igény szerint indíthatja.</p>
<p>A HSZK géptermeiben a kliensszoftver jelenleg nincs telepítve, de a virtuális gépek indítása, a fájlok elérése webböngészővel is teljes értékű; míg a gépekhez való csatlakozás kézzel elvégezhető.</p>
<p>Lehetőség van a gépteremben elkezdett munka otthoni folytatására is a korábban elindított környezetben. A rendszer segítségével az otthoni feladatot végző hallgató is elkerülheti az összetett szoftverkörnyezet telepítésével járó kellemetlenségeket, figyelmét a szakmai munkára irányíthatja.</p> <p>Lehetőség van a gépteremben elkezdett munka otthoni folytatására is a korábban elindított környezetben. A rendszer segítségével az otthoni feladatot végző hallgató is elkerülheti az összetett szoftverkörnyezet telepítésével járó kellemetlenségeket, figyelmét a szakmai munkára irányíthatja.</p>
...@@ -15,18 +17,18 @@ ...@@ -15,18 +17,18 @@
<p>Az elindított virtuális gépekre az adott operációs rendszeren szokásos módon lehet távolról csatlakozni: Windows esetén RDP (távoli asztal), Linux esetén SSH, vagy grafikusan NoMachine NX segítségével. A kapcsolódást a géptermekben telepített kliensszoftver még kényelmesebbé teszi.</p> <p>Az elindított virtuális gépekre az adott operációs rendszeren szokásos módon lehet távolról csatlakozni: Windows esetén RDP (távoli asztal), Linux esetén SSH, vagy grafikusan NoMachine NX segítségével. A kapcsolódást a géptermekben telepített kliensszoftver még kényelmesebbé teszi.</p>
<p>Az elindított gépeken a <b>felhasználói adattár</b> automatikusan csatolásra kerül. Minden munkát itt érdemes végezni, mivel az a gép leállítása után is elérhető marad.</p> <p>Az elindított gépeken a <strong>felhasználói adattár</strong> automatikusan csatolásra kerül. Minden munkát itt érdemes végezni, mivel az a gép leállítása után is elérhető marad.</p>
<p>A felhasználók a rendszert jelen önkiszolgáló felületen keresztül érhetik el, amelybe az egyetemi címtárszolgáltatás (eduID) segítségével léphetnek be. A továbblépéssel elfogadják a következőekben összefoglalt <b>felhasználási feltételeket</b>.</p> <p>A felhasználók a rendszert jelen önkiszolgáló felületen keresztül érhetik el, amelybe az egyetemi címtárszolgáltatás (eduID) segítségével léphetnek be. A továbblépéssel elfogadják a következőekben összefoglalt <strong>felhasználási feltételeket</strong>.</p>
<ul> <ul>
<li>A rendszer nem használható semmilyen jogszabályba, vagy egyetemi <b>szabályzatba ütköző tevékenységre</b>. <a href="http://net.bme.hu/regula/">http://net.bme.hu/regula/</a></li> <li>A rendszer <strong>nem használható</strong> semmilyen jogszabályba, vagy <a href="http://net.bme.hu/regula/">egyetemi</a> <strong>szabályzatba ütköző tevékenységre</strong>.</li>
<li><b>Kizárólag tanulmányi</b> vagy <b>kutatási tevékenységhez</b> használható erőforrás.</li> <li><strong>Kizárólag tanulmányi</strong> vagy <strong>kutatási tevékenységhez</strong> használható erőforrás.</li>
<li>Bár a rendszer használata térítésmentes, a <b>felesleges gépek leállítása</b> a felhasználó kötelessége.</li> <li>Bár a rendszer használata térítésmentes, a <strong>felesleges gépek leállítása</strong> a felhasználó kötelessége.</li>
<li>Minden gép indítása <b>határidő kijelölésével</b> történik. A határidő lejártával <b>a gépet figyelmeztetés nélkül megállítjuk</b>. Amennyiben a felhasználó a megállítást követően sem kéri meghosszabbítását, a gépet és <b>minden rajta lévő adatot törlünk!</b></li> <li>Minden gép indítása <strong>határidő kijelölésével</strong> történik. A határidő lejártával <strong>a gépet megállítjuk</strong>. Amennyiben a felhasználó a megállítást követően (a törlési határidő leteltéig) nem kéri meghosszabbítását, a gépet és <strong>minden rajta lévő adatot törlünk!</strong></li>
<li>A felhasználó felelőssége a futtatott rendszer biztonságos üzemeltetése, a hosszabb időn át futó gépek frissítése.</li> <li>A felhasználó felelőssége a futtatott rendszer biztonságos üzemeltetése, a hosszabb időn át futó gépek frissítése.</li>
<li>A rendszert üzemeltető BME IK lehetőségeihez mérten mindent megtesz a szolgáltatásbiztos üzemért, az egyetemi infrastruktúra sajátosságai miatt előforduló üzemszünetekre azonban számítani kell. A BME IK az üzemeltetés kapcsán a folyamatos üzem sérüléséért vagy adatvesztésért <b>minden felelősséget kizár</b>. Ezeknek megfelelően szükség esetén a biztonsági mentés és a magas rendelkezésre állású környezet kialakítása a felhasználóra hárul.</li> <li>A rendszert üzemeltető BME IK lehetőségeihez mérten mindent megtesz a szolgáltatásbiztos üzemért, az egyetemi infrastruktúra sajátosságai miatt előforduló üzemszünetekre azonban számítani kell. A BME IK az üzemeltetés kapcsán a folyamatos üzem sérüléséért vagy adatvesztésért <strong>minden felelősséget kizár</strong>. Ezeknek megfelelően szükség esetén a biztonsági mentés és a magas rendelkezésre állású környezet kialakítása a felhasználóra hárul.</li>
</ul> </ul>
<p>Reméljük, hogy a rendszerünk használata megkönnyíti munkájukat, melyhez sok sikert kívánunk!</p> <p>A szabályok betartása közös érdekünk. Reméljük, hogy a rendszerünk használata megkönnyíti munkájukat, melyhez sok sikert kívánunk!</p>
</div> </div>
{% endblock %} {% endblock %}
...@@ -5,9 +5,10 @@ ...@@ -5,9 +5,10 @@
{% block content %} {% block content %}
<div class="irasmu"> <div class="irasmu">
<p>A rendszer használatával kapcsolatos kérdéseket a <tt>cloud <em>(kukac)</em> <p>A rendszer használatával kapcsolatos kérdéseket, általános észrevételeket a <tt>cloud <em>(kukac)</em>
ik.bme.hu</tt> e-mail címen teheti fel.</p> ik.bme.hu</tt> e-mail címen várjuk.
<p>A rendszerben talált hibákat (vagy azok gyanúját) kérjük, Ugyancsak örömmel fogadjuk a rendszer használatával kapcsolatos beszámolókat.</p>
<p>A rendszerben talált hibákat (vagy azok gyanúját), valamint ötleteit, javaslatait kérjük,
<a href="https://giccero.cloud.ik.bme.hu/trac/cloud/newticket" rel="nofollow"> <a href="https://giccero.cloud.ik.bme.hu/trac/cloud/newticket" rel="nofollow">
hibajegy felvételével</a> jelezze. hibajegy felvételével</a> jelezze.
</p> </p>
......
...@@ -9,6 +9,8 @@ from tasks import * ...@@ -9,6 +9,8 @@ from tasks import *
from celery.task.control import inspect from celery.task.control import inspect
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.template.loader import render_to_string from django.template.loader import render_to_string
from cloud.settings import CLOUD_URL as url
from django.utils import translation
import re import re
import base64 import base64
...@@ -49,8 +51,9 @@ def firewall_api(request): ...@@ -49,8 +51,9 @@ def firewall_api(request):
obj.host = models.Host.objects.get(ipv4=data["ip"]) obj.host = models.Host.objects.get(ipv4=data["ip"])
user = obj.host.owner user = obj.host.owner
lang = user.person_set.all()[0].language lang = user.person_set.all()[0].language
msg = render_to_string('mails/notification-ban-now.txt', { 'user': user, 'bl': obj, 'instance:': obj.host.instance_set.get() } ) translation.activate(lang)
SendMailTask.delay(to=obj.host.owner.email, subject='[IK Cloud] %s' % obj.host.instance_set.get().name, msg=msg) msg = render_to_string('mails/notification-ban-now.txt', { 'user': user, 'bl': obj, 'instance:': obj.host.instance_set.get(), 'url': url} )
SendMailTask.delay(to=obj.host.owner.email, subject='[IK Cloud] %s' % obj.host.instance_set.get().name, msg=msg, sender=u'cloud@ik.bme.hu')
except (Host.DoesNotExist, ValidationError, IntegrityError, AttributeError): except (Host.DoesNotExist, ValidationError, IntegrityError, AttributeError):
pass pass
print obj.modified_at + datetime.timedelta(minutes=5) print obj.modified_at + datetime.timedelta(minutes=5)
......
...@@ -7,7 +7,7 @@ from django.template.loader import render_to_string ...@@ -7,7 +7,7 @@ from django.template.loader import render_to_string
from one.tasks import SendMailTask from one.tasks import SendMailTask
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from cloud.settings import CLOUD_URL as url from cloud.settings import CLOUD_URL as url
from django.utils import translation
class Job(HourlyJob): class Job(HourlyJob):
help = "Suspend/delete expired Instances." help = "Suspend/delete expired Instances."
...@@ -29,11 +29,17 @@ class Job(HourlyJob): ...@@ -29,11 +29,17 @@ class Job(HourlyJob):
# delete # delete
for i in Instance.objects.filter(state__in=['ACTIVE', 'STOPPED'], time_of_delete__isnull=False): for i in Instance.objects.filter(state__in=['ACTIVE', 'STOPPED'], time_of_delete__isnull=False):
print "%s delete: %s" % (i.name, i.time_of_delete) try:
translation.activate(i.owner.person_set.get().language)
except:
pass
print u'%s delete: %s' % (i.name, i.time_of_delete)
delete = i.time_of_delete.replace(minute=0, second=0, microsecond=0) delete = i.time_of_delete.replace(minute=0, second=0, microsecond=0)
continue
if i.time_of_delete < now: if i.time_of_delete < now:
msg = render_to_string('mails/notification-delete-now.txt', { 'user': i.owner, 'instance': i, 'url': url } ) # msg = render_to_string('mails/notification-delete-now.txt', { 'user': i.owner, 'instance': i, 'url': url } )
SendMailTask.delay(to=i.owner.email, subject='[IK Cloud] %s' % i.name, msg=msg) # SendMailTask.delay(to=i.owner.email, subject='[IK Cloud] %s' % i.name, msg=msg)
pass
else: else:
for t in d: for t in d:
if delete == d[t]: if delete == d[t]:
...@@ -42,7 +48,11 @@ class Job(HourlyJob): ...@@ -42,7 +48,11 @@ class Job(HourlyJob):
# suspend # suspend
for i in Instance.objects.filter(state='ACTIVE', time_of_suspend__isnull=False): for i in Instance.objects.filter(state='ACTIVE', time_of_suspend__isnull=False):
print "%s suspend: %s" % (i.name, i.time_of_suspend) try:
translation.activate(i.owner.person_set.get().language)
except:
pass
print u'%s suspend: %s' % (i.name, i.time_of_suspend)
suspend = i.time_of_suspend.replace(minute=0, second=0, microsecond=0) suspend = i.time_of_suspend.replace(minute=0, second=0, microsecond=0)
if i.time_of_suspend < now: if i.time_of_suspend < now:
......
...@@ -629,12 +629,12 @@ class Instance(models.Model): ...@@ -629,12 +629,12 @@ class Instance(models.Model):
self._change_state("POWEROFF") self._change_state("POWEROFF")
def restart(self): def restart(self):
self._change_state("RESET") self._change_state("RESET")
def renew(self, which): def renew(self, which='both'):
if which == 'suspend': if which in ['suspend', 'both']:
self.time_of_suspend = self.share.get_type()['suspendx'] self.time_of_suspend = self.share.get_type()['suspendx']
elif which == 'delete': if which in ['delete', 'both']:
self.time_of_delete = self.share.get_type()['deletex'] self.time_of_delete = self.share.get_type()['deletex']
else: if not (which in ['suspend', 'delete', 'both']):
raise ValueError('No such expiration type.') raise ValueError('No such expiration type.')
self.save() self.save()
def save_as(self): def save_as(self):
......
...@@ -9,8 +9,6 @@ from django.core.mail import send_mail ...@@ -9,8 +9,6 @@ from django.core.mail import send_mail
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class SendMailTask(Task): class SendMailTask(Task):
def run(self, to, subject, msg): def run(self, to, subject, msg, sender=u'noreply@cloud.ik.bme.hu'):
sender = u'noreply@cloud.ik.bme.hu'
send_mail(subject, msg, sender, [ to ], fail_silently=False) send_mail(subject, msg, sender, [ to ], fail_silently=False)
logger.info("[django][one][tasks.py] %s->%s [%s]" % (sender, to, subject) ) logger.info("[django][one][tasks.py] %s->%s [%s]" % (sender, to, subject) )
...@@ -505,17 +505,19 @@ def vm_stop(request, iid, *args, **kwargs): ...@@ -505,17 +505,19 @@ def vm_stop(request, iid, *args, **kwargs):
@require_POST @require_POST
def vm_resume(request, iid, *args, **kwargs): def vm_resume(request, iid, *args, **kwargs):
try: try:
get_object_or_404(Instance, id=iid, owner=request.user).resume() obj = get_object_or_404(Instance, id=iid, owner=request.user)
obj.resume()
messages.success(request, _('Virtual machine is successfully resumed.')) messages.success(request, _('Virtual machine is successfully resumed.'))
except: except:
messages.error(request, _('Failed to resume virtual machine.')) messages.error(request, _('Failed to resume virtual machine.'))
obj.renew()
return redirect('/') return redirect('/')
@login_required @login_required
@require_POST @require_POST
def vm_renew(request, which, iid, *args, **kwargs): def vm_renew(request, which, iid, *args, **kwargs):
try: try:
get_object_or_404(Instance, id=iid, owner=request.user).renew(which) get_object_or_404(Instance, id=iid, owner=request.user).renew()
messages.success(request, _('Virtual machine is successfully renewed.')) messages.success(request, _('Virtual machine is successfully renewed.'))
except: except:
messages.error(request, _('Failed to renew virtual machine.')) messages.error(request, _('Failed to renew virtual machine.'))
......
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