| From 62fdead139edb0f29b2f222efcb8f39be15b057e Mon Sep 17 00:00:00 2001 |
| From: Hongxu Jia <hongxu.jia@windriver.com> |
| Date: Mon, 30 Jul 2018 15:47:13 +0800 |
| Subject: [PATCH 2/4] pykickstart/parser.py: add lock for readKickstart and |
| support https without certification |
| |
| - Add lock for readKickstart to fix race issue |
| |
| - Support to download kickstart file through https without certification |
| |
| Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> |
| --- |
| pykickstart/load.py | 2 +- |
| pykickstart/parser.py | 18 ++++++++++++++++++ |
| 2 files changed, 19 insertions(+), 1 deletion(-) |
| |
| diff --git a/pykickstart/load.py b/pykickstart/load.py |
| index c6f013f..7adb751 100644 |
| --- a/pykickstart/load.py |
| +++ b/pykickstart/load.py |
| @@ -30,7 +30,7 @@ from requests.exceptions import SSLError, RequestException |
| |
| _is_url = lambda location: '://' in location # RFC 3986 |
| |
| -SSL_VERIFY = True |
| +SSL_VERIFY = False |
| |
| def load_to_str(location, user=None, passwd=None): |
| '''Load a destination URL or file into a string. |
| diff --git a/pykickstart/parser.py b/pykickstart/parser.py |
| index e44099b..e68174d 100644 |
| --- a/pykickstart/parser.py |
| +++ b/pykickstart/parser.py |
| @@ -55,6 +55,20 @@ from pykickstart.i18n import _ |
| STATE_END = "end" |
| STATE_COMMANDS = "commands" |
| |
| +import threading |
| +_private_ks_lock = threading.RLock() |
| + |
| +class KsLock(object): |
| + def __enter__(self): |
| + _private_ks_lock.acquire() |
| + return _private_ks_lock |
| + |
| + def __exit__(self, exc_type, exc_val, exc_tb): |
| + _private_ks_lock.release() |
| + |
| + |
| +_ks_lock = KsLock() |
| + |
| def _preprocessStateMachine(lineIter): |
| l = None |
| lineno = 0 |
| @@ -788,6 +802,10 @@ class KickstartParser(object): |
| self._stateMachine(i) |
| |
| def readKickstart(self, f, reset=True, username=None, password=None): |
| + with _ks_lock: |
| + self._readKickstart(f, reset=reset, username=username, password=password) |
| + |
| + def _readKickstart(self, f, reset=True, username=None, password=None): |
| """Process a kickstart file, given by the filename f.""" |
| if reset: |
| self._reset() |
| -- |
| 2.7.4 |
| |