(in-package :cl-user) #+(or ccl sbcl) /development/source/library/ (load "build-init.lisp") ;;; ! first, select the api version in the cassandra system definition ;;; as only one should be loaded at a time. (asdf:load-system :de.setf.cassandra) (in-package :de.setf.cassandra) (defparameter *c-location* ;; remote ;; #u"thrift://ec2-174-129-66-148.compute-1.amazonaws.com:9160" ;; local #u"thrift://127.0.0.1:9160" "A cassandra service location - either the local one or a remote service - always a 'thrift' uri.") (defparameter *c* (thrift:client *c-location*)) (cassandra:describe-keyspaces *c*) ;; => ("Keyspace1" "system") (cassandra:describe-cluster-name *c*) ;; =>"Test Cluster" (cassandra:describe-version *c*) ;; => "2.1.0" (loop for space in (cassandra:describe-keyspaces *c*) collect (loop for key being each hash-key of (cassandra:describe-keyspace *c* space) using (hash-value value) collect (cons key (loop for key being each hash-key of value using (hash-value value) collect (cons key value))))) (close *c*) (defun describe-cassandra (location &optional (stream *standard-output*)) "Print the first-order store metadata for a cassandra LOCATION." (thrift:with-client (cassandra location) (let* ((keyspace-names (cassandra:describe-keyspaces cassandra)) (cluster (cassandra:describe-cluster-name cassandra)) (version (cassandra:describe-version cassandra)) (keyspace-descriptions (loop for space in keyspace-names collect (cons space (loop for key being each hash-key of (cassandra:describe-keyspace cassandra space) using (hash-value value) collect (cons key (loop for key being each hash-key of value using (hash-value value) collect (cons key value)))))))) (format stream "~&connection to : ~a" cassandra) (format stream "~&version : ~a" version) (format stream "~&cluster : ~a" cluster) (format stream "~&keyspaces~{~{~%~%space: ~a~@{~% ~{~a :~@{~20t~:w~^~%~}~}~}~}~}" keyspace-descriptions)))) ;;; (describe-cassandra *c-location*)