All of lore.kernel.org
 help / color / mirror / Atom feed
From: kupcevic@sourceware.org <kupcevic@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga luci/site/luci/Extensions/StorageReport. ...
Date: 5 Mar 2007 20:22:37 -0000	[thread overview]
Message-ID: <20070305202237.1537.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL4
Changes by:	kupcevic at sourceware.org	2007-03-05 20:22:36

Modified files:
	luci/site/luci/Extensions: StorageReport.py 
	ricci/test_suite: README 
	ricci/modules/storage: ClusterNotQuorateError.h ClvmdError.h 
	                       LV.cpp LVM.cpp PV.cpp VG.cpp 
Added files:
	ricci/modules/storage: ClusterNotRunningError.h 
	                       LVMClusterLockingError.h 

Log message:
	modstorage: Improve error reporting of clustered nodes

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/StorageReport.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.22&r2=1.22.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/test_suite/README.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/ClusterNotRunningError.h.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=NONE&r2=1.1.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/LVMClusterLockingError.h.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=NONE&r2=1.1.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/ClusterNotQuorateError.h.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.2&r2=1.2.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/ClvmdError.h.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.2&r2=1.2.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/LV.cpp.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.7&r2=1.7.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/LVM.cpp.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.11&r2=1.11.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/PV.cpp.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5&r2=1.5.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/VG.cpp.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.9&r2=1.9.2.1

--- conga/luci/site/luci/Extensions/StorageReport.py	2006/12/06 22:34:09	1.22
+++ conga/luci/site/luci/Extensions/StorageReport.py	2007/03/05 20:22:35	1.22.2.1
@@ -1409,13 +1409,23 @@
                 # clvmd error
                 error  = True
                 url   += '?' + STONAME + '=' + storagename + '&' + PAGETYPE + '=' + STORAGE
-                msg    = 'either clvmd (clustered LVM daemon) is not running or is not cluster-enabled on ' + storagename
+                msg    = 'clvmd (clustered LVM daemon) is not running on ' + storagename
             elif code == 5:
                 # not quorate
                 error  = True
                 url   += '?' + STONAME + '=' + storagename + '&' + PAGETYPE + '=' + STORAGE
                 msg    = 'Cluster quorum is required, and yet cluster is not quorate. Start cluster, and try again.'
-            elif code > 5:
+            elif code == 6:
+                # LVM cluster locking not enabled
+                error  = True
+                url   += '?' + STONAME + '=' + storagename + '&' + PAGETYPE + '=' + STORAGE
+                msg    = 'LVM cluster locking is not enabled on ' + storagename
+            elif code == 7:
+                # cluster not running
+                error  = True
+                url   += '?' + STONAME + '=' + storagename + '&' + PAGETYPE + '=' + STORAGE
+                msg    = 'Cluster infrastructure is not running on ' + storagename
+            elif code > 8:
                 error  = True
                 url   += '?' + STONAME + '=' + storagename + '&' + PAGETYPE + '=' + STORAGE
                 msg    = err_msg
--- conga/ricci/test_suite/README	2006/10/27 19:30:30	1.1
+++ conga/ricci/test_suite/README	2007/03/05 20:22:35	1.1.2.1
@@ -1,14 +1,15 @@
-1. make SSL certs
+1. generate SSL cert/key pair
 	./generate_certs.sh
 	this step needs to be performed only once 
 	(cert can be used for multiple riccis - each requires authentication)
 2. modify ricci/authenticate.xml, writing root password of machine hosting ricci to 'password' attribute
-3. run ./ricci_test ricci_hostname ricci/authenticate.xml
-	you are authenticated to that ricci, and don't have to repeat authentication to it
+3. execute `./send_to_ricci ricci_hostname ricci/authenticate.xml`
+	from now on, you are authenticated to that ricci, and don't have to repeat authentication to it
 4. pick/modify one of XML files
 	check ../docs/ for API
