~hopem/charms/trusty/cinder/ensure-apache-restart

« back to all changes in this revision

Viewing changes to unit_tests/test_cinder_hooks.py

  • Committer: Liam Young
  • Date: 2015-01-09 16:02:39 UTC
  • mfrom: (65 cinder.next)
  • mto: This revision was merged to the branch mainline in revision 67.
  • Revision ID: liam.young@canonical.com-20150109160239-qldk423wxfno2ao3
Merged next in and resolved conflicts

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from mock import MagicMock, patch, call
 
1
import json
 
2
from mock import (
 
3
    MagicMock,
 
4
    patch,
 
5
    call
 
6
)
2
7
 
3
8
import cinder_utils as utils
4
 
 
5
9
from test_utils import (
6
10
    CharmTestCase,
7
 
    RESTART_MAP,
 
11
    RESTART_MAP
8
12
)
9
13
 
10
14
# Need to do some early patching to get the module loaded.
31
35
    'determine_packages',
32
36
    'do_openstack_upgrade',
33
37
    'ensure_ceph_keyring',
34
 
    'ensure_ceph_pool',
35
38
    'juju_log',
36
39
    'log',
37
40
    'lsb_release',
362
365
        m = 'ceph relation incomplete. Peer not ready?'
363
366
        self.juju_log.assert_called_with(m)
364
367
 
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,
 
371
                                         mock_relation_set):
 
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',
 
379
                                                    user='cinder',
 
380
                                                    group='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)
 
390
 
 
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',
373
402
                                                    user='cinder',
374
403
                                                    group='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')
380
408
 
 
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',
 
419
                                                    user='cinder',
 
420
                                                    group='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)
 
425
 
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']
395
440
        self.service_name.return_value = 'cinder'
396
441
        self.ensure_ceph_keyring.return_value = True
397
442
        hooks.hooks.execute(['hooks/ceph-relation-changed'])
398
 
        self.assertFalse(self.ensure_ceph_pool.called)
399
443
 
400
444
 
401
445
class TestDepartedHooks(CharmTestCase):