diff options
| author | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-04-28 22:55:20 -0700 |
|---|---|---|
| committer | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-04-28 22:55:20 -0700 |
| commit | 276118b6d207bb49905d1e9c19a7f08c33f9ed8d (patch) | |
| tree | 7b013530f472fa5d6ebe83cf70a869875d4eb576 /src/com.gluster.storage.management.server.scripts | |
| parent | e6433daabe87fec1ae58273114b8862b82de4da2 (diff) | |
| parent | 14c2ae3d7351b6884c6e94f771896610cbdbfec4 (diff) | |
Merged pull request #23 from TimothyAsir/master.
Updated multicast_response.py to respond only if the server is not part of peer list.
Diffstat (limited to 'src/com.gluster.storage.management.server.scripts')
| -rwxr-xr-x | src/com.gluster.storage.management.server.scripts/src/nodes/clear_volume_directory.py | 33 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.server.scripts/src/nodes/multicast_response.py | 19 |
2 files changed, 46 insertions, 6 deletions
diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/clear_volume_directory.py b/src/com.gluster.storage.management.server.scripts/src/nodes/clear_volume_directory.py index a8a003a7..ff6b6484 100755 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/clear_volume_directory.py +++ b/src/com.gluster.storage.management.server.scripts/src/nodes/clear_volume_directory.py @@ -18,12 +18,13 @@ import os import sys import syslog +import time from XmlHandler import ResponseXml import DiskUtils import Utils import Common -def clearVolumeDirectory(disk, volumeName): +def clearVolumeDirectory(disk, volumeName, option): # Retrieving disk uuid diskUuid = DiskUtils.getUuidByDiskPartition(DiskUtils.getDevice(disk)) @@ -45,13 +46,31 @@ def clearVolumeDirectory(disk, volumeName): # clear volume directory from the disk volumeDirectory = "%s/%s" % (diskMountPoint, volumeName) - command = ["sudo", "rm", "-fr", volumeDirectory] + newVolumeDirectoryName = "%s_%s" % (volumeDirectory, time.time()) + command = ["sudo", "mv", "-f", volumeDirectory, newVolumeDirectoryName] rv = Utils.runCommandFG(command, stdout=True, root=True) message = Common.stripEmptyLines(rv["Stdout"]) if rv["Stderr"]: error = Common.stripEmptyLines(rv["Stderr"]) message += "Error: [%s]" % (error) - Common.log(syslog.LOG_ERR, "failed to clear volume directory %s, %s" % (volumeDirectory, error)) + Common.log(syslog.LOG_ERR, "failed to rename volume directory %s, %s" % (volumeDirectory, error)) + rs.appendTagRoute("status.code", rv["Status"]) + rs.appendTagRoute("status.message", message) + return rs.toprettyxml() + + if "1" == option: + rv["Status"] = "0" + rs.appendTagRoute("status.code", rv["Status"]) + rs.appendTagRoute("status.message", message) + return rs.toprettyxml() + + command = ["sudo", "rm", "-fr", newVolumeDirectoryName] + rv = Utils.runCommandFG(command, stdout=True, root=True) + message = Common.stripEmptyLines(rv["Stdout"]) + if rv["Stderr"]: + error = Common.stripEmptyLines(rv["Stderr"]) + message += "Error: [%s]" % (error) + Common.log(syslog.LOG_ERR, "failed to clear volume directory %s, %s" % (newVolumeDirectoryName, error)) rs.appendTagRoute("status.code", rv["Status"]) rs.appendTagRoute("status.message", message) return rs.toprettyxml() @@ -63,14 +82,16 @@ def clearVolumeDirectory(disk, volumeName): return rs.toprettyxml() def main(): - if len(sys.argv) != 3: - print >> sys.stderr, "usage: %s <disk name> <volume name>" % sys.argv[0] + if len(sys.argv) != 4: + print >> sys.stderr, "usage: %s <disk name> <volume name> <option>" % sys.argv[0] sys.exit(-1) disk = sys.argv[1] volumeName = sys.argv[2] - print clearVolumeDirectory(disk, volumeName) + option = sys.argv[3] + print clearVolumeDirectory(disk, volumeName, option) sys.exit(0) if __name__ == "__main__": main() + diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/multicast_response.py b/src/com.gluster.storage.management.server.scripts/src/nodes/multicast_response.py index 64bc0899..dba65c07 100644 --- a/src/com.gluster.storage.management.server.scripts/src/nodes/multicast_response.py +++ b/src/com.gluster.storage.management.server.scripts/src/nodes/multicast_response.py @@ -16,10 +16,26 @@ # along with this program. If not, see
# <http://www.gnu.org/licenses/>.
+import os
+import string
+import time
+import Utils
import socket
import struct
import Globals
+def isinpeer():
+ command = "gluster peer status"
+ status = Utils.runCommand(command, output=True, root=True)
+ if status["Status"] == 0:
+ return True
+ #lines = status["Stdout"].split("\n")
+ #for line in lines:
+ # if string.upper(line).startswith("HOSTNAME: %s" % string.upper(socket.gethostname)):
+ # return True
+ Utils.log("command [%s] failed with [%d:%s]" % (command, status["Status"], os.strerror(status["Status"])))
+ return False
+
def response(multiCastGroup, port):
# waiting for the request!
socketRequest = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
@@ -33,6 +49,9 @@ def response(multiCastGroup, port): #TODO: Remove infinite loop and make this as a deamon (service)
while True:
+ if isinpeer():
+ time.sleep(5)
+ continue
request = socketRequest.recvfrom(1024)
if request and request[0].upper() == "SERVERDISCOVERY":
socketSend.sendto(socket.gethostname(), (multiCastGroup, port))
|
