@@ -374,7 +374,7 @@ public static final class AnsiblePlaybookExecution extends AbstractSynchronousNo
374374 @ StepContextParameter
375375 private transient Computer computer ;
376376
377- private List <ExtraVar > convertExtraVars (Map <String , Object > extraVars ) {
377+ private static List <ExtraVar > convertExtraVars (Map <String , Object > extraVars ) {
378378 if (extraVars == null ) {
379379 return null ;
380380 }
@@ -384,25 +384,42 @@ private List<ExtraVar> convertExtraVars(Map<String, Object> extraVars) {
384384 var .setKey (entry .getKey ());
385385 Object o = entry .getValue ();
386386 if (o instanceof Map ) {
387- var .setSecretValue (Secret .fromString ((String )((Map )o ).get ("value" )));
388- var .setHidden ((Boolean )((Map )o ).get ("hidden" ));
389- }
390- else if (o instanceof String ) {
391- var .setSecretValue (Secret .fromString ((String )o ));
392- var .setHidden (true );
393- }
394- else if (o instanceof Boolean ) {
395- var .setSecretValue (Secret .fromString (o .toString ()));
396- var .setHidden (true );
397- }
398- else if (o instanceof Secret ) {
399- var .setSecretValue ((Secret )o );
387+ var .setSecretValue (getSecretFromScalarValue (((Map <?,?>)o ).get ("value" )));
388+ Object hidden = ((Map <?,?>)o ).get ("hidden" );
389+ // If we are given a Boolean value for hidden, respect that.
390+ // Otherwise if omitted or explictly null or any other type adopt the safe default of hidden=true.
391+ if (hidden instanceof Boolean ) {
392+ var .setHidden ((Boolean )hidden );
393+ } else {
394+ var .setHidden (true );
395+ }
396+ } else {
397+ var .setSecretValue (getSecretFromScalarValue (o ));
398+ // Consistent with above: for a scalar value effectively hidden is omitted so adopt the safe default of hidden=true.
400399 var .setHidden (true );
401400 }
402401 extraVarList .add (var );
403402 }
404403 return extraVarList ;
405404 }
405+
406+ private static Secret getSecretFromScalarValue (Object o ) {
407+ if (o instanceof String ) {
408+ return Secret .fromString ((String )o );
409+ }
410+ else if (o instanceof Boolean ) {
411+ return Secret .fromString (o .toString ());
412+ }
413+ else if (o instanceof Number ) {
414+ return Secret .fromString (o .toString ());
415+ }
416+ else if (o instanceof Secret ) {
417+ return (Secret )o ;
418+ }
419+ else {
420+ return null ;
421+ }
422+ }
406423
407424 @ Override
408425 protected Void run () throws Exception {
0 commit comments