Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / db / migrations / 0077_migrate_networks_to_subnets.py @ 8d5795b4

History | View | Annotate | Download (19.8 kB)

1 d8989b47 Christos Stavrakakis
# -*- coding: utf-8 -*-
2 d8989b47 Christos Stavrakakis
import datetime
3 d8989b47 Christos Stavrakakis
from south.db import db
4 d8989b47 Christos Stavrakakis
from south.v2 import DataMigration
5 d8989b47 Christos Stavrakakis
from django.db import models
6 d8989b47 Christos Stavrakakis
7 d8989b47 Christos Stavrakakis
class Migration(DataMigration):
8 d8989b47 Christos Stavrakakis
9 d8989b47 Christos Stavrakakis
    def forwards(self, orm):
10 d8989b47 Christos Stavrakakis
        "Write your forwards methods here."
11 d8989b47 Christos Stavrakakis
        # Note: Remember to use orm['appname.ModelName'] rather than "from appname.models..."
12 d8989b47 Christos Stavrakakis
        for network in orm.Network.objects.all():
13 d8989b47 Christos Stavrakakis
            if network.subnet:
14 d8989b47 Christos Stavrakakis
                subnet = orm.Subnet.objects.create(network=network,
15 d8989b47 Christos Stavrakakis
                                                   ipversion=4,
16 d8989b47 Christos Stavrakakis
                                                   cidr=network.subnet,
17 d8989b47 Christos Stavrakakis
                                                   gateway=network.gateway,
18 d8989b47 Christos Stavrakakis
                                                   dhcp=network.dhcp,
19 d8989b47 Christos Stavrakakis
                                                   deleted=network.deleted)
20 d8989b47 Christos Stavrakakis
                ip_pool = network.pool
21 d8989b47 Christos Stavrakakis
                ip_pool.subnet = subnet
22 833f2ad5 Christos Stavrakakis
                ip_pool.base = subnet.cidr
23 833f2ad5 Christos Stavrakakis
                ip_pool.offset = 0
24 d8989b47 Christos Stavrakakis
                ip_pool.save()
25 d8989b47 Christos Stavrakakis
26 d8989b47 Christos Stavrakakis
            if network.subnet6:
27 d8989b47 Christos Stavrakakis
                orm.Subnet.objects.create(network=network,
28 d8989b47 Christos Stavrakakis
                                          ipversion=6,
29 d8989b47 Christos Stavrakakis
                                          cidr=network.subnet6,
30 d8989b47 Christos Stavrakakis
                                          gateway=network.gateway6,
31 d8989b47 Christos Stavrakakis
                                          dhcp=network.dhcp,
32 d8989b47 Christos Stavrakakis
                                          deleted=network.deleted)
33 d8989b47 Christos Stavrakakis
34 d8989b47 Christos Stavrakakis
    def backwards(self, orm):
35 d8989b47 Christos Stavrakakis
        warning_msg_printed = False
36 d8989b47 Christos Stavrakakis
        for subnet in orm.Subnet.objects.filter(ipversion=4):
37 d8989b47 Christos Stavrakakis
            network = subnet.network
38 d8989b47 Christos Stavrakakis
            network.dhcp = subnet.dhcp
39 d8989b47 Christos Stavrakakis
            network.subnet = subnet.cidr
40 d8989b47 Christos Stavrakakis
            network.gateway = subnet.gateway
41 d8989b47 Christos Stavrakakis
            # Create an empty pool
42 d8989b47 Christos Stavrakakis
            network.pool = orm.IPPoolTable.objects.create(available_map="",
43 d8989b47 Christos Stavrakakis
                                                          reserved_map="",
44 d8989b47 Christos Stavrakakis
                                                          size=0)
45 d8989b47 Christos Stavrakakis
            network.save()
46 d8989b47 Christos Stavrakakis
            try:
47 d8989b47 Christos Stavrakakis
                ip_pool = network.get_pool()
48 d8989b47 Christos Stavrakakis
                for nic in network.nics.filter(ipv4__isnull=False):
49 d8989b47 Christos Stavrakakis
                    ip_pool.reserve(nic.ipv4)
50 d8989b47 Christos Stavrakakis
                ip_pool.save()
51 d8989b47 Christos Stavrakakis
            except:
52 d8989b47 Christos Stavrakakis
                if not warning_msg_printed:
53 d8989b47 Christos Stavrakakis
                    msg = ("WARNING: Cannot perform backwards migration for IP pools!"
54 d8989b47 Christos Stavrakakis
                           " IP pools for all networks are not consistent."
55 d8989b47 Christos Stavrakakis
                           " Make sure to run 'snf-manage reconcile-pools'.")
