[PATCH pykickstart master] network: add support for bridge to RHEL7 (#1075195)

Vratislav Podzimek vpodzime at redhat.com
Thu Oct 23 14:14:28 UTC 2014


On Thu, 2014-10-23 at 12:47 +0200, Radek Vykydal wrote:
> Related: rhbz#1075195
> 
> commit 69bfafc1be25c0793dc9b5e69672b2c728406243 from rhel7-branch
> fixing network test cases of the original patch also squashed in this one
> 
> ---
>  pykickstart/commands/network.py | 22 ++++++++++++++++++++++
>  tests/commands/network.py       | 25 +++++++++++++++++++++++++
>  2 files changed, 47 insertions(+)
> 
> diff --git a/pykickstart/commands/network.py b/pykickstart/commands/network.py
> index 77c16f7..1632c72 100644
> --- a/pykickstart/commands/network.py
> +++ b/pykickstart/commands/network.py
> @@ -288,11 +288,17 @@ class RHEL7_NetworkData(F20_NetworkData):
>      def __init__(self, *args, **kwargs):
>          F20_NetworkData.__init__(self, *args, **kwargs)
>          self.interfacename = kwargs.get("interfacename", "")
> +        self.bridgeslaves = kwargs.get("bridgeslaves", "")
> +        self.bridgeopts = kwargs.get("bridgeopts", "")
>  
>      def _getArgsAsStr(self):
>          retval = F20_NetworkData._getArgsAsStr(self)
>          if self.interfacename:
>              retval += " --interfacename=%s" % self.interfacename
> +        if self.bridgeslaves != "":
> +            retval += " --bridgeslaves=%s" % self.bridgeslaves
> +        if self.bridgeopts != "":
> +            retval += " --bridgeopts=%s" % self.bridgeopts
>  
>          return retval
>  
> @@ -589,6 +595,10 @@ class RHEL7_Network(F20_Network):
>          op = F20_Network._getParser(self)
>          op.add_option("--interfacename", dest="interfacename", action="store",
>                  default="")
> +        op.add_option("--bridgeslaves", dest="bridgeslaves", action="store",
> +                default="")
> +        op.add_option("--bridgeopts", dest="bridgeopts", action="store",
> +                default="")
>          return op
>  
>      def parse(self, args):
> @@ -601,4 +611,16 @@ class RHEL7_Network(F20_Network):
>          if error_message is not None:
>              raise KickstartValueError(formatErrorMsg(self.lineno,msg=error_message))
>  
> +        if retval.bridgeopts:
> +            if not retval.bridgeslaves:
> +                msg = formatErrorMsg(self.lineno, msg=_("Option --bridgeopts requires "\
> +                                        "--bridgeslaves to be specified"))
> +                raise KickstartValueError(msg)
> +            opts = retval.bridgeopts.split(",")
> +            for opt in opts:
> +                key, _sep, value = opt.partition("=")
> +                if not value or "=" in value:
> +                    msg = formatErrorMsg(self.lineno, msg=_("Bad format of --bridgeopts, expecting key=value options separated by ','"))
> +                    raise KickstartValueError(msg)
> +
>          return retval
> diff --git a/tests/commands/network.py b/tests/commands/network.py
> index 23e8491..c48d329 100644
> --- a/tests/commands/network.py
> +++ b/tests/commands/network.py
> @@ -72,6 +72,7 @@ class F20_TestCase(CommandTest):
>  class RHEL7_TestCase(F20_TestCase):
>      def runTest(self):
>          F20_TestCase.runTest(self)
> +
>          # there needs to be a vlan id after a dot & only one dot is allowed
>          self.assert_parse_error("network --interfacename=abc.", KickstartValueError)
>          self.assert_parse_error("network --interfacename=abc.def", KickstartValueError)
> @@ -101,5 +102,29 @@ class RHEL7_TestCase(F20_TestCase):
>          self.assert_parse_error("network --interfacename=vlan9001", KickstartValueError)
>          self.assert_parse_error("network --interfacename=abc.9001", KickstartValueError)
>  
> +        # bridge options
> +        # pass
> +        self.assert_parse("network --device bridge0 --bootproto dhcp "\
> +                          "--bridgeslaves=ens3,ens7 "\
> +                          "--bridgeopts=priority=40000")
> +        self.assert_parse("network --device bridge0 --bootproto dhcp "\
> +                          "--bridgeslaves=ens3,ens7 "\
> +                          "--bridgeopts=priority=40000,hello-time=3")
> +
> +        # fail
> +        # slaves missing
> +        self.assert_parse_error("network --device bridge0 --bootproto dhcp "\
> +                                "--bridgeopts=priority=40000", KickstartValueError)
> +        # bad options format
> +        self.assert_parse_error("network --device bridge0 --bootproto dhcp "\
> +                                "--bridgeslaves=ens3,ens7 "\
> +                                '--bridgeopts="priority=40000 hello-time=3"',
> +                                KickstartValueError)
> +        self.assert_parse_error("network --device bridge0 --bootproto dhcp "\
> +                                "--bridgeslaves=ens3,ens7 "\
> +                                "--bridgeopts=priority",
> +                                KickstartValueError)
> +
> +
>  if __name__ == "__main__":
>      unittest.main()
ACK.

-- 
Vratislav Podzimek

Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic



More information about the anaconda-patches mailing list