Skip to content

Commit

Permalink
Lookup drivers in a fallback package "site-opensvc" if not found in "…
Browse files Browse the repository at this point in the history
…drivers"

And make "bin/om" honor the PYTHONPATH set in /etc/default/opensvc, in case
the site-opensvc package is not in a standard location.
  • Loading branch information
cvaroqui authored and cgalibern committed May 29, 2020
1 parent ca43be4 commit 8b1e6e4
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 9 deletions.
4 changes: 2 additions & 2 deletions bin/om
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ main() {
test -z "$SUDO" && SUDO=env || SUDO="$SUDO OSVC_NAMESPACE=$OSVC_NAMESPACE"
if test -n "$KIND"
then
$SUDO PYTHONPATH="$OSVC_ROOT_PATH" $INTER $OSVC_PYTHON_ARGS -m opensvc $KIND "$@"
$SUDO PYTHONPATH="$OSVC_ROOT_PATH:$PYTHONPATH" $INTER $OSVC_PYTHON_ARGS -m opensvc $KIND "$@"
return $?
fi
case $1 in
Expand All @@ -110,7 +110,7 @@ main() {
exit 1
;;
*)
$SUDO PYTHONPATH="$OSVC_ROOT_PATH" $INTER $OSVC_PYTHON_ARGS -m opensvc "$@"
$SUDO PYTHONPATH="$OSVC_ROOT_PATH:$PYTHONPATH" $INTER $OSVC_PYTHON_ARGS -m opensvc "$@"
;;
esac
}
Expand Down
23 changes: 16 additions & 7 deletions opensvc/utilities/drivers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@


def driver_import(*args, **kwargs):
try:
return _driver_import(*args, **kwargs)
except ImportError as exc:
kwargs["head"] = "site-opensvc.drivers"
return _driver_import(*args, **kwargs)

def _driver_import(*args, head="drivers", fallback=True, initial_modname=None):
def fmt_element(s):
if s is None:
return ""
Expand All @@ -14,7 +21,7 @@ def fmt_element(s):
return s.lower().replace("-", "")

def fmt_modname(args):
l = ["drivers"]
l = [head]
for i, e in enumerate(args):
if e == "":
continue
Expand All @@ -35,17 +42,19 @@ def import_mod(modname):
pass

modname = fmt_modname(args)
mod = import_mod(modname)
if not initial_modname:
initial_modname = modname

mod = import_mod(modname)
if mod:
if args[0] == "resource" and not hasattr(mod, "adder"):
raise ImportError("no module found: %s" % initial_modname)
return mod
if not kwargs.get("head"):
kwargs["head"] = modname
if kwargs.get("fallback", True) and len(args) > 2:
if fallback and len(args) > 2:
args = args[:-1]
return driver_import(*args, **kwargs)
return _driver_import(*args, fallback=fallback, initial_modname=initial_modname)
else:
raise ImportError("no module found: %s" % kwargs["head"])
raise ImportError("no module found: %s" % initial_modname)


def iter_drivers(groups=None):
Expand Down

0 comments on commit 8b1e6e4

Please sign in to comment.