From aca8d56e9f297e63e7888c381bda753ae51e259f Mon Sep 17 00:00:00 2001 From: Apollon Oikonomopoulos <apollon@noc.grnet.gr> Date: Fri, 25 Jun 2010 13:19:10 +0300 Subject: [PATCH] Export instance tags to instance hooks Instance hooks now get an INSTANCE_TAGS environment variable, which contains a space-delimited list of the affected instance's tags. Also update the documentation to reflect the change. Signed-off-by: Apollon Oikonomopoulos <apollon@noc.grnet.gr> --- doc/hooks.rst | 3 +++ lib/cmdlib.py | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/doc/hooks.rst b/doc/hooks.rst index f19e8b24c..95089938b 100644 --- a/doc/hooks.rst +++ b/doc/hooks.rst @@ -587,6 +587,9 @@ MASTER_CAPABLE VM_CAPABLE Whether the node can host instances. +INSTANCE_TAGS + A space-delimited list of the instance's tags. + NODE_NAME The target node of this operation (not the node on which the hook runs). diff --git a/lib/cmdlib.py b/lib/cmdlib.py index d8220f78d..f693f7a8b 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -783,7 +783,7 @@ def _ExpandInstanceName(cfg, name): def _BuildInstanceHookEnv(name, primary_node, secondary_nodes, os_type, status, memory, vcpus, nics, disk_template, disks, - bep, hvp, hypervisor_name): + bep, hvp, hypervisor_name, tags): """Builds instance related env variables for hooks This builds the hook environment from individual variables. @@ -815,6 +815,8 @@ def _BuildInstanceHookEnv(name, primary_node, secondary_nodes, os_type, status, @param hvp: the hypervisor parameters for the instance @type hypervisor_name: string @param hypervisor_name: the hypervisor for the instance + @type tags: list + @param tags: list of instance tags as strings @rtype: dict @return: the hook environment for this instance @@ -862,6 +864,11 @@ def _BuildInstanceHookEnv(name, primary_node, secondary_nodes, os_type, status, env["INSTANCE_DISK_COUNT"] = disk_count + if not tags: + tags = [] + + env["INSTANCE_TAGS"] = " ".join(tags) + for source, kind in [(bep, "BE"), (hvp, "HV")]: for key, value in source.items(): env["INSTANCE_%s_%s" % (kind, key)] = value @@ -925,6 +932,7 @@ def _BuildInstanceHookEnvByObject(lu, instance, override=None): 'bep': bep, 'hvp': hvp, 'hypervisor_name': instance.hypervisor, + 'tags': instance.tags, } if override: args.update(override) @@ -7517,6 +7525,7 @@ class LUInstanceCreate(LogicalUnit): bep=self.be_full, hvp=self.hv_full, hypervisor_name=self.op.hypervisor, + tags=self.op.tags, )) nl = ([self.cfg.GetMasterNode(), self.op.pnode] + -- GitLab