Fix for mounting fails on SMB provider (#1631)
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 30 Aug 2024 11:26:42 +0000 (13:26 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 30 Aug 2024 11:58:07 +0000 (13:58 +0200)
music_assistant/server/providers/filesystem_smb/__init__.py

index 370df89d17b72813f833d14d1d24e00e8f38d4cf..e8192b00113985d912171c43dc8c816844b9927e 100644 (file)
@@ -10,7 +10,7 @@ from music_assistant.common.helpers.util import get_ip_from_host
 from music_assistant.common.models.config_entries import ConfigEntry, ConfigValueType
 from music_assistant.common.models.enums import ConfigEntryType
 from music_assistant.common.models.errors import LoginFailed
-from music_assistant.constants import CONF_PASSWORD, CONF_USERNAME
+from music_assistant.constants import CONF_PASSWORD, CONF_USERNAME, VERBOSE_LOG_LEVEL
 from music_assistant.server.helpers.process import check_output
 from music_assistant.server.providers.filesystem_local import (
     CONF_ENTRY_MISSING_ALBUM_ARTIST,
@@ -186,8 +186,15 @@ class SMBFileSystemProvider(LocalFileSystemProvider):
             options = ["rw"]
             if mount_options := str(self.config.get_value(CONF_MOUNT_OPTIONS)):
                 options += mount_options.split(",")
-
+            options.append(f"username={username}")
             options_str = ",".join(options)
+
+            env_vars = {
+                **os.environ,
+            }
+            if password:
+                env_vars["PASSWD"] = str(password)
+
             mount_cmd = [
                 "mount",
                 "-t",
@@ -197,23 +204,16 @@ class SMBFileSystemProvider(LocalFileSystemProvider):
                 f"//{server}/{share}{subfolder}",
                 self.base_path,
             ]
-
         else:
             msg = f"SMB provider is not supported on {platform.system()}"
             raise LoginFailed(msg)
 
-        self.logger.info("Mounting //%s/%s%s to %s", server, share, subfolder, self.base_path)
-        self.logger.debug(
+        self.logger.debug("Mounting //%s/%s%s to %s", server, share, subfolder, self.base_path)
+        self.logger.log(
+            VERBOSE_LOG_LEVEL,
             "Using mount command: %s",
-            [m.replace(str(password), "########") if password else m for m in mount_cmd],
+            " ".join([m.replace(str(password), "########") if password else m for m in mount_cmd]),
         )
-        env_vars = {
-            **os.environ,
-            "USER": username,
-        }
-        if password:
-            env_vars["PASSWD"] = str(password)
-
         returncode, output = await check_output(*mount_cmd, env=env_vars)
         if returncode != 0:
             msg = f"SMB mount failed with error: {output.decode()}"