+ if SDL.get(_generate_type_key(policy_type_id)) is None:
+ raise PolicyTypeNotFound()
+
+
+def store_policy_type(policy_type_id, body):
+ """
+ store a policy type if it doesn't already exist
+ """
+ key = _generate_type_key(policy_type_id)
+ if SDL.get(key) is not None:
+ raise PolicyTypeAlreadyExists()
+ SDL.set(key, body)
+
+
+def delete_policy_type(policy_type_id):
+ """
+ delete a policy type; can only be done if there are no instances (business logic)
+ """
+ pil = get_instance_list(policy_type_id)
+ if pil == []: # empty, can delete
+ SDL.delete(_generate_type_key(policy_type_id))
+ else:
+ raise CantDeleteNonEmptyType()
+
+
+def get_policy_type(policy_type_id):
+ """
+ retrieve a type
+ """
+ type_is_valid(policy_type_id)
+ return SDL.get(_generate_type_key(policy_type_id))