old_contents: import doodad as dd
  from rlkit.launchers.launcher_util import run_experiment_here
  import torch.multiprocessing as mp
  
  if __name__ == "__main__":
      import matplotlib
      matplotlib.use('agg')
  
      mp.set_start_method('forkserver')
      args_dict = dd.get_args()
      method_call = args_dict['method_call']
      run_experiment_kwargs = args_dict['run_experiment_kwargs']
      output_dir = args_dict['output_dir']
      run_mode = args_dict.get('mode', None)
      if run_mode and run_mode in ['slurm_singularity', 'sss']:
          import os
          run_experiment_kwargs['variant']['slurm-job-id'] = os.environ.get(
              'SLURM_JOB_ID', None
          )
      if run_mode and run_mode == 'ec2':
          try:
              import urllib.request
              instance_id = urllib.request.urlopen(
                  'http://169.254.169.254/latest/meta-data/instance-id'
              ).read().decode()
              run_experiment_kwargs['variant']['EC2_instance_id'] = instance_id
          except Exception as e:
              print("Could not get instance ID. Error was...")
              print(e)
      if run_mode and (run_mode == 'ec2' or run_mode == 'gcp'):
          # Do this in case base_log_dir was already set
          run_experiment_kwargs['base_log_dir'] = output_dir
          run_experiment_here(
              method_call,
              include_exp_prefix_sub_dir=False,
              **run_experiment_kwargs
          )
      else:
          run_experiment_here(
              method_call,
              log_dir=output_dir,
              **run_experiment_kwargs
          )
new_contents: import doodad as dd
  import torch.multiprocessing as mp
  
  from rlkit.launchers.launcher_util import run_experiment_here
  
  if __name__ == "__main__":
      import matplotlib
      matplotlib.use('agg')
  
      mp.set_start_method('forkserver')
      args_dict = dd.get_args()
      method_call = args_dict['method_call']
      run_experiment_kwargs = args_dict['run_experiment_kwargs']
      output_dir = args_dict['output_dir']
      run_mode = args_dict.get('mode', None)
      if run_mode and run_mode in ['slurm_singularity', 'sss']:
          import os
          run_experiment_kwargs['variant']['slurm-job-id'] = os.environ.get(
              'SLURM_JOB_ID', None
          )
      if run_mode and (run_mode == 'ec2' or run_mode == 'gcp'):
          if run_mode == 'ec2':
              try:
                  import urllib.request
                  instance_id = urllib.request.urlopen(
                      'http://169.254.169.254/latest/meta-data/instance-id'
                  ).read().decode()
                  run_experiment_kwargs['variant']['EC2_instance_id'] = instance_id
              except Exception as e:
                  print("Could not get AWS instance ID. Error was...")
                  print(e)
          if run_mode == 'gcp':
              try:
                  import urllib.request
                  request = urllib.request.Request(
                      "http://metadata/computeMetadata/v1/instance/name",
                  )
                  # See this URL for why we need this header:
                  # https://cloud.google.com/compute/docs/storing-retrieving-metadata
                  request.add_header("Metadata-Flavor", "Google")
                  instance_name = urllib.request.urlopen(request).read().decode()
                  run_experiment_kwargs['variant']['GCP_instance_name'] = (
                      instance_name
                  )
              except Exception as e:
                  print("Could not get GCP instance name. Error was...")
                  print(e)
          # Do this in case base_log_dir was already set
          run_experiment_kwargs['base_log_dir'] = output_dir
          run_experiment_here(
              method_call,
              include_exp_prefix_sub_dir=False,
              **run_experiment_kwargs
          )
      else:
          run_experiment_here(
              method_call,
              log_dir=output_dir,
              **run_experiment_kwargs
          )
  
subject: handle gcp and ec2 separately and cleanly