open-iscsi / rtslib-fb

Python library for configuring the Linux kernel-based multiprotocol SCSI target (LIO)
Apache License 2.0
72 stars 90 forks source link

fail to save due to invalid literal for attributes #108

Closed nak3 closed 7 years ago

nak3 commented 7 years ago

issue

When I save (exit) targetcli shell, I am getting following error.

Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Traceback (most recent call last):
  File "/usr/bin/targetcli", line 121, in <module>
    main()
  File "/usr/bin/targetcli", line 117, in main
    root_node.ui_command_saveconfig()
  File "/usr/lib/python3.6/site-packages/targetcli/ui_root.py", line 90, in ui_command_saveconfig
    self.rtsroot.save_to_file(savefile)
  File "/usr/lib/python3.6/site-packages/rtslib_fb/root.py", line 270, in save_to_file
    f.write(json.dumps(self.dump(), sort_keys=True, indent=2))
  File "/usr/lib/python3.6/site-packages/rtslib_fb/root.py", line 160, in dump
    d['storage_objects'] = [so.dump() for so in self.storage_objects]
  File "/usr/lib/python3.6/site-packages/rtslib_fb/root.py", line 160, in <listcomp>
    d['storage_objects'] = [so.dump() for so in self.storage_objects]
  File "/usr/lib/python3.6/site-packages/rtslib_fb/tcm.py", line 839, in dump
    d = super(UserBackedStorageObject, self).dump()
  File "/usr/lib/python3.6/site-packages/rtslib_fb/tcm.py", line 294, in dump
    d = super(StorageObject, self).dump()
  File "/usr/lib/python3.6/site-packages/rtslib_fb/node.py", line 217, in dump
    attrs[item] = int(self.get_attribute(item))

step to reproduce

NOTE: sorry, I am premised on using tcmu-runner.

1. create dummy file

qemu-img create -f qcow2 /tmp/test.img 3G

2. start targetcli shell

# targetcli 
targetcli shell version 2.1.fb46
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/>

3. create backstore with string attributes and exit

/> backstores/user:qcow create cfgstring=/tmp/test.img name=test.img size=3G
Created user-backed storage object test.img size 3221225472.
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Traceback (most recent call last):
  File "/usr/bin/targetcli", line 121, in <module>
    main()
  File "/usr/bin/targetcli", line 117, in main
    root_node.ui_command_saveconfig()
  File "/usr/lib/python3.6/site-packages/targetcli/ui_root.py", line 90, in ui_command_saveconfig
    self.rtsroot.save_to_file(savefile)
  File "/usr/lib/python3.6/site-packages/rtslib_fb/root.py", line 270, in save_to_file
    f.write(json.dumps(self.dump(), sort_keys=True, indent=2))
  File "/usr/lib/python3.6/site-packages/rtslib_fb/root.py", line 160, in dump
    d['storage_objects'] = [so.dump() for so in self.storage_objects]
  File "/usr/lib/python3.6/site-packages/rtslib_fb/root.py", line 160, in <listcomp>
    d['storage_objects'] = [so.dump() for so in self.storage_objects]
  File "/usr/lib/python3.6/site-packages/rtslib_fb/tcm.py", line 839, in dump
    d = super(UserBackedStorageObject, self).dump()
  File "/usr/lib/python3.6/site-packages/rtslib_fb/tcm.py", line 294, in dump
    d = super(StorageObject, self).dump()
  File "/usr/lib/python3.6/site-packages/rtslib_fb/node.py", line 217, in dump
    attrs[item] = int(self.get_attribute(item))
ValueError: invalid literal for int() with base 10: 'qcow//tmp/test.img'