)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"da8a4cf2fc6ab4f8ea58c6c375626543e2f370d1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"changing error logs can remind operators there\u0027s a tradeoff."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Iff1b49fe7e6347e3c2bb5992494b2450809719a2"},{"line_number":14,"context_line":"Close-Bug: #1777591"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_0f6f5d92","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":9},"updated":"2018-06-22 08:44:29.000000000","message":"Closes-Bug","commit_id":"29f79f928ed4b411f448671dd0c9141fe459e67f"},{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"34d52bf05a3013a30cfe167f3242f08262159458","unresolved":false,"context_lines":[{"line_number":12,"context_line":"or force_nodes is set."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iff1b49fe7e6347e3c2bb5992494b2450809719a2"},{"line_number":15,"context_line":"Close-Bugs: #1777591"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f7c97a3_055ff040","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":10},"updated":"2018-06-27 03:17:39.000000000","message":"Closes-Bug","commit_id":"66f5132608ebd88c539248b35c9d87f63fa9324d"}],"nova/api/openstack/placement/lib.py":[{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"473944b50104733c9fd76df125b43ea0219ed54b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        :param member_of: A list of [ [aggregate_UUID],"},{"line_number":34,"context_line":"                                      [aggregate_UUID, aggregate_UUID] ... ]"},{"line_number":35,"context_line":"        :param limit:"},{"line_number":36,"context_line":"            If False, disable limits param in GET /allocation_candidates."},{"line_number":37,"context_line":"        \"\"\""},{"line_number":38,"context_line":"        self.use_same_provider \u003d use_same_provider"},{"line_number":39,"context_line":"        self.resources \u003d resources or {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_82e50da7","line":36,"range":{"start_line":36,"start_character":30,"end_line":36,"end_character":36},"updated":"2018-06-28 12:21:35.000000000","message":"limit","commit_id":"ac19ce16f09536cebc32588edfb83148f97d2d1e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e0d4453b4dafacb10d70627bd8dcf17167a6a9d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.member_of \u003d member_of or []"},{"line_number":43,"context_line":"        self.limit \u003d limit"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def __str__(self):"},{"line_number":46,"context_line":"        ret \u003d \u0027RequestGroup(use_same_provider\u003d%s\u0027 % str(self.use_same_provider)"},{"line_number":47,"context_line":"        ret +\u003d \u0027, resources\u003d{%s}\u0027 % \u0027, \u0027.join("},{"line_number":48,"context_line":"            \u0027%s:%d\u0027 % (rc, amount)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_08f55c84","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":15},"updated":"2018-07-14 12:07:47.000000000","message":"This should probably include limit since the other attributes are.","commit_id":"7e84feb0cacdda922d0d4fc7ea6ae3b844c9f883"},{"author":{"_account_id":21914,"name":"Remy-xl","email":"xulei_yewu@cmss.chinamobile.com","username":"xulei"},"change_message_id":"abdffdde6977b32a5b72ed6274120d57910e951e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.member_of \u003d member_of or []"},{"line_number":43,"context_line":"        self.limit \u003d limit"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def __str__(self):"},{"line_number":46,"context_line":"        ret \u003d \u0027RequestGroup(use_same_provider\u003d%s\u0027 % str(self.use_same_provider)"},{"line_number":47,"context_line":"        ret +\u003d \u0027, resources\u003d{%s}\u0027 % \u0027, \u0027.join("},{"line_number":48,"context_line":"            \u0027%s:%d\u0027 % (rc, amount)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_dcf4b8d2","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":15},"in_reply_to":"5f7c97a3_08f55c84","updated":"2018-07-18 11:58:12.000000000","message":"I will change limit param to ResourceRequest. ResourceRequest.is_limit can be a better way.","commit_id":"7e84feb0cacdda922d0d4fc7ea6ae3b844c9f883"}],"nova/scheduler/host_manager.py":[{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"553a96359cd6f3a0116cc58e3fd4cb7820c5e489","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                         forced_hosts_str)"},{"line_number":519,"context_line":"            else:"},{"line_number":520,"context_line":"                forced_hosts_str \u003d \u0027, \u0027.join(hosts_to_force)"},{"line_number":521,"context_line":"                LOG.info(\"No candidates or hosts matched due to not \""},{"line_number":522,"context_line":"                         \"match \u0027force_hosts\u0027 value of \u0027%s\u0027\", forced_hosts_str)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        def _match_forced_nodes(host_map, nodes_to_force):"},{"line_number":525,"context_line":"            forced_nodes \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_52ee90ed","line":522,"range":{"start_line":521,"start_character":25,"end_line":522,"end_character":78},"updated":"2018-06-20 09:54:11.000000000","message":"I agree with the idea that a low max_placement_results value can result in a returned candidate list without the desired node/host in it, which would lead to scheduling failure. But if we want the message to be more informative, including the returned candidates would help IMO.","commit_id":"29f79f928ed4b411f448671dd0c9141fe459e67f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6c178d876a489bc7f889464017b945d0194361e5","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                         forced_hosts_str)"},{"line_number":519,"context_line":"            else:"},{"line_number":520,"context_line":"                forced_hosts_str \u003d \u0027, \u0027.join(hosts_to_force)"},{"line_number":521,"context_line":"                LOG.info(\"No candidates or hosts matched due to not \""},{"line_number":522,"context_line":"                         \"match \u0027force_hosts\u0027 value of \u0027%s\u0027\", forced_hosts_str)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        def _match_forced_nodes(host_map, nodes_to_force):"},{"line_number":525,"context_line":"            forced_nodes \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_a26c1c36","line":522,"range":{"start_line":521,"start_character":25,"end_line":522,"end_character":78},"in_reply_to":"5f7c97a3_52ee90ed","updated":"2018-06-25 14:22:16.000000000","message":"\u003e But if we want the message to be more informative, including the returned candidates would help IMO.\n\nThat could be, by default, 1000 candidates, which we don\u0027t want to dump into the logs. It would be better to just mention something about checking max_placement_results  to see if it needs to be higher based on the number of available nodes in your deployment.","commit_id":"29f79f928ed4b411f448671dd0c9141fe459e67f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"154e17ba30ddd2cc5f76a8701115c7184260b3ee","unresolved":false,"context_lines":[{"line_number":549,"context_line":"                # NOTE(sbauza): The API level should prevent the user from"},{"line_number":550,"context_line":"                # providing a wrong destination but let\u0027s make sure a wrong"},{"line_number":551,"context_line":"                # destination doesn\u0027t trample the scheduler still."},{"line_number":552,"context_line":"                LOG.info(\u0027No candidates or hosts matched due to not matching \u0027"},{"line_number":553,"context_line":"                         \u0027requested destination (%(host)s, %(node)s)\u0027,"},{"line_number":554,"context_line":"                         {\u0027host\u0027: host, \u0027node\u0027: node})"},{"line_number":555,"context_line":"            return iter(requested_nodes)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_c362d9d9","line":552,"range":{"start_line":552,"start_character":29,"end_line":552,"end_character":48},"updated":"2018-06-20 05:28:24.000000000","message":"what\u0027s the difference between candidates and hosts?\nmy understanding anyway we want to find a host to schedule workload to?","commit_id":"29f79f928ed4b411f448671dd0c9141fe459e67f"}],"nova/scheduler/utils.py":[{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"473944b50104733c9fd76df125b43ea0219ed54b","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"            # Remove limits when use force_hosts or force_nodes"},{"line_number":255,"context_line":"            if not limit:"},{"line_number":256,"context_line":"                qparams.pop(0)"},{"line_number":257,"context_line":"            resource_query \u003d \",\".join("},{"line_number":258,"context_line":"                sorted(\"%s:%s\" % (rc, amount)"},{"line_number":259,"context_line":"                       for (rc, amount) in res.items()))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_6539dbcd","line":256,"range":{"start_line":256,"start_character":16,"end_line":256,"end_character":30},"updated":"2018-06-28 12:21:35.000000000","message":"i think it would be better to identify the limit element first and then pop it off qparams, because limit might not always be the first element considering future possible changes.","commit_id":"ac19ce16f09536cebc32588edfb83148f97d2d1e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e0d4453b4dafacb10d70627bd8dcf17167a6a9d","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            aggregates \u003d request_group.member_of"},{"line_number":252,"context_line":"            limit \u003d request_group.limit"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"            # Remove limit when use force_hosts or force_nodes"},{"line_number":255,"context_line":"            if not limit:"},{"line_number":256,"context_line":"                limit_param \u003d [i for i in qparams if i[0] is \u0027limit\u0027]"},{"line_number":257,"context_line":"                for item in limit_param:"},{"line_number":258,"context_line":"                    qparams.remove(item)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"            resource_query \u003d \",\".join("},{"line_number":261,"context_line":"                sorted(\"%s:%s\" % (rc, amount)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_6833b062","line":258,"range":{"start_line":254,"start_character":12,"end_line":258,"end_character":40},"updated":"2018-07-14 12:07:47.000000000","message":"This is a bit confusing, and I was hoping we could just avoid adding limit if not RequestGroup.limit below, but it looks like we\u0027re applying the limit outside the scope of a list of request groups, so we have to handle it this way?\n\nCan\u0027t we add the limit flag to the ResourceRequest class rather than the RequestGroup since the limit isn\u0027t specific per group, it\u0027s per request which can have many groups.","commit_id":"7e84feb0cacdda922d0d4fc7ea6ae3b844c9f883"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e0d4453b4dafacb10d70627bd8dcf17167a6a9d","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                qs_params.extend(sorted(aggs))"},{"line_number":280,"context_line":"            return qs_params"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        qparams \u003d [(\u0027limit\u0027, self._limit)]"},{"line_number":283,"context_line":"        if self._group_policy is not None:"},{"line_number":284,"context_line":"            qparams.append((\u0027group_policy\u0027, self._group_policy))"},{"line_number":285,"context_line":"        for ident, rg in self._rg_by_id.items():"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_880f2c8a","line":282,"updated":"2018-07-14 12:07:47.000000000","message":"If we have ResourceRequest.limits then we can just avoid adding the limit tuple here, which is much cleaner IMO.","commit_id":"7e84feb0cacdda922d0d4fc7ea6ae3b844c9f883"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e0d4453b4dafacb10d70627bd8dcf17167a6a9d","unresolved":false,"context_lines":[{"line_number":450,"context_line":"        res_req.get_request_group(None).resources[rclass] \u003d amount"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    # Tag limit param in resource_request"},{"line_number":453,"context_line":"    if \u0027force_hosts\u0027 in spec_obj:"},{"line_number":454,"context_line":"        if spec_obj.force_hosts:"},{"line_number":455,"context_line":"            res_req.get_request_group(None).limit \u003d False"},{"line_number":456,"context_line":"    if \u0027force_nodes\u0027 in spec_obj:"},{"line_number":457,"context_line":"        if spec_obj.force_nodes:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_28f05892","line":454,"range":{"start_line":453,"start_character":4,"end_line":454,"end_character":32},"updated":"2018-07-14 12:07:47.000000000","message":"This could be combined into a single line:\n\nif (\u0027force_hosts\u0027 in spec_obj and spec_obj.force_hosts or\n        \u0027force_nodes\u0027 in spec_obj and spec_obj.force_nodes):\n    res_req.get_request_group(None).limit \u003d False","commit_id":"7e84feb0cacdda922d0d4fc7ea6ae3b844c9f883"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e0d4453b4dafacb10d70627bd8dcf17167a6a9d","unresolved":false,"context_lines":[{"line_number":452,"context_line":"    # Tag limit param in resource_request"},{"line_number":453,"context_line":"    if \u0027force_hosts\u0027 in spec_obj:"},{"line_number":454,"context_line":"        if spec_obj.force_hosts:"},{"line_number":455,"context_line":"            res_req.get_request_group(None).limit \u003d False"},{"line_number":456,"context_line":"    if \u0027force_nodes\u0027 in spec_obj:"},{"line_number":457,"context_line":"        if spec_obj.force_nodes:"},{"line_number":458,"context_line":"            res_req.get_request_group(None).limit \u003d False"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_083a3c34","line":455,"range":{"start_line":455,"start_character":20,"end_line":455,"end_character":37},"updated":"2018-07-14 12:07:47.000000000","message":"Why set this on the RequestGroup since there can be multiple request groups - why don\u0027t we just set it on the ResourceRequest and then we can simply not add limit to queryparams rather than remove it later.","commit_id":"7e84feb0cacdda922d0d4fc7ea6ae3b844c9f883"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2cb1b9e4a08cf03851512c9337fb76b56abdbd06","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        self._group_policy \u003d None"},{"line_number":61,"context_line":"        self._limit \u003d CONF.scheduler.max_placement_results"},{"line_number":62,"context_line":"        # Add is_limit to control limit param in GET /allocation_candidates."},{"line_number":63,"context_line":"        self.is_limit \u003d True"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def __str__(self):"},{"line_number":66,"context_line":"        return \u0027, \u0027.join(sorted("}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_60a277af","line":63,"range":{"start_line":63,"start_character":13,"end_line":63,"end_character":21},"updated":"2018-07-19 13:16:35.000000000","message":"This isn\u0027t a great name. limit_candidates might be better.","commit_id":"d727804ca4c5a2dcd12abfb2629beebac4c92a10"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"09d1763ce37c257aff118005650999fdc795e1d6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        self._group_policy \u003d None"},{"line_number":61,"context_line":"        self._limit \u003d CONF.scheduler.max_placement_results"},{"line_number":62,"context_line":"        # Add is_limit to control limit param in GET /allocation_candidates."},{"line_number":63,"context_line":"        self.is_limit \u003d True"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def __str__(self):"},{"line_number":66,"context_line":"        return \u0027, \u0027.join(sorted("}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_e0f2079b","line":63,"range":{"start_line":63,"start_character":13,"end_line":63,"end_character":21},"in_reply_to":"5f7c97a3_60a277af","updated":"2018-07-19 13:22:51.000000000","message":"Done. Made it private, too, since it shouldn\u0027t need to be accessed outside of this class.","commit_id":"d727804ca4c5a2dcd12abfb2629beebac4c92a10"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"722fbf62d6d39d65763549d8e2e98fcd220d8284","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # { ident: RequestGroup }"},{"line_number":59,"context_line":"        self._rg_by_id \u003d {}"},{"line_number":60,"context_line":"        self._group_policy \u003d None"},{"line_number":61,"context_line":"        self._limit \u003d CONF.scheduler.max_placement_results"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __str__(self):"},{"line_number":64,"context_line":"        return \u0027, \u0027.join(sorted("}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_dbdfbe35","line":61,"updated":"2018-07-19 14:04:11.000000000","message":"You might want to add a comment that this is the default but can be set to None to indicate unlimited.","commit_id":"865c70f67b6abf6bef8b86be896d538244a0577c"}],"nova/tests/unit/scheduler/test_utils.py":[{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"34d52bf05a3013a30cfe167f3242f08262159458","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            \u0027resources\u003dDISK_GB%3A15%2CMEMORY_MB%3A1024%2CVCPU%3A1\u0027"},{"line_number":441,"context_line":"        )"},{"line_number":442,"context_line":"        self.assertEqual(expected_querystring, resources.to_querystring())"},{"line_number":443,"context_line":" "},{"line_number":444,"context_line":"    @mock.patch(\u0027nova.compute.utils.is_volume_backed_instance\u0027,"},{"line_number":445,"context_line":"                return_value\u003dFalse)"},{"line_number":446,"context_line":"    def test_resources_from_flavor_no_bfv(self, mock_is_bfv):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_854b0085","line":443,"range":{"start_line":443,"start_character":0,"end_line":443,"end_character":1},"updated":"2018-06-27 03:17:39.000000000","message":"oops, whitespace here","commit_id":"66f5132608ebd88c539248b35c9d87f63fa9324d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2cb1b9e4a08cf03851512c9337fb76b56abdbd06","unresolved":false,"context_lines":[{"line_number":377,"context_line":"                                ephemeral_gb\u003d0,"},{"line_number":378,"context_line":"                                swap\u003d0)"},{"line_number":379,"context_line":"        expected \u003d utils.ResourceRequest()"},{"line_number":380,"context_line":"        expected.is_limit \u003d True"},{"line_number":381,"context_line":"        expected._rg_by_id[None] \u003d plib.RequestGroup("},{"line_number":382,"context_line":"            use_same_provider\u003dFalse,"},{"line_number":383,"context_line":"            resources\u003d{"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_e0c8c775","line":380,"range":{"start_line":380,"start_character":8,"end_line":380,"end_character":32},"updated":"2018-07-19 13:16:35.000000000","message":"Remove this","commit_id":"d727804ca4c5a2dcd12abfb2629beebac4c92a10"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"09d1763ce37c257aff118005650999fdc795e1d6","unresolved":false,"context_lines":[{"line_number":377,"context_line":"                                ephemeral_gb\u003d0,"},{"line_number":378,"context_line":"                                swap\u003d0)"},{"line_number":379,"context_line":"        expected \u003d utils.ResourceRequest()"},{"line_number":380,"context_line":"        expected.is_limit \u003d True"},{"line_number":381,"context_line":"        expected._rg_by_id[None] \u003d plib.RequestGroup("},{"line_number":382,"context_line":"            use_same_provider\u003dFalse,"},{"line_number":383,"context_line":"            resources\u003d{"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_80ed53b9","line":380,"range":{"start_line":380,"start_character":8,"end_line":380,"end_character":32},"in_reply_to":"5f7c97a3_e0c8c775","updated":"2018-07-19 13:22:51.000000000","message":"Done","commit_id":"d727804ca4c5a2dcd12abfb2629beebac4c92a10"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"09d1763ce37c257aff118005650999fdc795e1d6","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                                swap\u003d0)"},{"line_number":402,"context_line":"        fake_spec \u003d objects.RequestSpec(flavor\u003dflavor, force_nodes\u003d[\u0027test\u0027])"},{"line_number":403,"context_line":"        expected \u003d utils.ResourceRequest()"},{"line_number":404,"context_line":"        expected.is_limit \u003d False"},{"line_number":405,"context_line":"        expected._rg_by_id[None] \u003d plib.RequestGroup("},{"line_number":406,"context_line":"            use_same_provider\u003dFalse,"},{"line_number":407,"context_line":"            resources\u003d{"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_a0e88fa6","line":404,"range":{"start_line":404,"start_character":8,"end_line":404,"end_character":33},"updated":"2018-07-19 13:22:51.000000000","message":"and here","commit_id":"d727804ca4c5a2dcd12abfb2629beebac4c92a10"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"51208e7e8bee88012a8e756fefd6672de764100c","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                                swap\u003d0)"},{"line_number":402,"context_line":"        fake_spec \u003d objects.RequestSpec(flavor\u003dflavor, force_nodes\u003d[\u0027test\u0027])"},{"line_number":403,"context_line":"        expected \u003d utils.ResourceRequest()"},{"line_number":404,"context_line":"        expected.is_limit \u003d False"},{"line_number":405,"context_line":"        expected._rg_by_id[None] \u003d plib.RequestGroup("},{"line_number":406,"context_line":"            use_same_provider\u003dFalse,"},{"line_number":407,"context_line":"            resources\u003d{"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_7b5d4a14","line":404,"range":{"start_line":404,"start_character":8,"end_line":404,"end_character":33},"in_reply_to":"5f7c97a3_2080ffbd","updated":"2018-07-19 13:48:09.000000000","message":"Yeah, I\u0027m actually not sure assertResourceRequestsEqual is valuable in these test cases. We\u0027re really just wanting to validate whether \u0027limit\u0027 shows up in the querystring.","commit_id":"d727804ca4c5a2dcd12abfb2629beebac4c92a10"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"269e058a8358b7a66ed4f60064e353722ccb6d84","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                                swap\u003d0)"},{"line_number":402,"context_line":"        fake_spec \u003d objects.RequestSpec(flavor\u003dflavor, force_nodes\u003d[\u0027test\u0027])"},{"line_number":403,"context_line":"        expected \u003d utils.ResourceRequest()"},{"line_number":404,"context_line":"        expected.is_limit \u003d False"},{"line_number":405,"context_line":"        expected._rg_by_id[None] \u003d plib.RequestGroup("},{"line_number":406,"context_line":"            use_same_provider\u003dFalse,"},{"line_number":407,"context_line":"            resources\u003d{"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_2080ffbd","line":404,"range":{"start_line":404,"start_character":8,"end_line":404,"end_character":33},"in_reply_to":"5f7c97a3_a0e88fa6","updated":"2018-07-19 13:28:44.000000000","message":"Isn\u0027t that needed for assertResourceRequestsEqual? Oh I guess probably not because it\u0027s not based on resources (from the flavor).","commit_id":"d727804ca4c5a2dcd12abfb2629beebac4c92a10"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"09d1763ce37c257aff118005650999fdc795e1d6","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                                swap\u003d0)"},{"line_number":426,"context_line":"        fake_spec \u003d objects.RequestSpec(flavor\u003dflavor, force_hosts\u003d[\u0027test\u0027])"},{"line_number":427,"context_line":"        expected \u003d utils.ResourceRequest()"},{"line_number":428,"context_line":"        expected.is_limit \u003d False"},{"line_number":429,"context_line":"        expected._rg_by_id[None] \u003d plib.RequestGroup("},{"line_number":430,"context_line":"            use_same_provider\u003dFalse,"},{"line_number":431,"context_line":"            resources\u003d{"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_40297bef","line":428,"range":{"start_line":428,"start_character":8,"end_line":428,"end_character":33},"updated":"2018-07-19 13:22:51.000000000","message":"and here.","commit_id":"d727804ca4c5a2dcd12abfb2629beebac4c92a10"}]}
