From 7fbb97b39e8a0050f33f3f23cc0b99fe77db75cf Mon Sep 17 00:00:00 2001 From: Marcelo Martins <marcelo.martins@rackspace.com> Date: Wed, 22 May 2013 14:33:44 -0500 Subject: [PATCH] Retrieve the swift version with recon Adding a '/recon/version' in order to get the swift version Change-Id: I7b7ddbe70abb87c6a3b1010ddefa09d0acc09710 --- swift/common/middleware/recon.py | 8 ++++++++ test/unit/common/middleware/test_recon.py | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/swift/common/middleware/recon.py b/swift/common/middleware/recon.py index 9e15269121..2fa8db804c 100644 --- a/swift/common/middleware/recon.py +++ b/swift/common/middleware/recon.py @@ -16,6 +16,7 @@ import errno import os +from swift import __version__ as swiftver from swift.common.swob import Request, Response from swift.common.utils import get_logger, config_true_value, json from swift.common.constraints import check_mount @@ -77,6 +78,11 @@ class ReconMiddleware(object): self.logger.exception(_('Error retrieving recon data')) return dict((key, None) for key in cache_keys) + def get_version(self): + """get swift version""" + verinfo = {'version': swiftver} + return verinfo + def get_mounted(self, openr=open): """get ALL mounted fs from /proc/mounts""" mounts = [] @@ -305,6 +311,8 @@ class ReconMiddleware(object): content = self.get_quarantine_count() elif rcheck == "sockstat": content = self.get_socket_info() + elif rcheck == "version": + content = self.get_version() else: content = "Invalid path: %s" % req.path return Response(request=req, status="404 Not Found", diff --git a/test/unit/common/middleware/test_recon.py b/test/unit/common/middleware/test_recon.py index 6c3e5474ae..8cfd8c1535 100644 --- a/test/unit/common/middleware/test_recon.py +++ b/test/unit/common/middleware/test_recon.py @@ -20,8 +20,10 @@ from posix import stat_result, statvfs_result import os import swift.common.constraints +from swift import __version__ as swiftver from swift.common.swob import Request from swift.common.middleware import recon +from swift.common.utils import json class FakeApp(object): @@ -652,6 +654,11 @@ class TestReconMiddleware(unittest.TestCase): resp = self.app(req.environ, start_response) self.assertEquals(resp, get_mem_resp) + def test_recon_get_version(self): + req = Request.blank('/recon/version', environ={'REQUEST_METHOD': 'GET'}) + resp = self.app(req.environ, start_response) + self.assertEquals(resp, [json.dumps({'version': swiftver})]) + def test_recon_get_load(self): get_load_resp = ['{"loadtest": "1"}'] req = Request.blank('/recon/load', environ={'REQUEST_METHOD': 'GET'})