On Wed, Dec 4, 2013 at 2:50 PM, Santi Raffa <[email protected]> wrote:

> This method accepts a port number and checks that it is in fact valid.
>
> Signed-off-by: Santi Raffa <[email protected]>
> ---
>  lib/netutils.py                     | 22 ++++++++++++++++++++++
>  test/py/ganeti.netutils_unittest.py | 13 +++++++++++++
>  2 files changed, 35 insertions(+)
>
> diff --git a/lib/netutils.py b/lib/netutils.py
> index f39ef77..d7afeb4 100644
> --- a/lib/netutils.py
> +++ b/lib/netutils.py
> @@ -267,6 +267,28 @@ class Hostname:
>      return hostname
>
>
> +def ValidatePortNumber(value):
> +  """Returns the validated integer port number if it is valid.
> +
> +  @param value: the port number to be validated
> +  @raise ValueError: if the port is not valid
> +  @return: the validated value as an integer."""
>

Comment style wrong.


> +
> +  port = value
>

What is this line for?


> +  try:
> +    port = int(value)
> +  except TypeError:
> +    raise errors.ProgrammerError("ValidatePortNumber called with
> non-numeric"
> +                                 " type %s." % value.__class__.__name__)
> +  except ValueError:
> +    raise ValueError("Invalid port value: '%s'" % port)
> +
> +  if not 0 < port < 2 ** 16:
> +    raise ValueError("Invalid port value: '%d'" % port)
> +
> +  return port
> +
> +
>  def TcpPing(target, port, timeout=10, live_port_needed=False,
> source=None):
>    """Simple ping implementation using TCP connect(2).
>
> diff --git a/test/py/ganeti.netutils_unittest.py b/test/py/
> ganeti.netutils_unittest.py
> index 79aeed8..9e073b9 100755
> --- a/test/py/ganeti.netutils_unittest.py
> +++ b/test/py/ganeti.netutils_unittest.py
> @@ -531,5 +531,18 @@ class TestIpParsing(testutils.GanetiTestCase):
>                      addr[4][0] == "192.0.2.1")
>
>
> +class TestValidatePortNumber(unittest.TestCase):
> +  """Test netutils.ValidatePortNumber"""
> +
> +  def testPortNumberInt(self):
> +    self.assertRaises(ValueError, lambda: \
> +      netutils.ValidatePortNumber(500000))
> +    self.assertEqual(netutils.ValidatePortNumber(5000), 5000)
> +
> +  def testPortNumberStr(self):
> +    self.assertRaises(ValueError, lambda: \
> +      netutils.ValidatePortNumber("pinky bunny"))
> +    self.assertEqual(netutils.ValidatePortNumber("5000"), 5000)
> +


 if __name__ == "__main__":
>    testutils.GanetiTestProgram()
> --
> 1.8.4.1
>
>


-- 
Thomas Thrainer | Software Engineer | [email protected] |

Google Germany GmbH
Dienerstr. 12
80331 München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Graham Law, Christine Elizabeth Flores

Reply via email to