Skip to content

Commit 8c83674

Browse files
committed
add 'includeDiskData'option
1 parent 8b63e5d commit 8c83674

File tree

8 files changed

+64
-9
lines changed

8 files changed

+64
-9
lines changed

source/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@
2020
@author: HWASSMAN
2121
'''
2222

23-
__version__ = '6.1.2'
23+
__version__ = '6.1.3'

source/confParser.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@ def merge_defaults_and_args(defaults, args):
6868
brConfig = dict(defaults)
6969
args = vars(args)
7070
brConfig.update({k: v for k, v in args.items() if v is not None and not (v == str(None))})
71+
for k, v in brConfig.items():
72+
if v == "no":
73+
brConfig[k] = False
74+
elif v == "yes":
75+
brConfig[k] = True
7176
return brConfig
7277

7378

@@ -159,6 +164,7 @@ def parse_cmd_args(argv):
159164
parser.add_argument('-t', '--tlsKeyPath', action="store", default=None, help='Directory path of tls privkey.pem and cert.pem file location (Required only for HTTPS port 8443)')
160165
parser.add_argument('-k', '--tlsKeyFile', action="store", default=None, help='Name of TLS key file, f.e.: privkey.pem (Required only for HTTPS port 8443)')
161166
parser.add_argument('-m', '--tlsCertFile', action="store", default=None, help='Name of TLS certificate file, f.e.: cert.pem (Required only for HTTPS port 8443)')
167+
parser.add_argument('-d', '--includeDiskData', action="store", choices=["yes", "no"], default=None, help='Use or not the historical data from disk (Default from config.ini: "no")')
162168

163169
args = parser.parse_args(argv)
164170
return args, ''

source/config.ini

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,12 @@ server = localhost
2525
# The http port to use
2626
serverPort = 9084
2727

28-
#################################### Logging ##################################
28+
#################################### GPFS Server data query settings ###########
29+
[query]
30+
# Use or not the historical data from disk (default: no)
31+
includeDiskData = no
32+
33+
#################################### Logging ###################################
2934
[logging]
3035
# Directory where the bridge can store logs
3136
logPath = /var/log/ibm_bridge_for_grafana

source/queryHandler/Query.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ class Query(object):
4949
"operation", "protocol", "waiters_time_threshold", "export",
5050
"nodegroup", "account", "filesystem", "tct_csap", "tct_operation", "cloud_nodeclass"])
5151

52-
def __init__(self, metrics=None, bucketsize=1, filters=None, groupby=None, includeDiskDate=False):
52+
def __init__(self, metrics=None, bucketsize=1, filters=None, groupby=None, includeDiskData=False):
5353
'''
5454
Constructor, filters and groupby must be preformmated
5555
'''
56-
self.includeDiskData = includeDiskDate # disk or archived data (False or True)
56+
self.includeDiskData = includeDiskData # disk or archived data (False or True)
5757
self.bucket_size = bucketsize # bucket size
5858

5959
self.metrics = [] # list of string metrics

source/zimonGrafanaIntf.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,14 @@
4242

4343
class MetadataHandler():
4444

45-
def __init__(self, logger, server, port=9084):
45+
def __init__(self, logger, server, port=9084, includeDiskData=False):
4646
self.__qh = None
4747
self.__sensorsConf = None
4848
self.__metaData = None
4949
self.logger = logger
5050
self.server = server
5151
self.port = port
52+
self.includeDiskData = includeDiskData
5253

5354
self.__initializeTables()
5455

@@ -231,6 +232,10 @@ def __init__(self, logger, mdHandler):
231232
def qh(self):
232233
return self.__md.qh
233234

235+
@property
236+
def md(self):
237+
return self.__md
238+
234239
@property
235240
def sensorsConf(self):
236241
return self.__md.SensorsConfig
@@ -298,7 +303,7 @@ def _validateQueryFilters(self, metricName, query):
298303

299304
def _createZimonQuery(self, q, start, end):
300305
'''Creates zimon query string '''
301-
query = Query()
306+
query = Query(includeDiskData=self.md.includeDiskData)
302307
query.normalize_rates = False
303308
bucketSize = 1 # default
304309
inMetric = q.get('metric')
@@ -603,7 +608,7 @@ def main(argv):
603608
logger.info("%s", MSG['BridgeVersionInfo'].format(__version__))
604609
logger.details('zimonGrafanaItf invoked with parameters:\n %s', "\n".join("{}={}".format(k, v) for k, v in args.items()))
605610
validateCollectorConf(args, logger)
606-
mdHandler = MetadataHandler(logger, args.get('server'), args.get('serverPort'))
611+
mdHandler = MetadataHandler(logger, args.get('server'), args.get('serverPort'), args.get('includeDiskData'))
607612
except (AttributeError, ValueError, TypeError) as e:
608613
logger.details('%s', MSG['IntError'].format(str(e)))
609614
logger.error(MSG['MetaError'])

tests/test_cli_parser.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44

55

66
def my_setup():
7-
global a, b, c, d, e, f, g
7+
global a, b, c, d, e, f, g, h
88
a = ['-p', '8443', '-t', '/etc/my_tls']
99
b = ['-a']
1010
c = ['-a', 'abc']
1111
d = ['-c', '10', '-v', '/opt/registry/certs']
1212
e = ['-c', '10', '-t', '/opt/registry/certs']
1313
f = ['-c', '10', '-s', '9.155.108.199', '-p', '8443', '-t', '/opt/registry/certs', '--tlsKeyFile', 'privkey.pem', '--tlsCertFile', 'cert.pem']
1414
g = ['-p', '4242', '-P', '9084']
15+
h = ['-d', 'no']
1516

1617

1718
def test_case01():
@@ -66,3 +67,17 @@ def test_case07():
6667
assert len(result.keys()) > 0
6768
assert 'port' in result.keys()
6869
assert result.get('port') == 8443
70+
71+
def test_case08():
72+
args, msg = parse_cmd_args([])
73+
result = vars(args)
74+
assert 'includeDiskData' in result.keys()
75+
assert result.get('includeDiskData') == None
76+
77+
@with_setup(my_setup)
78+
def test_case09():
79+
args, msg = parse_cmd_args(h)
80+
result = vars(args)
81+
assert 'includeDiskData' in result.keys()
82+
assert result.get('includeDiskData') == 'no'
83+

tests/test_configManager.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,10 @@ def test_case10():
6767
cm = ConfigManager()
6868
result = cm.defaults
6969
assert int(result['port']) == 4242 and int(result['serverPort']) == 9084
70+
71+
72+
def test_case11():
73+
cm = ConfigManager()
74+
result = cm.defaults
75+
assert 'includeDiskData' in result.keys()
76+
assert result['includeDiskData'] == 'no'

tests/test_params.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33

44

55
def my_setup():
6-
global a, b, c, d, e, f, g
6+
global a, b, c, d, e, f, g, m, n
77
a = ConfigManager().defaults
88
b, c = parse_cmd_args([])
99
d, e = parse_cmd_args(['-p', '8443', '-t', '/etc/my_tls'])
1010
f, g = parse_cmd_args(['-p', '8443', '-t', None, '-k', 'None', '-m', "None"])
11+
m, n = parse_cmd_args(['-d', 'yes'])
1112

1213

1314
@with_setup(my_setup)
@@ -43,3 +44,19 @@ def test_case04():
4344
assert 'tlsKeyFile' not in result.keys()
4445
assert 'tlsCertFile' not in result.keys()
4546
assert result.get('port') == 8443
47+
48+
49+
@with_setup(my_setup)
50+
def test_case05():
51+
result = merge_defaults_and_args(a, f)
52+
assert len(result.keys()) > 0
53+
assert 'includeDiskData' in result.keys()
54+
assert result.get('includeDiskData') == False
55+
56+
57+
@with_setup(my_setup)
58+
def test_case06():
59+
result = merge_defaults_and_args(a, m)
60+
assert len(result.keys()) > 0
61+
assert 'includeDiskData' in result.keys()
62+
assert result.get('includeDiskData') == True

0 commit comments

Comments
 (0)