-5. execute ./ricci_test ricci_hostname xml_file
+5. execute `./send_to_ricci ricci_hostname xml_file`
 	ricci's response will be printed to stdout
 
+...
 
 15. send ricci/unauthenticate.xml to unauthenticate from that ricci
--- conga/ricci/modules/storage/ClusterNotQuorateError.h	2006/08/10 22:53:09	1.2
+++ conga/ricci/modules/storage/ClusterNotQuorateError.h	2007/03/05 20:22:36	1.2.4.1
@@ -31,7 +31,7 @@
 {
  public:
   ClusterNotQuorateError()
-    : Except(5, String("Quorum required, but cluster not quorate")) {}
+    : Except(5, String("Cluster is not quorate")) {}
   virtual ~ClusterNotQuorateError()
     {}
   
--- conga/ricci/modules/storage/ClvmdError.h	2006/08/10 22:53:09	1.2
+++ conga/ricci/modules/storage/ClvmdError.h	2007/03/05 20:22:36	1.2.4.1
@@ -31,7 +31,7 @@
 {
  public:
   ClvmdError()
-    : Except(4, String("clvmd required, but unable to start. Start cluster infrastructure.")) {}
+    : Except(4, String("clvmd failed to start")) {}
   virtual ~ClvmdError()
     {}
   
--- conga/ricci/modules/storage/LV.cpp	2006/12/12 13:11:51	1.7
+++ conga/ricci/modules/storage/LV.cpp	2007/03/05 20:22:36	1.7.2.1
@@ -29,7 +29,7 @@
 #include "utils.h"
 #include "ContentFactory.h"
 #include "ContentNone.h"
-#include "ClvmdError.h"
+#include "LVMClusterLockingError.h"
 
 
 using namespace std;
@@ -47,7 +47,7 @@
   // if VG is marked as clustered, but cluster locking is not available, throw
   if (!LVM::clustered_enabled() &&
       bd_temp.props.get("clustered").get_bool())
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   
   String lvname = bd_temp.props.get("lvname").get_string();
@@ -184,7 +184,7 @@
   // if VG is marked as clustered, but cluster locking is not available, throw
   if (_props.get("clustered").get_bool() &&
       !LVM::clustered_enabled())
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   // snapshots neither resize nor replace content, see LV()
   
@@ -248,7 +248,7 @@
   // if VG is marked as clustered, but cluster locking is not available, throw
   if (_props.get("clustered").get_bool() &&
       !LVM::clustered_enabled())
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   content->remove();
   LVM::lvremove(path());
--- conga/ricci/modules/storage/LVM.cpp	2007/01/16 17:05:27	1.11
+++ conga/ricci/modules/storage/LVM.cpp	2007/03/05 20:22:36	1.11.2.1
@@ -29,6 +29,8 @@
 #include "defines.h"
 #include "ClvmdError.h"
 #include "ClusterNotQuorateError.h"
+#include "ClusterNotRunningError.h"
+#include "LVMClusterLockingError.h"
 
 #include <vector>
 
@@ -162,8 +164,11 @@
   int status;
   if (utils::execute(LVM_BIN_PATH, args, out, err, status))
     throw command_not_found_error_msg(LVM_BIN_PATH);
-  if (status != 0)
+  if (status != 0) {
+    if (err.find("Skipping clustered") != err.npos)
+      throw LVMClusterLockingError();
     throw String("lvdisplay failed");
+  }
   
   vector<String> lines = utils::split(out, "\n");
   for (vector<String>::iterator iter = lines.begin();
@@ -213,8 +218,11 @@
   int status;
   if (utils::execute(LVM_BIN_PATH, args, out, err, status))
     throw command_not_found_error_msg(LVM_BIN_PATH);
-  if (status != 0)
+  if (status != 0) {
+    if (err.find("Skipping clustered") != err.npos)
+      throw LVMClusterLockingError();
     throw String("lvs failed");
+  }
   
   String line = utils::strip(out);
   vector<String> words = utils::split(line, ";");
@@ -268,8 +276,11 @@
   args.push_back("lv_name,vg_name,origin");
   if (utils::execute(LVM_BIN_PATH, args, out, err, status))
     throw command_not_found_error_msg(LVM_BIN_PATH);
-  if (status != 0)
+  if (status != 0) {
+    if (err.find("Skipping clustered") != err.npos)
+      throw LVMClusterLockingError();
     throw String("lvs failed");
+  }
   vector<String> lines = utils::split(out, "\n");
   for (vector<String>::iterator iter = lines.begin();
        iter != lines.end();
@@ -381,8 +392,11 @@
   args.push_back("-c");
   if (utils::execute(LVM_BIN_PATH, args, out, err, status))
     throw command_not_found_error_msg(LVM_BIN_PATH);
-  if (status != 0)
+  if (status != 0) {
+    if (err.find("Skipping clustered") != err.npos)
+      throw LVMClusterLockingError();
     throw String("lvdisplay failed");
+  }
   vector<String> lines = utils::split(out, "\n");
   for (vector<String>::iterator iter = lines.begin();
        iter != lines.end();
@@ -441,7 +455,7 @@
 {
   if (clustered &&
       !clustered_enabled())
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   vector<String> args;
   args.push_back("vgcreate");
@@ -524,7 +538,7 @@
 {
   if (clustered &&
       !clustered_enabled())
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   vector<String> args;
   args.push_back("vgchange");
@@ -701,6 +715,8 @@
 bool
 cluster_quorate()
 {
+  // called only if cluster locking is enabled
+  
   bool use_magma = true;
   if (access("/sbin/magma_tool", X_OK)) 
     use_magma = false;
@@ -714,11 +730,8 @@
     if (utils::execute("/sbin/magma_tool", args, out, err, status))
       throw command_not_found_error_msg("magma_tool");
     if (status)
-      throw String("cluster tools: magma_tool errored");
-    if (out.find("Quorate") != out.npos)
-      return true;
-    else
-      return false;
+      throw ClusterNotRunningError();
+    return out.find("Quorate") != out.npos;
   } else {
     // use cman_tool
     String cman_tool_path = "/sbin/cman_tool";
@@ -732,7 +745,7 @@
     if (utils::execute(cman_tool_path, args, out, err, status))
       throw command_not_found_error_msg("cman_tool");
     if (status)
-      throw String("cluster tools: cman_tool errored");
+      throw ClusterNotRunningError();
     
     long long quorum = -1;
     long long votes = -1;
@@ -756,7 +769,7 @@
     
     if (quorum <= 0 ||
 	votes < 0)
-      throw String("Unable to retrieve cluster quorum info");
+      throw String("Unable to determine cluster quorum status");
     return votes >= quorum;
   }
 }
@@ -824,8 +837,11 @@
   //    args.push_back(vgname);
   if (utils::execute(LVM_BIN_PATH, args, out, err, status))
     throw command_not_found_error_msg(LVM_BIN_PATH);
-  if (status)
+  if (status) {
+    if (err.find("Skipping clustered") != err.npos)
+      throw LVMClusterLockingError();
     throw String("vgs failed");
+  }
   
   vector<String> lines = utils::split(out, "\n");
   for (vector<String>::iterator iter = lines.begin();
@@ -873,11 +889,14 @@
     throw command_not_found_error_msg(LVM_BIN_PATH);
   
   bool use_pvdisplay = false;
-  if (status)
+  if (status) {
+    if (err.find("Skipping clustered") != err.npos)
+      throw LVMClusterLockingError();
     // wouldn't `pvdisplay -c` fail if `pvs` has already failed?
     // `pvs` fails if it cannot read one hard drive (common in SANs), 
     // while pvdisplay reports without failure
     use_pvdisplay = true;
+  }
   
   if (use_pvdisplay) {
     args.clear();
@@ -885,8 +904,11 @@
     args.push_back("-c");
     if (utils::execute(LVM_BIN_PATH, args, out, err, status))
       throw command_not_found_error_msg(LVM_BIN_PATH);
-    if (status)
+    if (status) {
+      if (err.find("Skipping clustered") != err.npos)
+	throw LVMClusterLockingError();
       throw String("pvs and pvdisplay failed");
+    }
     
     vector<String> lines = utils::split(utils::strip(out), "\n");
     for (vector<String>::iterator iter = lines.begin();
--- conga/ricci/modules/storage/PV.cpp	2006/12/12 13:11:51	1.5
+++ conga/ricci/modules/storage/PV.cpp	2007/03/05 20:22:36	1.5.2.1
@@ -25,7 +25,7 @@
 #include "LVM.h"
 #include "MapperFactory.h"
 #include "utils.h"
-#include "ClvmdError.h"
+#include "LVMClusterLockingError.h"
 
 
 using namespace std;
@@ -96,7 +96,7 @@
   // if VG is marked as clustered, but cluster locking is not available, throw
   if (!LVM::clustered_enabled() &&
       LVM::vg_clustered(vgname))
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   
   if (vg->sources.size() == 1) {
@@ -124,7 +124,7 @@
   if (!LVM::clustered_enabled() &&
       (LVM::vg_clustered(vgname_old) || 
        LVM::vg_clustered(vgname_new)))
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   
   counting_auto_ptr<Mapper> vg_old = 
@@ -155,7 +155,7 @@
   // if VG is marked as clustered, but cluster locking is not available, throw
   if (!LVM::clustered_enabled() &&
       LVM::vg_clustered(vgname))
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   
   LVM::pvcreate(path);
--- conga/ricci/modules/storage/VG.cpp	2006/12/12 13:11:51	1.9
+++ conga/ricci/modules/storage/VG.cpp	2007/03/05 20:22:36	1.9.2.1
@@ -28,7 +28,7 @@
 #include "defines.h"
 #include "utils.h"
 #include "MidAir.h"
-#include "ClvmdError.h"
+#include "LVMClusterLockingError.h";
 
 #include "Time.h"
 
@@ -55,8 +55,11 @@
   int status;
   if (utils::execute(LVM_BIN_PATH, args, out, err, status))
     throw command_not_found_error_msg(LVM_BIN_PATH);
-  if (status)
+  if (status) {
+    if (err.find("Skipping clustered") != err.npos)
+      throw LVMClusterLockingError();
     throw String("vgs failed");
+  }
   vector<String> lines = utils::split(out, "\n");
   for (vector<String>::iterator iter = lines.begin();
        iter != lines.end();
@@ -208,7 +211,7 @@
   // if VG is marked as clustered, but cluster locking is not available, throw
   if (_props.get("clustered").get_bool() &&
       !LVM::clustered_enabled())
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   String vgname;
   try {
@@ -253,7 +256,7 @@
   // if VG is marked as clustered, but cluster locking is not available, throw
   if (_props.get("clustered").get_bool() &&
       !LVM::clustered_enabled())
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   String vgname = _props.get("vgname").get_string();
   LVM::vgremove(vgname);
@@ -279,7 +282,7 @@
   
   if (clustered &&
       !LVM::clustered_enabled())
-    throw ClvmdError();
+    throw LVMClusterLockingError();
   
   try {
     utils::clear_cache();



             reply	other threads:[~2007-03-05 20:22 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-05 20:22 kupcevic [this message]
  -- strict thread matches above, loose matches on Subject: below --
2007-03-05 20:45 [Cluster-devel] conga luci/site/luci/Extensions/StorageReport. kupcevic
2007-03-05 20:14 kupcevic
2006-11-29 18:26 rmccabe
2006-10-05 16:11 kupcevic

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=20070305202237.1537.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.