This is an automated email from the ASF dual-hosted git repository.

lfrolov pushed a commit to branch DATALAB-2410
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git


The following commit(s) were added to refs/heads/DATALAB-2410 by this push:
     new fabef23  [DATALAB-2410]: added sensitive argument hiding
fabef23 is described below

commit fabef23358d09cc98ad4f7d3080a757b7a81a90d
Author: leonidfrolov <[email protected]>
AuthorDate: Thu Jun 10 16:50:36 2021 +0300

    [DATALAB-2410]: added sensitive argument hiding
---
 .../terraform/bin/datalab.py                       | 38 ++++++++++++----------
 1 file changed, 21 insertions(+), 17 deletions(-)

diff --git a/infrastructure-provisioning/terraform/bin/datalab.py 
b/infrastructure-provisioning/terraform/bin/datalab.py
index 6eb2f3c..9fd9b1b 100644
--- a/infrastructure-provisioning/terraform/bin/datalab.py
+++ b/infrastructure-provisioning/terraform/bin/datalab.py
@@ -105,8 +105,13 @@ def get_var_args_string(cli_args):
         str: string of joined key=values
     """
     args = extract_args(cli_args)
-    args = ["-var '{0}={1}'".format(key, value) for key, value in args]
-    return ' '.join(args)
+    args_hidden = list()
+    args_plain = ["-var '{0}={1}'".format(key, value) for key, value in args]
+    for key, value in args:
+        if key in ["secret_access_key", "access_key_id", "ldap_host", 
"ldap_user", "ldap_bind_creds", "mongo_password"]:
+            value = '********'
+        args_hidden.append("-var '{0}={1}'".format(key, value))
+    return [' '.join(args_plain), ' '.join(args_hidden)]
 
 
 def get_args_string(cli_args):
@@ -285,13 +290,12 @@ class TerraformProvider:
              None
         """
         logging.info('terraform apply')
-
-        args_str = get_var_args_string(cli_args)
+        args_list = get_var_args_string(cli_args)
         params_str = get_args_string(tf_params)
-        command = ('terraform apply -auto-approve {} {} {}'
-                   .format(self.no_color, params_str, args_str))
-        logging.info(command)
-        Console.execute_to_command_line(command)
+        command = ('terraform apply -auto-approve {} {}'
+                   .format(self.no_color, params_str))
+        logging.info('{} {}'.format(command, args_list[1]))
+        Console.execute_to_command_line('{} {}'.format(command, args_list[0]))
 
     def destroy(self, tf_params, cli_args, keep_state_file=False):
         """Destroy terraform
@@ -304,12 +308,12 @@ class TerraformProvider:
              None
         """
         logging.info('terraform destroy')
-        args_str = get_var_args_string(cli_args)
+        args_list = get_var_args_string(cli_args)
         params_str = get_args_string(tf_params)
-        command = ('terraform destroy -auto-approve {} {} {}'
-                   .format(self.no_color, params_str, args_str))
-        logging.info(command)
-        Console.execute_to_command_line(command)
+        command = ('terraform destroy -auto-approve {} {}'
+                   .format(self.no_color, params_str))
+        logging.info('{} {}'.format(command, args_list[1]))
+        Console.execute_to_command_line('{} {}'.format(command, args_list[0]))
         if not keep_state_file:
             state_file = tf_params['-state']
             state_file_backup = tf_params['-state'] + '.backup'
@@ -810,11 +814,11 @@ class AWSK8sSourceBuilder(AbstractDeployBuilder):
                 validate = conn.run('terraform validate').stdout.lower()
                 if 'success' not in init or 'success' not in validate:
                     raise TerraformProviderError
-                command = ('terraform apply -auto-approve {} '
+                command = ('terraform apply -auto-approve '
                            '-var \'ssn_k8s_nlb_dns_name={}\''
-                           .format(args_str, nlb_dns_name))
-                logging.info(command)
-                conn.run(command)
+                           .format(nlb_dns_name))
+                logging.info('{} {}'.format(command, args_str[1]))
+                conn.run('{} {}'.format(command, args_str[0]))
                 output = ' '.join(conn.run('terraform output -json')
                                   .stdout.split())
                 self.fill_args_from_dict(json.loads(output))

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to