docs: def parse_args():
      """
      Argument parser and validator
      """
      parser = argparse.ArgumentParser(description="Uploads specified VMDK file to AWS s3 bucket, and converts to AMI")
      parser.add_argument('-r', '--aws_regions', type=str, nargs='+', required=True,
                          help='list of AWS regions where uploaded ami should be copied. Available'
                               ' regions: {}.'.format(AWSUtilities.aws_regions))
      parser.add_argument('-a', '--aws_profile', type=str, required=True, help='AWS profile name to use for aws cli commands')
      parser.add_argument('-b', '--s3_bucket', type=str, required=True,
                          help='The aws_bucket of the profile to upload and save vmdk to')
      parser.add_argument('-f', '--vmdk_upload_file', type=str, required=True,
                          help="The file to upload if executing ")
      parser.add_argument('-n', '--ami_name', type=str, required=False, help='The name to give to the uploaded ami. '
                                                                             'Defaults to the name of the file')
      parser.add_argument('-d', '--directory', type=str, default=tempfile.mkdtemp(),
                          help='Directory to save temp aws config upload files')
      args = parser.parse_args()
  
      if not args.ami_name:
          args.ami_name = os.path.basename(args.vmdk_upload_file)
  
      validate_args(args)
  
      return args