Handle InstanceUserDataTooLarge at api layer
compute layer might raise InstanceUserDataTooLarge exception, this patch catches the exception at API layer and handle it. Closes-Bug: #1338473 Change-Id: I881e526eaa51ab28316f643430d904f620123d56
This commit is contained in:
		@@ -517,6 +517,7 @@ class ServersController(wsgi.Controller):
 | 
			
		||||
                exception.InvalidRequest,
 | 
			
		||||
                exception.MultiplePortsNotApplicable,
 | 
			
		||||
                exception.InstanceUserDataMalformed,
 | 
			
		||||
                exception.InstanceUserDataTooLarge,
 | 
			
		||||
                exception.PortNotFound,
 | 
			
		||||
                exception.FixedIpAlreadyInUse,
 | 
			
		||||
                exception.SecurityGroupNotFound,
 | 
			
		||||
 
 | 
			
		||||
@@ -993,6 +993,7 @@ class Controller(wsgi.Controller):
 | 
			
		||||
                exception.InvalidBDM,
 | 
			
		||||
                exception.PortRequiresFixedIP,
 | 
			
		||||
                exception.NetworkRequiresSubnet,
 | 
			
		||||
                exception.InstanceUserDataTooLarge,
 | 
			
		||||
                exception.InstanceUserDataMalformed) as error:
 | 
			
		||||
            raise exc.HTTPBadRequest(explanation=error.format_message())
 | 
			
		||||
        except (exception.PortInUse,
 | 
			
		||||
 
 | 
			
		||||
@@ -2094,6 +2094,15 @@ class ServersControllerCreateTest(test.TestCase):
 | 
			
		||||
        self.assertRaises(webob.exc.HTTPBadRequest,
 | 
			
		||||
                          self._test_create_extra, params)
 | 
			
		||||
 | 
			
		||||
    @mock.patch.object(compute_api.API, 'create')
 | 
			
		||||
    def test_create_instance_raise_user_data_too_large(self, mock_create):
 | 
			
		||||
        mock_create.side_effect = exception.InstanceUserDataTooLarge(
 | 
			
		||||
            maxsize=1, length=2)
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(webob.exc.HTTPBadRequest,
 | 
			
		||||
                          self.controller.create,
 | 
			
		||||
                          self.req, self.body)
 | 
			
		||||
 | 
			
		||||
    def test_create_instance_with_network_with_no_subnet(self):
 | 
			
		||||
        network = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee'
 | 
			
		||||
        requested_networks = [{'uuid': network}]
 | 
			
		||||
 
 | 
			
		||||
@@ -2157,6 +2157,15 @@ class ServersControllerCreateTest(test.TestCase):
 | 
			
		||||
        self.assertRaises(webob.exc.HTTPBadRequest,
 | 
			
		||||
                          self._test_create_extra, params)
 | 
			
		||||
 | 
			
		||||
    @mock.patch.object(compute_api.API, 'create')
 | 
			
		||||
    def test_create_instance_raise_user_data_too_large(self, mock_create):
 | 
			
		||||
        mock_create.side_effect = exception.InstanceUserDataTooLarge(
 | 
			
		||||
            maxsize=1, length=2)
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(webob.exc.HTTPBadRequest,
 | 
			
		||||
                          self.controller.create,
 | 
			
		||||
                          self.req, self.body)
 | 
			
		||||
 | 
			
		||||
    def test_create_instance_with_network_with_no_subnet(self):
 | 
			
		||||
        self.flags(network_api_class='nova.network.neutronv2.api.API')
 | 
			
		||||
        network = 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee'
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user