Add unit-conversion-and-relative-sizing spec

Change-Id: I12c6c53f6e83fc4167942165a7015ed095b060e4
This commit is contained in:
Max Lobur 2016-02-10 12:34:18 +02:00
parent 99973fdd68
commit 7a4b7d1fca
1 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,72 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
========================================
Size unit conversion and relative sizing
========================================
https://blueprints.launchpad.net/bareon/+spec/size-unit-conversion-and-relative-sizing
Problem description
===================
The only size unit Bareon currently supports is MiB. Users often want to use
both GiB and MiB, as well as relative sizes like 50%, which is impossible.
Proposed change
===============
NOTE: This is a contribution of the feature developed within Cray OpenStack project.
We will try to make a minimum changes to existing code.
All “size” values are strings containing either an integer number and size
unit (e.g., “100 MiB” or 100MiB”).
Available measurement units are:
- MB, GB, TB, PB, EB, ZB, YB,
- MiB, GiB, TiB, PiB, EiB, ZiB, YiB
Also relative values are supported for partition, pv and lv.
Relative values use the size of the containing device or volume group as a
base. For example, specifying “40%” for a 100MiB disk would result in a
40MiB partition. Obviously, relative sizes cannot be used for disks.
The user can also specify “remaining” as a size value for a volume in a disk
or in a volume group. When “remaining” is specified, all remaining free space on
the drive after allocations are made for all other volumes will be used for
this volume.
All the conversion is done in Ironic data driver, before the schema is mapped to
object model. Internally we continue to use MiB everywhere.
Alternatives
------------
None.
Implementation
==============
Assignee(s)
-----------
- max_lobur
Milestones
----------
See blueprint ref above.
Work Items
----------
- rebase on bareon master.
Dependencies
============
None.