added soap call to dynamically add nodes
validating that ips_hash is a Hash
updated tests to not let any shell call pass, and added the right mocks in their place
added more specific zookeeper exceptions to catch and reinitialize a connection on
explicitly requiring HelperFunctions.shell to be mocked out in Djinn test cases, and fixed tests accordingly
added unit tests and refactored code accordingly to not use tilde to exec, and fixed unit tests for adding nodes dynamically
increased logging on new add_nodes functionality, and explicitly throwing NotImplementedError on add_nodes for cloud deployments for now
added ability to add nodes in cloud deployments. added unit test and tested in ec2 with appserver
Merge remote-tracking branch 'org/testing' into with-add-nodes
added more specific logging information when calling UserAppServer functions
refactored APPSCALE_HOME/.appscale to /etc/appscale throughout, as they are the same location and the latter is more readable
changed how we set @total_boxes to correctly accommodate dynamically adding nodes
merged with org/testing, and reverted scp_file since it blindly continued in case of failures
extracted /etc/appscale to a global constant, and changed references to it accordingly
added docstrings for new methods
extracting where we get the rabbitmq location to a function, so that we can later get the location dynamically
not relying on rabbitmq to be running locally, and instead reading its location from a file written by the AppController, and extracted code to write /etc/hosts to a function so that we can invoke it when we add nodes
added docstring for rabbitmq helper function
AppServer now redirects users to the AppLoadBalancer specified in a file written by the AppController, instead of assuming it runs locally
removed old unnecessary comments, and using a lock on instance variables when accessed via an external thread