)]}'
{"doc/source/devref/filter_scheduler.rst":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e71a7ea316cdd49c8ff9e6bcd71089f6ca6def21","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"* |AggregateInstanceExtraSpecsFilter| - checks that the aggregate metadata"},{"line_number":69,"context_line":"  satisfies any extra specifications associated with the instance type (that"},{"line_number":70,"context_line":"  have no scope or are scopd with \u0027aggregate_instance_extra_specs\u0027)."},{"line_number":71,"context_line":"  It passes hosts that can create the specified instance type."},{"line_number":72,"context_line":"  The extra specifications can have the same operators as"},{"line_number":73,"context_line":"  |ComputeCapabilitiesFilter|."}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAPn%2F%2FQC0%3D","line":70,"updated":"2013-07-06 06:05:05.000000000","message":"scopd \u003d\u003e scoped","commit_id":"e3679ef9efb867440971e0f77f35d953c5344601"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"38e1af64f9a77185f7edf8d36f719e72cb544001","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"* |AggregateInstanceExtraSpecsFilter| - checks that the aggregate metadata"},{"line_number":69,"context_line":"  satisfies any extra specifications associated with the instance type (that"},{"line_number":70,"context_line":"  have no scope or are scopd with \u0027aggregate_instance_extra_specs\u0027)."},{"line_number":71,"context_line":"  It passes hosts that can create the specified instance type."},{"line_number":72,"context_line":"  The extra specifications can have the same operators as"},{"line_number":73,"context_line":"  |ComputeCapabilitiesFilter|."}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAP3%2F%2F95Y%3D","line":70,"in_reply_to":"AAAAPn%2F%2FQC0%3D","updated":"2013-07-08 12:40:19.000000000","message":"Done","commit_id":"e3679ef9efb867440971e0f77f35d953c5344601"}],"nova/scheduler/filters/aggregate_instance_extra_specs.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c40f14b6545ca6adb19f3ee53d0de217b096b3d1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            if len(scope) \u003e 1:"},{"line_number":48,"context_line":"                if scope[0] !\u003d _SCOPE:"},{"line_number":49,"context_line":"                    continue"},{"line_number":50,"context_line":"                elif scope[0] \u003d\u003d _SCOPE:"},{"line_number":51,"context_line":"                    del scope[0]"},{"line_number":52,"context_line":"            key \u003d scope[0]"},{"line_number":53,"context_line":"            aggregate_vals \u003d metadata.get(key, None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FnI4%3D","line":50,"updated":"2013-07-15 21:00:30.000000000","message":"Just use \"else\" here…","commit_id":"a3c905cd96e95a98c16cb6b8a3dc08c26ee77698"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"5b2f0c8770473f49b5b340b2cdc6f9b8921ccc9a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            if len(scope) \u003e 1:"},{"line_number":48,"context_line":"                if scope[0] !\u003d _SCOPE:"},{"line_number":49,"context_line":"                    continue"},{"line_number":50,"context_line":"                elif scope[0] \u003d\u003d _SCOPE:"},{"line_number":51,"context_line":"                    del scope[0]"},{"line_number":52,"context_line":"            key \u003d scope[0]"},{"line_number":53,"context_line":"            aggregate_vals \u003d metadata.get(key, None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2Fjtw%3D","line":50,"in_reply_to":"AAAAP3%2F%2FnI4%3D","updated":"2013-07-16 16:03:41.000000000","message":"Done","commit_id":"a3c905cd96e95a98c16cb6b8a3dc08c26ee77698"},{"author":{"_account_id":7823,"name":"Xiang Hui","email":"xianghuir@gmail.com","username":"xianghui"},"change_message_id":"ac504ade88c670a61f168a1858b0131f202f820f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                if scope[0] !\u003d _SCOPE:"},{"line_number":49,"context_line":"                    continue"},{"line_number":50,"context_line":"                elif scope[0] \u003d\u003d _SCOPE:"},{"line_number":51,"context_line":"                    del scope[0]"},{"line_number":52,"context_line":"            key \u003d scope[0]"},{"line_number":53,"context_line":"            aggregate_vals \u003d metadata.get(key, None)"},{"line_number":54,"context_line":"            if not aggregate_vals:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2Fleo%3D","line":51,"updated":"2013-07-16 08:22:01.000000000","message":"Is it any possible that got a especs or metadata like \u0027opt2:aggregate_instance_extra_specs\u0027 and delete the wrong scope[0]?","commit_id":"a3c905cd96e95a98c16cb6b8a3dc08c26ee77698"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"5b2f0c8770473f49b5b340b2cdc6f9b8921ccc9a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                if scope[0] !\u003d _SCOPE:"},{"line_number":49,"context_line":"                    continue"},{"line_number":50,"context_line":"                elif scope[0] \u003d\u003d _SCOPE:"},{"line_number":51,"context_line":"                    del scope[0]"},{"line_number":52,"context_line":"            key \u003d scope[0]"},{"line_number":53,"context_line":"            aggregate_vals \u003d metadata.get(key, None)"},{"line_number":54,"context_line":"            if not aggregate_vals:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2Fjt0%3D","line":51,"in_reply_to":"AAAAP3%2F%2Fleo%3D","updated":"2013-07-16 16:03:41.000000000","message":"No, because we would have skipped it above","commit_id":"a3c905cd96e95a98c16cb6b8a3dc08c26ee77698"},{"author":{"_account_id":7823,"name":"Xiang Hui","email":"xianghuir@gmail.com","username":"xianghui"},"change_message_id":"ac504ade88c670a61f168a1858b0131f202f820f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            for aggregate_val in aggregate_vals:"},{"line_number":60,"context_line":"                if extra_specs_ops.match(aggregate_val, req):"},{"line_number":61,"context_line":"                    break"},{"line_number":62,"context_line":"            else:"},{"line_number":63,"context_line":"                LOG.debug(_(\"%(host_state)s fails instance_type extra_specs \""},{"line_number":64,"context_line":"                            \"requirements. \u0027%(aggregate_vals)s\u0027 do not \""},{"line_number":65,"context_line":"                            \"match \u0027%(req)s\u0027\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2Fldw%3D","line":62,"updated":"2013-07-16 08:22:01.000000000","message":"which \u0027if\u0027 does this \u0027else\u0027 belongs to?","commit_id":"a3c905cd96e95a98c16cb6b8a3dc08c26ee77698"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7c06918a42efde1d1069de0d720ff7be5c388273","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            for aggregate_val in aggregate_vals:"},{"line_number":60,"context_line":"                if extra_specs_ops.match(aggregate_val, req):"},{"line_number":61,"context_line":"                    break"},{"line_number":62,"context_line":"            else:"},{"line_number":63,"context_line":"                LOG.debug(_(\"%(host_state)s fails instance_type extra_specs \""},{"line_number":64,"context_line":"                            \"requirements. \u0027%(aggregate_vals)s\u0027 do not \""},{"line_number":65,"context_line":"                            \"match \u0027%(req)s\u0027\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2Fjhw%3D","line":62,"updated":"2013-07-16 16:25:35.000000000","message":"Xiang: The \u0027else\" here actually belongs to the \u0027for\u0027; it\u0027s a handy construct in combination with \u0027break\u0027.","commit_id":"fbedf60a432773716ddb02f990fc744380fee469"},{"author":{"_account_id":7823,"name":"Xiang Hui","email":"xianghuir@gmail.com","username":"xianghui"},"change_message_id":"00e1c0d91885700833ea247521af298d03b5b80b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            for aggregate_val in aggregate_vals:"},{"line_number":60,"context_line":"                if extra_specs_ops.match(aggregate_val, req):"},{"line_number":61,"context_line":"                    break"},{"line_number":62,"context_line":"            else:"},{"line_number":63,"context_line":"                LOG.debug(_(\"%(host_state)s fails instance_type extra_specs \""},{"line_number":64,"context_line":"                            \"requirements. \u0027%(aggregate_vals)s\u0027 do not \""},{"line_number":65,"context_line":"                            \"match \u0027%(req)s\u0027\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FfRU%3D","line":62,"in_reply_to":"AAAAP3%2F%2Fjhw%3D","updated":"2013-07-17 14:27:30.000000000","message":"Thanks Kevin, that\u0027s teach me a lesson :)","commit_id":"fbedf60a432773716ddb02f990fc744380fee469"}],"nova/tests/scheduler/test_host_filters.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c40f14b6545ca6adb19f3ee53d0de217b096b3d1","unresolved":false,"context_lines":[{"line_number":861,"context_line":""},{"line_number":862,"context_line":"    def test_aggregate_filter_passes_extra_specs_simple(self):"},{"line_number":863,"context_line":"        especs \u003d {"},{"line_number":864,"context_line":"                # Un-scoped extra spec"},{"line_number":865,"context_line":"                \u0027opt1\u0027: \u00271\u0027,"},{"line_number":866,"context_line":"                # Scoped extra spec that applies to this filter"},{"line_number":867,"context_line":"                \u0027aggregate_instance_extra_specs:opt2\u0027: \u00272\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FnIs%3D","line":864,"updated":"2013-07-15 21:00:30.000000000","message":"This is indented a little deeply for my taste; I\u0027d prefer just four spaces of extra indentation.  (femtonit)","commit_id":"a3c905cd96e95a98c16cb6b8a3dc08c26ee77698"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"5b2f0c8770473f49b5b340b2cdc6f9b8921ccc9a","unresolved":false,"context_lines":[{"line_number":861,"context_line":""},{"line_number":862,"context_line":"    def test_aggregate_filter_passes_extra_specs_simple(self):"},{"line_number":863,"context_line":"        especs \u003d {"},{"line_number":864,"context_line":"                # Un-scoped extra spec"},{"line_number":865,"context_line":"                \u0027opt1\u0027: \u00271\u0027,"},{"line_number":866,"context_line":"                # Scoped extra spec that applies to this filter"},{"line_number":867,"context_line":"                \u0027aggregate_instance_extra_specs:opt2\u0027: \u00272\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FjpE%3D","line":864,"in_reply_to":"AAAAP3%2F%2FnIs%3D","updated":"2013-07-16 16:03:41.000000000","message":"Done","commit_id":"a3c905cd96e95a98c16cb6b8a3dc08c26ee77698"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c40f14b6545ca6adb19f3ee53d0de217b096b3d1","unresolved":false,"context_lines":[{"line_number":866,"context_line":"                # Scoped extra spec that applies to this filter"},{"line_number":867,"context_line":"                \u0027aggregate_instance_extra_specs:opt2\u0027: \u00272\u0027,"},{"line_number":868,"context_line":"                # Scoped extra spec that does not apply to this filter"},{"line_number":869,"context_line":"                \u0027trust:trusted_host\u0027: \u0027true\u0027"},{"line_number":870,"context_line":"        }"},{"line_number":871,"context_line":"        self._do_test_aggregate_filter_extra_specs("},{"line_number":872,"context_line":"                emeta\u003d{\u0027opt1\u0027: \u00271\u0027, \u0027opt2\u0027: \u00272\u0027}, especs\u003despecs, passes\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FnIg%3D","line":869,"updated":"2013-07-15 21:00:30.000000000","message":"It would be nice to add a trailing comma here, in case anyone wants to add another line to the dictionary.  (femtonit)","commit_id":"a3c905cd96e95a98c16cb6b8a3dc08c26ee77698"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"5b2f0c8770473f49b5b340b2cdc6f9b8921ccc9a","unresolved":false,"context_lines":[{"line_number":866,"context_line":"                # Scoped extra spec that applies to this filter"},{"line_number":867,"context_line":"                \u0027aggregate_instance_extra_specs:opt2\u0027: \u00272\u0027,"},{"line_number":868,"context_line":"                # Scoped extra spec that does not apply to this filter"},{"line_number":869,"context_line":"                \u0027trust:trusted_host\u0027: \u0027true\u0027"},{"line_number":870,"context_line":"        }"},{"line_number":871,"context_line":"        self._do_test_aggregate_filter_extra_specs("},{"line_number":872,"context_line":"                emeta\u003d{\u0027opt1\u0027: \u00271\u0027, \u0027opt2\u0027: \u00272\u0027}, especs\u003despecs, passes\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FjpA%3D","line":869,"in_reply_to":"AAAAP3%2F%2FnIg%3D","updated":"2013-07-16 16:03:41.000000000","message":"Done","commit_id":"a3c905cd96e95a98c16cb6b8a3dc08c26ee77698"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7c06918a42efde1d1069de0d720ff7be5c388273","unresolved":false,"context_lines":[{"line_number":873,"context_line":""},{"line_number":874,"context_line":"    def test_aggregate_filter_passes_with_key_same_as_scope(self):"},{"line_number":875,"context_line":"        especs \u003d {"},{"line_number":876,"context_line":"                # Un-scoped extra spec, make sure we don\u0027t blow up if it"},{"line_number":877,"context_line":"                # happens to match our scope."},{"line_number":878,"context_line":"                \u0027aggregate_instance_extra_specs\u0027: \u00271\u0027,"},{"line_number":879,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FjhU%3D","line":876,"updated":"2013-07-16 16:25:35.000000000","message":"Heh.  I\u0027ll femtonit this for indentation as well :)","commit_id":"fbedf60a432773716ddb02f990fc744380fee469"}]}
