Thanks for the bug report.

Jerome: How can we ensure to have the old 2.x settings / targets in 3.x ?


On Saturday 04 October 2014 11:00 PM, Chris Boot wrote:
Package: targetcli
Version: 3.0+git0.7e32595e-2
Severity: grave
Justification: renders package unusable

Dear Maintainer,

The upgrade from targetcli 2.1-1 removes all targets and makes targetcli
unusable.

1. Removing lio-utils disables/removes all targets from the kernel. This is a
    serious problem on something like a storage server.

2. Once you can manage to run targetcli (see #XXXXXX), you are greeted with an
    error: "This RTSRoot does not exist in configFS."

tarquin bootc # targetcli
This RTSRoot does not exist in configFS.
targetcli GIT_VERSION (rtslib GIT_VERSION)
Copyright (c) 2011-2014 by Datera, Inc.
All rights reserved.

3. Performing an 'ls' lists no available target modules and only the pscsi
    backstore module:

/> ls
o- / .................................................................... [...]
   o- backstores ......................................................... [...]
     o- pscsi ............................................... [0 Storage Object]
/>

4. When you try to exit, targetcli tries to look in /var/target/policy and
    explodes because that directory doesn't exist:

/> exit
Traceback (most recent call last):
   File "/usr/lib/python2.7/dist-packages/configshell/shell.py", line 990, in 
run_interactive
     self._cli_loop()
   File "/usr/lib/python2.7/dist-packages/configshell/shell.py", line 820, in 
_cli_loop
     self.run_cmdline(cmdline)
   File "/usr/lib/python2.7/dist-packages/configshell/shell.py", line 934, in 
run_cmdline
     self._execute_command(path, command, pparams, kparams)
   File "/usr/lib/python2.7/dist-packages/configshell/shell.py", line 909, in 
_execute_command
     result = target.execute_command(command, pparams, kparams)
   File "/usr/lib/python2.7/dist-packages/targetcli/ui_node.py", line 103, in 
execute_command
     pparams, kparams)
   File "/usr/lib/python2.7/dist-packages/configshell/node.py", line 1416, in 
execute_command
     result = method(*pparams, **kparams)
   File "/usr/lib/python2.7/dist-packages/targetcli/ui_node.py", line 115, in 
ui_command_exit
     config = Config()
   File "/usr/lib/python2.7/dist-packages/rtslib/config.py", line 133, in 
__init__
     self._load_policy()
   File "/usr/lib/python2.7/dist-packages/rtslib/config.py", line 140, in 
_load_policy
     for path in os.listdir(self.policy_dir)
OSError: [Errno 2] No such file or directory: '/var/target/policy'
/>

5. If you create the directory you still can't exit because of the error
    described in point 2:

/> exit
This RTSRoot does not exist in configFS.
/>

The only way to escape this seems to be to kill targetcli from another window.

6. 'service target stop' followed by 'service target start', then re-entering
    targetcli allows all the various target types to become available again.

7. Trying to exit at this point (without making any changes) bombs out again:

/> exit
Traceback (most recent call last):
   File "/usr/lib/python2.7/dist-packages/configshell/shell.py", line 990, in 
run_interactive
     self._cli_loop()
   File "/usr/lib/python2.7/dist-packages/configshell/shell.py", line 820, in 
_cli_loop
     self.run_cmdline(cmdline)
   File "/usr/lib/python2.7/dist-packages/configshell/shell.py", line 934, in 
run_cmdline
     self._execute_command(path, command, pparams, kparams)
   File "/usr/lib/python2.7/dist-packages/configshell/shell.py", line 909, in 
_execute_command
     result = target.execute_command(command, pparams, kparams)
   File "/usr/lib/python2.7/dist-packages/targetcli/ui_node.py", line 103, in 
execute_command
     pparams, kparams)
   File "/usr/lib/python2.7/dist-packages/configshell/node.py", line 1416, in 
execute_command
     result = method(*pparams, **kparams)
   File "/usr/lib/python2.7/dist-packages/targetcli/ui_node.py", line 119, in 
ui_command_exit
     config.load_live()
   File "/usr/lib/python2.7/dist-packages/rtslib/config.py", line 562, in 
load_live
     source=source, allow_new_attrs=True)
   File "/usr/lib/python2.7/dist-packages/rtslib/config.py", line 190, in 
_load_parse_tree
     token = self.validate_obj(token, cur)
   File "/usr/lib/python2.7/dist-packages/rtslib/config.py", line 385, in 
validate_obj
     raise ConfigError("Unknown object type: %s" % obj_type)
ConfigError: Unknown object type: fabric
/>

I am now trying to get my targets running again, which I am having to do by
using the bits of targetcli that work and manual changes in
/sys/kernel/config/target. I can't 'savechanges' in targetcli either.

I am not impressed.

HTH,
Chris

-- System Information:
Debian Release: jessie/sid
   APT prefers testing
   APT policy: (990, 'testing'), (500, 'testing-updates'), (500, 'unstable'), 
(1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.14-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages targetcli depends on:
ii  python              2.7.8-1
ii  python-configshell  1.5+git0.0827baa6-2
ii  python-rtslib       3.0+git0.86e46bc6-2

targetcli recommends no packages.

targetcli suggests no packages.

-- no debconf information


--
Ritesh Raj Sarraf
RESEARCHUT - http://www.researchut.com
"Necessity is the mother of invention."

Reply via email to