}
-MetaSnappers meta_snappers;
+void
+MetaSnappers::createConfig(const string& config_name, const string& subvolume,
+ const string& fstype, const string& template_name)
+{
+ // TODO checks
+
+ Snapper::createConfig(config_name, subvolume, fstype, template_name);
+
+ ConfigInfo config_info = Snapper::getConfig(config_name);
+ MetaSnapper meta_snapper(config_info);
+ entries.push_back(meta_snapper);
+}
+
+void
+MetaSnappers::deleteConfig(const string& config_name)
+{
+ iterator it = find(config_name);
+ if (it == end())
+ throw;
+
+ Snapper::deleteConfig(config_name);
+
+ entries.erase(it);
+}
iterator find(const string& config_name);
+ void createConfig(const string& config_name, const string& subvolume, const string& fstype,
+ const string& template_name);
+ void deleteConfig(const string& config_name);
+
private:
list<MetaSnapper> entries;
};
-extern MetaSnappers meta_snappers;
-
-
#endif
Clients clients;
-
+MetaSnappers meta_snappers;
boost::shared_mutex big_mutex;
check_permission(conn, msg);
- Snapper::createConfig(config_name, subvolume, fstype, template_name);
-
- // TODO update meta_snappers
+ meta_snappers.createConfig(config_name, subvolume, fstype, template_name);
DBus::MessageMethodReturn reply(msg);
check_permission(conn, msg);
- Snapper::deleteConfig(config_name);
-
- // TODO update meta_snappers
+ meta_snappers.deleteConfig(config_name);
DBus::MessageMethodReturn reply(msg);
}
+ ConfigInfo
+ Snapper::getConfig(const string& config_name)
+ {
+ SysconfigFile config(CONFIGSDIR "/" + config_name);
+
+ string subvolume = "/";
+ config.getValue("SUBVOLUME", subvolume);
+
+ map<string, string> raw = config.getAllValues();
+
+ return ConfigInfo(config_name, subvolume, raw);
+ }
+
+
list<ConfigInfo>
Snapper::getConfigs()
{
{
try
{
- SysconfigFile config(CONFIGSDIR "/" + *it);
-
- string subvolume = "/";
- config.getValue("SUBVOLUME", subvolume);
-
- map<string, string> raw = config.getAllValues();
-
- config_infos.push_back(ConfigInfo(*it, subvolume, raw));
+ config_infos.push_back(getConfig(*it));
}
catch (const FileNotFoundException& e)
{
const vector<string>& getIgnorePatterns() const { return ignore_patterns; }
+ static ConfigInfo getConfig(const string& config_name);
static list<ConfigInfo> getConfigs();
static void createConfig(const string& config_name, const string& subvolume,
const string& fstype, const string& template_name);