sfi parser
[sfa.git] / cmdline / sfi.py
1 #! /usr/bin/env python
2
3 # sfi -- slice-based facility interface
4
5 import sys
6 import os
7 from optparse import OptionParser
8
9 def create_cmd_parser(command):
10    cmdargs = {"list": "name",
11               "show": "name",
12               "delete": "name",
13               "add": "name record",
14               "update": "name record",
15               "nodes": "[name]",
16               "slices": "",
17               "resources": "name",
18               "create": "name rspec",
19               "delete": "name",
20               "reset": "name",
21               "start": "name",
22               "stop": "name"
23              }
24    if command not in cmdargs:
25       print "Invalid command\n"
26       print "Commands:list,show,delete,add,update,nodes,slices,resources,create,delete,start,stop,reset"
27       sys.exit(2)
28
29    parser = OptionParser(usage="sfi [sfi_options] %s [options] %s" \
30       % (command, cmdargs[command]))
31    if command in ("nodes", "resources"):
32       parser.add_option("-f", "--format", dest="format",type="choice",
33            help="output format (dns|ip|hrn|rspec)",default="rspec",
34            choices=("dns","ip","hrn","rspec"))
35    elif command in ("list", "show", "delete"):
36       parser.add_option("-t", "--type", dest="type",type="choice",
37            help="type filter (user|slice|sa|ma|node|aggregate)", 
38            choices=("user","slice","sa","ma","node","aggregate"))
39    return parser
40
41 def main():
42    parser = OptionParser(usage="sfi [options] command [command_options] [command_args]",
43         description="Commands: list,show,delete,add,update,nodes,slices,resources,create,delete,start,stop,reset")
44    parser.add_option("-r", "--registry", dest="registry",
45         help="root registry", metavar="URL")
46    parser.add_option("-s", "--slicemgr", dest="sm",
47         help="slice manager", metavar="URL")
48    parser.add_option("-v", "--verbose",
49         action="store_true", dest="verbose", default=False,
50         help="verbose mode")
51    parser.disable_interspersed_args()
52    (options, args) = parser.parse_args()
53    command = args[0]
54    (cmd_opts, cmd_args) = create_cmd_parser(command).parse_args(args[1:])
55    if options.verbose :
56       print options.registry,options.sm,options.verbose
57       print command
58       if command in ("nodes", "resources"):
59          print cmd_opts.format
60       elif command in ("list","show","delete"):
61          print cmd_opts.type
62       print cmd_args
63    return
64
65 if __name__=="__main__":
66    main()