Good implementation, but have a few comments, that needs to be fixed before merge:
For some reason, can't save 2 nodes. Scenario:
add node id=0, exec select * from ..., get 1 row;
add node id=1, exec select ..., get 1 row;
restart scheduler - broker node list shows 1 node;
Please remove FrameworkState class and use Nodes object directly
(probably, removing Storage.save/load args/return object).
The primary purpose Nodes object is to hold "framework state".
I see no big advantages of having 2 separate object/classes. Removing one, will simplify a code.
C* node installation in vagrant should be:
disabled (commented) by default (most of users doesn't need it, except several "special" users);
if uncommented, installed only on a single node (master) to save resources;
I'll change that to comply overall codebase but not exactly agree with you. with that we will have one global component just artificially split into objects. in reality you have Nodes using Storage and Storage modifying Nodes. such codestyle makes adding changes really hard.
b) - thanks, definitely need to be installed on master only
a) not sure here. As I understood we are trying to persuade users to use C* storage as the only valid HA storage for dse-mesos. If that's correct assumption (@joestein ?) I'd even make C* storage default: --storage cassandra:9042:127.0.0.1
Good implementation, but have a few comments, that needs to be fixed before merge: