cli: Rework adhoc CLI parsing into a class structure

This adds:

VirtCLIArgument: a single foo=bar mapping
VirtOptionString: A collection of VirtCLIArguments, that parses the whole thing
VirtCLIParser: Represents a single cli option like --disk, --network, etc.

Centralizing this infrastructure opens up a lot of doors for future
improvements, like cli option introspection.
This commit is contained in:
Cole Robinson
2014-01-22 10:35:30 -05:00
parent a98515a4da
commit 41a84bae9f
7 changed files with 754 additions and 635 deletions
+2 -2
View File
@@ -425,12 +425,12 @@ c.add_valid("--vcpus sockets=2,threads=2") # Topology only
c.add_valid("--cpu somemodel") # Simple --cpu
c.add_valid("--cpu foobar,+x2apic,+x2apicagain,-distest,forbid=foo,forbid=bar,disable=distest2,optional=opttest,require=reqtest,match=strict,vendor=meee") # Crazy --cpu
c.add_valid("--numatune 1,2,3,5-7,^6") # Simple --numatune
c.add_valid("--numatune 1-3,4,mode=strict") # More complex, parser should do the right thing here
c.add_compare("--connect %(DEFAULTURI)s --cpuset auto --vcpus 2", "cpuset-auto") # --cpuset=auto actually works
c.add_invalid("--vcpus 32 --cpuset=969-1000") # Bogus cpuset
c.add_invalid("--vcpus 32 --cpuset=autofoo") # Bogus cpuset
c.add_invalid("--vcpus 20 --check-cpu") # Over host vcpus w/ --check-cpu
c.add_invalid("--cpu host") # --cpu host, but no host CPU in caps
c.add_invalid("--numatune 1-3,4,mode=strict") # Non-escaped numatune
c.add_invalid("--clock foo_tickpolicy=merge") # Unknown timer
@@ -951,7 +951,7 @@ _cmdlist += vconv.cmds
for _cmd in _cmdlist:
newidx += 1
setattr(CLITests, "testCLI%s%d" % (_cmd.app.replace("-", ""), newidx),
setattr(CLITests, "testCLI%s%.4d" % (_cmd.app.replace("-", ""), newidx),
maketest(_cmd))
atexit.register(cleanup)