<div dir="ltr"><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">When I handle some stuff related to Manila recently, I found a case which may be suitable for Oslo, Anyhow I put it in the maillist so it can be discussed before I put it in action.</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">In testcase, we need a function(maybe 2) to generate random ip address (or network), also they should in the range of [1](ipv4 documentation range) or [2](ipv6 documentation range), this is the draft code for ipv4:</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg"><br class="gmail_msg"></font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">import six</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">import random</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg"><br class="gmail_msg"></font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg"><br class="gmail_msg"></font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">def rand_ipv4(network=False):</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">    """This uses the TEST-NET-3 range of reserved IP addresses."""</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg"><br class="gmail_msg"></font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">    test_net_3 = '203.0.113.'</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">    if network:</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">        host_length = random.randint(0, 8)</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">        address_segment = random.randint(0, 8 - host_length)</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">        address_segment <<= host_length</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">        address = test_net_3 + six.text_type(address_segment)</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">        address = '/'.join((address,</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">                            six.text_type(32 - host_length)))</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">    else:</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">        address = test_net_3 + six.text_type(random.randint(0, 255))</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">    return address</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg"><br class="gmail_msg"></font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">The primary use case here is writing testcases,  I am not sure whether it is suitable here, or maybe I misunderstood the intention of TEST-NET-3, please leave any comment you like.</font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg"><br class="gmail_msg"></font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg"><br class="gmail_msg"></font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">[1]  <a href="https://tools.ietf.org/html/rfc5737" class="gmail_msg" target="_blank">https://tools.ietf.org/html/rfc5737</a></font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg">[2]  <a href="https://tools.ietf.org/html/rfc5156" class="gmail_msg" target="_blank">https://tools.ietf.org/html/rfc5156</a></font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg"><br class="gmail_msg"></font></div><div class="gmail_msg"><font face="georgia, serif" class="gmail_msg"><br class="gmail_msg"></font></div></div></div>