def test_empty(self): """ Test loading persistent and preconfigured setting when appropriate directories are empty. """ self.config.CONFIG_PATH = self.directory + "/configs/empty/etc/" self.config.PERSISTENT_PATH = self.directory + "/configs/empty/var/" mgr = SettingManager(self.config, self.timer_mgr) mgr.load() self.assertDictEqual(mgr.classes, {})
def test_full(self): """ Test loading persistent and preconfigured setting when appropriate directories are empty. """ self.config.CONFIG_PATH = self.directory + "/configs/full/etc/" self.config.PERSISTENT_PATH = self.directory + "/configs/full/var/" mgr = SettingManager(self.config, self.timer_mgr) mgr.load() # check LMI_StorageSetting class loaded OK self.assertTrue(mgr.classes.has_key("LMI_StorageSetting")) # check it has all instances settings = mgr.get_settings("LMI_StorageSetting") self.assertIn("LMI:StorageSetting:preconfigured1", settings.keys()) self.assertIn("LMI:StorageSetting:preconfigured2", settings.keys()) self.assertIn("LMI:StorageSetting:persistent1", settings.keys()) self.assertIn("LMI:StorageSetting:persistent2", settings.keys()) self.assertEqual(len(settings.keys()), 4) # check one preconfigured setting s1 = settings['LMI:StorageSetting:preconfigured1'] self.assertEqual(s1.the_id, "LMI:StorageSetting:preconfigured1") self.assertEqual(s1.type, Setting.TYPE_PRECONFIGURED) self.assertEqual(s1['first'], "1") self.assertEqual(s1['second'], "two") self.assertEqual(s1['third'], "3.0") # check one persistent setting s2 = settings['LMI:StorageSetting:persistent2'] self.assertEqual(s2.the_id, "LMI:StorageSetting:persistent2") self.assertEqual(s2.type, Setting.TYPE_PERSISTENT) self.assertEqual(s2['first'], "1000") self.assertEqual(s2['second'], "two thousand") self.assertEqual(s2['third'], "3000.0")
def get_providers(env): """ CIMOM callback. Initialize OpenLMI and return dictionary of all providers we implement. """ # allow **magic here # pylint: disable-msg=W0142 log_manager = cmpi_logging.LogManager(env) config = StorageConfiguration() config.load() log_manager.set_config(config) cmpi_logging.logger.info("Provider init.") # initialize the timer manager timer_manager = TimerManager.get_instance(env) indication_manager = IndicationManager.get_instance( env, "Storage", config.namespace) manager = ProviderManager() setting_manager = SettingManager(config, timer_manager) setting_manager.load() storage = init_anaconda(log_manager, config) job_manager = JobManager('Storage', config.namespace, indication_manager, timer_manager) providers = {} # common construction options opts = {'storage': storage, 'config': config, 'provider_manager': manager, 'setting_manager': setting_manager, 'job_manager' : job_manager} # StorageDevice providers provider = LMI_StorageExtent(**opts) manager.add_device_provider(provider) providers['LMI_StorageExtent'] = provider provider = LMI_MDRAIDStorageExtent(**opts) manager.add_device_provider(provider) providers['LMI_MDRAIDStorageExtent'] = provider setting_provider = SettingHelperProvider( setting_helper=provider, setting_classname="LMI_MDRAIDStorageSetting", **opts) manager.add_setting_provider(setting_provider) providers['LMI_MDRAIDStorageSetting'] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="LMI_MDRAIDStorageExtent", setting_data_classname="LMI_MDRAIDStorageSetting", **opts) providers['LMI_MDRAIDElementSettingData'] = assoc_provider provider = LMI_DiskPartition(**opts) manager.add_device_provider(provider) providers['LMI_DiskPartition'] = provider provider = LMI_GenericDiskPartition(**opts) manager.add_device_provider(provider) providers['LMI_GenericDiskPartition'] = provider provider = LMI_LVStorageExtent(**opts) manager.add_device_provider(provider) providers['LMI_LVStorageExtent'] = provider setting_provider = SettingHelperProvider( setting_helper=provider, setting_classname="LMI_LVStorageSetting", **opts) manager.add_setting_provider(setting_provider) providers['LMI_LVStorageSetting'] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="LMI_LVStorageExtent", setting_data_classname="LMI_LVStorageSetting", **opts) providers['LMI_LVElementSettingData'] = assoc_provider provider = LMI_VGStoragePool(**opts) manager.add_device_provider(provider) providers['LMI_VGStoragePool'] = provider setting_provider = SettingHelperProvider( setting_helper=provider, setting_classname="LMI_VGStorageSetting", **opts) manager.add_setting_provider(setting_provider) providers['LMI_VGStorageSetting'] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="LMI_VGStoragePool", setting_data_classname="LMI_VGStorageSetting", **opts) providers['LMI_VGElementSettingData'] = assoc_provider cap_provider = LMI_LVStorageCapabilities(**opts) manager.add_capabilities_provider(cap_provider) providers['LMI_LVStorageCapabilities'] = cap_provider assoc_provider = LMI_LVElementCapabilities( "LMI_LVElementCapabilities", cap_provider, provider, **opts) providers['LMI_LVElementCapabilities'] = assoc_provider # mounting provider = LMI_MountedFileSystem(**opts) providers['LMI_MountedFileSystem'] = provider setting_provider = SettingHelperProvider( setting_helper=provider, setting_classname="LMI_MountedFileSystemSetting", **opts) manager.add_setting_provider(setting_provider) providers['LMI_MountedFileSystemSetting'] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="LMI_MountedFileSystem", setting_data_classname="LMI_MountedFileSystemSetting", **opts) providers['LMI_MountedFileSystemElementSettingData'] = assoc_provider provider = LMI_HostedMount(**opts) providers['LMI_HostedMount'] = provider provider = LMI_MountPoint(**opts) providers['LMI_MountPoint'] = provider provider = LMI_AttachedFileSystem(**opts) providers['LMI_AttachedFileSystem'] = provider service_provider = LMI_MountConfigurationService(**opts) manager.add_service_provider(service_provider) providers['LMI_MountConfigurationService'] = service_provider cap_provider = LMI_MountedFileSystemCapabilities(**opts) manager.add_capabilities_provider(cap_provider) providers['LMI_MountedFileSystemCapabilities'] = cap_provider assoc_provider = ElementCapabilitiesProvider( 'LMI_MountElementCapabilities', cap_provider, service_provider, **opts) providers['LMI_MountElementCapabilities'] = assoc_provider # settings setting_provider = LMI_DiskPartitionConfigurationSetting( ** opts) manager.add_setting_provider(setting_provider) providers['LMI_DiskPartitionConfigurationSetting'] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="CIM_DiskPartition", setting_data_classname="LMI_DiskPartitionConfigurationSetting", **opts) providers['LMI_DiskPartitionElementSettingData'] = assoc_provider # services & capabilities service_provider = LMI_StorageConfigurationService(**opts) manager.add_service_provider(service_provider) providers['LMI_StorageConfigurationService'] = service_provider cap_provider = LMI_VGStorageCapabilities(**opts) manager.add_capabilities_provider(cap_provider) providers['LMI_VGStorageCapabilities'] = cap_provider assoc_provider = ElementCapabilitiesProvider( "LMI_VGElementCapabilities", cap_provider, service_provider, **opts) providers['LMI_VGElementCapabilities'] = assoc_provider cap_provider = LMI_MDRAIDStorageCapabilities(**opts) manager.add_capabilities_provider(cap_provider) providers['LMI_MDRAIDStorageCapabilities'] = cap_provider assoc_provider = ElementCapabilitiesProvider( "LMI_MDRAIDElementCapabilities", cap_provider, service_provider, **opts) providers['LMI_MDRAIDElementCapabilities'] = assoc_provider service_provider = LMI_DiskPartitionConfigurationService( ** opts) manager.add_service_provider(service_provider) providers['LMI_DiskPartitionConfigurationService'] = service_provider cap_provider = LMI_DiskPartitionConfigurationCapabilities( ** opts) manager.add_capabilities_provider(cap_provider) providers['LMI_DiskPartitionConfigurationCapabilities'] = cap_provider assoc_provider = ElementCapabilitiesProvider( "LMI_DiskPartitionElementCapabilities", cap_provider, service_provider, **opts) providers['LMI_DiskPartitionElementCapabilities'] = assoc_provider # Associations provider = LMI_PartitionBasedOn(**opts) providers['LMI_PartitionBasedOn'] = provider provider = LMI_MDRAIDBasedOn(**opts) providers['LMI_MDRAIDBasedOn'] = provider provider = LMI_LVBasedOn(**opts) providers['LMI_LVBasedOn'] = provider provider = LMI_LVAllocatedFromStoragePool(**opts) providers['LMI_LVAllocatedFromStoragePool'] = provider provider = LMI_VGAssociatedComponentExtent(**opts) providers['LMI_VGAssociatedComponentExtent'] = provider provider = LMI_HostedStorageService(**opts) providers['LMI_HostedStorageService'] = provider provider = LMI_SystemStorageDevice(**opts) providers['LMI_SystemStorageDevice'] = provider provider = LMI_InstalledPartitionTable(**opts) providers['LMI_InstalledPartitionTable'] = provider fmt = LMI_DataFormatProvider(**opts) manager.add_format_provider(fmt) providers['LMI_DataFormat'] = fmt fmt = LMI_MDRAIDFormatProvider(**opts) manager.add_format_provider(fmt) providers['LMI_MDRAIDFormat'] = fmt fmt = LMI_PVFormatProvider(**opts) manager.add_format_provider(fmt) providers['LMI_PVFormat'] = fmt fmt = LMI_LocalFileSystem(**opts) manager.add_format_provider(fmt) providers['LMI_LocalFileSystem'] = fmt setting_provider = SettingHelperProvider( setting_helper=fmt, setting_classname="LMI_FileSystemSetting", **opts) manager.add_setting_provider(setting_provider) providers['LMI_FileSystemSetting'] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="LMI_LocalFileSystem", setting_data_classname="LMI_FileSystemSetting", **opts) providers['LMI_FileSystemElementSettingData'] = assoc_provider service_provider = LMI_FileSystemConfigurationService(**opts) manager.add_service_provider(service_provider) providers['LMI_FileSystemConfigurationService'] = service_provider cap_provider = LMI_FileSystemConfigurationCapabilities( ** opts) manager.add_capabilities_provider(cap_provider) providers['LMI_FileSystemConfigurationCapabilities'] = cap_provider assoc_provider = ElementCapabilitiesProvider( "LMI_FileSystemConfigurationElementCapabilities", cap_provider, service_provider, **opts) providers['LMI_FileSystemConfigurationElementCapabilities'] = assoc_provider provider = LMI_ResidesOnExtent(**opts) providers['LMI_ResidesOnExtent'] = provider job_providers = job_manager.get_providers() providers.update(job_providers) provider = LMI_HostedFileSystem(**opts) providers['LMI_HostedFileSystem'] = provider cmpi_logging.logger.trace_info("Registered providers: %s" % (str(providers))) return providers
def get_providers(env): """ CIMOM callback. Initialize OpenLMI and return dictionary of all providers we implement. """ # allow **magic here # pylint: disable-msg=W0142 log_manager = cmpi_logging.LogManager(env) config = StorageConfiguration() config.load() log_manager.set_config(config) global indication_manager indication_manager = IndicationManager(env, "Storage", config.namespace) manager = ProviderManager() setting_manager = SettingManager(config) setting_manager.load() storage = init_anaconda(log_manager, config) providers = {} job_manager = JobManager("Storage", config.namespace, indication_manager) # common construction options opts = { "storage": storage, "config": config, "provider_manager": manager, "setting_manager": setting_manager, "job_manager": job_manager, } # StorageDevice providers provider = LMI_StorageExtent(**opts) manager.add_device_provider(provider) providers["LMI_StorageExtent"] = provider provider = LMI_MDRAIDStorageExtent(**opts) manager.add_device_provider(provider) providers["LMI_MDRAIDStorageExtent"] = provider setting_provider = SettingHelperProvider( setting_helper=provider, setting_classname="LMI_MDRAIDStorageSetting", **opts ) manager.add_setting_provider(setting_provider) providers["LMI_MDRAIDStorageSetting"] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="LMI_MDRAIDStorageExtent", setting_data_classname="LMI_MDRAIDStorageSetting", **opts ) providers["LMI_MDRAIDElementSettingData"] = assoc_provider provider = LMI_DiskPartition(**opts) manager.add_device_provider(provider) providers["LMI_DiskPartition"] = provider provider = LMI_GenericDiskPartition(**opts) manager.add_device_provider(provider) providers["LMI_GenericDiskPartition"] = provider provider = LMI_LVStorageExtent(**opts) manager.add_device_provider(provider) providers["LMI_LVStorageExtent"] = provider setting_provider = SettingHelperProvider(setting_helper=provider, setting_classname="LMI_LVStorageSetting", **opts) manager.add_setting_provider(setting_provider) providers["LMI_LVStorageSetting"] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="LMI_LVStorageExtent", setting_data_classname="LMI_LVStorageSetting", **opts ) providers["LMI_LVElementSettingData"] = assoc_provider provider = LMI_VGStoragePool(**opts) manager.add_device_provider(provider) providers["LMI_VGStoragePool"] = provider setting_provider = SettingHelperProvider(setting_helper=provider, setting_classname="LMI_VGStorageSetting", **opts) manager.add_setting_provider(setting_provider) providers["LMI_VGStorageSetting"] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="LMI_VGStoragePool", setting_data_classname="LMI_VGStorageSetting", **opts ) providers["LMI_VGElementSettingData"] = assoc_provider cap_provider = LMI_LVStorageCapabilities(**opts) manager.add_capabilities_provider(cap_provider) providers["LMI_LVStorageCapabilities"] = cap_provider assoc_provider = LMI_LVElementCapabilities("LMI_LVElementCapabilities", cap_provider, provider, **opts) providers["LMI_LVElementCapabilities"] = assoc_provider # settings setting_provider = LMI_DiskPartitionConfigurationSetting(**opts) manager.add_setting_provider(setting_provider) providers["LMI_DiskPartitionConfigurationSetting"] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="CIM_DiskPartition", setting_data_classname="LMI_DiskPartitionConfigurationSetting", **opts ) providers["LMI_DiskPartitionElementSettingData"] = assoc_provider # services & capabilities service_provider = LMI_StorageConfigurationService(**opts) manager.add_service_provider(service_provider) providers["LMI_StorageConfigurationService"] = service_provider cap_provider = LMI_VGStorageCapabilities(**opts) manager.add_capabilities_provider(cap_provider) providers["LMI_VGStorageCapabilities"] = cap_provider assoc_provider = ElementCapabilitiesProvider("LMI_VGElementCapabilities", cap_provider, service_provider, **opts) providers["LMI_VGElementCapabilities"] = assoc_provider cap_provider = LMI_MDRAIDStorageCapabilities(**opts) manager.add_capabilities_provider(cap_provider) providers["LMI_MDRAIDStorageCapabilities"] = cap_provider assoc_provider = ElementCapabilitiesProvider( "LMI_MDRAIDElementCapabilities", cap_provider, service_provider, **opts ) providers["LMI_MDRAIDElementCapabilities"] = assoc_provider service_provider = LMI_DiskPartitionConfigurationService(**opts) manager.add_service_provider(service_provider) providers["LMI_DiskPartitionConfigurationService"] = service_provider cap_provider = LMI_DiskPartitionConfigurationCapabilities(**opts) manager.add_capabilities_provider(cap_provider) providers["LMI_DiskPartitionConfigurationCapabilities"] = cap_provider assoc_provider = ElementCapabilitiesProvider( "LMI_DiskPartitionElementCapabilities", cap_provider, service_provider, **opts ) providers["LMI_DiskPartitionElementCapabilities"] = assoc_provider # Associations provider = LMI_PartitionBasedOn(**opts) providers["LMI_PartitionBasedOn"] = provider provider = LMI_MDRAIDBasedOn(**opts) providers["LMI_MDRAIDBasedOn"] = provider provider = LMI_LVBasedOn(**opts) providers["LMI_LVBasedOn"] = provider provider = LMI_LVAllocatedFromStoragePool(**opts) providers["LMI_LVAllocatedFromStoragePool"] = provider provider = LMI_VGAssociatedComponentExtent(**opts) providers["LMI_VGAssociatedComponentExtent"] = provider provider = LMI_HostedStorageService(**opts) providers["LMI_HostedStorageService"] = provider provider = LMI_SystemStorageDevice(**opts) providers["LMI_SystemStorageDevice"] = provider provider = LMI_InstalledPartitionTable(**opts) providers["LMI_InstalledPartitionTable"] = provider fmt = LMI_DataFormatProvider(**opts) manager.add_format_provider(fmt) providers["LMI_DataFormat"] = fmt fmt = LMI_MDRAIDFormatProvider(**opts) manager.add_format_provider(fmt) providers["LMI_MDRAIDFormat"] = fmt fmt = LMI_PVFormatProvider(**opts) manager.add_format_provider(fmt) providers["LMI_PVFormat"] = fmt fmt = LMI_LocalFileSystem(**opts) manager.add_format_provider(fmt) providers["LMI_LocalFileSystem"] = fmt setting_provider = SettingHelperProvider(setting_helper=fmt, setting_classname="LMI_FileSystemSetting", **opts) manager.add_setting_provider(setting_provider) providers["LMI_FileSystemSetting"] = setting_provider assoc_provider = ElementSettingDataProvider( setting_provider=setting_provider, managed_element_classname="LMI_LocalFileSystem", setting_data_classname="LMI_FileSystemSetting", **opts ) providers["LMI_FileSystemElementSettingData"] = assoc_provider service_provider = LMI_FileSystemConfigurationService(**opts) manager.add_service_provider(service_provider) providers["LMI_FileSystemConfigurationService"] = service_provider cap_provider = LMI_FileSystemConfigurationCapabilities(**opts) manager.add_capabilities_provider(cap_provider) providers["LMI_FileSystemConfigurationCapabilities"] = cap_provider assoc_provider = ElementCapabilitiesProvider( "LMI_FileSystemConfigurationElementCapabilities", cap_provider, service_provider, **opts ) providers["LMI_FileSystemConfigurationElementCapabilities"] = assoc_provider provider = LMI_ResidesOnExtent(**opts) providers["LMI_ResidesOnExtent"] = provider job_providers = job_manager.get_providers() providers.update(job_providers) print "providers:", providers return providers
def test_expire(self): """ Test that transient setting expires. """ # hack shorter timeout old_timeout = Setting.TRAINSIENT_SETTING_LIFETIME Setting.TRAINSIENT_SETTING_LIFETIME = 3 self.config.CONFIG_PATH = self.directory + "/configs/none/etc/" self.config.PERSISTENT_PATH = self.directory + "/configs/none/var/" try: mgr = SettingManager(self.config, self.timer_mgr) # add one transient setting s = Setting(mgr, 'LMI_StorageSetting', Setting.TYPE_TRANSIENT, "LMI:StorageSetting:transient1") s['first'] = "111" s['second'] = "two two two" s['third'] = "333.0" mgr.set_setting("LMI_StorageSetting", s) # add one preconfigured setting (this should not happen in reality, # but let's test it). s = Setting(mgr, 'LMI_StorageSetting', Setting.TYPE_PRECONFIGURED, "LMI:StorageSetting:preconfigured3") s['first'] = "1111" s['second'] = "two two two two" s['third'] = "3333.0" mgr.set_setting("LMI_StorageSetting", s) # add one persistent setting s = Setting(mgr, 'LMI_StorageSetting', Setting.TYPE_PERSISTENT, "LMI:StorageSetting:persistent3") s['first'] = "11" s['second'] = "two two" s['third'] = "33.0" mgr.set_setting("LMI_StorageSetting", s) time.sleep(4) settings = mgr.get_settings("LMI_StorageSetting") self.assertIn('LMI:StorageSetting:persistent3', settings.keys()) self.assertIn('LMI:StorageSetting:preconfigured3', settings.keys()) self.assertNotIn( 'LMI:StorageSetting:transient1', settings.keys()) # change the persistent to transient -> must be deleted setting = settings['LMI:StorageSetting:persistent3'] setting.type = Setting.TYPE_TRANSIENT mgr.set_setting('LMI_StorageSetting', setting) # add transient s = Setting(mgr, 'LMI_StorageSetting', Setting.TYPE_TRANSIENT, "LMI:StorageSetting:transient4") s['first'] = "111" s['second'] = "two two two" s['third'] = "333.0" mgr.set_setting("LMI_StorageSetting", s) # and change it to persistent -> must not be deleted s.type = Setting.TYPE_PERSISTENT mgr.set_setting("LMI_StorageSetting", s) time.sleep(4) settings = mgr.get_settings("LMI_StorageSetting") self.assertNotIn('LMI:StorageSetting:persistent3', settings.keys()) self.assertIn('LMI:StorageSetting:preconfigured3', settings.keys()) self.assertIn('LMI:StorageSetting:transient4', settings.keys()) setting = settings['LMI:StorageSetting:transient4'] mgr.delete_setting('LMI_StorageSetting', setting) finally: Setting.TRAINSIENT_SETTING_LIFETIME = old_timeout
def test_save_load(self): """ Test saving a persistent settings and loading them back.""" # load the 'full' settings self.config.CONFIG_PATH = self.directory + "/configs/full/etc/" self.config.PERSISTENT_PATH = self.directory + "/configs/full/var/" mgr = SettingManager(self.config, self.timer_mgr) mgr.load() # dirty hack to save it to different directory... self.config.PERSISTENT_PATH = self.directory + "/configs/save_load/var/" # add one transient setting s = Setting(mgr, 'LMI_StorageSetting', Setting.TYPE_TRANSIENT, "LMI:StorageSetting:transient1") s['first'] = "111" s['second'] = "two two two" s['third'] = "333.0" mgr.set_setting("LMI_StorageSetting", s) # add one preconfigured setting (this should not happen in reality, # but let's test it). s = Setting(mgr, 'LMI_StorageSetting', Setting.TYPE_PRECONFIGURED, "LMI:StorageSetting:preconfigured3") s['first'] = "1111" s['second'] = "two two two two" s['third'] = "3333.0" mgr.set_setting("LMI_StorageSetting", s) # add one persistent setting s = Setting(mgr, 'LMI_StorageSetting', Setting.TYPE_PERSISTENT, "LMI:StorageSetting:persistent3") s['first'] = "11" s['second'] = "two two" s['third'] = "33.0" mgr.set_setting("LMI_StorageSetting", s) # the persistent setting should be saved # try to reload the cofig - it should remove the preconfigured one mgr.load() # check it has all instances and that the preconfigured is gone settings = mgr.get_settings("LMI_StorageSetting") self.assertIn("LMI:StorageSetting:preconfigured1", settings.keys()) self.assertIn("LMI:StorageSetting:preconfigured2", settings.keys()) self.assertIn("LMI:StorageSetting:persistent1", settings.keys()) self.assertIn("LMI:StorageSetting:persistent2", settings.keys()) self.assertIn("LMI:StorageSetting:persistent3", settings.keys()) self.assertIn("LMI:StorageSetting:transient1", settings.keys()) self.assertEqual(len(settings.keys()), 6) # check the transient is ok s1 = settings['LMI:StorageSetting:transient1'] self.assertEqual(s1.the_id, "LMI:StorageSetting:transient1") self.assertEqual(s1.type, Setting.TYPE_TRANSIENT) self.assertEqual(s1['first'], "111") self.assertEqual(s1['second'], "two two two") self.assertEqual(s1['third'], "333.0") # check the persistent is there s2 = settings['LMI:StorageSetting:persistent3'] self.assertEqual(s2.the_id, "LMI:StorageSetting:persistent3") self.assertEqual(s2.type, Setting.TYPE_PERSISTENT) self.assertEqual(s2['first'], "11") self.assertEqual(s2['second'], "two two") self.assertEqual(s2['third'], "33.0") # remove one persistent, it should be saved imediatelly mgr.delete_setting('LMI_StorageSetting', s2) # check it is really removed mgr = SettingManager(self.config, self.timer_mgr) mgr.load() settings = mgr.get_settings("LMI_StorageSetting") self.assertNotIn("LMI:StorageSetting:persistent3", settings.keys()) # change one persistent, it should be saved imediatelly s3 = settings['LMI:StorageSetting:persistent2'] s3['first'] = "-1" s3['second'] = "minus one" s3['third'] = "-3.0" mgr.set_setting('LMI_StorageSetting', s3) # check it is really removed mgr = SettingManager(self.config, self.timer_mgr) mgr.load() settings = mgr.get_settings("LMI_StorageSetting") s3 = settings['LMI:StorageSetting:persistent2'] self.assertEqual(s3.the_id, "LMI:StorageSetting:persistent2") self.assertEqual(s3.type, Setting.TYPE_PERSISTENT) self.assertEqual(s3['first'], "-1") self.assertEqual(s3['second'], "minus one") self.assertEqual(s3['third'], "-3.0")