)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"52bc31d73895bb5a4b00bbf58cfd8b63e6049778","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If I define a irrelevant specs in flavor like key\u003d\u0027x\u0027 value\u003d\u0027y\u0027,"},{"line_number":10,"context_line":"ComputeCapacityFilter will return flase,I can\u0027t create instances."},{"line_number":11,"context_line":"This patch fix this,and add a unit test for it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia9e7c882bcee131e106e67dc46ed9ce1224e4c67"},{"line_number":14,"context_line":"Closes-Bug: #1582589"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3aaa91ec_2e2300a9","line":11,"updated":"2016-06-28 13:52:43.000000000","message":"You should describe this patch still keep back-compatible, but allow the key isn\u0027t an attribute of host_state.","commit_id":"2d7e225a367395fca15762e674c27fec6eeb3edb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aeba72878456aeced6f818fc9eaf4ddf2a95d8d3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow irrelevant,self-defined specs in ComputeCapacityFilter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"For backward compatibility, ComputeCapacityFilter treat extra spec"},{"line_number":10,"context_line":"keys which contains no colons like \u0027x\u0027 the same as \u0027capabilities:x\u0027,"},{"line_number":11,"context_line":"because hoststate doesn\u0027t contain attribute like x, this filter"},{"line_number":12,"context_line":"will allways return False. So it cause conflict with"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1aa78d24_300062aa","line":9,"range":{"start_line":9,"start_character":50,"end_line":9,"end_character":55},"updated":"2016-07-05 13:18:56.000000000","message":"nit:s/treat/treats/","commit_id":"b962aa16bdd91fc62bc96fd57c398b6cfb553838"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"92e9ecbe404d773934433729196c349873d6b140","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow irrelevant,self-defined specs in ComputeCapacityFilter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"For backward compatibility, ComputeCapacityFilter treat extra spec"},{"line_number":10,"context_line":"keys which contains no colons like \u0027x\u0027 the same as \u0027capabilities:x\u0027,"},{"line_number":11,"context_line":"because hoststate doesn\u0027t contain attribute like x, this filter"},{"line_number":12,"context_line":"will allways return False. So it cause conflict with"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1aa78d24_b62a8a2a","line":9,"range":{"start_line":9,"start_character":50,"end_line":9,"end_character":55},"in_reply_to":"1aa78d24_300062aa","updated":"2016-07-05 13:57:57.000000000","message":"Done","commit_id":"b962aa16bdd91fc62bc96fd57c398b6cfb553838"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aeba72878456aeced6f818fc9eaf4ddf2a95d8d3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"For backward compatibility, ComputeCapacityFilter treat extra spec"},{"line_number":10,"context_line":"keys which contains no colons like \u0027x\u0027 the same as \u0027capabilities:x\u0027,"},{"line_number":11,"context_line":"because hoststate doesn\u0027t contain attribute like x, this filter"},{"line_number":12,"context_line":"will allways return False. So it cause conflict with"},{"line_number":13,"context_line":"AggregateInstanceExtraSpecsFilter, and limit user to define spec"},{"line_number":14,"context_line":"keys without colons."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1aa78d24_b0e1f200","line":12,"range":{"start_line":12,"start_character":33,"end_line":12,"end_character":38},"updated":"2016-07-05 13:18:56.000000000","message":"nit:s/cause/causes/","commit_id":"b962aa16bdd91fc62bc96fd57c398b6cfb553838"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"92e9ecbe404d773934433729196c349873d6b140","unresolved":false,"context_lines":[{"line_number":9,"context_line":"For backward compatibility, ComputeCapacityFilter treat extra spec"},{"line_number":10,"context_line":"keys which contains no colons like \u0027x\u0027 the same as \u0027capabilities:x\u0027,"},{"line_number":11,"context_line":"because hoststate doesn\u0027t contain attribute like x, this filter"},{"line_number":12,"context_line":"will allways return False. So it cause conflict with"},{"line_number":13,"context_line":"AggregateInstanceExtraSpecsFilter, and limit user to define spec"},{"line_number":14,"context_line":"keys without colons."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1aa78d24_f61c1215","line":12,"range":{"start_line":12,"start_character":33,"end_line":12,"end_character":38},"in_reply_to":"1aa78d24_b0e1f200","updated":"2016-07-05 13:57:57.000000000","message":"Done","commit_id":"b962aa16bdd91fc62bc96fd57c398b6cfb553838"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aeba72878456aeced6f818fc9eaf4ddf2a95d8d3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch solve the conflict and keep backward compatible."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This patch Also join two lines into one in method host_passes."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ia9e7c882bcee131e106e67dc46ed9ce1224e4c67"},{"line_number":21,"context_line":"Closes-Bug: #1582589"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1aa78d24_90bb16e5","line":18,"updated":"2016-07-05 13:18:56.000000000","message":"I think this line is not needed in the commit message. It should be obvious from the patch itself","commit_id":"b962aa16bdd91fc62bc96fd57c398b6cfb553838"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"92e9ecbe404d773934433729196c349873d6b140","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch solve the conflict and keep backward compatible."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This patch Also join two lines into one in method host_passes."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ia9e7c882bcee131e106e67dc46ed9ce1224e4c67"},{"line_number":21,"context_line":"Closes-Bug: #1582589"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1aa78d24_b671eae2","line":18,"in_reply_to":"1aa78d24_90bb16e5","updated":"2016-07-05 13:57:57.000000000","message":"Yes,it\u0027s obvious.Eli suggest me not to join these two sentencs because it\u0027s irrelevant with this patch.I don\u0027t want to ignore it and I don\u0027t think it worth a new patch to just join two lines into one. So I add  this to commit messages and hope this can make a compromise.","commit_id":"b962aa16bdd91fc62bc96fd57c398b6cfb553838"}],"doc/source/filter_scheduler.rst":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"b7f407b3e031534bb8bd67aa375c92c23e28659f","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    * free_ram_mb (compared with a number, values like \"\u003e\u003d 4096\")"},{"line_number":80,"context_line":"    * free_disk_mb (compared with a number, values like \"\u003e\u003d 10240\")"},{"line_number":81,"context_line":"    * host (compared with a string, values like: \"\u003cin\u003e compute01compute02\")"},{"line_number":82,"context_line":"    * hypervisor_type (ompared with a string, values like: \"s\u003d\u003d QEMU\", \"s\u003d\u003d powervm\")"},{"line_number":83,"context_line":"    * hypervisor_version (compared with a number, values like : \"\u003e\u003d 1005003\")"},{"line_number":84,"context_line":"    * num_instances (compared with a number, values like: \"\u003c\u003d 10\")"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_dcf182cf","line":81,"range":{"start_line":81,"start_character":55,"end_line":81,"end_character":73},"updated":"2016-07-04 02:25:49.000000000","message":"is this correct string?","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"cf2fec51f4b804952e5307110e62dc0f785860f6","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    * free_ram_mb (compared with a number, values like \"\u003e\u003d 4096\")"},{"line_number":80,"context_line":"    * free_disk_mb (compared with a number, values like \"\u003e\u003d 10240\")"},{"line_number":81,"context_line":"    * host (compared with a string, values like: \"\u003cin\u003e compute01compute02\")"},{"line_number":82,"context_line":"    * hypervisor_type (ompared with a string, values like: \"s\u003d\u003d QEMU\", \"s\u003d\u003d powervm\")"},{"line_number":83,"context_line":"    * hypervisor_version (compared with a number, values like : \"\u003e\u003d 1005003\")"},{"line_number":84,"context_line":"    * num_instances (compared with a number, values like: \"\u003c\u003d 10\")"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_43948a36","line":81,"range":{"start_line":81,"start_character":55,"end_line":81,"end_character":73},"in_reply_to":"1aa78d24_dcf182cf","updated":"2016-07-04 09:03:25.000000000","message":"Done","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"b7f407b3e031534bb8bd67aa375c92c23e28659f","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    * free_ram_mb (compared with a number, values like \"\u003e\u003d 4096\")"},{"line_number":80,"context_line":"    * free_disk_mb (compared with a number, values like \"\u003e\u003d 10240\")"},{"line_number":81,"context_line":"    * host (compared with a string, values like: \"\u003cin\u003e compute01compute02\")"},{"line_number":82,"context_line":"    * hypervisor_type (ompared with a string, values like: \"s\u003d\u003d QEMU\", \"s\u003d\u003d powervm\")"},{"line_number":83,"context_line":"    * hypervisor_version (compared with a number, values like : \"\u003e\u003d 1005003\")"},{"line_number":84,"context_line":"    * num_instances (compared with a number, values like: \"\u003c\u003d 10\")"},{"line_number":85,"context_line":"    * num_io_ops (compared with a number, values like: \"\u003c\u003d 5\")"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_5cdd9241","line":82,"updated":"2016-07-04 02:25:49.000000000","message":"s//c","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"cf2fec51f4b804952e5307110e62dc0f785860f6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    * free_ram_mb (compared with a number, values like \"\u003e\u003d 4096\")"},{"line_number":80,"context_line":"    * free_disk_mb (compared with a number, values like \"\u003e\u003d 10240\")"},{"line_number":81,"context_line":"    * host (compared with a string, values like: \"\u003cin\u003e compute01compute02\")"},{"line_number":82,"context_line":"    * hypervisor_type (ompared with a string, values like: \"s\u003d\u003d QEMU\", \"s\u003d\u003d powervm\")"},{"line_number":83,"context_line":"    * hypervisor_version (compared with a number, values like : \"\u003e\u003d 1005003\")"},{"line_number":84,"context_line":"    * num_instances (compared with a number, values like: \"\u003c\u003d 10\")"},{"line_number":85,"context_line":"    * num_io_ops (compared with a number, values like: \"\u003c\u003d 5\")"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aa78d24_a399ee70","line":82,"in_reply_to":"1aa78d24_5cdd9241","updated":"2016-07-04 09:03:25.000000000","message":"Done","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":21242,"name":"Michael Glaser","email":"michael.glaser@att.com","username":"MikeG451"},"change_message_id":"57974796179c4c4cd7694f96520d29603bcaeb06","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  be matched. If a namespace is present and is not ``capabilities``, the filter"},{"line_number":46,"context_line":"  ignores the namespace. For example ``capabilities:cpu_info:features`` is"},{"line_number":47,"context_line":"  a valid scope format. For backward compatibility, when a key doesn\u0027t contain"},{"line_number":48,"context_line":"  a colon (:), no namespace is present for it, if this key is an attribute of"},{"line_number":49,"context_line":"  HostState object, like ``free_disk_mb``, the filter also treats the extra"},{"line_number":50,"context_line":"  specs key as the key to be matched, if not, the filter will ignore the key."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"1aa78d24_78b87f11","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":77},"updated":"2016-07-07 17:26:01.000000000","message":"Needs to be a period, rather than comma after \u0027...no namespace is present for it\u0027, then capitalize the start of the next sentence.","commit_id":"ecf71bf21785275b5225d236e5e7d5f853424333"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"1308d2732447a7530f8ce7a64a03e9f6e25bed1b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  be matched. If a namespace is present and is not ``capabilities``, the filter"},{"line_number":46,"context_line":"  ignores the namespace. For example ``capabilities:cpu_info:features`` is"},{"line_number":47,"context_line":"  a valid scope format. For backward compatibility, when a key doesn\u0027t contain"},{"line_number":48,"context_line":"  a colon (:), no namespace is present for it, if this key is an attribute of"},{"line_number":49,"context_line":"  HostState object, like ``free_disk_mb``, the filter also treats the extra"},{"line_number":50,"context_line":"  specs key as the key to be matched, if not, the filter will ignore the key."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"1aa78d24_c3942838","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":77},"in_reply_to":"1aa78d24_78b87f11","updated":"2016-07-07 17:56:38.000000000","message":"Done","commit_id":"ecf71bf21785275b5225d236e5e7d5f853424333"},{"author":{"_account_id":21242,"name":"Michael Glaser","email":"michael.glaser@att.com","username":"MikeG451"},"change_message_id":"57974796179c4c4cd7694f96520d29603bcaeb06","unresolved":false,"context_lines":[{"line_number":47,"context_line":"  a valid scope format. For backward compatibility, when a key doesn\u0027t contain"},{"line_number":48,"context_line":"  a colon (:), no namespace is present for it, if this key is an attribute of"},{"line_number":49,"context_line":"  HostState object, like ``free_disk_mb``, the filter also treats the extra"},{"line_number":50,"context_line":"  specs key as the key to be matched, if not, the filter will ignore the key."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  The extra specifications can have an operator at the beginning of the value"},{"line_number":53,"context_line":"  string of a key/value pair. If there is no operator specified, then a"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1aa78d24_584e633b","line":50,"range":{"start_line":50,"start_character":37,"end_line":50,"end_character":38},"updated":"2016-07-07 17:26:01.000000000","message":"Need a period, rather than comma after \u0027... the key to be matched\u0027, then capitalize the start of the next sentence.","commit_id":"ecf71bf21785275b5225d236e5e7d5f853424333"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"1308d2732447a7530f8ce7a64a03e9f6e25bed1b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"  a valid scope format. For backward compatibility, when a key doesn\u0027t contain"},{"line_number":48,"context_line":"  a colon (:), no namespace is present for it, if this key is an attribute of"},{"line_number":49,"context_line":"  HostState object, like ``free_disk_mb``, the filter also treats the extra"},{"line_number":50,"context_line":"  specs key as the key to be matched, if not, the filter will ignore the key."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  The extra specifications can have an operator at the beginning of the value"},{"line_number":53,"context_line":"  string of a key/value pair. If there is no operator specified, then a"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1aa78d24_43a15893","line":50,"range":{"start_line":50,"start_character":37,"end_line":50,"end_character":38},"in_reply_to":"1aa78d24_584e633b","updated":"2016-07-07 17:56:38.000000000","message":"Done","commit_id":"ecf71bf21785275b5225d236e5e7d5f853424333"}],"nova/scheduler/filters/compute_capabilities_filter.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"52bc31d73895bb5a4b00bbf58cfd8b63e6049778","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            # contains, just deal it the same as \u0027capabilities:key\u0027. This is"},{"line_number":80,"context_line":"            # just for backward-compatible."},{"line_number":81,"context_line":"            # If key has namespace, the scope size will be bigger than 1,"},{"line_number":82,"context_line":"            # check  wheather namespace is capabilities. If not, ignore it."},{"line_number":83,"context_line":"            if len(scope) \u003d\u003d 1:"},{"line_number":84,"context_line":"                stats \u003d getattr(host_state, \u0027stats\u0027, {})"},{"line_number":85,"context_line":"                has_attr \u003d hasattr(host_state, key) or key in stats"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_ce907c98","line":82,"updated":"2016-06-28 13:52:43.000000000","message":"Better to provide a link to http://docs.openstack.org/developer/nova/filter_scheduler.html#filtering\n\nAlso need update it","commit_id":"2d7e225a367395fca15762e674c27fec6eeb3edb"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"b7f407b3e031534bb8bd67aa375c92c23e28659f","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        for key, req in six.iteritems(instance_type.extra_specs):"},{"line_number":75,"context_line":"            # Either not scope format, or in capabilities scope"},{"line_number":76,"context_line":"            scope \u003d key.split(\u0027:\u0027)"},{"line_number":77,"context_line":"            # If key does not has namespace, scope size is 1, check wheather"},{"line_number":78,"context_line":"            # host_state contains key as an attribute. If not, ignore it.If it"},{"line_number":79,"context_line":"            # contains, just deal it the same as \u0027capabilities:key\u0027. This is"},{"line_number":80,"context_line":"            # just for backward-compatible."}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_1ca14aaa","line":77,"range":{"start_line":77,"start_character":30,"end_line":77,"end_character":33},"updated":"2016-07-04 02:25:49.000000000","message":"s/has/have","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"cf2fec51f4b804952e5307110e62dc0f785860f6","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        for key, req in six.iteritems(instance_type.extra_specs):"},{"line_number":75,"context_line":"            # Either not scope format, or in capabilities scope"},{"line_number":76,"context_line":"            scope \u003d key.split(\u0027:\u0027)"},{"line_number":77,"context_line":"            # If key does not has namespace, scope size is 1, check wheather"},{"line_number":78,"context_line":"            # host_state contains key as an attribute. If not, ignore it.If it"},{"line_number":79,"context_line":"            # contains, just deal it the same as \u0027capabilities:key\u0027. This is"},{"line_number":80,"context_line":"            # just for backward-compatible."}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_e3a3f69c","line":77,"range":{"start_line":77,"start_character":30,"end_line":77,"end_character":33},"in_reply_to":"1aa78d24_1ca14aaa","updated":"2016-07-04 09:03:25.000000000","message":"Done","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"b7f407b3e031534bb8bd67aa375c92c23e28659f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            # Either not scope format, or in capabilities scope"},{"line_number":76,"context_line":"            scope \u003d key.split(\u0027:\u0027)"},{"line_number":77,"context_line":"            # If key does not has namespace, scope size is 1, check wheather"},{"line_number":78,"context_line":"            # host_state contains key as an attribute. If not, ignore it.If it"},{"line_number":79,"context_line":"            # contains, just deal it the same as \u0027capabilities:key\u0027. This is"},{"line_number":80,"context_line":"            # just for backward-compatible."},{"line_number":81,"context_line":"            # If key has namespace, the scope size will be bigger than 1,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_3cb086f4","line":78,"updated":"2016-07-04 02:25:49.000000000","message":"s// /","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"cf2fec51f4b804952e5307110e62dc0f785860f6","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            # Either not scope format, or in capabilities scope"},{"line_number":76,"context_line":"            scope \u003d key.split(\u0027:\u0027)"},{"line_number":77,"context_line":"            # If key does not has namespace, scope size is 1, check wheather"},{"line_number":78,"context_line":"            # host_state contains key as an attribute. If not, ignore it.If it"},{"line_number":79,"context_line":"            # contains, just deal it the same as \u0027capabilities:key\u0027. This is"},{"line_number":80,"context_line":"            # just for backward-compatible."},{"line_number":81,"context_line":"            # If key has namespace, the scope size will be bigger than 1,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_c3a07a93","line":78,"in_reply_to":"1aa78d24_3cb086f4","updated":"2016-07-04 09:03:25.000000000","message":"Done","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"b7f407b3e031534bb8bd67aa375c92c23e28659f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            # just for backward-compatible."},{"line_number":81,"context_line":"            # If key has namespace, the scope size will be bigger than 1,"},{"line_number":82,"context_line":"            # check wheather namespace is capabilities. If not, ignore it."},{"line_number":83,"context_line":"            if len(scope) \u003d\u003d 1:"},{"line_number":84,"context_line":"                stats \u003d getattr(host_state, \u0027stats\u0027, {})"},{"line_number":85,"context_line":"                has_attr \u003d hasattr(host_state, key) or key in stats"},{"line_number":86,"context_line":"                if not has_attr:"},{"line_number":87,"context_line":"                    continue"},{"line_number":88,"context_line":"            elif scope[0] !\u003d \"capabilities\":"},{"line_number":89,"context_line":"                continue"},{"line_number":90,"context_line":"            else:"},{"line_number":91,"context_line":"                del scope[0]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            cap \u003d self._get_capabilities(host_state, scope)"},{"line_number":94,"context_line":"            if cap is None:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_bc73d64c","line":91,"range":{"start_line":83,"start_character":0,"end_line":91,"end_character":28},"updated":"2016-07-04 02:25:49.000000000","message":"This if else condition looks not very clear:\n\nhow about:\n\nif len(scope) \u003d\u003d 1:\n   # to deal with scope \u003d\u003d1\n\nelse:\n   # to deal with scope !\u003d1\n   if scope[0] !\u003d \"capabilities\":\n       continue\n   # other conditons\n   del scope[0]","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"cf2fec51f4b804952e5307110e62dc0f785860f6","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            # just for backward-compatible."},{"line_number":81,"context_line":"            # If key has namespace, the scope size will be bigger than 1,"},{"line_number":82,"context_line":"            # check wheather namespace is capabilities. If not, ignore it."},{"line_number":83,"context_line":"            if len(scope) \u003d\u003d 1:"},{"line_number":84,"context_line":"                stats \u003d getattr(host_state, \u0027stats\u0027, {})"},{"line_number":85,"context_line":"                has_attr \u003d hasattr(host_state, key) or key in stats"},{"line_number":86,"context_line":"                if not has_attr:"},{"line_number":87,"context_line":"                    continue"},{"line_number":88,"context_line":"            elif scope[0] !\u003d \"capabilities\":"},{"line_number":89,"context_line":"                continue"},{"line_number":90,"context_line":"            else:"},{"line_number":91,"context_line":"                del scope[0]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            cap \u003d self._get_capabilities(host_state, scope)"},{"line_number":94,"context_line":"            if cap is None:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_a3e72ee3","line":91,"range":{"start_line":83,"start_character":0,"end_line":91,"end_character":28},"in_reply_to":"1aa78d24_bc73d64c","updated":"2016-07-04 09:03:25.000000000","message":"Done","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"b7f407b3e031534bb8bd67aa375c92c23e28659f","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    def host_passes(self, host_state, spec_obj):"},{"line_number":106,"context_line":"        \"\"\"Return a list of hosts that can create instance_type.\"\"\""},{"line_number":107,"context_line":"        instance_type \u003d spec_obj.flavor"},{"line_number":108,"context_line":"        if not self._satisfies_extra_specs(host_state, instance_type):"},{"line_number":109,"context_line":"            LOG.debug(\"%(host_state)s fails instance_type extra_specs \""},{"line_number":110,"context_line":"                      \"requirements\", {\u0027host_state\u0027: host_state})"},{"line_number":111,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_9cceda81","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":70},"updated":"2016-07-04 02:25:49.000000000","message":"I don\u0027t prefer you to cleanup unrelated changes.","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":10453,"name":"octopuszhang","email":"zhangyf@rc.inesa.com","username":"1"},"change_message_id":"cf2fec51f4b804952e5307110e62dc0f785860f6","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    def host_passes(self, host_state, spec_obj):"},{"line_number":106,"context_line":"        \"\"\"Return a list of hosts that can create instance_type.\"\"\""},{"line_number":107,"context_line":"        instance_type \u003d spec_obj.flavor"},{"line_number":108,"context_line":"        if not self._satisfies_extra_specs(host_state, instance_type):"},{"line_number":109,"context_line":"            LOG.debug(\"%(host_state)s fails instance_type extra_specs \""},{"line_number":110,"context_line":"                      \"requirements\", {\u0027host_state\u0027: host_state})"},{"line_number":111,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_3ea071f4","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":70},"in_reply_to":"1aa78d24_9cceda81","updated":"2016-07-04 09:03:25.000000000","message":"It is \"self._satisfies_extra_specs(hoststate.capabilities, instance_type):\"  here before, more than 79 characters, so it was divided into two lines.But since change I0b9b05a25a8c1841093913c4a2fb19b48aff2ae1, one line is long encough.This change won\u0027t break anything.\n\nShould I just ignore this or post a new patch for this? I add one line in commit message for this now.","commit_id":"8d3564929f9b2dabc185d799bba71d83ea37e9f0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e6f5cb8f099a6d16535915520e0edfeeb35c7a97","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    def host_passes(self, host_state, spec_obj):"},{"line_number":108,"context_line":"        \"\"\"Return a list of hosts that can create instance_type.\"\"\""},{"line_number":109,"context_line":"        instance_type \u003d spec_obj.flavor"},{"line_number":110,"context_line":"        if not self._satisfies_extra_specs(host_state, instance_type):"},{"line_number":111,"context_line":"            LOG.debug(\"%(host_state)s fails instance_type extra_specs \""},{"line_number":112,"context_line":"                      \"requirements\", {\u0027host_state\u0027: host_state})"},{"line_number":113,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":15,"id":"9ad45d7e_9cb81aca","line":110,"updated":"2016-08-10 18:25:12.000000000","message":"We should avoid these unrelated changes, ideally.","commit_id":"83b59ea6035df173fb206167a4911f512fe22e64"}],"nova/tests/unit/scheduler/filters/test_compute_capabilities_filters.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"52bc31d73895bb5a4b00bbf58cfd8b63e6049778","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            especs\u003d{\u0027capabilities\u0027: \u00271\u0027},"},{"line_number":109,"context_line":"            passes\u003dTrue)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def test_compute_filter_pass_self_defined_specs(self):"},{"line_number":112,"context_line":"        # Make sure this will not reject user\u0027s self-defined,irrelevant specs"},{"line_number":113,"context_line":"        self._do_test_compute_filter_extra_specs("},{"line_number":114,"context_line":"            ecaps\u003d{\u0027opt1\u0027: 1, \u0027opt2\u0027: 2},"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_4e264c69","line":111,"updated":"2016-06-28 13:52:43.000000000","message":"you should add one more testcase for back-compatible","commit_id":"2d7e225a367395fca15762e674c27fec6eeb3edb"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2401ff7f4e06234229ea065959c3b0e541fc2093","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_compute_filter_fails_without_capabilites(self):"},{"line_number":54,"context_line":"        cpu_info \u003d \"\"\" { } \"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        cpu_info \u003d six.text_type(cpu_info)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self._do_test_compute_filter_extra_specs("}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_bc7b38bd","side":"PARENT","line":55,"updated":"2016-06-30 11:13:52.000000000","message":"this is unrelated change.","commit_id":"500f3ddf6e5c3a0ca6ab8dac3f1d3f3108e0449d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2401ff7f4e06234229ea065959c3b0e541fc2093","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        cpu_info \u003d \"\"\" { } \"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        cpu_info \u003d six.text_type(cpu_info)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self._do_test_compute_filter_extra_specs("},{"line_number":59,"context_line":"            ecaps\u003d{\u0027cpu_info\u0027: cpu_info},"},{"line_number":60,"context_line":"            especs\u003d{\u0027capabilities:cpu_info:vendor\u0027: \u0027Intel\u0027},"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_5c417462","side":"PARENT","line":57,"updated":"2016-06-30 11:13:52.000000000","message":"ditto","commit_id":"500f3ddf6e5c3a0ca6ab8dac3f1d3f3108e0449d"}]}
