Revision 0ea11dcb
b/htools/Ganeti/Objects.hs | ||
---|---|---|
426 | 426 |
$(buildParam "ND" "ndp" |
427 | 427 |
[ simpleField "oob_program" [t| String |] |
428 | 428 |
, simpleField "spindle_count" [t| Int |] |
429 |
, simpleField "exclusive_storage" [t| Bool |] |
|
429 | 430 |
]) |
430 | 431 |
|
431 | 432 |
$(buildObject "Node" "node" $ |
b/lib/constants.py | ||
---|---|---|
942 | 942 |
# Node parameter names |
943 | 943 |
ND_OOB_PROGRAM = "oob_program" |
944 | 944 |
ND_SPINDLE_COUNT = "spindle_count" |
945 |
ND_EXCLUSIVE_STORAGE = "exclusive_storage" |
|
945 | 946 |
|
946 | 947 |
NDS_PARAMETER_TYPES = { |
947 | 948 |
ND_OOB_PROGRAM: VTYPE_STRING, |
948 | 949 |
ND_SPINDLE_COUNT: VTYPE_INT, |
950 |
ND_EXCLUSIVE_STORAGE: VTYPE_BOOL, |
|
949 | 951 |
} |
950 | 952 |
|
951 | 953 |
NDS_PARAMETERS = frozenset(NDS_PARAMETER_TYPES.keys()) |
... | ... | |
953 | 955 |
NDS_PARAMETER_TITLES = { |
954 | 956 |
ND_OOB_PROGRAM: "OutOfBandProgram", |
955 | 957 |
ND_SPINDLE_COUNT: "SpindleCount", |
958 |
ND_EXCLUSIVE_STORAGE: "ExclusiveStorage", |
|
956 | 959 |
} |
957 | 960 |
|
958 | 961 |
# Logical Disks parameters |
... | ... | |
1842 | 1845 |
NDC_DEFAULTS = { |
1843 | 1846 |
ND_OOB_PROGRAM: "", |
1844 | 1847 |
ND_SPINDLE_COUNT: 1, |
1848 |
ND_EXCLUSIVE_STORAGE: False, |
|
1845 | 1849 |
} |
1846 | 1850 |
|
1847 | 1851 |
DISK_LD_DEFAULTS = { |
b/man/ganeti.rst | ||
---|---|---|
116 | 116 |
hard-drives, its meaning is site-local and just the relative values |
117 | 117 |
matter. |
118 | 118 |
|
119 |
exclusive_storage |
|
120 |
When this Boolean flag is enabled, physical disks on the node are |
|
121 |
assigned to instance disks in an exclusive manner, so as to lower I/O |
|
122 |
interference between instances. See the `Partitioned Ganeti |
|
123 |
<design-partitioned.rst>`_ design document for more details. |
|
124 |
|
|
119 | 125 |
|
120 | 126 |
Hypervisor State Parameters |
121 | 127 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
b/test/ganeti.config_unittest.py | ||
---|---|---|
201 | 201 |
my_ndparams = { |
202 | 202 |
constants.ND_OOB_PROGRAM: "/bin/node-oob", |
203 | 203 |
constants.ND_SPINDLE_COUNT: 1, |
204 |
constants.ND_EXCLUSIVE_STORAGE: False, |
|
204 | 205 |
} |
205 | 206 |
|
206 | 207 |
cfg = self._get_object() |
... | ... | |
209 | 210 |
cfg.Update(node, None) |
210 | 211 |
self.assertEqual(cfg.GetNdParams(node), my_ndparams) |
211 | 212 |
|
213 |
def testGetNdParamsInheritance(self): |
|
214 |
node_ndparams = { |
|
215 |
constants.ND_OOB_PROGRAM: "/bin/node-oob", |
|
216 |
} |
|
217 |
group_ndparams = { |
|
218 |
constants.ND_SPINDLE_COUNT: 10, |
|
219 |
} |
|
220 |
expected_ndparams = { |
|
221 |
constants.ND_OOB_PROGRAM: "/bin/node-oob", |
|
222 |
constants.ND_SPINDLE_COUNT: 10, |
|
223 |
constants.ND_EXCLUSIVE_STORAGE: |
|
224 |
constants.NDC_DEFAULTS[constants.ND_EXCLUSIVE_STORAGE], |
|
225 |
} |
|
226 |
cfg = self._get_object() |
|
227 |
node = cfg.GetNodeInfo(cfg.GetNodeList()[0]) |
|
228 |
node.ndparams = node_ndparams |
|
229 |
cfg.Update(node, None) |
|
230 |
group = cfg.GetNodeGroup(node.group) |
|
231 |
group.ndparams = group_ndparams |
|
232 |
cfg.Update(group, None) |
|
233 |
self.assertEqual(cfg.GetNdParams(node), expected_ndparams) |
|
234 |
|
|
212 | 235 |
def testAddGroupFillsFieldsIfMissing(self): |
213 | 236 |
cfg = self._get_object() |
214 | 237 |
group = objects.NodeGroup(name="test", members=[]) |
b/test/ganeti.objects_unittest.py | ||
---|---|---|
79 | 79 |
} |
80 | 80 |
ndparams = { |
81 | 81 |
constants.ND_OOB_PROGRAM: "/bin/cluster-oob", |
82 |
constants.ND_SPINDLE_COUNT: 1 |
|
82 |
constants.ND_SPINDLE_COUNT: 1, |
|
83 |
constants.ND_EXCLUSIVE_STORAGE: False, |
|
83 | 84 |
} |
84 | 85 |
|
85 | 86 |
self.fake_cl = objects.Cluster(hvparams=hvparams, os_hvp=os_hvp, |
... | ... | |
164 | 165 |
group_ndparams = { |
165 | 166 |
constants.ND_OOB_PROGRAM: "/bin/group-oob", |
166 | 167 |
constants.ND_SPINDLE_COUNT: 10, |
168 |
constants.ND_EXCLUSIVE_STORAGE: True, |
|
167 | 169 |
} |
168 | 170 |
fake_group = objects.NodeGroup(name="testgroup", |
169 | 171 |
ndparams=group_ndparams) |
... | ... | |
174 | 176 |
node_ndparams = { |
175 | 177 |
constants.ND_OOB_PROGRAM: "/bin/node-oob", |
176 | 178 |
constants.ND_SPINDLE_COUNT: 2, |
179 |
constants.ND_EXCLUSIVE_STORAGE: True, |
|
177 | 180 |
} |
178 | 181 |
fake_node = objects.Node(name="test", |
179 | 182 |
ndparams=node_ndparams, |
... | ... | |
187 | 190 |
node_ndparams = { |
188 | 191 |
constants.ND_OOB_PROGRAM: "/bin/node-oob", |
189 | 192 |
constants.ND_SPINDLE_COUNT: 5, |
193 |
constants.ND_EXCLUSIVE_STORAGE: True, |
|
190 | 194 |
} |
191 | 195 |
fake_node = objects.Node(name="test", |
192 | 196 |
ndparams=node_ndparams, |
Also available in: Unified diff