From: kupcevic@sourceware.org <kupcevic@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga/ricci/modules/rpm PackageHandler.cpp Pac ...
Date: 15 Aug 2006 00:06:50 -0000 [thread overview]
Message-ID: <20060815000650.10618.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: conga
Changes by: kupcevic at sourceware.org 2006-08-15 00:06:48
Modified files:
ricci/modules/rpm: PackageHandler.cpp PackageHandler.h
Log message:
rpm module: add RHEL5 support, update rpm list to include CS5 rpms
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/rpm/PackageHandler.cpp.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/rpm/PackageHandler.h.diff?cvsroot=cluster&r1=1.3&r2=1.4
--- conga/ricci/modules/rpm/PackageHandler.cpp 2006/08/10 22:53:08 1.4
+++ conga/ricci/modules/rpm/PackageHandler.cpp 2006/08/15 00:06:48 1.5
@@ -37,40 +37,20 @@
#define UNAME_PATH "/bin/uname"
+static bool
+RHEL4=false, RHEL5=false, FC5=false, FC6=false;
+static void
+set_release();
+
// class PackageInstaller
-PackageInstaller::PackageInstaller() :
- RHEL4(false),
- FC5(false)
-{
- char* buff = 0;
- String release;
- try {
- ifstream is("/etc/redhat-release");
- is.seekg(0, ios::end);
- unsigned int length = is.tellg();
- is.seekg(0, ios::beg);
- buff = new char[length];
- is.read(buff, length);
-
- String rel(buff, length);
- delete [] buff;
- buff = 0;
-
- release = utils::strip(rel);
- } catch ( ... ) {
- delete [] buff;
- throw;
- }
-
- if (release.find("Nahant") != release.npos)
- RHEL4 = true;
- else if (release.find("Bordeaux") != release.npos)
- FC5 = true;
+PackageInstaller::PackageInstaller()
+{
+ set_release();
}
PackageInstaller::~PackageInstaller()
@@ -80,7 +60,7 @@
bool
PackageInstaller::available()
{
- if (RHEL4) {
+ if (RHEL4 || RHEL5) {
bool rhn_available = true;
// check existance of /etc/sysconfig/rhn/systemid
if (access("/etc/sysconfig/rhn/systemid", F_OK))
@@ -97,7 +77,7 @@
rhn_available = false;
}
return rhn_available;
- } else if (FC5) {
+ } else if (FC5 || FC6) {
// nothing to check for, maybe ping repository???
return true;
} else
@@ -116,7 +96,7 @@
int status;
vector<String> args;
- if (RHEL4) {
+ if (RHEL4 || RHEL5) {
out = err = "";
args.clear();
args.push_back("--showall");
@@ -139,7 +119,7 @@
rpms[name] = version;
}
- } else if (FC5) {
+ } else if (FC5 || FC6) {
out = err = "";
args.clear();
args.push_back("-y");
@@ -183,7 +163,7 @@
int status;
vector<String> args;
- if (RHEL4) {
+ if (RHEL4 || RHEL5) {
out = err = "";
args.clear();
for (vector<String>::size_type i=0; i<rpms.size(); i++)
@@ -194,7 +174,7 @@
throw String(UP2DATE_PATH) + " failed";
return true;
- } else if (FC5) {
+ } else if (FC5 || FC6) {
// install
vector<String> rpms_to_install;
out = err = "";
@@ -262,12 +242,14 @@
Package::Package()
-{}
+{
+ set_release();
+}
Package::Package(const String& name) :
name(name)
{
-
+ set_release();
}
Package::~Package()
@@ -293,14 +275,18 @@
installed(false),
in_repo(false),
upgradeable(false)
-{}
+{
+ set_release();
+}
PackageSet::PackageSet(const String& name) :
name(name),
installed(false),
in_repo(false),
upgradeable(false)
-{}
+{
+ set_release();
+}
PackageSet::~PackageSet()
{}
@@ -327,6 +313,8 @@
PackageHandler::PackageHandler()
{
+ set_release();
+
// get installed packages
@@ -356,7 +344,7 @@
_packages[name] = pack;
}
- // probe RHN
+ // probe repositories
if (repo_available()) {
map<String, String> avail_rpms = _pi.available_rpms();
for (map<String, String>::const_iterator iter = avail_rpms.begin();
@@ -404,8 +392,10 @@
PackageSet set = build_cluster_base_set();
sets[set.name] = set;
- set = build_cluster_base_gulm_set();
- sets[set.name] = set;
+ if (RHEL4 || FC5) {
+ set = build_cluster_base_gulm_set();
+ sets[set.name] = set;
+ }
set = build_cluster_services_set();
sets[set.name] = set;
@@ -423,30 +413,36 @@
PackageHandler::build_cluster_base_set()
{
PackageSet set("Cluster Base");
- set.packages.push_back("ccs");
- set.packages.push_back("cman");
- set.packages.push_back("dlm");
- set.packages.push_back("fence");
- // find kernel type
- String out, err;
- int status;
- vector<String> args;
- args.push_back("-r");
- if (utils::execute(UNAME_PATH, args, out, err, status, true))
- throw String("execute failed");
- if (status != 0)
- throw String("uname -r failed");
- if (out.find("smp") != out.npos) {
- set.packages.push_back("cman-kernel-smp");
- set.packages.push_back("dlm-kernel-smp");
- } else if (out.find("hugemem") != out.npos) {
- set.packages.push_back("cman-kernel-hugemen");
- set.packages.push_back("dlm-kernel-hugemem");
- } else {
- set.packages.push_back("cman-kernel");
- set.packages.push_back("dlm-kernel");
+ if (RHEL4 || FC5) {
+ set.packages.push_back("ccs");
+ set.packages.push_back("cman");
+ set.packages.push_back("dlm");
+ set.packages.push_back("fence");
+
+ // find kernel type
+ String out, err;
+ int status;
+ vector<String> args;
+ args.push_back("-r");
+ if (utils::execute(UNAME_PATH, args, out, err, status, true))
+ throw String("execute failed");
+ if (status != 0)
+ throw String("uname -r failed");
+ if (out.find("smp") != out.npos) {
+ set.packages.push_back("cman-kernel-smp");
+ set.packages.push_back("dlm-kernel-smp");
+ } else if (out.find("hugemem") != out.npos) {
+ set.packages.push_back("cman-kernel-hugemen");
+ set.packages.push_back("dlm-kernel-hugemem");
+ } else {
+ set.packages.push_back("cman-kernel");
+ set.packages.push_back("dlm-kernel");
+ }
+ } else if (RHEL5 || FC6) {
+ set.packages.push_back("cman");
}
+
return set;
}
@@ -454,9 +450,14 @@
PackageHandler::build_cluster_base_gulm_set()
{
PackageSet set("Cluster Base - Gulm");
- set.packages.push_back("ccs");
- set.packages.push_back("gulm");
- set.packages.push_back("fence");
+
+ if (RHEL4 || FC5) {
+ set.packages.push_back("ccs");
+ set.packages.push_back("gulm");
+ set.packages.push_back("fence");
+ } else
+ throw String("GULM not available in CS5");
+
return set;
}
@@ -465,8 +466,10 @@
{
PackageSet set("Cluster Service Manager");
set.packages.push_back("rgmanager");
- set.packages.push_back("magma");
- set.packages.push_back("magma-plugins");
+ if (RHEL4 || FC5) {
+ set.packages.push_back("magma");
+ set.packages.push_back("magma-plugins");
+ }
return set;
}
@@ -474,25 +477,34 @@
PackageHandler::build_cluster_storage_set()
{
PackageSet set("Clustered Storage");
- set.packages.push_back("GFS");
set.packages.push_back("lvm2-cluster");
-
- // find kernel type
- String out, err;
- int status;
- vector<String> args;
- args.push_back("-r");
- if (utils::execute(UNAME_PATH, args, out, err, status, true))
- throw String("execute failed");
- if (status != 0)
- throw String("uname -r failed");
- if (out.find("smp") != out.npos) {
- set.packages.push_back("GFS-kernel-smp");
- } else if (out.find("hugemem") != out.npos) {
- set.packages.push_back("GFS-kernel-hugemem");
- } else {
- set.packages.push_back("GFS-kernel");
+
+ if (RHEL4 || FC5) {
+ set.packages.push_back("GFS");
+
+ // find kernel type
+ String out, err;
+ int status;
+ vector<String> args;
+ args.push_back("-r");
+ if (utils::execute(UNAME_PATH, args, out, err, status, true))
+ throw String("execute failed");
+ if (status != 0)
+ throw String("uname -r failed");
+ if (out.find("smp") != out.npos) {
+ set.packages.push_back("GFS-kernel-smp");
+ } else if (out.find("hugemem") != out.npos) {
+ set.packages.push_back("GFS-kernel-hugemem");
+ } else {
+ set.packages.push_back("GFS-kernel");
+ }
+ } else if (RHEL5 || FC6) {
+ set.packages.push_back("gfs2-utils");
+
+ // TODO: implement GFS1
+
}
+
return set;
}
@@ -592,3 +604,46 @@
{
return _pi.available();
}
+
+
+
+
+
+void
+set_release()
+{
+ static bool release_set = false;
+ if (!release_set) {
+ char* buff = 0;
+ String release;
+ try {
+ ifstream is("/etc/redhat-release");
+ is.seekg(0, ios::end);
+ unsigned int length = is.tellg();
+ is.seekg(0, ios::beg);
+ buff = new char[length];
+ is.read(buff, length);
+
+ String rel(buff, length);
+ delete [] buff;
+ buff = 0;
+
+ release = utils::strip(rel);
+ } catch ( ... ) {
+ delete [] buff;
+ throw;
+ }
+
+ 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;
+ // TODO: detect RHEL5
+
+ release_set = true;
+ }
+}
--- conga/ricci/modules/rpm/PackageHandler.h 2006/08/10 22:53:08 1.3
+++ conga/ricci/modules/rpm/PackageHandler.h 2006/08/15 00:06:48 1.4
@@ -83,11 +83,6 @@
std::map<String, String> available_rpms();
bool install(std::vector<String> rpm_names);
- private:
-
- bool RHEL4;
- bool FC5;
-
};
next reply other threads:[~2006-08-15 0:06 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-15 0:06 kupcevic [this message]
-- strict thread matches above, loose matches on Subject: below --
2007-09-11 18:59 [Cluster-devel] conga/ricci/modules/rpm PackageHandler.cpp Pac rmccabe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060815000650.10618.qmail@sourceware.org \
--to=kupcevic@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.