diff --git a/blazar/tests/utils/openstack/test_placement.py b/blazar/tests/utils/openstack/test_placement.py index be9896cc..b5cecc84 100644 --- a/blazar/tests/utils/openstack/test_placement.py +++ b/blazar/tests/utils/openstack/test_placement.py @@ -269,6 +269,16 @@ class TestPlacementClient(tests.TestCase): headers={'accept': 'application/json'}, microversion=PLACEMENT_MICROVERSION, raise_exc=False) + @mock.patch('keystoneauth1.session.Session.request') + def test_create_reservation_provider_fail(self, kss_req): + host_name = "compute-1" + get_json_mock = {'resource_providers': []} + kss_req.return_value = fake_requests.FakeResponse( + 200, content=json.dumps(get_json_mock)) + self.assertRaises( + exceptions.ResourceProviderNotFound, + self.client.create_reservation_provider, host_name) + @mock.patch('keystoneauth1.session.Session.request') def test_delete_reservation_provider(self, kss_req): host_uuid = uuidutils.generate_uuid() diff --git a/blazar/utils/openstack/placement.py b/blazar/utils/openstack/placement.py index a06ed948..4d2f9176 100644 --- a/blazar/utils/openstack/placement.py +++ b/blazar/utils/openstack/placement.py @@ -185,6 +185,9 @@ class BlazarPlacementClient(object): def create_reservation_provider(self, host_name): """Create a reservation provider as a child of the given host""" host_rp = self.get_resource_provider(host_name) + if host_rp is None: + raise exceptions.ResourceProviderNotFound( + resource_provider=host_name) host_uuid = host_rp['uuid'] rp_name = "blazar_" + host_name