Bug 1381511

Summary: Code for config drive incorrectly counts primary partitions
Product: Red Hat OpenStack Reporter: Yolanda Robla <yroblamo>
Component: python-ironic-libAssignee: Lucas Alvares Gomes <lmartins>
Status: CLOSED ERRATA QA Contact: Sergii Nozhka <snozhka>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 10.0 (Newton)CC: apevec, dmacpher, dtantsur, jjoyce, jschluet, lhh, mburns, mcornea, rhel-osp-director-maint, snozhka, srevivo
Target Milestone: rcKeywords: Triaged
Target Release: 10.0 (Newton)   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python-ironic-lib-2.1.1-2.el7ost Doc Type: Bug Fix
Doc Text:
OpenStack Bare Metal (ironic) provides user data to new nodes through the creation of a configdrive as an extra primary partition. This requires a free primary partition available on the node's disk. However, a bug caused OpenStack Bare Metal to not distinguish between primary and extended partitions, which caused the partition count to report no free partitions available for the configdrive. This fix distinguishes between primary and extended partitions. Deployments now succeed without error.
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-12-14 16:07:17 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1355903    

Description Yolanda Robla 2016-10-04 10:57:59 UTC
I'm hitting an error when using full disk images, and extended partitions. My disk is having just a primary partition, but also has swap and extended partition. Output from parted is something like:

 "BYT;
1:1.00MiB:4768MiB:4767MiB:ext4::boot;
2:4768MiB:5722MiB:954MiB:xfs::;
3:5722MiB:7168MiB:1446MiB:::lba;
5:5722MiB:5865MiB:143MiB:linux-swap(v1)::;
6:5865MiB:6247MiB:381MiB:xfs::;
7:6247MiB:7168MiB:921MiB:xfs::;"

When i try to deploy, I hit the error:

Exception: Deploy failed for instance 0c786f46-6552-4309-8c6d-99c01d013696. Error: Config drive cannot be created for node da9d1550-c531-4cc8-b91f-c3d96fd52ff7. Disk uses MBR partitioning and already has 5 primary partitions.

That is because code on list_partitions() is just using a simple regex and counting all partitions without considering the type, leading to incorrect interpretation.

Please note that image partitions with ironic is a real use case. Specially in terms of security, having different partitions for /boot, /var, /home, etc... is really needed. So that use case shall be supported.

Comment 1 Lucas Alvares Gomes 2016-10-04 18:25:32 UTC
Thanks for reporting Yolanda. I've uploaded a fix for Ironic [0] today and will backport it to OSP when we get it merged upstream.

[0] https://review.openstack.org/#/c/381893/1

Comment 2 Dmitry Tantsur 2016-11-11 12:14:52 UTC
We need to propose a backport for stable/newton.

Comment 3 Dmitry Tantsur 2016-11-14 10:58:00 UTC
Newton backport was posted

Comment 5 Sergii Nozhka 2016-11-21 12:59:17 UTC
The issue not reproduced with python-ironic-lib-2.1.1-2.el7ost.noarch.

Comment 8 errata-xmlrpc 2016-12-14 16:07:17 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHEA-2016-2948.html