Commit 3ccd3243 authored by Andrea Spadaccini's avatar Andrea Spadaccini
Browse files

Derive IP hooks env variables from RPC parameter



Let the environment variables of the master IP turnup/turndown be
derived from the parameter of the RPC itself (that is of type
objects.MasterNetworkParameters in both cases).
Signed-off-by: default avatarAndrea Spadaccini <spadaccio@google.com>
Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
parent c79198a0
...@@ -61,6 +61,7 @@ from ganeti import serializer ...@@ -61,6 +61,7 @@ from ganeti import serializer
from ganeti import netutils from ganeti import netutils
from ganeti import runtime from ganeti import runtime
from ganeti import mcpu from ganeti import mcpu
from ganeti import compat
_BOOT_ID_PATH = "/proc/sys/kernel/random/boot_id" _BOOT_ID_PATH = "/proc/sys/kernel/random/boot_id"
...@@ -259,7 +260,8 @@ def RunLocalHooks(hook_opcode, hooks_path, env_builder_fn): ...@@ -259,7 +260,8 @@ def RunLocalHooks(hook_opcode, hooks_path, env_builder_fn):
@param hooks_path: path of the hooks @param hooks_path: path of the hooks
@type env_builder_fn: function @type env_builder_fn: function
@param env_builder_fn: function that returns a dictionary containing the @param env_builder_fn: function that returns a dictionary containing the
environment variables for the hooks. environment variables for the hooks. Will get all the parameters of the
decorated function.
@raise RPCFail: in case of pre-hook failure @raise RPCFail: in case of pre-hook failure
""" """
...@@ -268,11 +270,13 @@ def RunLocalHooks(hook_opcode, hooks_path, env_builder_fn): ...@@ -268,11 +270,13 @@ def RunLocalHooks(hook_opcode, hooks_path, env_builder_fn):
_, myself = ssconf.GetMasterAndMyself() _, myself = ssconf.GetMasterAndMyself()
nodes = ([myself], [myself]) # these hooks run locally nodes = ([myself], [myself]) # these hooks run locally
env_fn = compat.partial(env_builder_fn, *args, **kwargs)
cfg = _GetConfig() cfg = _GetConfig()
hr = HooksRunner() hr = HooksRunner()
hm = mcpu.HooksMaster(hook_opcode, hooks_path, nodes, hr.RunLocalHooks, hm = mcpu.HooksMaster(hook_opcode, hooks_path, nodes, hr.RunLocalHooks,
None, env_builder_fn, logging.warning, None, env_fn, logging.warning, cfg.GetClusterName(),
cfg.GetClusterName(), cfg.GetMasterNode()) cfg.GetMasterNode())
hm.RunPhase(constants.HOOKS_PHASE_PRE) hm.RunPhase(constants.HOOKS_PHASE_PRE)
result = fn(*args, **kwargs) result = fn(*args, **kwargs)
...@@ -283,17 +287,19 @@ def RunLocalHooks(hook_opcode, hooks_path, env_builder_fn): ...@@ -283,17 +287,19 @@ def RunLocalHooks(hook_opcode, hooks_path, env_builder_fn):
return decorator return decorator
def _BuildMasterIpEnv(): def _BuildMasterIpEnv(master_params):
"""Builds environment variables for master IP hooks. """Builds environment variables for master IP hooks.
@type master_params: L{objects.MasterNetworkParameters}
@param master_params: network parameters of the master
""" """
master_netdev, master_ip, _, family, master_netmask = GetMasterInfo() ver = netutils.IPAddress.GetVersionFromAddressFamily(master_params.ip_family)
version = str(netutils.IPAddress.GetVersionFromAddressFamily(family))
env = { env = {
"MASTER_NETDEV": master_netdev, "MASTER_NETDEV": master_params.netdev,
"MASTER_IP": master_ip, "MASTER_IP": master_params.ip,
"MASTER_NETMASK": master_netmask, "MASTER_NETMASK": master_params.netmask,
"CLUSTER_IP_VERSION": version, "CLUSTER_IP_VERSION": str(ver),
} }
return env return env
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment