def create_objectclass(): swift = createConnection(request) internal_data = InternalStorageManager(swift) try: class_definition = xform_header_names_on_classdef(request.json.get("objectClass")) class_name = class_definition.get("name") class_schema = class_definition.get("schema") except AttributeError: raise HttpError("malformed request", 400) if not class_name or not class_schema: raise HttpError("class name or class schema definition missing", 400) class_names = internal_data.get_keys(INTERNALOCNAME) if class_name in class_names: raise HttpError("class already exists", 422) try: Draft4Validator(CLASS_SCHEMA, format_checker=FormatChecker()).validate(class_definition) except ValidationError as e: raise HttpError("invalid class definition: {}".format(e), 400) internal_data.store_data(INTERNALOCNAME, class_name, json.dumps(class_definition)) return "", 201
def get_objectclasses(): swift = createConnection(request) internal_data = InternalStorageManager(swift) class_names = internal_data.get_keys(INTERNALOCNAME) for k in class_names: value = internal_data.get_data(INTERNALOCNAME, k) # TODO validate if invalid remove key # class_names.append(json.loads(value).get("name")) # log.debug("encountered invalid class definition stored in object store. key: {}, value: {}".format(k, value)) resp = {} resp["metadata"] = {"classCount": len(class_names)} resp["classes"] = class_names return Response(json.dumps(resp, sort_keys=True), mimetype="application/json")