Note that resource-classes was already moved but the redirects file wasn't updated, that's fixed here. There are some partial blueprints that were marked completed in mitaka and are still being worked in newton, like the config option work. I've moved those to implemented here also. Change-Id: I16f279b4794127cb7abc40ffc22cc237702d14ed
3.1 KiB
Persist RequestSpec object
https://blueprints.launchpad.net/nova/+spec/persist-request-spec
Persist the RequestSpec object used for scheduling an instance.
Problem description
There are a few times that it would be useful to have the RequestSpec used for originally scheduling an instance where it is not currently available, such as during a resize/migrate. In order to have later scheduling requests operate under the same constraints as the original we should retain the RequestSpec for these later scheduling calls.
Going forward with cells it will be necessary to store a RequestSpec before an instance is created so that the API can return details on the instance before it has been scheduled.
Use Cases
- Operators/users want to move an instance through a migration or resize and want the destination to satisfy the same requirements as the source.
Proposed change
A save() method will be added to the RequestSpec object. This will store the RequestSpec in the database. Since this is also a part of the cells effort it will be possible to stor in both the api and regular nova database. Which database it's stored in on save() will be determined by the context used.
Alternatives
Parts of it could be put into the instance_extra table. Because later this will be persisted in the api database before scheduling and then moved to the cell database after scheduling it is beneficial to just store it in a table that can exist in both.
Data model impact
A new database table will be added to both the api and cell database. The schema will match what is necessary for the RequestSpec object to be stored. Since it is not yet implemented it's of little use to finalize the design here.
REST API impact
None
Security impact
None
Notifications impact
None
Other end user impact
None here, but this will allow for resizes to be scheduled like the original boot request.
Performance Impact
An additional database write will be incurred.
Other deployer impact
Same as for users, nothing here but this opens up future changes.
Developer impact
None
Implementation
Assignee(s)
- Primary assignee:
-
alaski
Work Items
- Add a new table to the api and cell/current database
- Add the save() method to the RequestSpec object
- Call the save() method in the code at the appropriate place
Dependencies
https://blueprints.launchpad.net/nova/+spec/request-spec-object
Testing
New unit tests will be added. This is not externally facing in a way that Tempest can test.
Documentation Impact
Devref documentation will be added explaining the existence of this data for use in scheduling.
References
None