From 84488ceda9a8fe040485ffbb337c76ba19d5ef33 Mon Sep 17 00:00:00 2001
From: Bach Dániel <bd@ik.bme.hu>
Date: Mon, 23 Feb 2015 12:37:53 +0100
Subject: [PATCH] vm: add e1000, rtl8139, pcnet, ne2k_pci support

---
 circle/vm/migrations/0002_interface_model.py | 20 ++++++++++++++++++++
 circle/vm/models/network.py                  |  7 ++++++-
 2 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 circle/vm/migrations/0002_interface_model.py

diff --git a/circle/vm/migrations/0002_interface_model.py b/circle/vm/migrations/0002_interface_model.py
new file mode 100644
index 0000000..8ebc86d
--- /dev/null
+++ b/circle/vm/migrations/0002_interface_model.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('vm', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='interface',
+            name='model',
+            field=models.CharField(default='virtio', max_length=10, choices=[('virtio', 'virtio'), ('ne2k_pci', 'ne2k_pci'), ('pcnet', 'pcnet'), ('rtl8139', 'rtl8139'), ('e1000', 'e1000')]),
+            preserve_default=True,
+        ),
+    ]
diff --git a/circle/vm/models/network.py b/circle/vm/models/network.py
index 696841b..2020910 100644
--- a/circle/vm/models/network.py
+++ b/circle/vm/models/network.py
@@ -20,7 +20,7 @@ from __future__ import absolute_import, unicode_literals
 from logging import getLogger
 from netaddr import EUI, mac_unix
 
-from django.db.models import Model, ForeignKey, BooleanField
+from django.db.models import Model, ForeignKey, BooleanField, CharField
 from django.utils.translation import ugettext_lazy as _, ugettext_noop
 
 from common.models import create_readable
@@ -61,11 +61,15 @@ class Interface(Model):
 
     """Network interface for an instance.
     """
+    MODEL_TYPES = (('virtio', 'virtio'), ('ne2k_pci', 'ne2k_pci'),
+                   ('pcnet', 'pcnet'), ('rtl8139', 'rtl8139'),
+                   ('e1000', 'e1000'))
     vlan = ForeignKey(Vlan, verbose_name=_('vlan'),
                       related_name="vm_interface")
     host = ForeignKey(Host, verbose_name=_('host'),  blank=True, null=True)
     instance = ForeignKey('Instance', verbose_name=_('instance'),
                           related_name='interface_set')
+    model = CharField(max_length=10, choices=MODEL_TYPES, default='virtio')
 
     class Meta:
         app_label = 'vm'
@@ -104,6 +108,7 @@ class Interface(Model):
             'ipv4': str(self.host.ipv4) if self.host is not None else None,
             'ipv6': str(self.host.ipv6) if self.host is not None else None,
             'vlan': self.vlan.vid,
+            'model': self.model,
             'managed': self.host is not None
         }
 
--
libgit2 0.26.0