56 d8989b47 Christos Stavrakakis
                    print msg
57 d8989b47 Christos Stavrakakis
                    warning_msg_printed = True
58 d8989b47 Christos Stavrakakis
59 d8989b47 Christos Stavrakakis
            subnet.ip_pools.all().delete()
60 d8989b47 Christos Stavrakakis
61 d8989b47 Christos Stavrakakis
        for subnet in orm.Subnet.objects.filter(ipversion=6):
62 d8989b47 Christos Stavrakakis
            network = subnet.network
63 d8989b47 Christos Stavrakakis
            network.dhcp = subnet.dhcp
64 d8989b47 Christos Stavrakakis
            network.subnet6 = subnet.cidr
65 d8989b47 Christos Stavrakakis
            network.gateway6 = subnet.gateway
66 d8989b47 Christos Stavrakakis
            network.save()
67 d8989b47 Christos Stavrakakis
68 d8989b47 Christos Stavrakakis
    models = {
69 d8989b47 Christos Stavrakakis
        'db.backend': {
70 d8989b47 Christos Stavrakakis
            'Meta': {'ordering': "['clustername']", 'object_name': 'Backend'},
71 d8989b47 Christos Stavrakakis
            'clustername': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
72 d8989b47 Christos Stavrakakis
            'ctotal': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
73 d8989b47 Christos Stavrakakis
            'dfree': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
74 d8989b47 Christos Stavrakakis
            'disk_templates': ('synnefo.db.fields.SeparatedValuesField', [], {'null': 'True'}),
75 d8989b47 Christos Stavrakakis
            'drained': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
76 d8989b47 Christos Stavrakakis
            'dtotal': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
77 d8989b47 Christos Stavrakakis
            'hash': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
78 d8989b47 Christos Stavrakakis
            'hypervisor': ('django.db.models.fields.CharField', [], {'default': "'kvm'", 'max_length': '32'}),
79 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
80 d8989b47 Christos Stavrakakis
            'index': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'unique': 'True'}),
81 d8989b47 Christos Stavrakakis
            'mfree': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
82 d8989b47 Christos Stavrakakis
            'mtotal': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
83 d8989b47 Christos Stavrakakis
            'offline': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
84 d8989b47 Christos Stavrakakis
            'password_hash': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
85 d8989b47 Christos Stavrakakis
            'pinst_cnt': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
86 d8989b47 Christos Stavrakakis
            'port': ('django.db.models.fields.PositiveIntegerField', [], {'default': '5080'}),
87 d8989b47 Christos Stavrakakis
            'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
88 d8989b47 Christos Stavrakakis
            'username': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
89 d8989b47 Christos Stavrakakis
        },
90 d8989b47 Christos Stavrakakis
        'db.backendnetwork': {
91 d8989b47 Christos Stavrakakis
            'Meta': {'unique_together': "(('network', 'backend'),)", 'object_name': 'BackendNetwork'},
92 d8989b47 Christos Stavrakakis
            'backend': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'networks'", 'on_delete': 'models.PROTECT', 'to': "orm['db.Backend']"}),
93 d8989b47 Christos Stavrakakis
            'backendjobid': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
94 d8989b47 Christos Stavrakakis
            'backendjobstatus': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True'}),
95 d8989b47 Christos Stavrakakis
            'backendlogmsg': ('django.db.models.fields.TextField', [], {'null': 'True'}),
96 d8989b47 Christos Stavrakakis
            'backendopcode': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True'}),
97 d8989b47 Christos Stavrakakis
            'backendtime': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(1, 1, 1, 0, 0)'}),
98 d8989b47 Christos Stavrakakis
            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
99 d8989b47 Christos Stavrakakis
            'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
100 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
101 d8989b47 Christos Stavrakakis
            'mac_prefix': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
102 d8989b47 Christos Stavrakakis
            'network': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'backend_networks'", 'to': "orm['db.Network']"}),
103 d8989b47 Christos Stavrakakis
            'operstate': ('django.db.models.fields.CharField', [], {'default': "'PENDING'", 'max_length': '30'}),
104 d8989b47 Christos Stavrakakis
            'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
105 d8989b47 Christos Stavrakakis
        },
