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",
"name": "ns1.provider.com.",
"ipv4": "192.0.2.1",
"ipv6": "2001:db8::1",
"created_at": "2011-01-21T11:33:21Z",
"updated_at": null
},
{
"id": "cf661142-e577-40b5-b3eb-75795cdc0cd7",
"name": "ns2.provider.com.",
"ipv4": "192.0.2.2",
"ipv6": "2001:db8::2",
"created_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 name: Server hostname
:form ipv4: Server IPv4 address
:form ipv6: Server IPv6 address
:form created_at: timestamp
:form updated_at: timestamp
:statuscode 200: Success

View File

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

View File

@ -48,16 +48,12 @@ class CreateServerCommand(base.CreateCommand):
parser = super(CreateServerCommand, self).get_parser(prog_name)
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
def execute(self, parsed_args):
server = dict(
name=parsed_args.name,
ipv4=parsed_args.ipv4,
ipv6=parsed_args.ipv6,
)
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('--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
def execute(self, parsed_args):
@ -88,16 +76,6 @@ class UpdateServerCommand(base.UpdateCommand):
if 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)

View File

@ -20,16 +20,6 @@
"maxLength": 255,
"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": {
"type": "string",
"description": "Date and time of server creation",
@ -43,23 +33,6 @@
"readonly": true
}
},
"anyOf": [{
"description": "IPv4",
"properties": {
"ipv4": {
"type": "string",
"required": true
}
}
}, {
"description": "IPv6",
"properties": {
"ipv6": {
"type": "string",
"required": true
}
}
}],
"links": [{
"rel": "self",
"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 timeutils
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 sqlalchemy.ext.declarative import declarative_base
@ -51,8 +51,6 @@ class Server(Base):
__tablename__ = 'servers'
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):

View File

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

View File

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

View File

@ -67,9 +67,7 @@ class StorageDriverTestCase(StorageTestCase):
# Server Tests
def test_create_server(self):
values = {
'name': 'ns1.example.org.',
'ipv4': '192.0.2.1',
'ipv6': '2001:db8::1',
'name': 'ns1.example.org.'
}
result = self.storage_conn.create_server(
@ -80,57 +78,13 @@ class StorageDriverTestCase(StorageTestCase):
self.assertIsNone(result['updated_at'])
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):
# Create the Initial 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):
self.create_server(values=value)
with self.assertRaises(exceptions.DuplicateServer):
self.create_server()
def test_get_servers(self):
actual = self.storage_conn.get_servers(self.admin_context)
@ -143,8 +97,6 @@ class StorageDriverTestCase(StorageTestCase):
self.assertEqual(len(actual), 1)
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
_, server_two = self.create_server(fixture=1)
@ -153,8 +105,6 @@ class StorageDriverTestCase(StorageTestCase):
self.assertEqual(len(actual), 2)
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):
_, server_one = self.create_server(0)
@ -189,8 +139,6 @@ class StorageDriverTestCase(StorageTestCase):
expected['id'])
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):
with self.assertRaises(exceptions.ServerNotFound):
@ -205,8 +153,6 @@ class StorageDriverTestCase(StorageTestCase):
self.admin_context, server['id'], fixture)
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):
# Create two servers