Statistics
| Branch: | Tag: | Revision:

root / doc / design-2.0-cluster-parameters.rst @ 132b4ba2

History | View | Annotate | Download (4 kB)

1 132b4ba2 Alexander Schreiber
Ganeti 2.0 cluster parameters
2 132b4ba2 Alexander Schreiber
=============================
3 132b4ba2 Alexander Schreiber
4 132b4ba2 Alexander Schreiber
.. contents::
5 132b4ba2 Alexander Schreiber
6 132b4ba2 Alexander Schreiber
Objective
7 132b4ba2 Alexander Schreiber
---------
8 132b4ba2 Alexander Schreiber
9 132b4ba2 Alexander Schreiber
With the introduction of the HVM hypervisor in Ganeti 1.2 and the
10 132b4ba2 Alexander Schreiber
implementation of multiple hypervisor support in Ganeti 2.0, the way
11 132b4ba2 Alexander Schreiber
the cluster parameters are handled needs to be reorganized accordingly.
12 132b4ba2 Alexander Schreiber
13 132b4ba2 Alexander Schreiber
Background
14 132b4ba2 Alexander Schreiber
----------
15 132b4ba2 Alexander Schreiber
16 132b4ba2 Alexander Schreiber
When the HVM hypervisor was introduced in Ganeti 1.2, the additional
17 132b4ba2 Alexander Schreiber
instance parameters needed for it were simply added to the instance
18 132b4ba2 Alexander Schreiber
namespace, as were additional parameters for the PVM hypervisor.
19 132b4ba2 Alexander Schreiber
20 132b4ba2 Alexander Schreiber
As a result of this, wether a particular parameter is valid for the
21 132b4ba2 Alexander Schreiber
actual hypervisor could either be guessed from the name but only
22 132b4ba2 Alexander Schreiber
really checked by following the code using it.
23 132b4ba2 Alexander Schreiber
24 132b4ba2 Alexander Schreiber
This design doc aims to provide an approach to solve this.
25 132b4ba2 Alexander Schreiber
26 132b4ba2 Alexander Schreiber
Overview
27 132b4ba2 Alexander Schreiber
--------
28 132b4ba2 Alexander Schreiber
29 132b4ba2 Alexander Schreiber
The instance level hypervisor parameters will be moved into a separate
30 132b4ba2 Alexander Schreiber
sub-tree of the instance name space. Also, a mechanismum to allow for
31 132b4ba2 Alexander Schreiber
automatic checking and possibly validation of hypervisor parameters
32 132b4ba2 Alexander Schreiber
will be outlined.
33 132b4ba2 Alexander Schreiber
34 132b4ba2 Alexander Schreiber
35 132b4ba2 Alexander Schreiber
Detailed Design
36 132b4ba2 Alexander Schreiber
---------------
37 132b4ba2 Alexander Schreiber
38 132b4ba2 Alexander Schreiber
Hypervisor Parameter
39 132b4ba2 Alexander Schreiber
~~~~~~~~~~~~~~~~~~~~
40 132b4ba2 Alexander Schreiber
41 132b4ba2 Alexander Schreiber
A hypervisor parameter (or hypervisor specific parameter) is defined
42 132b4ba2 Alexander Schreiber
as a parameter that is interpreted by the hypervisor support code in
43 132b4ba2 Alexander Schreiber
Ganeti and usually is specific to a particular hypervisor (like the
44 132b4ba2 Alexander Schreiber
kernel path for PVM which makes no sense for HVM or KVM).
45 132b4ba2 Alexander Schreiber
46 132b4ba2 Alexander Schreiber
Cluster parameters
47 132b4ba2 Alexander Schreiber
~~~~~~~~~~~~~~~~~~
48 132b4ba2 Alexander Schreiber
49 132b4ba2 Alexander Schreiber
The cluster parameter namespace will be extended with cluster level
50 132b4ba2 Alexander Schreiber
hypervisor specific parameters. The typical expected use case for this
51 132b4ba2 Alexander Schreiber
is to store default values for instance level hypervisor parameters.
52 132b4ba2 Alexander Schreiber
53 132b4ba2 Alexander Schreiber
54 132b4ba2 Alexander Schreiber
Instance parameters
55 132b4ba2 Alexander Schreiber
~~~~~~~~~~~~~~~~~~~
56 132b4ba2 Alexander Schreiber
57 132b4ba2 Alexander Schreiber
The only hypervisor parameter to remain at the top level of the
58 132b4ba2 Alexander Schreiber
instance namespace will be instance.hypervisor_type, specifying not
59 132b4ba2 Alexander Schreiber
only the hypervisor type to be used for that instance, but also
60 132b4ba2 Alexander Schreiber
implicitly the hypervisor type to use for parameter checks.
61 132b4ba2 Alexander Schreiber
62 132b4ba2 Alexander Schreiber
All other instance level hypervisor parameters will be moved into the
63 132b4ba2 Alexander Schreiber
instance.hypervisor_params namespace subtree.
64 132b4ba2 Alexander Schreiber
65 132b4ba2 Alexander Schreiber
The names for hypervisor parameters in the instance.hypervisor_params
66 132b4ba2 Alexander Schreiber
subtree should be choosen as generic as possible, especially if
67 132b4ba2 Alexander Schreiber
specific parameters could conceivably be useful for more than one
68 132b4ba2 Alexander Schreiber
hypervisor, e.g.
69 132b4ba2 Alexander Schreiber
instance.hypervisor_params.vnc_console_port instead of using both
70 132b4ba2 Alexander Schreiber
instance.hypervisor_params.hvm_vnc_console_port and
71 132b4ba2 Alexander Schreiber
instance.hypervisor_params.kvm_vnc_console_port.
72 132b4ba2 Alexander Schreiber
73 132b4ba2 Alexander Schreiber
The instance.hypervisor_params subtree will be implemented as a dict.
74 132b4ba2 Alexander Schreiber
75 132b4ba2 Alexander Schreiber
Examples for instance level hypervisor parameters:
76 132b4ba2 Alexander Schreiber
77 132b4ba2 Alexander Schreiber
:boot_order: boot device order
78 132b4ba2 Alexander Schreiber
:vnc_bind_address: bind address for VNC console
79 132b4ba2 Alexander Schreiber
:vnc_bind_port: bind port for VNC console
80 132b4ba2 Alexander Schreiber
:kernel_path: path to the kernel binary
81 132b4ba2 Alexander Schreiber
:disk_type: type of the virtual disk interface
82 132b4ba2 Alexander Schreiber
83 132b4ba2 Alexander Schreiber
With this design, hypervisor specific parameters for disk and NIC
84 132b4ba2 Alexander Schreiber
devices are defined globally for all devices of that type in the instance.
85 132b4ba2 Alexander Schreiber
It may become necessary later to allow setting these parameters on a
86 132b4ba2 Alexander Schreiber
per device basis, which will require design changes to the cluster
87 132b4ba2 Alexander Schreiber
parameters.
88 132b4ba2 Alexander Schreiber
89 132b4ba2 Alexander Schreiber
All other, non hypervisor related parameters of the instance remain at
90 132b4ba2 Alexander Schreiber
the top level of the instance namespace. This includes:
91 132b4ba2 Alexander Schreiber
92 132b4ba2 Alexander Schreiber
- disks
93 132b4ba2 Alexander Schreiber
- nics
94 132b4ba2 Alexander Schreiber
- mem
95 132b4ba2 Alexander Schreiber
- vcpu
96 132b4ba2 Alexander Schreiber
- status
97 132b4ba2 Alexander Schreiber
- OS
98 132b4ba2 Alexander Schreiber
99 132b4ba2 Alexander Schreiber
100 132b4ba2 Alexander Schreiber
101 132b4ba2 Alexander Schreiber
Hypervisor support requirements
102 132b4ba2 Alexander Schreiber
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
103 132b4ba2 Alexander Schreiber
104 132b4ba2 Alexander Schreiber
To support the new cluster parameter design, additional features will
105 132b4ba2 Alexander Schreiber
be required from the hypervisor support implementations in Ganeti.
106 132b4ba2 Alexander Schreiber
107 132b4ba2 Alexander Schreiber
The hypervisor support  implementation API will be extended with the
108 132b4ba2 Alexander Schreiber
following features:
109 132b4ba2 Alexander Schreiber
110 132b4ba2 Alexander Schreiber
:GetValidClusterParameters(): returns a list of valid cluster level
111 132b4ba2 Alexander Schreiber
  parameters for this hypervisor,
112 132b4ba2 Alexander Schreiber
:GetValidInstanceParameters(): provide a list of valid instance level
113 132b4ba2 Alexander Schreiber
  parameters for this hypervisor,
114 132b4ba2 Alexander Schreiber
:VerifyParameter(parameter_name, parameter_value): verifies the
115 132b4ba2 Alexander Schreiber
  provided parameter against this hypervisor:
116 132b4ba2 Alexander Schreiber
117 132b4ba2 Alexander Schreiber
  - if the provided parameter name is valid for this hypervisor
118 132b4ba2 Alexander Schreiber
  - if applicable, if the provided value is valid for this hypervisor
119 132b4ba2 Alexander Schreiber
120 132b4ba2 Alexander Schreiber
The VerifyParameter(..) function will return True or False.
121 132b4ba2 Alexander Schreiber
122 132b4ba2 Alexander Schreiber
123 132b4ba2 Alexander Schreiber
The parameter validation will be used for every addition or change of
124 132b4ba2 Alexander Schreiber
hypervisor parameters.