[RFE] Move configdrive to an auxiliary table
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ironic |
Triaged
|
Wishlist
|
Unassigned |
Bug Description
Config drive can be a large base64 encoded blob of information. Given the current maximum size of 64M, the text version can be up to ~85M in size. In deployments without Swift, all this enormous amount of information is stored inside instance_info and thus loaded/saved on every database operation with the node during deployment. Fortunately, being a secret, it's not passed through API by default, but it does get passed through the RPC bus every time the node is loaded.
In reality, the configdrive is only written and loaded once per deployment. We can save a lot of database and RPC traffic by not having it as part of the Nodes table.
Let us create a new model ConfigDrive with only two fields: node_id (primary key, foreign key to nodes) and data (large text, JSON encoded). As with other subresources, it will be loaded by a TaskManager on demand. For backward compatibility, the reading code will also check instance_info.
TBD: strictly speaking, this is an API-visible change, even if the only thing that disappear for most consumers is 6 star symbols hiding the configdrive. Should we microversion around it?
description: | updated |
tags: |
added: rfe-approved removed: rfe |
tags: | added: low-hanging-fruit |