Raise an OpPrereqError if secrt parameters are expected, but missing.
Job retries result in this error.

Signed-off-by: Lisa Velden <[email protected]>
---
 lib/cmdlib/instance_create.py | 6 ++++++
 src/Ganeti/Constants.hs       | 4 ++++
 2 files changed, 10 insertions(+)

diff --git a/lib/cmdlib/instance_create.py b/lib/cmdlib/instance_create.py
index e32e55f..eea2437 100644
--- a/lib/cmdlib/instance_create.py
+++ b/lib/cmdlib/instance_create.py
@@ -809,6 +809,12 @@ class LUInstanceCreate(LogicalUnit):
       self.op.osparams_private = serializer.PrivateDict()
     if self.op.osparams_secret is None:
       self.op.osparams_secret = serializer.PrivateDict()
+    else:
+      # check for missing secret parameters
+      for secret_param in self.op.osparams_secret:
+        if self.op.osparams_secret[secret_param].Get() == constants.REDACTED:
+          raise errors.OpPrereqError("Please re-submit secret parameters to"
+                                       " job.", errors.ECODE_INVAL)
 
     self.os_full = cluster.SimpleFillOS(
       self.op.os_type,
diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs
index d879cd8..b4f4256 100644
--- a/src/Ganeti/Constants.hs
+++ b/src/Ganeti/Constants.hs
@@ -5262,6 +5262,10 @@ debugModeConfidentialityWarning =
   "ALERT: %s started in debug mode.\n\
   \ Private and secret parameters WILL be logged!\n"
 
+-- | Use to hide secret parameter value
+redacted :: String
+redacted = "<redacted>"
+
 -- * Stat dictionary entries
 --
 -- The get_file_info RPC returns a number of values as a dictionary, and the
-- 
2.4.3.573.g4eafbef

Reply via email to