0001_squashed_0022.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. import dcim.fields
  2. from utilities.json import CustomFieldJSONEncoder
  3. import django.core.validators
  4. from django.db import migrations, models
  5. import django.db.models.deletion
  6. import taggit.managers
  7. import utilities.fields
  8. import utilities.ordering
  9. import utilities.query_functions
  10. class Migration(migrations.Migration):
  11. initial = True
  12. dependencies = [
  13. ('dcim', '0002_squashed'),
  14. ('ipam', '0001_squashed'),
  15. ('extras', '0001_squashed'),
  16. ('tenancy', '0001_squashed_0012'),
  17. ]
  18. replaces = [
  19. ('virtualization', '0001_virtualization'),
  20. ('virtualization', '0002_virtualmachine_add_status'),
  21. ('virtualization', '0003_cluster_add_site'),
  22. ('virtualization', '0004_virtualmachine_add_role'),
  23. ('virtualization', '0005_django2'),
  24. ('virtualization', '0006_tags'),
  25. ('virtualization', '0007_change_logging'),
  26. ('virtualization', '0008_virtualmachine_local_context_data'),
  27. ('virtualization', '0009_custom_tag_models'),
  28. ('virtualization', '0010_cluster_add_tenant'),
  29. ('virtualization', '0011_3569_virtualmachine_fields'),
  30. ('virtualization', '0012_vm_name_nonunique'),
  31. ('virtualization', '0013_deterministic_ordering'),
  32. ('virtualization', '0014_standardize_description'),
  33. ('virtualization', '0015_vminterface'),
  34. ('virtualization', '0016_replicate_interfaces'),
  35. ('virtualization', '0017_update_jsonfield'),
  36. ('virtualization', '0018_custom_field_data'),
  37. ('virtualization', '0019_standardize_name_length'),
  38. ('virtualization', '0020_standardize_models'),
  39. ('virtualization', '0021_virtualmachine_vcpus_decimal'),
  40. ('virtualization', '0022_vminterface_parent'),
  41. ]
  42. operations = [
  43. migrations.CreateModel(
  44. name='Cluster',
  45. fields=[
  46. ('created', models.DateField(auto_now_add=True, null=True)),
  47. ('last_updated', models.DateTimeField(auto_now=True, null=True)),
  48. ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=CustomFieldJSONEncoder)),
  49. ('id', models.BigAutoField(primary_key=True, serialize=False)),
  50. ('name', models.CharField(max_length=100, unique=True)),
  51. ('comments', models.TextField(blank=True)),
  52. ],
  53. options={
  54. 'ordering': ['name'],
  55. },
  56. ),
  57. migrations.CreateModel(
  58. name='ClusterGroup',
  59. fields=[
  60. ('created', models.DateField(auto_now_add=True, null=True)),
  61. ('last_updated', models.DateTimeField(auto_now=True, null=True)),
  62. ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=CustomFieldJSONEncoder)),
  63. ('id', models.BigAutoField(primary_key=True, serialize=False)),
  64. ('name', models.CharField(max_length=100, unique=True)),
  65. ('slug', models.SlugField(max_length=100, unique=True)),
  66. ('description', models.CharField(blank=True, max_length=200)),
  67. ],
  68. options={
  69. 'ordering': ('name',),
  70. },
  71. ),
  72. migrations.CreateModel(
  73. name='ClusterType',
  74. fields=[
  75. ('created', models.DateField(auto_now_add=True, null=True)),
  76. ('last_updated', models.DateTimeField(auto_now=True, null=True)),
  77. ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=CustomFieldJSONEncoder)),
  78. ('id', models.BigAutoField(primary_key=True, serialize=False)),
  79. ('name', models.CharField(max_length=100, unique=True)),
  80. ('slug', models.SlugField(max_length=100, unique=True)),
  81. ('description', models.CharField(blank=True, max_length=200)),
  82. ],
  83. options={
  84. 'ordering': ('name',),
  85. },
  86. ),
  87. migrations.CreateModel(
  88. name='VirtualMachine',
  89. fields=[
  90. ('created', models.DateField(auto_now_add=True, null=True)),
  91. ('last_updated', models.DateTimeField(auto_now=True, null=True)),
  92. ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=CustomFieldJSONEncoder)),
  93. ('id', models.BigAutoField(primary_key=True, serialize=False)),
  94. ('local_context_data', models.JSONField(blank=True, null=True)),
  95. ('name', models.CharField(max_length=64)),
  96. ('status', models.CharField(default='active', max_length=50)),
  97. (
  98. 'vcpus',
  99. models.DecimalField(
  100. blank=True,
  101. decimal_places=2,
  102. max_digits=6,
  103. null=True,
  104. validators=[django.core.validators.MinValueValidator(0.01)],
  105. ),
  106. ),
  107. ('memory', models.PositiveIntegerField(blank=True, null=True)),
  108. ('disk', models.PositiveIntegerField(blank=True, null=True)),
  109. ('comments', models.TextField(blank=True)),
  110. (
  111. 'cluster',
  112. models.ForeignKey(
  113. on_delete=django.db.models.deletion.PROTECT,
  114. related_name='virtual_machines',
  115. to='virtualization.cluster',
  116. ),
  117. ),
  118. (
  119. 'platform',
  120. models.ForeignKey(
  121. blank=True,
  122. null=True,
  123. on_delete=django.db.models.deletion.SET_NULL,
  124. related_name='virtual_machines',
  125. to='dcim.platform',
  126. ),
  127. ),
  128. (
  129. 'primary_ip4',
  130. models.OneToOneField(
  131. blank=True,
  132. null=True,
  133. on_delete=django.db.models.deletion.SET_NULL,
  134. related_name='+',
  135. to='ipam.ipaddress',
  136. ),
  137. ),
  138. (
  139. 'primary_ip6',
  140. models.OneToOneField(
  141. blank=True,
  142. null=True,
  143. on_delete=django.db.models.deletion.SET_NULL,
  144. related_name='+',
  145. to='ipam.ipaddress',
  146. ),
  147. ),
  148. (
  149. 'role',
  150. models.ForeignKey(
  151. blank=True,
  152. null=True,
  153. on_delete=django.db.models.deletion.PROTECT,
  154. related_name='virtual_machines',
  155. to='dcim.devicerole',
  156. ),
  157. ),
  158. ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
  159. (
  160. 'tenant',
  161. models.ForeignKey(
  162. blank=True,
  163. null=True,
  164. on_delete=django.db.models.deletion.PROTECT,
  165. related_name='virtual_machines',
  166. to='tenancy.tenant',
  167. ),
  168. ),
  169. ],
  170. options={
  171. 'ordering': ('name', 'pk'),
  172. 'unique_together': {('cluster', 'tenant', 'name')},
  173. },
  174. ),
  175. migrations.AddField(
  176. model_name='cluster',
  177. name='group',
  178. field=models.ForeignKey(
  179. blank=True,
  180. null=True,
  181. on_delete=django.db.models.deletion.PROTECT,
  182. related_name='clusters',
  183. to='virtualization.clustergroup',
  184. ),
  185. ),
  186. migrations.AddField(
  187. model_name='cluster',
  188. name='site',
  189. field=models.ForeignKey(
  190. blank=True,
  191. null=True,
  192. on_delete=django.db.models.deletion.PROTECT,
  193. related_name='clusters',
  194. to='dcim.site',
  195. ),
  196. ),
  197. migrations.AddField(
  198. model_name='cluster',
  199. name='tags',
  200. field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'),
  201. ),
  202. migrations.AddField(
  203. model_name='cluster',
  204. name='tenant',
  205. field=models.ForeignKey(
  206. blank=True,
  207. null=True,
  208. on_delete=django.db.models.deletion.PROTECT,
  209. related_name='clusters',
  210. to='tenancy.tenant',
  211. ),
  212. ),
  213. migrations.AddField(
  214. model_name='cluster',
  215. name='type',
  216. field=models.ForeignKey(
  217. on_delete=django.db.models.deletion.PROTECT, related_name='clusters', to='virtualization.clustertype'
  218. ),
  219. ),
  220. migrations.CreateModel(
  221. name='VMInterface',
  222. fields=[
  223. ('created', models.DateField(auto_now_add=True, null=True)),
  224. ('last_updated', models.DateTimeField(auto_now=True, null=True)),
  225. ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=CustomFieldJSONEncoder)),
  226. ('id', models.BigAutoField(primary_key=True, serialize=False)),
  227. ('enabled', models.BooleanField(default=True)),
  228. ('mac_address', dcim.fields.MACAddressField(blank=True, null=True)),
  229. (
  230. 'mtu',
  231. models.PositiveIntegerField(
  232. blank=True,
  233. null=True,
  234. validators=[
  235. django.core.validators.MinValueValidator(1),
  236. django.core.validators.MaxValueValidator(65536),
  237. ],
  238. ),
  239. ),
  240. ('mode', models.CharField(blank=True, max_length=50)),
  241. ('name', models.CharField(max_length=64)),
  242. (
  243. '_name',
  244. utilities.fields.NaturalOrderingField(
  245. 'name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize_interface
  246. ),
  247. ),
  248. ('description', models.CharField(blank=True, max_length=200)),
  249. (
  250. 'parent',
  251. models.ForeignKey(
  252. blank=True,
  253. null=True,
  254. on_delete=django.db.models.deletion.SET_NULL,
  255. related_name='child_interfaces',
  256. to='virtualization.vminterface',
  257. ),
  258. ),
  259. (
  260. 'tagged_vlans',
  261. models.ManyToManyField(blank=True, related_name='vminterfaces_as_tagged', to='ipam.VLAN'),
  262. ),
  263. ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
  264. (
  265. 'untagged_vlan',
  266. models.ForeignKey(
  267. blank=True,
  268. null=True,
  269. on_delete=django.db.models.deletion.SET_NULL,
  270. related_name='vminterfaces_as_untagged',
  271. to='ipam.vlan',
  272. ),
  273. ),
  274. (
  275. 'virtual_machine',
  276. models.ForeignKey(
  277. on_delete=django.db.models.deletion.CASCADE,
  278. related_name='interfaces',
  279. to='virtualization.virtualmachine',
  280. ),
  281. ),
  282. ],
  283. options={
  284. 'verbose_name': 'interface',
  285. 'ordering': ('virtual_machine', utilities.query_functions.CollateAsChar('_name')),
  286. 'unique_together': {('virtual_machine', 'name')},
  287. },
  288. ),
  289. ]