Update license info
Change-Id: I2d5a681510f4a6ff169791822a05cc7a8bd66d50 Signed-off-by: Zhijiang Hu <hu.zhijiang@zte.com.cn>
This commit is contained in:
parent
0e51693c9f
commit
f7c345afda
@ -1,5 +1,4 @@
|
||||
# Copyright 2010 United States Government as represented by the
|
||||
# Administrator of the National Aeronautics and Space Administration.
|
||||
# Copyright 2010-2011 OpenStack Foundation
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
|
@ -11,344 +11,344 @@
|
||||
# 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 daisy import test
|
||||
from daisy.api import common
|
||||
from webob import exc
|
||||
from daisy.tests import fakes
|
||||
import mock
|
||||
|
||||
|
||||
class TestApiCommon(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestApiCommon, self).setUp()
|
||||
self.req = fakes.HTTPRequest.blank('/')
|
||||
|
||||
def test_valid_cluster_networks(self):
|
||||
nets = [{'id': '123',
|
||||
'cidr': None,
|
||||
'vlan_id': None,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': None,
|
||||
'vlan_id': None,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
common.valid_cluster_networks(nets)
|
||||
|
||||
nets = [{'id': '123',
|
||||
'cidr': '192.167.1.1/24',
|
||||
'vlan_id': None,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.167.1.1',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': None,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
common.valid_cluster_networks(nets)
|
||||
|
||||
nets = [{'id': '123',
|
||||
'cidr': '192.167.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.167.1.1',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_cluster_networks, nets)
|
||||
|
||||
nets = [{'id': '123',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 22,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_cluster_networks, nets)
|
||||
|
||||
nets = [{'id': '123',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.2',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_cluster_networks, nets)
|
||||
|
||||
nets = [{'id': '123',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [{'start': '192.168.1.10',
|
||||
'end': '192.168.1.100'}],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [{'start': '192.168.1.10',
|
||||
'end': '192.168.1.120'}],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_cluster_networks, nets)
|
||||
|
||||
def test_check_gateway_uniqueness(self):
|
||||
nets = [{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '1',
|
||||
'network_type': 'PUBLICAPI',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'publicapi',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.168.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'PUBLICAPI'},
|
||||
{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '2',
|
||||
'network_type': 'MANAGEMENT',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'management',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.168.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'MANAGEMENT'}]
|
||||
self.assertEqual(None, common.check_gateway_uniqueness(nets))
|
||||
|
||||
nets = [{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '1',
|
||||
'network_type': 'PUBLICAPI',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'publicapi',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.168.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'PUBLICAPI'},
|
||||
{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '2',
|
||||
'network_type': 'DATAPLANE',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'phy1',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.167.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'physnet1'}]
|
||||
self.assertEqual(None, common.check_gateway_uniqueness(nets))
|
||||
|
||||
def test_check_gateway_uniqueness_error(self):
|
||||
nets = [{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '1',
|
||||
'network_type': 'PUBLICAPI',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'publicapi',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.168.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'PUBLICAPI'},
|
||||
{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '2',
|
||||
'network_type': 'MANAGEMENT',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'management',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.168.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'MANAGEMENT'},
|
||||
{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '3',
|
||||
'network_type': 'STORAGE',
|
||||
'cidr': '99.99.1.1/24',
|
||||
'custom_name': 'storage',
|
||||
'vlan_id': None,
|
||||
'gateway': '99.99.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'STORAGE'}]
|
||||
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.check_gateway_uniqueness, nets)
|
||||
|
||||
@mock.patch('daisy.api.common.valid_ip_ranges')
|
||||
def test_valid_ip_ranges_with_cidr(self, fake_valid_ip_ranges):
|
||||
ip_ranges = [
|
||||
{
|
||||
'start': '12.18.1.5',
|
||||
'cidr': '12.18.1.1/24',
|
||||
'end': '12.18.1.5',
|
||||
'gateway': '12.18.1.2'
|
||||
},
|
||||
{
|
||||
'start': '112.18.1.15',
|
||||
'cidr': '112.18.1.1/24',
|
||||
'end': '112.18.1.15',
|
||||
'gateway': '112.18.1.5'
|
||||
},
|
||||
]
|
||||
cidr = '12.10.1.2/24'
|
||||
common.valid_ip_ranges_with_cidr(ip_ranges, cidr)
|
||||
|
||||
def test_valid_ip_ranges_with_cidr_invalid_startip(self):
|
||||
ip_ranges = [
|
||||
{
|
||||
'start': '13.18.1.5',
|
||||
'cidr': '12.18.1.1/24',
|
||||
'end': '12.18.1.5',
|
||||
'gateway': '12.18.1.2'
|
||||
},
|
||||
{
|
||||
'start': '112.18.1.15',
|
||||
'cidr': '112.18.1.1/24',
|
||||
'end': '112.18.1.15',
|
||||
'gateway': '112.18.1.5'
|
||||
},
|
||||
]
|
||||
cidr = '12.10.1.2/24'
|
||||
self.assertRaises(exc.HTTPForbidden,
|
||||
common.valid_ip_ranges_with_cidr,
|
||||
ip_ranges,
|
||||
cidr)
|
||||
|
||||
def test_valid_ip_ranges_with_cidr_invalid_endip(self):
|
||||
ip_ranges = [
|
||||
{
|
||||
'start': '12.18.1.5',
|
||||
'cidr': '12.18.1.1/24',
|
||||
'end': '13.18.1.5',
|
||||
'gateway': '12.18.1.2'
|
||||
},
|
||||
{
|
||||
'start': '112.18.1.15',
|
||||
'cidr': '112.18.1.1/24',
|
||||
'end': '112.18.1.15',
|
||||
'gateway': '112.18.1.5'
|
||||
},
|
||||
]
|
||||
cidr = '12.10.1.2/24'
|
||||
self.assertRaises(exc.HTTPForbidden,
|
||||
common.valid_ip_ranges_with_cidr,
|
||||
ip_ranges,
|
||||
cidr)
|
||||
|
||||
def test_valid_ip_ranges_with_cidr_invalid_gateway(self):
|
||||
ip_ranges = [
|
||||
{
|
||||
'start': '12.18.1.5',
|
||||
'cidr': '12.18.1.1/24',
|
||||
'end': '12.18.1.9',
|
||||
'gateway': '12.18.1.5'
|
||||
},
|
||||
{
|
||||
'start': '112.18.1.15',
|
||||
'cidr': '112.18.1.1/24',
|
||||
'end': '112.18.1.15',
|
||||
'gateway': '112.18.1.5'
|
||||
},
|
||||
]
|
||||
cidr = '12.10.1.2/24'
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_ip_ranges_with_cidr,
|
||||
ip_ranges,
|
||||
cidr)
|
||||
|
||||
def test_valid_ip_ranges_with_cidr_cidr_overlapped(self):
|
||||
ip_ranges = [
|
||||
{
|
||||
'start': '12.18.1.5',
|
||||
'cidr': '12.18.1.1/24',
|
||||
'end': '12.18.1.5',
|
||||
'gateway': '12.18.1.2'
|
||||
},
|
||||
{
|
||||
'start': '112.18.1.15',
|
||||
'cidr': '112.18.1.1/24',
|
||||
'end': '112.18.1.15',
|
||||
'gateway': '112.18.1.5'
|
||||
},
|
||||
]
|
||||
cidr = '12.18.1.1/26'
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_ip_ranges_with_cidr,
|
||||
ip_ranges,
|
||||
cidr)
|
||||
|
||||
def test_valid_network_range(self):
|
||||
range = [1, 4094]
|
||||
network_meta = {}
|
||||
vlan_start = 'vlan_start'
|
||||
vlan_end = 'vlan_end'
|
||||
value_start = 1
|
||||
value_end = 4095
|
||||
network_meta[vlan_start] = value_start
|
||||
try:
|
||||
common.valid_network_range(self.req, network_meta)
|
||||
except exc.HTTPBadRequest as e:
|
||||
msg = "%s and %s must be appeared "\
|
||||
"at the same time" % (vlan_start, vlan_end)
|
||||
self.assertEqual(e.explanation, msg)
|
||||
|
||||
network_meta[vlan_end] = value_end
|
||||
try:
|
||||
common.valid_network_range(self.req, network_meta)
|
||||
except exc.HTTPBadRequest as e:
|
||||
msg = "%s:%d and %s:%d must be in %d~%d and " \
|
||||
"start:%d less than end:%d"\
|
||||
% (vlan_start, value_start, vlan_end, value_end,
|
||||
range[0], range[1], value_start, value_end)
|
||||
self.assertEqual(e.explanation, msg)
|
||||
|
||||
network_meta[vlan_end] = value_end-1
|
||||
result = common.valid_network_range(self.req, network_meta)
|
||||
self.assertEqual(result, None)
|
||||
|
||||
svlan_start = 'svlan_start'
|
||||
svlan_end = 'svlan_end'
|
||||
network_meta[svlan_start] = value_start
|
||||
try:
|
||||
common.valid_network_range(self.req, network_meta)
|
||||
except exc.HTTPBadRequest as e:
|
||||
msg = "%s and %s must be appeared "\
|
||||
"at the same time" % (svlan_start, svlan_end)
|
||||
self.assertEqual(e.explanation, msg)
|
||||
|
||||
network_meta[svlan_end] = value_end
|
||||
try:
|
||||
common.valid_network_range(self.req, network_meta)
|
||||
except exc.HTTPBadRequest as e:
|
||||
msg = "%s:%d and %s:%d must be in %d~%d " \
|
||||
"and start:%d less than end:%d"\
|
||||
% (svlan_start, value_start, svlan_end,
|
||||
value_end, range[0], range[1], value_start, value_end)
|
||||
self.assertEqual(e.explanation, msg)
|
||||
|
||||
network_meta[svlan_end] = value_end-1
|
||||
result = common.valid_network_range(self.req, network_meta)
|
||||
self.assertEqual(result, None)
|
||||
# under the License.
|
||||
|
||||
from daisy import test
|
||||
from daisy.api import common
|
||||
from webob import exc
|
||||
from daisy.tests import fakes
|
||||
import mock
|
||||
|
||||
|
||||
class TestApiCommon(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestApiCommon, self).setUp()
|
||||
self.req = fakes.HTTPRequest.blank('/')
|
||||
|
||||
def test_valid_cluster_networks(self):
|
||||
nets = [{'id': '123',
|
||||
'cidr': None,
|
||||
'vlan_id': None,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': None,
|
||||
'vlan_id': None,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
common.valid_cluster_networks(nets)
|
||||
|
||||
nets = [{'id': '123',
|
||||
'cidr': '192.167.1.1/24',
|
||||
'vlan_id': None,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.167.1.1',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': None,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
common.valid_cluster_networks(nets)
|
||||
|
||||
nets = [{'id': '123',
|
||||
'cidr': '192.167.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.167.1.1',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_cluster_networks, nets)
|
||||
|
||||
nets = [{'id': '123',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 22,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_cluster_networks, nets)
|
||||
|
||||
nets = [{'id': '123',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.2',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_cluster_networks, nets)
|
||||
|
||||
nets = [{'id': '123',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [{'start': '192.168.1.10',
|
||||
'end': '192.168.1.100'}],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'},
|
||||
{'id': '456',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'vlan_id': 2,
|
||||
'ip_ranges': [{'start': '192.168.1.10',
|
||||
'end': '192.168.1.120'}],
|
||||
'gateway': '192.168.1.1',
|
||||
'name': 'PUBLICAPI'}]
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_cluster_networks, nets)
|
||||
|
||||
def test_check_gateway_uniqueness(self):
|
||||
nets = [{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '1',
|
||||
'network_type': 'PUBLICAPI',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'publicapi',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.168.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'PUBLICAPI'},
|
||||
{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '2',
|
||||
'network_type': 'MANAGEMENT',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'management',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.168.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'MANAGEMENT'}]
|
||||
self.assertEqual(None, common.check_gateway_uniqueness(nets))
|
||||
|
||||
nets = [{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '1',
|
||||
'network_type': 'PUBLICAPI',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'publicapi',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.168.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'PUBLICAPI'},
|
||||
{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '2',
|
||||
'network_type': 'DATAPLANE',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'phy1',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.167.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'physnet1'}]
|
||||
self.assertEqual(None, common.check_gateway_uniqueness(nets))
|
||||
|
||||
def test_check_gateway_uniqueness_error(self):
|
||||
nets = [{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '1',
|
||||
'network_type': 'PUBLICAPI',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'publicapi',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.168.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'PUBLICAPI'},
|
||||
{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '2',
|
||||
'network_type': 'MANAGEMENT',
|
||||
'cidr': '192.168.1.1/24',
|
||||
'custom_name': 'management',
|
||||
'vlan_id': None,
|
||||
'gateway': '192.168.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'MANAGEMENT'},
|
||||
{'deleted': False,
|
||||
'cluster_id': '1',
|
||||
'id': '3',
|
||||
'network_type': 'STORAGE',
|
||||
'cidr': '99.99.1.1/24',
|
||||
'custom_name': 'storage',
|
||||
'vlan_id': None,
|
||||
'gateway': '99.99.1.1',
|
||||
'ip_ranges': [],
|
||||
'name': 'STORAGE'}]
|
||||
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.check_gateway_uniqueness, nets)
|
||||
|
||||
@mock.patch('daisy.api.common.valid_ip_ranges')
|
||||
def test_valid_ip_ranges_with_cidr(self, fake_valid_ip_ranges):
|
||||
ip_ranges = [
|
||||
{
|
||||
'start': '12.18.1.5',
|
||||
'cidr': '12.18.1.1/24',
|
||||
'end': '12.18.1.5',
|
||||
'gateway': '12.18.1.2'
|
||||
},
|
||||
{
|
||||
'start': '112.18.1.15',
|
||||
'cidr': '112.18.1.1/24',
|
||||
'end': '112.18.1.15',
|
||||
'gateway': '112.18.1.5'
|
||||
},
|
||||
]
|
||||
cidr = '12.10.1.2/24'
|
||||
common.valid_ip_ranges_with_cidr(ip_ranges, cidr)
|
||||
|
||||
def test_valid_ip_ranges_with_cidr_invalid_startip(self):
|
||||
ip_ranges = [
|
||||
{
|
||||
'start': '13.18.1.5',
|
||||
'cidr': '12.18.1.1/24',
|
||||
'end': '12.18.1.5',
|
||||
'gateway': '12.18.1.2'
|
||||
},
|
||||
{
|
||||
'start': '112.18.1.15',
|
||||
'cidr': '112.18.1.1/24',
|
||||
'end': '112.18.1.15',
|
||||
'gateway': '112.18.1.5'
|
||||
},
|
||||
]
|
||||
cidr = '12.10.1.2/24'
|
||||
self.assertRaises(exc.HTTPForbidden,
|
||||
common.valid_ip_ranges_with_cidr,
|
||||
ip_ranges,
|
||||
cidr)
|
||||
|
||||
def test_valid_ip_ranges_with_cidr_invalid_endip(self):
|
||||
ip_ranges = [
|
||||
{
|
||||
'start': '12.18.1.5',
|
||||
'cidr': '12.18.1.1/24',
|
||||
'end': '13.18.1.5',
|
||||
'gateway': '12.18.1.2'
|
||||
},
|
||||
{
|
||||
'start': '112.18.1.15',
|
||||
'cidr': '112.18.1.1/24',
|
||||
'end': '112.18.1.15',
|
||||
'gateway': '112.18.1.5'
|
||||
},
|
||||
]
|
||||
cidr = '12.10.1.2/24'
|
||||
self.assertRaises(exc.HTTPForbidden,
|
||||
common.valid_ip_ranges_with_cidr,
|
||||
ip_ranges,
|
||||
cidr)
|
||||
|
||||
def test_valid_ip_ranges_with_cidr_invalid_gateway(self):
|
||||
ip_ranges = [
|
||||
{
|
||||
'start': '12.18.1.5',
|
||||
'cidr': '12.18.1.1/24',
|
||||
'end': '12.18.1.9',
|
||||
'gateway': '12.18.1.5'
|
||||
},
|
||||
{
|
||||
'start': '112.18.1.15',
|
||||
'cidr': '112.18.1.1/24',
|
||||
'end': '112.18.1.15',
|
||||
'gateway': '112.18.1.5'
|
||||
},
|
||||
]
|
||||
cidr = '12.10.1.2/24'
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_ip_ranges_with_cidr,
|
||||
ip_ranges,
|
||||
cidr)
|
||||
|
||||
def test_valid_ip_ranges_with_cidr_cidr_overlapped(self):
|
||||
ip_ranges = [
|
||||
{
|
||||
'start': '12.18.1.5',
|
||||
'cidr': '12.18.1.1/24',
|
||||
'end': '12.18.1.5',
|
||||
'gateway': '12.18.1.2'
|
||||
},
|
||||
{
|
||||
'start': '112.18.1.15',
|
||||
'cidr': '112.18.1.1/24',
|
||||
'end': '112.18.1.15',
|
||||
'gateway': '112.18.1.5'
|
||||
},
|
||||
]
|
||||
cidr = '12.18.1.1/26'
|
||||
self.assertRaises(exc.HTTPBadRequest,
|
||||
common.valid_ip_ranges_with_cidr,
|
||||
ip_ranges,
|
||||
cidr)
|
||||
|
||||
def test_valid_network_range(self):
|
||||
range = [1, 4094]
|
||||
network_meta = {}
|
||||
vlan_start = 'vlan_start'
|
||||
vlan_end = 'vlan_end'
|
||||
value_start = 1
|
||||
value_end = 4095
|
||||
network_meta[vlan_start] = value_start
|
||||
try:
|
||||
common.valid_network_range(self.req, network_meta)
|
||||
except exc.HTTPBadRequest as e:
|
||||
msg = "%s and %s must be appeared "\
|
||||
"at the same time" % (vlan_start, vlan_end)
|
||||
self.assertEqual(e.explanation, msg)
|
||||
|
||||
network_meta[vlan_end] = value_end
|
||||
try:
|
||||
common.valid_network_range(self.req, network_meta)
|
||||
except exc.HTTPBadRequest as e:
|
||||
msg = "%s:%d and %s:%d must be in %d~%d and " \
|
||||
"start:%d less than end:%d"\
|
||||
% (vlan_start, value_start, vlan_end, value_end,
|
||||
range[0], range[1], value_start, value_end)
|
||||
self.assertEqual(e.explanation, msg)
|
||||
|
||||
network_meta[vlan_end] = value_end-1
|
||||
result = common.valid_network_range(self.req, network_meta)
|
||||
self.assertEqual(result, None)
|
||||
|
||||
svlan_start = 'svlan_start'
|
||||
svlan_end = 'svlan_end'
|
||||
network_meta[svlan_start] = value_start
|
||||
try:
|
||||
common.valid_network_range(self.req, network_meta)
|
||||
except exc.HTTPBadRequest as e:
|
||||
msg = "%s and %s must be appeared "\
|
||||
"at the same time" % (svlan_start, svlan_end)
|
||||
self.assertEqual(e.explanation, msg)
|
||||
|
||||
network_meta[svlan_end] = value_end
|
||||
try:
|
||||
common.valid_network_range(self.req, network_meta)
|
||||
except exc.HTTPBadRequest as e:
|
||||
msg = "%s:%d and %s:%d must be in %d~%d " \
|
||||
"and start:%d less than end:%d"\
|
||||
% (svlan_start, value_start, svlan_end,
|
||||
value_end, range[0], range[1], value_start, value_end)
|
||||
self.assertEqual(e.explanation, msg)
|
||||
|
||||
network_meta[svlan_end] = value_end-1
|
||||
result = common.valid_network_range(self.req, network_meta)
|
||||
self.assertEqual(result, None)
|
||||
|
@ -11,59 +11,59 @@
|
||||
# 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.
|
||||
|
||||
import mock
|
||||
import webob
|
||||
import subprocess
|
||||
from daisy import test
|
||||
from daisy.context import RequestContext
|
||||
from daisy.api.v1 import backup_restore
|
||||
|
||||
|
||||
class TestBackupRestore(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestBackupRestore, self).setUp()
|
||||
self.controller = backup_restore.Controller()
|
||||
self.req = webob.Request.blank('/')
|
||||
self.req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
|
||||
@mock.patch('subprocess.check_output')
|
||||
@mock.patch("daisy.api.v1.backup_restore.Controller.check_file_format")
|
||||
def test_restore(self, mock_do_check_file_format,
|
||||
mock_do_check_output):
|
||||
def mock_check_output(*args, **kwargs):
|
||||
pass
|
||||
|
||||
def mock_check_file_format(*args, **kwargs):
|
||||
return True
|
||||
|
||||
file_meta = {
|
||||
"backup_file_path": "/home/test.tar.gz"}
|
||||
mock_do_check_output.side_effect = mock_check_output
|
||||
mock_do_check_file_format.side_effect = mock_check_file_format
|
||||
result = self.controller.restore(self.req, file_meta)
|
||||
self.assertEqual(None, result)
|
||||
|
||||
@mock.patch('subprocess.check_output')
|
||||
@mock.patch("daisy.api.v1.backup_restore.Controller.check_file_format")
|
||||
def test_restore_call_process_error(self, mock_do_check_file_format,
|
||||
mock_do_check_output):
|
||||
|
||||
def mock_check_output(*args, **kwargs):
|
||||
e = subprocess.CalledProcessError(0, 'test')
|
||||
e.output = 'test error'
|
||||
raise e
|
||||
|
||||
def mock_check_file_format(*args, **kwargs):
|
||||
return True
|
||||
|
||||
file_meta = {
|
||||
"backup_file_path": "/home/test.tar.gz"}
|
||||
mock_do_check_output.side_effect = mock_check_output
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.restore,
|
||||
self.req, file_meta)
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import webob
|
||||
import subprocess
|
||||
from daisy import test
|
||||
from daisy.context import RequestContext
|
||||
from daisy.api.v1 import backup_restore
|
||||
|
||||
|
||||
class TestBackupRestore(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestBackupRestore, self).setUp()
|
||||
self.controller = backup_restore.Controller()
|
||||
self.req = webob.Request.blank('/')
|
||||
self.req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
|
||||
@mock.patch('subprocess.check_output')
|
||||
@mock.patch("daisy.api.v1.backup_restore.Controller.check_file_format")
|
||||
def test_restore(self, mock_do_check_file_format,
|
||||
mock_do_check_output):
|
||||
def mock_check_output(*args, **kwargs):
|
||||
pass
|
||||
|
||||
def mock_check_file_format(*args, **kwargs):
|
||||
return True
|
||||
|
||||
file_meta = {
|
||||
"backup_file_path": "/home/test.tar.gz"}
|
||||
mock_do_check_output.side_effect = mock_check_output
|
||||
mock_do_check_file_format.side_effect = mock_check_file_format
|
||||
result = self.controller.restore(self.req, file_meta)
|
||||
self.assertEqual(None, result)
|
||||
|
||||
@mock.patch('subprocess.check_output')
|
||||
@mock.patch("daisy.api.v1.backup_restore.Controller.check_file_format")
|
||||
def test_restore_call_process_error(self, mock_do_check_file_format,
|
||||
mock_do_check_output):
|
||||
|
||||
def mock_check_output(*args, **kwargs):
|
||||
e = subprocess.CalledProcessError(0, 'test')
|
||||
e.output = 'test error'
|
||||
raise e
|
||||
|
||||
def mock_check_file_format(*args, **kwargs):
|
||||
return True
|
||||
|
||||
file_meta = {
|
||||
"backup_file_path": "/home/test.tar.gz"}
|
||||
mock_do_check_output.side_effect = mock_check_output
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.restore,
|
||||
self.req, file_meta)
|
||||
|
@ -11,244 +11,244 @@
|
||||
# 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.
|
||||
|
||||
import mock
|
||||
import webob
|
||||
from daisy import test
|
||||
from daisy.context import RequestContext
|
||||
from daisy.api.v1 import deploy_server
|
||||
|
||||
|
||||
class MockStdout():
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def readline(self):
|
||||
return ''
|
||||
|
||||
|
||||
class MockPopen():
|
||||
|
||||
def __init__(self, returncode):
|
||||
self.returncode = returncode
|
||||
self.stdout = MockStdout()
|
||||
|
||||
def wait(self):
|
||||
pass
|
||||
|
||||
def poll(self):
|
||||
return True
|
||||
|
||||
|
||||
class DeployServerFuncs(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(DeployServerFuncs, self).setUp()
|
||||
self.controller = deploy_server.Controller()
|
||||
self.req = webob.Request.blank('/')
|
||||
self.req.context = RequestContext(is_admin=True, user='fake user',
|
||||
tenant='fake tenant')
|
||||
|
||||
@mock.patch("commands.getstatusoutput")
|
||||
def test_get_nics(self, mock_do_getstatusoutput):
|
||||
def mock_getstatusoutput(*args, **kwargs):
|
||||
return (0, 'docker0: eth0: eth1: ')
|
||||
|
||||
mock_do_getstatusoutput.side_effect = mock_getstatusoutput
|
||||
nics = self.controller.get_nics()
|
||||
self.assertEqual(set(['docker0', 'eth1', 'eth0']), nics)
|
||||
|
||||
@mock.patch("commands.getstatusoutput")
|
||||
def test_get_nics_with_lo(self, mock_do_getstatusoutput):
|
||||
def mock_getstatusoutput(*args, **kwargs):
|
||||
return (0, 'docker0: eth0: eth1: lo: ')
|
||||
|
||||
mock_do_getstatusoutput.side_effect = mock_getstatusoutput
|
||||
nics = self.controller.get_nics()
|
||||
self.assertEqual(set(['docker0', 'eth1', 'eth0']), nics)
|
||||
|
||||
@mock.patch("commands.getstatusoutput")
|
||||
def test_get_pxe_nic(self, mock_do_getstatusoutput):
|
||||
def mock_getstatusoutput(*args, **kwargs):
|
||||
return (0, 'bond0:100')
|
||||
|
||||
mock_do_getstatusoutput.side_effect = mock_getstatusoutput
|
||||
pxe_nic = self.controller.get_pxe_nic("99.99.1.5")
|
||||
self.assertEqual("bond0", pxe_nic)
|
||||
|
||||
@mock.patch("commands.getstatusoutput")
|
||||
def test_get_pxe_nic_with_error(self, mock_do_getstatusoutput):
|
||||
def mock_getstatusoutput(*args, **kwargs):
|
||||
return (1, 'bond0:100')
|
||||
|
||||
mock_do_getstatusoutput.side_effect = mock_getstatusoutput
|
||||
pxe_nic = self.controller.get_pxe_nic("99.99.1.5")
|
||||
self.assertEqual(None, pxe_nic)
|
||||
|
||||
@mock.patch("daisy.registry.client.v1.api.get_all_networks")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_nics")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_pxe_nic")
|
||||
def test_list_deploy_server(self, mock_do_get_pxe_nic,
|
||||
mock_do_get_nics,
|
||||
mock_do_get_all_networks):
|
||||
|
||||
def mock_get_all_networks(*args, **kwargs):
|
||||
return [{"ip": "99.99.1.5"}]
|
||||
|
||||
def mock_get_nics(*args, **kwargs):
|
||||
return set(['docker0', 'eth1', 'eth0'])
|
||||
|
||||
def mock_get_pxe_nic(*args, **kwargs):
|
||||
return "bond0"
|
||||
|
||||
mock_do_get_all_networks.side_effect = mock_get_all_networks
|
||||
mock_do_get_nics.side_effect = mock_get_nics
|
||||
mock_do_get_pxe_nic.side_effect = mock_get_pxe_nic
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
actual = {'deploy_servers': [
|
||||
{
|
||||
'ip': '99.99.1.5',
|
||||
'nics': set(['docker0', 'eth0', 'eth1']),
|
||||
'pxe_nic': 'bond0'
|
||||
}]}
|
||||
deploy_servers = self.controller.list_deploy_server(req)
|
||||
self.assertEqual(actual, deploy_servers)
|
||||
|
||||
@mock.patch("daisy.registry.client.v1.api.get_all_networks")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_nics")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_pxe_nic")
|
||||
def test_list_more_deploy_server(self, mock_do_get_pxe_nic,
|
||||
mock_do_get_nics,
|
||||
mock_do_get_all_networks):
|
||||
|
||||
def mock_get_all_networks(*args, **kwargs):
|
||||
return [{"ip": "99.99.1.5"}, {"ip": "99.99.1.5"}]
|
||||
|
||||
def mock_get_nics(*args, **kwargs):
|
||||
return set(['docker0', 'eth1', 'eth0'])
|
||||
|
||||
def mock_get_pxe_nic(*args, **kwargs):
|
||||
return "bond0"
|
||||
|
||||
mock_do_get_all_networks.side_effect = mock_get_all_networks
|
||||
mock_do_get_nics.side_effect = mock_get_nics
|
||||
mock_do_get_pxe_nic.side_effect = mock_get_pxe_nic
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.list_deploy_server,
|
||||
req)
|
||||
|
||||
@mock.patch("daisy.registry.client.v1.api.get_all_networks")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_nics")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_pxe_nic")
|
||||
def test_list_more_deploy_server_with_error(
|
||||
self, mock_do_get_pxe_nic, mock_do_get_nics,
|
||||
mock_do_get_all_networks):
|
||||
|
||||
def mock_get_all_networks(*args, **kwargs):
|
||||
raise webob.exc.HTTPBadRequest(
|
||||
explanation="Get system net plane failed.",
|
||||
request=self.req)
|
||||
|
||||
def mock_get_nics(*args, **kwargs):
|
||||
return set(['docker0', 'eth1', 'eth0'])
|
||||
|
||||
def mock_get_pxe_nic(*args, **kwargs):
|
||||
return "bond0"
|
||||
|
||||
mock_do_get_all_networks.side_effect = mock_get_all_networks
|
||||
mock_do_get_nics.side_effect = mock_get_nics
|
||||
mock_do_get_pxe_nic.side_effect = mock_get_pxe_nic
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.list_deploy_server,
|
||||
req)
|
||||
|
||||
@mock.patch("subprocess.Popen")
|
||||
def test_pxe_env_check(self, mock_do_popen):
|
||||
|
||||
def mock_popen(*args, **kwargs):
|
||||
_popen = MockPopen(0)
|
||||
return _popen
|
||||
|
||||
mock_do_popen.side_effect = mock_popen
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
deploy_server_meta = {
|
||||
"deployment_interface": "bond0",
|
||||
"server_ip": "99.99.1.5"}
|
||||
actual = {'deploy_server_meta': {'return_code': 0}}
|
||||
|
||||
result = self.controller.pxe_env_check(req, deploy_server_meta)
|
||||
self.assertEqual(actual, result)
|
||||
|
||||
@mock.patch("subprocess.Popen")
|
||||
def test_pxe_env_check_with_error_popen(self, mock_do_popen):
|
||||
|
||||
def mock_popen(*args, **kwargs):
|
||||
_popen = MockPopen(1)
|
||||
return _popen
|
||||
|
||||
mock_do_popen.side_effect = mock_popen
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
deploy_server_meta = {
|
||||
"deployment_interface": "bond0",
|
||||
"server_ip": "99.99.1.5"}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.pxe_env_check,
|
||||
req, deploy_server_meta)
|
||||
|
||||
@mock.patch("subprocess.Popen")
|
||||
def test_pxe_env_check_call_process_error(self, mock_do_popen):
|
||||
|
||||
def mock_popen(*args, **kwargs):
|
||||
e = subprocess.CalledProcessError(0, 'test')
|
||||
e.output = 'test error'
|
||||
raise e
|
||||
|
||||
mock_do_popen.side_effect = mock_popen
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
deploy_server_meta = {
|
||||
"deployment_interface": "bond0",
|
||||
"server_ip": "99.99.1.5"}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.pxe_env_check,
|
||||
req, deploy_server_meta)
|
||||
|
||||
@mock.patch("subprocess.Popen")
|
||||
def test_pxe_env_check_error(self, mock_do_popen):
|
||||
|
||||
def mock_popen(*args, **kwargs):
|
||||
_popen = MockPopen(1)
|
||||
return _popen
|
||||
|
||||
mock_do_popen.side_effect = mock_popen
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
deploy_server_meta = {
|
||||
"deployment_interface": "bond0",
|
||||
"server_ip": "99.99.1.5"}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.pxe_env_check,
|
||||
req, deploy_server_meta)
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import webob
|
||||
from daisy import test
|
||||
from daisy.context import RequestContext
|
||||
from daisy.api.v1 import deploy_server
|
||||
|
||||
|
||||
class MockStdout():
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def readline(self):
|
||||
return ''
|
||||
|
||||
|
||||
class MockPopen():
|
||||
|
||||
def __init__(self, returncode):
|
||||
self.returncode = returncode
|
||||
self.stdout = MockStdout()
|
||||
|
||||
def wait(self):
|
||||
pass
|
||||
|
||||
def poll(self):
|
||||
return True
|
||||
|
||||
|
||||
class DeployServerFuncs(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(DeployServerFuncs, self).setUp()
|
||||
self.controller = deploy_server.Controller()
|
||||
self.req = webob.Request.blank('/')
|
||||
self.req.context = RequestContext(is_admin=True, user='fake user',
|
||||
tenant='fake tenant')
|
||||
|
||||
@mock.patch("commands.getstatusoutput")
|
||||
def test_get_nics(self, mock_do_getstatusoutput):
|
||||
def mock_getstatusoutput(*args, **kwargs):
|
||||
return (0, 'docker0: eth0: eth1: ')
|
||||
|
||||
mock_do_getstatusoutput.side_effect = mock_getstatusoutput
|
||||
nics = self.controller.get_nics()
|
||||
self.assertEqual(set(['docker0', 'eth1', 'eth0']), nics)
|
||||
|
||||
@mock.patch("commands.getstatusoutput")
|
||||
def test_get_nics_with_lo(self, mock_do_getstatusoutput):
|
||||
def mock_getstatusoutput(*args, **kwargs):
|
||||
return (0, 'docker0: eth0: eth1: lo: ')
|
||||
|
||||
mock_do_getstatusoutput.side_effect = mock_getstatusoutput
|
||||
nics = self.controller.get_nics()
|
||||
self.assertEqual(set(['docker0', 'eth1', 'eth0']), nics)
|
||||
|
||||
@mock.patch("commands.getstatusoutput")
|
||||
def test_get_pxe_nic(self, mock_do_getstatusoutput):
|
||||
def mock_getstatusoutput(*args, **kwargs):
|
||||
return (0, 'bond0:100')
|
||||
|
||||
mock_do_getstatusoutput.side_effect = mock_getstatusoutput
|
||||
pxe_nic = self.controller.get_pxe_nic("99.99.1.5")
|
||||
self.assertEqual("bond0", pxe_nic)
|
||||
|
||||
@mock.patch("commands.getstatusoutput")
|
||||
def test_get_pxe_nic_with_error(self, mock_do_getstatusoutput):
|
||||
def mock_getstatusoutput(*args, **kwargs):
|
||||
return (1, 'bond0:100')
|
||||
|
||||
mock_do_getstatusoutput.side_effect = mock_getstatusoutput
|
||||
pxe_nic = self.controller.get_pxe_nic("99.99.1.5")
|
||||
self.assertEqual(None, pxe_nic)
|
||||
|
||||
@mock.patch("daisy.registry.client.v1.api.get_all_networks")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_nics")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_pxe_nic")
|
||||
def test_list_deploy_server(self, mock_do_get_pxe_nic,
|
||||
mock_do_get_nics,
|
||||
mock_do_get_all_networks):
|
||||
|
||||
def mock_get_all_networks(*args, **kwargs):
|
||||
return [{"ip": "99.99.1.5"}]
|
||||
|
||||
def mock_get_nics(*args, **kwargs):
|
||||
return set(['docker0', 'eth1', 'eth0'])
|
||||
|
||||
def mock_get_pxe_nic(*args, **kwargs):
|
||||
return "bond0"
|
||||
|
||||
mock_do_get_all_networks.side_effect = mock_get_all_networks
|
||||
mock_do_get_nics.side_effect = mock_get_nics
|
||||
mock_do_get_pxe_nic.side_effect = mock_get_pxe_nic
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
actual = {'deploy_servers': [
|
||||
{
|
||||
'ip': '99.99.1.5',
|
||||
'nics': set(['docker0', 'eth0', 'eth1']),
|
||||
'pxe_nic': 'bond0'
|
||||
}]}
|
||||
deploy_servers = self.controller.list_deploy_server(req)
|
||||
self.assertEqual(actual, deploy_servers)
|
||||
|
||||
@mock.patch("daisy.registry.client.v1.api.get_all_networks")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_nics")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_pxe_nic")
|
||||
def test_list_more_deploy_server(self, mock_do_get_pxe_nic,
|
||||
mock_do_get_nics,
|
||||
mock_do_get_all_networks):
|
||||
|
||||
def mock_get_all_networks(*args, **kwargs):
|
||||
return [{"ip": "99.99.1.5"}, {"ip": "99.99.1.5"}]
|
||||
|
||||
def mock_get_nics(*args, **kwargs):
|
||||
return set(['docker0', 'eth1', 'eth0'])
|
||||
|
||||
def mock_get_pxe_nic(*args, **kwargs):
|
||||
return "bond0"
|
||||
|
||||
mock_do_get_all_networks.side_effect = mock_get_all_networks
|
||||
mock_do_get_nics.side_effect = mock_get_nics
|
||||
mock_do_get_pxe_nic.side_effect = mock_get_pxe_nic
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.list_deploy_server,
|
||||
req)
|
||||
|
||||
@mock.patch("daisy.registry.client.v1.api.get_all_networks")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_nics")
|
||||
@mock.patch("daisy.api.v1.deploy_server.Controller.get_pxe_nic")
|
||||
def test_list_more_deploy_server_with_error(
|
||||
self, mock_do_get_pxe_nic, mock_do_get_nics,
|
||||
mock_do_get_all_networks):
|
||||
|
||||
def mock_get_all_networks(*args, **kwargs):
|
||||
raise webob.exc.HTTPBadRequest(
|
||||
explanation="Get system net plane failed.",
|
||||
request=self.req)
|
||||
|
||||
def mock_get_nics(*args, **kwargs):
|
||||
return set(['docker0', 'eth1', 'eth0'])
|
||||
|
||||
def mock_get_pxe_nic(*args, **kwargs):
|
||||
return "bond0"
|
||||
|
||||
mock_do_get_all_networks.side_effect = mock_get_all_networks
|
||||
mock_do_get_nics.side_effect = mock_get_nics
|
||||
mock_do_get_pxe_nic.side_effect = mock_get_pxe_nic
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.list_deploy_server,
|
||||
req)
|
||||
|
||||
@mock.patch("subprocess.Popen")
|
||||
def test_pxe_env_check(self, mock_do_popen):
|
||||
|
||||
def mock_popen(*args, **kwargs):
|
||||
_popen = MockPopen(0)
|
||||
return _popen
|
||||
|
||||
mock_do_popen.side_effect = mock_popen
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
deploy_server_meta = {
|
||||
"deployment_interface": "bond0",
|
||||
"server_ip": "99.99.1.5"}
|
||||
actual = {'deploy_server_meta': {'return_code': 0}}
|
||||
|
||||
result = self.controller.pxe_env_check(req, deploy_server_meta)
|
||||
self.assertEqual(actual, result)
|
||||
|
||||
@mock.patch("subprocess.Popen")
|
||||
def test_pxe_env_check_with_error_popen(self, mock_do_popen):
|
||||
|
||||
def mock_popen(*args, **kwargs):
|
||||
_popen = MockPopen(1)
|
||||
return _popen
|
||||
|
||||
mock_do_popen.side_effect = mock_popen
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
deploy_server_meta = {
|
||||
"deployment_interface": "bond0",
|
||||
"server_ip": "99.99.1.5"}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.pxe_env_check,
|
||||
req, deploy_server_meta)
|
||||
|
||||
@mock.patch("subprocess.Popen")
|
||||
def test_pxe_env_check_call_process_error(self, mock_do_popen):
|
||||
|
||||
def mock_popen(*args, **kwargs):
|
||||
e = subprocess.CalledProcessError(0, 'test')
|
||||
e.output = 'test error'
|
||||
raise e
|
||||
|
||||
mock_do_popen.side_effect = mock_popen
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
deploy_server_meta = {
|
||||
"deployment_interface": "bond0",
|
||||
"server_ip": "99.99.1.5"}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.pxe_env_check,
|
||||
req, deploy_server_meta)
|
||||
|
||||
@mock.patch("subprocess.Popen")
|
||||
def test_pxe_env_check_error(self, mock_do_popen):
|
||||
|
||||
def mock_popen(*args, **kwargs):
|
||||
_popen = MockPopen(1)
|
||||
return _popen
|
||||
|
||||
mock_do_popen.side_effect = mock_popen
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
deploy_server_meta = {
|
||||
"deployment_interface": "bond0",
|
||||
"server_ip": "99.99.1.5"}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.pxe_env_check,
|
||||
req, deploy_server_meta)
|
||||
|
@ -11,37 +11,37 @@
|
||||
# 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.
|
||||
|
||||
import mock
|
||||
import webob
|
||||
from daisy.context import RequestContext
|
||||
from daisy import test
|
||||
from daisy.api.v1 import members
|
||||
|
||||
|
||||
class TestMembers(test.TestCase):
|
||||
def setUp(self):
|
||||
super(TestMembers, self).setUp()
|
||||
self.controller = members.Controller()
|
||||
|
||||
@mock.patch('daisy.api.backends.common._judge_ssh_host')
|
||||
@mock.patch('daisy.registry.client.v1.api.update_host_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.delete_cluster_host')
|
||||
@mock.patch('daisy.registry.client.v1.api.get_host_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.get_cluster_metadata')
|
||||
def test_delete_cluster_host(self, mock_get_cluster, mock_get_host,
|
||||
mock_delete_cluster_host, mock_update_host,
|
||||
mock_judge_ssh_host):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True, user='fake user',
|
||||
tenant='fake tenant')
|
||||
cluster_id = '1'
|
||||
host_id = '1'
|
||||
mock_get_cluster.return_value = {'id': '1', 'deleted': 0}
|
||||
mock_get_host.return_value = {'id': '1', 'deleted': 0}
|
||||
mock_delete_cluster_host.return_value = []
|
||||
mock_judge_ssh_host.return_value = False
|
||||
mock_update_host.return_value = {}
|
||||
self.controller.delete_cluster_host(req, cluster_id, host_id)
|
||||
self.assertTrue(mock_update_host.called)
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import webob
|
||||
from daisy.context import RequestContext
|
||||
from daisy import test
|
||||
from daisy.api.v1 import members
|
||||
|
||||
|
||||
class TestMembers(test.TestCase):
|
||||
def setUp(self):
|
||||
super(TestMembers, self).setUp()
|
||||
self.controller = members.Controller()
|
||||
|
||||
@mock.patch('daisy.api.backends.common._judge_ssh_host')
|
||||
@mock.patch('daisy.registry.client.v1.api.update_host_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.delete_cluster_host')
|
||||
@mock.patch('daisy.registry.client.v1.api.get_host_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.get_cluster_metadata')
|
||||
def test_delete_cluster_host(self, mock_get_cluster, mock_get_host,
|
||||
mock_delete_cluster_host, mock_update_host,
|
||||
mock_judge_ssh_host):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True, user='fake user',
|
||||
tenant='fake tenant')
|
||||
cluster_id = '1'
|
||||
host_id = '1'
|
||||
mock_get_cluster.return_value = {'id': '1', 'deleted': 0}
|
||||
mock_get_host.return_value = {'id': '1', 'deleted': 0}
|
||||
mock_delete_cluster_host.return_value = []
|
||||
mock_judge_ssh_host.return_value = False
|
||||
mock_update_host.return_value = {}
|
||||
self.controller.delete_cluster_host(req, cluster_id, host_id)
|
||||
self.assertTrue(mock_update_host.called)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -11,273 +11,273 @@
|
||||
# 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.
|
||||
|
||||
import mock
|
||||
import webob
|
||||
from daisy.context import RequestContext
|
||||
import daisy.registry.client.v1.api as registry
|
||||
from daisy import test
|
||||
from daisy.api.v1 import template
|
||||
from webob.exc import HTTPForbidden
|
||||
from webob.exc import HTTPBadRequest
|
||||
|
||||
|
||||
cluster = {'vlan_end': None,
|
||||
'updated_at': '2016-07-19T02:16:05.000000',
|
||||
'owner': None,
|
||||
'networking_parameters': {
|
||||
'vni_range': [None, None],
|
||||
'public_vip': '192.168.1.4',
|
||||
'net_l23_provider': None,
|
||||
'base_mac': '',
|
||||
'gre_id_range': [None,
|
||||
None],
|
||||
'vlan_range': [None, None],
|
||||
'segmentation_type': None},
|
||||
'gre_id_start': None,
|
||||
'deleted_at': None,
|
||||
'networks': [
|
||||
'd3d60abf-c8d1-49ec-9731-d500b1ef4acb',
|
||||
'bc99206e-0ac2-4b6e-9cd3-d4cdd11c208e',
|
||||
'8518a8a5-e5fb-41ba-877f-eef386e3376f',
|
||||
'8048a7d7-7b85-4621-837c-adea08acdbbd',
|
||||
'6aacb625-99f2-4a95-b98f-ec0af256eb55',
|
||||
'4ad601b0-19e2-4feb-b41a-6e3af5153e2a'],
|
||||
'id': '4d3156ba-a4a5-4f41-914c-7a148170f281',
|
||||
'base_mac': '',
|
||||
'auto_scale': 0,
|
||||
'target_systems': 'os+tecs',
|
||||
'vni_end': None,
|
||||
'gre_id_end': None,
|
||||
'nodes': [
|
||||
'6e3a0ab9-fff6-459b-8bf1-9b6681efbfb0',
|
||||
'd25666c1-651a-4cd7-875a-41a52fddaf6b',
|
||||
'd04cfa48-c3ad-477c-b2ac-95bee7582181',
|
||||
'4b6970c5-ef1d-4599-a1d7-70175a888e6d'],
|
||||
'description': '',
|
||||
'deleted': False,
|
||||
'routers': [],
|
||||
'logic_networks': [],
|
||||
'net_l23_provider': None,
|
||||
'vlan_start': None,
|
||||
'name': 'test',
|
||||
'created_at': '2016-07-18T02:34:52.000000',
|
||||
'public_vip': '192.168.1.4',
|
||||
'use_dns': 1,
|
||||
'vni_start': None,
|
||||
'segmentation_type': None}
|
||||
|
||||
|
||||
return_template = [{'name': 'test',
|
||||
'hosts': None,
|
||||
'content': '{"cluster":{"description": "",'
|
||||
'"routers": [],'
|
||||
'"logic_networks": [],'
|
||||
'"auto_scale": 0,'
|
||||
'"use_dns": 1,'
|
||||
'"target_systems": "os+tecs",'
|
||||
'"networking_parameters":'
|
||||
'{"public_vip": "192.168.2.10",'
|
||||
'"base_mac": ""},'
|
||||
'"tecs_version_id": "d48fbec7-8764-4d44-'
|
||||
'b27a-fba7bbcc57d9"},'
|
||||
'"networks":[{"ip_ranges": [],'
|
||||
'"cidr": "10.43.178.1/24",'
|
||||
'"network_type": "DATAPLANE",'
|
||||
'"name": "physnet1"},'
|
||||
'{"ip_ranges": [],'
|
||||
'"cidr": "192.168.1.1/24",'
|
||||
'"network_type": "MANAGEMENT",'
|
||||
'"name": "MANAGEMENT"},'
|
||||
'{"ip_ranges": [],'
|
||||
'"cidr": "192.168.2.1/24",'
|
||||
'"network_type": "PUBLICAPI",'
|
||||
'"name": "PUBLICAPI"}],'
|
||||
'"roles":[{"name": "CONTROLLER_HA", '
|
||||
'"config_set_id": "1"},'
|
||||
'{"name": "CONTROLLER_LB",'
|
||||
'"config_set_id": "2"},'
|
||||
'{"name": "COMPUTER",'
|
||||
'"config_set_id": "3"}],'
|
||||
'"cinder_volumes":[],'
|
||||
'"services_disk":[]}',
|
||||
'type': 'tecs'}]
|
||||
|
||||
|
||||
networks = [{"name": "physnet1",
|
||||
'id': '1'},
|
||||
{"name": "MANAGEMENT",
|
||||
'id': '2'},
|
||||
{"name": "PUBLICAPI",
|
||||
'id': '3'}]
|
||||
|
||||
roles = [{"name": "CONTROLLER_HA",
|
||||
'id': '1'},
|
||||
{"name": "CONTROLLER_LB",
|
||||
'id': '2'},
|
||||
{"name": "COMPUTER",
|
||||
'id': '3'}]
|
||||
|
||||
|
||||
class TestTemplate(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestTemplate, self).setUp()
|
||||
self.controller = template.Controller()
|
||||
|
||||
def test_del_cluster_params(self):
|
||||
self.controller._del_cluster_params(cluster)
|
||||
self.assertEqual(None, cluster.get('base_mac', None))
|
||||
self.assertEqual(None, cluster.get('name', None))
|
||||
self.assertEqual(None, cluster.get('networks', None))
|
||||
self.assertEqual(None, cluster.get('vlan_start', None))
|
||||
self.assertEqual(None, cluster.get('vlan_end', None))
|
||||
self.assertEqual(None, cluster.get('vni_start', None))
|
||||
self.assertEqual(None, cluster.get('vni_end', None))
|
||||
self.assertEqual(None, cluster.get('gre_id_start', None))
|
||||
self.assertEqual(None, cluster.get('gre_id_end', None))
|
||||
|
||||
def test_get_template_detail(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template_id = "123"
|
||||
registry.template_detail_metadata = mock.Mock(
|
||||
return_value={"template_name": "test"})
|
||||
template_meta = self.controller.get_template_detail(req, template_id)
|
||||
self.assertEqual("test", template_meta['template']['template_name'])
|
||||
|
||||
def test_update_template(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template_id = "123"
|
||||
template = {}
|
||||
registry.update_template_metadata = mock.Mock(
|
||||
return_value={"template_name": "test"})
|
||||
template_meta = self.controller.update_template(
|
||||
req, template_id, template)
|
||||
self.assertEqual("test", template_meta['template']['template_name'])
|
||||
|
||||
def test_add_template(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template = {"template_name": "test"}
|
||||
registry.add_template_metadata = mock.Mock(
|
||||
return_value={"template_name": "test"})
|
||||
template_meta = self.controller.add_template(req, template)
|
||||
self.assertEqual("test", template_meta['template']['template_name'])
|
||||
|
||||
def test_get_template_lists(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
self.controller._get_query_params = mock.Mock(
|
||||
return_value={'filter': {}})
|
||||
template = {"template_name": "test"}
|
||||
registry.template_lists_metadata = mock.Mock(return_value=[])
|
||||
templates = self.controller.get_template_lists(req)
|
||||
self.assertEqual([], templates['template'])
|
||||
|
||||
def test_get_services_disk(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
role = {'id': '1', 'name': 'COMPUTER'}
|
||||
registry.list_service_disk_metadata = mock.Mock(return_value=[])
|
||||
service_disk = self.controller._get_services_disk(req, role)
|
||||
self.assertEqual([], service_disk)
|
||||
|
||||
def test_delete_template(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template_id = "123"
|
||||
registry.delete_template_metadata = mock.Mock(return_value={""})
|
||||
template = self.controller.delete_template(req, template_id)
|
||||
self.assertEqual(200, template.status_code)
|
||||
|
||||
def test_export_db_to_json(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template = {'cluster_name': 'cluster1', 'description': 'desc'}
|
||||
registry.get_clusters_detail = mock.Mock(return_value={})
|
||||
self.assertRaises(
|
||||
HTTPForbidden, self.controller.export_db_to_json, req, template)
|
||||
|
||||
@mock.patch('daisy.registry.client.v1.api.'
|
||||
'list_optical_switch_metadata')
|
||||
def test_get_optical_switchs(self, mock_list_optical_switch):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
role = {'id': '1',
|
||||
'name': 'CONTROLLER_HA'}
|
||||
optical_switchs = [{'role_id': '1',
|
||||
'created_at': '12:23',
|
||||
'updated_at': '12:23',
|
||||
'deleted': '12:23',
|
||||
'deleted_at': '12:23',
|
||||
'id': '1234'}]
|
||||
mock_list_optical_switch.return_value = optical_switchs
|
||||
optical_switchs_return = self.controller._get_optical_switchs(req,
|
||||
role)
|
||||
self.assertEqual('CONTROLLER_HA', optical_switchs_return[0]['role_id'])
|
||||
|
||||
def test_import_optical_switchs_to_db(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
optical_switchs = [{'role_id': 'CONTROLLER_HA'}]
|
||||
roles = [{'id': '2',
|
||||
'name': 'CONTROLLER_LB'}]
|
||||
self.assertRaises(HTTPBadRequest,
|
||||
self.controller._import_optical_switchs_to_db,
|
||||
req, optical_switchs, roles)
|
||||
|
||||
@mock.patch('daisy.registry.client.v1.api.add_service_disk_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.add_optical_switch_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.add_cinder_volume_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.update_role_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.get_roles_detail')
|
||||
@mock.patch('daisy.registry.client.v1.api.update_network_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.get_networks_detail')
|
||||
@mock.patch('daisy.registry.client.v1.api.add_cluster_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.get_clusters_detail')
|
||||
@mock.patch('daisy.registry.client.v1.api.template_lists_metadata')
|
||||
def test_import_template_to_db_without_optical_switchs(
|
||||
self, mock_get_template, mock_get_cluster, mock_add_cluster,
|
||||
mock_get_networks, mock_update_network, mock_get_roles,
|
||||
mock_update_role, mock_add_cinder_volume, mock_add_optical_switch,
|
||||
mock_add_service_disk):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template = {'cluster': 'test', 'template_name': 'test'}
|
||||
mock_get_template.return_value = return_template
|
||||
mock_get_cluster.return_value = []
|
||||
mock_add_cluster.return_value = cluster
|
||||
mock_get_networks.return_value = networks
|
||||
mock_update_network.return_value = []
|
||||
mock_get_roles.return_value = roles
|
||||
mock_update_role.return_value = []
|
||||
mock_add_cinder_volume.return_value = []
|
||||
mock_add_optical_switch.return_value = []
|
||||
mock_add_service_disk.return_value = []
|
||||
self.assertEqual('4d3156ba-a4a5-4f41-914c-7a148170f281',
|
||||
self.controller.
|
||||
import_template_to_db(req, template)
|
||||
['template']['id'])
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import webob
|
||||
from daisy.context import RequestContext
|
||||
import daisy.registry.client.v1.api as registry
|
||||
from daisy import test
|
||||
from daisy.api.v1 import template
|
||||
from webob.exc import HTTPForbidden
|
||||
from webob.exc import HTTPBadRequest
|
||||
|
||||
|
||||
cluster = {'vlan_end': None,
|
||||
'updated_at': '2016-07-19T02:16:05.000000',
|
||||
'owner': None,
|
||||
'networking_parameters': {
|
||||
'vni_range': [None, None],
|
||||
'public_vip': '192.168.1.4',
|
||||
'net_l23_provider': None,
|
||||
'base_mac': '',
|
||||
'gre_id_range': [None,
|
||||
None],
|
||||
'vlan_range': [None, None],
|
||||
'segmentation_type': None},
|
||||
'gre_id_start': None,
|
||||
'deleted_at': None,
|
||||
'networks': [
|
||||
'd3d60abf-c8d1-49ec-9731-d500b1ef4acb',
|
||||
'bc99206e-0ac2-4b6e-9cd3-d4cdd11c208e',
|
||||
'8518a8a5-e5fb-41ba-877f-eef386e3376f',
|
||||
'8048a7d7-7b85-4621-837c-adea08acdbbd',
|
||||
'6aacb625-99f2-4a95-b98f-ec0af256eb55',
|
||||
'4ad601b0-19e2-4feb-b41a-6e3af5153e2a'],
|
||||
'id': '4d3156ba-a4a5-4f41-914c-7a148170f281',
|
||||
'base_mac': '',
|
||||
'auto_scale': 0,
|
||||
'target_systems': 'os+tecs',
|
||||
'vni_end': None,
|
||||
'gre_id_end': None,
|
||||
'nodes': [
|
||||
'6e3a0ab9-fff6-459b-8bf1-9b6681efbfb0',
|
||||
'd25666c1-651a-4cd7-875a-41a52fddaf6b',
|
||||
'd04cfa48-c3ad-477c-b2ac-95bee7582181',
|
||||
'4b6970c5-ef1d-4599-a1d7-70175a888e6d'],
|
||||
'description': '',
|
||||
'deleted': False,
|
||||
'routers': [],
|
||||
'logic_networks': [],
|
||||
'net_l23_provider': None,
|
||||
'vlan_start': None,
|
||||
'name': 'test',
|
||||
'created_at': '2016-07-18T02:34:52.000000',
|
||||
'public_vip': '192.168.1.4',
|
||||
'use_dns': 1,
|
||||
'vni_start': None,
|
||||
'segmentation_type': None}
|
||||
|
||||
|
||||
return_template = [{'name': 'test',
|
||||
'hosts': None,
|
||||
'content': '{"cluster":{"description": "",'
|
||||
'"routers": [],'
|
||||
'"logic_networks": [],'
|
||||
'"auto_scale": 0,'
|
||||
'"use_dns": 1,'
|
||||
'"target_systems": "os+tecs",'
|
||||
'"networking_parameters":'
|
||||
'{"public_vip": "192.168.2.10",'
|
||||
'"base_mac": ""},'
|
||||
'"tecs_version_id": "d48fbec7-8764-4d44-'
|
||||
'b27a-fba7bbcc57d9"},'
|
||||
'"networks":[{"ip_ranges": [],'
|
||||
'"cidr": "10.43.178.1/24",'
|
||||
'"network_type": "DATAPLANE",'
|
||||
'"name": "physnet1"},'
|
||||
'{"ip_ranges": [],'
|
||||
'"cidr": "192.168.1.1/24",'
|
||||
'"network_type": "MANAGEMENT",'
|
||||
'"name": "MANAGEMENT"},'
|
||||
'{"ip_ranges": [],'
|
||||
'"cidr": "192.168.2.1/24",'
|
||||
'"network_type": "PUBLICAPI",'
|
||||
'"name": "PUBLICAPI"}],'
|
||||
'"roles":[{"name": "CONTROLLER_HA", '
|
||||
'"config_set_id": "1"},'
|
||||
'{"name": "CONTROLLER_LB",'
|
||||
'"config_set_id": "2"},'
|
||||
'{"name": "COMPUTER",'
|
||||
'"config_set_id": "3"}],'
|
||||
'"cinder_volumes":[],'
|
||||
'"services_disk":[]}',
|
||||
'type': 'tecs'}]
|
||||
|
||||
|
||||
networks = [{"name": "physnet1",
|
||||
'id': '1'},
|
||||
{"name": "MANAGEMENT",
|
||||
'id': '2'},
|
||||
{"name": "PUBLICAPI",
|
||||
'id': '3'}]
|
||||
|
||||
roles = [{"name": "CONTROLLER_HA",
|
||||
'id': '1'},
|
||||
{"name": "CONTROLLER_LB",
|
||||
'id': '2'},
|
||||
{"name": "COMPUTER",
|
||||
'id': '3'}]
|
||||
|
||||
|
||||
class TestTemplate(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestTemplate, self).setUp()
|
||||
self.controller = template.Controller()
|
||||
|
||||
def test_del_cluster_params(self):
|
||||
self.controller._del_cluster_params(cluster)
|
||||
self.assertEqual(None, cluster.get('base_mac', None))
|
||||
self.assertEqual(None, cluster.get('name', None))
|
||||
self.assertEqual(None, cluster.get('networks', None))
|
||||
self.assertEqual(None, cluster.get('vlan_start', None))
|
||||
self.assertEqual(None, cluster.get('vlan_end', None))
|
||||
self.assertEqual(None, cluster.get('vni_start', None))
|
||||
self.assertEqual(None, cluster.get('vni_end', None))
|
||||
self.assertEqual(None, cluster.get('gre_id_start', None))
|
||||
self.assertEqual(None, cluster.get('gre_id_end', None))
|
||||
|
||||
def test_get_template_detail(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template_id = "123"
|
||||
registry.template_detail_metadata = mock.Mock(
|
||||
return_value={"template_name": "test"})
|
||||
template_meta = self.controller.get_template_detail(req, template_id)
|
||||
self.assertEqual("test", template_meta['template']['template_name'])
|
||||
|
||||
def test_update_template(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template_id = "123"
|
||||
template = {}
|
||||
registry.update_template_metadata = mock.Mock(
|
||||
return_value={"template_name": "test"})
|
||||
template_meta = self.controller.update_template(
|
||||
req, template_id, template)
|
||||
self.assertEqual("test", template_meta['template']['template_name'])
|
||||
|
||||
def test_add_template(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template = {"template_name": "test"}
|
||||
registry.add_template_metadata = mock.Mock(
|
||||
return_value={"template_name": "test"})
|
||||
template_meta = self.controller.add_template(req, template)
|
||||
self.assertEqual("test", template_meta['template']['template_name'])
|
||||
|
||||
def test_get_template_lists(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
self.controller._get_query_params = mock.Mock(
|
||||
return_value={'filter': {}})
|
||||
template = {"template_name": "test"}
|
||||
registry.template_lists_metadata = mock.Mock(return_value=[])
|
||||
templates = self.controller.get_template_lists(req)
|
||||
self.assertEqual([], templates['template'])
|
||||
|
||||
def test_get_services_disk(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
role = {'id': '1', 'name': 'COMPUTER'}
|
||||
registry.list_service_disk_metadata = mock.Mock(return_value=[])
|
||||
service_disk = self.controller._get_services_disk(req, role)
|
||||
self.assertEqual([], service_disk)
|
||||
|
||||
def test_delete_template(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template_id = "123"
|
||||
registry.delete_template_metadata = mock.Mock(return_value={""})
|
||||
template = self.controller.delete_template(req, template_id)
|
||||
self.assertEqual(200, template.status_code)
|
||||
|
||||
def test_export_db_to_json(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template = {'cluster_name': 'cluster1', 'description': 'desc'}
|
||||
registry.get_clusters_detail = mock.Mock(return_value={})
|
||||
self.assertRaises(
|
||||
HTTPForbidden, self.controller.export_db_to_json, req, template)
|
||||
|
||||
@mock.patch('daisy.registry.client.v1.api.'
|
||||
'list_optical_switch_metadata')
|
||||
def test_get_optical_switchs(self, mock_list_optical_switch):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
role = {'id': '1',
|
||||
'name': 'CONTROLLER_HA'}
|
||||
optical_switchs = [{'role_id': '1',
|
||||
'created_at': '12:23',
|
||||
'updated_at': '12:23',
|
||||
'deleted': '12:23',
|
||||
'deleted_at': '12:23',
|
||||
'id': '1234'}]
|
||||
mock_list_optical_switch.return_value = optical_switchs
|
||||
optical_switchs_return = self.controller._get_optical_switchs(req,
|
||||
role)
|
||||
self.assertEqual('CONTROLLER_HA', optical_switchs_return[0]['role_id'])
|
||||
|
||||
def test_import_optical_switchs_to_db(self):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
optical_switchs = [{'role_id': 'CONTROLLER_HA'}]
|
||||
roles = [{'id': '2',
|
||||
'name': 'CONTROLLER_LB'}]
|
||||
self.assertRaises(HTTPBadRequest,
|
||||
self.controller._import_optical_switchs_to_db,
|
||||
req, optical_switchs, roles)
|
||||
|
||||
@mock.patch('daisy.registry.client.v1.api.add_service_disk_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.add_optical_switch_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.add_cinder_volume_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.update_role_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.get_roles_detail')
|
||||
@mock.patch('daisy.registry.client.v1.api.update_network_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.get_networks_detail')
|
||||
@mock.patch('daisy.registry.client.v1.api.add_cluster_metadata')
|
||||
@mock.patch('daisy.registry.client.v1.api.get_clusters_detail')
|
||||
@mock.patch('daisy.registry.client.v1.api.template_lists_metadata')
|
||||
def test_import_template_to_db_without_optical_switchs(
|
||||
self, mock_get_template, mock_get_cluster, mock_add_cluster,
|
||||
mock_get_networks, mock_update_network, mock_get_roles,
|
||||
mock_update_role, mock_add_cinder_volume, mock_add_optical_switch,
|
||||
mock_add_service_disk):
|
||||
req = webob.Request.blank('/')
|
||||
req.context = RequestContext(is_admin=True,
|
||||
user='fake user',
|
||||
tenant='fake tenant')
|
||||
template = {'cluster': 'test', 'template_name': 'test'}
|
||||
mock_get_template.return_value = return_template
|
||||
mock_get_cluster.return_value = []
|
||||
mock_add_cluster.return_value = cluster
|
||||
mock_get_networks.return_value = networks
|
||||
mock_update_network.return_value = []
|
||||
mock_get_roles.return_value = roles
|
||||
mock_update_role.return_value = []
|
||||
mock_add_cinder_volume.return_value = []
|
||||
mock_add_optical_switch.return_value = []
|
||||
mock_add_service_disk.return_value = []
|
||||
self.assertEqual('4d3156ba-a4a5-4f41-914c-7a148170f281',
|
||||
self.controller.
|
||||
import_template_to_db(req, template)
|
||||
['template']['id'])
|
||||
|
Loading…
x
Reference in New Issue
Block a user