Esempio n. 1
0
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)
Esempio n. 2
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)
Esempio n. 3
0
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)