)]}'
{"tempest/api/network/test_ports.py":[{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"86d558244c8273b0dc954286aaeb42229e261102","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        # Create network and subnet"},{"line_number":159,"context_line":"        network \u003d self.create_network()"},{"line_number":160,"context_line":"        subnet \u003d self.create_subnet(network)"},{"line_number":161,"context_line":"        LOG.debug(\u0027**********************************************************\u0027)"},{"line_number":162,"context_line":"        LOG.debug(subnet)"},{"line_number":163,"context_line":"        LOG.debug(\u0027**********************************************************\u0027)"},{"line_number":164,"context_line":"        self.addCleanup(self.client.delete_subnet, subnet[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_24b2d64c","line":161,"updated":"2015-06-24 16:49:25.000000000","message":"let\u0027s do not use \"***\" in final version of this commit :)","commit_id":"419e4fdee5e54a10ebcb66064062a95d70e0f03b"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"f91c80a73e03b0fd6c8147cb255b0e97adc7e5be","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        # Create network and subnet"},{"line_number":159,"context_line":"        network \u003d self.create_network()"},{"line_number":160,"context_line":"        subnet \u003d self.create_subnet(network)"},{"line_number":161,"context_line":"        LOG.debug(\u0027**********************************************************\u0027)"},{"line_number":162,"context_line":"        LOG.debug(subnet)"},{"line_number":163,"context_line":"        LOG.debug(\u0027**********************************************************\u0027)"},{"line_number":164,"context_line":"        self.addCleanup(self.client.delete_subnet, subnet[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_3616854c","line":161,"in_reply_to":"fa32b979_24b2d64c","updated":"2015-06-24 20:32:28.000000000","message":"I added these lines to debug some issue because in previous test run this test failed with a strange error :)","commit_id":"419e4fdee5e54a10ebcb66064062a95d70e0f03b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b5f7d6e6c30c3fa76038a9210545484395ac249f","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _create_port_with_fixed_ip_from_range(self, network, ip_range):"},{"line_number":155,"context_line":"        for ip in ip_range:"},{"line_number":156,"context_line":"            fixed_ips \u003d [{\u0027ip_address\u0027: str(ip)}]"},{"line_number":157,"context_line":"            try:"},{"line_number":158,"context_line":"                # If fixed IP is already in use, try to create port with"},{"line_number":159,"context_line":"                # next IP from range"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_93e32ea4","line":156,"updated":"2015-07-01 11:21:33.000000000","message":"Can we use six module here instead of str() ?\nPy3 support is main working item now for all projects.","commit_id":"aa870e84ea7f11d197038499d3ab6b21cf0417a6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8d84f222fb642ce61cd19130ef254b02cf8f7d83","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _create_port_with_fixed_ip_from_range(self, network, ip_range):"},{"line_number":155,"context_line":"        for ip in ip_range:"},{"line_number":156,"context_line":"            fixed_ips \u003d [{\u0027ip_address\u0027: str(ip)}]"},{"line_number":157,"context_line":"            try:"},{"line_number":158,"context_line":"                # If fixed IP is already in use, try to create port with"},{"line_number":159,"context_line":"                # next IP from range"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_f6d92158","line":156,"in_reply_to":"ba3cc151_0472767b","updated":"2015-07-02 00:54:12.000000000","message":"Hi Yaroslav,\n\nThat is a nice idea, we can get string value like the following:\n\n \u003e\u003e\u003e import netaddr\n \u003e\u003e\u003e ip_range \u003d netaddr.IPRange(\u002710.20.0.2\u0027, \u002710.20.0.6\u0027)\n \u003e\u003e\u003e for ip in ip_range:\n ...     print ip.format()\n ...\n 10.20.0.2\n 10.20.0.3\n 10.20.0.4\n 10.20.0.5\n 10.20.0.6\n \u003e\u003e\u003e\n\nand the definition of format in netaddr module is\n\n 584     def format(self, dialect\u003dNone):\n 585         \"\"\"\n 586         Only relevant for IPv6 addresses. Has no effect for IPv4.\n 587\n 588         :param dialect: An ipv6_* dialect class.\n 589\n 590         :return: an alternate string representation for this IP address.\n 591         \"\"\"\n 592         if dialect is not None:\n 593             if not hasattr(dialect, \u0027word_fmt\u0027):\n 594                 raise TypeError(\n 595                     \u0027custom dialects should subclass ipv6_verbose!\u0027)\n 596         return self._module.int_to_str(self._value, dialect\u003ddialect)\n\nSo this way is good for me, thanks for good suggestion!","commit_id":"aa870e84ea7f11d197038499d3ab6b21cf0417a6"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"296a94a76bdb6564f762305c82783c60f982046d","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _create_port_with_fixed_ip_from_range(self, network, ip_range):"},{"line_number":155,"context_line":"        for ip in ip_range:"},{"line_number":156,"context_line":"            fixed_ips \u003d [{\u0027ip_address\u0027: str(ip)}]"},{"line_number":157,"context_line":"            try:"},{"line_number":158,"context_line":"                # If fixed IP is already in use, try to create port with"},{"line_number":159,"context_line":"                # next IP from range"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_d9155740","line":156,"in_reply_to":"ba3cc151_93e32ea4","updated":"2015-07-01 11:47:38.000000000","message":"Thanks for review! Yes, sure.","commit_id":"aa870e84ea7f11d197038499d3ab6b21cf0417a6"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"495e11a069f2fa07d935de9d1a495139bc84e8fd","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _create_port_with_fixed_ip_from_range(self, network, ip_range):"},{"line_number":155,"context_line":"        for ip in ip_range:"},{"line_number":156,"context_line":"            fixed_ips \u003d [{\u0027ip_address\u0027: str(ip)}]"},{"line_number":157,"context_line":"            try:"},{"line_number":158,"context_line":"                # If fixed IP is already in use, try to create port with"},{"line_number":159,"context_line":"                # next IP from range"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_0472767b","line":156,"in_reply_to":"ba3cc151_d9155740","updated":"2015-07-01 12:11:09.000000000","message":"Ken\u0027ichi, if you don\u0027t mind, I will use\n    \n    ip.format()\n\nExample:\n\n    \u003e\u003e\u003e import netaddr\n    \u003e\u003e\u003e ip_range \u003d netaddr.IPRange(\u002710.20.0.2\u0027, \u002710.20.0.6\u0027)\n    \u003e\u003e\u003e for ip in ip_range:\n    ...     print type(ip)\n    ... \n    \u003cclass \u0027netaddr.ip.IPAddress\u0027\u003e\n    \u003cclass \u0027netaddr.ip.IPAddress\u0027\u003e\n    \u003cclass \u0027netaddr.ip.IPAddress\u0027\u003e\n    \u003cclass \u0027netaddr.ip.IPAddress\u0027\u003e\n    \u003cclass \u0027netaddr.ip.IPAddress\u0027\u003e\n    \u003e\u003e\u003e \n    \u003e\u003e\u003e for ip in ip_range:\n    ...     print type(ip.format())\n    ... \n    \u003ctype \u0027str\u0027\u003e\n    \u003ctype \u0027str\u0027\u003e\n    \u003ctype \u0027str\u0027\u003e\n    \u003ctype \u0027str\u0027\u003e\n    \u003ctype \u0027str\u0027\u003e","commit_id":"aa870e84ea7f11d197038499d3ab6b21cf0417a6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b5f7d6e6c30c3fa76038a9210545484395ac249f","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                continue"},{"line_number":164,"context_line":"            else:"},{"line_number":165,"context_line":"                self.addCleanup(self.client.delete_port, port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":166,"context_line":"                return port, str(ip)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        raise lib_exc.Conflict(\u0027All IP addresses from IP range {ip_range} \u0027"},{"line_number":169,"context_line":"                               \u0027are in use\u0027.format(ip_range\u003dip_range))"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_d304564b","line":166,"updated":"2015-07-01 11:21:33.000000000","message":"Ditto","commit_id":"aa870e84ea7f11d197038499d3ab6b21cf0417a6"}]}
