Drop the ipv4 and ipv6 columns from servers. It's never been used and makes little sense.

Change-Id: I9f22a77d5adcf0fb18a081aa1a73253925ed150d
This commit is contained in:
Kiall Mac Innes 2013-02-21 21:47:30 +00:00
parent e0c227ec3f
commit c085766c2e
9 changed files with 57 additions and 157 deletions

View File

@ -211,16 +211,12 @@ Get Servers Hosting a Domain
{ {
"id": "384a9b20-239c-11e2-81c1-0800200c9a66", "id": "384a9b20-239c-11e2-81c1-0800200c9a66",
"name": "ns1.provider.com.", "name": "ns1.provider.com.",
"ipv4": "192.0.2.1",
"ipv6": "2001:db8::1",
"created_at": "2011-01-21T11:33:21Z", "created_at": "2011-01-21T11:33:21Z",
"updated_at": null "updated_at": null
}, },
{ {
"id": "cf661142-e577-40b5-b3eb-75795cdc0cd7", "id": "cf661142-e577-40b5-b3eb-75795cdc0cd7",
"name": "ns2.provider.com.", "name": "ns2.provider.com.",
"ipv4": "192.0.2.2",
"ipv6": "2001:db8::2",
"created_at": "2011-01-21T11:33:21Z", "created_at": "2011-01-21T11:33:21Z",
"updated_at": "2011-01-21T11:33:21Z" "updated_at": "2011-01-21T11:33:21Z"
} }
@ -228,8 +224,6 @@ Get Servers Hosting a Domain
:form id: UUID server_id :form id: UUID server_id
:form name: Server hostname :form name: Server hostname
:form ipv4: Server IPv4 address
:form ipv6: Server IPv6 address
:form created_at: timestamp :form created_at: timestamp
:form updated_at: timestamp :form updated_at: timestamp
:statuscode 200: Success :statuscode 200: Success

View File

