﻿==========================================
ZooInspector - Browser and Editor for ZooKeeper Instances
Author: Colin Goodheart-Smithe
Date: February 2010
==========================================

ZooInspector is a Java Swing based application for browsing and editing ZooKeeper instances.

Contents
--------
	- Features
	- Pre-requisites
	- Build Instructions
	- Using ZooInspector
	- Creating and Using Plugins
	
Features
--------
	Below is a list of features in the current release of ZooInspector.
	- Load connection settings from a zookeeper properties file
	- Pluggable DataEncryptionManagers to specify how data should be encrypted and decrypted in the Zookeeper instance
	- Browsable tree view of the ZooKeeper instance
	- View the data in a node
	- View the ACLs currently applied to a node
	- View the metadata for a node (Version, Number of Children, Last modified Time, etc.)
	- Pluggable NodeViewers interface
	- Ability to save/load and set default Node Viewers

Maven Build Instructions
-------------------------
  0. Pre-requisites
     - Run "mvn install" in the root directory of the Zookeeper project
  1. Open a command line
  2. cd into this directory
  3. mvn install
  4. To run ZooInspector run zooInspector.cmd (on Windows) or zooInspector.sh (on Linux) (these scripts will
     find the built JAR automatically in the "target" directory as long as you don't move it)

Ant Build Instructions
-----------------------
  0. Pre-requisites
	   - The main zookeeper build script must have been run before building this module
	1. Open a command line.
	2. cd into this directory
	3. Run command: ant
	4. ZooInspector will be built to ../../../build/contrib/ZooInspector
	5. Copy zookeeper-3.x.x.jar into the lib sub-directory (if you are using zookeeper-3.3.0.jar it will have been
       copied to this directory during the build
	6. By default the zookeeper.cmd and zookeeper.sh files expect zookeeper-3.3.0.jar.  If you are using another version
	   you will need to change these files to point to the zookeeper-3.x.x.jar you copied to the lib directory
	7. To run ZooInspector run zooInspector.cmd (on Windows) or zooInspector.sh (on Linux).  If you are using
	   zookeeper-3.3.0.jar and do not require any classpath changes you can run the zookeeper-dev-ZooInspector.jar
	   directly

Using ZooInspector
------------------
	To start ZooInspector run zooInspector.cmd (on Windows) or zooInspector.sh (on Linux).  If you are using
	zookeeper-3.3.0.jar and do not require any classpath changes you can run the zookeeper-dev-ZooInspector.jar
	directly.

	Click the play button on the toolbar to bring up the connection dialog.  From here you can enter connection
	information for your zookeeper instance.  You can also load the connection properties from a file.  This file can
	have the format as a normal zookeeper properties file (i.e. hosts and timeout key-value pairs) and van optional have
	an encryptionManager key-value pair to specify the DataEncryptionManager to use for this connection
	(DataEncryptionManagers are explained in further detail in the 'Creating and Using Plugins' section below).  You can
	also set the entered information as the defaults so that when you first start ZooInspector these settings are
	automatically loaded into this dialog.  Pressing the OK button with connect to your ZooKeeper instance and show the
	current node tree on the left of the main panel.

	Clicking a node in the node tree will load the data for that node into the node viewers.  Three node viewers are
	currently distributed with ZooInspector:
		1. Node Data - This enables you to see the data current stored on that node.  This data can be modified and
		   saved.  The data is decrypted and encrypted using the DataEncryptionManager specified on the connection
		   dialog.
		2. Node Metadata - This enables you to see the metadata associated with this node.  This is essentially the data
		   obtained from the Stat object for this node.
		3. Node ACLs - This allows you to see the ACLs currently applied to this node.  Currently there is no ability
		   to change the ACLs on a node, but it is a feature I would like to add.
	Other custom Node Viewers can be added, this is explained in the 'Creating and Using Plugins' section below.


Creating and Using Plugins
--------------------------
	There are two types of plugin which can be used with ZooInspector:
		1. DataEncryptionManager - This specifies how data should be encrypted and decrypted when working with a
		   zookeeper instance.
		2. ZooInspectorNodeViewer - This is a GUI panel which provides a view of visualisation on a node.
	More information on these interfaces can be found in the javadocs for this module.

	To use a plugin in ZooInspector, build the plugin to a jar and copy the jar to the lib sub-directory.  Edit the
	zooInspector.cmd and/or zooInspector.sh files to include your new jar on the classpath and run ZooInspector.

	For DataEncryptionManagers, click the play button to open the connection dialog and enter the full class name of
	your DataEncryptionManager in the 'Data Encryption Manager' field.  You can make this Data Encryption Manager the
	default by clicking 'Set As Default'.  Click the 'OK' button to instantiate and use your plugin.

	For ZooInspectorNodeViewers, Click the 'Change Node Viewers' button on the toolbar (looks like a tree with a pencil)
	and enter the full classname for your Node Viewer in the field left of the 'Add' button, then click the 'Add'
	button.  The Node Viewer will be instantiated and should appear in the list.  You can change the order of the Node
	viewers by clicking the up and down buttons and delete a Node Viewer by clicking the delete button.  You can save
	to configuration to a file or set it as the default if necessary. Then click the 'OK' button and your Node Viewer 
	should appear in the tabs on the right of the main panel.