)]}'
{"neutron/plugins/ml2/drivers/mech_bigswitch/driver.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"baa4a84fed25e3a66d8392cce72b2c3f3c9b14c3","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                                    {portbindings.CAP_PORT_FILTER: True,"},{"line_number":164,"context_line":"                                     portbindings.OVS_HYBRID_PLUG: False})"},{"line_number":165,"context_line":"                return True"},{"line_number":166,"context_line":"        return False"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def _get_cached_vswitch_existence(self, host):"},{"line_number":169,"context_line":"        \"\"\"Returns cached responses. Old and non-cached raise ValueError.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_04deac3c","line":166,"updated":"2014-08-13 02:41:23.000000000","message":"bind_port is not expected to return a value.","commit_id":"a6ebc62c467b57aa460f03f0f6dbe3ae8b724a5f"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ccd0f05bfea3649da3affca8a90b241d17286335","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            return False"},{"line_number":137,"context_line":"        return prepped_port"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def bind_port(self, context):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            exists \u003d self._get_cached_vswitch_existence(context.host)"},{"line_number":142,"context_line":"        except ValueError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_df6641ee","line":139,"updated":"2014-08-25 14:05:36.000000000","message":"Consider adding a docstring here to make it clear how this works? So, true returned, if have cached, false if not found, and None if error other than not found?\n\nDoes seem a bit confusing...","commit_id":"6a718f20ad8e520a19fd17b7783a4d24828faa46"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"abb92b8ce89ea608fe8a6fd051bad8f714e7ff43","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            return False"},{"line_number":137,"context_line":"        return prepped_port"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def bind_port(self, context):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            exists \u003d self._get_cached_vswitch_existence(context.host)"},{"line_number":142,"context_line":"        except ValueError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_783e072b","line":139,"in_reply_to":"1abeadc6_188d1332","updated":"2014-08-26 07:01:29.000000000","message":"Oh, I\u0027ll add one to the _get_cached_vswitch_existence method.","commit_id":"6a718f20ad8e520a19fd17b7783a4d24828faa46"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"7b87641bdbcdaf661648180b7a44abd3d6a5f4f9","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            return False"},{"line_number":137,"context_line":"        return prepped_port"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def bind_port(self, context):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            exists \u003d self._get_cached_vswitch_existence(context.host)"},{"line_number":142,"context_line":"        except ValueError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_188d1332","line":139,"in_reply_to":"1abeadc6_df6641ee","updated":"2014-08-26 06:57:59.000000000","message":"This method doesn\u0027t return anything.","commit_id":"6a718f20ad8e520a19fd17b7783a4d24828faa46"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"c90b6ae605193959f32953169471a9554b18567f","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def bind_port(self, context):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            exists \u003d self._get_cached_vswitch_existence(context.host)"},{"line_number":142,"context_line":"        except ValueError:"},{"line_number":143,"context_line":"            try:"},{"line_number":144,"context_line":"                self.servers.rest_get_switch(context.host)"},{"line_number":145,"context_line":"                exists \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_ab24f9c6","line":142,"updated":"2014-08-14 00:56:54.000000000","message":"Why the exception instead of just returning None?  No one uses the error string, and the lack of existence in a lazy cache isn\u0027t an error or exceptional event.  It even fits with your flow below, since you\u0027re already doing a conditional on the return...","commit_id":"6a718f20ad8e520a19fd17b7783a4d24828faa46"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"abb92b8ce89ea608fe8a6fd051bad8f714e7ff43","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def bind_port(self, context):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            exists \u003d self._get_cached_vswitch_existence(context.host)"},{"line_number":142,"context_line":"        except ValueError:"},{"line_number":143,"context_line":"            try:"},{"line_number":144,"context_line":"                self.servers.rest_get_switch(context.host)"},{"line_number":145,"context_line":"                exists \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_78252709","line":142,"in_reply_to":"1abeadc6_d8c0fb2c","updated":"2014-08-26 07:01:29.000000000","message":"Also raises an exception if expired.\n\nThe idea is that the method will return the cached value if it exists and isn\u0027t expired. Otherwise it will raise an exception because it can\u0027t \u0027answer the question\u0027 so to speak.","commit_id":"6a718f20ad8e520a19fd17b7783a4d24828faa46"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"7b87641bdbcdaf661648180b7a44abd3d6a5f4f9","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def bind_port(self, context):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            exists \u003d self._get_cached_vswitch_existence(context.host)"},{"line_number":142,"context_line":"        except ValueError:"},{"line_number":143,"context_line":"            try:"},{"line_number":144,"context_line":"                self.servers.rest_get_switch(context.host)"},{"line_number":145,"context_line":"                exists \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_d8c0fb2c","line":142,"in_reply_to":"7ac7a964_566309b1","updated":"2014-08-26 06:57:59.000000000","message":"No, it does not return True or exception. It returns true or false depending on the cache entry. It raises an exception if there is no entry.","commit_id":"6a718f20ad8e520a19fd17b7783a4d24828faa46"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"14b9851ddcb88b8624fd346dff742681b31cc845","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def bind_port(self, context):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            exists \u003d self._get_cached_vswitch_existence(context.host)"},{"line_number":142,"context_line":"        except ValueError:"},{"line_number":143,"context_line":"            try:"},{"line_number":144,"context_line":"                self.servers.rest_get_switch(context.host)"},{"line_number":145,"context_line":"                exists \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_b36c6f38","line":142,"in_reply_to":"7ac7a964_ab24f9c6","updated":"2014-08-14 02:54:39.000000000","message":"Just a different way of accomplishing the same thing. I raised an exception similar to the way an sqlalchemy query will raise an exception for a query for something that doesn\u0027t exist. This route makes it very explicit that the record does not exist with the exception. \n\nIf I return None, the caller cannot just evaluate the truthiness of the response but instead has to first check if the return is None.","commit_id":"6a718f20ad8e520a19fd17b7783a4d24828faa46"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"84ccc5d1bbd0bbf6a0f8b7066d08f9ba928baeb7","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    def bind_port(self, context):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            exists \u003d self._get_cached_vswitch_existence(context.host)"},{"line_number":142,"context_line":"        except ValueError:"},{"line_number":143,"context_line":"            try:"},{"line_number":144,"context_line":"                self.servers.rest_get_switch(context.host)"},{"line_number":145,"context_line":"                exists \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_566309b1","line":142,"in_reply_to":"7ac7a964_b36c6f38","updated":"2014-08-14 03:26:09.000000000","message":"A db lookup failure, just like a hash key failure, is something that might be an actual error in some circumstances.  You\u0027ve got a boolean helper, and instead of returning true or false, it returns true or exception.  That just feels a bit tortured to me.","commit_id":"6a718f20ad8e520a19fd17b7783a4d24828faa46"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ccd0f05bfea3649da3affca8a90b241d17286335","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                self.servers.rest_get_switch(context.host)"},{"line_number":145,"context_line":"                exists \u003d True"},{"line_number":146,"context_line":"            except servermanager.RemoteRestError as e:"},{"line_number":147,"context_line":"                if e.status \u003d\u003d 404:"},{"line_number":148,"context_line":"                    exists \u003d False"},{"line_number":149,"context_line":"                else:"},{"line_number":150,"context_line":"                    # Another error, return without caching to try again"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_142ee0a5","line":147,"updated":"2014-08-25 14:05:36.000000000","message":"use a constant vs magic number (even though this one is well known)?","commit_id":"6a718f20ad8e520a19fd17b7783a4d24828faa46"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"b28651c231d61692e0a7a8749e7eedbb061c4502","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                    {portbindings.CAP_PORT_FILTER: True,"},{"line_number":149,"context_line":"                                     portbindings.OVS_HYBRID_PLUG: False})"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def does_vswitch_exist(self, host):"},{"line_number":152,"context_line":"        \"\"\"Check if Indigo vswitch exists with the given hostname."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        Returns True if switch exists on backend."}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_a9b7d21f","line":151,"updated":"2014-08-29 12:06:56.000000000","message":"Much clearer now. Thanks!","commit_id":"4c64b8f000247ba539aa2fddf5c358d3da93dfc5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c3eb62fc0cb820246f29efa386678f0578964cfc","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            else:"},{"line_number":171,"context_line":"                # Another error, return without caching to try again on"},{"line_number":172,"context_line":"                # next binding"},{"line_number":173,"context_line":"                return None"},{"line_number":174,"context_line":"        self.ivs_host_cache[host] \u003d {"},{"line_number":175,"context_line":"            \u0027timestamp\u0027: datetime.datetime.now(),"},{"line_number":176,"context_line":"            \u0027exists\u0027: exists"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_8fed6a8e","line":173,"updated":"2014-08-31 15:01:07.000000000","message":"by default it returns None, you do not need to explicitly return None","commit_id":"1ba6715b2fc66f7b85fac20f199c2e55cdc56969"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"95df56fed4362485e95c7ff3b32c4bfc4094ed6f","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            else:"},{"line_number":171,"context_line":"                # Another error, return without caching to try again on"},{"line_number":172,"context_line":"                # next binding"},{"line_number":173,"context_line":"                return None"},{"line_number":174,"context_line":"        self.ivs_host_cache[host] \u003d {"},{"line_number":175,"context_line":"            \u0027timestamp\u0027: datetime.datetime.now(),"},{"line_number":176,"context_line":"            \u0027exists\u0027: exists"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_e6f7f88a","line":173,"in_reply_to":"fa98f980_8fed6a8e","updated":"2014-09-01 18:08:14.000000000","message":"Done","commit_id":"1ba6715b2fc66f7b85fac20f199c2e55cdc56969"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c3eb62fc0cb820246f29efa386678f0578964cfc","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        \"\"\"Returns cached existence. Old and non-cached raise ValueError.\"\"\""},{"line_number":182,"context_line":"        entry \u003d self.ivs_host_cache.get(host)"},{"line_number":183,"context_line":"        if not entry:"},{"line_number":184,"context_line":"            raise ValueError(\u0027No cache entry for host %s\u0027 % host)"},{"line_number":185,"context_line":"        diff \u003d timeutils.delta_seconds(entry[\u0027timestamp\u0027],"},{"line_number":186,"context_line":"                                       datetime.datetime.now())"},{"line_number":187,"context_line":"        if diff \u003e CACHE_VSWITCH_TIME:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_6fe8467d","line":184,"updated":"2014-08-31 15:01:07.000000000","message":"missing a translation","commit_id":"1ba6715b2fc66f7b85fac20f199c2e55cdc56969"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"95df56fed4362485e95c7ff3b32c4bfc4094ed6f","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        \"\"\"Returns cached existence. Old and non-cached raise ValueError.\"\"\""},{"line_number":182,"context_line":"        entry \u003d self.ivs_host_cache.get(host)"},{"line_number":183,"context_line":"        if not entry:"},{"line_number":184,"context_line":"            raise ValueError(\u0027No cache entry for host %s\u0027 % host)"},{"line_number":185,"context_line":"        diff \u003d timeutils.delta_seconds(entry[\u0027timestamp\u0027],"},{"line_number":186,"context_line":"                                       datetime.datetime.now())"},{"line_number":187,"context_line":"        if diff \u003e CACHE_VSWITCH_TIME:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_a6fed069","line":184,"in_reply_to":"fa98f980_6fe8467d","updated":"2014-09-01 18:08:14.000000000","message":"Done","commit_id":"1ba6715b2fc66f7b85fac20f199c2e55cdc56969"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c3eb62fc0cb820246f29efa386678f0578964cfc","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                                       datetime.datetime.now())"},{"line_number":187,"context_line":"        if diff \u003e CACHE_VSWITCH_TIME:"},{"line_number":188,"context_line":"            self.ivs_host_cache.pop(host)"},{"line_number":189,"context_line":"            raise ValueError(\u0027Expired cache entry for host %s\u0027 % host)"},{"line_number":190,"context_line":"        return entry[\u0027exists\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_2fee3e8c","line":189,"updated":"2014-08-31 15:01:07.000000000","message":"this is missing a translation","commit_id":"1ba6715b2fc66f7b85fac20f199c2e55cdc56969"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"95df56fed4362485e95c7ff3b32c4bfc4094ed6f","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                                       datetime.datetime.now())"},{"line_number":187,"context_line":"        if diff \u003e CACHE_VSWITCH_TIME:"},{"line_number":188,"context_line":"            self.ivs_host_cache.pop(host)"},{"line_number":189,"context_line":"            raise ValueError(\u0027Expired cache entry for host %s\u0027 % host)"},{"line_number":190,"context_line":"        return entry[\u0027exists\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_c603d471","line":189,"in_reply_to":"fa98f980_2fee3e8c","updated":"2014-09-01 18:08:14.000000000","message":"Done","commit_id":"1ba6715b2fc66f7b85fac20f199c2e55cdc56969"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9cc1e857116978388b281c102cf262b82d90e5b8","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                # Another error, return without caching to try again on"},{"line_number":172,"context_line":"                # next binding"},{"line_number":173,"context_line":"                return"},{"line_number":174,"context_line":"        self.ivs_host_cache[host] \u003d {"},{"line_number":175,"context_line":"            \u0027timestamp\u0027: datetime.datetime.now(),"},{"line_number":176,"context_line":"            \u0027exists\u0027: exists"},{"line_number":177,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_d5c37888","line":174,"updated":"2014-09-01 06:33:16.000000000","message":"nit: it feels strange that \u0027check\u0027 method has side-effect","commit_id":"8dc9769f2c897e6f585518132b688cfc065cb7ee"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e3d841c1d64b41abaf228ee3c313df1a70033764","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                # Another error, return without caching to try again on"},{"line_number":172,"context_line":"                # next binding"},{"line_number":173,"context_line":"                return"},{"line_number":174,"context_line":"        self.ivs_host_cache[host] \u003d {"},{"line_number":175,"context_line":"            \u0027timestamp\u0027: datetime.datetime.now(),"},{"line_number":176,"context_line":"            \u0027exists\u0027: exists"},{"line_number":177,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_b9b6ce3b","line":174,"in_reply_to":"fa98f980_237d4b6f","updated":"2014-09-01 18:39:42.000000000","message":"That sounds like it only caches if it exists though.","commit_id":"8dc9769f2c897e6f585518132b688cfc065cb7ee"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"748ed4eae1497ec13df06775cae9b212bd02ac3b","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                # Another error, return without caching to try again on"},{"line_number":172,"context_line":"                # next binding"},{"line_number":173,"context_line":"                return"},{"line_number":174,"context_line":"        self.ivs_host_cache[host] \u003d {"},{"line_number":175,"context_line":"            \u0027timestamp\u0027: datetime.datetime.now(),"},{"line_number":176,"context_line":"            \u0027exists\u0027: exists"},{"line_number":177,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_19843ad3","line":174,"in_reply_to":"fa98f980_b9b6ce3b","updated":"2014-09-01 18:50:07.000000000","message":"I agree, the current name works for me.","commit_id":"8dc9769f2c897e6f585518132b688cfc065cb7ee"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"da992868fb4d43aabe2a9f01cae1a0c091e96d4f","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                # Another error, return without caching to try again on"},{"line_number":172,"context_line":"                # next binding"},{"line_number":173,"context_line":"                return"},{"line_number":174,"context_line":"        self.ivs_host_cache[host] \u003d {"},{"line_number":175,"context_line":"            \u0027timestamp\u0027: datetime.datetime.now(),"},{"line_number":176,"context_line":"            \u0027exists\u0027: exists"},{"line_number":177,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_237d4b6f","line":174,"in_reply_to":"fa98f980_d5c37888","updated":"2014-09-01 18:14:06.000000000","message":"perhaps:\n\n    cache_vswitch_if_exists()\n\nmight convey both. But I am good with the current naming convention as well.","commit_id":"8dc9769f2c897e6f585518132b688cfc065cb7ee"}],"neutron/tests/unit/ml2/drivers/test_bigswitch_mech.py":[{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"0dc654971b3a4a49ffd2121620d389bba316d6f6","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            with contextlib.nested(makeport(), makeport(),"},{"line_number":124,"context_line":"                                   makeport()) as ports:"},{"line_number":125,"context_line":"                self.assertEqual(3, len(rmock.mock_calls))"},{"line_number":126,"context_line":"                for p in ports:"},{"line_number":127,"context_line":"                    self.assertEqual(port[\u0027port\u0027][portbindings.VIF_TYPE],"},{"line_number":128,"context_line":"                                     portbindings.VIF_TYPE_IVS)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_34675454","line":126,"updated":"2014-08-13 08:39:47.000000000","message":"why is p unused and instead in assert there is port from previous loop used ?","commit_id":"dc81f3df0a116b4795c36d0941bd544945a6e831"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"7b2b06d9599db7d4ad81b7b4b9a050332ea586cc","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            with contextlib.nested(makeport(), makeport(),"},{"line_number":124,"context_line":"                                   makeport()) as ports:"},{"line_number":125,"context_line":"                self.assertEqual(3, len(rmock.mock_calls))"},{"line_number":126,"context_line":"                for p in ports:"},{"line_number":127,"context_line":"                    self.assertEqual(port[\u0027port\u0027][portbindings.VIF_TYPE],"},{"line_number":128,"context_line":"                                     portbindings.VIF_TYPE_IVS)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7ac7a964_6509302c","line":126,"in_reply_to":"baada198_34675454","updated":"2014-08-13 23:32:10.000000000","message":"Because I\u0027ve made a terrible mistake! :-)","commit_id":"dc81f3df0a116b4795c36d0941bd544945a6e831"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ccd0f05bfea3649da3affca8a90b241d17286335","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        ) as (rmock, port):"},{"line_number":97,"context_line":"            rmock.assert_called_once_with(\u0027hostname\u0027)"},{"line_number":98,"context_line":"            p \u003d port[\u0027port\u0027]"},{"line_number":99,"context_line":"            self.assertEqual(p[\u0027status\u0027], \u0027ACTIVE\u0027)"},{"line_number":100,"context_line":"            self.assertEqual(p[portbindings.HOST_ID], \u0027hostname\u0027)"},{"line_number":101,"context_line":"            self.assertEqual(p[portbindings.VIF_TYPE],"},{"line_number":102,"context_line":"                             portbindings.VIF_TYPE_IVS)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_5f9a31c6","line":99,"updated":"2014-08-25 14:05:36.000000000","message":"All the asserts should be expected, actual","commit_id":"6a718f20ad8e520a19fd17b7783a4d24828faa46"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"8f84f2c69e5549b82a02ef5eb6b20a39d6689aab","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# limitations under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import contextlib"},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":"import webob.exc"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_f7cb66a1","line":18,"updated":"2014-08-29 10:29:04.000000000","message":"nit: insert line between stdlib and 3rd party imports","commit_id":"4c64b8f000247ba539aa2fddf5c358d3da93dfc5"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"8f84f2c69e5549b82a02ef5eb6b20a39d6689aab","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                rmock.assert_called_once_with(\u0027hostname\u0027)"},{"line_number":117,"context_line":"                for port in ports:"},{"line_number":118,"context_line":"                    self.assertEqual(port[\u0027port\u0027][portbindings.VIF_TYPE],"},{"line_number":119,"context_line":"                                     portbindings.VIF_TYPE_IVS)"},{"line_number":120,"context_line":"            rmock.reset_mock()"},{"line_number":121,"context_line":"            # expired cache should result in new calls"},{"line_number":122,"context_line":"            mock.patch(DRIVER_MOD + \u0027.CACHE_VSWITCH_TIME\u0027, new\u003d0).start()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_973952a6","line":119,"updated":"2014-08-29 10:29:04.000000000","message":"nit: expected, observed","commit_id":"4c64b8f000247ba539aa2fddf5c358d3da93dfc5"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"b28651c231d61692e0a7a8749e7eedbb061c4502","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                rmock.assert_called_once_with(\u0027hostname\u0027)"},{"line_number":117,"context_line":"                for port in ports:"},{"line_number":118,"context_line":"                    self.assertEqual(port[\u0027port\u0027][portbindings.VIF_TYPE],"},{"line_number":119,"context_line":"                                     portbindings.VIF_TYPE_IVS)"},{"line_number":120,"context_line":"            rmock.reset_mock()"},{"line_number":121,"context_line":"            # expired cache should result in new calls"},{"line_number":122,"context_line":"            mock.patch(DRIVER_MOD + \u0027.CACHE_VSWITCH_TIME\u0027, new\u003d0).start()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_494d5e3d","line":119,"in_reply_to":"1abeadc6_973952a6","updated":"2014-08-29 12:06:56.000000000","message":"+1","commit_id":"4c64b8f000247ba539aa2fddf5c358d3da93dfc5"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"8f84f2c69e5549b82a02ef5eb6b20a39d6689aab","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            mock.patch(DRIVER_MOD + \u0027.CACHE_VSWITCH_TIME\u0027, new\u003d0).start()"},{"line_number":123,"context_line":"            with contextlib.nested(makeport(), makeport(),"},{"line_number":124,"context_line":"                                   makeport()) as ports:"},{"line_number":125,"context_line":"                self.assertEqual(3, len(rmock.mock_calls))"},{"line_number":126,"context_line":"                for port in ports:"},{"line_number":127,"context_line":"                    self.assertEqual(port[\u0027port\u0027][portbindings.VIF_TYPE],"},{"line_number":128,"context_line":"                                     portbindings.VIF_TYPE_IVS)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_976072a6","line":125,"updated":"2014-08-29 10:29:04.000000000","message":"nit: use call_count instead","commit_id":"4c64b8f000247ba539aa2fddf5c358d3da93dfc5"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"8f84f2c69e5549b82a02ef5eb6b20a39d6689aab","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                self.assertEqual(3, len(rmock.mock_calls))"},{"line_number":126,"context_line":"                for port in ports:"},{"line_number":127,"context_line":"                    self.assertEqual(port[\u0027port\u0027][portbindings.VIF_TYPE],"},{"line_number":128,"context_line":"                                     portbindings.VIF_TYPE_IVS)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def test_create404_triggers_background_sync(self):"},{"line_number":131,"context_line":"        # allow the async background thread to run for this test"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_d73f4a85","line":128,"updated":"2014-08-29 10:29:04.000000000","message":"as L119","commit_id":"4c64b8f000247ba539aa2fddf5c358d3da93dfc5"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"da992868fb4d43aabe2a9f01cae1a0c091e96d4f","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                for port in ports:"},{"line_number":128,"context_line":"                    self.assertEqual(portbindings.VIF_TYPE_IVS,"},{"line_number":129,"context_line":"                                     port[\u0027port\u0027][portbindings.VIF_TYPE])"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def test_create404_triggers_background_sync(self):"},{"line_number":132,"context_line":"        # allow the async background thread to run for this test"},{"line_number":133,"context_line":"        self.spawn_p.stop()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_a3585b57","line":130,"updated":"2014-09-01 18:14:06.000000000","message":"perhaps the case when the backend returns 404 is missing","commit_id":"8dc9769f2c897e6f585518132b688cfc065cb7ee"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"e3d841c1d64b41abaf228ee3c313df1a70033764","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                for port in ports:"},{"line_number":128,"context_line":"                    self.assertEqual(portbindings.VIF_TYPE_IVS,"},{"line_number":129,"context_line":"                                     port[\u0027port\u0027][portbindings.VIF_TYPE])"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def test_create404_triggers_background_sync(self):"},{"line_number":132,"context_line":"        # allow the async background thread to run for this test"},{"line_number":133,"context_line":"        self.spawn_p.stop()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_263c79e2","line":130,"in_reply_to":"fa98f980_a3585b57","updated":"2014-09-01 18:39:42.000000000","message":"Done","commit_id":"8dc9769f2c897e6f585518132b688cfc065cb7ee"}]}
