aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornico <nico@magicbroccoli.de>2020-11-24 23:37:00 +0100
committernico <nico@magicbroccoli.de>2020-11-24 23:37:00 +0100
commitac0ea074d5684ac4f22b7787ce3b95f77f25e3e6 (patch)
treeee6969d1e59bc56c4d6d40792f461c7eefdd41bf
parentc19557a320c0e9cf882abef185f30c8d97fd7c5e (diff)
fix: nodename quotation issue
* update nodename method to not use regex anymore * update readme with 2 new columns for the exit code table We used quite the broad regex to parse the nodename from the status string. But we relied on a single quote to mark the starting point. It seems some distributions don't have this starting quote, therefore breaking the api.
-rw-r--r--README.md6
-rw-r--r--calls.py20
2 files changed, 18 insertions, 8 deletions
diff --git a/README.md b/README.md
index d65889d..fe0c0f3 100644
--- a/README.md
+++ b/README.md
@@ -113,9 +113,9 @@ Another possible solution would be to edit the `ExecStart` parameter to include
Lookup table for all custom error codes.
The potential reasons are sorted by probability of being the root cause.
-| code | potential reason |
-| :---: | :---|
-| 17 | login credential mismatch, potential api permission problem |
+| code | raised by | cause by | potential reason |
+| :---: | :---| : --- | :--- |
+| 17 | calls | api call returned empty | login credential mismatch, potential api permission problem |
### pre-commit framework
This project utilizes the [pre-commit](https://pre-commit.com/) framework to automate various small hick-ups that tend
diff --git a/calls.py b/calls.py
index 8c615b8..d4c8f2c 100644
--- a/calls.py
+++ b/calls.py
@@ -14,16 +14,26 @@ class EjabberdApiCalls(EjabberdApi):
@property
def nodename(self):
if self._login is not None:
- node_str = re.compile("The node '(.*)'")
status = self.cmd("status", {})
+ # "The node ejabberd@localhost is started with status: startedejabberd 20.07 is running in that node"
- # matches
try:
- tmp = node_str.findall(status)[0]
- # raise SystemExit code 17 if no status message is received
- except TypeError:
+ tmp = status.split()[2]
+
+ except AttributeError:
+ # emtpy response or None obj
raise SystemExit(17)
+ except IndexError:
+ # status string differs from what we expect
+ log.warning("status string is different then expected")
+ tmp = "ejabberd@status-string-split-error"
+ pass
+
+ # strip double quotations
+ if tmp.startswith("'"):
+ tmp = tmp.strip("'")
+
log.debug(f"fetched node string: {tmp}")
return tmp