Return appropriate error for invalid-port state in create port API.
Fixes ovs-plugin to return appropriate error code when create port API is passed a port state value other than ACTIVE or DOWN. Fixes bug 919265. Also added unit-test to test the behavior and verified it using ovs-plugin with devstack. Change-Id: Ibd4e7bfdf4483c7ad1ef4ca70a336cb164493ae1
This commit is contained in:
parent
f2a28b36fe
commit
96c434c137
@ -145,7 +145,11 @@ def port_create(net_id, state=None, op_status=OperationalStatus.UNKNOWN):
|
||||
session = get_session()
|
||||
with session.begin():
|
||||
port = models.Port(net_id, op_status)
|
||||
port['state'] = state or 'DOWN'
|
||||
if state is None:
|
||||
state = 'DOWN'
|
||||
elif state not in ('ACTIVE', 'DOWN'):
|
||||
raise q_exc.StateInvalid(port_state=state)
|
||||
port['state'] = state
|
||||
session.add(port)
|
||||
session.flush()
|
||||
return port
|
||||
|
@ -526,6 +526,14 @@ class BaseAPIOperationsTest(AbstractAPITest):
|
||||
custom_req_body=bad_body, expected_res_status=400)
|
||||
LOG.debug("_test_create_port_badrequest - fmt:%s - END", fmt)
|
||||
|
||||
def _test_create_port_badportstate(self, fmt):
|
||||
LOG.debug("_test_create_port_badportstate - fmt:%s - START", fmt)
|
||||
network_id = self._create_network(fmt)
|
||||
port_state = "BADSTATE"
|
||||
self._create_port(network_id, port_state, fmt,
|
||||
expected_res_status=self._port_state_invalid_code)
|
||||
LOG.debug("_test_create_port_badportstate - fmt:%s - END", fmt)
|
||||
|
||||
def _test_delete_port(self, fmt):
|
||||
LOG.debug("_test_delete_port - fmt:%s - START", fmt)
|
||||
content_type = "application/%s" % fmt
|
||||
@ -1032,6 +1040,12 @@ class BaseAPIOperationsTest(AbstractAPITest):
|
||||
def test_create_port_badrequest_xml(self):
|
||||
self._test_create_port_badrequest('xml')
|
||||
|
||||
def test_create_port_badportstate_json(self):
|
||||
self._test_create_port_badportstate('json')
|
||||
|
||||
def test_create_port_badportstate_xml(self):
|
||||
self._test_create_port_badportstate('xml')
|
||||
|
||||
def test_delete_port_xml(self):
|
||||
self._test_delete_port('xml')
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user