source: trunk/sara_cmt/sara_cmt/cluster/migrations/0017_standardize_mac_addresses.py @ 14194

Last change on this file since 14194 was 14194, checked in by sil, 12 years ago

Merged branch 1.0 (until tag 1.0.0) back to trunk

File size: 18.2 KB
Line 
1# encoding: utf-8
2
3#    This file is part of CMT, a Cluster Management Tool made at SARA.
4#    Copyright (C) 2012  Sil Westerveld
5#
6#    This program is free software; you can redistribute it and/or modify
7#    it under the terms of the GNU General Public License as published by
8#    the Free Software Foundation; either version 2 of the License, or
9#    (at your option) any later version.
10#
11#    This program is distributed in the hope that it will be useful,
12#    but WITHOUT ANY WARRANTY; without even the implied warranty of
13#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14#    GNU General Public License for more details.
15#
16#    You should have received a copy of the GNU General Public License
17#    along with this program; if not, write to the Free Software
18#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
20import datetime
21from south.db import db
22from south.v2 import DataMigration
23from django.db import models
24
25import re
26
27class Migration(DataMigration):
28
29    def forwards(self, orm):
30        "Write your forwards methods here."
31        # All existing mac-addresses have to be converted to lowercase notation delimited by a colon.
32        for iface in orm.Interface.objects.all():
33            iface.hwaddress = ':'.join(re.findall(r'[A-Za-z\d]{2}', iface.hwaddress.lower()))
34            iface.save()
35
36
37    def backwards(self, orm):
38        "Write your backwards methods here."
39        # Not necessary to go backwards
40
41
42    models = {
43        'cluster.address': {
44            'Meta': {'unique_together': "(('address', 'city'),)", 'object_name': 'Address'},
45            'address': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
46            'city': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
47            'country': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'addresses'", 'null': 'True', 'to': "orm['cluster.Country']"}),
48            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
49            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
50            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
51            'postalcode': ('django.db.models.fields.CharField', [], {'max_length': '9', 'blank': 'True'}),
52            'tags': ('tagging.fields.TagField', [], {}),
53            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
54        },
55        'cluster.cluster': {
56            'Meta': {'object_name': 'Cluster'},
57            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
58            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
59            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
60            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
61            'tags': ('tagging.fields.TagField', [], {}),
62            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
63        },
64        'cluster.company': {
65            'Meta': {'object_name': 'Company'},
66            'addresses': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'_companies'", 'symmetrical': 'False', 'to': "orm['cluster.Address']"}),
67            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
68            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
69            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
70            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
71            'tags': ('tagging.fields.TagField', [], {}),
72            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
73            'website': ('django.db.models.fields.URLField', [], {'max_length': '200'})
74        },
75        'cluster.connection': {
76            'Meta': {'unique_together': "(('company', 'name'),)", 'object_name': 'Connection'},
77            'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
78            'address': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'connections'", 'null': 'True', 'to': "orm['cluster.Address']"}),
79            'company': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'companies'", 'to': "orm['cluster.Company']"}),
80            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
81            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
82            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
83            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
84            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
85            'tags': ('tagging.fields.TagField', [], {}),
86            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
87        },
88        'cluster.country': {
89            'Meta': {'object_name': 'Country'},
90            'country_code': ('django.db.models.fields.PositiveIntegerField', [], {'unique': 'True'}),
91            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
92            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
93            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
94            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
95            'tags': ('tagging.fields.TagField', [], {}),
96            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
97        },
98        'cluster.hardwaremodel': {
99            'Meta': {'object_name': 'HardwareModel'},
100            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
101            'expansions': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
102            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
104            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
105            'rackspace': ('django.db.models.fields.PositiveIntegerField', [], {}),
106            'tags': ('tagging.fields.TagField', [], {}),
107            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
108            'vendor': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'model specifications'", 'to': "orm['cluster.Company']"})
109        },
110        'cluster.hardwareunit': {
111            'Meta': {'unique_together': "(('rack', 'first_slot'),)", 'object_name': 'HardwareUnit'},
112            'cluster': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'hardware'", 'to': "orm['cluster.Cluster']"}),
113            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
114            'first_slot': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
115            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
116            'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
117            'network': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'hardware'", 'symmetrical': 'False', 'through': "orm['cluster.Interface']", 'to': "orm['cluster.Network']"}),
118            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
119            'rack': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'contents'", 'to': "orm['cluster.Rack']"}),
120            'role': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'hardware'", 'symmetrical': 'False', 'to': "orm['cluster.Role']"}),
121            'specifications': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'hardware'", 'null': 'True', 'to': "orm['cluster.HardwareModel']"}),
122            'tags': ('tagging.fields.TagField', [], {}),
123            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
124            'warranty': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'hardware'", 'null': 'True', 'to': "orm['cluster.WarrantyContract']"}),
125            'warranty_tag': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'})
126        },
127        'cluster.interface': {
128            'Meta': {'object_name': 'Interface'},
129            'aliases': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
130            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
131            'host': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'interfaces'", 'to': "orm['cluster.HardwareUnit']"}),
132            'hwaddress': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '17', 'blank': 'True'}),
133            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
134            'iftype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'interfaces'", 'to': "orm['cluster.InterfaceType']"}),
135            'ip': ('django.db.models.fields.IPAddressField', [], {'max_length': '15', 'blank': 'True'}),
136            'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
137            'network': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'interfaces'", 'to': "orm['cluster.Network']"}),
138            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
139            'tags': ('tagging.fields.TagField', [], {}),
140            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
141        },
142        'cluster.interfacetype': {
143            'Meta': {'object_name': 'InterfaceType'},
144            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
145            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
146            'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
147            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
148            'tags': ('tagging.fields.TagField', [], {}),
149            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
150            'vendor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'interfaces'", 'null': 'True', 'to': "orm['cluster.Company']"})
151        },
152        'cluster.network': {
153            'Meta': {'object_name': 'Network'},
154            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
155            'domain': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
156            'gateway': ('django.db.models.fields.IPAddressField', [], {'max_length': '15', 'blank': 'True'}),
157            'hostnames': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
158            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
159            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
160            'netaddress': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
161            'netmask': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
162            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
163            'tags': ('tagging.fields.TagField', [], {}),
164            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
165            'vlan': ('django.db.models.fields.PositiveIntegerField', [], {'max_length': '3', 'null': 'True', 'blank': 'True'})
166        },
167        'cluster.rack': {
168            'Meta': {'object_name': 'Rack'},
169            'capacity': ('django.db.models.fields.PositiveIntegerField', [], {}),
170            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
171            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
172            'label': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
173            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
174            'room': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'racks'", 'to': "orm['cluster.Room']"}),
175            'tags': ('tagging.fields.TagField', [], {}),
176            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
177        },
178        'cluster.role': {
179            'Meta': {'object_name': 'Role'},
180            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
181            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
182            'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
183            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
184            'tags': ('tagging.fields.TagField', [], {}),
185            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
186        },
187        'cluster.room': {
188            'Meta': {'unique_together': "(('address', 'floor', 'label'),)", 'object_name': 'Room'},
189            'address': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rooms'", 'to': "orm['cluster.Address']"}),
190            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
191            'floor': ('django.db.models.fields.IntegerField', [], {'max_length': '2'}),
192            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
193            'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
194            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
195            'tags': ('tagging.fields.TagField', [], {}),
196            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
197        },
198        'cluster.telephonenumber': {
199            'Meta': {'object_name': 'Telephonenumber'},
200            'areacode': ('django.db.models.fields.CharField', [], {'max_length': '4'}),
201            'connection': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'telephone_numbers'", 'to': "orm['cluster.Connection']"}),
202            'country': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'telephone_numbers'", 'to': "orm['cluster.Country']"}),
203            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
204            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
205            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
206            'subscriber_number': ('django.db.models.fields.IntegerField', [], {'max_length': '15'}),
207            'tags': ('tagging.fields.TagField', [], {}),
208            'type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
209            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
210        },
211        'cluster.warrantycontract': {
212            'Meta': {'object_name': 'WarrantyContract'},
213            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
214            'date_from': ('django.db.models.fields.DateField', [], {}),
215            'date_to': ('django.db.models.fields.DateField', [], {}),
216            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
217            'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
218            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
219            'tags': ('tagging.fields.TagField', [], {}),
220            'type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'contracts'", 'null': 'True', 'to': "orm['cluster.WarrantyType']"}),
221            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
222        },
223        'cluster.warrantytype': {
224            'Meta': {'object_name': 'WarrantyType'},
225            'contact': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'warranty types'", 'to': "orm['cluster.Connection']"}),
226            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
227            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
228            'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
229            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
230            'tags': ('tagging.fields.TagField', [], {}),
231            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
232        }
233    }
234
235    complete_apps = ['cluster']
Note: See TracBrowser for help on using the repository browser.