diff --git a/hooks/hooks.py b/hooks/hooks.py index ed36409..da978e6 100755 --- a/hooks/hooks.py +++ b/hooks/hooks.py @@ -319,7 +319,7 @@ def client_relation_changed(): log("Not leader - ignoring broker request", level=DEBUG) else: rsp = process_requests(settings['broker_req']) - unit_id = remote_unit().replace('/', '-') + unit_id = remote_unit().replace('/', '-') unit_response_key = 'broker-rsp-' + unit_id data = { 'unit-targeted-reponses': True, diff --git a/unit_tests/test_ceph_broker.py b/unit_tests/test_ceph_broker.py index 0176d11..fc69817 100644 --- a/unit_tests/test_ceph_broker.py +++ b/unit_tests/test_ceph_broker.py @@ -70,3 +70,30 @@ class CephBrokerTestCase(unittest.TestCase): mock_pool_exists.assert_called_with(service='admin', name='foo') self.assertFalse(mock_create_pool.called) self.assertEqual(json.loads(rc), {'exit-code': 0}) + + @mock.patch('ceph_broker.create_pool') + @mock.patch('ceph_broker.pool_exists') + @mock.patch('ceph_broker.log') + def test_process_requests_create_pool_rid(self, mock_log, mock_pool_exists, + mock_create_pool): + mock_pool_exists.return_value = False + reqs = json.dumps({'api-version': 1, + 'request-id': '1ef5aede', + 'ops': [{'op': 'create-pool', 'name': + 'foo', 'replicas': 3}]}) + rc = ceph_broker.process_requests(reqs) + mock_pool_exists.assert_called_with(service='admin', name='foo') + mock_create_pool.assert_called_with(service='admin', name='foo', + replicas=3) + self.assertEqual(json.loads(rc)['exit-code'], 0) + self.assertEqual(json.loads(rc)['request-id'], '1ef5aede') + + @mock.patch('ceph_broker.log') + def test_process_requests_invalid_api_rid(self, mock_log): + reqs = json.dumps({'api-version': 0, 'request-id': '1ef5aede', + 'ops': [{'op': 'create-pool'}]}) + rc = ceph_broker.process_requests(reqs) + self.assertEqual(json.loads(rc)['exit-code'], 1) + self.assertEqual(json.loads(rc)['stderr'], + "Missing or invalid api version (0)") + self.assertEqual(json.loads(rc)['request-id'], '1ef5aede')