+"""
+son-emu compute CLI
+"""
+
+import argparse
+import pprint
+import zerorpc
+
+
+pp = pprint.PrettyPrinter(indent=4)
+
+
+class ZeroRpcClient(object):
+
+ def __init__(self):
+ self.c = zerorpc.Client()
+ self.c.connect("tcp://127.0.0.1:4242") # yes, hard coded for now. we'll change this later
+ self.cmds = {}
+
+ def execute_command(self, args):
+ if getattr(self, args["command"]) is not None:
+ # call the local method with the same name as the command arg
+ getattr(self, args["command"])(args)
+ else:
+ print "Command not implemented."
+
+ def start(self, args):
+ r = self.c.compute_action_start(
+ args.get("datacenter"), args.get("name"))
+ pp.pprint(r)
+
+ def stop(self, args):
+ r = self.c.compute_action_stop(
+ args.get("datacenter"), args.get("name"))
+ pp.pprint(r)
+
+ def list(self, args):
+ print "TODO: Not implemented"
+
+ def status(self, args):
+ print "TODO: Not implemented"
+
+
+parser = argparse.ArgumentParser(description='son-emu compute')
+parser.add_argument("command", help="Action to be executed.")
+parser.add_argument(
+ "--datacenter", "-d", dest="datacenter", help="Data center.")
+parser.add_argument(
+ "--name", "-n", dest="name", help="Compute name.")
+# TODO: IP, image, etc. pp.
+
+
+def main(argv):
+ args = vars(parser.parse_args(argv))
+ c = ZeroRpcClient()
+ c.execute_command(args)