[ovs-dev] [PATCH 2/3] ovs-vsctl: Introduce new single-line output format.

reid at nicira.com reid at nicira.com
Thu Oct 15 19:28:08 PDT 2009


Looks good.  
> +    return ["%s" % vlan]
> +                print '\\n'.join([s.replace('\\', '\\\\') for s in
output])
If you think you might ever want the return values of functions in their
non-string form, you could save some worry and use
str(s).replace(..)  instead of  s.replace(..)


On Thu, 15 Oct 2009 15:38:50 -0700, Ben Pfaff <blp at nicira.com> wrote:
> This output format should make it possible for tools to unambiguously
parse
> output from multiple ovs-vsctl commands in a single run (to be introduced
> in an upcoming commit).
> 
> CC: Ian Campbell <Ian.Campbell at citrix.com>
> ---
>  tests/ovs-vsctl.at       |   43
> +++++++++++++++++++++++++++++++++++++++++--
>  utilities/ovs-vsctl.8.in |    5 +++++
>  utilities/ovs-vsctl.in   |   15 +++++++++++----
>  3 files changed, 57 insertions(+), 6 deletions(-)
> 
> diff --git a/tests/ovs-vsctl.at b/tests/ovs-vsctl.at
> index 15e5b1e..834ecc6 100644
> --- a/tests/ovs-vsctl.at
> +++ b/tests/ovs-vsctl.at
> @@ -15,16 +15,31 @@ dnl specified PARENT and is on the given VLAN.
>  m4_define([_CHECK_BRIDGE],
>    [AT_CHECK([RUN_OVS_VSCTL([br-to-parent $1])], [0], [$2
>  ])
> +
> +   # Check br-to-vlan, without --oneline.
>     AT_CHECK([RUN_OVS_VSCTL([br-to-vlan $1])], [0], [$3
> +])
> +   # Check br-to-vlan, with --oneline.
> +   # (This particular test is interesting with --oneline because it
> returns
> +   # an integer instead of a string and that can cause type mismatches
> inside
> +   # python if not done carefully.)
> +   AT_CHECK([RUN_OVS_VSCTL([--oneline br-to-vlan $1])], [0], [$3
>  ])])
>  m4_define([CHECK_BRIDGES],
> -  [dnl Check that the bridges appear on list-br.
> +  [dnl Check that the bridges appear on list-br, without --oneline.
>     AT_CHECK(
>       [RUN_OVS_VSCTL([list-br])],
>       [0],
>       [m4_foreach([brinfo], [$@], [m4_car(brinfo)
>  ])])
> 
> +   dnl Check that the bridges appear on list-br, with --oneline.
> +   AT_CHECK(
> +     [RUN_OVS_VSCTL([--oneline list-br])],
> +     [0],
> +     [m4_join([\n], m4_foreach([brinfo], [$@], [m4_car(brinfo),]))
> +])
> +
>     dnl Check that each bridge exists according to br-exists and that
>     dnl a bridge that should not exist does not.
>     m4_foreach([brinfo], [$@],
> @@ -41,11 +56,19 @@ dnl list of ports, which must be in alphabetical
> order.  Also checks
>  dnl that "ovs-vsctl port-to-br" reports that each port is
>  dnl in BRIDGE.
>  m4_define([CHECK_PORTS],
> -  [AT_CHECK(
> +  [dnl Check ports without --oneline.
> +   AT_CHECK(
>       [RUN_OVS_VSCTL([list-ports $1])],
>       [0],
>       [m4_foreach([port], m4_cdr($@), [port
>  ])])
> +
> +   dnl Check ports with --oneline.
> +   AT_CHECK(
> +     [RUN_OVS_VSCTL([--oneline list-ports $1])],
> +     [0],
> +     [m4_join([\n], m4_shift($@))
> +])
>     AT_CHECK([RUN_OVS_VSCTL([port-to-br $1])], [1], [], [ovs-vsctl: no
> port named $1
>  ])
>     m4_foreach(
> @@ -111,6 +134,22 @@ CHECK_PORTS([b])
>  CHECK_IFACES([b])
>  AT_CLEANUP
> 
> +AT_SETUP([add-br a, add-port a a1, add-port a a2])
> +AT_KEYWORDS([ovs-vsctl])
> +AT_CHECK([RUN_OVS_VSCTL(
> +   [add-br a],
> +   [add-port a a1],
> +   [add-port a a2])])
> +AT_CHECK([cat conf], [0],
> +  [bridge.a.port=a
> +bridge.a.port=a1
> +bridge.a.port=a2
> +])
> +CHECK_BRIDGES([a, a, 0])
> +CHECK_PORTS([a], [a1], [a2])
> +CHECK_IFACES([a], [a1], [a2])
> +AT_CLEANUP
> +
>  AT_SETUP([add-br a b, add-port a a1, add-port b b1, del-br a])
>  AT_KEYWORDS([ovs-vsctl])
>  AT_CHECK([RUN_OVS_VSCTL(
> diff --git a/utilities/ovs-vsctl.8.in b/utilities/ovs-vsctl.8.in
> index b05a955..bc4cb11 100644
> --- a/utilities/ovs-vsctl.8.in
> +++ b/utilities/ovs-vsctl.8.in
> @@ -98,6 +98,11 @@ its configuration file.
>  By default, \fBovs\-vsctl\fR logs its arguments and the details of any
>  changes that it makes to the system log.  This option disables this
>  logging.
> +.IP "\fB\-\-oneline\fR"
> +Modifies the output format so that the output for a command is printed
> +on a single line.  New-line characters that would otherwise separate
> +lines are printed as \fB\\n\fR, and any instances of \fB\\fR that
> +would otherwise appear in the output are doubled.
>  .
>  .SH COMMANDS
>  The commands implemented by \fBovs\-vsctl\fR are described in the
> diff --git a/utilities/ovs-vsctl.in b/utilities/ovs-vsctl.in
> index 23d8ac0..012ce4e 100755
> --- a/utilities/ovs-vsctl.in
> +++ b/utilities/ovs-vsctl.in
> @@ -474,7 +474,7 @@ def cmd_iface_to_br(cfg, iface):
> 
>  def cmd_br_to_vlan(cfg, bridge):
>      parent, vlan = find_bridge(cfg, bridge)
> -    return vlan,
> +    return ["%s" % vlan]
> 
>  def cmd_br_to_parent(cfg, bridge):
>      parent, vlan = find_bridge(cfg, bridge)
> @@ -488,6 +488,7 @@ def main():
>                                             "target=",
>                                             "no-reload",
>                                             "no-syslog",
> +                                           "oneline",
>                                             "help",
>                                             "version"])
>      except getopt.GetoptError, msg:
> @@ -495,6 +496,7 @@ def main():
>          sys.exit(1)
> 
>      # Handle options.
> +    oneline = False
>      for opt, optarg in options:
>          if opt == "-c" or opt == "--config":
>              global VSWITCHD_CONF
> @@ -514,6 +516,8 @@ def main():
>          elif opt == "--no-syslog":
>              global SYSLOG
>              SYSLOG = False
> +        elif opt == "--oneline":
> +            oneline = True
>          else:
>              raise RuntimeError("unhandled option %s" % opt)
> 
> @@ -557,9 +561,12 @@ def main():
>      else:
>          cfg = cfg_read(VSWITCHD_CONF, is_mutator)
>          output = function(cfg, *args)
> -        if output:
> -            for line in output:
> -                print line
> +        if output != None:
> +            if oneline:
> +                print '\\n'.join([s.replace('\\', '\\\\') for s in
> output])
> +            else:
> +                for line in output:
> +                    print line
>          if is_mutator:
>              cfg_save(cfg, VSWITCHD_CONF)
>          sys.exit(0)
> --
> 1.6.3.3
> 
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev_openvswitch.org





More information about the dev mailing list