def main_find_inverse(args, config, database): try: obj = database.get(args.type, args.primary_key) schema = database.schema(obj.type) except KeyError: print("{} {} not found".format(args.type, args.primary_key)) exit(1) else: inverses = set(obj.inverses(database)) for inverse in inverses: print("{}\t{}".format(*inverse.spec))
def main_create_object(args, config, database): obj = lglass.rpsl.Object() obj.add(args.type, args.primary_key) kvpair_iter = iter(args.kvpairs) try: while True: key, value = next(kvpair_iter), next(kvpair_iter) obj.add(key, value) except StopIteration: pass if args.fill: try: schema = database.schema(args.type) for constraint in schema.constraints(): if constraint.mandatory and constraint.key_name not in obj: obj.add(constraint.key_name, "# please insert {}".format(constraint.key_name)) except KeyError: pass if args.edit: obj = _edit_object(args.editor, obj) if args.validate: try: schema = database.schema(obj.type) schema.validate(obj) except KeyError: print("Schema for {} not found".format(obj.type), file=sys.stderr) exit(111) except lglass.rpsl.SchemaValidationError as e: print("{} {} is invalid: Key {}: {}".format(args.type, args.primary_key, e.key, e.message)) exit(1) database.save(obj)
def main_validate_object(args, config, database): try: obj = database.get(args.type, args.primary_key) schema = database.schema(args.type) except KeyError: print("{} {} not found".format(args.type, args.primary_key)) exit(111) else: try: schema.validate(obj) except lglass.rpsl.SchemaValidationError as e: print("{} {} is invalid: Key {}: {}".format(args.type, args.primary_key, e.key, e.message)) exit(1) else: print("{} {} is valid".format(args.type, args.primary_key)) exit(0)
def main_edit_object(args, config, database): try: obj = database.get(args.type, args.primary_key) except KeyError: print("{} {} not found".format(args.type, args.primary_key)) exit(111) obj = _edit_object(args.editor, obj) if args.validate: try: schema = database.schema(obj.type) schema.validate(obj) except KeyError: print("Schema for {} not found".format(obj.type), file=sys.stderr) exit(111) except lglass.rpsl.SchemaValidationError as e: print("{} {} is invalid: Key {}: {}".format(args.type, args.primary_key, e.key, e.message)) exit(1) database.save(obj)