CVSROOT:        /cvs/cluster
Module name:    conga
Changes by:     [EMAIL PROTECTED]       2007-09-11 13:53:19

Modified files:
        ricci/modules/service: ServiceManager.cpp ServiceManager.h 
                               ServiceModule.cpp ServiceModule.h 
                               main.cpp 

Log message:
        - Detect FC6 and F7 as supporting RHEL5 clusters.
        - Default to RHEL5 cluster type if an unknown release name appears in 
/etc/redhat-release.
        - Cleanup

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/service/ServiceManager.cpp.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/service/ServiceManager.h.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/service/ServiceModule.cpp.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/service/ServiceModule.h.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/service/main.cpp.diff?cvsroot=cluster&r1=1.5&r2=1.6

--- conga/ricci/modules/service/ServiceManager.cpp      2007/09/11 02:45:28     
1.12
+++ conga/ricci/modules/service/ServiceManager.cpp      2007/09/11 13:53:19     
1.13
@@ -1,5 +1,5 @@
 /*
-  Copyright Red Hat, Inc. 2006
+  Copyright Red Hat, Inc. 2006-2007
 
   This program is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by the
@@ -27,714 +27,817 @@
 
 #include <vector>
 
-
 using namespace std;
 
+#define CHKCONFIG_PATH         "/sbin/chkconfig"
+#define SERVICE_PATH           "/sbin/service"
 
-#define CHKCONFIG_PATH      "/sbin/chkconfig"
-#define SERVICE_PATH        "/sbin/service"
-
-#define INITD_DIR_PATH      "/etc/init.d/"
-
-#define DESC_SIG            String("# description:")
-
-
-static bool
-RHEL4=false, RHEL5=false, FC5=false, FC6=false;
-static void
-set_release();
-
+#define INITD_DIR_PATH         "/etc/init.d/"
 
+#define DESC_SIG                       String("# description:")
 
+static bool RHEL4=false, RHEL5=false, FC5=false, FC6=false;
+static void set_release();
 
 Service::Service()
 {
-  set_release();
+       set_release();
 }
 
 Service::Service(const String& name, bool enabled) :
-  _name(counting_auto_ptr<String>(new String(name))),
-  _enabled(counting_auto_ptr<bool>(new bool(enabled)))
+       _name(counting_auto_ptr<String>(new String(name))),
+       _enabled(counting_auto_ptr<bool>(new bool(enabled)))
 {
-  set_release();
-  if (_name->empty())
-    throw String("noname service???");
+       set_release();
+       if (_name->empty())
+               throw String("no service name given");
 }
 
 Service::~Service()
 {}
 
-
 XMLObject
 Service::xml(bool descr) const
 {
-  if (!_name.get())
-    throw String("internal: service not initialized");
+       if (!_name.get())
+               throw String("internal: service not initialized");
+
+       XMLObject xml("service");
+       xml.set_attr("name", name());
+       xml.set_attr("enabled", enabled() ? "true" : "false");
+       xml.set_attr("running", running() ? "true" : "false");
+       xml.set_attr("description", descr ? description() : "");
 
-  XMLObject xml("service");
-  xml.set_attr("name", name());
-  xml.set_attr("enabled", enabled()?"true":"false");
-  xml.set_attr("running", running()?"true":"false");
-  xml.set_attr("description", descr?description():"");
-  return xml;
+       return xml;
 }
 
 String
 Service::name() const
 {
-  if (!_name.get())
-    throw String("internal: service not initialized");
-  return *_name;
+       if (!_name.get())
+               throw String("internal: service not initialized");
+       return *_name;
 }
 
 bool
 Service::enabled() const
 {
-  if (!_enabled.get())
-    throw String("internal: service not initialized");
-  return *_enabled;
+       if (!_enabled.get())
+               throw String("internal: service not initialized");
+       return *_enabled;
 }
 
 bool
 Service::running() const
 {
-  if (!_running.get())
-    _running = counting_auto_ptr<bool>(new bool(service_running(name())));
-  return *_running;
+       if (!_running.get())
+               _running = counting_auto_ptr<bool>(new 
bool(service_running(name())));
+       return *_running;
 }
 
 String
 Service::description() const
 {
-  if (!_descr.get()) {
-    String path(INITD_DIR_PATH);
-    path += name();
-
-    String initd(File::open(path));
-
-    list<String> desc_lines;
-
-    vector<String> lines = utils::split(initd, "\n");
-    for (vector<String>::const_iterator iter = lines.begin();
-        iter != lines.end();
-        iter++) {
-      String line(utils::strip(*iter));
-      if (line.empty())
-       continue;
-      if (line.find(DESC_SIG) != 0)
-       continue;
-      desc_lines.push_back(line);
-      while (desc_lines.back()[desc_lines.back().size()-1] == '\\' &&
-            ++iter != lines.end())
-       if (iter->size())
-         desc_lines.push_back(*iter);
-       else
-         break;
-      break;
-    }
-
-    String desc;
-    for (list<String>::const_iterator l_iter = desc_lines.begin();
-        l_iter != desc_lines.end();
-        l_iter++) {
-      String s = utils::rstrip(*l_iter, "\\");
-      s = utils::lstrip(s, DESC_SIG);
-      s = utils::lstrip(s, "#");
-      s = utils::lstrip(s);
-      desc += s;
-    }
+       if (!_descr.get()) {
+               String path(INITD_DIR_PATH);
+               path += name();
+
+               String initd(File::open(path));
+
+               list<String> desc_lines;
+
+               vector<String> lines = utils::split(initd, "\n");
+               for (vector<String>::const_iterator
+                               iter = lines.begin() ;
+                               iter != lines.end() ;
+                               iter++)
+               {
+                       String line(utils::strip(*iter));
+                       if (line.empty())
+                               continue;
+                       if (line.find(DESC_SIG) != 0)
+                               continue;
+
+                       desc_lines.push_back(line);
+                       while (desc_lines.back()[desc_lines.back().size() - 1] 
== '\\' && ++iter != lines.end())
+                       {
+                               if (iter->size())
+                                       desc_lines.push_back(*iter);
+                               else
+                                       break;
+                       }
+
+                       break;
+               }
+
+               String desc;
+               for (list<String>::const_iterator
+                               l_iter = desc_lines.begin() ;
+                               l_iter != desc_lines.end() ;
+                               l_iter++)
+               {
+                       String s = utils::rstrip(*l_iter, "\\");
+                       s = utils::lstrip(s, DESC_SIG);
+                       s = utils::lstrip(s, "#");
+                       s = utils::lstrip(s);
+                       desc += s;
+               }
 
-    _descr = counting_auto_ptr<String>(new String(desc));
-  }
+               _descr = counting_auto_ptr<String>(new String(desc));
+       }
 
-  return *_descr;
+       return *_descr;
 }
 
 void
 Service::enable()
 {
-  if (!enabled()) {
-    enable_service(name(), true);
-    *_enabled = true;
-  }
+       if (!enabled()) {
+               enable_service(name(), true);
+               *_enabled = true;
+       }
 }
 
 void
 Service::disable()
 {
-  if (enabled()) {
-    enable_service(name(), false);
-    *_enabled = false;
-  }
+       if (enabled()) {
+               enable_service(name(), false);
+               *_enabled = false;
+       }
 }
 
 void
 Service::start()
 {
-  running();
-  run_service(name(), START);
-  *_running = true;
+       running();
+       run_service(name(), START);
+       *_running = true;
 }
 
 void
 Service::restart()
 {
-  running();
-  run_service(name(), RESTART);
-  *_running = true;
+       running();
+       run_service(name(), RESTART);
+       *_running = true;
 }
 
 void
 Service::stop()
 {
-  running();
-  run_service(name(), STOP);
-  *_running = false;
+       running();
+       run_service(name(), STOP);
+       *_running = false;
 }
 
 void
 Service::enable_service(const String& name, bool on)
 {
-  String out, err;
-  int status;
-  vector<String> args;
-  args.push_back(name);
-  if (on)
-    args.push_back("on");
-  else
-    args.push_back("off");
-  if (utils::execute(CHKCONFIG_PATH, args, out, err, status, false))
-    throw command_not_found_error_msg(CHKCONFIG_PATH);
-  if (status != 0)
-    throw String("chkconfig failed for service ") + name;
+       String out, err;
+       int status;
+       vector<String> args;
+
+       args.push_back(name);
+
+       if (on)
+               args.push_back("on");
+       else
+               args.push_back("off");
+
+       if (utils::execute(CHKCONFIG_PATH, args, out, err, status, false))
+               throw command_not_found_error_msg(CHKCONFIG_PATH);
+       if (status != 0)
+               throw String("chkconfig failed for service ") + name + ": " + 
err;
 }
 
 bool
 Service::service_running(const String& name)
 {
-  String path(INITD_DIR_PATH);
-  path += name;
+       String path(INITD_DIR_PATH);
+       path += name;
 
-  String out, err;
-  int status;
-  vector<String> args;
-  args.push_back("status");
-  if (utils::execute(path, args, out, err, status, false) != 0)
-    throw command_not_found_error_msg(path);
-  return status == 0;
+       String out, err;
+       int status;
+       vector<String> args;
+
+       args.push_back("status");
+       if (utils::execute(path, args, out, err, status, false) != 0)
+               throw command_not_found_error_msg(path);
+       return status == 0;
 }
 
 void
 Service::run_service(const String& name, ActionState state)
 {
-  String path(INITD_DIR_PATH);
-  path += name;
+       String path(INITD_DIR_PATH);
+       path += name;
 
-  String out, err;
-  int status;
-  vector<String> args;
-  switch (state) {
-    case START:
-      args.push_back("start");
-      break;
-    case STOP:
-      args.push_back("stop");
-      break;
-    case RESTART:
-      args.push_back("restart");
-      break;
-  }
-  if (utils::execute(path, args, out, err, status, false) != 0)
-    throw command_not_found_error_msg(path);
-  if (status) {
-    bool running = service_running(name);
-    if (state == START || state == RESTART) {
-      if (!running)
-       throw String("service ") + name + " " + String(state == START ? "start" 
: "restart") + " failed";
-    } else {
-      if (running)
-       throw String("service ") + name + " stop failed";
-    }
-  }
+       String out, err;
+       int status;
+       vector<String> args;
+
+       switch (state) {
+               case START:
+                       args.push_back("start");
+                       break;
+
+               case STOP:
+                       args.push_back("stop");
+                       break;
+
+               case RESTART:
+                       args.push_back("restart");
+                       break;
+       }
+
+       if (utils::execute(path, args, out, err, status, false) != 0)
+               throw command_not_found_error_msg(path);
+
+       if (status) {
+               bool running = service_running(name);
+               if (state == START || state == RESTART) {
+                       if (!running) {
+                               throw String("service ") + name + " "
+                                               + String(state == START ? 
"start" : "restart")
+                                               + " failed: " + err;
+                       }
+               } else {
+                       if (running)
+                               throw String("service ") + name + " stop 
failed: " + err;
+               }
+       }
 }
 
-
-
-
-
-
-
-
-
 ServiceSet::ServiceSet()
 {
-  set_release();
+       set_release();
 }
 
-ServiceSet::ServiceSet(const String& name,
-                      const String& description) :
-  _name(counting_auto_ptr<String>(new String(name))),
-  _descr(counting_auto_ptr<String>(new String(description)))
+ServiceSet::ServiceSet(const String& name, const String& description) :
+       _name(counting_auto_ptr<String>(new String(name))),
+       _descr(counting_auto_ptr<String>(new String(description)))
 {
-  set_release();
-  if (_name->empty())
-    throw String("noname ServiceSet???");
+       set_release();
+
+       if (_name->empty())
+               throw String("no ServiceSet name");
 }
 
 ServiceSet::~ServiceSet()
 {}
 
-
 XMLObject
 ServiceSet::xml(bool descr) const
 {
-  XMLObject xml("set");
-  xml.set_attr("name", name());
-  xml.set_attr("enabled", enabled()?"true":"false");
-  xml.set_attr("running", running()?"true":"false");
-  xml.set_attr("description", descr?description():"");
-  return xml;
+       XMLObject xml("set");
+       xml.set_attr("name", name());
+       xml.set_attr("enabled", enabled() ? "true" : "false");
+       xml.set_attr("running", running() ? "true" : "false");
+       xml.set_attr("description", descr ? description() : "");
+       return xml;
 }
 
 String
 ServiceSet::name() const
 {
-  if (!_name.get() || servs.empty())
-    throw String("internal: ServiceSet not initialized");
-  return *_name;
+       if (!_name.get() || servs.empty())
+               throw String("internal: ServiceSet not initialized");
+       return *_name;
 }
 
 bool
 ServiceSet::enabled() const
 {
-  name();
-  for (list<Service>::const_iterator iter = servs.begin();
-       iter != servs.end();
-       iter++)
-    if (!iter->enabled())
-      return false;
-  return true;
+       name();
+
+       for (list<Service>::const_iterator
+               iter = servs.begin() ;
+               iter != servs.end() ;
+               iter++)
+       {
+               if (!iter->enabled())
+                       return false;
+       }
+
+       return true;
 }
 
 bool
 ServiceSet::running() const
 {
-  name();
-  for (list<Service>::const_iterator iter = servs.begin();
-       iter != servs.end();
-       iter++)
-    if (!iter->running())
-      return false;
-  return true;
+       name();
+
+       for (list<Service>::const_iterator
+                       iter = servs.begin() ;
+                       iter != servs.end() ;
+                       iter++)
+       {
+               if (!iter->running())
+                       return false;
+       }
+       
+       return true;
 }
 
 String
 ServiceSet::description() const
 {
-  name();
-  return *_descr;
+       name();
+       return *_descr;
 }
 
 void
 ServiceSet::enable()
 {
-  name();
-  try {
-    for (list<Service>::iterator iter = servs.begin();
-        iter != servs.end();
-        iter++)
-      iter->enable();
-  } catch (String e) {
-    throw String("service set '") + name() + "' failed to enable";
-  }
+       name();
+
+       try {
+               for (list<Service>::iterator
+                               iter = servs.begin() ;
+                               iter != servs.end() ;
+                               iter++)
+               {
+                       iter->enable();
+               }
+       } catch (String e) {
+               throw String("service set '") + name() + "' failed to enable: " 
+ e;
+       }
 }
 
 void
 ServiceSet::disable()
 {
-  name();
-  try {
-    for (list<Service>::iterator iter = servs.begin();
-        iter != servs.end();
-        iter++)
-      iter->disable();
-  } catch (String e) {
-    throw String("service set '") + name() + "' failed to disable";
-  }
+       name();
+
+       try {
+               for (list<Service>::iterator
+                               iter = servs.begin() ;
+                               iter != servs.end() ;
+                               iter++)
+               {
+                       iter->disable();
+               }
+       } catch (String e) {
+               throw String("service set '") + name() + "' failed to disable: 
" + e;
+       }
 }
 
 void
 ServiceSet::start()
 {
-  name();
-  try {
-    for (list<Service>::iterator iter = servs.begin();
-        iter != servs.end();
-        iter++)
-      iter->start();
-  } catch (String e) {
-    throw String("service set '") + name() + "' failed to start";
-  }
+       name();
+
+       try {
+               for (list<Service>::iterator
+                               iter = servs.begin() ;
+                               iter != servs.end() ;
+                               iter++)
+               {
+                       iter->start();
+               }
+       } catch (String e) {
+               throw String("service set '") + name() + "' failed to start: " 
+ e;
+       }
 }
 
 void
 ServiceSet::restart()
 {
-  name();
-  try {
-    // ordered sequence: last started, first to be stoped
-    stop();
-    start();
-  } catch (String e) {
-    throw String("service set '") + name() + "' failed to restart";
-  }
+       name();
+
+       try {
+               // ordered sequence: last started, first to be stoped
+               stop();
+               start();
+       } catch (String e) {
+               throw String("service set '") + name() + "' failed to restart: 
" + e;
+       }
 }
 
 void
 ServiceSet::stop()
 {
-  name();
-  try {
-    for (list<Service>::reverse_iterator iter = servs.rbegin();
-        iter != servs.rend();
-        iter++)
-      iter->stop();
-  } catch (String e) {
-    throw String("service set '") + name() + "' failed to stop";
-  }
-}
-
-
-
+       name();
 
+       try {
+               for (list<Service>::reverse_iterator
+                               iter = servs.rbegin() ;
+                               iter != servs.rend() ;
+                               iter++)
+               {
+                       iter->stop();
+               }
+       } catch (String e) {
+               throw String("service set '") + name() + "' failed to stop: " + 
e;
+       }
+}
 
 ServiceManager::ServiceManager()
 {
-  set_release();
+       set_release();
 
-  String out, err;
-  int status;
-  vector<String> args;
-  args.push_back("--list");
-  if (utils::execute(CHKCONFIG_PATH, args, out, err, status, true))
-    throw command_not_found_error_msg(CHKCONFIG_PATH);
-  if (status)
-    throw String("chkconfig failed");
-  vector<String> lines = utils::split(out, "\n");
-  for (vector<String>::const_iterator iter = lines.begin();
-       iter != lines.end();
-       iter++) {
-    vector<String> words = utils::split(utils::strip(*iter));
-    if (words.size() != 8)
-      continue;
-    String name = words[0];
-    bool enabled = false;
-    for (vector<String>::size_type i=2;
-        i < words.size() - 1;
-        i++)
-      if (words[i].find("on") != String::npos)
-       enabled = true;
-    _servs[name] = Service(name, enabled);
-  }
+       String out, err;
+       int status;
+       vector<String> args;
+
+       args.push_back("--list");
+       if (utils::execute(CHKCONFIG_PATH, args, out, err, status, true))
+               throw command_not_found_error_msg(CHKCONFIG_PATH);
+       if (status)
+               throw String("chkconfig failed: " + err);
+
+       vector<String> lines = utils::split(out, "\n");
+       for (vector<String>::const_iterator
+                       iter = lines.begin() ;
+                       iter != lines.end() ;
+                       iter++)
+       {
+               vector<String> words = utils::split(utils::strip(*iter));
+               if (words.size() != 8)
+                       continue;
+
+               String name = words[0];
+               bool enabled = false;
+               for (vector<String>::size_type i = 2; i < words.size() - 1; 
i++) {
+                       if (words[i].find("on") != String::npos)
+                               enabled = true;
+               }
+               _servs[name] = Service(name, enabled);
+       }
 
-  _sets = generate_sets();
+       _sets = generate_sets();
 }
 
 ServiceManager::~ServiceManager()
 {}
 
-
 map<String, ServiceSet>
 ServiceManager::generate_sets()
 {
-  map<String, ServiceSet> sets;
-
-  list<String> servs;
-  String name = "Cluster Base";
-  String descr = "Cluster infrastructure: ccs, cman, fence";
-  if (RHEL4 || FC5) {
-    servs.push_back("ccsd");
-    servs.push_back("cman");
-    servs.push_back("fenced");
-  } else if (RHEL5 || FC6) {
-    servs.push_back("cman");
-    servs.push_back("qdiskd");
-  }
-  ServiceSet s(name, descr);
-  if (populate_set(s, servs))
-    sets[name] = s;
-
-
-  if (RHEL4 || FC5) {
-    servs.clear();
-    name = "Cluster Base - Gulm";
-    descr = "Cluster infrastructure: ccs, gulm";
-    s = ServiceSet(name, descr);
-    servs.push_back("ccsd");
-    servs.push_back("lock_gulmd");
-    if (populate_set(s, servs))
-      sets[name] = s;
-  }
-
-
-  servs.clear();
-  name = "Cluster Service Manager";
-  descr = "Cluster Service Manager: rgmanager";
-  s = ServiceSet(name, descr);
-  servs.push_back("rgmanager");
-  if (populate_set(s, servs))
-    sets[name] = s;
-
-
-  servs.clear();
-  name = "Clustered Storage";
-  if (RHEL4 || FC5) {
-    descr = "Shared Storage: clvmd, gfs";
-    servs.push_back("clvmd");
-    servs.push_back("gfs");
-  } else if (RHEL5 || FC6) {
-    descr = "Shared Storage: clvmd, gfs, gfs2";
-    servs.push_back("clvmd");
-    servs.push_back("gfs");
-    servs.push_back("gfs2");
-  }
-  s = ServiceSet(name, descr);
-  if (populate_set(s, servs))
-    sets[name] = s;
-
-
-  servs.clear();
-  name = "Linux Virtual Server";
-  descr = "Red Hat's LVS implementation: pulse, piranha";
-  s = ServiceSet(name, descr);
-  servs.push_back("pulse");
-  servs.push_back("piranha-gui");
-  if (populate_set(s, servs))
-    sets[name] = s;
+       map<String, ServiceSet> sets;
 
+       list<String> servs;
+       String name = "Cluster Base";
+       String descr = "Cluster infrastructure: ccs, cman, fence";
+
+       if (RHEL4 || FC5) {
+               servs.push_back("ccsd");
+               servs.push_back("cman");
+               servs.push_back("fenced");
+       } else if (RHEL5 || FC6) {
+               servs.push_back("cman");
+               servs.push_back("qdiskd");
+       }
+
+       ServiceSet s(name, descr);
+       if (populate_set(s, servs))
+               sets[name] = s;
+
+       if (RHEL4 || FC5) {
+               servs.clear();
+               name = "Cluster Base - Gulm";
+               descr = "Cluster infrastructure: ccs, gulm";
+               s = ServiceSet(name, descr);
+               servs.push_back("ccsd");
+               servs.push_back("lock_gulmd");
+               if (populate_set(s, servs))
+                       sets[name] = s;
+       }
+
+       servs.clear();
+       name = "Cluster Service Manager";
+       descr = "Cluster Service Manager: rgmanager";
+       s = ServiceSet(name, descr);
+       servs.push_back("rgmanager");
+       if (populate_set(s, servs))
+               sets[name] = s;
+
+       servs.clear();
+       name = "Clustered Storage";
+       if (RHEL4 || FC5) {
+               descr = "Shared Storage: clvmd, gfs";
+               servs.push_back("clvmd");
+               servs.push_back("gfs");
+       } else if (RHEL5 || FC6) {
+               descr = "Shared Storage: clvmd, gfs, gfs2";
+               servs.push_back("clvmd");
+               servs.push_back("gfs");
+               servs.push_back("gfs2");
+       }
+       s = ServiceSet(name, descr);
+       if (populate_set(s, servs))
+               sets[name] = s;
+
+       servs.clear();
+       name = "Linux Virtual Server";
+       descr = "Red Hat's LVS implementation: pulse, piranha";
+       s = ServiceSet(name, descr);
+       servs.push_back("pulse");
+       servs.push_back("piranha-gui");
+       if (populate_set(s, servs))
+               sets[name] = s;
 
   return sets;
 }
 
 bool
-ServiceManager::populate_set(ServiceSet& ss,
-                            std::list<String> servs)
+ServiceManager::populate_set(ServiceSet& ss, std::list<String> servs)
 {
-  for (list<String>::iterator n_iter = servs.begin();
-       n_iter != servs.end();
-       n_iter++) {
-    if (_servs.find(*n_iter) == _servs.end())
-      return false;
-    else
-      ss.servs.push_back(_servs[*n_iter]);
-  }
-  return true;
+       for (list<String>::iterator
+                       n_iter = servs.begin() ;
+                       n_iter != servs.end() ;
+                       n_iter++)
+       {
+               if (_servs.find(*n_iter) == _servs.end())
+                       return false;
+               else
+                       ss.servs.push_back(_servs[*n_iter]);
+       }
+
+       return true;
 }
 
 
 void
-ServiceManager::enable(const std::list<String>& services,
-                      const std::list<String>& sets)
-{
-  // check
-  for (list<String>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    if (_servs.find(*iter) == _servs.end())
-      throw String("no such service: ") + *iter;
-  for (list<String>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    if (_sets.find(*iter) == _sets.end())
-      throw String("no such service set: ") + *iter;
-
-  // apply
-  for (list<String>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    _servs[*iter].enable();
-
-  for (list<String>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    _sets[*iter].enable();
+ServiceManager::enable(        const std::list<String>& services,
+                                               const std::list<String>& sets)
+{
+       // check
+       for (list<String>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               if (_servs.find(*iter) == _servs.end())
+                       throw String("no such service: ") + *iter;
+       }
+
+       for (list<String>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               if (_sets.find(*iter) == _sets.end())
+                       throw String("no such service set: ") + *iter;
+       }
+
+       // apply
+       for (list<String>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               _servs[*iter].enable();
+       }
+
+       for (list<String>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               _sets[*iter].enable();
+       }
 }
 
 void
 ServiceManager::disable(const std::list<String>& services,
-                       const std::list<String>& sets)
+                                               const std::list<String>& sets)
 {
-  // check
-  for (list<String>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    if (_servs.find(*iter) == _servs.end())
-      throw String("no such service: ") + *iter;
-  for (list<String>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    if (_sets.find(*iter) == _sets.end())
-      throw String("no such service set: ") + *iter;
-
-  // apply
-  for (list<String>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    _servs[*iter].disable();
-
-  for (list<String>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    _sets[*iter].disable();
-}
-
-void
-ServiceManager::start(const std::list<String>& services,
-                     const std::list<String>& sets)
-{
-  // check
-  for (list<String>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    if (_servs.find(*iter) == _servs.end())
-      throw String("no such service: ") + *iter;
-  for (list<String>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    if (_sets.find(*iter) == _sets.end())
-      throw String("no such service set: ") + *iter;
-
-  // apply
-  for (list<String>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    _servs[*iter].start();
-
-  for (list<String>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    _sets[*iter].start();
+       // check
+       for (list<String>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               if (_servs.find(*iter) == _servs.end())
+                       throw String("no such service: ") + *iter;
+       }
+
+       for (list<String>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               if (_sets.find(*iter) == _sets.end())
+                       throw String("no such service set: ") + *iter;
+       }
+
+       // apply
+       for (list<String>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               _servs[*iter].disable();
+       }
+
+       for (list<String>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               _sets[*iter].disable();
+       }
+}
+
+void
+ServiceManager::start( const std::list<String>& services,
+                                               const std::list<String>& sets)
+{
+       // check
+       for (list<String>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               if (_servs.find(*iter) == _servs.end())
+                       throw String("no such service: ") + *iter;
+       }
+
+       for (list<String>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               if (_sets.find(*iter) == _sets.end())
+                       throw String("no such service set: ") + *iter;
+       }
+
+       // apply
+       for (list<String>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               _servs[*iter].start();
+       }
+
+       for (list<String>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               _sets[*iter].start();
+       }
 }
 
 void
 ServiceManager::restart(const std::list<String>& services,
-                    const std::list<String>& sets)
+                                               const std::list<String>& sets)
 {
-  // check
-  for (list<String>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    if (_servs.find(*iter) == _servs.end())
-      throw String("no such service: ") + *iter;
-  for (list<String>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    if (_sets.find(*iter) == _sets.end())
-      throw String("no such service set: ") + *iter;
-
-  // apply
-  for (list<String>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    _servs[*iter].restart();
-
-  for (list<String>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    _sets[*iter].restart();
-}
-
-void
-ServiceManager::stop(const std::list<String>& services,
-                    const std::list<String>& sets)
-{
-  // check
-  for (list<String>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    if (_servs.find(*iter) == _servs.end())
-      throw String("no such service: ") + *iter;
-  for (list<String>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    if (_sets.find(*iter) == _sets.end())
-      throw String("no such service set: ") + *iter;
-
-  // apply
-  for (list<String>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    _servs[*iter].stop();
-
-  for (list<String>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    _sets[*iter].stop();
-}
-
-void
-ServiceManager::lists(std::list<Service>& services,
-                     std::list<ServiceSet>& sets)
-{
-  services.clear();
-  sets.clear();
-
-  for (map<String, Service>::const_iterator iter = _servs.begin();
-       iter != _servs.end();
-       iter++)
-    services.push_back(iter->second);
-
-  for (map<String, ServiceSet>::const_iterator iter = _sets.begin();
-       iter != _sets.end();
-       iter++)
-    sets.push_back(iter->second);
-}
-
-void
-ServiceManager::query(const std::list<String>& serv_names,
-                     const std::list<String>& set_names,
-                     std::list<Service>& services,
-                     std::list<ServiceSet>& sets)
-{
-  services.clear();
-  sets.clear();
-
-  for (list<String>::const_iterator iter = serv_names.begin();
-       iter != serv_names.end();
-       iter++)
-    if (_servs.find(*iter) != _servs.end())
-      services.push_back(_servs[*iter]);
-
-  for (list<String>::const_iterator iter = set_names.begin();
-       iter != set_names.end();
-       iter++)
-    if (_sets.find(*iter) != _sets.end())
-      sets.push_back(_sets[*iter]);
+       // check
+       for (list<String>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               if (_servs.find(*iter) == _servs.end())
+                       throw String("no such service: ") + *iter;
+       }
+
+       for (list<String>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               if (_sets.find(*iter) == _sets.end())
+                       throw String("no such service set: ") + *iter;
+       }
+
+       // apply
+       for (list<String>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               _servs[*iter].restart();
+       }
+
+       for (list<String>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               _sets[*iter].restart();
+       }
+}
+
+void
+ServiceManager::stop(  const std::list<String>& services,
+                                               const std::list<String>& sets)
+{
+       // check
+       for (list<String>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               if (_servs.find(*iter) == _servs.end())
+                       throw String("no such service: ") + *iter;
+       }
+
+       for (list<String>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               if (_sets.find(*iter) == _sets.end())
+                       throw String("no such service set: ") + *iter;
+       }
+
+       // apply
+       for (list<String>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               _servs[*iter].stop();
+       }
+
+       for (list<String>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               _sets[*iter].stop();
+       }
+}
+
+void
+ServiceManager::lists( std::list<Service>& services,
+                                               std::list<ServiceSet>& sets)
+{
+       services.clear();
+       sets.clear();
+
+       for (map<String, Service>::const_iterator
+                       iter = _servs.begin() ;
+                       iter != _servs.end() ;
+                       iter++)
+       {
+               services.push_back(iter->second);
+       }
+
+       for (map<String, ServiceSet>::const_iterator
+                       iter = _sets.begin() ;
+                       iter != _sets.end() ;
+                       iter++)
+       {
+               sets.push_back(iter->second);
+       }
+}
+
+void
+ServiceManager::query( const std::list<String>& serv_names,
+                                               const std::list<String>& 
set_names,
+                                               std::list<Service>& services,
+                                               std::list<ServiceSet>& sets)
+{
+       services.clear();
+       sets.clear();
+
+       for (list<String>::const_iterator
+                       iter = serv_names.begin() ;
+                       iter != serv_names.end() ;
+                       iter++)
+       {
+               if (_servs.find(*iter) != _servs.end())
+                       services.push_back(_servs[*iter]);
+       }
+
+       for (list<String>::const_iterator iter = set_names.begin() ;
+                       iter != set_names.end() ;
+                       iter++)
+       {
+               if (_sets.find(*iter) != _sets.end())
+                       sets.push_back(_sets[*iter]);
+       }
 }
 
-
-
-
-
-
-
 void
 set_release()
 {
-  static bool release_set = false;
-  if (!release_set) {
-    String release(utils::strip(File::open("/etc/redhat-release")));
-    if (release.find("Nahant") != release.npos)
-      RHEL4 = true;
-    else if (release.find("Bordeaux") != release.npos)
-      FC5 = true;
-    else if (release.find("Fedora Core") != release.npos &&
-            release.find("6") != release.npos)
-      // TODO: detect FC6
-      FC6 = true;
-    else if (release.find("Tikanga") != release.npos)
-      RHEL5 = true;
+       static bool release_set = false;
+
+       if (!release_set) {
+               String release(utils::strip(File::open("/etc/redhat-release")));
+
+               if (release.find("Nahant") != release.npos)
+                       RHEL4 = true;
+               else if (release.find("Bordeaux") != release.npos)
+                       FC5 = true;
+               else if (release.find("Zod") != release.npos)
+                       FC6 = true;
+               else if (release.find("Moonshine") != release.npos)
+                       FC6 = true;
+               else if (release.find("Tikanga") != release.npos)
+                       RHEL5 = true;
+               else {
+                       /* Fallback to RHEL5 if we don't match on any release 
name. */
+                       RHEL5 = true;
+               }
 
-    release_set = true;
-  }
+               release_set = true;
+       }
 }
--- conga/ricci/modules/service/ServiceManager.h        2007/09/11 02:45:28     
1.5
+++ conga/ricci/modules/service/ServiceManager.h        2007/09/11 13:53:19     
1.6
@@ -1,5 +1,5 @@
 /*
-  Copyright Red Hat, Inc. 2006
+  Copyright Red Hat, Inc. 2006-2007
 
   This program is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by the
@@ -37,104 +37,96 @@
 
 class Service
 {
- public:
-  Service();
-  virtual ~Service();
-
-  String name() const;
-  bool enabled() const;
-  bool running() const;
-  String description() const;
-
-  void enable();
-  void disable();
-  void restart();
-  void start();
-  void stop();
-
-  XMLObject xml(bool descriptions) const;
-
- private:
-  Service(const String& name, bool enabled);
-
-  mutable counting_auto_ptr<String> _name;
-  mutable counting_auto_ptr<String> _descr;
-  mutable counting_auto_ptr<bool> _enabled;
-  mutable counting_auto_ptr<bool> _running;
-
-  enum ActionState {
-    START,
-    STOP,
-    RESTART
-  };
-
-  static void enable_service(const String& name, bool on);
-  static bool service_running(const String& name);
-  static void run_service(const String& name, ActionState state);
-
-  friend class ServiceManager;
+       public:
+               Service();
+               virtual ~Service();
+
+               String name() const;
+               bool enabled() const;
+               bool running() const;
+               String description() const;
+
+               void enable();
+               void disable();
+               void restart();
+               void start();
+               void stop();
+
+               XMLObject xml(bool descriptions) const;
+
+       private:
+               Service(const String& name, bool enabled);
+
+               mutable counting_auto_ptr<String> _name;
+               mutable counting_auto_ptr<String> _descr;
+               mutable counting_auto_ptr<bool> _enabled;
+               mutable counting_auto_ptr<bool> _running;
+
+               enum ActionState {
+                       START,
+                       STOP,
+                       RESTART
+               };
+
+               static void enable_service(const String& name, bool on);
+               static bool service_running(const String& name);
+               static void run_service(const String& name, ActionState state);
 
+       friend class ServiceManager;
 };
 
 class ServiceSet
 {
- public:
-  ServiceSet();
-  ServiceSet(const String& name, const String& description);
-  virtual ~ServiceSet();
-
-  String name() const;
-  bool enabled() const;
-  bool running() const;
-  String description() const;
-
-  void enable();
-  void disable();
-  void start();
-  void restart();
-  void stop();
-
-  std::list<Service> servs;
-
-  XMLObject xml(bool descriptions) const;
-
- private:
-  mutable counting_auto_ptr<String> _name;
-  mutable counting_auto_ptr<String> _descr;
-
+       public:
+               ServiceSet();
+               ServiceSet(const String& name, const String& description);
+               virtual ~ServiceSet();
+
+               String name() const;
+               bool enabled() const;
+               bool running() const;
+               String description() const;
+
+               void enable();
+               void disable();
+               void start();
+               void restart();
+               void stop();
+
+               std::list<Service> servs;
+               XMLObject xml(bool descriptions) const;
+
+       private:
+               mutable counting_auto_ptr<String> _name;
+               mutable counting_auto_ptr<String> _descr;
 };
 
-
 class ServiceManager
 {
- public:
-  ServiceManager();
-  virtual ~ServiceManager();
-
-  void enable(const std::list<String>& services, const std::list<String>& 
sets);
-  void disable(const std::list<String>& services, const std::list<String>& 
sets);
-
-  void start(const std::list<String>& services, const std::list<String>& sets);
-  void restart(const std::list<String>& services, const std::list<String>& 
sets);
-  void stop(const std::list<String>& services, const std::list<String>& sets);
-
-  void lists(std::list<Service>& services,
-            std::list<ServiceSet>& sets);
-
-  void query(const std::list<String>& serv_names,
-            const std::list<String>& set_names,
-            std::list<Service>& services,
-            std::list<ServiceSet>& sets);
-
- private:
-  std::map<String, Service>     _servs;
-  std::map<String, ServiceSet>  _sets;
-
-  std::map<String, ServiceSet> generate_sets();
-
-  bool populate_set(ServiceSet& ss, std::list<String> servs);
+       public:
+               ServiceManager();
+               virtual ~ServiceManager();
+
+               void enable(const std::list<String>& services, const 
std::list<String>& sets);
+               void disable(const std::list<String>& services, const 
std::list<String>& sets);
+
+               void start(const std::list<String>& services, const 
std::list<String>& sets);
+               void restart(const std::list<String>& services, const 
std::list<String>& sets);
+               void stop(const std::list<String>& services, const 
std::list<String>& sets);
+
+               void lists(std::list<Service>& services, std::list<ServiceSet>& 
sets);
+
+               void query(     const std::list<String>& serv_names,
+                                       const std::list<String>& set_names,
+                                       std::list<Service>& services,
+                                       std::list<ServiceSet>& sets);
+
+       private:
+               std::map<String, Service> _servs;
+               std::map<String, ServiceSet> _sets;
+               std::map<String, ServiceSet> generate_sets();
 
+               bool populate_set(ServiceSet& ss, std::list<String> servs);
 };
 
-
-#endif  // ServiceManager_h
+#endif
--- conga/ricci/modules/service/ServiceModule.cpp       2007/09/11 02:45:28     
1.5
+++ conga/ricci/modules/service/ServiceModule.cpp       2007/09/11 13:53:19     
1.6
@@ -1,5 +1,5 @@
 /*
-  Copyright Red Hat, Inc. 2006
+  Copyright Red Hat, Inc. 2006-2007
 
   This program is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by the
@@ -27,7 +27,6 @@
 
 using namespace std;
 
-
 static VarMap enable(const VarMap& args);
 static VarMap disable(const VarMap& args);
 static VarMap start(const VarMap& args);
@@ -38,264 +37,285 @@
 
 static ApiFcnMap build_fcn_map();
 
-
 ServiceModule::ServiceModule() :
-  Module(build_fcn_map())
+       Module(build_fcn_map())
 {}
 
 ServiceModule::~ServiceModule()
 {}
 
-
 ApiFcnMap
 build_fcn_map()
 {
-  FcnMap   api_1_0;
-  api_1_0["enable"]     = enable;
-  api_1_0["disable"]    = disable;
-  api_1_0["start"]      = start;
-  api_1_0["restart"]   = restart;
-  api_1_0["stop"]       = stop;
-  api_1_0["list"]       = lists;
-  api_1_0["query"]      = query;
+       FcnMap api_1_0;
 
-  ApiFcnMap   api_fcn_map;
-  api_fcn_map["1.0"] = api_1_0;
+       api_1_0["enable"] = enable;
+       api_1_0["disable"] = disable;
+       api_1_0["start"] = start;
+       api_1_0["restart"] = restart;
+       api_1_0["stop"] = stop;
+       api_1_0["list"] = lists;
+       api_1_0["query"] = query;
 
-  return api_fcn_map;
-}
+       ApiFcnMap api_fcn_map;
+       api_fcn_map["1.0"] = api_1_0;
 
+       return api_fcn_map;
+}
 
 VarMap
 enable(const VarMap& args)
 {
-  list<XMLObject> serv_list;
-  try {
-    VarMap::const_iterator iter = args.find("services");
-    if (iter == args.end())
-      throw APIerror("missing services variable");
-    serv_list = iter->second.get_list_XML();
-  } catch ( String e ) {
-    throw APIerror(e);
-  }
-
-  list<String> services, sets;
-  for (list<XMLObject>::const_iterator iter = serv_list.begin();
-       iter != serv_list.end();
-       iter++) {
-    if (iter->tag() == "service")
-      services.push_back(iter->get_attr("name"));
-    else if (iter->tag() == "set")
-      sets.push_back(iter->get_attr("name"));
-  }
+       list<XMLObject> serv_list;
 
-  ServiceManager().enable(services, sets);
+       try {
+               VarMap::const_iterator iter = args.find("services");
+               if (iter == args.end())
+                       throw APIerror("missing services variable");
+               serv_list = iter->second.get_list_XML();
+       } catch ( String e ) {
+               throw APIerror(e);
+       }
+
+       list<String> services, sets;
+       for (list<XMLObject>::const_iterator
+                       iter = serv_list.begin() ;
+                       iter != serv_list.end() ;
+                       iter++)
+       {
+               if (iter->tag() == "service")
+                       services.push_back(iter->get_attr("name"));
+               else if (iter->tag() == "set")
+                       sets.push_back(iter->get_attr("name"));
+       }
 
-  return VarMap();
+       ServiceManager().enable(services, sets);
+       return VarMap();
 }
 
 VarMap
 disable(const VarMap& args)
 {
-  list<XMLObject> serv_list;
-  try {
-    VarMap::const_iterator iter = args.find("services");
-    if (iter == args.end())
-      throw APIerror("missing services variable");
-    serv_list = iter->second.get_list_XML();
-  } catch ( String e ) {
-    throw APIerror(e);
-  }
-
-  list<String> services, sets;
-  for (list<XMLObject>::const_iterator iter = serv_list.begin();
-       iter != serv_list.end();
-       iter++) {
-    if (iter->tag() == "service")
-      services.push_back(iter->get_attr("name"));
-    else if (iter->tag() == "set")
-      sets.push_back(iter->get_attr("name"));
-  }
+       list<XMLObject> serv_list;
 
-  ServiceManager().disable(services, sets);
+       try {
+               VarMap::const_iterator iter = args.find("services");
+               if (iter == args.end())
+                       throw APIerror("missing services variable");
+               serv_list = iter->second.get_list_XML();
+       } catch ( String e ) {
+               throw APIerror(e);
+       }
+
+       list<String> services, sets;
+       for (list<XMLObject>::const_iterator
+                       iter = serv_list.begin() ;
+                       iter != serv_list.end() ;
+                       iter++)
+       {
+               if (iter->tag() == "service")
+                       services.push_back(iter->get_attr("name"));
+               else if (iter->tag() == "set")
+                       sets.push_back(iter->get_attr("name"));
+       }
 
-  return VarMap();
+       ServiceManager().disable(services, sets);
+       return VarMap();
 }
 
 VarMap
 start(const VarMap& args)
 {
-  list<XMLObject> serv_list;
-  try {
-    VarMap::const_iterator iter = args.find("services");
-    if (iter == args.end())
-      throw APIerror("missing services variable");
-    serv_list = iter->second.get_list_XML();
-  } catch ( String e ) {
-    throw APIerror(e);
-  }
-
-  list<String> services, sets;
-  for (list<XMLObject>::const_iterator iter = serv_list.begin();
-       iter != serv_list.end();
-       iter++) {
-    if (iter->tag() == "service")
-      services.push_back(iter->get_attr("name"));
-    else if (iter->tag() == "set")
-      sets.push_back(iter->get_attr("name"));
-  }
+       list<XMLObject> serv_list;
 
-  ServiceManager().start(services, sets);
+       try {
+               VarMap::const_iterator iter = args.find("services");
+               if (iter == args.end())
+                       throw APIerror("missing services variable");
+               serv_list = iter->second.get_list_XML();
+       } catch ( String e ) {
+               throw APIerror(e);
+       }
+
+       list<String> services, sets;
+       for (list<XMLObject>::const_iterator
+                       iter = serv_list.begin() ;
+                       iter != serv_list.end() ;
+                       iter++)
+       {
+               if (iter->tag() == "service")
+                       services.push_back(iter->get_attr("name"));
+               else if (iter->tag() == "set")
+                       sets.push_back(iter->get_attr("name"));
+       }
 
-  return VarMap();
+       ServiceManager().start(services, sets);
+       return VarMap();
 }
 
 VarMap
 restart(const VarMap& args)
 {
-  list<XMLObject> serv_list;
-  try {
-    VarMap::const_iterator iter = args.find("services");
-    if (iter == args.end())
-      throw APIerror("missing services variable");
-    serv_list = iter->second.get_list_XML();
-  } catch ( String e ) {
-    throw APIerror(e);
-  }
-
-  list<String> services, sets;
-  for (list<XMLObject>::const_iterator iter = serv_list.begin();
-       iter != serv_list.end();
-       iter++) {
-    if (iter->tag() == "service")
-      services.push_back(iter->get_attr("name"));
-    else if (iter->tag() == "set")
-      sets.push_back(iter->get_attr("name"));
-  }
+       list<XMLObject> serv_list;
 
-  ServiceManager().restart(services, sets);
+       try {
+               VarMap::const_iterator iter = args.find("services");
+               if (iter == args.end())
+                       throw APIerror("missing services variable");
+               serv_list = iter->second.get_list_XML();
+       } catch ( String e ) {
+               throw APIerror(e);
+       }
+
+       list<String> services, sets;
+       for (list<XMLObject>::const_iterator
+                       iter = serv_list.begin() ;
+                       iter != serv_list.end() ;
+                       iter++)
+       {
+               if (iter->tag() == "service")
+                       services.push_back(iter->get_attr("name"));
+               else if (iter->tag() == "set")
+                       sets.push_back(iter->get_attr("name"));
+       }
 
-  return VarMap();
+       ServiceManager().restart(services, sets);
+       return VarMap();
 }
 
 VarMap
 stop(const VarMap& args)
 {
-  list<XMLObject> serv_list;
-  try {
-    VarMap::const_iterator iter = args.find("services");
-    if (iter == args.end())
-      throw APIerror("missing services variable");
-    serv_list = iter->second.get_list_XML();
-  } catch ( String e ) {
-    throw APIerror(e);
-  }
-
-  list<String> services, sets;
-  for (list<XMLObject>::const_iterator iter = serv_list.begin();
-       iter != serv_list.end();
-       iter++) {
-    if (iter->tag() == "service")
-      services.push_back(iter->get_attr("name"));
-    else if (iter->tag() == "set")
-      sets.push_back(iter->get_attr("name"));
-  }
+       list<XMLObject> serv_list;
 
-  ServiceManager().stop(services, sets);
+       try {
+               VarMap::const_iterator iter = args.find("services");
+               if (iter == args.end())
+                       throw APIerror("missing services variable");
+               serv_list = iter->second.get_list_XML();
+       } catch ( String e ) {
+               throw APIerror(e);
+       }
+
+       list<String> services, sets;
+       for (list<XMLObject>::const_iterator
+                       iter = serv_list.begin() ;
+                       iter != serv_list.end() ;
+                       iter++)
+       {
+               if (iter->tag() == "service")
+                       services.push_back(iter->get_attr("name"));
+               else if (iter->tag() == "set")
+                       sets.push_back(iter->get_attr("name"));
+       }
 
-  return VarMap();
+       ServiceManager().stop(services, sets);
+       return VarMap();
 }
 
 VarMap
 lists(const VarMap& args)
 {
-  bool descr;
-  try {
-    descr = false;
-    VarMap::const_iterator iter = args.find("description");
-    if (iter != args.end())
-      descr = iter->second.get_bool();
-  } catch ( String e ) {
-    throw APIerror(e);
-  }
-
-  // command
-
-  list<XMLObject> xml_list;
-
-  list<Service> services;
-  list<ServiceSet> sets;
-  ServiceManager().lists(services, sets);
-  for (list<Service>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    xml_list.push_back(iter->xml(descr));
-  for (list<ServiceSet>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    xml_list.push_back(iter->xml(descr));
-
-  // response
-  Variable var("services", xml_list);
-
-  VarMap ret;
-  ret.insert(pair<String, Variable>(var.name(), var));
-  return ret;
+       bool descr;
+
+       try {
+               descr = false;
+               VarMap::const_iterator iter = args.find("description");
+
+               if (iter != args.end())
+                       descr = iter->second.get_bool();
+       } catch ( String e ) {
+               throw APIerror(e);
+       }
+
+       // command
+       list<XMLObject> xml_list;
+
+       list<Service> services;
+       list<ServiceSet> sets;
+       ServiceManager().lists(services, sets);
+
+       for (list<Service>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               xml_list.push_back(iter->xml(descr));
+       }
+
+       for (list<ServiceSet>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               xml_list.push_back(iter->xml(descr));
+       }
+
+       // response
+       Variable var("services", xml_list);
+       VarMap ret;
+       ret.insert(pair<String, Variable>(var.name(), var));
+       return ret;
 }
 
 VarMap
 query(const VarMap& args)
 {
-  list<XMLObject> search_list;
-  bool descr;
-  try {
-    VarMap::const_iterator iter = args.find("search");
-    if (iter == args.end())
-      throw APIerror("missing search variable");
-    search_list = iter->second.get_list_XML();
-
-    descr = false;
-    iter = args.find("description");
-    if (iter != args.end())
-      descr = iter->second.get_bool();
-  } catch ( String e ) {
-    throw APIerror(e);
-  }
-
-  // command
-
-  list<String> serv_names, set_names;
-  for (list<XMLObject>::const_iterator iter = search_list.begin();
-       iter != search_list.end();
-       iter++) {
-    if (iter->tag() == "service")
-      serv_names.push_back(iter->get_attr("name"));
-    else if (iter->tag() == "set")
-      set_names.push_back(iter->get_attr("name"));
-  }
-
-  list<Service> services;
-  list<ServiceSet> sets;
-  ServiceManager().query(serv_names,
-                        set_names,
-                        services,
-                        sets);
-
-  // response
-
-  list<XMLObject> result_list;
-  for (list<Service>::const_iterator iter = services.begin();
-       iter != services.end();
-       iter++)
-    result_list.push_back(iter->xml(descr));
-  for (list<ServiceSet>::const_iterator iter = sets.begin();
-       iter != sets.end();
-       iter++)
-    result_list.push_back(iter->xml(descr));
-
-  Variable var("result", result_list);
-
-  VarMap ret;
-  ret.insert(pair<String, Variable>(var.name(), var));
-  return ret;
+       list<XMLObject> search_list;
+       bool descr;
+
+       try {
+               VarMap::const_iterator iter = args.find("search");
+               if (iter == args.end())
+                       throw APIerror("missing search variable");
+               search_list = iter->second.get_list_XML();
+
+               descr = false;
+               iter = args.find("description");
+               if (iter != args.end())
+                       descr = iter->second.get_bool();
+       } catch ( String e ) {
+               throw APIerror(e);
+       }
+
+       // command
+       list<String> serv_names, set_names;
+       for (list<XMLObject>::const_iterator
+                       iter = search_list.begin() ;
+                       iter != search_list.end() ;
+                       iter++)
+       {
+               if (iter->tag() == "service")
+                       serv_names.push_back(iter->get_attr("name"));
+               else if (iter->tag() == "set")
+                       set_names.push_back(iter->get_attr("name"));
+       }
+
+       list<Service> services;
+       list<ServiceSet> sets;
+       ServiceManager().query(serv_names, set_names, services, sets);
+
+       // response
+       list<XMLObject> result_list;
+       for (list<Service>::const_iterator
+                       iter = services.begin() ;
+                       iter != services.end() ;
+                       iter++)
+       {
+               result_list.push_back(iter->xml(descr));
+       }
+
+       for (list<ServiceSet>::const_iterator
+                       iter = sets.begin() ;
+                       iter != sets.end() ;
+                       iter++)
+       {
+               result_list.push_back(iter->xml(descr));
+       }
+
+       Variable var("result", result_list);
+
+       VarMap ret;
+       ret.insert(pair<String, Variable>(var.name(), var));
+       return ret;
 }
--- conga/ricci/modules/service/ServiceModule.h 2007/09/11 02:45:28     1.2
+++ conga/ricci/modules/service/ServiceModule.h 2007/09/11 13:53:19     1.3
@@ -1,5 +1,5 @@
 /*
-  Copyright Red Hat, Inc. 2006
+  Copyright Red Hat, Inc. 2006-2007
 
   This program is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by the
--- conga/ricci/modules/service/main.cpp        2007/09/11 02:45:28     1.5
+++ conga/ricci/modules/service/main.cpp        2007/09/11 13:53:19     1.6
@@ -1,5 +1,5 @@
 /*
-  Copyright Red Hat, Inc. 2005
+  Copyright Red Hat, Inc. 2005-2007
 
   This program is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by the
@@ -20,22 +20,20 @@
  * Author: Stanko Kupcevic <[EMAIL PROTECTED]>
  */
 
-
 #include "ServiceModule.h"
 
 #include <iostream>
+
 using namespace std;
 
 int
-main(int argc, char** argv)
+main(int argc, char **argv)
 {
-  try {
-    ServiceModule m;
-    return stdin_out_module_driver(m,
-                                  argc,
-                                  argv);
-  } catch (String e) {
-    cerr << e << endl;
-    return 1;
-  }
+       try {
+               ServiceModule m;
+               return stdin_out_module_driver(m, argc, argv);
+       } catch (String e) {
+               cerr << e << endl;
+               return 1;
+       }
 }

Reply via email to