@ -25,9 +25,7 @@ Create Server
Content-Type: application/json Content-Type: application/json
{ {
"name": "ns1.example.org.", "name": "ns1.example.org."
"ipv4": "192.0.2.1",
"ipv6": "2001:db8::1"
} }
**Example response**: **Example response**:
@ -40,16 +38,12 @@ Create Server
{ {
"id": "384a9b20-239c-11e2-81c1-0800200c9a66", "id": "384a9b20-239c-11e2-81c1-0800200c9a66",
"name": "ns1.example.org.", "name": "ns1.example.org."
"ipv4": "192.0.2.1",
"ipv6": "2001:db8::1",
"created_at": "2011-01-21T11:33:21Z", "created_at": "2011-01-21T11:33:21Z",
"updated_at": null "updated_at": null
} }
:form name: Server hostname :form name: Server hostname
:form ipv4: Server IPv4 address
:form ipv6: Server IPv6 address
:statuscode 200: Success :statuscode 200: Success
:statuscode 401: Access Denied :statuscode 401: Access Denied
:statuscode 409: Conflict :statuscode 409: Conflict
@ -80,8 +74,6 @@ Get Server
{ {
"id": "384a9b20-239c-11e2-81c1-0800200c9a66", "id": "384a9b20-239c-11e2-81c1-0800200c9a66",
"name": "ns1.example.org.", "name": "ns1.example.org.",
"ipv4": "192.0.2.1",
"ipv6": "2001:db8::1",
"created_at": "2011-01-21T11:33:21Z", "created_at": "2011-01-21T11:33:21Z",
"updated_at": null "updated_at": null
} }
@ -89,8 +81,6 @@ Get Server
:param server_id: The server's unique id :param server_id: The server's unique id
:type server_id: uuid :type server_id: uuid
:form name: Server hostname :form name: Server hostname
:form ipv4: Server IPv4 address
:form ipv6: Server IPv6 address
:form created_at: timestamp :form created_at: timestamp
:form updated_at: timestamp :form updated_at: timestamp
:statuscode 200: Success :statuscode 200: Success
@ -114,8 +104,7 @@ Update Server
Content-Type: application/json Content-Type: application/json
{ {
"name": "ns1.example.org.", "name": "ns1.example.org."
"ipv4": "1.2.3.5"
} }
**Example response**: **Example response**:
@ -128,15 +117,13 @@ Update Server
{ {
"id": "879c1100-9c92-4244-bc83-9535ee6534d0"t "id": "879c1100-9c92-4244-bc83-9535ee6534d0"t
"name": "ns1.example.org.", "name": "ns1.example.org."
"ipv4": "1.2.3.5",
"created_at": "2012-11-02T02:55:44.000000", "created_at": "2012-11-02T02:55:44.000000",
"updated_at": "2012-11-02T02:58:41.993556" "updated_at": "2012-11-02T02:58:41.993556"
} }
:form id: UUID server_id :form id: UUID server_id
:form name: Server hostname :form name: Server hostname
:form ipv4: Server IPv4 address
:form created_at: timestamp :form created_at: timestamp
:form updated_at: timestamp :form updated_at: timestamp
:statuscode 200: Success :statuscode 200: Success
@ -170,17 +157,13 @@ List Servers
[ [
{ {
"id": "384a9b20-239c-11e2-81c1-0800200c9a66", "id": "384a9b20-239c-11e2-81c1-0800200c9a66",
"name": "ns1.example.org.", "name": "ns1.example.org."
"ipv4": "192.0.2.1",
"ipv6": "2001:db8::1",
"created_at": "2011-01-21T11:33:21Z", "created_at": "2011-01-21T11:33:21Z",
"updated_at": null "updated_at": null
}, },
{ {
"id": "cf661142-e577-40b5-b3eb-75795cdc0cd7", "id": "cf661142-e577-40b5-b3eb-75795cdc0cd7",
"name": "ns2.example.org.", "name": "ns2.example.org."
"ipv4": "192.0.2.2",
"ipv6": "2001:db8::2",
"created_at": "2011-01-21T11:33:21Z", "created_at": "2011-01-21T11:33:21Z",
"updated_at": "2011-01-21T11:33:21Z" "updated_at": "2011-01-21T11:33:21Z"
} }
@ -188,8 +171,6 @@ List Servers
:form id: UUID server_id :form id: UUID server_id
:form name: Server hostname :form name: Server hostname
:form ipv4: Server IPv4 address
:form ipv6: Server IPv6 address
:form created_at: timestamp :form created_at: timestamp
:form updated_at: timestamp :form updated_at: timestamp
:statuscode 200: Success :statuscode 200: Success

View File

@ -48,16 +48,12 @@ class CreateServerCommand(base.CreateCommand):
parser = super(CreateServerCommand, self).get_parser(prog_name) parser = super(CreateServerCommand, self).get_parser(prog_name)
parser.add_argument('--name', help="Server Name", required=True) parser.add_argument('--name', help="Server Name", required=True)
parser.add_argument('--ipv4', help="Server IPv4 Address")
parser.add_argument('--ipv6', help="Server IPv6 Address")
return parser return parser
def execute(self, parsed_args): def execute(self, parsed_args):
server = dict( server = dict(
name=parsed_args.name, name=parsed_args.name,
ipv4=parsed_args.ipv4,
ipv6=parsed_args.ipv6,
) )
return central_api.create_server(self.context, server) return central_api.create_server(self.context, server)
@ -72,14 +68,6 @@ class UpdateServerCommand(base.UpdateCommand):
parser.add_argument('id', help="Server ID") parser.add_argument('id', help="Server ID")
parser.add_argument('--name', help="Server Name") parser.add_argument('--name', help="Server Name")
ipv4_group = parser.add_mutually_exclusive_group()
ipv4_group.add_argument('--ipv4', help="Server IPv4 Address")
ipv4_group.add_argument('--no-ipv4', action='store_true')
ipv6_group = parser.add_mutually_exclusive_group()
ipv6_group.add_argument('--ipv6', help="Server IPv6 Address")
ipv6_group.add_argument('--no-ipv6', action='store_true')
return parser return parser
def execute(self, parsed_args): def execute(self, parsed_args):
@ -88,16 +76,6 @@ class UpdateServerCommand(base.UpdateCommand):
if parsed_args.name: if parsed_args.name:
server['name'] = parsed_args.name server['name'] = parsed_args.name
if parsed_args.no_ipv4:
server['ipv4'] = None
elif parsed_args.ipv4:
server['ipv4'] = parsed_args.ipv4
if parsed_args.no_ipv6:
server['ipv6'] = None
elif parsed_args.ipv6:
server['ipv6'] = parsed_args.ipv6
return central_api.update_server(self.context, parsed_args.id, server) return central_api.update_server(self.context, parsed_args.id, server)

View File

@ -20,16 +20,6 @@
"maxLength": 255, "maxLength": 255,
"required": true "required": true
}, },
"ipv4": {
"type": ["string", "null"],
"description": "IPv4 address of server",
"format": "ip-address"
},
"ipv6": {
"type": ["string", "null"],
"description": "IPv6 address of server",
"format": "ipv6"
},
"created_at": { "created_at": {
"type": "string", "type": "string",
"description": "Date and time of server creation", "description": "Date and time of server creation",
@ -43,23 +33,6 @@
"readonly": true "readonly": true
} }
}, },
"anyOf": [{
"description": "IPv4",
"properties": {
"ipv4": {
"type": "string",
"required": true
}
}
}, {
"description": "IPv6",
"properties": {
"ipv6": {
"type": "string",
"required": true
}
}
}],
"links": [{ "links": [{
"rel": "self", "rel": "self",
"href": "/servers/{id}" "href": "/servers/{id}"

View File

@ -0,0 +1,43 @@
# Copyright 2012 Managed I.T.
#
# Author: Kiall Mac Innes <kiall@managedit.ie>
#
# 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 sqlalchemy import MetaData, Table, Column
from moniker.sqlalchemy.types import Inet
meta = MetaData()
def upgrade(migrate_engine):
meta.bind = migrate_engine
servers_table = Table('servers', meta, autoload=True)
ipv4 = Column('ipv4', Inet(), nullable=False, unique=True)
ipv6 = Column('ipv6', Inet(), default=None, unique=True)
ipv4.create(servers_table, populate_default=True)
ipv6.create(servers_table, populate_default=True)
def downgrade(migrate_engine):
meta.bind = migrate_engine
servers_table = Table('servers', meta, autoload=True)
ipv4 = Column('ipv4', Inet(), nullable=False, unique=True)
ipv6 = Column('ipv6', Inet(), default=None, unique=True)
ipv4.drop(servers_table)
ipv6.drop(servers_table)

View File

@ -22,7 +22,7 @@ from sqlalchemy.ext.hybrid import hybrid_property
from moniker.openstack.common import log as logging from moniker.openstack.common import log as logging
from moniker.openstack.common import timeutils from moniker.openstack.common import timeutils
from moniker.openstack.common.uuidutils import generate_uuid from moniker.openstack.common.uuidutils import generate_uuid
from moniker.sqlalchemy.types import UUID, Inet from moniker.sqlalchemy.types import UUID
from moniker.sqlalchemy.models import Base as CommonBase from moniker.sqlalchemy.models import Base as CommonBase
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
@ -51,8 +51,6 @@ class Server(Base):
__tablename__ = 'servers' __tablename__ = 'servers'
name = Column(String(255), nullable=False, unique=True) name = Column(String(255), nullable=False, unique=True)
ipv4 = Column(Inet, nullable=False, unique=True)
ipv6 = Column(Inet, default=None, nullable=True, unique=True)
class Domain(Base): class Domain(Base):

View File

@ -78,16 +78,10 @@ class AssertMixin(object):
class TestCase(unittest2.TestCase, AssertMixin): class TestCase(unittest2.TestCase, AssertMixin):
server_fixtures = [{ server_fixtures = [{
'name': 'ns1.example.org.', 'name': 'ns1.example.org.',
'ipv4': '192.0.2.1',
'ipv6': '2001:db8::1',
}, { }, {
'name': 'ns2.example.org.', 'name': 'ns2.example.org.',
'ipv4': '192.0.2.2',
'ipv6': '2001:db8::2',
}, { }, {
'name': 'ns2.example.org.', 'name': 'ns2.example.org.',
'ipv4': '192.0.2.2',
'ipv6': '2001:db8::2',
}] }]
tsigkey_fixtures = [{ tsigkey_fixtures = [{

View File

@ -84,9 +84,7 @@ class CentralServiceTest(CentralTestCase):
context = self.get_admin_context() context = self.get_admin_context()
values = dict( values = dict(
name='ns1.example.org.', name='ns1.example.org.'
ipv4='192.0.2.1',
ipv6='2001:db8::1',
) )
# Create a server # Create a server
@ -95,8 +93,6 @@ class CentralServiceTest(CentralTestCase):
# Ensure all values have been set correctly # Ensure all values have been set correctly
self.assertIsNotNone(server['id']) self.assertIsNotNone(server['id'])
self.assertEqual(server['name'], values['name']) self.assertEqual(server['name'], values['name'])
self.assertEqual(server['ipv4'], values['ipv4'])
self.assertEqual(server['ipv6'], values['ipv6'])
def test_get_servers(self): def test_get_servers(self):
context = self.get_admin_context() context = self.get_admin_context()
@ -114,8 +110,7 @@ class CentralServiceTest(CentralTestCase):
self.assertEqual(servers[0]['name'], 'ns1.example.org.') self.assertEqual(servers[0]['name'], 'ns1.example.org.')
# Create a second server # Create a second server
self.create_server(name='ns2.example.org.', ipv4='192.0.2.2', self.create_server(name='ns2.example.org.')
ipv6='2001:db8::2')
# Ensure we can retrieve both servers # Ensure we can retrieve both servers
servers = self.central_service.get_servers(context) servers = self.central_service.get_servers(context)
@ -135,8 +130,6 @@ class CentralServiceTest(CentralTestCase):
expected_server['id']) expected_server['id'])
self.assertEqual(server['id'], expected_server['id']) self.assertEqual(server['id'], expected_server['id'])
self.assertEqual(server['name'], expected_server['name']) self.assertEqual(server['name'], expected_server['name'])
self.assertEqual(server['ipv4'], expected_server['ipv4'])
self.assertEqual(server['ipv6'], expected_server['ipv6'])
def test_update_server(self): def test_update_server(self):
context = self.get_admin_context() context = self.get_admin_context()
@ -145,7 +138,7 @@ class CentralServiceTest(CentralTestCase):
expected_server = self.create_server() expected_server = self.create_server()
# Update the server # Update the server
values = dict(ipv4='127.0.0.1') values = dict(name='prefix.%s' % expected_server['name'])
self.central_service.update_server(context, expected_server['id'], self.central_service.update_server(context, expected_server['id'],
values=values) values=values)
@ -154,7 +147,7 @@ class CentralServiceTest(CentralTestCase):
expected_server['id']) expected_server['id'])
# Ensure the server was updated correctly # Ensure the server was updated correctly
self.assertEqual(server['ipv4'], '127.0.0.1') self.assertEqual(server['name'], 'prefix.%s' % expected_server['name'])
def test_delete_server(self): def test_delete_server(self):
context = self.get_admin_context() context = self.get_admin_context()

View File

@ -67,9 +67,7 @@ class StorageDriverTestCase(StorageTestCase):
# Server Tests # Server Tests
def test_create_server(self): def test_create_server(self):
values = { values = {
'name': 'ns1.example.org.', 'name': 'ns1.example.org.'
'ipv4': '192.0.2.1',
'ipv6': '2001:db8::1',
} }
result = self.storage_conn.create_server( result = self.storage_conn.create_server(
@ -80,57 +78,13 @@ class StorageDriverTestCase(StorageTestCase):
self.assertIsNone(result['updated_at']) self.assertIsNone(result['updated_at'])
self.assertEqual(result['name'], values['name']) self.assertEqual(result['name'], values['name'])
self.assertEqual(result['ipv4'], values['ipv4'])
self.assertEqual(result['ipv6'], values['ipv6'])
def test_create_server_ipv4_only(self):
values = [{
'name': 'ns1.example.org.',
'ipv4': '192.0.2.1',
'ipv6': None,
}, {
'name': 'ns2.example.org.',
'ipv4': '192.0.2.2'
}]
for value in values:
result = self.storage_conn.create_server(
self.admin_context, values=value)
self.assertIsNotNone(result['id'])
self.assertIsNotNone(result['created_at'])
self.assertIsNone(result['updated_at'])
self.assertEqual(result['name'], value['name'])
self.assertEqual(result['ipv4'], value['ipv4'])
self.assertIsNone(result['ipv6'])
def test_create_server_duplicate(self): def test_create_server_duplicate(self):
# Create the Initial Server # Create the Initial Server
self.create_server() self.create_server()
values = [{
# No Changes/Identical
}, {
'ipv4': '127.0.0.1',
}, {
'ipv4': '127.0.0.1',
'ipv6': '::1',
}, {
'ipv6': '::1',
}, {
'name': 'localhost.',
}, {
'name': 'localhost.',
'ipv4': '127.0.0.1',
}, {
'name': 'localhost.',
'ipv6': '::1',
}]
for value in values:
with self.assertRaises(exceptions.DuplicateServer): with self.assertRaises(exceptions.DuplicateServer):
self.create_server(values=value) self.create_server()
def test_get_servers(self): def test_get_servers(self):
actual = self.storage_conn.get_servers(self.admin_context) actual = self.storage_conn.get_servers(self.admin_context)
@ -143,8 +97,6 @@ class StorageDriverTestCase(StorageTestCase):
self.assertEqual(len(actual), 1) self.assertEqual(len(actual), 1)
self.assertEqual(str(actual[0]['name']), str(server_one['name'])) self.assertEqual(str(actual[0]['name']), str(server_one['name']))
self.assertEqual(str(actual[0]['ipv4']), str(server_one['ipv4']))
self.assertEqual(str(actual[0]['ipv6']), str(server_one['ipv6']))
# Create a second server # Create a second server
_, server_two = self.create_server(fixture=1) _, server_two = self.create_server(fixture=1)
@ -153,8 +105,6 @@ class StorageDriverTestCase(StorageTestCase):
self.assertEqual(len(actual), 2) self.assertEqual(len(actual), 2)
self.assertEqual(str(actual[1]['name']), str(server_two['name'])) self.assertEqual(str(actual[1]['name']), str(server_two['name']))
self.assertEqual(str(actual[1]['ipv4']), str(server_two['ipv4']))
self.assertEqual(str(actual[1]['ipv6']), str(server_two['ipv6']))
def test_get_servers_criterion(self): def test_get_servers_criterion(self):
_, server_one = self.create_server(0) _, server_one = self.create_server(0)
@ -189,8 +139,6 @@ class StorageDriverTestCase(StorageTestCase):
expected['id']) expected['id'])
self.assertEqual(str(actual['name']), str(expected['name'])) self.assertEqual(str(actual['name']), str(expected['name']))
self.assertEqual(str(actual['ipv4']), str(expected['ipv4']))
self.assertEqual(str(actual['ipv6']), str(expected['ipv6']))
def test_get_server_missing(self): def test_get_server_missing(self):
with self.assertRaises(exceptions.ServerNotFound): with self.assertRaises(exceptions.ServerNotFound):
@ -205,8 +153,6 @@ class StorageDriverTestCase(StorageTestCase):
self.admin_context, server['id'], fixture) self.admin_context, server['id'], fixture)
self.assertEqual(str(updated['name']), str(fixture['name'])) self.assertEqual(str(updated['name']), str(fixture['name']))
self.assertEqual(str(updated['ipv4']), str(fixture['ipv4']))
self.assertEqual(str(updated['ipv6']), str(fixture['ipv6']))
def test_update_server_duplicate(self): def test_update_server_duplicate(self):
# Create two servers # Create two servers