old_contents: #!/usr/bin/env python
  # -*- coding: utf-8 -*-
  #
  # utils.py - Common helper methods.
  #
  # Copyright (c) Addy Yeow Chin Heng <ayeowch@gmail.com>
  #
  # Permission is hereby granted, free of charge, to any person obtaining
  # a copy of this software and associated documentation files (the
  # "Software"), to deal in the Software without restriction, including
  # without limitation the rights to use, copy, modify, merge, publish,
  # distribute, sublicense, and/or sell copies of the Software, and to
  # permit persons to whom the Software is furnished to do so, subject to
  # the following conditions:
  #
  # The above copyright notice and this permission notice shall be
  # included in all copies or substantial portions of the Software.
  #
  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  
  """
  Common helper methods.
  """
  
  import os
  import redis
  from ipaddress import ip_network
  
  
  def new_redis_conn(db=0):
      """
      Returns new instance of Redis connection with the right db selected.
      """
      socket = os.environ.get('REDIS_SOCKET', "/tmp/redis.sock")
      password = os.environ.get('REDIS_PASSWORD', None)
      return redis.StrictRedis(db=db, password=password, unix_socket_path=socket)
  
  
  def get_keys(redis_conn, pattern):
      """
      Returns Redis keys matching pattern by iterating the keys space.
      """
      keys = []
      cursor = 0
      while True:
          (cursor, partial_keys) = redis_conn.scan(cursor, pattern)
          keys.extend(partial_keys)
          if cursor == 0:
              break
      return keys
  
  
  def ip_to_network(address, prefix):
      """
      Returns CIDR notation to represent the address and its prefix.
      """
      network = ip_network(unicode("{}/{}".format(address, prefix)),
                           strict=False)
      return "{}/{}".format(network.network_address, prefix)
  
new_contents: #!/usr/bin/env python
  # -*- coding: utf-8 -*-
  #
  # utils.py - Common helper methods.
  #
  # Copyright (c) Addy Yeow Chin Heng <ayeowch@gmail.com>
  #
  # Permission is hereby granted, free of charge, to any person obtaining
  # a copy of this software and associated documentation files (the
  # "Software"), to deal in the Software without restriction, including
  # without limitation the rights to use, copy, modify, merge, publish,
  # distribute, sublicense, and/or sell copies of the Software, and to
  # permit persons to whom the Software is furnished to do so, subject to
  # the following conditions:
  #
  # The above copyright notice and this permission notice shall be
  # included in all copies or substantial portions of the Software.
  #
  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  
  """
  Common helper methods.
  """
  
  import os
  import redis
  from ipaddress import ip_network
  
  
  def new_redis_conn(db=0):
      """
      Returns new instance of Redis connection with the right db selected.
      """
      socket = os.environ.get('REDIS_SOCKET', "/tmp/redis.sock")
      password = os.environ.get('REDIS_PASSWORD', None)
      return redis.StrictRedis(db=db, password=password, unix_socket_path=socket)
  
  
  def get_keys(redis_conn, pattern, count=500):
      """
      Returns Redis keys matching pattern by iterating the keys space.
      """
      keys = []
      cursor = 0
      while True:
          (cursor, partial_keys) = redis_conn.scan(cursor, pattern, count)
          keys.extend(partial_keys)
          if cursor == 0:
              break
      return keys
  
  
  def ip_to_network(address, prefix):
      """
      Returns CIDR notation to represent the address and its prefix.
      """
      network = ip_network(unicode("{}/{}".format(address, prefix)),
                           strict=False)
      return "{}/{}".format(network.network_address, prefix)
  
subject: Speed up restart