3 (c) 2016 by Manuel Peuster <manuel.peuster@upb.de>
8 from tabulate
import tabulate
12 pp
= pprint
.PrettyPrinter(indent
=4)
15 class ZeroRpcClient(object):
18 self
.c
= zerorpc
.Client()
19 self
.c
.connect("tcp://127.0.0.1:4242") # TODO hard coded for now. we'll change this later
22 def execute_command(self
, args
):
23 if getattr(self
, args
["command"]) is not None:
24 # call the local method with the same name as the command arg
25 getattr(self
, args
["command"])(args
)
27 print "Command not implemented."
29 def start(self
, args
):
30 r
= self
.c
.compute_action_start(
31 args
.get("datacenter"), args
.get("name"))
35 r
= self
.c
.compute_action_stop(
36 args
.get("datacenter"), args
.get("name"))
40 r
= self
.c
.compute_list(
41 args
.get("datacenter"))
44 # for each container add a line to the output table
50 if len(status
.get("network")) > 0:
51 eth0ip
= status
.get("network")[0][1]
52 eth0status
= "up" if status
.get(
53 "network")[0][3] else "down"
54 table
.append([status
.get("datacenter"),
59 status
.get("state").get("Status")])
60 headers
= ["Datacenter",
66 print tabulate(table
, headers
=headers
, tablefmt
="grid")
68 def status(self
, args
):
69 r
= self
.c
.compute_status(
70 args
.get("datacenter"), args
.get("name"))
74 parser
= argparse
.ArgumentParser(description
='son-emu compute')
75 parser
.add_argument("command", help="Action to be executed.")
77 "--datacenter", "-d", dest
="datacenter", help="Data center.")
79 "--name", "-n", dest
="name", help="Compute name.")
80 # TODO: IP, image, etc. pp.
84 args
= vars(parser
.parse_args(argv
))
86 c
.execute_command(args
)