On the latest centos 7 release, we are unable to resize our instances filesystems

Bug #1722992 reported by J-P methot
This bug affects 3 people
Affects Status Importance Assigned to Milestone
cloud-init (CentOS)

Bug Description

Since the CentOS 7 update to cloud-init 0.7.9, we've been unable to resize our instance's root drives. Of course, since root volume resize is not officially supported in openstack, what we do is a bit of hack. We basically shutdown the vm -> cinder reset-state --state available *volume id* -> cinder extend *volume id* *size* -> cinder reset-state --state in-use *volume-id* -> migrate the VM (to remake the iscsi mount) -> startup the VM. This increases the volume size and still works. The issue is when cloud-init needs to execute the growpart module.

See https://bugs.centos.org/view.php?id=13931

The only error we get is related to vendordata, which may be preventing the resize process to happen :
2017-09-28 02:01:43,641 - util.py[WARNING]: failed stage init
2017-09-28 02:01:43,641 - util.py[DEBUG]: failed stage init
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/cloudinit/cmd/main.py", line 513, in status_wrapper
    ret = functor(name, args)
  File "/usr/lib/python2.7/site-packages/cloudinit/cmd/main.py", line 281, in main_init
  File "/usr/lib/python2.7/site-packages/cloudinit/stages.py", line 357, in update
  File "/usr/lib/python2.7/site-packages/cloudinit/stages.py", line 381, in _store_vendordata
    util.write_file(self._get_ipath('vendordata_raw'), raw_vd, 0o600)
  File "/usr/lib/python2.7/site-packages/cloudinit/util.py", line 1755, in write_file
    content = encode_text(content)
  File "/usr/lib/python2.7/site-packages/cloudinit/util.py", line 154, in encode_text
    return text.encode(encoding)
AttributeError: 'dict' object has no attribute 'encode'

This is on openstack Ocata though, and the vendordata has always been empty, as we use the default settings for it.

Cloud provider: we are the cloud provider, PlanetHoster, using Openstack Ocata.
version: Cloud-init 0.7.9-9.el7.centos.2

relevant cloud-init config:

 - migrator
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - update_etc_hosts
 - rsyslog
 - users-groups
 - ssh

Revision history for this message
J-P methot (jphilippemethot) wrote :
Revision history for this message
Scott Moser (smoser) wrote :

Any datasource that uses convert_vendordata is possibly affected.

This is bad in that it fails, but not as bad as it could be. Cloud-init
itself never re-constitutes the blob on disk. Its only a convenience for
the user.

What we should do:
 a.) always have vendordata_raw be bytes
 b.) write them as bytes to the file

We can still allow the datasource to use something like 'convert_vendordata'
intelligently to get types other than bytes. We just have to have
the 'get_vendordata' function access a different attribute in the datasource.

- DataSource.vendordata_raw should always be the raw bytes as found.
- get_vendordata would then use some other attribuate 'vendordata_converted' (?) to take advantage of the datasource specific knowlege.

Changed in cloud-init:
status: New → Confirmed
importance: Undecided → Medium
Revision history for this message
J-P methot (jphilippemethot) wrote :

After reading this comment, I still have a few question:

Regarding the vendordata error, is it confirmed that it's really the issue preventing growpart from running, or are the two problems unrelated?

Additionally, for the time being, is there a way I could circumvent that bug? Like setting some random, inconsequential vendor data in openstack so that it's not empty, for example?

Revision history for this message
J-P methot (jphilippemethot) wrote :

Added cloud.cfg for reference

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.