VirtualBox

Ignore:
Timestamp:
May 18, 2018 10:22:17 AM (7 years ago)
Author:
vboxsync
Message:

testboxscript: introduce a way to specify custom mount options

Location:
trunk/src/VBox/ValidationKit/testboxscript
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/testboxscript/setup.sh

    r67192 r72259  
    367367            "--builds-server-user")     TESTBOXSCRIPT_BUILDS_USER="$2"; shift;;
    368368            "--builds-server-passwd")   TESTBOXSCRIPT_BUILDS_PASSWD="$2"; shift;;
     369            "--builds-server-mountopt") TESTBOXSCRIPT_BUILDS_MOUNTOPT="$2"; shift;;
    369370            "--testrsrc-path")          TESTBOXSCRIPT_TESTRSRC_PATH="$2"; shift;;
    370371            "--testrsrc-server-type")   TESTBOXSCRIPT_TESTRSRC_TYPE="$2"; shift;;
     
    373374            "--testrsrc-server-user")   TESTBOXSCRIPT_TESTRSRC_USER="$2"; shift;;
    374375            "--testrsrc-server-passwd") TESTBOXSCRIPT_TESTRSRC_PASSWD="$2"; shift;;
     376            "--testrsrc-server-mountopt") TESTBOXSCRIPT_TESTRSRC_MOUNTOPT="$2"; shift;;
    375377            "--putenv")
    376378                MY_FOUND=no
     
    498500#
    499501TESTBOXSCRIPT_CFG_NAMES="DIR PYTHON USER HWVIRT IOMMU NESTED_PAGING SYSTEM_UUID PATH_TESTRSRC TEST_MANAGER SCRATCH_ROOT"
    500 TESTBOXSCRIPT_CFG_NAMES="${TESTBOXSCRIPT_CFG_NAMES}   BUILDS_PATH   BUILDS_TYPE   BUILDS_NAME   BUILDS_SHARE   BUILDS_USER   BUILDS_PASSWD"
    501 TESTBOXSCRIPT_CFG_NAMES="${TESTBOXSCRIPT_CFG_NAMES} TESTRSRC_PATH TESTRSRC_TYPE TESTRSRC_NAME TESTRSRC_SHARE TESTRSRC_USER TESTRSRC_PASSWD"
     502TESTBOXSCRIPT_CFG_NAMES="${TESTBOXSCRIPT_CFG_NAMES}   BUILDS_PATH   BUILDS_TYPE   BUILDS_NAME   BUILDS_SHARE   BUILDS_USER   BUILDS_PASSWD   BUILDS_MOUNTOPT"
     503TESTBOXSCRIPT_CFG_NAMES="${TESTBOXSCRIPT_CFG_NAMES} TESTRSRC_PATH TESTRSRC_TYPE TESTRSRC_NAME TESTRSRC_SHARE TESTRSRC_USER TESTRSRC_PASSWD TESTRSRC_MOUNTOPT"
    502504
    503505# testboxscript.py option to config mappings.
     
    520522TESTBOXSCRIPT_OPT_BUILDS_USER="--builds-server-user"
    521523TESTBOXSCRIPT_OPT_BUILDS_PASSWD="--builds-server-passwd"
     524TESTBOXSCRIPT_OPT_BUILDS_MOUNTOPT="--builds-server-mountopt"
    522525TESTBOXSCRIPT_OPT_PATH_TESTRSRC="--testrsrc-path"
    523526TESTBOXSCRIPT_OPT_TESTRSRC_TYPE="--testrsrc-server-type"
     
    526529TESTBOXSCRIPT_OPT_TESTRSRC_USER="--testrsrc-server-user"
    527530TESTBOXSCRIPT_OPT_TESTRSRC_PASSWD="--testrsrc-server-passwd"
     531TESTBOXSCRIPT_OPT_TESTRSRC_MOUNTOPT="--testrsrc-server-mountopt"
    528532
    529533# Defaults:
     
    544548TESTBOXSCRIPT_DEFAULT_BUILDS_USER="guestr"
    545549TESTBOXSCRIPT_DEFAULT_BUILDS_PASSWD="guestr"
     550TESTBOXSCRIPT_DEFAULT_BUILDS_MOUNTOPT=""
    546551TESTBOXSCRIPT_DEFAULT_TESTRSRC_PATH=""
    547552TESTBOXSCRIPT_DEFAULT_TESTRSRC_TYPE="cifs"
     
    550555TESTBOXSCRIPT_DEFAULT_TESTRSRC_USER="guestr"
    551556TESTBOXSCRIPT_DEFAULT_TESTRSRC_PASSWD="guestr"
     557TESTBOXSCRIPT_DEFAULT_TESTRSRC_MOUNTOPT=""
    552558
    553559# Set config values to defaults.
     
    620626        --builds-server-user)       TESTBOXSCRIPT_BUILDS_USER="$2"; shift;;
    621627        --builds-server-passwd)     TESTBOXSCRIPT_BUILDS_PASSWD="$2"; shift;;
     628        --builds-server-mountopt)   TESTBOXSCRIPT_BUILDS_MOUNTOPT="$2"; shift;;
    622629        --testrsrc-path)            TESTBOXSCRIPT_TESTRSRC_PATH="$2"; shift;;
    623630        --testrsrc-server-type)     TESTBOXSCRIPT_TESTRSRC_TYPE="$2"; shift;;
     
    626633        --testrsrc-server-user)     TESTBOXSCRIPT_TESTRSRC_USER="$2"; shift;;
    627634        --testrsrc-server-passwd)   TESTBOXSCRIPT_TESTRSRC_PASSWD="$2"; shift;;
     635        --testrsrc-server-mountopt) TESTBOXSCRIPT_TESTRSRC_MOUNTOPT="$2"; shift;;
    628636        *)
    629637            echo 'Syntax error: Unknown option:' "$1" >&2;
  • trunk/src/VBox/ValidationKit/testboxscript/testboxscript_real.py

    r70660 r72259  
    248248        self._mountShare(self._oOptions.sBuildsPath, self._oOptions.sBuildsServerType, self._oOptions.sBuildsServerName,
    249249                         self._oOptions.sBuildsServerShare,
    250                          self._oOptions.sBuildsServerUser, self._oOptions.sBuildsServerPasswd, 'builds');
     250                         self._oOptions.sBuildsServerUser, self._oOptions.sBuildsServerPasswd,
     251                         self._oOptions.sBuildsServerMountOpt, 'builds');
    251252        self._mountShare(self._oOptions.sTestRsrcPath, self._oOptions.sTestRsrcServerType, self._oOptions.sTestRsrcServerName,
    252253                         self._oOptions.sTestRsrcServerShare,
    253                          self._oOptions.sTestRsrcServerUser, self._oOptions.sTestRsrcServerPasswd, 'testrsrc');
     254                         self._oOptions.sTestRsrcServerUser, self._oOptions.sTestRsrcServerPasswd,
     255                         self._oOptions.sTestRsrcServerMountOpt, 'testrsrc');
    254256        return True;
    255257
    256     def _mountShare(self, sMountPoint, sType, sServer, sShare, sUser, sPassword, sWhat):
     258    def _mountShare(self, sMountPoint, sType, sServer, sShare, sUser, sPassword, sMountOpt, sWhat):
    257259        """
    258260        Mounts the specified share if needed.
     
    273275        sHostOs = utils.getHostOs()
    274276        if sHostOs in ('darwin', 'freebsd'):
     277            if sMountOpt != '':
     278                sMountOpt = ',' + sMountOpt
    275279            utils.sudoProcessCall(['/sbin/umount', sMountPoint]);
    276280            utils.sudoProcessCall(['/bin/mkdir', '-p', sMountPoint]);
     
    278282            if sType == 'cifs':
    279283                # Note! no smb://server/share stuff here, 10.6.8 didn't like it.
    280                 utils.processOutputChecked(['/sbin/mount_smbfs', '-o', 'automounted,nostreams,soft,noowners,noatime,rdonly',
     284                utils.processOutputChecked(['/sbin/mount_smbfs',
     285                                            '-o',
     286                                            'automounted,nostreams,soft,noowners,noatime,rdonly' + sMountOpt,
    281287                                            '-f', '0555', '-d', '0555',
    282288                                            '//%s:%s@%s/%s' % (sUser, sPassword, sServer, sShare),
     
    286292
    287293        elif sHostOs == 'linux':
     294            if sMountOpt != '':
     295                sMountOpt = ',' + sMountOpt
    288296            utils.sudoProcessCall(['/bin/umount', sMountPoint]);
    289297            utils.sudoProcessCall(['/bin/mkdir', '-p', sMountPoint]);
     
    296304                                                + ',uid=' + str(os.getuid()) # pylint: disable=E1101
    297305                                                + ',gid=' + str(os.getgid()) # pylint: disable=E1101
    298                                                 + ',nounix,file_mode=0555,dir_mode=0555,soft,ro',
     306                                                + ',nounix,file_mode=0555,dir_mode=0555,soft,ro'
     307                                                + sMountOpt,
    299308                                                '//%s/%s' % (sServer, sShare),
    300309                                                sMountPoint]);
    301310            elif sType == 'nfs':
    302311                utils.sudoProcessOutputChecked(['/bin/mount', '-t', 'nfs',
    303                                                 '-o', 'soft,ro',
     312                                                '-o', 'soft,ro' + sMountOpt,
    304313                                                '%s:%s' % (sServer, sShare if sShare.find('/') >= 0 else ('/export/' + sShare)),
    305314                                                sMountPoint]);
     
    309318
    310319        elif sHostOs == 'solaris':
     320            if sMountOpt != '':
     321                sMountOpt = ',' + sMountOpt
    311322            utils.sudoProcessCall(['/sbin/umount', sMountPoint]);
    312323            utils.sudoProcessCall(['/bin/mkdir', '-p', sMountPoint]);
     
    321332                                                + ',uid=' + str(os.getuid()) # pylint: disable=E1101
    322333                                                + ',gid=' + str(os.getgid()) # pylint: disable=E1101
    323                                                 + ',fileperms=0555,dirperms=0555,noxattr,ro',
     334                                                + ',fileperms=0555,dirperms=0555,noxattr,ro'
     335                                                + sMountOpt,
    324336                                                '//%s/%s' % (sServer, sShare),
    325337                                                sMountPoint],
     
    328340            elif sType == 'nfs':
    329341                utils.sudoProcessOutputChecked(['/sbin/mount', '-F', 'nfs',
    330                                                 '-o', 'noxattr,ro',
     342                                                '-o', 'noxattr,ro' + sMountOpt,
    331343                                                '%s:%s' % (sServer, sShare if sShare.find('/') >= 0 else ('/export/' + sShare)),
    332344                                                sMountPoint]);
     
    950962                              dest=sPrefix + 'ServerPasswd', metavar='<password>', default='guestr',
    951963                              help='The password to use when accessing the ' + sDesc + ' share.');
     964            parser.add_option('--' + sLower + '-server-mountopt',
     965                              dest=sPrefix + 'ServerMountOpt', metavar='<mountopt>', default='',
     966                              help='The mount options to use when accessing the ' + sDesc + ' share.');
    952967
    953968        parser.add_option("--test-manager", metavar="<url>",
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette