Statistics
| Branch: | Tag: | Revision:

root / doc / design-device-uuid-name.rst @ 87c7621a

History | View | Annotate | Download (2.8 kB)

1 f1a84264 Christos Stavrakakis
==========================================
2 f1a84264 Christos Stavrakakis
Design for adding UUID and name to devices
3 f1a84264 Christos Stavrakakis
==========================================
4 f1a84264 Christos Stavrakakis
5 f1a84264 Christos Stavrakakis
.. contents:: :depth: 4
6 f1a84264 Christos Stavrakakis
7 f1a84264 Christos Stavrakakis
This is a design document about adding UUID and name to instance devices
8 f1a84264 Christos Stavrakakis
(Disks/NICs) and the ability to reference them by those identifiers.
9 f1a84264 Christos Stavrakakis
10 f1a84264 Christos Stavrakakis
11 f1a84264 Christos Stavrakakis
Current state and shortcomings
12 f1a84264 Christos Stavrakakis
==============================
13 f1a84264 Christos Stavrakakis
14 f1a84264 Christos Stavrakakis
Currently, the only way to refer to a device (Disk/NIC) is by its index
15 f1a84264 Christos Stavrakakis
inside the VM (e.g. gnt-instance modify --disk 2:remove).
16 f1a84264 Christos Stavrakakis
17 f1a84264 Christos Stavrakakis
Using indices as identifiers has the drawback that addition/removal of a
18 f1a84264 Christos Stavrakakis
device results in changing the identifiers(indices) of other devices and
19 f1a84264 Christos Stavrakakis
makes the net effect of commands depend on their strict ordering. A
20 f1a84264 Christos Stavrakakis
device reference is not absolute, meaning an external entity controlling
21 f1a84264 Christos Stavrakakis
Ganeti, e.g., over RAPI, cannot keep permanent identifiers for referring
22 f1a84264 Christos Stavrakakis
to devices, nor can it have more than one outstanding commands, since
23 f1a84264 Christos Stavrakakis
their order of execution is not guaranteed.
24 f1a84264 Christos Stavrakakis
25 f1a84264 Christos Stavrakakis
26 f1a84264 Christos Stavrakakis
Proposed Changes
27 f1a84264 Christos Stavrakakis
================
28 f1a84264 Christos Stavrakakis
29 f1a84264 Christos Stavrakakis
To be able to reference a device in a unique way, we propose to extend
30 f1a84264 Christos Stavrakakis
Disks and NICs by assigning to them a UUID and a name. The UUID will be
31 f1a84264 Christos Stavrakakis
assigned by Ganeti upon creation, while the name will be an optional
32 f1a84264 Christos Stavrakakis
user parameter. Renaming a device will also be supported.
33 f1a84264 Christos Stavrakakis
34 f1a84264 Christos Stavrakakis
Commands (e.g. `gnt-instance modify`) will be able to reference each
35 f1a84264 Christos Stavrakakis
device by its index, UUID, or name. To be able to refer to devices by
36 f1a84264 Christos Stavrakakis
name, we must guarantee that device names are unique. Unlike other
37 f1a84264 Christos Stavrakakis
objects (instances, networks, nodegroups, etc.), NIC and Disk objects
38 f1a84264 Christos Stavrakakis
will not have unique names across the cluster, since they are still not
39 f1a84264 Christos Stavrakakis
independent entities, but rather part of the instance object. This makes
40 f1a84264 Christos Stavrakakis
global uniqueness of names hard to achieve at this point. Instead their
41 f1a84264 Christos Stavrakakis
names will be unique at instance level.
42 f1a84264 Christos Stavrakakis
43 f1a84264 Christos Stavrakakis
Apart from unique device names, we must also guarantee that a device
44 f1a84264 Christos Stavrakakis
name can not be the UUID of another device. Also, to remove ambiguity
45 f1a84264 Christos Stavrakakis
while supporting both indices and names as identifiers, we forbid purely
46 f1a84264 Christos Stavrakakis
numeric device names.
47 f1a84264 Christos Stavrakakis
48 f1a84264 Christos Stavrakakis
49 f1a84264 Christos Stavrakakis
Implementation Details
50 f1a84264 Christos Stavrakakis
======================
51 f1a84264 Christos Stavrakakis
52 f1a84264 Christos Stavrakakis
Modify OpInstanceSetParams to accept not only indexes, but also device
53 f1a84264 Christos Stavrakakis
names and UUIDs. So, the accepted NIC and disk modifications will have
54 f1a84264 Christos Stavrakakis
the following format:
55 f1a84264 Christos Stavrakakis
56 f1a84264 Christos Stavrakakis
identifier:action,key=value
57 f1a84264 Christos Stavrakakis
58 f1a84264 Christos Stavrakakis
where, from now on, identifier can be an index (-1 for the last device),
59 f1a84264 Christos Stavrakakis
UUID, or name and action should be add, modify, or remove.
60 f1a84264 Christos Stavrakakis
61 f1a84264 Christos Stavrakakis
Configuration Changes
62 f1a84264 Christos Stavrakakis
~~~~~~~~~~~~~~~~~~~~~
63 f1a84264 Christos Stavrakakis
64 f1a84264 Christos Stavrakakis
Disk and NIC config objects get two extra slots:
65 f1a84264 Christos Stavrakakis
66 f1a84264 Christos Stavrakakis
- uuid
67 f1a84264 Christos Stavrakakis
- name
68 f1a84264 Christos Stavrakakis
69 f1a84264 Christos Stavrakakis
Instance Queries
70 f1a84264 Christos Stavrakakis
~~~~~~~~~~~~~~~~~
71 f1a84264 Christos Stavrakakis
72 f1a84264 Christos Stavrakakis
We will extend the query mechanism to expose names and UUIDs of NICs and
73 f1a84264 Christos Stavrakakis
Disks.
74 f1a84264 Christos Stavrakakis
75 f1a84264 Christos Stavrakakis
Hook Variables
76 f1a84264 Christos Stavrakakis
~~~~~~~~~~~~~~
77 f1a84264 Christos Stavrakakis
78 f1a84264 Christos Stavrakakis
We will expose the name of NICs and Disks to the hook environment of
79 f1a84264 Christos Stavrakakis
instance-related operations:
80 f1a84264 Christos Stavrakakis
81 f1a84264 Christos Stavrakakis
``INSTANCE_NIC%d_NAME``
82 f1a84264 Christos Stavrakakis
``INSTANCE_DISK%d_NAME``
83 f1a84264 Christos Stavrakakis
84 f1a84264 Christos Stavrakakis
.. vim: set textwidth=72 :
85 f1a84264 Christos Stavrakakis
.. Local Variables:
86 f1a84264 Christos Stavrakakis
.. mode: rst
87 f1a84264 Christos Stavrakakis
.. fill-column: 72
88 f1a84264 Christos Stavrakakis
.. End: