23 lines
689 B
Python
23 lines
689 B
Python
|
import argparse
|
||
|
import re
|
||
|
|
||
|
VALID_HOSTNAME = re.compile(r"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", re.IGNORECASE)
|
||
|
|
||
|
|
||
|
def validate_hostname(hostname: str) -> bool:
|
||
|
if len(hostname) > 63:
|
||
|
return False
|
||
|
return VALID_HOSTNAME.match(hostname) is not None
|
||
|
|
||
|
|
||
|
def machine_name_type(arg_value: str) -> str:
|
||
|
if len(arg_value) > 63:
|
||
|
raise argparse.ArgumentTypeError(
|
||
|
"Machine name must be less than 63 characters long"
|
||
|
)
|
||
|
if not VALID_HOSTNAME.match(arg_value):
|
||
|
raise argparse.ArgumentTypeError(
|
||
|
"Invalid character in machine name. Allowed characters are a-z, 0-9, ., -, and _. Must not start with a number"
|
||
|
)
|
||
|
return arg_value
|