Convertir disco virtualbox.ova a qemu.qcow2


Migrar discos de VirtualBox a QEMU/KVM.


El Open Virtualization Format (OVF) es un estándar abierto para el envasado y distribución de dispositivos virtuales para el uso en máquinas virtuales. Un archivo OVA es una alternativa un archivo para empaquetar un directorio de archivos OVF múltiples. Este es un pequeño ejemplo de cómo convertir OVA para el uso en un entorno KVM debian 7.1. El archivo OVA fue descargado, y para no instalar virutalbox y toque el kernel.

Extraccion del Archivo OVA


tar xvf VirtualBox.ova
VirtualBox.ovf
VirtualBox.vmdk
Usted consigue Virtual_Appliance_Debian-disk.vmdk que es un archivo de disco de máquina virtual. El formato de archivo VMDK fue desarrollado para el uso en VMWare o VirtualBox. Es un formato abierto.

Convertir VMDK to QCOW2

$ qemu-img convert -O qcow2 VirtualBox.vmdk qemu_kvm.qcow2 

Corres la maquina virtual por la consola.

kvm -m 512 -usbdevice tablet -hda ubuntu.qcow


Bienvenidos a KVM!! :)

CRUD Class View Django

Explicaremos de la manera  mas sencilla posible como hacer para crear un sistema de Lectura, escritura, actualizacion  y borrado mas conocido como CRUD utilizando Class View en django 1.5 y 1.6

Crearemos las Class View, asumiendo que ya tienen creado el model en este caso llamado BlogAztrock

La CreateView y UpdateView se encargan de Crear y Actualizar contenido en el model y crear el formulario para el ingreso de la información

# Importamos las clases para creacion, actualizacion y borrado.
# Importamos las clases para creacion, actualizacion y borrado.
from django.views.generic.edit import CreateView, UpdateView, DeleteView
# Importamos la clase para listar
from django.views.generic import ListView
# Importamos una funcion para reversar las url por el nombre 
from django.core.urlresolvers import reverse_lazy
# Importamos un modelo. 
from myapp.models import BlogAztrock

class AztrockCreate(CreateView):
    model = BlogAztrock
    fields = ['name'] 
    template_name = 'form.html'
    success_url = reverse_lazy('aztrock-listar') 

class AztrockUpdate(UpdateView):
    model = BlogAztrock
    fields = ['name']
    template_name = 'form.html' 
    success_url = reverse_lazy('aztrock-listar') 

class AztrockDelete(DeleteView):
    model = BlogAztrock 
    template_name = 'eliminar_blog.html' 
    success_url = reverse_lazy('aztrock-listar')

class AztrockListar(ListView):
    model = BlogAztrock
    template_name = 'blog-aztrock.html'
Creamos las URL
from django.conf.urls import patterns, url
from apps.views import AztrockCreate, AztrockUpdate, AztrockDelete, AztrockListar

urlpatterns = patterns('',
    url(r'aztrock/$', AztrockListar.as_view(), name='aztrock-listar'), 
    url(r'aztrock/agregar/$', AztrockCreate.as_view(), name='aztrock_agregar'),
    url(r'aztrock/(?P\d+)/$', AztrockUpdate.as_view(), name='aztrock_actualizar'),
    url(r'aztrock/(?P\d+)/borrar/$', AztrockDelete.as_view(), name='aztrock_eliminar'),
)
template form.hml CreateView y UpdateView
{# ==== TEMPLATE DE LA CLASE CREATEVIEW Y UPDATEVIEW ==== #}
{% extends "base.html" %}

{% block content %}
    

listar

{{ form }} {% endblock %}
blog_aztrock.html
{# ==== TEMPLATE DE LA CLASE LISTVIEW ==== #}
{% extends 'base.html'>

Aztrock Blog

    {% for a in object_list %}
  • {{ a.nombre }}
  • {% endfor %}
{% endblock %}
eliminar_blog.html
{# ==== TEMPLATE DE LA CLASE DELETEVIEW ==== #}
{% extends 'base.html' %}

{% block content %}

eliminar ?

{% csrf_token %}
{% endblock %}
 
 
En caso de que que no definamos template_name en AztrockUpdate y AztrockCreate, la clase
buscara en el directorio template general y el directorio template de la aplicacion, el siguiente
template por defecto.  aztrock_form.html.
 
 
En el caso de AztrockDelete, la clase buscara apps/aztrock_confirm_delete.html, se debe confirmar
la eliminacion, para poder eliminar lo que queremos.
 
En este ejemplo no necesitamos crear un Form ya que la clase crea el formulario y podemos seleccionar
el campo que deseamos ver.