Revision 9684d509

b/doc/design-2.3.rst
7 7

  
8 8
.. contents:: :depth: 4
9 9

  
10
Detailed design
11
===============
12

  
13 10
As for 2.1 and 2.2 we divide the 2.3 design into three areas:
14 11

  
15 12
- core changes, which affect the master daemon/job queue/locking or
......
18 15
- external interface changes (e.g. command line, os api, hooks, ...)
19 16

  
20 17
Core changes
21
------------
18
============
22 19

  
23 20
Job priorities
24
~~~~~~~~~~~~~~
21
--------------
25 22

  
26 23
Current state and shortcomings
27
++++++++++++++++++++++++++++++
24
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28 25

  
29 26
.. TODO: Describe current situation
30 27

  
31 28
Proposed changes
32
++++++++++++++++
29
~~~~~~~~~~~~~~~~
33 30

  
34 31
.. TODO: Describe changes to job queue and potentially client programs
35 32

  
36 33
Worker pool
37
^^^^^^^^^^^
34
+++++++++++
38 35

  
39 36
To support job priorities in the job queue, the worker pool underlying
40 37
the job queue must be enhanced to support task priorities. Currently
......
69 66
priorities.
70 67

  
71 68
IPv6 support
72
~~~~~~~~~~~~
69
------------
73 70

  
74 71
Currently Ganeti does not support IPv6. This is true for nodes as well
75 72
as instances. Due to the fact that IPv4 exhaustion is threateningly near
......
77 74
bigger clusters are supported.
78 75

  
79 76
Supported IPv6 setup
80
++++++++++++++++++++
77
~~~~~~~~~~~~~~~~~~~~
81 78

  
82 79
In Ganeti 2.3 we introduce additionally to the ordinary pure IPv4
83 80
setup a hybrid IPv6/IPv4 mode. The latter works as follows:
......
102 99
boundaries.
103 100

  
104 101
netutils: Utilities for handling common network tasks
105
+++++++++++++++++++++++++++++++++++++++++++++++++++++
102
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
106 103

  
107 104
Currently common util functions are kept in the utils modules. Since
108 105
this module grows bigger and bigger network-related functions are moved
......
110 107
will be IPv6-enabled.
111 108

  
112 109
Cluster initialization
113
++++++++++++++++++++++
110
~~~~~~~~~~~~~~~~~~~~~~
114 111

  
115 112
As mentioned above there will be two different setups in terms of IP
116 113
addressing: pure IPv4 and hybrid IPv6/IPv4 address. To choose that a
117 114
new cluster init parameter *--primary-ip-version* is introduced. This is
118 115
needed as a given name can resolve to both an IPv4 and IPv6 address on a
119
dual-stack host effectively making it impossible to infer that bit. 
116
dual-stack host effectively making it impossible to infer that bit.
120 117

  
121 118
Once a cluster is initialized and the primary IP version chosen all
122 119
nodes that join have to conform to that setup. In the case of our
......
128 125
daemon listening on network sockets to the IPv6 address.
129 126

  
130 127
Node addition
131
+++++++++++++
128
~~~~~~~~~~~~~
132 129

  
133 130
When adding a new node to a IPv6/IPv4 cluster it must have a IPv6
134 131
address to be used as primary and a IPv4 address used as secondary. As
......
139 136
the correct address needs to be passed to it.
140 137

  
141 138
Name resolution
142
+++++++++++++++
139
~~~~~~~~~~~~~~~
143 140

  
144 141
Since the gethostbyname*() functions do not support IPv6 name resolution
145 142
will be done by using the recommended getaddrinfo().
146 143

  
147 144
IPv4-only components
148
++++++++++++++++++++
145
~~~~~~~~~~~~~~~~~~~~
149 146

  
150 147
============================  ===================  ====================
151 148
Component                     IPv6 Status          Planned Version
......
157 154

  
158 155

  
159 156
Feature changes
160
---------------
157
===============
161 158

  
162 159

  
163 160
External interface changes
164
--------------------------
161
==========================
165 162

  
166 163

  
167 164
.. vim: set textwidth=72 :

Also available in: Unified diff