aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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