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
|
# 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
|
# 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
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# 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 ParamField
|
||||||
from devops.models.base import ParamMultiField
|
from devops.models.base import ParamMultiField
|
||||||
from devops.models.driver import Driver as DriverBase
|
from devops.models.driver import Driver
|
||||||
from devops.models.network import L2NetworkDevice as L2NetworkDeviceBase
|
from devops.models.network import L2NetworkDevice
|
||||||
from devops.models.node import Node as NodeBase
|
from devops.models.node import Node
|
||||||
from devops.models.volume import Volume as VolumeBase
|
from devops.models.volume import Volume
|
||||||
|
|
||||||
|
|
||||||
class Driver(DriverBase):
|
class DummyDriver(Driver):
|
||||||
"""Example of driver implementation
|
"""Example of driver implementation
|
||||||
|
|
||||||
|
Note: This class is imported as Driver at .__init__.py
|
||||||
|
|
||||||
This class should contain parameters specified in template
|
This class should contain parameters specified in template
|
||||||
group['driver']['params']
|
group['driver']['params']
|
||||||
|
|
||||||
@ -68,9 +70,11 @@ class Driver(DriverBase):
|
|||||||
return ['192.168.0.0/24', '192.168.1.0/24']
|
return ['192.168.0.0/24', '192.168.1.0/24']
|
||||||
|
|
||||||
|
|
||||||
class L2NetworkDevice(L2NetworkDeviceBase):
|
class DummyL2NetworkDevice(L2NetworkDevice):
|
||||||
"""Example implementation of l2 network device.
|
"""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
|
L2NetworkDevice represents node/device which acts like switch or router
|
||||||
|
|
||||||
yaml example:
|
yaml example:
|
||||||
@ -120,7 +124,7 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||||||
# and network
|
# and network
|
||||||
print(self.address_pool.ip_network)
|
print(self.address_pool.ip_network)
|
||||||
|
|
||||||
super(L2NetworkDevice, self).define()
|
super(DummyL2NetworkDevice, self).define()
|
||||||
print('Do something after define')
|
print('Do something after define')
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
@ -146,13 +150,15 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||||||
Erase method is called one time when you want remove existing
|
Erase method is called one time when you want remove existing
|
||||||
l2 network device
|
l2 network device
|
||||||
"""
|
"""
|
||||||
super(L2NetworkDevice, self).erase()
|
super(DummyL2NetworkDevice, self).erase()
|
||||||
print('Do something after erase')
|
print('Do something after erase')
|
||||||
|
|
||||||
|
|
||||||
class Volume(VolumeBase):
|
class DummyVolume(Volume):
|
||||||
"""Example implementation of 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
|
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(self.driver.dummy_parameter)
|
||||||
|
|
||||||
print('Do something before define')
|
print('Do something before define')
|
||||||
super(Volume, self).define()
|
super(DummyVolume, self).define()
|
||||||
print('Do something after define')
|
print('Do something after define')
|
||||||
|
|
||||||
def erase(self):
|
def erase(self):
|
||||||
@ -182,13 +188,15 @@ class Volume(VolumeBase):
|
|||||||
volume
|
volume
|
||||||
"""
|
"""
|
||||||
print('Do something before erase')
|
print('Do something before erase')
|
||||||
super(Volume, self).erase()
|
super(DummyVolume, self).erase()
|
||||||
print('Do something after erase')
|
print('Do something after erase')
|
||||||
|
|
||||||
|
|
||||||
class Node(NodeBase):
|
class DummyNode(Node):
|
||||||
"""Example implementation of 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 is a server which will be used for deloying of openstack depending on
|
||||||
node role
|
node role
|
||||||
|
|
||||||
@ -244,7 +252,7 @@ class Node(NodeBase):
|
|||||||
print(self.interfaces)
|
print(self.interfaces)
|
||||||
|
|
||||||
print('Do something before define')
|
print('Do something before define')
|
||||||
super(Node, self).define()
|
super(DummyNode, self).define()
|
||||||
print('Do something after define')
|
print('Do something after define')
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
@ -266,5 +274,5 @@ class Node(NodeBase):
|
|||||||
node
|
node
|
||||||
"""
|
"""
|
||||||
print('Do something before erase')
|
print('Do something before erase')
|
||||||
super(Node, self).erase()
|
super(DummyNode, self).erase()
|
||||||
print('Do something after 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
|
# 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
|
# 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
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# 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 import logger
|
||||||
from devops.models.base import ParamField
|
from devops.models.base import ParamField
|
||||||
from devops.models.base import ParamMultiField
|
from devops.models.base import ParamMultiField
|
||||||
from devops.models.driver import Driver as DriverBase
|
from devops.models.driver import Driver
|
||||||
from devops.models.network import L2NetworkDevice as L2NetworkDeviceBase
|
from devops.models.network import L2NetworkDevice
|
||||||
from devops.models.node import Node as NodeBase
|
from devops.models.node import Node
|
||||||
from devops.models.volume import Volume as VolumeBase
|
from devops.models.volume import Volume
|
||||||
|
|
||||||
|
|
||||||
class _LibvirtManager(object):
|
class _LibvirtManager(object):
|
||||||
@ -143,12 +143,14 @@ class Snapshot(object):
|
|||||||
self.name, self.created)
|
self.name, self.created)
|
||||||
|
|
||||||
|
|
||||||
class Driver(DriverBase):
|
class LibvirtDriver(Driver):
|
||||||
"""libvirt driver
|
"""libvirt driver
|
||||||
|
|
||||||
:param use_host_cpu: When creating nodes, should libvirt's
|
:param use_host_cpu: When creating nodes, should libvirt's
|
||||||
CPU "host-model" mode be used to set CPU settings. If set to False,
|
CPU "host-model" mode be used to set CPU settings. If set to False,
|
||||||
default mode ("custom") will be used. (default: True)
|
default mode ("custom") will be used. (default: True)
|
||||||
|
|
||||||
|
Note: This class is imported as Driver at .__init__.py
|
||||||
"""
|
"""
|
||||||
|
|
||||||
connection_string = ParamField(default="qemu:///system")
|
connection_string = ParamField(default="qemu:///system")
|
||||||
@ -208,7 +210,7 @@ class Driver(DriverBase):
|
|||||||
return self.conn.getLibVersion()
|
return self.conn.getLibVersion()
|
||||||
|
|
||||||
|
|
||||||
class L2NetworkDevice(L2NetworkDeviceBase):
|
class LibvirtL2NetworkDevice(L2NetworkDevice):
|
||||||
"""L2 network device based on libvirt Network
|
"""L2 network device based on libvirt Network
|
||||||
|
|
||||||
Template example
|
Template example
|
||||||
@ -302,6 +304,7 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||||||
l2_net_dev: openstack_br
|
l2_net_dev: openstack_br
|
||||||
tag: 103
|
tag: 103
|
||||||
|
|
||||||
|
Note: This class is imported as L2NetworkDevice at .__init__.py
|
||||||
"""
|
"""
|
||||||
uuid = ParamField()
|
uuid = ParamField()
|
||||||
|
|
||||||
@ -415,7 +418,7 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||||||
ret.setAutostart(True)
|
ret.setAutostart(True)
|
||||||
self.uuid = ret.UUIDString()
|
self.uuid = ret.UUIDString()
|
||||||
|
|
||||||
super(L2NetworkDevice, self).define()
|
super(LibvirtL2NetworkDevice, self).define()
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
self.create()
|
self.create()
|
||||||
@ -477,7 +480,7 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||||||
# Remove network
|
# Remove network
|
||||||
if self._libvirt_network:
|
if self._libvirt_network:
|
||||||
self._libvirt_network.undefine()
|
self._libvirt_network.undefine()
|
||||||
super(L2NetworkDevice, self).remove()
|
super(LibvirtL2NetworkDevice, self).remove()
|
||||||
|
|
||||||
@retry()
|
@retry()
|
||||||
def exists(self):
|
def exists(self):
|
||||||
@ -522,7 +525,8 @@ class L2NetworkDevice(L2NetworkDeviceBase):
|
|||||||
iface.undefine()
|
iface.undefine()
|
||||||
|
|
||||||
|
|
||||||
class Volume(VolumeBase):
|
class LibvirtVolume(Volume):
|
||||||
|
"""Note: This class is imported as Volume at .__init__.py """
|
||||||
|
|
||||||
uuid = ParamField()
|
uuid = ParamField()
|
||||||
capacity = ParamField(default=None)
|
capacity = ParamField(default=None)
|
||||||
@ -567,7 +571,7 @@ class Volume(VolumeBase):
|
|||||||
)
|
)
|
||||||
libvirt_volume = pool.createXML(xml, 0)
|
libvirt_volume = pool.createXML(xml, 0)
|
||||||
self.uuid = libvirt_volume.key()
|
self.uuid = libvirt_volume.key()
|
||||||
super(Volume, self).define()
|
super(LibvirtVolume, self).define()
|
||||||
|
|
||||||
# Upload predefined image to the volume
|
# Upload predefined image to the volume
|
||||||
if self.source_image is not None:
|
if self.source_image is not None:
|
||||||
@ -578,7 +582,7 @@ class Volume(VolumeBase):
|
|||||||
if self.uuid:
|
if self.uuid:
|
||||||
if self.exists():
|
if self.exists():
|
||||||
self._libvirt_volume.delete(0)
|
self._libvirt_volume.delete(0)
|
||||||
super(Volume, self).remove()
|
super(LibvirtVolume, self).remove()
|
||||||
|
|
||||||
@retry()
|
@retry()
|
||||||
def get_capacity(self):
|
def get_capacity(self):
|
||||||
@ -666,7 +670,8 @@ class Volume(VolumeBase):
|
|||||||
return volume
|
return volume
|
||||||
|
|
||||||
|
|
||||||
class Node(NodeBase):
|
class LibvirtNode(Node):
|
||||||
|
"""Note: This class is imported as Node at .__init__.py """
|
||||||
|
|
||||||
uuid = ParamField()
|
uuid = ParamField()
|
||||||
hypervisor = ParamField(default='kvm', choices=('kvm', 'test'))
|
hypervisor = ParamField(default='kvm', choices=('kvm', 'test'))
|
||||||
@ -808,7 +813,7 @@ class Node(NodeBase):
|
|||||||
logger.info(node_xml)
|
logger.info(node_xml)
|
||||||
self.uuid = self.driver.conn.defineXML(node_xml).UUIDString()
|
self.uuid = self.driver.conn.defineXML(node_xml).UUIDString()
|
||||||
|
|
||||||
super(Node, self).define()
|
super(LibvirtNode, self).define()
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
self.create()
|
self.create()
|
||||||
@ -837,7 +842,7 @@ class Node(NodeBase):
|
|||||||
if self._libvirt_node:
|
if self._libvirt_node:
|
||||||
self._libvirt_node.undefineFlags(
|
self._libvirt_node.undefineFlags(
|
||||||
libvirt.VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA)
|
libvirt.VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA)
|
||||||
super(Node, self).remove()
|
super(LibvirtNode, self).remove()
|
||||||
|
|
||||||
@retry()
|
@retry()
|
||||||
def suspend(self, *args, **kwargs):
|
def suspend(self, *args, **kwargs):
|
||||||
|
@ -521,7 +521,7 @@ def create_devops_config(boot_from,
|
|||||||
{
|
{
|
||||||
'driver': {
|
'driver': {
|
||||||
'name':
|
'name':
|
||||||
'devops.driver.libvirt.libvirt_driver',
|
'devops.driver.libvirt',
|
||||||
'params': {
|
'params': {
|
||||||
'connection_string': 'qemu:///system',
|
'connection_string': 'qemu:///system',
|
||||||
'storage_pool_name': 'default',
|
'storage_pool_name': 'default',
|
||||||
|
@ -1,348 +1,233 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.9.5 on 2016-04-13 09:19
|
||||||
# flake8: noqa
|
# flake8: noqa
|
||||||
|
# pylint: disable=line-too-long
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
from south.db import db
|
from django.db import migrations, models
|
||||||
from south.v2 import SchemaMigration
|
import django.db.models.deletion
|
||||||
from django.db import models
|
import jsonfield.fields
|
||||||
|
|
||||||
|
|
||||||
class Migration(SchemaMigration):
|
class Migration(migrations.Migration):
|
||||||
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'])
|
|
||||||
|
|
||||||
# Adding model 'Network'
|
initial = True
|
||||||
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'])
|
|
||||||
|
|
||||||
# Adding unique constraint on 'Network', fields ['name', 'environment']
|
dependencies = [
|
||||||
db.create_unique(u'devops_network', ['name', 'environment_id'])
|
]
|
||||||
|
|
||||||
# Adding model 'Node'
|
operations = [
|
||||||
db.create_table(u'devops_node', (
|
migrations.CreateModel(
|
||||||
(u'id',
|
name='Address',
|
||||||
self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
fields=[
|
||||||
('name',
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
('ip_address', models.GenericIPAddressField()),
|
||||||
('uuid',
|
],
|
||||||
self.gf('django.db.models.fields.CharField')(max_length=255)),
|
options={
|
||||||
('environment',
|
'db_table': 'devops_address',
|
||||||
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'},
|
migrations.CreateModel(
|
||||||
'bus': (
|
name='AddressPool',
|
||||||
'django.db.models.fields.CharField', [],
|
fields=[
|
||||||
{'max_length': '255'}),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
'device': (
|
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||||
'django.db.models.fields.CharField', [],
|
('params', jsonfield.fields.JSONField(default={})),
|
||||||
{'max_length': '255'}),
|
('name', models.CharField(max_length=255)),
|
||||||
u'id': (
|
('net', models.CharField(max_length=255, unique=True)),
|
||||||
'django.db.models.fields.AutoField', [],
|
],
|
||||||
{'primary_key': 'True'}),
|
options={
|
||||||
'node': ('django.db.models.fields.related.ForeignKey', [],
|
'db_table': 'devops_address_pool',
|
||||||
{'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'},
|
migrations.CreateModel(
|
||||||
u'id': (
|
name='DiskDevice',
|
||||||
'django.db.models.fields.AutoField', [],
|
fields=[
|
||||||
{'primary_key': 'True'}),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
'name': ('django.db.models.fields.CharField', [],
|
('device', models.CharField(choices=[(b'disk', b'disk'), (b'cdrom', b'cdrom')], max_length=255)),
|
||||||
{'unique': 'True', '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',
|
||||||
},
|
},
|
||||||
u'devops.interface': {
|
),
|
||||||
'Meta': {'object_name': 'Interface'},
|
migrations.CreateModel(
|
||||||
u'id': (
|
name='Driver',
|
||||||
'django.db.models.fields.AutoField', [],
|
fields=[
|
||||||
{'primary_key': 'True'}),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
'mac_address': ('django.db.models.fields.CharField', [],
|
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||||
{'unique': 'True', 'max_length': '255'}),
|
('params', jsonfield.fields.JSONField(default={})),
|
||||||
'model': (
|
('name', models.CharField(max_length=512)),
|
||||||
'django.db.models.fields.CharField', [],
|
],
|
||||||
{'max_length': '255'}),
|
options={
|
||||||
'network': ('django.db.models.fields.related.ForeignKey', [],
|
'db_table': 'devops_driver',
|
||||||
{'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'),)",
|
migrations.CreateModel(
|
||||||
'object_name': 'Network'},
|
name='Environment',
|
||||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
fields=[
|
||||||
{'to': u"orm['devops.Environment']",
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
'null': 'True'}),
|
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||||
'forward': ('django.db.models.fields.CharField', [],
|
('name', models.CharField(max_length=255, unique=True)),
|
||||||
{'max_length': '255', 'null': 'True'}),
|
],
|
||||||
'has_dhcp_server': (
|
options={
|
||||||
'django.db.models.fields.BooleanField', [],
|
'db_table': 'devops_environment',
|
||||||
{'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'),)",
|
migrations.CreateModel(
|
||||||
'object_name': 'Node'},
|
name='Interface',
|
||||||
'architecture': (
|
fields=[
|
||||||
'django.db.models.fields.CharField', [],
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
{'max_length': '255'}),
|
('label', models.CharField(max_length=255, null=True)),
|
||||||
'boot': ('django.db.models.fields.CharField', [],
|
('mac_address', models.CharField(max_length=255, unique=True)),
|
||||||
{'default': "'[]'", 'max_length': '255'}),
|
('type', models.CharField(max_length=255)),
|
||||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
('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)),
|
||||||
{'to': u"orm['devops.Environment']",
|
],
|
||||||
'null': 'True'}),
|
options={
|
||||||
'has_vnc': (
|
'db_table': 'devops_interface',
|
||||||
'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'),)",
|
migrations.CreateModel(
|
||||||
'object_name': 'Volume'},
|
name='L2NetworkDevice',
|
||||||
'backing_store': ('django.db.models.fields.related.ForeignKey', [],
|
fields=[
|
||||||
{'to': u"orm['devops.Volume']", 'null': 'True'}),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
'capacity': ('django.db.models.fields.BigIntegerField', [], {}),
|
('created', models.DateTimeField(default=datetime.datetime.utcnow)),
|
||||||
'environment': ('django.db.models.fields.related.ForeignKey', [],
|
('params', jsonfield.fields.JSONField(default={})),
|
||||||
{'to': u"orm['devops.Environment']",
|
('name', models.CharField(max_length=255)),
|
||||||
'null': 'True'}),
|
('address_pool', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='devops.AddressPool')),
|
||||||
'format': (
|
],
|
||||||
'django.db.models.fields.CharField', [],
|
options={
|
||||||
{'max_length': '255'}),
|
'db_table': 'devops_l2_network_device',
|
||||||
u'id': (
|
},
|
||||||
'django.db.models.fields.AutoField', [],
|
),
|
||||||
{'primary_key': 'True'}),
|
migrations.CreateModel(
|
||||||
'name': (
|
name='NetworkConfig',
|
||||||
'django.db.models.fields.CharField', [],
|
fields=[
|
||||||
{'max_length': '255'}),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
'uuid': (
|
('label', models.CharField(max_length=255)),
|
||||||
'django.db.models.fields.CharField', [], {'max_length': '255'})
|
('networks', jsonfield.fields.JSONField(default=[])),
|
||||||
}
|
('aggregation', models.CharField(max_length=255, null=True)),
|
||||||
}
|
('parents', jsonfield.fields.JSONField(default=[])),
|
||||||
|
],
|
||||||
complete_apps = ['devops']
|
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.
|
# under the License.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
import django
|
||||||
|
from django.apps import apps
|
||||||
|
from django.core.exceptions import AppRegistryNotReady
|
||||||
|
|
||||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "devops.settings")
|
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.driver import Driver
|
||||||
from devops.models.environment import Environment
|
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.node import Node
|
||||||
from devops.models.volume import Volume
|
from devops.models.volume import Volume
|
||||||
from devops.models.volume import DiskDevice
|
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):
|
class Meta(object):
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
created = models.DateTimeField(auto_now_add=True, default=datetime.utcnow)
|
created = models.DateTimeField(default=datetime.utcnow)
|
||||||
|
|
||||||
|
|
||||||
class ParamedModelType(ModelBase):
|
class ParamedModelType(ModelBase):
|
||||||
@ -266,14 +266,37 @@ class ParamMultiField(ParamFieldBase):
|
|||||||
class ParamedModelQuerySet(query.QuerySet):
|
class ParamedModelQuerySet(query.QuerySet):
|
||||||
"""Custom QuerySet for ParamedModel"""
|
"""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
|
super_filter = super(ParamedModelQuerySet, self).filter
|
||||||
|
|
||||||
# split kwargs which django db are not aware of
|
# split kwargs which django db are not aware of
|
||||||
# to separete dict
|
# to separate dict
|
||||||
kwargs_for_params = {}
|
kwargs_for_params = {}
|
||||||
db_kwargs = {}
|
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():
|
for param in kwargs.keys():
|
||||||
first_subparam = param.split('__')[0]
|
first_subparam = param.split('__')[0]
|
||||||
if first_subparam not in field_names:
|
if first_subparam not in field_names:
|
||||||
@ -282,7 +305,7 @@ class ParamedModelQuerySet(query.QuerySet):
|
|||||||
db_kwargs[param] = kwargs[param]
|
db_kwargs[param] = kwargs[param]
|
||||||
|
|
||||||
# filter using db arguments
|
# filter using db arguments
|
||||||
queryset = super_filter(**db_kwargs)
|
queryset = super_filter(*args, **db_kwargs)
|
||||||
|
|
||||||
if not kwargs_for_params:
|
if not kwargs_for_params:
|
||||||
# return db queryset if there is no params
|
# return db queryset if there is no params
|
||||||
|
@ -71,6 +71,17 @@ class Environment(BaseModel):
|
|||||||
def add_groups(self, groups):
|
def add_groups(self, groups):
|
||||||
for group_data in groups:
|
for group_data in groups:
|
||||||
driver_data = group_data['driver']
|
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(
|
self.add_group(
|
||||||
group_name=group_data['name'],
|
group_name=group_data['name'],
|
||||||
driver_name=driver_data['name'],
|
driver_name=driver_data['name'],
|
||||||
|
@ -22,7 +22,7 @@ def get_var_as_bool(name, default):
|
|||||||
value = os.environ.get(name, '')
|
value = os.environ.get(name, '')
|
||||||
return _boolean_states.get(value.lower(), default)
|
return _boolean_states.get(value.lower(), default)
|
||||||
|
|
||||||
DRIVER = 'devops.driver.libvirt.libvirt_driver'
|
DRIVER = 'devops.driver.libvirt'
|
||||||
DRIVER_PARAMETERS = {
|
DRIVER_PARAMETERS = {
|
||||||
'connection_string': os.environ.get('CONNECTION_STRING', 'qemu:///system'),
|
'connection_string': os.environ.get('CONNECTION_STRING', 'qemu:///system'),
|
||||||
'storage_pool_name': os.environ.get('STORAGE_POOL_NAME', 'default'),
|
'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),
|
'enable_acpi': get_var_as_bool('DRIVER_ENABLE_ACPI', False),
|
||||||
}
|
}
|
||||||
|
|
||||||
INSTALLED_APPS = ['south', 'devops']
|
INSTALLED_APPS = ['devops']
|
||||||
|
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
|
@ -79,7 +79,7 @@ template:
|
|||||||
groups:
|
groups:
|
||||||
- name: rack-01
|
- name: rack-01
|
||||||
driver:
|
driver:
|
||||||
name: devops.driver.libvirt.libvirt_driver
|
name: devops.driver.libvirt
|
||||||
params:
|
params:
|
||||||
connection_string: !os_env CONNECTION_STRING, qemu:///system
|
connection_string: !os_env CONNECTION_STRING, qemu:///system
|
||||||
storage_pool_name: !os_env STORAGE_POOL_NAME, default
|
storage_pool_name: !os_env STORAGE_POOL_NAME, default
|
||||||
|
@ -15,5 +15,4 @@
|
|||||||
from devops.settings import * # noqa
|
from devops.settings import * # noqa
|
||||||
|
|
||||||
# make tests faster
|
# make tests faster
|
||||||
SOUTH_TESTS_MIGRATE = False
|
|
||||||
DATABASES['default'] = {'ENGINE': 'django.db.backends.sqlite3'}
|
DATABASES['default'] = {'ENGINE': 'django.db.backends.sqlite3'}
|
||||||
|
@ -77,7 +77,7 @@ class TestLibvirtDriver(LibvirtTestCase):
|
|||||||
self.env = Environment.create('test_env')
|
self.env = Environment.create('test_env')
|
||||||
self.group = self.env.add_group(
|
self.group = self.env.add_group(
|
||||||
group_name='test_group',
|
group_name='test_group',
|
||||||
driver_name='devops.driver.libvirt.libvirt_driver',
|
driver_name='devops.driver.libvirt',
|
||||||
connection_string='test:///default')
|
connection_string='test:///default')
|
||||||
|
|
||||||
self.ap = self.env.add_address_pool(
|
self.ap = self.env.add_address_pool(
|
||||||
|
@ -25,7 +25,7 @@ class TestLibvirtL2NetworkDevice(TestCase):
|
|||||||
self.env = Environment.create('test_env')
|
self.env = Environment.create('test_env')
|
||||||
self.group = self.env.add_group(
|
self.group = self.env.add_group(
|
||||||
group_name='test_group',
|
group_name='test_group',
|
||||||
driver_name='devops.driver.libvirt.libvirt_driver',
|
driver_name='devops.driver.libvirt',
|
||||||
connection_string='test:///default')
|
connection_string='test:///default')
|
||||||
|
|
||||||
self.ap = self.env.add_address_pool(
|
self.ap = self.env.add_address_pool(
|
||||||
|
@ -33,7 +33,7 @@ class TestLibvirtNode(LibvirtTestCase):
|
|||||||
self.env = Environment.create('test_env')
|
self.env = Environment.create('test_env')
|
||||||
self.group = self.env.add_group(
|
self.group = self.env.add_group(
|
||||||
group_name='test_group',
|
group_name='test_group',
|
||||||
driver_name='devops.driver.libvirt.libvirt_driver',
|
driver_name='devops.driver.libvirt',
|
||||||
connection_string='test:///default',
|
connection_string='test:///default',
|
||||||
storage_pool_name='default-pool',
|
storage_pool_name='default-pool',
|
||||||
vnc_password='123456',
|
vnc_password='123456',
|
||||||
|
@ -37,7 +37,7 @@ class TestLibvirtNodeSnapshotBase(LibvirtTestCase):
|
|||||||
self.env = Environment.create('tenv')
|
self.env = Environment.create('tenv')
|
||||||
self.group = self.env.add_group(
|
self.group = self.env.add_group(
|
||||||
group_name='test_group',
|
group_name='test_group',
|
||||||
driver_name='devops.driver.libvirt.libvirt_driver',
|
driver_name='devops.driver.libvirt',
|
||||||
connection_string='test:///default',
|
connection_string='test:///default',
|
||||||
storage_pool_name='default-pool',
|
storage_pool_name='default-pool',
|
||||||
vnc_password='123456',
|
vnc_password='123456',
|
||||||
|
@ -82,7 +82,7 @@ template:
|
|||||||
groups:
|
groups:
|
||||||
- name: rack-01
|
- name: rack-01
|
||||||
driver:
|
driver:
|
||||||
name: devops.driver.libvirt.libvirt_driver
|
name: devops.driver.libvirt
|
||||||
params:
|
params:
|
||||||
connection_string: test:///default
|
connection_string: test:///default
|
||||||
storage_pool_name: default-pool
|
storage_pool_name: default-pool
|
||||||
|
@ -42,7 +42,7 @@ class TestLibvirtVolume(LibvirtTestCase):
|
|||||||
self.env = Environment.create('test_env')
|
self.env = Environment.create('test_env')
|
||||||
self.group = self.env.add_group(
|
self.group = self.env.add_group(
|
||||||
group_name='test_group',
|
group_name='test_group',
|
||||||
driver_name='devops.driver.libvirt.libvirt_driver',
|
driver_name='devops.driver.libvirt',
|
||||||
connection_string='test:///default',
|
connection_string='test:///default',
|
||||||
storage_pool_name='default-pool')
|
storage_pool_name='default-pool')
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ class TestParamedModel(TestCase):
|
|||||||
assert o.get(name='t2', multi__sub1='abc').id == t2.id
|
assert o.get(name='t2', multi__sub1='abc').id == t2.id
|
||||||
|
|
||||||
def test_related_queryset(self):
|
def test_related_queryset(self):
|
||||||
d = Driver(name='devops.driver.libvirt.libvirt_driver')
|
d = Driver(name='devops.driver.libvirt')
|
||||||
d.save()
|
d.save()
|
||||||
g = Group(name='test', driver=d)
|
g = Group(name='test', driver=d)
|
||||||
g.save()
|
g.save()
|
||||||
|
@ -110,7 +110,7 @@ class TestDefaultTemplate(TestCase):
|
|||||||
env_name: fuel_system_test
|
env_name: fuel_system_test
|
||||||
groups:
|
groups:
|
||||||
- driver:
|
- driver:
|
||||||
name: devops.driver.libvirt.libvirt_driver
|
name: devops.driver.libvirt
|
||||||
params:
|
params:
|
||||||
connection_string: qemu:///system
|
connection_string: qemu:///system
|
||||||
enable_acpi: false
|
enable_acpi: false
|
||||||
@ -340,7 +340,7 @@ class TestDefaultTemplate(TestCase):
|
|||||||
env_name: fuel_system_test
|
env_name: fuel_system_test
|
||||||
groups:
|
groups:
|
||||||
- driver:
|
- driver:
|
||||||
name: devops.driver.libvirt.libvirt_driver
|
name: devops.driver.libvirt
|
||||||
params:
|
params:
|
||||||
connection_string: qemu:///system
|
connection_string: qemu:///system
|
||||||
enable_acpi: true
|
enable_acpi: true
|
||||||
|
10
manage.py
Executable file
10
manage.py
Executable file
@ -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'), [])],
|
(os.path.expanduser('~/.devops/log'), [])],
|
||||||
scripts=['bin/dos.py'],
|
scripts=['bin/dos.py'],
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'netaddr',
|
'netaddr>=0.7.12,!=0.7.16',
|
||||||
'paramiko',
|
'paramiko>=1.16.0',
|
||||||
'django<1.7',
|
'Django>=1.8,<1.9',
|
||||||
'jsonfield',
|
'jsonfield',
|
||||||
'psycopg2',
|
'psycopg2>=2.5',
|
||||||
'south',
|
'PyYAML>=3.1.0',
|
||||||
'PyYAML',
|
|
||||||
'libvirt-python',
|
'libvirt-python',
|
||||||
'tabulate',
|
'tabulate',
|
||||||
'factory_boy>=2.4.1',
|
'factory_boy>=2.4.1',
|
||||||
'pytest>=2.7.1',
|
'pytest>=2.7.1',
|
||||||
'pytest-django >= 2.8.0',
|
'pytest-django >= 2.8.0',
|
||||||
'mock>=1.0.1',
|
'mock>=1.2',
|
||||||
'sphinx',
|
'sphinx>=1.4',
|
||||||
'six',
|
'six>=1.9.0',
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user