106 d8989b47 Christos Stavrakakis
        'db.bridgepooltable': {
107 d8989b47 Christos Stavrakakis
            'Meta': {'object_name': 'BridgePoolTable'},
108 d8989b47 Christos Stavrakakis
            'available_map': ('django.db.models.fields.TextField', [], {'default': "''"}),
109 d8989b47 Christos Stavrakakis
            'base': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
110 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
111 d8989b47 Christos Stavrakakis
            'offset': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
112 d8989b47 Christos Stavrakakis
            'reserved_map': ('django.db.models.fields.TextField', [], {'default': "''"}),
113 d8989b47 Christos Stavrakakis
            'size': ('django.db.models.fields.IntegerField', [], {})
114 d8989b47 Christos Stavrakakis
        },
115 d8989b47 Christos Stavrakakis
        'db.flavor': {
116 d8989b47 Christos Stavrakakis
            'Meta': {'unique_together': "(('cpu', 'ram', 'disk', 'disk_template'),)", 'object_name': 'Flavor'},
117 d8989b47 Christos Stavrakakis
            'cpu': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
118 d8989b47 Christos Stavrakakis
            'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
119 d8989b47 Christos Stavrakakis
            'disk': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
120 d8989b47 Christos Stavrakakis
            'disk_template': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
121 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
122 d8989b47 Christos Stavrakakis
            'ram': ('django.db.models.fields.IntegerField', [], {'default': '0'})
123 d8989b47 Christos Stavrakakis
        },
124 d8989b47 Christos Stavrakakis
        'db.floatingip': {
125 d8989b47 Christos Stavrakakis
            'Meta': {'object_name': 'FloatingIP'},
126 d8989b47 Christos Stavrakakis
            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
127 d8989b47 Christos Stavrakakis
            'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
128 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
129 d8989b47 Christos Stavrakakis
            'ipv4': ('django.db.models.fields.IPAddressField', [], {'unique': 'True', 'max_length': '15', 'db_index': 'True'}),
130 d8989b47 Christos Stavrakakis
            'machine': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'floating_ips'", 'null': 'True', 'to': "orm['db.VirtualMachine']"}),
131 d8989b47 Christos Stavrakakis
            'network': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'floating_ips'", 'to': "orm['db.Network']"}),
132 d8989b47 Christos Stavrakakis
            'serial': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'floating_ips'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['db.QuotaHolderSerial']"}),
133 d8989b47 Christos Stavrakakis
            'userid': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'})
134 d8989b47 Christos Stavrakakis
        },
135 d8989b47 Christos Stavrakakis
        'db.ippooltable': {
136 d8989b47 Christos Stavrakakis
            'Meta': {'object_name': 'IPPoolTable'},
137 d8989b47 Christos Stavrakakis
            'available_map': ('django.db.models.fields.TextField', [], {'default': "''"}),
138 d8989b47 Christos Stavrakakis
            'base': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
139 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
140 d8989b47 Christos Stavrakakis
            'offset': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
141 d8989b47 Christos Stavrakakis
            'reserved_map': ('django.db.models.fields.TextField', [], {'default': "''"}),
142 d8989b47 Christos Stavrakakis
            'size': ('django.db.models.fields.IntegerField', [], {}),
143 d8989b47 Christos Stavrakakis
            'subnet': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ip_pools'", 'null': 'True', 'to': "orm['db.Subnet']"})
144 d8989b47 Christos Stavrakakis
        },
145 d8989b47 Christos Stavrakakis
        'db.macprefixpooltable': {
146 d8989b47 Christos Stavrakakis
            'Meta': {'object_name': 'MacPrefixPoolTable'},
147 d8989b47 Christos Stavrakakis
            'available_map': ('django.db.models.fields.TextField', [], {'default': "''"}),
148 d8989b47 Christos Stavrakakis
            'base': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
149 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
150 d8989b47 Christos Stavrakakis
            'offset': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
151 d8989b47 Christos Stavrakakis
            'reserved_map': ('django.db.models.fields.TextField', [], {'default': "''"}),
152 d8989b47 Christos Stavrakakis
            'size': ('django.db.models.fields.IntegerField', [], {})
153 d8989b47 Christos Stavrakakis
        },
154 d8989b47 Christos Stavrakakis
        'db.network': {
155 d8989b47 Christos Stavrakakis
            'Meta': {'object_name': 'Network'},
156 d8989b47 Christos Stavrakakis
            'action': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '32', 'null': 'True'}),
157 d8989b47 Christos Stavrakakis
            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
158 d8989b47 Christos Stavrakakis
            'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
159 d8989b47 Christos Stavrakakis
            'dhcp': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
160 d8989b47 Christos Stavrakakis
            'drained': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
161 d8989b47 Christos Stavrakakis
            'flavor': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
162 d8989b47 Christos Stavrakakis
            'floating_ip_pool': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
163 d8989b47 Christos Stavrakakis
            'gateway': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
164 d8989b47 Christos Stavrakakis
            'gateway6': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True'}),
165 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
166 d8989b47 Christos Stavrakakis
            'link': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
167 d8989b47 Christos Stavrakakis
            'mac_prefix': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
168 d8989b47 Christos Stavrakakis
            'machines': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['db.VirtualMachine']", 'through': "orm['db.NetworkInterface']", 'symmetrical': 'False'}),
169 d8989b47 Christos Stavrakakis
            'mode': ('django.db.models.fields.CharField', [], {'max_length': '16', 'null': 'True'}),
170 d8989b47 Christos Stavrakakis
            'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
171 d8989b47 Christos Stavrakakis
            'pool': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'network'", 'unique': 'True', 'null': 'True', 'to': "orm['db.IPPoolTable']"}),
172 d8989b47 Christos Stavrakakis
            'public': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
173 d8989b47 Christos Stavrakakis
            'serial': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'network'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['db.QuotaHolderSerial']"}),
174 d8989b47 Christos Stavrakakis
            'state': ('django.db.models.fields.CharField', [], {'default': "'PENDING'", 'max_length': '32'}),
175 d8989b47 Christos Stavrakakis
            'subnet': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
176 d8989b47 Christos Stavrakakis
            'subnet6': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True'}),
177 d8989b47 Christos Stavrakakis
            'tags': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
178 d8989b47 Christos Stavrakakis
            'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
179 d8989b47 Christos Stavrakakis
            'userid': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'db_index': 'True'})
180 d8989b47 Christos Stavrakakis
        },
181 d8989b47 Christos Stavrakakis
        'db.networkinterface': {
182 d8989b47 Christos Stavrakakis
            'Meta': {'unique_together': "(('network', 'ipv4'),)", 'object_name': 'NetworkInterface'},
183 d8989b47 Christos Stavrakakis
            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
184 d8989b47 Christos Stavrakakis
            'dirty': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
185 d8989b47 Christos Stavrakakis
            'firewall_profile': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True'}),
186 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
187 d8989b47 Christos Stavrakakis
            'index': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
188 d8989b47 Christos Stavrakakis
            'ipv4': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True'}),
189 d8989b47 Christos Stavrakakis
            'ipv6': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
190 d8989b47 Christos Stavrakakis
            'mac': ('django.db.models.fields.CharField', [], {'max_length': '32', 'unique': 'True', 'null': 'True'}),
191 d8989b47 Christos Stavrakakis
            'machine': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'nics'", 'to': "orm['db.VirtualMachine']"}),
192 d8989b47 Christos Stavrakakis
            'network': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'nics'", 'to': "orm['db.Network']"}),
193 d8989b47 Christos Stavrakakis
            'state': ('django.db.models.fields.CharField', [], {'default': "'ACTIVE'", 'max_length': '32'}),
194 d8989b47 Christos Stavrakakis
            'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
195 d8989b47 Christos Stavrakakis
        },
196 d8989b47 Christos Stavrakakis
        'db.quotaholderserial': {
197 d8989b47 Christos Stavrakakis
            'Meta': {'ordering': "['serial']", 'object_name': 'QuotaHolderSerial'},
198 d8989b47 Christos Stavrakakis
            'accept': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
199 d8989b47 Christos Stavrakakis
            'pending': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
200 d8989b47 Christos Stavrakakis
            'resolved': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
201 d8989b47 Christos Stavrakakis
            'serial': ('django.db.models.fields.BigIntegerField', [], {'primary_key': 'True', 'db_index': 'True'})
202 d8989b47 Christos Stavrakakis
        },
203 d8989b47 Christos Stavrakakis
        'db.subnet': {
204 d8989b47 Christos Stavrakakis
            'Meta': {'object_name': 'Subnet'},
205 d8989b47 Christos Stavrakakis
            'cidr': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True'}),
206 d8989b47 Christos Stavrakakis
            'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
207 d8989b47 Christos Stavrakakis
            'dhcp': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
208 d8989b47 Christos Stavrakakis
            'dns_nameservers': ('synnefo.db.fields.SeparatedValuesField', [], {'null': 'True'}),
209 d8989b47 Christos Stavrakakis
            'gateway': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True'}),
210 d8989b47 Christos Stavrakakis
            'host_routes': ('synnefo.db.fields.SeparatedValuesField', [], {'null': 'True'}),
211 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
212 d8989b47 Christos Stavrakakis
            'ipversion': ('django.db.models.fields.IntegerField', [], {'default': '4'}),
213 d8989b47 Christos Stavrakakis
            'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
214 d8989b47 Christos Stavrakakis
            'network': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'subnets'", 'to': "orm['db.Network']"})
215 d8989b47 Christos Stavrakakis
        },
