Example #1
0
def delete_task(request, pk):
  task = get_object_or_404(InstanceTask, pk=pk)
  task.abort(request)
  persistent_messages.add_message(request, persistent_messages.INFO,
    'Delete Instance creating task of %s on %s' % (task.name, task.storagepool.hypervisor), user=task.creator)
  task.delete(request)
  return redirect('/instance/')
Example #2
0
def index(request):
    disks = InstallationDisk.objects.all()
    tasks = InstallationDiskTask.objects.all()
    for task in tasks:
        task.get_status()
        if task.state == "SUCCESS":
            persistent_messages.add_message(
                request,
                persistent_messages.SUCCESS,
                "Successfully downloaded %s on %s." % (task.name, task.hypervisor),
                user=task.user,
            )
            (disk, created) = InstallationDisk.objects.get_or_create(
                name=task.name,
                hypervisor=task.hypervisor,
                url=task.url,
                filename=task.filename,
                total_bytes=task.total_bytes,
                user=task.user,
            )
            if created:
                disk.save()
            task.delete()

    return render_to_response(
        "installationdisk/index.html", {"disks": disks, "tasks": tasks}, context_instance=RequestContext(request)
    )
Example #3
0
    def deliver(self, recipient, sender, notice_type, extra_context):
        context = self.default_context()
        context.update(extra_context)

        if shadow_ban_applies(notice_type, recipient, context):
            return

        template = 'notice.html'
        message = self.get_formatted_messages([template], notice_type.label,
                                              context)[template]
        level = persistent_messages.INFO

        try:
            request = get_request()
            persistent_messages.add_message(request,
                                            level,
                                            message,
                                            user=recipient,
                                            from_user=sender)
        except IndexError:
            persistent_message = Message(user=recipient,
                                         from_user=sender,
                                         level=level,
                                         message=message)
            persistent_message.save()
Example #4
0
def restart(request, pk):
    task = get_object_or_404(InstallationDiskTask, pk=pk)
    task.abort()
    task.start()
    persistent_messages.add_message(
        request,
        persistent_messages.INFO,
        "Trying to redownload %s on %s" % (task.filename, task.hypervisor),
        user=task.user,
    )
    return redirect("/installationdisk/")
Example #5
0
def delete_task(request, pk):
    task = get_object_or_404(InstallationDiskTask, pk=pk)
    task.abort()
    persistent_messages.add_message(
        request,
        persistent_messages.INFO,
        "Delete download task of %s on %s" % (task.filename, task.hypervisor),
        user=task.user,
    )
    task.delete()  # might need to do some cleanup here, or check
    # that the task isn't still running
    return redirect("/installationdisk/")
Example #6
0
  def create(self, request=None):
    pool = self.storagepool.get_storagepool()
    if pool:
      xml = VOLUME_TEMPLATE % (self.name, self.capacity.size)
      try:
        pool.createXML(xml, 0)
        return True
      except libvirt.libvirtError as e:
        if request:
          persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to create Volume %s: %s' % (self.name, e))
        return False

    else:
      persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to create Volume %s (Unable to connect to Storage Pool)' % (self.name))
      return False
Example #7
0
    def deliver(self, recipient, sender, notice_type, extra_context):
        try:
            request = get_request()
        except IndexError:
            # This may happen during unit testing
            return

        context = self.default_context()
        context.update(extra_context)
        messages = self.get_formatted_messages(['notice.html'],
                                               notice_type.label, context)
        persistent_messages.add_message(request,
                                        persistent_messages.INFO,
                                        messages['notice.html'],
                                        user=recipient)
Example #8
0
    def deliver(self, recipient, sender, notice_type, extra_context):
        try:
            request = get_request()
        except IndexError:
            # This may happen during unit testing
            return

        context = self.default_context()
        context.update(extra_context)
        messages = self.get_formatted_messages(['notice.html'],
            notice_type.label, context)
        persistent_messages.add_message(
            request,
            persistent_messages.INFO,
            messages['notice.html'],
            user = recipient)
Example #9
0
def get_new_recent_alerts(request):
    user = authenticate(username='******', password='******')

    alerts = Alert.objects.filter(timestamp__gte=datetime.now()-timedelta(seconds=5)).order_by('timestamp')
    if len(alerts):
        persistent_messages.add_message(
                request,
                persistent_messages.WARNING,
                message='The babby is on the move!',
                subject='Alert',
                extra_tags='warning',
                email=False,
                #user=user,
                #from_user=request.session['sender_user'],
                fail_silently=True
        )
