Skip to content

Commit

Permalink
[sonic-host-services]: Fix import and invalid path (#10660)
Browse files Browse the repository at this point in the history
Why I did it
Can not start sonic-hostservice

How I did it
Install python3-dbus and systemd-python, and replace invalid path

How to verify it
Start the service with below commands:
sudo systemctl start sonic-hostservice
sudo systemctl status sonic-hostservice

Signed-off-by: Gang Lv ganglv@microsoft.com
  • Loading branch information
ganglyu authored Apr 26, 2022
1 parent a06f549 commit 9d7387a
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
5 changes: 4 additions & 1 deletion files/build_templates/sonic_debian_extension.j2
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,10 @@ sudo cp -f $IMAGE_CONFIGS/bash/bash.bashrc $FILESYSTEM_ROOT/etc/
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install libcairo2-dev libdbus-1-dev libgirepository1.0-dev libsystemd-dev pkg-config

# Mark runtime dependencies as manually installed to avoid them being auto-removed while uninstalling build dependencies
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-mark manual gir1.2-glib-2.0 libdbus-1-3 libgirepository-1.0-1 libsystemd0
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-mark manual gir1.2-glib-2.0 libdbus-1-3 libgirepository-1.0-1 libsystemd0 python3-dbus

# Install systemd-python for SONiC host services
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install systemd-python

# Install SONiC host services package
SONIC_HOST_SERVICES_PY3_WHEEL_NAME=$(basename {{sonic_host_services_py3_wheel_path}})
Expand Down
15 changes: 12 additions & 3 deletions src/sonic-host-services/scripts/sonic-host-server
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,16 @@ import dbus.mainloop.glib

from gi.repository import GObject

def register_modules():
def find_module_path():
"""Find path for host_moduels"""
try:
from host_modules import host_service
return os.path.dirname(host_service.__file__)
except ImportError as e:
return None

def register_modules(mod_path):
"""Register all host modules"""
mod_path = '/usr/local/lib/python3.7/dist-packages/host_modules'
sys.path.append(mod_path)
for mod_file in glob.glob(os.path.join(mod_path, '*.py')):
if os.path.isfile(mod_file) and not mod_file.endswith('__init__.py'):
Expand Down Expand Up @@ -62,7 +69,9 @@ class SignalManager(object):
loop.quit()

sigmgr = SignalManager()
register_modules()
mod_path = find_module_path()
if mod_path is not None:
register_modules(mod_path)

# Only run if we actually have some handlers
if handlers:
Expand Down
1 change: 1 addition & 0 deletions src/sonic-host-services/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
],
install_requires = [
'dbus-python',
'systemd-python',
'Jinja2>=2.10',
'PyGObject',
'sonic-py-common'
Expand Down

0 comments on commit 9d7387a

Please sign in to comment.