def validate_arguments(arguments): """ Validate argument values: <PROFILES> Arguments not validated: <HOSTNAME> <ORCHESTRATOR_ID> <WORKLOAD_ID> <ENDPOINT_ID> :param arguments: Docopt processed arguments """ # List of valid characters that Felix permits valid_chars = '[a-zA-Z0-9_\.\-]' # Validate Profiles profile_ok = True profiles = arguments.get("<PROFILES>") if profiles is not None: for profile in profiles: profile_ok = validate_characters(profile) if not profile_ok: print_paragraph("Profile names must be < 40 character long and can " "only contain numbers, letters, dots, dashes and " "underscores.") sys.exit(1)
def validate_arguments(arguments): """ Validate argument values: <PROFILES> Arguments not validated: <HOSTNAME> <ORCHESTRATOR_ID> <WORKLOAD_ID> <ENDPOINT_ID> :param arguments: Docopt processed arguments """ # Validate Profiles profile_ok = True profiles = arguments.get("<PROFILES>") if profiles is not None: for profile in profiles: profile_ok = validate_characters(profile) if not profile_ok: print_paragraph("Profile names must be < 40 character long and can " "only contain numbers, letters, dots, dashes and " "underscores.") sys.exit(1)
def validate_arguments(arguments): """ Validate argument values: <PROFILE> <SRCTAG> <SRCCIDR> <DSTTAG> <DSTCIDR> <ICMPTYPE> <ICMPCODE> Arguments not validated: <SRCPORTS> <DSTPORTS> <POSITION> :param arguments: Docopt processed arguments """ # Validate Profiles profile_ok = True if arguments.get("<PROFILE>") is not None: profile = arguments.get("<PROFILE>") profile_ok = validate_characters(profile) # Validate tags tag_src_ok = (arguments.get("<SRCTAG>") is None or validate_characters(arguments["<SRCTAG>"])) tag_dst_ok = (arguments.get("<DSTTAG>") is None or validate_characters(arguments["<DSTTAG>"])) # Validate IPs cidr_ok = True for arg in ["<SRCCIDR>", "<DSTCIDR>"]: if arguments.get(arg) is not None: cidr_ok = validate_cidr(arguments[arg]) icmp_ok = True for arg in ["<ICMPCODE>", "<ICMPTYPE>"]: if arguments.get(arg) is not None: try: value = int(arguments[arg]) if not (0 <= value < 255): # Felix doesn't support 255 raise ValueError("Invalid %s: %s" % (arg, value)) except ValueError: icmp_ok = False # Print error message if not profile_ok: print_paragraph("Profile names must be < 40 character long and can " "only contain numbers, letters, dots, dashes and " "underscores.") if not (tag_src_ok and tag_dst_ok): print_paragraph("Tags names can only contain numbers, letters, dots, " "dashes and underscores.") if not cidr_ok: print "Invalid CIDR specified." if not icmp_ok: print "Invalid ICMP type or code specified." # Exit if not valid if not (profile_ok and tag_src_ok and tag_dst_ok and cidr_ok and icmp_ok): sys.exit(1)
def validate_arguments(arguments): """ Validate argument values: <PROFILE> <SRCTAG> <SRCCIDR> <DSTTAG> <DSTCIDR> <ICMPTYPE> <ICMPCODE> Arguments not validated: <SRCPORTS> <DSTPORTS> <POSITION> :param arguments: Docopt processed arguments """ # Validate Profiles profile_ok = True if arguments.get("<PROFILE>") is not None: profile = arguments.get("<PROFILE>") profile_ok = validate_characters(profile) # Validate tags tag_src_ok = arguments.get("<SRCTAG>") is None or validate_characters(arguments["<SRCTAG>"]) tag_dst_ok = arguments.get("<DSTTAG>") is None or validate_characters(arguments["<DSTTAG>"]) # Validate IPs cidr_ok = True for arg in ["<SRCCIDR>", "<DSTCIDR>"]: if arguments.get(arg) is not None: cidr_ok = validate_cidr(arguments[arg]) icmp_ok = True for arg in ["<ICMPCODE>", "<ICMPTYPE>"]: if arguments.get(arg) is not None: try: value = int(arguments[arg]) if not (0 <= value < 255): # Felix doesn't support 255 raise ValueError("Invalid %s: %s" % (arg, value)) except ValueError: icmp_ok = False # Print error message if not profile_ok: print_paragraph( "Profile names must be < 40 character long and can " "only contain numbers, letters, dots, dashes and " "underscores." ) if not (tag_src_ok and tag_dst_ok): print_paragraph("Tags names can only contain numbers, letters, dots, " "dashes and underscores.") if not cidr_ok: print "Invalid CIDR specified." if not icmp_ok: print "Invalid ICMP type or code specified." # Exit if not valid if not (profile_ok and tag_src_ok and tag_dst_ok and cidr_ok and icmp_ok): sys.exit(1)