def METHOD_NAME(spec: Mapping[str, str], oc_map: OCMap, dry_run: bool) -> None:
    cluster = spec["cluster"]
    namespace = spec["namespace"]
    desired_state = spec["desired_state"]
    oc = oc_map.get(cluster)
    if isinstance(oc, OCLogMsg):
        logging.log(level=oc.log_level, msg=oc.message)
        return None
    act = {NS_ACTION_CREATE: oc.new_project, NS_ACTION_DELETE: oc.delete_project}
    exists = oc.project_exists(namespace)
    action = None
    if not exists and desired_state == NS_STATE_PRESENT:
        action = NS_ACTION_CREATE
    elif exists and desired_state == NS_STATE_ABSENT:
        action = NS_ACTION_DELETE
    if action:
        logging.info([action, cluster, namespace])
        if not dry_run:
            act[action](namespace)