|  | (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*) |