in util/update_pcluster_configs.py [0:0]
def _parse_args():
def _aws_credentials_type(value):
return tuple(value.strip().split(","))
def _file_type(value):
if not os.path.isfile(value):
raise argparse.ArgumentTypeError("'{0}' is not a valid file".format(value))
return value
parser = argparse.ArgumentParser(
description="Update pcluster config files. Currently supports instances.json and feature_whitelist.json"
)
parser.add_argument(
"--partition", choices=PARTITIONS, help="AWS Partition where to update the files", required=True
)
parser.add_argument(
"--credentials",
help="STS credential endpoint, in the format <region>,<endpoint>,<ARN>,<externalId>."
"Could be specified multiple times",
required=False,
nargs="+",
type=_aws_credentials_type,
default=[],
)
parser.add_argument(
"--deploy",
action="store_true",
help="If deploy is false, we will perform a dryrun and no file will be pushed to buckets",
default=False,
required=False,
)
parser.add_argument(
"--skip-validation",
action="store_true",
help="WARNING: be careful when setting this flag. All validations are disabled",
default=False,
required=False,
)
parser.add_argument(
"--regions",
type=str,
help="If not specified ec2.describe_regions is used to retrieve regions",
required=False,
nargs="+",
default=[],
)
parser.add_argument(
"--autodetect-regions",
action="store_true",
help="If set ec2.describe_regions is used to retrieve regions. "
"Additional regions can be specified with --regions",
required=False,
default=False,
)
parser.add_argument(
"--bucket",
type=str,
help="Bucket to upload to, defaults to {region}-aws-parallelcluster",
required=False,
default="{region}-aws-parallelcluster",
)
parser.add_argument(
"--efa-instances",
type=str,
help="Comma separated list of instances supported by EFA",
required=False,
nargs="+",
)
parser.add_argument(
"--pricing-file", type=str, help="If not specified this will be downloaded automatically", required=False
)
parser.add_argument(
"--overwrite-instance-data-file-path",
type=_file_type,
help="Path to file containing JSON of the instance data to overwrite",
required=False,
)
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument("--rollback-file-path", help="Path to file containing the rollback information", type=_file_type)
group.add_argument("--config-files", choices=CONFIG_FILES, help="Configurations to update", nargs="+")
args = parser.parse_args()
if args.autodetect_regions:
args.regions.extend(get_aws_regions(args.partition))
_validate_args(args, parser)
return args