Revision c79198a0
b/lib/backend.py | ||
---|---|---|
301 | 301 |
|
302 | 302 |
@RunLocalHooks(constants.FAKE_OP_MASTER_TURNUP, "master-ip-turnup", |
303 | 303 |
_BuildMasterIpEnv) |
304 |
def ActivateMasterIp(master_ip, master_netmask, master_netdev, family):
|
|
304 |
def ActivateMasterIp(master_params):
|
|
305 | 305 |
"""Activate the IP address of the master daemon. |
306 | 306 |
|
307 |
@param master_ip: the master IP |
|
308 |
@param master_netmask: the master IP netmask |
|
309 |
@param master_netdev: the master network device |
|
310 |
@param family: the IP family |
|
307 |
@type master_params: L{objects.MasterNetworkParameters} |
|
308 |
@param master_params: network parameters of the master |
|
311 | 309 |
|
312 | 310 |
""" |
313 | 311 |
err_msg = None |
314 |
if netutils.TcpPing(master_ip, constants.DEFAULT_NODED_PORT): |
|
315 |
if netutils.IPAddress.Own(master_ip): |
|
312 |
if netutils.TcpPing(master_params.ip, constants.DEFAULT_NODED_PORT):
|
|
313 |
if netutils.IPAddress.Own(master_params.ip):
|
|
316 | 314 |
# we already have the ip: |
317 | 315 |
logging.debug("Master IP already configured, doing nothing") |
318 | 316 |
else: |
319 | 317 |
err_msg = "Someone else has the master ip, not activating" |
320 | 318 |
logging.error(err_msg) |
321 | 319 |
else: |
322 |
ipcls = netutils.IPAddress.GetClassFromIpFamily(family) |
|
320 |
ipcls = netutils.IPAddress.GetClassFromIpFamily(master_params.ip_family)
|
|
323 | 321 |
|
324 | 322 |
result = utils.RunCmd([constants.IP_COMMAND_PATH, "address", "add", |
325 |
"%s/%s" % (master_ip, master_netmask),
|
|
326 |
"dev", master_netdev, "label", |
|
327 |
"%s:0" % master_netdev]) |
|
323 |
"%s/%s" % (master_params.ip, master_params.netmask),
|
|
324 |
"dev", master_params.netdev, "label",
|
|
325 |
"%s:0" % master_params.netdev])
|
|
328 | 326 |
if result.failed: |
329 | 327 |
err_msg = "Can't activate master IP: %s" % result.output |
330 | 328 |
logging.error(err_msg) |
... | ... | |
332 | 330 |
else: |
333 | 331 |
# we ignore the exit code of the following cmds |
334 | 332 |
if ipcls == netutils.IP4Address: |
335 |
utils.RunCmd(["arping", "-q", "-U", "-c 3", "-I", master_netdev, "-s",
|
|
336 |
master_ip, master_ip])
|
|
333 |
utils.RunCmd(["arping", "-q", "-U", "-c 3", "-I", master_params.netdev,
|
|
334 |
"-s", master_params.ip, master_params.ip])
|
|
337 | 335 |
elif ipcls == netutils.IP6Address: |
338 | 336 |
try: |
339 |
utils.RunCmd(["ndisc6", "-q", "-r 3", master_ip, master_netdev]) |
|
337 |
utils.RunCmd(["ndisc6", "-q", "-r 3", master_params.ip, |
|
338 |
master_params.netdev]) |
|
340 | 339 |
except errors.OpExecError: |
341 | 340 |
# TODO: Better error reporting |
342 | 341 |
logging.warning("Can't execute ndisc6, please install if missing") |
... | ... | |
375 | 374 |
|
376 | 375 |
@RunLocalHooks(constants.FAKE_OP_MASTER_TURNDOWN, "master-ip-turndown", |
377 | 376 |
_BuildMasterIpEnv) |
378 |
def DeactivateMasterIp(master_ip, master_netmask, master_netdev, family):
|
|
377 |
def DeactivateMasterIp(master_params):
|
|
379 | 378 |
"""Deactivate the master IP on this node. |
380 | 379 |
|
381 |
@param master_ip: the master IP |
|
382 |
@param master_netmask: the master IP netmask |
|
383 |
@param master_netdev: the master network device |
|
384 |
@param family: the IP family |
|
380 |
@type master_params: L{objects.MasterNetworkParameters} |
|
381 |
@param master_params: network parameters of the master |
|
385 | 382 |
|
386 | 383 |
""" |
387 |
# pylint: disable=W0613 |
|
388 | 384 |
# TODO: log and report back to the caller the error failures; we |
389 | 385 |
# need to decide in which case we fail the RPC for this |
390 | 386 |
|
391 | 387 |
result = utils.RunCmd([constants.IP_COMMAND_PATH, "address", "del", |
392 |
"%s/%s" % (master_ip, master_netmask),
|
|
393 |
"dev", master_netdev]) |
|
388 |
"%s/%s" % (master_params.ip, master_params.netmask),
|
|
389 |
"dev", master_params.netdev])
|
|
394 | 390 |
if result.failed: |
395 | 391 |
logging.error("Can't remove the master IP, error: %s", result.output) |
396 | 392 |
# but otherwise ignore the failure |
b/lib/bootstrap.py | ||
---|---|---|
568 | 568 |
runner = rpc.BootstrapRunner() |
569 | 569 |
|
570 | 570 |
master_params = cfg.GetMasterNetworkParameters() |
571 |
result = runner.call_node_deactivate_master_ip(master, |
|
572 |
master_params.ip, |
|
573 |
master_params.netmask, |
|
574 |
master_params.netdev, |
|
575 |
master_params.ip_family) |
|
571 |
master_params.name = master |
|
572 |
result = runner.call_node_deactivate_master_ip(master_params.name, |
|
573 |
master_params) |
|
574 |
|
|
576 | 575 |
msg = result.fail_msg |
577 | 576 |
if msg: |
578 | 577 |
logging.warning("Could not disable the master IP: %s", msg) |
... | ... | |
712 | 711 |
|
713 | 712 |
runner = rpc.BootstrapRunner() |
714 | 713 |
master_params = cfg.GetMasterNetworkParameters() |
715 |
result = runner.call_node_deactivate_master_ip(old_master, |
|
716 |
master_params.ip, |
|
717 |
master_params.netmask, |
|
718 |
master_params.netdev, |
|
719 |
master_params.ip_family) |
|
714 |
master_params.name = old_master |
|
715 |
result = runner.call_node_deactivate_master_ip(master_params.name, |
|
716 |
master_params) |
|
717 |
|
|
720 | 718 |
msg = result.fail_msg |
721 | 719 |
if msg: |
722 | 720 |
logging.warning("Could not disable the master IP: %s", msg) |
b/lib/cmdlib.py | ||
---|---|---|
1361 | 1361 |
_RunPostHook(self, master_params.name) |
1362 | 1362 |
|
1363 | 1363 |
result = self.rpc.call_node_deactivate_master_ip(master_params.name, |
1364 |
master_params.ip, |
|
1365 |
master_params.netmask, |
|
1366 |
master_params.netdev, |
|
1367 |
master_params.ip_family) |
|
1364 |
master_params) |
|
1368 | 1365 |
result.Raise("Could not disable the master role") |
1369 | 1366 |
|
1370 | 1367 |
return master_params.name |
... | ... | |
3332 | 3329 |
# shutdown the master IP |
3333 | 3330 |
master_params = self.cfg.GetMasterNetworkParameters() |
3334 | 3331 |
result = self.rpc.call_node_deactivate_master_ip(master_params.name, |
3335 |
master_params.ip, |
|
3336 |
master_params.netmask, |
|
3337 |
master_params.netdev, |
|
3338 |
master_params.ip_family) |
|
3332 |
master_params) |
|
3339 | 3333 |
result.Raise("Could not disable the master role") |
3340 | 3334 |
|
3341 | 3335 |
try: |
... | ... | |
3353 | 3347 |
pass |
3354 | 3348 |
_UploadHelper(self, node_list, constants.SSH_KNOWN_HOSTS_FILE) |
3355 | 3349 |
finally: |
3350 |
master_params.ip = new_ip |
|
3356 | 3351 |
result = self.rpc.call_node_activate_master_ip(master_params.name, |
3357 |
new_ip, |
|
3358 |
master_params.netmask, |
|
3359 |
master_params.netdev, |
|
3360 |
master_params.ip_family) |
|
3352 |
master_params) |
|
3361 | 3353 |
msg = result.fail_msg |
3362 | 3354 |
if msg: |
3363 | 3355 |
self.LogWarning("Could not re-enable the master role on" |
... | ... | |
3715 | 3707 |
feedback_fn("Shutting down master ip on the current netdev (%s)" % |
3716 | 3708 |
self.cluster.master_netdev) |
3717 | 3709 |
result = self.rpc.call_node_deactivate_master_ip(master_params.name, |
3718 |
master_params.ip, |
|
3719 |
master_params.netmask, |
|
3720 |
master_params.netdev, |
|
3721 |
master_params.ip_family) |
|
3710 |
master_params) |
|
3722 | 3711 |
result.Raise("Could not disable the master ip") |
3723 | 3712 |
feedback_fn("Changing master_netdev from %s to %s" % |
3724 | 3713 |
(master_params.netdev, self.op.master_netdev)) |
... | ... | |
3746 | 3735 |
feedback_fn("Starting the master ip on the new master netdev (%s)" % |
3747 | 3736 |
self.op.master_netdev) |
3748 | 3737 |
result = self.rpc.call_node_activate_master_ip(master_params.name, |
3749 |
master_params.ip, |
|
3750 |
master_params.netmask, |
|
3751 |
master_params.netdev, |
|
3752 |
master_params.ip_family) |
|
3738 |
master_params) |
|
3753 | 3739 |
if result.fail_msg: |
3754 | 3740 |
self.LogWarning("Could not re-enable the master ip on" |
3755 | 3741 |
" the master, please restart manually: %s", |
... | ... | |
3913 | 3899 |
""" |
3914 | 3900 |
master_params = self.cfg.GetMasterNetworkParameters() |
3915 | 3901 |
self.rpc.call_node_activate_master_ip(master_params.name, |
3916 |
master_params.ip, |
|
3917 |
master_params.netmask, |
|
3918 |
master_params.netdev, |
|
3919 |
master_params.ip_family) |
|
3902 |
master_params) |
|
3920 | 3903 |
|
3921 | 3904 |
|
3922 | 3905 |
class LUClusterDeactivateMasterIp(NoHooksLU): |
... | ... | |
3928 | 3911 |
|
3929 | 3912 |
""" |
3930 | 3913 |
master_params = self.cfg.GetMasterNetworkParameters() |
3931 |
self.rpc.call_node_deactivate_master_ip(master_params.name, |
|
3932 |
master_params.ip, |
|
3933 |
master_params.netmask, |
|
3934 |
master_params.netdev, |
|
3935 |
master_params.ip_family) |
|
3914 |
self.rpc.call_node_deactivate_master_ip(master_params.name, master_params) |
|
3936 | 3915 |
|
3937 | 3916 |
|
3938 | 3917 |
def _WaitForSync(lu, instance, disks=None, oneshot=False): |
b/lib/config.py | ||
---|---|---|
939 | 939 |
|
940 | 940 |
""" |
941 | 941 |
cluster = self._config_data.cluster |
942 |
result = objects.MasterNetworkParameters(cluster.master_node, |
|
943 |
cluster.master_ip, |
|
944 |
cluster.master_netdev,
|
|
945 |
cluster.master_netmask,
|
|
946 |
cluster.primary_ip_family) |
|
942 |
result = objects.MasterNetworkParameters(name=cluster.master_node,
|
|
943 |
ip=cluster.master_ip,
|
|
944 |
netmask=cluster.master_netmask,
|
|
945 |
netdev=cluster.master_netdev,
|
|
946 |
ip_family=cluster.primary_ip_family)
|
|
947 | 947 |
|
948 | 948 |
return result |
949 | 949 |
|
b/lib/rpc_defs.py | ||
---|---|---|
399 | 399 |
("no_voting", None, None), |
400 | 400 |
], None, "Starts master daemons on a node"), |
401 | 401 |
("node_activate_master_ip", SINGLE, TMO_FAST, [ |
402 |
("master_ip", None, "The master IP"), |
|
403 |
("master_netmask", None, "The master IP netmask"), |
|
404 |
("master_netdev", None, "The master network device"), |
|
405 |
("ip_family", None, "The cluster IP family"), |
|
402 |
("master_params", ED_OBJECT_DICT, "Network parameters of the master"), |
|
406 | 403 |
], None, |
407 | 404 |
"Activates master IP on a node"), |
408 | 405 |
("node_stop_master", SINGLE, TMO_FAST, [], None, |
409 | 406 |
"Deactivates master IP and stops master daemons on a node"), |
410 | 407 |
("node_deactivate_master_ip", SINGLE, TMO_FAST, [ |
411 |
("master_ip", None, "The master IP"), |
|
412 |
("master_netmask", None, "The master IP netmask"), |
|
413 |
("master_netdev", None, "The master network device"), |
|
414 |
("ip_family", None, "The cluster IP family"), |
|
408 |
("master_params", ED_OBJECT_DICT, "Network parameters of the master"), |
|
415 | 409 |
], None, |
416 | 410 |
"Deactivates master IP on a node"), |
417 | 411 |
("node_change_master_netmask", SINGLE, TMO_FAST, [ |
b/lib/server/masterd.py | ||
---|---|---|
537 | 537 |
master_params = cfg.GetMasterNetworkParameters() |
538 | 538 |
runner = rpc.BootstrapRunner() |
539 | 539 |
result = runner.call_node_activate_master_ip(master_params.name, |
540 |
master_params.ip, |
|
541 |
master_params.netmask, |
|
542 |
master_params.netdev, |
|
543 |
master_params.ip_family) |
|
540 |
master_params) |
|
544 | 541 |
|
545 | 542 |
msg = result.fail_msg |
546 | 543 |
if msg: |
b/lib/server/noded.py | ||
---|---|---|
697 | 697 |
"""Activate the master IP on this node. |
698 | 698 |
|
699 | 699 |
""" |
700 |
return backend.ActivateMasterIp(params[0], params[1], params[2], params[3]) |
|
700 |
master_params = objects.MasterNetworkParameters.FromDict(params[0]) |
|
701 |
return backend.ActivateMasterIp(master_params) |
|
701 | 702 |
|
702 | 703 |
@staticmethod |
703 | 704 |
def perspective_node_deactivate_master_ip(params): |
704 | 705 |
"""Deactivate the master IP on this node. |
705 | 706 |
|
706 | 707 |
""" |
707 |
return backend.DeactivateMasterIp(params[0], params[1], params[2],
|
|
708 |
params[3])
|
|
708 |
master_params = objects.MasterNetworkParameters.FromDict(params[0])
|
|
709 |
return backend.DeactivateMasterIp(master_params)
|
|
709 | 710 |
|
710 | 711 |
@staticmethod |
711 | 712 |
def perspective_node_stop_master(params): |
Also available in: Unified diff