** Description changed:

+ [Impact]
+ 
+  * rbd-target-api service fails to start if there is a blocklist
+    entry for the unit making the service unavailable.
+ 
+  * When the rbd-target-api service starts it checks if any of the
+    ip addresses on the machine it is running on are listed as
+    blocked. If there are entries it tries to remove them. In the
+    process of removing the entries the code attempts to test whether
+    a string is in the result of a subprocess.check_output call. This 
+    would have worked in python2 but with python3 a byte like object
+    is returned and check now throws a TypeError. This fix, taken from
+    upstream, changes the code to remove the `in` check and replace it
+    with a try/except
+ 
+ [Test Plan]
+ 
+  If an existing ceph-iscsi deployment is available then skip to
+  step 3.
+ 
+  1) Deploy the bundle below (tested with OpenStack providor).
+  
+ series: focal
+ applications:
+   ceph-iscsi:
+     charm: cs:ceph-iscsi
+     num_units: 2
+   ceph-osd:
+     charm: ch:ceph-osd
+     num_units: 3
+     storage:
+       osd-devices: 'cinder,10G'
+     options:
+       osd-devices: '/dev/test-non-existent'
+     channel: latest/edge
+   ceph-mon:
+     charm: ch:ceph-mon
+     num_units: 3
+     options:
+       monitor-count: '3'
+     channel: latest/edge
+ relations:
+   - - 'ceph-mon:client'
+     - 'ceph-iscsi:ceph-client'
+   - - 'ceph-osd:mon'
+     - 'ceph-mon:osd'
+ 
+ 
+  2) Connect to ceph-iscsi unit:
+  
+ juju ssh -m zaza-a1d88053ab85 ceph-iscsi/0
+ 
+  3) Stop rbd-target-api via systemd to make test case clearer:
+ 
+ sudo systemctl stop rbd-target-api
+ 
+  4) Add 2 blocklist entries for this unit (due to another issue the
+ ordering of the output from `osd blacklist ls` matters which can lead to
+ the reproduction of this bug being intermittent. To avoid this add two
+ entries which ensures there is always an entry for this node in the list
+ of blocklist entries to be removed).
+ 
+ sudo ceph -n client.ceph-iscsi --conf /etc/ceph/iscsi/ceph.conf osd blacklist 
add $(hostname --all-ip-addresses | awk '{print $1}'):0/1
+ sudo ceph -n client.ceph-iscsi --conf /etc/ceph/iscsi/ceph.conf osd blacklist 
add $(hostname --all-ip-addresses | awk '{print $1}'):0/2
+ sudo ceph -n client.ceph-iscsi --conf /etc/ceph/iscsi/ceph.conf osd blacklist 
ls
+   listed 2 entries
+   172.20.0.135:0/2 2022-02-23T11:14:54.850352+0000
+   172.20.0.135:0/1 2022-02-23T11:14:52.502592+0000
+ 
+ 
+  5) Attempt to start service:
+ 
+ sudo /usr/bin/python3 /usr/bin/rbd-target-api
+ Traceback (most recent call last):
+   File "/usr/bin/rbd-target-api", line 2952, in <module>
+     main()
+   File "/usr/bin/rbd-target-api", line 2862, in main
+     osd_state_ok = ceph_gw.osd_blacklist_cleanup()
+   File "/usr/lib/python3/dist-packages/ceph_iscsi_config/gateway.py", line 
111, in osd_blacklist_cleanup
+     rm_ok = self.ceph_rm_blacklist(blacklist_entry.split(' ')[0])
+   File "/usr/lib/python3/dist-packages/ceph_iscsi_config/gateway.py", line 
46, in ceph_rm_blacklist
+     if ("un-blacklisting" in result) or ("isn't blacklisted" in result):
+ TypeError: a bytes-like object is required, not 'str'
+ 
+ 
+ [Where problems could occur]
+ 
+  * Problems could occur with the service starting as this blocklist check is 
done at startup.
+    
+  * Blocklist entries could fail to be removed.
+ 
+ Old bug description:
+ 
  $ lsb_release -rd
  Description:  Ubuntu 20.04 LTS
  Release:      20.04
  
  $ dpkg -S /usr/lib/python3/dist-packages/ceph_iscsi_config/gateway.py
  ceph-iscsi: /usr/lib/python3/dist-packages/ceph_iscsi_config/gateway.py
  
  $ apt-cache policy ceph-iscsi
  ceph-iscsi:
-   Installed: 3.4-0ubuntu2
-   Candidate: 3.4-0ubuntu2
-   Version table:
-  *** 3.4-0ubuntu2 500
-         500 http://de.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
-         500 http://de.archive.ubuntu.com/ubuntu focal/universe i386 Packages
-         100 /var/lib/dpkg/status
+   Installed: 3.4-0ubuntu2
+   Candidate: 3.4-0ubuntu2
+   Version table:
+  *** 3.4-0ubuntu2 500
+         500 http://de.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
+         500 http://de.archive.ubuntu.com/ubuntu focal/universe i386 Packages
+         100 /var/lib/dpkg/status
  
  On second startup after a reboot, rbd-target-api crashes with a
  TypeError:
  
  Traceback (most recent call last):
-   File "/usr/bin/rbd-target-api", line 2952, in <module>
-     main()
-   File "/usr/bin/rbd-target-api", line 2862, in main
-     osd_state_ok = ceph_gw.osd_blacklist_cleanup()
-   File "/usr/lib/python3/dist-packages/ceph_iscsi_config/gateway.py", line 
110, in osd_blacklist_cleanup
-     rm_ok = self.ceph_rm_blacklist(blacklist_entry.split(' ')[0])
-   File "/usr/lib/python3/dist-packages/ceph_iscsi_config/gateway.py", line 
46, in ceph_rm_blacklist
-     if ("un-blacklisting" in result) or ("isn't blacklisted" in result):
+   File "/usr/bin/rbd-target-api", line 2952, in <module>
+     main()
+   File "/usr/bin/rbd-target-api", line 2862, in main
+     osd_state_ok = ceph_gw.osd_blacklist_cleanup()
+   File "/usr/lib/python3/dist-packages/ceph_iscsi_config/gateway.py", line 
110, in osd_blacklist_cleanup
+     rm_ok = self.ceph_rm_blacklist(blacklist_entry.split(' ')[0])
+   File "/usr/lib/python3/dist-packages/ceph_iscsi_config/gateway.py", line 
46, in ceph_rm_blacklist
+     if ("un-blacklisting" in result) or ("isn't blacklisted" in result):
  TypeError: a bytes-like object is required, not 'str'
  
  Upstream has a fix: https://github.com/ceph/ceph-
  
iscsi/commit/e48dcb0d3099b27595b9f4433da8493f5edb9206#diff-f1381af4114a1e777ef5e8b7b7452a01

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1883112

Title:
  rbd-target-api crashes with python TypeError

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ceph-iscsi/+bug/1883112/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to