Hi,
Having installed Ocata manila-share on ubuntu 16.04 with zfs 0.6.5 and locale de_DE.UTF-8, manila share is not starting. Log File shows a problem with the share status information when executing zpool command to get the share parameters. Logfile with debug option shows a problem with the output string evaluation of the zpool command:
2017-08-30 21:01:54.178 2851 DEBUG manila.share.manager [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Start initialization of driver: 'ZFSonLinuxShareDriver@storageserver@zfs' init_host /usr/lib/python2.7/dist-packages/manila/share/manager.py:274
2017-08-30 21:01:54.179 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Running cmd (subprocess): which exportfs execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:01:54.205 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] CMD "which exportfs" returned: 0 in 0.026s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:01:54.207 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Running cmd (subprocess): sudo manila-rootwrap /etc/manila/rootwrap.conf exportfs execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:01:54.889 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] CMD "sudo manila-rootwrap /etc/manila/rootwrap.conf exportfs" returned: 0 in 0.682s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:01:54.891 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Running cmd (subprocess): modinfo zfs execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:01:54.918 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] CMD "modinfo zfs" returned: 0 in 0.028s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:01:54.921 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Running cmd (subprocess): sudo manila-rootwrap /etc/manila/rootwrap.conf mount --make-rshared /crzfpool01 execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:01:55.588 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] CMD "sudo manila-rootwrap /etc/manila/rootwrap.conf mount --make-rshared /crzfpool01" returned: 0 in 0.668s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:01:55.605 2851 DEBUG manila.share.manager [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Re-exporting 0 shares init_host /usr/lib/python2.7/dist-packages/manila/share/manager.py:295
2017-08-30 21:01:55.606 2851 INFO manila.share.manager [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Updating share status
2017-08-30 21:01:55.608 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Running cmd (subprocess): sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get free crzfpool01 execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:01:56.174 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] CMD "sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get free crzfpool01" returned: 0 in 0.566s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:01:56.175 2851 DEBUG manila.share.drivers.zfsonlinux.driver [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Value free size = '7,25T' _get_pools_info /usr/lib/python2.7/dist-packages/manila/share/drivers/zfsonlinux/driver.py:355
2017-08-30 21:01:56.177 2851 DEBUG manila.share.drivers.zfsonlinux.driver [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Value free size after translate_string = 'None' _get_pools_info /usr/lib/python2.7/dist-packages/manila/share/drivers/zfsonlinux/driver.py:357
2017-08-30 21:01:56.178 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Running cmd (subprocess): sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get size crzfpool01 execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:01:56.843 2851 DEBUG oslo_concurrency.processutils [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] CMD "sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get size crzfpool01" returned: 0 in 0.665s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:01:56.845 2851 DEBUG manila.share.drivers.zfsonlinux.driver [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Value total size = 'None' _get_pools_info /usr/lib/python2.7/dist-packages/manila/share/drivers/zfsonlinux/driver.py:359
2017-08-30 21:01:56.845 2851 DEBUG manila.share.drivers.zfsonlinux.driver [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Value total size after translate_string = 'None' _get_pools_info /usr/lib/python2.7/dist-packages/manila/share/drivers/zfsonlinux/driver.py:361
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service [req-a300bfec-ca40-4a3f-97bd-722bd6aa0654 - - - - -] Error starting thread.
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service Traceback (most recent call last):
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/oslo_service/service.py", line 722, in run_service
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service service.start()
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/service.py", line 124, in start
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service self.manager.init_host()
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/share/manager.py", line 167, in wrapped
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service return f(self, *args, **kwargs)
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/share/manager.py", line 377, in init_host
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service self.publish_service_capabilities(ctxt)
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/share/manager.py", line 167, in wrapped
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service return f(self, *args, **kwargs)
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/utils.py", line 519, in wrapper
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service return func(self, *args, **kwargs)
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/share/manager.py", line 3126, in publish_service_capabilities
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service self._report_driver_status(context)
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/utils.py", line 519, in wrapper
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service return func(self, *args, **kwargs)
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/share/manager.py", line 3090, in _report_driver_status
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service share_stats = self.driver.get_share_stats(refresh=True)
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/share/driver.py", line 793, in get_share_stats
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service self._update_share_stats()
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/share/drivers/zfsonlinux/driver.py", line 385, in _update_share_stats
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service 'pools': self._get_pools_info(),
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service File "/usr/lib/python2.7/dist-packages/manila/share/drivers/zfsonlinux/driver.py", line 364, in _get_pools_info
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service 'total_capacity_gb': float(total_size),
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service TypeError: float() argument must be a string or a number
2017-08-30 21:01:56.846 2851 ERROR oslo_service.service
2017-08-30 21:01:56.852 2851 DEBUG oslo_concurrency.lockutils [req-7bafeba1-ed12-431c-9aa8-06f531ba8abd - - - - -] Acquired semaphore "singleton_lock" lock /usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:215
2017-08-30 21:01:56.852 2851 DEBUG oslo_concurrency.lockutils [req-7bafeba1-ed12-431c-9aa8-06f531ba8abd - - - - -] Releasing semaphore "singleton_lock" lock /usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:228
2017-08-30 21:01:56.871 2819 INFO oslo_service.service [req-7bafeba1-ed12-431c-9aa8-06f531ba8abd - - - - -] Child 2851 exited with status 1
2017-08-30 21:01:56.875 2819 DEBUG oslo_service.service [req-7bafeba1-ed12-431c-9aa8-06f531ba8abd - - - - -] Started child 2872 _start_child /usr/lib/python2.7/dist-packages/oslo_service/service.py:514
2017-08-30 21:01:56.883 2872 INFO manila.service [-] Starting manila-share node (version 4.0.0)
2017-08-30 21:01:56.905 2872 DEBUG manila.coordination [req-a6e72152-02d7-4b4b-b6c0-87048e5fa85d - - - - -] This tooz lock management back end does not support heart beats. start /usr/lib/python2.7/dist-packages/manila/coordination.py:95
2017-08-30 21:23:51.211 6090 INFO manila.coordination [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Coordination back end started successfully.
2017-08-30 21:23:51.211 6090 DEBUG oslo_db.api [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Loading backend 'sqlalchemy' from 'manila.db.sqlalchemy.api' _load_backend /usr/lib/python2.7/dist-packages/oslo_db/api.py:238
2017-08-30 21:23:51.610 6090 DEBUG oslo_db.sqlalchemy.engines [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] MySQL server mode set to STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION _check_effective_sql_mode /usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/engines.py:261
2017-08-30 21:23:51.786 6090 DEBUG manila.service [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Creating RPC server for service manila-share. start /usr/lib/python2.7/dist-packages/manila/service.py:116
2017-08-30 21:23:51.814 6090 DEBUG manila.share.manager [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Start initialization of driver: 'ZFSonLinuxShareDriver@storageserver@zfs' init_host /usr/lib/python2.7/dist-packages/manila/share/manager.py:274
2017-08-30 21:23:51.815 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Running cmd (subprocess): which exportfs execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:23:51.841 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] CMD "which exportfs" returned: 0 in 0.026s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:23:51.842 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Running cmd (subprocess): sudo manila-rootwrap /etc/manila/rootwrap.conf exportfs execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:23:52.489 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] CMD "sudo manila-rootwrap /etc/manila/rootwrap.conf exportfs" returned: 0 in 0.647s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:23:52.491 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Running cmd (subprocess): modinfo zfs execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:23:52.517 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] CMD "modinfo zfs" returned: 0 in 0.027s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:23:52.520 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Running cmd (subprocess): sudo manila-rootwrap /etc/manila/rootwrap.conf mount --make-rshared /crzfpool01 execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:23:53.180 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] CMD "sudo manila-rootwrap /etc/manila/rootwrap.conf mount --make-rshared /crzfpool01" returned: 0 in 0.661s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:23:53.196 6090 DEBUG manila.share.manager [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Re-exporting 0 shares init_host /usr/lib/python2.7/dist-packages/manila/share/manager.py:295
2017-08-30 21:23:53.198 6090 INFO manila.share.manager [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Updating share status
2017-08-30 21:23:53.200 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Running cmd (subprocess): sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get free crzfpool01 execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:23:53.751 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] CMD "sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get free crzfpool01" returned: 0 in 0.552s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:23:53.753 6090 DEBUG manila.share.drivers.zfsonlinux.driver [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Value free size = '7,25T' _get_pools_info /usr/lib/python2.7/dist-packages/manila/share/drivers/zfsonlinux/driver.py:355
2017-08-30 21:23:53.754 6090 DEBUG manila.share.drivers.zfsonlinux.driver [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Value free size after translate_string = 'None' _get_pools_info /usr/lib/python2.7/dist-packages/manila/share/drivers/zfsonlinux/driver.py:357
2017-08-30 21:23:53.755 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] Running cmd (subprocess): sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get size crzfpool01 execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:355
2017-08-30 21:23:53.809 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] CMD "sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get size crzfpool01" returned: -15 in 0.054s execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:385
2017-08-30 21:23:53.810 6090 DEBUG oslo_concurrency.processutils [req-8302c88f-c966-4138-bbde-c2e74bc5812d - - - - -] u'sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get size crzfpool01' failed. Not Retrying. execute /usr/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:433
2017-08-30 21:23:53.810 6062 INFO oslo_service.service [req-4d246449-5326-42c6-af30-ae9307f2fd6b - - - - -] Caught SIGTERM, stopping children
2017-08-30 21:23:53.812 6062 DEBUG oslo_concurrency.lockutils [req-4d246449-5326-42c6-af30-ae9307f2fd6b - - - - -] Acquired semaphore "singleton_lock" lock /usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:215
2017-08-30 21:23:53.812 6062 DEBUG oslo_concurrency.lockutils [req-4d246449-5326-42c6-af30-ae9307f2fd6b - - - - -] Releasing semaphore "singleton_lock" lock /usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:228
2017-08-30 21:23:53.812 6062 DEBUG oslo_service.service [req-4d246449-5326-42c6-af30-ae9307f2fd6b - - - - -] Stop services. stop /usr/lib/python2.7/dist-packages/oslo_service/service.py:625
2017-08-30 21:23:53.813 6062 INFO manila.coordination [req-4d246449-5326-42c6-af30-ae9307f2fd6b - - - - -] Stopped Coordinator (Agent ID: ca81aa78-0a9e-42ba-8b39-8851cece3b09, prefix: manila-)
2017-08-30 21:23:53.813 6062 DEBUG oslo_service.service [req-4d246449-5326-42c6-af30-ae9307f2fd6b - - - - -] Killing children. stop /usr/lib/python2.7/dist-packages/oslo_service/service.py:630
2017-08-30 21:23:53.814 6062 INFO oslo_service.service [req-4d246449-5326-42c6-af30-ae9307f2fd6b - - - - -] Waiting on 1 children to exit
2017-08-30 21:23:53.823 6062 INFO oslo_service.service [req-4d246449-5326-42c6-af30-ae9307f2fd6b - - - - -] Child 6090 killed by signal 15
Having added two debug statements to the driver.py code in /usr/lib/python2.7/dist-packages/manila/share/drivers/zfsonlinux/driver.py, line 355,357,359:
def _get_pools_info(self):
"""Returns info about all pools used by backend."""
pools = []
for zpool in self.zpool_list:
free_size = self.get_zpool_option(zpool, 'free')
LOG.debug( "Value free size = '%s' " % free_size)
free_size = utils.translate_string_size_to_float(free_size)
LOG.debug( "Value free size after translate_string = '%s' " % free_size)
total_size = self.get_zpool_option(zpool, 'size')
LOG.debug( "Value total size = '%s' " % total_size)
total_size = utils.translate_string_size_to_float(total_size)
LOG.debug( "Value total size after translate_string = '%s' " % total_size)
pool = {
'pool_name': zpool,
'total_capacity_gb': float(total_size),
'free_capacity_gb': float(free_size),
'reserved_percentage':
self.configuration.reserved_share_percentage,
}
pool.update(self.common_capabilities)
if self.configuration.replication_domain:
pool['replication_type'] = 'readable'
pools.append(pool)
return pools
it shows that the output of the zpool command cause a type error as the it seems that the output of the function utils.translate_string_size_to_float in line 356 of driver.py returns weird result (see above). Also abnormal as result from this is a return code of -15 when executing the command "sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get size crzfpool01".
when executing "sudo manila-rootwrap /etc/manila/rootwrap.conf zpool get size crzfpool01" from shell, command result looks like:
NAME PROPERTY VALUE SOURCE
crzfpool01 size 7,25T -
Note the comma: it is due to the fact that my locale value LC_NUMERIC is set to de_DE.UTF-8.
When I set locale to POSIX resp. en_US.UTF-8, manila-share starts as designed.
This means in fact that manila-share with zfsonlinux can only be started when Locale is set to POSIX and not to any other value which changes the decimal separator from '.' to any other character like ','. This is from my perspective not desirable.
Code needs to be added to support other locale than POSIX
Thanx!
Br Clemens
[Update]
Could somebody check whether this would be a suitable candidate for a fix? (NOTE: I am NOT a python expert ;-))
In /usr/lib/ python2. 7/dist- packages/ manila/ utils.py, line 523
def translate_ string_ size_to_ float(string, multiplier='G'):
"""Translates human-readable storage size to float value.
Supported values for 'multiplier' are following:
K - kilo | 1
M - mega | 1024
G - giga | 1024 * 1024
T - tera | 1024 * 1024 * 1024
P = peta | 1024 * 1024 * 1024 * 1024
returns: multipliers) )) ManilaException (
"' multiplier' arg should be one of following: "
"' %(multipliers) s'. But it is '%(multiplier)s'." % {
'multiplier' : multiplier,
'multipliers' : "', '".join( multipliers) , \.*\d*) ([%s])$ " % ','.join( multipliers) , string) [\.\,]* \d*)([% s])$" % ','.join( multipliers) , string) groups( )[0])
multiplier = mapping[ matched. groups( )[1]] / mapping[multiplier]
- float if correct input data provided
- None if incorrect
"""
if not isinstance(string, six.string_types):
return None
multipliers = ('K', 'M', 'G', 'T', 'P')
mapping = {
k: 1024.0 ** v
for k, v in zip(multipliers, range(len(
}
if multiplier not in multipliers:
raise exception.
}
)
try:
value = float(string) / 1024.0
value = value / mapping[multiplier]
return value
except (ValueError, TypeError):
matched = re.match(
--> OLD r"^(\d+
--> NEW r"^(\d+
if matched:
value = float(matched.
return value * multiplier
Just a try ;-)