Return error HTTP code for incorrect neutron conf

Recently, we used to return error message for incorrect neutron config
without error HTTP status code. In other words, the "202 Accepted" was
always returned regardless it was successful or not.

Since now, tbe "400 Bad Request" will be returned in case of error and
"200 OK" in case of success (there's no reason to return "202 Accepted"
for synchronous task).

Change-Id: I9ad16fceb930332b427773dec32bd84d30fb1fd3
Closes-Bug: #1404821
This commit is contained in:
Igor Kalnitsky 2014-12-23 15:15:06 +02:00
parent 59cded22af
commit b73cde1c05
No known key found for this signature in database
GPG Key ID: 38306881ADFE39E4
7 changed files with 22 additions and 21 deletions

View File

@ -158,7 +158,6 @@ class NeutronNetworkConfigurationHandler(ProviderHandler):
task = task_manager.execute(data)
if task.status != consts.TASK_STATUSES.error:
try:
if 'networks' in data:
self.validator.validate_networks_update(
@ -180,10 +179,12 @@ class NeutronNetworkConfigurationHandler(ProviderHandler):
'progress': 100,
'message': six.text_type(exc)}
objects.Task.update(task, data)
logger.error(traceback.format_exc())
raise self.http(202, objects.Task.to_json(task))
if task.status == consts.TASK_STATUSES.error:
raise self.http(400, objects.Task.to_json(task))
raise self.http(200, objects.Task.to_json(task))
class NetworkConfigurationVerifyHandler(ProviderHandler):

View File

@ -1370,7 +1370,7 @@ class TestHandlers(BaseIntegrationTest):
['172.16.0.20', '172.16.0.22']]})
resp = self.env.neutron_networks_put(self.env.clusters[0].id, net_data)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 200)
self.assertEqual(resp.json_body['status'], 'ready')
self.env.launch_deployment()
@ -1413,7 +1413,7 @@ class TestHandlers(BaseIntegrationTest):
['172.16.0.20', '172.16.0.22']]})
resp = self.env.neutron_networks_put(self.env.clusters[0].id, net_data)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 200)
self.assertEqual(resp.json_body['status'], 'ready')
self.env.launch_deployment()
@ -1456,7 +1456,7 @@ class TestHandlers(BaseIntegrationTest):
[['172.16.10.130', '172.16.10.254']]
resp = self.env.neutron_networks_put(self.env.clusters[0].id, net_data)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 200)
self.assertEqual(resp.json_body['status'], 'ready')
self.env.launch_deployment()
@ -1491,7 +1491,7 @@ class TestHandlers(BaseIntegrationTest):
pub.update({'ip_ranges': [['172.16.0.10', '172.16.0.11']]})
resp = self.env.neutron_networks_put(self.env.clusters[0].id, net_data)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 200)
self.assertEqual(resp.json_body['status'], 'ready')
task = self.env.launch_deployment()

View File

@ -298,7 +298,7 @@ class TestNeutronNetworkConfigurationHandlerMultinode(BaseIntegrationTest):
mgmt['cidr'] = cidr
resp = self.env.neutron_networks_put(self.cluster.id, data)
self.assertEqual(202, resp.status_code)
self.assertEqual(200, resp.status_code)
task = resp.json_body
self.assertEqual(task['status'], 'ready')
@ -314,7 +314,7 @@ class TestNeutronNetworkConfigurationHandlerMultinode(BaseIntegrationTest):
resp = self.env.neutron_networks_put(self.cluster.id, data,
expect_errors=True)
self.assertEqual(202, resp.status_code)
self.assertEqual(400, resp.status_code)
task = resp.json_body
self.assertEqual(task['status'], 'error')
self.assertEqual(
@ -331,7 +331,7 @@ class TestNeutronNetworkConfigurationHandlerMultinode(BaseIntegrationTest):
data['networks'][0]['vlan_start'] = 500 # non-used vlan id
resp = self.env.neutron_networks_put(self.cluster.id, data)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 200)
self.db.refresh(network)
self.assertEqual(network.vlan_start, 500)
@ -347,7 +347,7 @@ class TestNeutronNetworkConfigurationHandlerMultinode(BaseIntegrationTest):
resp = self.env.neutron_networks_put(self.cluster.id, data,
expect_errors=True)
self.assertEqual(202, resp.status_code)
self.assertEqual(400, resp.status_code)
task = resp.json_body
self.assertEqual(task['status'], 'error')
self.assertEqual(
@ -362,7 +362,7 @@ class TestNeutronNetworkConfigurationHandlerMultinode(BaseIntegrationTest):
resp = self.env.neutron_networks_put(self.cluster.id, new_nets,
expect_errors=True)
self.assertEqual(202, resp.status_code)
self.assertEqual(400, resp.status_code)
task = resp.json_body
self.assertEqual(task['status'], 'error')
self.assertEqual(
@ -383,7 +383,7 @@ class TestNeutronNetworkConfigurationHandlerMultinode(BaseIntegrationTest):
[['199.61.0.111', '199.61.0.122']]
resp = self.env.neutron_networks_put(self.cluster.id, data)
self.assertEqual(202, resp.status_code)
self.assertEqual(200, resp.status_code)
task = resp.json_body
self.assertEqual(task['status'], 'ready')

View File

@ -83,7 +83,7 @@ class TestNetworkChecking(BaseIntegrationTest):
def update_neutron_networks_w_error(self, cluster_id, nets):
resp = self.env.neutron_networks_put(cluster_id, nets,
expect_errors=True)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 400)
task = resp.json_body
self.assertEqual(task['status'], 'error')
self.assertEqual(task['progress'], 100)
@ -93,7 +93,7 @@ class TestNetworkChecking(BaseIntegrationTest):
def update_neutron_networks_success(self, cluster_id, nets):
resp = self.env.neutron_networks_put(cluster_id, nets)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 200)
task = resp.json_body
self.assertEqual(task['status'], 'ready')
self.assertEqual(task['progress'], 100)

View File

@ -235,7 +235,7 @@ class TestNodeHandlers(BaseIntegrationTest):
if net['name'] == 'management':
net['vlan_start'] = None
resp = self.env.neutron_networks_put(cluster['id'], nets)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 200)
task = resp.json_body
self.assertEqual(task['status'], 'ready')
@ -272,7 +272,7 @@ class TestNodeHandlers(BaseIntegrationTest):
if net['name'] == 'management':
net['vlan_start'] = 112
resp = self.env.neutron_networks_put(cluster['id'], nets)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 200)
task = resp.json_body
self.assertEqual(task['status'], 'ready')

View File

@ -157,7 +157,7 @@ class TestPutSameJson(base.BaseIntegrationTest):
]
)
nova_config = self.http_get(
neutron_config = self.http_get(
'NeutronNetworkConfigurationHandler', {
'cluster_id': self.cluster['id']
}
@ -167,7 +167,7 @@ class TestPutSameJson(base.BaseIntegrationTest):
'NeutronNetworkConfigurationHandler', {
'cluster_id': self.cluster['id']
},
nova_config, 202
neutron_config, 200
)
def test_deployment_info(self):

View File

@ -322,7 +322,7 @@ class TestCheckBeforeDeploymentTask(BaseTestCase):
self.find_net_by_name(nets, 'public')['ip_ranges'] = \
[["172.16.0.2", "172.16.0.4"]]
resp = self.env.neutron_networks_put(cluster.id, nets)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 200)
self.assertRaises(
errors.NetworkCheckError,
@ -333,7 +333,7 @@ class TestCheckBeforeDeploymentTask(BaseTestCase):
self.find_net_by_name(nets, 'public')['ip_ranges'] = \
[["172.16.0.2", "172.16.0.5"]]
resp = self.env.neutron_networks_put(cluster.id, nets)
self.assertEqual(resp.status_code, 202)
self.assertEqual(resp.status_code, 200)
self.assertNotRaises(
errors.NetworkCheckError,