216 d8989b47 Christos Stavrakakis
        'db.virtualmachine': {
217 d8989b47 Christos Stavrakakis
            'Meta': {'object_name': 'VirtualMachine'},
218 d8989b47 Christos Stavrakakis
            'action': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '30', 'null': 'True'}),
219 d8989b47 Christos Stavrakakis
            'backend': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'virtual_machines'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': "orm['db.Backend']"}),
220 d8989b47 Christos Stavrakakis
            'backend_hash': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
221 d8989b47 Christos Stavrakakis
            'backendjobid': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
222 d8989b47 Christos Stavrakakis
            'backendjobstatus': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True'}),
223 d8989b47 Christos Stavrakakis
            'backendlogmsg': ('django.db.models.fields.TextField', [], {'null': 'True'}),
224 d8989b47 Christos Stavrakakis
            'backendopcode': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True'}),
225 d8989b47 Christos Stavrakakis
            'backendtime': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(1, 1, 1, 0, 0)'}),
226 d8989b47 Christos Stavrakakis
            'buildpercentage': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
227 d8989b47 Christos Stavrakakis
            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
228 d8989b47 Christos Stavrakakis
            'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
229 d8989b47 Christos Stavrakakis
            'flavor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['db.Flavor']", 'on_delete': 'models.PROTECT'}),
230 d8989b47 Christos Stavrakakis
            'hostid': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
231 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
232 d8989b47 Christos Stavrakakis
            'imageid': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
233 d8989b47 Christos Stavrakakis
            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
234 d8989b47 Christos Stavrakakis
            'operstate': ('django.db.models.fields.CharField', [], {'default': "'BUILD'", 'max_length': '30'}),
235 d8989b47 Christos Stavrakakis
            'serial': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'virtual_machine'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['db.QuotaHolderSerial']"}),
236 d8989b47 Christos Stavrakakis
            'suspended': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
237 d8989b47 Christos Stavrakakis
            'task': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True'}),
238 d8989b47 Christos Stavrakakis
            'task_job_id': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
239 d8989b47 Christos Stavrakakis
            'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
240 d8989b47 Christos Stavrakakis
            'userid': ('django.db.models.fields.CharField', [], {'max_length': '100', 'db_index': 'True'})
241 d8989b47 Christos Stavrakakis
        },
242 d8989b47 Christos Stavrakakis
        'db.virtualmachinediagnostic': {
243 d8989b47 Christos Stavrakakis
            'Meta': {'ordering': "['-created']", 'object_name': 'VirtualMachineDiagnostic'},
244 d8989b47 Christos Stavrakakis
            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
245 d8989b47 Christos Stavrakakis
            'details': ('django.db.models.fields.TextField', [], {'null': 'True'}),
246 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
247 d8989b47 Christos Stavrakakis
            'level': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
248 d8989b47 Christos Stavrakakis
            'machine': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'diagnostics'", 'to': "orm['db.VirtualMachine']"}),
249 d8989b47 Christos Stavrakakis
            'message': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
250 d8989b47 Christos Stavrakakis
            'source': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
251 d8989b47 Christos Stavrakakis
            'source_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'})
252 d8989b47 Christos Stavrakakis
        },
253 d8989b47 Christos Stavrakakis
        'db.virtualmachinemetadata': {
254 d8989b47 Christos Stavrakakis
            'Meta': {'unique_together': "(('meta_key', 'vm'),)", 'object_name': 'VirtualMachineMetadata'},
255 d8989b47 Christos Stavrakakis
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
256 d8989b47 Christos Stavrakakis
            'meta_key': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
257 d8989b47 Christos Stavrakakis
            'meta_value': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
258 d8989b47 Christos Stavrakakis
            'vm': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'metadata'", 'to': "orm['db.VirtualMachine']"})
259 d8989b47 Christos Stavrakakis
        }
260 d8989b47 Christos Stavrakakis
    }
261 d8989b47 Christos Stavrakakis
262 d8989b47 Christos Stavrakakis
    complete_apps = ['db']
263 d8989b47 Christos Stavrakakis
    symmetrical = True