362
365
m = 'ceph relation incomplete. Peer not ready?'
363
366
self.juju_log.assert_called_with(m)
365
def test_ceph_changed(self):
368
@patch("cinder_hooks.relation_set")
369
@patch("cinder_hooks.relation_get")
370
def test_ceph_changed_broker_send_rq(self, mock_relation_get,
372
self.CONFIGS.complete_contexts.return_value = ['ceph']
373
self.service_name.return_value = 'cinder'
374
self.ensure_ceph_keyring.return_value = True
375
self.ceph_config_file.return_value = '/var/lib/charm/cinder/ceph.conf'
376
self.relation_ids.return_value = ['ceph:0']
377
hooks.hooks.execute(['hooks/ceph-relation-changed'])
378
self.ensure_ceph_keyring.assert_called_with(service='cinder',
381
req = {'api-version': 1,
382
'ops': [{"op": "create-pool", "name": "cinder", "replicas": 3}]}
383
broker_dict = json.dumps(req)
384
mock_relation_set.assert_called_with(broker_req=broker_dict,
385
relation_id='ceph:0')
386
for c in [call('/var/lib/charm/cinder/ceph.conf'),
387
call('/etc/cinder/cinder.conf')]:
388
self.assertNotIn(c, self.CONFIGS.write.call_args_list)
389
self.assertFalse(self.set_ceph_env_variables.called)
391
@patch("cinder_hooks.relation_get", autospec=True)
392
def test_ceph_changed_broker_success(self, mock_relation_get):
366
393
'It ensures ceph assets created on ceph changed'
367
394
self.CONFIGS.complete_contexts.return_value = ['ceph']
368
395
self.service_name.return_value = 'cinder'
369
396
self.ensure_ceph_keyring.return_value = True
370
397
self.ceph_config_file.return_value = '/var/lib/charm/cinder/ceph.conf'
398
mock_relation_get.return_value = {'broker_rsp':
399
json.dumps({'exit-code': 0})}
371
400
hooks.hooks.execute(['hooks/ceph-relation-changed'])
372
401
self.ensure_ceph_keyring.assert_called_with(service='cinder',
375
self.ensure_ceph_pool.assert_called_with(service='cinder', replicas=3)
376
404
for c in [call('/var/lib/charm/cinder/ceph.conf'),
377
405
call('/etc/cinder/cinder.conf')]:
378
406
self.assertIn(c, self.CONFIGS.write.call_args_list)
379
407
self.set_ceph_env_variables.assert_called_with(service='cinder')
409
@patch("cinder_hooks.relation_get", autospec=True)
410
def test_ceph_changed_broker_nonzero_rc(self, mock_relation_get):
411
self.CONFIGS.complete_contexts.return_value = ['ceph']
412
self.service_name.return_value = 'cinder'
413
self.ensure_ceph_keyring.return_value = True
414
self.ceph_config_file.return_value = '/var/lib/charm/cinder/ceph.conf'
415
mock_relation_get.return_value = {'broker_rsp':
416
json.dumps({'exit-code': 1})}
417
hooks.hooks.execute(['hooks/ceph-relation-changed'])
418
self.ensure_ceph_keyring.assert_called_with(service='cinder',
421
for c in [call('/var/lib/charm/cinder/ceph.conf'),
422
call('/etc/cinder/cinder.conf')]:
423
self.assertNotIn(c, self.CONFIGS.write.call_args_list)
424
self.assertFalse(self.set_ceph_env_variables.called)
381
426
def test_ceph_changed_no_keys(self):
382
427
'It ensures ceph assets created on ceph changed'
383
428
self.CONFIGS.complete_contexts.return_value = ['ceph']