subnet_id = sa.Column(sa.String(36), nullable=False)
address = sa.Column(sa.String(64))
port = sa.Column(sa.Integer, nullable=False)
- protocol = sa.Column(sa.Enum("HTTP", "HTTPS", name="vip_protocol"),
+ protocol = sa.Column(sa.Enum("HTTP", "HTTPS", "TCP", name="lb_protocols"),
nullable=False)
pool_id = sa.Column(sa.String(36), nullable=False)
session_persistence = orm.relationship(SessionPersistence,
name = sa.Column(sa.String(255))
description = sa.Column(sa.String(255))
subnet_id = sa.Column(sa.String(36), nullable=False)
- protocol = sa.Column(sa.String(64), nullable=False)
+ protocol = sa.Column(sa.Enum("HTTP", "HTTPS", "TCP", name="lb_protocols"),
+ nullable=False)
lb_method = sa.Column(sa.Enum("ROUND_ROBIN",
"LEAST_CONNECTIONS",
"SOURCE_IP",
'convert_to': attr.convert_to_int,
'is_visible': True},
'protocol': {'allow_post': True, 'allow_put': False,
- 'validate': {'type:string': None},
+ 'validate': {'type:values': ['TCP', 'HTTP', 'HTTPS']},
'is_visible': True},
'pool_id': {'allow_post': True, 'allow_put': True,
'validate': {'type:uuid': None},
'validate': {'type:uuid': None},
'is_visible': True},
'protocol': {'allow_post': True, 'allow_put': False,
- 'validate': {'type:string': None},
+ 'validate': {'type:values': ['TCP', 'HTTP', 'HTTPS']},
'is_visible': True},
'lb_method': {'allow_post': True, 'allow_put': True,
'validate': {'type:string': None},
@contextlib.contextmanager
def vip(self, fmt='json', name='vip1', pool=None,
protocol='HTTP', port=80, admin_status_up=True, no_delete=False,
- **kwargs):
+ address="172.16.1.123", **kwargs):
if not pool:
with self.pool() as pool:
pool_id = pool['pool']['id']
protocol,
port,
admin_status_up,
- address="172.16.1.123",
+ address=address,
**kwargs)
vip = self.deserialize(fmt, res)
if res.status_int >= 400:
protocol,
port,
admin_status_up,
- address="172.16.1.123",
+ address=address,
**kwargs)
vip = self.deserialize(fmt, res)
if res.status_int >= 400:
for k, v in keys:
self.assertEqual(vip['vip'][k], v)
+ def test_create_vip_with_invalid_values(self):
+ name = 'vip3'
+
+ vip = self.vip(name=name, protocol='UNSUPPORTED')
+ self.assertRaises(webob.exc.HTTPClientError, vip.__enter__)
+
+ vip = self.vip(name=name, port='NOT_AN_INT')
+ self.assertRaises(webob.exc.HTTPClientError, vip.__enter__)
+
+ # 100500 is not a valid port number
+ vip = self.vip(name=name, port='100500')
+ self.assertRaises(webob.exc.HTTPClientError, vip.__enter__)
+
+ # 192.168.130.130.130 is not a valid IP address
+ vip = self.vip(name=name, address='192.168.130.130.130')
+ self.assertRaises(webob.exc.HTTPClientError, vip.__enter__)
+
def test_create_vip_with_session_persistence(self):
name = 'vip2'
keys = [('name', name),
for k, v in keys:
self.assertEqual(res['vips'][0][k], v)
+ def test_create_pool_with_invalid_values(self):
+ name = 'pool3'
+
+ pool = self.pool(name=name, protocol='UNSUPPORTED')
+ self.assertRaises(webob.exc.HTTPClientError, pool.__enter__)
+
+ pool = self.pool(name=name, lb_method='UNSUPPORTED')
+ self.assertRaises(webob.exc.HTTPClientError, pool.__enter__)
+
def test_create_pool(self):
name = "pool1"
keys = [('name', name),
('lb_method', 'ROUND_ROBIN'),
('admin_state_up', True),
('status', 'PENDING_CREATE')]
+
with self.pool(name=name) as pool:
for k, v in keys:
self.assertEqual(pool['pool'][k], v)