def test_subordinate_config_context_stateless(self, mock_rel_ids, mock_rel_units, mock_rel_get): mock_rel_ids.return_value = ['storage-backend:0'] self.relation_ids.return_value = ['storage-backend:0'] mock_rel_units.return_value = ['cinder-ceph/0'] self.related_units.return_value = ['cinder-ceph/0'] self.service_name.return_value = 'cinder' settings = \ {'backend_name': 'cinder-ceph', 'private-address': '10.5.8.191', 'stateless': 'True', 'subordinate_configuration': '{"cinder": ' '{"/etc/cinder/cinder.conf": ' '{"sections": ' '{"cinder-ceph": ' '[["volume_backend_name", ' '"cinder-ceph"], ' '["volume_driver", ' '"cinder.volume.drivers.rbd.RBDDriver"], ' '["rbd_pool", ' '"cinder-ceph"], ' '["rbd_user", ' '"cinder-ceph"]]}}}}'} def fake_rel_get(attribute=None, unit=None, rid=None): return settings.get(attribute) mock_rel_get.side_effect = fake_rel_get self.relation_get.side_effect = fake_rel_get ctxt = contexts.CinderSubordinateConfigContext( interface='storage-backend', service='cinder', config_file='/etc/cinder/cinder.conf')() exp = { 'sections': { 'DEFAULT': [('host', 'cinder')], u'cinder-ceph': [[u'volume_backend_name', u'cinder-ceph'], [u'volume_driver', u'cinder.volume.drivers.rbd.RBDDriver'], [u'rbd_pool', u'cinder-ceph'], [u'rbd_user', u'cinder-ceph']] } } self.assertEqual(ctxt, exp)
# Map config files to hook contexts and services that will be associated # with file in restart_on_changes()'s service map. BASE_RESOURCE_MAP = OrderedDict([ (CINDER_CONF, { 'contexts': [ context.SharedDBContext(ssl_dir=CINDER_CONF_DIR), context.AMQPContext(ssl_dir=CINDER_CONF_DIR), context.ImageServiceContext(), context.OSConfigFlagContext(), context.SyslogContext(), cinder_contexts.CephContext(), cinder_contexts.HAProxyContext(), cinder_contexts.ImageServiceContext(), cinder_contexts.CinderSubordinateConfigContext( interface=['storage-backend', 'backup-backend'], service='cinder', config_file=CINDER_CONF), cinder_contexts.StorageBackendContext(), cinder_contexts.LoggingConfigContext(), context.IdentityServiceContext(service='cinder', service_user='******'), context.BindHostContext(), context.WorkerConfigContext(), cinder_contexts.RegionContext(), context.InternalEndpointContext(), cinder_contexts.VolumeUsageAuditContext(), context.MemcacheContext(), cinder_contexts.SectionalConfigContext(), cinder_contexts.LVMContext() ], 'services':