Example #10
0
def delete(request, name, pk):
  instance = get_object_or_404(Instance, name=name)
  snapshot = get_object_or_404(Snapshot, pk=pk)
  
  try:
    dom = instance.get_instance()
    if not dom: raise libvirt.libvirtError()
    snap = snapshot.get_snapshot()
    if snap: 
      print "deleting.. %d" % (snapshot.get_unixtime())
      snap.delete(0)
    snapshot.delete()
    persistent_messages.add_message(request, persistent_messages.SUCCESS, 'Deleted snapshot for %s' % (instance))
  except libvirt.libvirtError as e:
    persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to delete snapshot %s for %s: %s' % (snapshot.name, instance, e))
  
  return redirect('/instance/%s/' % (name))
Example #11
0
  def create(self, request=None):
    pool = self.storagepool.get_storagepool()
    if pool:
      xml = """
        <volume>
          <name>%s.qcow2</name>
          <capacity>%s</capacity>
          <allocation>0</allocation>
          <target>
            <format type="qcow2" />
          </target>
        </volume>""" \
          % (self.name, self.capacity.size)
      try:
        pool.createXML(xml, 0)
        return True
      except libvirt.libvirtError as e:
        persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to create Volume %s: %s' % (self.name, e))
        return False

    else:
      persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to create Volume %s (Unable to connect to Storage Pool)' % (self.name))
      return False
Example #12
0
def create(request, name):
  instance = get_object_or_404(Instance, name=name)

  if instance.status != 5:
    persistent_messages.add_message(request, persistent_messages.ERROR, 'Error %s must be shutdown in order to take a snapshot.' % (instance))
  elif Snapshot.objects.filter(creating=True, instance=instance).count() > 0:
    persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to create a snapshot for %s, already creating one.' % (instance))
  else:
    persistent_messages.add_message(request, persistent_messages.INFO, 'Attempting to create a snapshot for %s' % (instance))
    create_snapshot.delay(instance.name) # no need to collect task as it is one blocking method
  return redirect('/instance/%s/' % (name))
Example #13
0
  def delete(self, request=None):
    vol = self.get_volume()
    if vol:
      try:
        vol.delete(0)
        if request:
          persistent_messages.add_message(request, persistent_messages.SUCCESS, 'Deleted %s Volume' % (self))
        super(Volume, self).delete()
        return True
      except libvirt.libvirtError as e:
        if request:
          persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to delete %s Volume: %s' % (self, e))

    elif request:
      persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to delete Volume: Unable to get Volume %s' % (self))
    return False 
Example #14
0
 def delete(self, request=None):
   instance = self.get_instance()
   if instance:
     try:
       instance.destroy()
       instance.undefine()
       self.volume.delete(True)
       if request:
         persistent_messages.add_message(request, persistent_messages.SUCCESS, 'Deleted Instance %s' % (self))
         if request.user != self.user:
           persistent_messages.add_message(request, persistent_messages.SUCCESS, 'Deleted Instance %s' % (self), user=self.user)
       super(Instance, self).delete()
     except libvirt.libvirtError as e:
       if request:
         persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to delete Instance %s: %s' % (self, e))
         if request.user != self.user:
           persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to delete Instance %s' % (self), user=self.user)
 
   elif request:
     persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to get instance object inorder to delete Instance %s' % (self))
     if request.user != self.user:
       persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to delete Instance %s' % (self), user=self.user)
Example #15
0
 def delete(self, request=None):
   instance = self.get_instance()
   if instance:
     try:
       try:
         # shutdown/destroy the vm if it's still up and running. 
         instance.destroy()
       except libvirt.libvirtError as e:
         if str(e) != 'Requested operation is not valid: domain is not running': raise e
       instance.undefine()
       self.volume.delete(request)
       self.network.delete()
       if request:
         persistent_messages.add_message(request, persistent_messages.SUCCESS, 'Deleted Instance %s' % (self))
         if request.user != self.user:
           persistent_messages.add_message(request, persistent_messages.SUCCESS, 'Deleted Instance %s' % (self), user=self.user)
       super(Instance, self).delete()
     except libvirt.libvirtError as e:
       print e
       print type(e)
       if request:
         persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to delete Instance %s: %s' % (self, e))
         if request.user != self.user:
           persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to delete Instance %s' % (self), user=self.user)
 
   elif request:
     persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to get instance object inorder to delete Instance %s' % (self))
     if request.user != self.user:
       persistent_messages.add_message(request, persistent_messages.ERROR, 'Unable to delete Instance %s' % (self), user=self.user)