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")
예제 #3
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
예제 #4
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)

    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")