Django 1.8
Migrate from 1.6 to community selected: 1.8<= vesion < 1.9 Version 1.8 is LTS On driver load: 'devops.driver.libvirt.libvirt_driver' has been marked as deprecated and renamed to 'devops.driver.libvirt' Closes-bug: #1373381 blueprint fuel-qa-python3-compatibility Change-Id: I38c99db5f4dc53c56c4dd22ed679ca1f01979848
This commit is contained in:
parent
0d20f15421
commit
99cd80fe46
|
@ -1,4 +1,4 @@
|
|||
# Copyright 2013 - 2014 Mirantis, Inc.
|
||||
# Copyright 2013 - 2016 Mirantis, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
|
@ -12,4 +12,10 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
__author__ = 'vic'
|
||||
from devops.driver.dummy.dummy_driver import DummyDriver as Driver
|
||||
from devops.driver.dummy.dummy_driver import \
|
||||
DummyL2NetworkDevice as L2NetworkDevice
|
||||
from devops.driver.dummy.dummy_driver import DummyVolume as Volume
|
||||
from devops.driver.dummy.dummy_driver import DummyNode as Node
|
||||
|
||||
__all__ = ['Driver', 'L2NetworkDevice', 'Volume', 'Node']
|
||||
|
|
|
@ -24,15 +24,17 @@ from __future__ import print_function
|
|||
|
||||
from devops.models.base import ParamField
|
||||
from devops.models.base import ParamMultiField
|
||||
from devops.models.driver import Driver as DriverBase
|
||||
from devops.models.network import L2NetworkDevice as L2NetworkDeviceBase
|
||||
from devops.models.node import Node as NodeBase
|
||||
from devops.models.volume import Volume as VolumeBase
|
||||
from devops.models.driver import Driver
|
||||
from devops.models.network import L2NetworkDevice
|
||||
from devops.models.node import Node
|
||||
from devops.models.volume import Volume
|
||||
|
||||
|
||||
class Driver(DriverBase):
|
||||
class DummyDriver(Driver):
|
||||
"""Example of driver implementation
|
||||
|
||||
Note: This class is imported as Driver at .__init__.py
|
||||
|
||||
This class should contain parameters specified in template
|
||||
group['driver']['params']
|
||||
|
||||
|
@ -68,9 +70,11 @@ class Driver(DriverBase):
|
|||
return ['192.168.0.0/24', '192.168.1.0/24']
|
||||
|
||||
|
||||
class L2NetworkDevice(L2NetworkDeviceBase):
|
||||
class DummyL2NetworkDevice(L2NetworkDevice):
|
||||
"""Example implementation of l2 network device.
|
||||
|
||||
Note: This class is imported as L2NetworkDevice at .__init__.py
|
||||
|
||||
L2NetworkDevice represents node/device which acts like switch or router
|
||||
|
||||
yaml example:
|
||||
|
@ -120,7 +124,7 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||
# and network
|
||||
print(self.address_pool.ip_network)
|
||||
|
||||
super(L2NetworkDevice, self).define()
|
||||
super(DummyL2NetworkDevice, self).define()
|
||||
print('Do something after define')
|
||||
|
||||
def start(self):
|
||||
|
@ -146,13 +150,15 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||
Erase method is called one time when you want remove existing
|
||||
l2 network device
|
||||
"""
|
||||
super(L2NetworkDevice, self).erase()
|
||||
super(DummyL2NetworkDevice, self).erase()
|
||||
print('Do something after erase')
|
||||
|
||||
|
||||
class Volume(VolumeBase):
|
||||
class DummyVolume(Volume):
|
||||
"""Example implementation of volume
|
||||
|
||||
Note: This class is imported as Volume at .__init__.py
|
||||
|
||||
Volume is image or disk which should be mounted to a specific Node
|
||||
"""
|
||||
|
||||
|
@ -172,7 +178,7 @@ class Volume(VolumeBase):
|
|||
print(self.driver.dummy_parameter)
|
||||
|
||||
print('Do something before define')
|
||||
super(Volume, self).define()
|
||||
super(DummyVolume, self).define()
|
||||
print('Do something after define')
|
||||
|
||||
def erase(self):
|
||||
|
@ -182,13 +188,15 @@ class Volume(VolumeBase):
|
|||
volume
|
||||
"""
|
||||
print('Do something before erase')
|
||||
super(Volume, self).erase()
|
||||
super(DummyVolume, self).erase()
|
||||
print('Do something after erase')
|
||||
|
||||
|
||||
class Node(NodeBase):
|
||||
class DummyNode(Node):
|
||||
"""Example implementation of node
|
||||
|
||||
Note: This class is imported as Node at .__init__.py
|
||||
|
||||
Node is a server which will be used for deloying of openstack depending on
|
||||
node role
|
||||
|
||||
|
@ -244,7 +252,7 @@ class Node(NodeBase):
|
|||
print(self.interfaces)
|
||||
|
||||
print('Do something before define')
|
||||
super(Node, self).define()
|
||||
super(DummyNode, self).define()
|
||||
print('Do something after define')
|
||||
|
||||
def start(self):
|
||||
|
@ -266,5 +274,5 @@ class Node(NodeBase):
|
|||
node
|
||||
"""
|
||||
print('Do something before erase')
|
||||
super(Node, self).erase()
|
||||
super(DummyNode, self).erase()
|
||||
print('Do something after erase')
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
# Copyright 2013 - 2016 Mirantis, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from devops.driver.ipmi.ipmi_driver import DevopsDriver as Driver
|
||||
|
||||
__all__ = ['Driver']
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright 2013 - 2014 Mirantis, Inc.
|
||||
# Copyright 2013 - 2016 Mirantis, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
|
@ -12,4 +12,10 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
__author__ = 'vic'
|
||||
from devops.driver.libvirt.libvirt_driver import LibvirtDriver as Driver
|
||||
from devops.driver.libvirt.libvirt_driver import \
|
||||
LibvirtL2NetworkDevice as L2NetworkDevice
|
||||
from devops.driver.libvirt.libvirt_driver import LibvirtVolume as Volume
|
||||
from devops.driver.libvirt.libvirt_driver import LibvirtNode as Node
|
||||
|
||||
__all__ = ['Driver', 'L2NetworkDevice', 'Volume', 'Node']
|
||||
|
|
|
@ -34,10 +34,10 @@ from devops.helpers import scancodes
|
|||
from devops import logger
|
||||
from devops.models.base import ParamField
|
||||
from devops.models.base import ParamMultiField
|
||||
from devops.models.driver import Driver as DriverBase
|
||||
from devops.models.network import L2NetworkDevice as L2NetworkDeviceBase
|
||||
from devops.models.node import Node as NodeBase
|
||||
from devops.models.volume import Volume as VolumeBase
|
||||
from devops.models.driver import Driver
|
||||
from devops.models.network import L2NetworkDevice
|
||||
from devops.models.node import Node
|
||||
from devops.models.volume import Volume
|
||||
|
||||
|
||||
class _LibvirtManager(object):
|
||||
|
@ -143,12 +143,14 @@ class Snapshot(object):
|
|||
self.name, self.created)
|
||||
|
||||
|
||||
class Driver(DriverBase):
|
||||
class LibvirtDriver(Driver):
|
||||
"""libvirt driver
|
||||
|
||||
:param use_host_cpu: When creating nodes, should libvirt's
|
||||
CPU "host-model" mode be used to set CPU settings. If set to False,
|
||||
default mode ("custom") will be used. (default: True)
|
||||
|
||||
Note: This class is imported as Driver at .__init__.py
|
||||
"""
|
||||
|
||||
connection_string = ParamField(default="qemu:///system")
|
||||
|
@ -208,7 +210,7 @@ class Driver(DriverBase):
|
|||
return self.conn.getLibVersion()
|
||||
|
||||
|
||||
class L2NetworkDevice(L2NetworkDeviceBase):
|
||||
class LibvirtL2NetworkDevice(L2NetworkDevice):
|
||||
"""L2 network device based on libvirt Network
|
||||
|
||||
Template example
|
||||
|
@ -302,6 +304,7 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||
l2_net_dev: openstack_br
|
||||
tag: 103
|
||||
|
||||
Note: This class is imported as L2NetworkDevice at .__init__.py
|
||||
"""
|
||||
uuid = ParamField()
|
||||
|
||||
|
@ -415,7 +418,7 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||
ret.setAutostart(True)
|
||||
self.uuid = ret.UUIDString()
|
||||
|
||||
super(L2NetworkDevice, self).define()
|
||||
super(LibvirtL2NetworkDevice, self).define()
|
||||
|
||||
def start(self):
|
||||
self.create()
|
||||
|
@ -477,7 +480,7 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||
# Remove network
|
||||
if self._libvirt_network:
|
||||
self._libvirt_network.undefine()
|
||||
super(L2NetworkDevice, self).remove()
|
||||
super(LibvirtL2NetworkDevice, self).remove()
|
||||
|
||||
@retry()
|
||||
def exists(self):
|
||||
|
@ -522,7 +525,8 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||
iface.undefine()
|
||||
|
||||
|
||||
class Volume(VolumeBase):
|
||||
class LibvirtVolume(Volume):
|
||||
"""Note: This class is imported as Volume at .__init__.py """
|
||||
|
||||
uuid = ParamField()
|
||||
capacity = ParamField(default=None)
|
||||
|
@ -567,7 +571,7 @@ class Volume(VolumeBase):
|
|||
)
|
||||
libvirt_volume = pool.createXML(xml, 0)
|
||||
self.uuid = libvirt_volume.key()
|
||||
super(Volume, self).define()
|
||||
super(LibvirtVolume, self).define()
|
||||
|
||||
# Upload predefined image to the volume
|
||||
if self.source_image is not None:
|
||||
|
@ -578,7 +582,7 @@ class Volume(VolumeBase):
|
|||
if self.uuid:
|
||||
if self.exists():
|
||||
self._libvirt_volume.delete(0)
|
||||
super(Volume, self).remove()
|
||||
super(LibvirtVolume, self).remove()
|
||||
|
||||
@retry()
|
||||
def get_capacity(self):
|
||||
|
@ -666,7 +670,8 @@ class Volume(VolumeBase):
|
|||
return volume
|
||||
|
||||
|
||||
class Node(NodeBase):
|
||||
class LibvirtNode(Node):
|
||||
"""Note: This class is imported as Node at .__init__.py """
|
||||
|
||||
uuid = ParamField()
|
||||
hypervisor = ParamField(default='kvm', choices=('kvm', 'test'))
|
||||
|
@ -808,7 +813,7 @@ class Node(NodeBase):
|
|||
logger.info(node_xml)
|
||||
self.uuid = self.driver.conn.defineXML(node_xml).UUIDString()
|
||||
|
||||
super(Node, self).define()
|
||||
super(LibvirtNode, self).define()
|
||||
|
||||
def start(self):
|
||||
self.create()
|
||||
|
@ -837,7 +842,7 @@ class Node(NodeBase):
|
|||
if self._libvirt_node:
|
||||
self._libvirt_node.undefineFlags(
|
||||
libvirt.VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA)
|
||||
super(Node, self).remove()
|
||||
super(LibvirtNode, self).remove()
|
||||
|
||||
@retry()
|
||||
def suspend(self, *args, **kwargs):
|
||||
|
|
|
@ -521,7 +521,7 @@ def create_devops_config(boot_from,
|
|||
{
|
||||
'driver': {
|
||||
'name':
|
||||
'devops.driver.libvirt.libvirt_driver',
|
||||
'devops.driver.libvirt',
|
||||
'params': {
|
||||
'connection_string': 'qemu:///system',
|
||||
'storage_pool_name': 'default',
|
||||
|
|
|
@ -1,348 +1,233 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.5 on 2016-04-13 09:19
|
||||
# flake8: noqa
|
||||
# pylint: disable=line-too-long
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import jsonfield.fields
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
def forwards(self, orm):
|
||||
# Adding model 'Environment'
|
||||
db.create_table(u'devops_environment', (
|
||||
(u'id',
|
||||
self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(
|
||||
unique=True,
|
||||
max_length=255)),
|
||||
))
|
||||
db.send_create_signal(u'devops', ['Environment'])
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
# Adding model 'Network'
|
||||
db.create_table(u'devops_network', (
|
||||
(u'id',
|
||||
self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('uuid',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('environment',
|
||||
self.gf('django.db.models.fields.related.ForeignKey')(
|
||||
to=orm['devops.Environment'], null=True)),
|
||||
('has_dhcp_server',
|
||||
self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||
('has_pxe_server',
|
||||
self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||
('has_reserved_ips',
|
||||
self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||
('tftp_root_dir',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('forward',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255,
|
||||
null=True)),
|
||||
('ip_network',
|
||||
self.gf('django.db.models.fields.CharField')(unique=True,
|
||||
max_length=255)),
|
||||
))
|
||||
db.send_create_signal(u'devops', ['Network'])
|
||||
initial = True
|
||||
|
||||
# Adding unique constraint on 'Network', fields ['name', 'environment']
|
||||
db.create_unique(u'devops_network', ['name', 'environment_id'])
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
# Adding model 'Node'
|
||||
db.create_table(u'devops_node', (
|
||||
(u'id',
|
||||
self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('uuid',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('environment',
|
||||
self.gf('django.db.models.fields.related.ForeignKey')(
|
||||
to=orm['devops.Environment'], null=True)),
|
||||
('hypervisor',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('os_type',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('architecture',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('boot', self.gf('django.db.models.fields.CharField')(
|
||||
default='[]',
|
||||
max_length=255)),
|
||||
('metadata',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255,
|
||||
null=True)),
|
||||
('role',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255,
|
||||
null=True)),
|
||||
('vcpu',
|
||||
self.gf('django.db.models.fields.PositiveSmallIntegerField')(
|
||||
default=1)),
|
||||
('memory',
|
||||
self.gf('django.db.models.fields.IntegerField')(default=1024)),
|
||||
('has_vnc',
|
||||
self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||
))
|
||||
db.send_create_signal(u'devops', ['Node'])
|
||||
|
||||
# Adding unique constraint on 'Node', fields ['name', 'environment']
|
||||
db.create_unique(u'devops_node', ['name', 'environment_id'])
|
||||
|
||||
# Adding model 'Volume'
|
||||
db.create_table(u'devops_volume', (
|
||||
(u'id',
|
||||
self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('uuid',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('environment',
|
||||
self.gf('django.db.models.fields.related.ForeignKey')(
|
||||
to=orm['devops.Environment'], null=True)),
|
||||
('capacity', self.gf('django.db.models.fields.BigIntegerField')()),
|
||||
('backing_store',
|
||||
self.gf('django.db.models.fields.related.ForeignKey')(
|
||||
to=orm['devops.Volume'], null=True)),
|
||||
('format',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
))
|
||||
db.send_create_signal(u'devops', ['Volume'])
|
||||
|
||||
# Adding unique constraint on 'Volume', fields ['name', 'environment']
|
||||
db.create_unique(u'devops_volume', ['name', 'environment_id'])
|
||||
|
||||
# Adding model 'DiskDevice'
|
||||
db.create_table(u'devops_diskdevice', (
|
||||
(u'id',
|
||||
self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('device',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('type',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('bus',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('target_dev',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('node', self.gf('django.db.models.fields.related.ForeignKey')(
|
||||
to=orm['devops.Node'])),
|
||||
('volume', self.gf('django.db.models.fields.related.ForeignKey')(
|
||||
to=orm['devops.Volume'], null=True)),
|
||||
))
|
||||
db.send_create_signal(u'devops', ['DiskDevice'])
|
||||
|
||||
# Adding model 'Interface'
|
||||
db.create_table(u'devops_interface', (
|
||||
(u'id',
|
||||
self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('mac_address',
|
||||
self.gf('django.db.models.fields.CharField')(unique=True,
|
||||
max_length=255)),
|
||||
('network', self.gf('django.db.models.fields.related.ForeignKey')(
|
||||
to=orm['devops.Network'])),
|
||||
('node', self.gf('django.db.models.fields.related.ForeignKey')(
|
||||
to=orm['devops.Node'])),
|
||||
('type',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('model',
|
||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
))
|
||||
db.send_create_signal(u'devops', ['Interface'])
|
||||
|
||||
# Adding model 'Address'
|
||||
db.create_table(u'devops_address', (
|
||||
(u'id',
|
||||
self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('ip_address',
|
||||
self.gf('django.db.models.fields.GenericIPAddressField')(
|
||||
max_length=39)),
|
||||
('interface',
|
||||
self.gf('django.db.models.fields.related.ForeignKey')(
|
||||
to=orm['devops.Interface'])),
|
||||
))
|
||||
db.send_create_signal(u'devops', ['Address'])
|
||||
|
||||
def backwards(self, orm):
|
||||
# Removing unique constraint on 'Volume', fields [
|
||||
# 'name', 'environment']
|
||||
db.delete_unique(u'devops_volume', ['name', 'environment_id'])
|
||||
|
||||
# Removing unique constraint on 'Node', fields ['name', 'environment']
|
||||
db.delete_unique(u'devops_node', ['name', 'environment_id'])
|
||||
|
||||
# Removing unique constraint on 'Network', fields [
|
||||
# 'name', 'environment']
|
||||
db.delete_unique(u'devops_network', ['name', 'environment_id'])
|
||||
|
||||
# Deleting model 'Environment'
|
||||
db.delete_table(u'devops_environment')
|
||||
|
||||
# Deleting model 'Network'
|
||||
db.delete_table(u'devops_network')
|
||||
|
||||
# Deleting model 'Node'
|
||||
db.delete_table(u'devops_node')
|
||||
|
||||
# Deleting model 'Volume'
|
||||
db.delete_table(u'devops_volume')
|
||||
|
||||
# Deleting model 'DiskDevice'
|
||||
db.delete_table(u'devops_diskdevice')
|
||||
|
||||
# Deleting model 'Interface'
|
||||
db.delete_table(u'devops_interface')
|
||||
|
||||
# Deleting model 'Address'
|
||||
db.delete_table(u'devops_address')
|
||||
|
||||
models = {
|
||||
u'devops.address': {
|
||||
'Meta': {'object_name': 'Address'},
|
||||
u'id': (
|
||||
'django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'interface': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Interface']"}),
|
||||
'ip_address': ('django.db.models.fields.GenericIPAddressField', [],
|
||||
{'max_length': '39'})
|
||||
},
|
||||
u'devops.diskdevice': {
|
||||
'Meta': {'object_name': 'DiskDevice'},
|
||||
'bus': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'device': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
u'id': (
|
||||
'django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'node': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Node']"}),
|
||||
'target_dev': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'type': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'volume': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Volume']", 'null': 'True'})
|
||||
},
|
||||
u'devops.environment': {
|
||||
'Meta': {'object_name': 'Environment'},
|
||||
u'id': (
|
||||
'django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'unique': 'True', 'max_length': '255'})
|
||||
},
|
||||
u'devops.interface': {
|
||||
'Meta': {'object_name': 'Interface'},
|
||||
u'id': (
|
||||
'django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'mac_address': ('django.db.models.fields.CharField', [],
|
||||
{'unique': 'True', 'max_length': '255'}),
|
||||
'model': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'network': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Network']"}),
|
||||
'node': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Node']"}),
|
||||
'type': (
|
||||
'django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
u'devops.network': {
|
||||
'Meta': {'unique_together': "(('name', 'environment'),)",
|
||||
'object_name': 'Network'},
|
||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Environment']",
|
||||
'null': 'True'}),
|
||||
'forward': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255', 'null': 'True'}),
|
||||
'has_dhcp_server': (
|
||||
'django.db.models.fields.BooleanField', [],
|
||||
{'default': 'False'}),
|
||||
'has_pxe_server': (
|
||||
'django.db.models.fields.BooleanField', [],
|
||||
{'default': 'False'}),
|
||||
'has_reserved_ips': (
|
||||
'django.db.models.fields.BooleanField', [],
|
||||
{'default': 'True'}),
|
||||
u'id': (
|
||||
'django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'ip_network': ('django.db.models.fields.CharField', [],
|
||||
{'unique': 'True', 'max_length': '255'}),
|
||||
'name': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'tftp_root_dir': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'uuid': (
|
||||
'django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
u'devops.node': {
|
||||
'Meta': {'unique_together': "(('name', 'environment'),)",
|
||||
'object_name': 'Node'},
|
||||
'architecture': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'boot': ('django.db.models.fields.CharField', [],
|
||||
{'default': "'[]'", 'max_length': '255'}),
|
||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Environment']",
|
||||
'null': 'True'}),
|
||||
'has_vnc': (
|
||||
'django.db.models.fields.BooleanField', [],
|
||||
{'default': 'True'}),
|
||||
'hypervisor': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
u'id': (
|
||||
'django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'memory': (
|
||||
'django.db.models.fields.IntegerField', [],
|
||||
{'default': '1024'}),
|
||||
'metadata': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255', 'null': 'True'}),
|
||||
'name': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'os_type': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'role': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255', 'null': 'True'}),
|
||||
'uuid': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'vcpu': ('django.db.models.fields.PositiveSmallIntegerField', [],
|
||||
{'default': '1'})
|
||||
},
|
||||
u'devops.volume': {
|
||||
'Meta': {'unique_together': "(('name', 'environment'),)",
|
||||
'object_name': 'Volume'},
|
||||
'backing_store': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Volume']", 'null': 'True'}),
|
||||
'capacity': ('django.db.models.fields.BigIntegerField', [], {}),
|
||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Environment']",
|
||||
'null': 'True'}),
|
||||
'format': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
u'id': (
|
||||
'django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': (
|
||||
'django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'uuid': (
|
||||
'django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['devops']
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Address',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('ip_address', models.GenericIPAddressField()),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_address',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AddressPool',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||
('params', jsonfield.fields.JSONField(default={})),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('net', models.CharField(max_length=255, unique=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_address_pool',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DiskDevice',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('device', models.CharField(choices=[(b'disk', b'disk'), (b'cdrom', b'cdrom')], max_length=255)),
|
||||
('type', models.CharField(choices=[(b'file', b'file')], max_length=255)),
|
||||
('bus', models.CharField(choices=[(b'virtio', b'virtio')], max_length=255)),
|
||||
('target_dev', models.CharField(max_length=255)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_diskdevice',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Driver',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||
('params', jsonfield.fields.JSONField(default={})),
|
||||
('name', models.CharField(max_length=512)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_driver',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Environment',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||
('name', models.CharField(max_length=255, unique=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_environment',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Interface',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('label', models.CharField(max_length=255, null=True)),
|
||||
('mac_address', models.CharField(max_length=255, unique=True)),
|
||||
('type', models.CharField(max_length=255)),
|
||||
('model', models.CharField(choices=[(b'virtio', b'virtio'), (b'e1000', b'e1000'), (b'pcnet', b'pcnet'), (b'rtl8139', b'rtl8139'), (b'ne2k_pci', b'ne2k_pci')], max_length=255)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_interface',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='L2NetworkDevice',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||
('params', jsonfield.fields.JSONField(default={})),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('address_pool', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.AddressPool')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_l2_network_device',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='NetworkConfig',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('label', models.CharField(max_length=255)),
|
||||
('networks', jsonfield.fields.JSONField(default=[])),
|
||||
('aggregation', models.CharField(max_length=255, null=True)),
|
||||
('parents', jsonfield.fields.JSONField(default=[])),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_network_config',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='NetworkPool',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('address_pool', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.AddressPool')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_network_pool',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Node',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||
('params', jsonfield.fields.JSONField(default={})),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('role', models.CharField(max_length=255, null=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_node',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Volume',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||
('params', jsonfield.fields.JSONField(default={})),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('backing_store', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.Volume')),
|
||||
('node', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.Node')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_volume',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Group',
|
||||
fields=[
|
||||
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('driver', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='devops.Driver')),
|
||||
('environment', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.Environment')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'devops_group',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='networkconfig',
|
||||
name='node',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='devops.Node'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='interface',
|
||||
name='l2_network_device',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.L2NetworkDevice'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='interface',
|
||||
name='node',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='devops.Node'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='diskdevice',
|
||||
name='node',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='devops.Node'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='diskdevice',
|
||||
name='volume',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.Volume'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='addresspool',
|
||||
name='environment',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='devops.Environment'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='address',
|
||||
name='interface',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.Interface'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='volume',
|
||||
unique_together={('name', 'node')},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='node',
|
||||
name='group',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.Group'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='networkpool',
|
||||
name='group',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.Group'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='l2networkdevice',
|
||||
name='group',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.Group'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='addresspool',
|
||||
unique_together={('name', 'environment')},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='node',
|
||||
unique_together={('name', 'group')},
|
||||
),
|
||||
]
|
||||
|
|
|
@ -1,185 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# flake8: noqa
|
||||
from south.utils import datetime_utils as datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
def forwards(self, orm):
|
||||
# Adding field 'Environment.created'
|
||||
db.add_column('devops_environment', 'created',
|
||||
self.gf('django.db.models.fields.DateTimeField')(
|
||||
default=datetime.datetime.utcnow,
|
||||
auto_now_add=True, blank=True), keep_default=False)
|
||||
|
||||
# Adding field 'Node.created'
|
||||
db.add_column('devops_node', 'created',
|
||||
self.gf('django.db.models.fields.DateTimeField')(
|
||||
default=datetime.datetime.utcnow,
|
||||
auto_now_add=True, blank=True), keep_default=False)
|
||||
|
||||
# Adding field 'Volume.created'
|
||||
db.add_column('devops_volume', 'created',
|
||||
self.gf('django.db.models.fields.DateTimeField')(
|
||||
default=datetime.datetime.utcnow,
|
||||
auto_now_add=True, blank=True), keep_default=False)
|
||||
|
||||
# Adding field 'Network.created'
|
||||
db.add_column('devops_network', 'created',
|
||||
self.gf('django.db.models.fields.DateTimeField')(
|
||||
default=datetime.datetime.utcnow,
|
||||
auto_now_add=True, blank=True), keep_default=False)
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting field 'Environment.created'
|
||||
db.delete_column('devops_environment', 'created')
|
||||
|
||||
# Deleting field 'Node.created'
|
||||
db.delete_column('devops_node', 'created')
|
||||
|
||||
# Deleting field 'Volume.created'
|
||||
db.delete_column('devops_volume', 'created')
|
||||
|
||||
# Deleting field 'Network.created'
|
||||
db.delete_column('devops_network', 'created')
|
||||
|
||||
models = {
|
||||
u'devops.address': {
|
||||
'Meta': {'object_name': 'Address'},
|
||||
u'id': (
|
||||
'django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'interface': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Interface']"}),
|
||||
'ip_address': ('django.db.models.fields.GenericIPAddressField', [],
|
||||
{'max_length': '39'})
|
||||
},
|
||||
u'devops.diskdevice': {
|
||||
'Meta': {'object_name': 'DiskDevice'},
|
||||
'bus': ('django.db.models.fields.CharField',
|
||||
[], {'max_length': '255'}
|
||||
),
|
||||
'device': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
u'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'node': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Node']"}),
|
||||
'target_dev': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'type': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'volume': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Volume']", 'null': 'True'})
|
||||
},
|
||||
u'devops.environment': {
|
||||
'Meta': {'object_name': 'Environment'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True', 'blank': 'True'}),
|
||||
u'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'unique': 'True', 'max_length': '255'})
|
||||
},
|
||||
u'devops.interface': {
|
||||
'Meta': {'object_name': 'Interface'},
|
||||
u'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'mac_address': ('django.db.models.fields.CharField', [],
|
||||
{'unique': 'True', 'max_length': '255'}),
|
||||
'model': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'network': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Network']"}),
|
||||
'node': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Node']"}),
|
||||
'type': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'})
|
||||
},
|
||||
u'devops.network': {
|
||||
'Meta': {'unique_together': "(('name', 'environment'),)",
|
||||
'object_name': 'Network'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Environment']",
|
||||
'null': 'True'}),
|
||||
'forward': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255', 'null': 'True'}),
|
||||
'has_dhcp_server': ('django.db.models.fields.BooleanField', [],
|
||||
{}),
|
||||
'has_pxe_server': ('django.db.models.fields.BooleanField', [], {}),
|
||||
'has_reserved_ips': ('django.db.models.fields.BooleanField', [],
|
||||
{'default': 'True'}),
|
||||
u'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'ip_network': ('django.db.models.fields.CharField', [],
|
||||
{'unique': 'True', 'max_length': '255'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'tftp_root_dir': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'uuid': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'})
|
||||
},
|
||||
u'devops.node': {
|
||||
'Meta': {'unique_together': "(('name', 'environment'),)",
|
||||
'object_name': 'Node'},
|
||||
'architecture': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'boot': ('django.db.models.fields.CharField', [],
|
||||
{'default': "'[]'", 'max_length': '255'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Environment']",
|
||||
'null': 'True'}),
|
||||
'has_vnc': ('django.db.models.fields.BooleanField', [],
|
||||
{'default': 'True'}),
|
||||
'hypervisor': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
u'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'memory': ('django.db.models.fields.IntegerField', [],
|
||||
{'default': '1024'}),
|
||||
'metadata': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255', 'null': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'os_type': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'role': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255', 'null': 'True'}),
|
||||
'uuid': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'vcpu': ('django.db.models.fields.PositiveSmallIntegerField', [],
|
||||
{'default': '1'})
|
||||
},
|
||||
u'devops.volume': {
|
||||
'Meta': {'unique_together': "(('name', 'environment'),)",
|
||||
'object_name': 'Volume'},
|
||||
'backing_store': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Volume']", 'null': 'True'}),
|
||||
'capacity': ('django.db.models.fields.BigIntegerField', [], {}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': u"orm['devops.Environment']",
|
||||
'null': 'True'}),
|
||||
'format': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
u'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'uuid': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['devops']
|
|
@ -1,568 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# flake8: noqa
|
||||
from south.utils import datetime_utils as datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Removing unique constraint on 'Volume',
|
||||
# fields ['name', 'environment']
|
||||
db.delete_unique('devops_volume', ['name', 'environment_id'])
|
||||
|
||||
# Removing unique constraint on 'Node', fields ['name', 'environment']
|
||||
db.delete_unique('devops_node', ['name', 'environment_id'])
|
||||
|
||||
# Removing unique constraint on 'Network',
|
||||
# fields ['name', 'environment']
|
||||
db.delete_unique('devops_network', ['name', 'environment_id'])
|
||||
|
||||
# Deleting model 'Network'
|
||||
db.delete_table('devops_network')
|
||||
|
||||
DateTimeField = self.gf('django.db.models.fields.DateTimeField')
|
||||
ForeignKey = self.gf('django.db.models.fields.related.ForeignKey')
|
||||
CharField = self.gf('django.db.models.fields.CharField')
|
||||
OneToOneField = self.gf(
|
||||
'django.db.models.fields.related.OneToOneField')
|
||||
AutoField = self.gf('django.db.models.fields.AutoField')
|
||||
JSONField = self.gf('jsonfield.fields.JSONField')
|
||||
|
||||
# Adding model 'Group'
|
||||
db.create_table('devops_group', (
|
||||
('created', DateTimeField(default=datetime.datetime.utcnow,
|
||||
auto_now_add=True,
|
||||
blank=True)),
|
||||
('environment', ForeignKey(to=orm['devops.Environment'],
|
||||
null=True)),
|
||||
('name', CharField(max_length=255)),
|
||||
('driver', OneToOneField(to=orm['devops.Driver'],
|
||||
unique=True,
|
||||
primary_key=True)),
|
||||
))
|
||||
db.send_create_signal('devops', ['Group'])
|
||||
|
||||
# Adding model 'AddressPool'
|
||||
db.create_table('devops_address_pool', (
|
||||
('id', AutoField(primary_key=True)),
|
||||
('created', DateTimeField(default=datetime.datetime.utcnow,
|
||||
auto_now_add=True,
|
||||
blank=True)),
|
||||
('params', JSONField(default={})),
|
||||
('environment', ForeignKey(to=orm['devops.Environment'])),
|
||||
('name', CharField(max_length=255)),
|
||||
('net', CharField(unique=True, max_length=255)),
|
||||
))
|
||||
db.send_create_signal('devops', ['AddressPool'])
|
||||
|
||||
# Adding unique constraint on 'AddressPool',
|
||||
# fields ['name', 'environment']
|
||||
db.create_unique('devops_address_pool', ['name', 'environment_id'])
|
||||
|
||||
# Adding model 'L2NetworkDevice'
|
||||
db.create_table('devops_l2_network_device', (
|
||||
('id', AutoField(primary_key=True)),
|
||||
('created', DateTimeField(default=datetime.datetime.utcnow,
|
||||
auto_now_add=True,
|
||||
blank=True)),
|
||||
('params', JSONField(default={})),
|
||||
('group', ForeignKey(to=orm['devops.Group'], null=True)),
|
||||
('address_pool', ForeignKey(to=orm['devops.AddressPool'],
|
||||
null=True)),
|
||||
('name', CharField(max_length=255)),
|
||||
))
|
||||
db.send_create_signal('devops', ['L2NetworkDevice'])
|
||||
|
||||
# Adding model 'NetworkConfig'
|
||||
db.create_table('devops_network_config', (
|
||||
('id', AutoField(primary_key=True)),
|
||||
('label', CharField(max_length=255)),
|
||||
('node', ForeignKey(to=orm['devops.Node'])),
|
||||
('networks', JSONField(default=[])),
|
||||
('aggregation', CharField(max_length=255, null=True)),
|
||||
('parents', JSONField(default=[])),
|
||||
))
|
||||
db.send_create_signal('devops', ['NetworkConfig'])
|
||||
|
||||
# Adding model 'Driver'
|
||||
db.create_table('devops_driver', (
|
||||
('id', AutoField(primary_key=True)),
|
||||
('created', DateTimeField(default=datetime.datetime.utcnow,
|
||||
auto_now_add=True,
|
||||
blank=True)),
|
||||
('params', JSONField(default={})),
|
||||
('name', CharField(max_length=512)),
|
||||
))
|
||||
db.send_create_signal('devops', ['Driver'])
|
||||
|
||||
# Adding model 'NetworkPool'
|
||||
db.create_table('devops_network_pool', (
|
||||
('id', AutoField(primary_key=True)),
|
||||
('created', DateTimeField(default=datetime.datetime.utcnow,
|
||||
auto_now_add=True,
|
||||
blank=True)),
|
||||
('group', ForeignKey(to=orm['devops.Group'], null=True)),
|
||||
('address_pool', ForeignKey(to=orm['devops.AddressPool'],
|
||||
null=True)),
|
||||
('name', CharField(max_length=255)),
|
||||
))
|
||||
db.send_create_signal('devops', ['NetworkPool'])
|
||||
|
||||
# Deleting field 'Interface.network'
|
||||
db.delete_column('devops_interface', 'network_id')
|
||||
|
||||
# Adding field 'Interface.l2_network_device'
|
||||
db.add_column('devops_interface',
|
||||
'l2_network_device',
|
||||
ForeignKey(to=orm['devops.L2NetworkDevice'],
|
||||
null=True),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Interface.label'
|
||||
db.add_column('devops_interface',
|
||||
'label',
|
||||
CharField(max_length=255, null=True),
|
||||
keep_default=False)
|
||||
|
||||
# Deleting field 'Node.uuid'
|
||||
db.delete_column('devops_node', 'uuid')
|
||||
|
||||
# Deleting field 'Node.has_vnc'
|
||||
db.delete_column('devops_node', 'has_vnc')
|
||||
|
||||
# Deleting field 'Node.vcpu'
|
||||
db.delete_column('devops_node', 'vcpu')
|
||||
|
||||
# Deleting field 'Node.hypervisor'
|
||||
db.delete_column('devops_node', 'hypervisor')
|
||||
|
||||
# Deleting field 'Node.boot'
|
||||
db.delete_column('devops_node', 'boot')
|
||||
|
||||
# Deleting field 'Node.environment'
|
||||
db.delete_column('devops_node', 'environment_id')
|
||||
|
||||
# Deleting field 'Node.architecture'
|
||||
db.delete_column('devops_node', 'architecture')
|
||||
|
||||
# Deleting field 'Node.memory'
|
||||
db.delete_column('devops_node', 'memory')
|
||||
|
||||
# Deleting field 'Node.os_type'
|
||||
db.delete_column('devops_node', 'os_type')
|
||||
|
||||
# Deleting field 'Node.metadata'
|
||||
db.delete_column('devops_node', 'metadata')
|
||||
|
||||
# Adding field 'Node.params'
|
||||
db.add_column('devops_node',
|
||||
'params',
|
||||
JSONField(default={}),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Node.group'
|
||||
db.add_column('devops_node',
|
||||
'group',
|
||||
ForeignKey(to=orm['devops.Group'], null=True),
|
||||
keep_default=False)
|
||||
|
||||
# Adding unique constraint on 'Node', fields ['name', 'group']
|
||||
db.create_unique('devops_node', ['name', 'group_id'])
|
||||
|
||||
# Deleting field 'Volume.environment'
|
||||
db.delete_column('devops_volume', 'environment_id')
|
||||
|
||||
# Deleting field 'Volume.capacity'
|
||||
db.delete_column('devops_volume', 'capacity')
|
||||
|
||||
# Deleting field 'Volume.format'
|
||||
db.delete_column('devops_volume', 'format')
|
||||
|
||||
# Deleting field 'Volume.uuid'
|
||||
db.delete_column('devops_volume', 'uuid')
|
||||
|
||||
# Adding field 'Volume.params'
|
||||
db.add_column('devops_volume', 'params',
|
||||
self.gf('jsonfield.fields.JSONField')(default={}),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Volume.node'
|
||||
db.add_column('devops_volume',
|
||||
'node',
|
||||
ForeignKey(to=orm['devops.Node'], null=True),
|
||||
keep_default=False)
|
||||
|
||||
# Adding unique constraint on 'Volume', fields ['name', 'node']
|
||||
db.create_unique('devops_volume', ['name', 'node_id'])
|
||||
|
||||
# Changing field 'Address.interface'
|
||||
db.alter_column('devops_address',
|
||||
'interface_id',
|
||||
ForeignKey(to=orm['devops.Interface'], null=True))
|
||||
|
||||
def backwards(self, orm):
|
||||
# Removing unique constraint on 'Volume', fields ['name', 'group']
|
||||
db.delete_unique('devops_volume', ['name', 'node_id'])
|
||||
|
||||
# Removing unique constraint on 'Node', fields ['name', 'group']
|
||||
db.delete_unique('devops_node', ['name', 'group_id'])
|
||||
|
||||
# Removing unique constraint on 'AddressPool',
|
||||
# fields ['name', 'environment']
|
||||
db.delete_unique('devops_address_pool', ['name', 'environment_id'])
|
||||
|
||||
DateTimeField = self.gf('django.db.models.fields.DateTimeField')
|
||||
ForeignKey = self.gf('django.db.models.fields.related.ForeignKey')
|
||||
CharField = self.gf('django.db.models.fields.CharField')
|
||||
AutoField = self.gf('django.db.models.fields.AutoField')
|
||||
BooleanField = self.gf('django.db.models.fields.BooleanField')
|
||||
PositiveSmallIntegerField = self.gf(
|
||||
'django.db.models.fields.PositiveSmallIntegerField')
|
||||
IntegerField = self.gf('django.db.models.fields.IntegerField')
|
||||
BigIntegerField = self.gf('django.db.models.fields.BigIntegerField')
|
||||
|
||||
# Adding model 'Network'
|
||||
db.create_table('devops_network', (
|
||||
('ip_network', CharField(max_length=255, unique=True)),
|
||||
('has_reserved_ips', BooleanField(default=True)),
|
||||
('id', AutoField(primary_key=True)),
|
||||
('uuid', CharField(max_length=255)),
|
||||
('has_pxe_server', BooleanField()),
|
||||
('name', CharField(max_length=255)),
|
||||
('created', DateTimeField(default=datetime.datetime.utcnow,
|
||||
auto_now_add=True,
|
||||
blank=True)),
|
||||
('environment', ForeignKey(to=orm['devops.Environment'],
|
||||
null=True)),
|
||||
('tftp_root_dir', CharField(max_length=255)),
|
||||
('forward', CharField(max_length=255, null=True)),
|
||||
('has_dhcp_server', BooleanField()),
|
||||
))
|
||||
db.send_create_signal('devops', ['Network'])
|
||||
|
||||
# Adding unique constraint on 'Network', fields ['name', 'environment']
|
||||
db.create_unique('devops_network', ['name', 'environment_id'])
|
||||
|
||||
# Deleting model 'Group'
|
||||
db.delete_table('devops_group')
|
||||
|
||||
# Deleting model 'AddressPool'
|
||||
db.delete_table('devops_address_pool')
|
||||
|
||||
# Deleting model 'L2NetworkDevice'
|
||||
db.delete_table('devops_l2_network_device')
|
||||
|
||||
# Deleting model 'NetworkConfig'
|
||||
db.delete_table('devops_network_config')
|
||||
|
||||
# Deleting model 'Driver'
|
||||
db.delete_table('devops_driver')
|
||||
|
||||
# Deleting model 'NetworkPool'
|
||||
db.delete_table('devops_network_pool')
|
||||
|
||||
# Adding field 'Interface.network'
|
||||
db.add_column('devops_interface',
|
||||
'network',
|
||||
ForeignKey(default=None, null=True,
|
||||
to=orm['devops.Network']),
|
||||
keep_default=False)
|
||||
|
||||
# Deleting field 'Interface.l2_network_device'
|
||||
db.delete_column('devops_interface', 'l2_network_device_id')
|
||||
|
||||
# Deleting field 'Interface.label'
|
||||
db.delete_column('devops_interface', 'label')
|
||||
|
||||
# Adding field 'Node.uuid'
|
||||
db.add_column('devops_node', 'uuid',
|
||||
CharField(default=None, max_length=255),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Node.has_vnc'
|
||||
db.add_column('devops_node', 'has_vnc',
|
||||
BooleanField(default=True),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Node.vcpu'
|
||||
db.add_column('devops_node', 'vcpu',
|
||||
PositiveSmallIntegerField(default=1),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Node.hypervisor'
|
||||
db.add_column('devops_node', 'hypervisor',
|
||||
CharField(default=None, max_length=255),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Node.boot'
|
||||
db.add_column('devops_node', 'boot',
|
||||
CharField(default='[]', max_length=255),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Node.environment'
|
||||
db.add_column('devops_node', 'environment',
|
||||
ForeignKey(to=orm['devops.Environment'], null=True),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Node.architecture'
|
||||
db.add_column('devops_node', 'architecture',
|
||||
CharField(default=None, max_length=255),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Node.memory'
|
||||
db.add_column('devops_node',
|
||||
'memory',
|
||||
IntegerField(default=1024),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Node.os_type'
|
||||
db.add_column('devops_node',
|
||||
'os_type',
|
||||
CharField(default=None, max_length=255),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Node.metadata'
|
||||
db.add_column('devops_node',
|
||||
'metadata',
|
||||
CharField(max_length=255, null=True),
|
||||
keep_default=False)
|
||||
|
||||
# Deleting field 'Node.params'
|
||||
db.delete_column('devops_node', 'params')
|
||||
|
||||
# Deleting field 'Node.group'
|
||||
db.delete_column('devops_node', 'group_id')
|
||||
|
||||
# Adding unique constraint on 'Node', fields ['name', 'environment']
|
||||
db.create_unique('devops_node', ['name', 'environment_id'])
|
||||
|
||||
# Adding field 'Volume.environment'
|
||||
db.add_column('devops_volume',
|
||||
'environment',
|
||||
ForeignKey(to=orm['devops.Environment'], null=True),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Volume.capacity'
|
||||
db.add_column('devops_volume',
|
||||
'capacity',
|
||||
BigIntegerField(default=None),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Volume.format'
|
||||
db.add_column('devops_volume',
|
||||
'format',
|
||||
CharField(default=None, max_length=255),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'Volume.uuid'
|
||||
db.add_column('devops_volume',
|
||||
'uuid',
|
||||
CharField(default=None, max_length=255),
|
||||
keep_default=False)
|
||||
|
||||
# Deleting field 'Volume.params'
|
||||
db.delete_column('devops_volume', 'params')
|
||||
|
||||
# Deleting field 'Volume.node'
|
||||
db.delete_column('devops_volume', 'node_id')
|
||||
|
||||
# Adding unique constraint on 'Volume', fields ['name', 'environment']
|
||||
db.create_unique('devops_volume', ['name', 'environment_id'])
|
||||
|
||||
# Changing field 'Address.interface'
|
||||
db.alter_column('devops_address',
|
||||
'interface_id',
|
||||
ForeignKey(default=None, to=orm['devops.Interface']))
|
||||
|
||||
models = {
|
||||
'devops.address': {
|
||||
'Meta': {'object_name': 'Address'},
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'interface': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Interface']",
|
||||
'null': 'True'}),
|
||||
'ip_address': ('django.db.models.fields.GenericIPAddressField',
|
||||
[], {'max_length': '39'})
|
||||
},
|
||||
'devops.addresspool': {
|
||||
'Meta': {'unique_together': "(('name', 'environment'),)",
|
||||
'db_table': "'devops_address_pool'",
|
||||
'object_name': 'AddressPool'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True',
|
||||
'blank': 'True'}),
|
||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Environment']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'net': ('django.db.models.fields.CharField', [],
|
||||
{'unique': 'True', 'max_length': '255'}),
|
||||
'params': ('jsonfield.fields.JSONField', [], {'default': '{}'})
|
||||
},
|
||||
'devops.diskdevice': {
|
||||
'Meta': {'object_name': 'DiskDevice'},
|
||||
'bus': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'device': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'node': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Node']"}),
|
||||
'target_dev': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'type': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'volume': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Volume']", 'null': 'True'})
|
||||
},
|
||||
'devops.driver': {
|
||||
'Meta': {'object_name': 'Driver'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True',
|
||||
'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '512'}),
|
||||
'params': ('jsonfield.fields.JSONField', [],
|
||||
{'default': '{}'})
|
||||
},
|
||||
'devops.environment': {
|
||||
'Meta': {'object_name': 'Environment'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True',
|
||||
'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'unique': 'True', 'max_length': '255'})
|
||||
},
|
||||
'devops.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True',
|
||||
'blank': 'True'}),
|
||||
'driver': ('django.db.models.fields.related.OneToOneField', [],
|
||||
{'to': "orm['devops.Driver']",
|
||||
'unique': 'True',
|
||||
'primary_key': 'True'}),
|
||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Environment']",
|
||||
'null': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'})
|
||||
},
|
||||
'devops.interface': {
|
||||
'Meta': {'object_name': 'Interface'},
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'l2_network_device': ('django.db.models.fields.related.ForeignKey',
|
||||
[], {'to': "orm['devops.L2NetworkDevice']",
|
||||
'null': 'True'}),
|
||||
'label': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255', 'null': 'True'}),
|
||||
'mac_address': ('django.db.models.fields.CharField', [],
|
||||
{'unique': 'True', 'max_length': '255'}),
|
||||
'model': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'node': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Node']"}),
|
||||
'type': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'})
|
||||
},
|
||||
'devops.l2networkdevice': {
|
||||
'Meta': {'object_name': 'L2NetworkDevice',
|
||||
'db_table': "'devops_l2_network_device'"},
|
||||
'address_pool': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.AddressPool']",
|
||||
'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True',
|
||||
'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Group']", 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'params': ('jsonfield.fields.JSONField', [], {'default': '{}'})
|
||||
},
|
||||
'devops.networkconfig': {
|
||||
'Meta': {'object_name': 'NetworkConfig'},
|
||||
'aggregation': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255', 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'label': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'networks': ('jsonfield.fields.JSONField', [], {'default': '[]'}),
|
||||
'node': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Node']"}),
|
||||
'parents': ('jsonfield.fields.JSONField', [], {'default': '[]'})
|
||||
},
|
||||
'devops.networkpool': {
|
||||
'Meta': {'object_name': 'NetworkPool',
|
||||
'db_table': "'devops_network_pool'"},
|
||||
'address_pool': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.AddressPool']",
|
||||
'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True',
|
||||
'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Group']", 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'})
|
||||
},
|
||||
'devops.node': {
|
||||
'Meta': {'unique_together': "(('name', 'group'),)",
|
||||
'object_name': 'Node'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True',
|
||||
'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Group']", 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'params': ('jsonfield.fields.JSONField', [], {'default': '{}'}),
|
||||
'role': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255', 'null': 'True'})
|
||||
},
|
||||
'devops.volume': {
|
||||
'Meta': {'unique_together': "(('name', 'node'),)",
|
||||
'object_name': 'Volume'},
|
||||
'backing_store': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Volume']", 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [],
|
||||
{'default': 'datetime.datetime.utcnow',
|
||||
'auto_now_add': 'True',
|
||||
'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [],
|
||||
{'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [],
|
||||
{'max_length': '255'}),
|
||||
'node': ('django.db.models.fields.related.ForeignKey', [],
|
||||
{'to': "orm['devops.Node']", 'null': 'True'}),
|
||||
'params': ('jsonfield.fields.JSONField', [], {'default': '{}'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['devops']
|
|
@ -13,7 +13,17 @@
|
|||
# under the License.
|
||||
|
||||
import os
|
||||
|
||||
import django
|
||||
from django.apps import apps
|
||||
from django.core.exceptions import AppRegistryNotReady
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "devops.settings")
|
||||
try:
|
||||
if not apps.is_installed('devops'):
|
||||
django.setup()
|
||||
except AppRegistryNotReady:
|
||||
django.setup()
|
||||
|
||||
from devops.models.driver import Driver
|
||||
from devops.models.environment import Environment
|
||||
|
@ -26,3 +36,7 @@ from devops.models.network import L2NetworkDevice
|
|||
from devops.models.node import Node
|
||||
from devops.models.volume import Volume
|
||||
from devops.models.volume import DiskDevice
|
||||
|
||||
__all__ = ['Driver', 'Environment', 'Group', 'Address', 'Interface',
|
||||
'AddressPool', 'NetworkPool', 'L2NetworkDevice', 'Node',
|
||||
'Volume', 'DiskDevice']
|
||||
|
|
|
@ -41,7 +41,7 @@ class BaseModel(models.Model):
|
|||
class Meta(object):
|
||||
abstract = True
|
||||
|
||||
created = models.DateTimeField(auto_now_add=True, default=datetime.utcnow)
|
||||
created = models.DateTimeField(default=datetime.utcnow)
|
||||
|
||||
|
||||
class ParamedModelType(ModelBase):
|
||||
|
@ -266,14 +266,37 @@ class ParamMultiField(ParamFieldBase):
|
|||
class ParamedModelQuerySet(query.QuerySet):
|
||||
"""Custom QuerySet for ParamedModel"""
|
||||
|
||||
def filter(self, **kwargs):
|
||||
def __get_all_field_names(self):
|
||||
field_names = set()
|
||||
_meta = self.model._meta
|
||||
fields = _meta.get_fields()
|
||||
for field in fields:
|
||||
# For backwards compatibility GenericForeignKey should not be
|
||||
# included in the results.
|
||||
if field.is_relation and field.many_to_one and \
|
||||
field.related_model is None:
|
||||
continue
|
||||
# Relations to child proxy models should not be included.
|
||||
if field.model != _meta.model and\
|
||||
field.model._meta.concrete_model == _meta.concrete_model:
|
||||
continue
|
||||
|
||||
field_names.add(field.name)
|
||||
if hasattr(field, 'attname'):
|
||||
field_names.add(field.attname)
|
||||
return field_names
|
||||
|
||||
def filter(self, *args, **kwargs):
|
||||
super_filter = super(ParamedModelQuerySet, self).filter
|
||||
|
||||
# split kwargs which django db are not aware of
|
||||
# to separete dict
|
||||
# to separate dict
|
||||
kwargs_for_params = {}
|
||||
db_kwargs = {}
|
||||
field_names = self.model._meta.get_all_field_names()
|
||||
|
||||
# Fix deprecated code usage from django
|
||||
field_names = self.__get_all_field_names()
|
||||
|
||||
for param in kwargs.keys():
|
||||
first_subparam = param.split('__')[0]
|
||||
if first_subparam not in field_names:
|
||||
|
@ -282,7 +305,7 @@ class ParamedModelQuerySet(query.QuerySet):
|
|||
db_kwargs[param] = kwargs[param]
|
||||
|
||||
# filter using db arguments
|
||||
queryset = super_filter(**db_kwargs)
|
||||
queryset = super_filter(*args, **db_kwargs)
|
||||
|
||||
if not kwargs_for_params:
|
||||
# return db queryset if there is no params
|
||||
|
|
|
@ -71,6 +71,17 @@ class Environment(BaseModel):
|
|||
def add_groups(self, groups):
|
||||
for group_data in groups:
|
||||
driver_data = group_data['driver']
|
||||
if driver_data['name'] == 'devops.driver.libvirt.libvirt_driver':
|
||||
warn(
|
||||
"Driver 'devops.driver.libvirt.libvirt_driver' "
|
||||
"has been renamed to 'devops.driver.libvirt', "
|
||||
"please update the tests!",
|
||||
DeprecationWarning)
|
||||
logger.warn(
|
||||
"Driver 'devops.driver.libvirt.libvirt_driver' "
|
||||
"has been renamed to 'devops.driver.libvirt', "
|
||||
"please update the tests!")
|
||||
driver_data['name'] = 'devops.driver.libvirt'
|
||||
self.add_group(
|
||||
group_name=group_data['name'],
|
||||
driver_name=driver_data['name'],
|
||||
|
|
|
@ -22,7 +22,7 @@ def get_var_as_bool(name, default):
|
|||
value = os.environ.get(name, '')
|
||||
return _boolean_states.get(value.lower(), default)
|
||||
|
||||
DRIVER = 'devops.driver.libvirt.libvirt_driver'
|
||||
DRIVER = 'devops.driver.libvirt'
|
||||
DRIVER_PARAMETERS = {
|
||||
'connection_string': os.environ.get('CONNECTION_STRING', 'qemu:///system'),
|
||||
'storage_pool_name': os.environ.get('STORAGE_POOL_NAME', 'default'),
|
||||
|
@ -32,7 +32,7 @@ DRIVER_PARAMETERS = {
|
|||
'enable_acpi': get_var_as_bool('DRIVER_ENABLE_ACPI', False),
|
||||
}
|
||||
|
||||
INSTALLED_APPS = ['south', 'devops']
|
||||
INSTALLED_APPS = ['devops']
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
|
|
|
@ -79,7 +79,7 @@ template:
|
|||
groups:
|
||||
- name: rack-01
|
||||
driver:
|
||||
name: devops.driver.libvirt.libvirt_driver
|
||||
name: devops.driver.libvirt
|
||||
params:
|
||||
connection_string: !os_env CONNECTION_STRING, qemu:///system
|
||||
storage_pool_name: !os_env STORAGE_POOL_NAME, default
|
||||
|
|
|
@ -15,5 +15,4 @@
|
|||
from devops.settings import * # noqa
|
||||
|
||||
# make tests faster
|
||||
SOUTH_TESTS_MIGRATE = False
|
||||
DATABASES['default'] = {'ENGINE': 'django.db.backends.sqlite3'}
|
||||
|
|
|
@ -77,7 +77,7 @@ class TestLibvirtDriver(LibvirtTestCase):
|
|||
self.env = Environment.create('test_env')
|
||||
self.group = self.env.add_group(
|
||||
group_name='test_group',
|
||||
driver_name='devops.driver.libvirt.libvirt_driver',
|
||||
driver_name='devops.driver.libvirt',
|
||||
connection_string='test:///default')
|
||||
|
||||
self.ap = self.env.add_address_pool(
|
||||
|
|
|
@ -25,7 +25,7 @@ class TestLibvirtL2NetworkDevice(TestCase):
|
|||
self.env = Environment.create('test_env')
|
||||
self.group = self.env.add_group(
|
||||
group_name='test_group',
|
||||
driver_name='devops.driver.libvirt.libvirt_driver',
|
||||
driver_name='devops.driver.libvirt',
|
||||
connection_string='test:///default')
|
||||
|
||||
self.ap = self.env.add_address_pool(
|
||||
|
|
|
@ -33,7 +33,7 @@ class TestLibvirtNode(LibvirtTestCase):
|
|||
self.env = Environment.create('test_env')
|
||||
self.group = self.env.add_group(
|
||||
group_name='test_group',
|
||||
driver_name='devops.driver.libvirt.libvirt_driver',
|
||||
driver_name='devops.driver.libvirt',
|
||||
connection_string='test:///default',
|
||||
storage_pool_name='default-pool',
|
||||
vnc_password='123456',
|
||||
|
|
|
@ -37,7 +37,7 @@ class TestLibvirtNodeSnapshotBase(LibvirtTestCase):
|
|||
self.env = Environment.create('tenv')
|
||||
self.group = self.env.add_group(
|
||||
group_name='test_group',
|
||||
driver_name='devops.driver.libvirt.libvirt_driver',
|
||||
driver_name='devops.driver.libvirt',
|
||||
connection_string='test:///default',
|
||||
storage_pool_name='default-pool',
|
||||
vnc_password='123456',
|
||||
|
|
|
@ -82,7 +82,7 @@ template:
|
|||
groups:
|
||||
- name: rack-01
|
||||
driver:
|
||||
name: devops.driver.libvirt.libvirt_driver
|
||||
name: devops.driver.libvirt
|
||||
params:
|
||||
connection_string: test:///default
|
||||
storage_pool_name: default-pool
|
||||
|
|
|
@ -42,7 +42,7 @@ class TestLibvirtVolume(LibvirtTestCase):
|
|||
self.env = Environment.create('test_env')
|
||||
self.group = self.env.add_group(
|
||||
group_name='test_group',
|
||||
driver_name='devops.driver.libvirt.libvirt_driver',
|
||||
driver_name='devops.driver.libvirt',
|
||||
connection_string='test:///default',
|
||||
storage_pool_name='default-pool')
|
||||
|
||||
|
|
|
@ -156,7 +156,7 @@ class TestParamedModel(TestCase):
|
|||
assert o.get(name='t2', multi__sub1='abc').id == t2.id
|
||||
|
||||
def test_related_queryset(self):
|
||||
d = Driver(name='devops.driver.libvirt.libvirt_driver')
|
||||
d = Driver(name='devops.driver.libvirt')
|
||||
d.save()
|
||||
g = Group(name='test', driver=d)
|
||||
g.save()
|
||||
|
|
|
@ -110,7 +110,7 @@ class TestDefaultTemplate(TestCase):
|
|||
env_name: fuel_system_test
|
||||
groups:
|
||||
- driver:
|
||||
name: devops.driver.libvirt.libvirt_driver
|
||||
name: devops.driver.libvirt
|
||||
params:
|
||||
connection_string: qemu:///system
|
||||
enable_acpi: false
|
||||
|
@ -340,7 +340,7 @@ class TestDefaultTemplate(TestCase):
|
|||
env_name: fuel_system_test
|
||||
groups:
|
||||
- driver:
|
||||
name: devops.driver.libvirt.libvirt_driver
|
||||
name: devops.driver.libvirt
|
||||
params:
|
||||
connection_string: qemu:///system
|
||||
enable_acpi: true
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/env python
|
||||
import os
|
||||
import sys
|
||||
|
||||
if __name__ == "__main__":
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "devops.settings")
|
||||
|
||||
from django.core.management import execute_from_command_line
|
||||
|
||||
execute_from_command_line(sys.argv)
|
17
setup.py
17
setup.py
|
@ -34,20 +34,19 @@ setup(
|
|||
(os.path.expanduser('~/.devops/log'), [])],
|
||||
scripts=['bin/dos.py'],
|
||||
install_requires=[
|
||||
'netaddr',
|
||||
'paramiko',
|
||||
'django<1.7',
|
||||
'netaddr>=0.7.12,!=0.7.16',
|
||||
'paramiko>=1.16.0',
|
||||
'Django>=1.8,<1.9',
|
||||
'jsonfield',
|
||||
'psycopg2',
|
||||
'south',
|
||||
'PyYAML',
|
||||
'psycopg2>=2.5',
|
||||
'PyYAML>=3.1.0',
|
||||
'libvirt-python',
|
||||
'tabulate',
|
||||
'factory_boy>=2.4.1',
|
||||
'pytest>=2.7.1',
|
||||
'pytest-django >= 2.8.0',
|
||||
'mock>=1.0.1',
|
||||
'sphinx',
|
||||
'six',
|
||||
'mock>=1.2',
|
||||
'sphinx>=1.4',
|
||||
'six>=1.9.0',
|
||||
]
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue