Skip to content

Commit 5b755b8

Browse files
committed
add ca certificate file path to the configurable parmeters
1 parent dcd7681 commit 5b755b8

File tree

4 files changed

+66
-11
lines changed

4 files changed

+66
-11
lines changed

source/confParser.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ def checkAPIsettings(args):
5353
return True, ''
5454

5555

56+
def checkCAsettings(args):
57+
if args.get('caCertPath') and args['caCertPath'] != False and not (os.path.exists(args['caCertPath'])):
58+
return False, MSG['FileNotFound'].format(args.get('caCertPath'))
59+
return True, ''
60+
61+
5662
def getSettings(argv):
5763
settings = {}
5864
msg = ''
@@ -70,6 +76,10 @@ def getSettings(argv):
7076
return None, msg
7177
# check TLS settings
7278
valid, msg = checkTLSsettings(settings)
79+
if not valid:
80+
return None, msg
81+
# check ca certificate settings
82+
valid, msg = checkCAsettings(settings)
7383
if not valid:
7484
return None, msg
7585
return settings, ''
@@ -82,9 +92,9 @@ def merge_defaults_and_args(defaults, args):
8292
args = vars(args)
8393
brConfig.update({k: v for k, v in args.items() if v is not None and not (v == str(None))})
8494
for k, v in brConfig.items():
85-
if v == "no":
95+
if v == "no" or v == "False":
8696
brConfig[k] = False
87-
elif v == "yes":
97+
elif v == "yes" or v == "True":
8898
brConfig[k] = True
8999
return brConfig
90100

source/config.ini

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ server = localhost
2828
# The https port to use
2929
serverPort = 9980
3030

31-
# Sleep time in seconds before attempting to get metaData from the server again.
31+
# The sleep time in seconds before attempting to get metaData from the server again.
3232
# This most likely the case if the query was sent to server before it did finish the
3333
# initial startup (maximum 3 attempts)
3434
retryDelay = 60
@@ -43,6 +43,12 @@ apiKeyName = scale_grafana
4343
# and specify the file location as the REST HTTPS API key value, f.e:
4444
# apiKeyValue = /etc/bridge_ssl/apikey_scale-21
4545

46+
# False or the path to the CA certificate to use.
47+
# On many Linux systems, certs can be found in /etc/ssl/certs.
48+
# In CNSA the service-ca certifcate must be used:
49+
# caCertPath = "/etc/ssl/certs/service-ca.crt"
50+
caCertPath = False
51+
4652
#################################### GPFS Server data query settings ###########
4753
[query]
4854
# Use or not the historical data from disk (default: no)

tests/test_cli_parser.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,10 @@ def test_case10():
104104
assert len(result.keys()) > 0
105105
assert 'port' in result.keys()
106106
assert 'protocol' in result.keys()
107+
108+
109+
@with_setup(my_setup)
110+
def test_case11():
111+
args, msg = parse_cmd_args(h)
112+
result = vars(args)
113+
assert ('retryDelay' and 'caCertPath') not in result.keys()

tests/test_params.py

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
from source.confParser import ConfigManager, merge_defaults_and_args, parse_cmd_args
1+
from source.confParser import ConfigManager, merge_defaults_and_args, parse_cmd_args, checkCAsettings
2+
from source.__version__ import __version__ as version
23
from nose2.tools.decorators import with_setup
4+
import string
35

46

57
def my_setup():
68
global a, b, c, d, e, f, g, m, n, o, p, y, x
79
a = ConfigManager().defaults
810
y = ConfigManager().defaults.copy()
911
y['apiKeyValue'] = '/tmp/mykey'
10-
x = ConfigManager().defaults.copy()
11-
del x['retryDelay']
12+
1213
b, c = parse_cmd_args([])
1314
d, e = parse_cmd_args(['-p', '8443', '-t', '/etc/my_tls'])
1415
f, g = parse_cmd_args(['-p', '8443', '-t', None, '-k', 'None', '-m', "None"])
@@ -90,15 +91,46 @@ def test_case08():
9091

9192
@with_setup(my_setup)
9293
def test_case09():
93-
result = merge_defaults_and_args(a, b)
94-
assert len(result.keys()) > 0
95-
assert 'retryDelay' in result.keys()
96-
assert isinstance(result.get('retryDelay'), int)
97-
assert result.get('retryDelay') == 60
94+
if version < "7.0.4":
95+
assert ('retryDelay' and 'caCertPath') not in a.keys()
96+
else:
97+
result = merge_defaults_and_args(a, b)
98+
assert len(result.keys()) > 0
99+
assert 'retryDelay' and 'caCertPath' in result.keys()
100+
assert isinstance(result.get('retryDelay'), int)
101+
assert isinstance(result.get('caCertPath'), bool)
102+
assert result.get('retryDelay') == 60
103+
assert result.get('caCertPath') == eval("False")
98104

99105

100106
@with_setup(my_setup)
101107
def test_case10():
108+
x = a.copy()
109+
if x.get('retryDelay', None) != None:
110+
del x['retryDelay']
102111
result = merge_defaults_and_args(x, b)
103112
assert len(result.keys()) > 0
104113
assert 'retryDelay' not in result.keys()
114+
115+
116+
@with_setup(my_setup)
117+
def test_case11():
118+
x = a.copy()
119+
x['caCertPath'] = '/etc/ssl/certs/service-ca.crt'
120+
result = merge_defaults_and_args(x, b)
121+
assert len(result.keys()) > 0
122+
assert 'caCertPath' in result.keys()
123+
assert isinstance(result.get('caCertPath'), str)
124+
125+
126+
@with_setup(my_setup)
127+
def test_case12():
128+
x = a.copy()
129+
x['caCertPath'] = "/etc/ssl/certs/service-ca.crt"
130+
result = merge_defaults_and_args(x, b)
131+
valid, msg = checkCAsettings(result)
132+
assert len(result.keys()) > 0
133+
assert 'caCertPath' in result.keys()
134+
assert isinstance(result.get('caCertPath'), str)
135+
assert valid == False
136+
assert len(msg) > 0

0 commit comments

Comments
 (0)