)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a7dc3f9c3da022b4ba69164f420d600f5c5f1e8e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     a913d9b7 (Merge \"Address infinite loop in nova compute when getting network info\")"},{"line_number":2,"context_line":"Author:     Inbar \u003cinbar_shapira@il.ibm.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2013-11-26 11:05:33 +0200"},{"line_number":4,"context_line":"Commit:     Inbar \u003cinbar_shapira@il.ibm.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATn%2F%2BMEc%3D","line":1,"updated":"2013-11-29 13:25:23.000000000","message":"you need to run the configuration scrip - tools/config/generate_sample.sh","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"ed26579ac81bcbd47aa078e0ad074fd8999a7a8f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     a913d9b7 (Merge \"Address infinite loop in nova compute when getting network info\")"},{"line_number":2,"context_line":"Author:     Inbar \u003cinbar_shapira@il.ibm.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2013-11-26 11:05:33 +0200"},{"line_number":4,"context_line":"Commit:     Inbar \u003cinbar_shapira@il.ibm.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATn%2F95fE%3D","line":1,"in_reply_to":"AAAATn%2F%2BMEc%3D","updated":"2013-12-04 18:30:29.000000000","message":"Done","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"}],"nova/db/api.py":[{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"71c5db9b7abdc6518bf502d3df111055d79042aa","unresolved":false,"context_lines":[{"line_number":1712,"context_line":"def aggregate_key_get_by_metadata_key(context, aggregate_key, key):"},{"line_number":1713,"context_line":"    \"\"\"Get key metadata for an aggregate by metadata key (aggregate_key)"},{"line_number":1714,"context_line":""},{"line_number":1715,"context_line":"    Returns a dictionary where each key is a aggregate_key value"},{"line_number":1716,"context_line":"    and each value is a set of the key values"},{"line_number":1717,"context_line":"    return value:  {zone1: set( policy1, policy2 )}"},{"line_number":1718,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BZr0%3D","line":1715,"updated":"2013-11-26 15:13:46.000000000","message":"an","commit_id":"a8657bc8ad8959501658782cca00ae2104823748"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"6195509d6dbeedc5f5509ce5e86abf542277b5aa","unresolved":false,"context_lines":[{"line_number":1712,"context_line":"def aggregate_key_get_by_metadata_key(context, aggregate_key, key):"},{"line_number":1713,"context_line":"    \"\"\"Get key metadata for an aggregate by metadata key (aggregate_key)"},{"line_number":1714,"context_line":""},{"line_number":1715,"context_line":"    Returns a dictionary where each key is a aggregate_key value"},{"line_number":1716,"context_line":"    and each value is a set of the key values"},{"line_number":1717,"context_line":"    return value:  {zone1: set( policy1, policy2 )}"},{"line_number":1718,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BX4s%3D","line":1715,"in_reply_to":"AAAATn%2F%2BZr0%3D","updated":"2013-11-26 19:32:11.000000000","message":"Done","commit_id":"a8657bc8ad8959501658782cca00ae2104823748"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a7dc3f9c3da022b4ba69164f420d600f5c5f1e8e","unresolved":false,"context_lines":[{"line_number":1709,"context_line":"                                                        key)"},{"line_number":1710,"context_line":""},{"line_number":1711,"context_line":""},{"line_number":1712,"context_line":"def aggregate_key_get_by_metadata_key(context, aggregate_key, key):"},{"line_number":1713,"context_line":"    \"\"\"Get key metadata for an aggregate by metadata key (aggregate_key)"},{"line_number":1714,"context_line":""},{"line_number":1715,"context_line":"    Returns a dictionary where each key is an aggregate_key value"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BMEY%3D","line":1712,"updated":"2013-11-29 13:25:23.000000000","message":"what does this have to do with the patch set?\n\nthere are missing test cases for this - please add this in a separate patch set and if you require this then base this set on that.","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"ed26579ac81bcbd47aa078e0ad074fd8999a7a8f","unresolved":false,"context_lines":[{"line_number":1709,"context_line":"                                                        key)"},{"line_number":1710,"context_line":""},{"line_number":1711,"context_line":""},{"line_number":1712,"context_line":"def aggregate_key_get_by_metadata_key(context, aggregate_key, key):"},{"line_number":1713,"context_line":"    \"\"\"Get key metadata for an aggregate by metadata key (aggregate_key)"},{"line_number":1714,"context_line":""},{"line_number":1715,"context_line":"    Returns a dictionary where each key is an aggregate_key value"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F96no%3D","line":1712,"in_reply_to":"AAAATn%2F%2BMEY%3D","updated":"2013-12-04 18:30:29.000000000","message":"test added.\nit\u0027s called from policy_utils.py:66 and required for selection of the right scheduler policy.\ndo i understand correct that you recommend to split it to separate patches in order to simplify the review process?","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"71c5db9b7abdc6518bf502d3df111055d79042aa","unresolved":false,"context_lines":[{"line_number":5054,"context_line":"    metadata \u003d collections.defaultdict(set)"},{"line_number":5055,"context_line":"    for agg in rows:"},{"line_number":5056,"context_line":"        meta_key \u003d \"\""},{"line_number":5057,"context_line":"        meta_value \u003d \"\""},{"line_number":5058,"context_line":"        for kv in agg._metadata:"},{"line_number":5059,"context_line":"            if kv[\u0027key\u0027] \u003d\u003d aggregate_key:"},{"line_number":5060,"context_line":"                meta_key \u003d kv[\u0027value\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BZtQ%3D","line":5057,"updated":"2013-11-26 15:13:46.000000000","message":"i don\u0027t think you need to declare those here","commit_id":"a8657bc8ad8959501658782cca00ae2104823748"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"6195509d6dbeedc5f5509ce5e86abf542277b5aa","unresolved":false,"context_lines":[{"line_number":5054,"context_line":"    metadata \u003d collections.defaultdict(set)"},{"line_number":5055,"context_line":"    for agg in rows:"},{"line_number":5056,"context_line":"        meta_key \u003d \"\""},{"line_number":5057,"context_line":"        meta_value \u003d \"\""},{"line_number":5058,"context_line":"        for kv in agg._metadata:"},{"line_number":5059,"context_line":"            if kv[\u0027key\u0027] \u003d\u003d aggregate_key:"},{"line_number":5060,"context_line":"                meta_key \u003d kv[\u0027value\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BX2w%3D","line":5057,"in_reply_to":"AAAATn%2F%2BZtQ%3D","updated":"2013-11-26 19:32:11.000000000","message":"I search on every rows the meta_key \u0026 meta_value \nThis is why I reset them on evry loop on row","commit_id":"a8657bc8ad8959501658782cca00ae2104823748"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"71c5db9b7abdc6518bf502d3df111055d79042aa","unresolved":false,"context_lines":[{"line_number":5060,"context_line":"                meta_key \u003d kv[\u0027value\u0027]"},{"line_number":5061,"context_line":"            if kv[\u0027key\u0027] \u003d\u003d key:"},{"line_number":5062,"context_line":"                meta_value \u003d kv[\u0027value\u0027]"},{"line_number":5063,"context_line":"            if meta_key !\u003d \"\" and meta_value !\u003d \"\":"},{"line_number":5064,"context_line":"                metadata[meta_key].add(meta_value)"},{"line_number":5065,"context_line":""},{"line_number":5066,"context_line":"    return dict(metadata)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BZsQ%3D","line":5063,"updated":"2013-11-26 15:13:46.000000000","message":"2 things here:\n\n1. meta_key/value leftovers from the previous for loop cycle \n2. you can just check \"if meta_key and meta_value\"","commit_id":"a8657bc8ad8959501658782cca00ae2104823748"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"6195509d6dbeedc5f5509ce5e86abf542277b5aa","unresolved":false,"context_lines":[{"line_number":5060,"context_line":"                meta_key \u003d kv[\u0027value\u0027]"},{"line_number":5061,"context_line":"            if kv[\u0027key\u0027] \u003d\u003d key:"},{"line_number":5062,"context_line":"                meta_value \u003d kv[\u0027value\u0027]"},{"line_number":5063,"context_line":"            if meta_key !\u003d \"\" and meta_value !\u003d \"\":"},{"line_number":5064,"context_line":"                metadata[meta_key].add(meta_value)"},{"line_number":5065,"context_line":""},{"line_number":5066,"context_line":"    return dict(metadata)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BX2o%3D","line":5063,"in_reply_to":"AAAATn%2F%2BZsQ%3D","updated":"2013-11-26 19:32:11.000000000","message":"see previous reply","commit_id":"a8657bc8ad8959501658782cca00ae2104823748"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a7dc3f9c3da022b4ba69164f420d600f5c5f1e8e","unresolved":false,"context_lines":[{"line_number":5055,"context_line":"    for agg in rows:"},{"line_number":5056,"context_line":"        meta_key \u003d \"\""},{"line_number":5057,"context_line":"        meta_value \u003d \"\""},{"line_number":5058,"context_line":"        for kv in agg._metadata:"},{"line_number":5059,"context_line":"            if kv[\u0027key\u0027] \u003d\u003d aggregate_key:"},{"line_number":5060,"context_line":"                meta_key \u003d kv[\u0027value\u0027]"},{"line_number":5061,"context_line":"            if kv[\u0027key\u0027] \u003d\u003d key:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BME8%3D","line":5058,"updated":"2013-11-29 13:25:23.000000000","message":"what if there is more than one iteration of the loop.\nthe variables meta_key and meta_value may already be set. did I understand this correctly?","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"ed26579ac81bcbd47aa078e0ad074fd8999a7a8f","unresolved":false,"context_lines":[{"line_number":5055,"context_line":"    for agg in rows:"},{"line_number":5056,"context_line":"        meta_key \u003d \"\""},{"line_number":5057,"context_line":"        meta_value \u003d \"\""},{"line_number":5058,"context_line":"        for kv in agg._metadata:"},{"line_number":5059,"context_line":"            if kv[\u0027key\u0027] \u003d\u003d aggregate_key:"},{"line_number":5060,"context_line":"                meta_key \u003d kv[\u0027value\u0027]"},{"line_number":5061,"context_line":"            if kv[\u0027key\u0027] \u003d\u003d key:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F96ow%3D","line":5058,"in_reply_to":"AAAATn%2F%2BME8%3D","updated":"2013-12-04 18:30:29.000000000","message":"Done","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"}],"nova/scheduler/conf.py":[{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"71c5db9b7abdc6518bf502d3df111055d79042aa","unresolved":false,"context_lines":[{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":"CONF \u003d cfg.CONF"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class BaseConf(object):"},{"line_number":30,"context_line":"    \"\"\"Retrieve config options from the global CONF.\"\"\""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BZkg%3D","line":28,"updated":"2013-11-26 15:13:46.000000000","message":"Is this class ever used?","commit_id":"a8657bc8ad8959501658782cca00ae2104823748"}],"nova/scheduler/filters/availability_zone_filter.py":[{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"02c85957e3f2810dba4eb1352c6d1b7c991fa594","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                                       filter_properties,"},{"line_number":60,"context_line":"                                       host_state.host)"},{"line_number":61,"context_line":"            if len(metadata) \u003e 0:"},{"line_number":62,"context_line":"                return False"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUX%2F%2FEoU%3D","line":62,"updated":"2014-02-17 10:29:48.000000000","message":"1) Why prevent hosts from aggregates that have sched_policy? You\u0027re forcing users to choose availability zones that are under default policy out of their awareness, while AvailabilityZoneFilter does not. There are reasons for AvailabilityZoneFilter not forcing users to choose an AZ: the scheduler can use the AZ-free VMs to balance the load between the availability-zones and let these VMs use other availability zones if a zone is complete.\n\nThe only reason I see in this code is to avoid the conflict between sched_policy and the default policy when users do not specify an AZ, but this is unorthodox and is not the way AvailabilityZoneFilter is designed to be. \n\n2) There is another consequence of this code: it makes AggregateOverridesConf in the conf overrides  patch obsolete, because the filters will always use what is written in \"sched_policy\", they will never use what is written in the aggregates\u0027 metadata. Hence it is equivalent to write the config that is in sched_policy directly in the aggregates\u0027 metadata, and use the scheduler as it is without this mechanism.","commit_id":"f6affd9cef9ccb094c1f63dafdbe8b58a6219c87"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"be3edfe2a9378bc41252e77b438c47b0b6091d41","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                                       filter_properties,"},{"line_number":60,"context_line":"                                       host_state.host)"},{"line_number":61,"context_line":"            if len(metadata) \u003e 0:"},{"line_number":62,"context_line":"                return False"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUX%2F%2BgU0%3D","line":62,"in_reply_to":"AAAAUX%2F%2FEoU%3D","updated":"2014-02-20 20:13:21.000000000","message":"Regarding point 2: AggregateOverridesConf is override the\n DEFAULT conf values by the values in the aggregate NOT in\n sched_polcy\nSo all the filters that inheritance from AggregateOverridesConf will\nuse what is written in the aggregates\n(like: AggregateCoreFilter / AggregateRamFilter\n /AggregateTypeAffinityFilter)","commit_id":"f6affd9cef9ccb094c1f63dafdbe8b58a6219c87"}],"nova/scheduler/filters/num_instances_filter.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a7dc3f9c3da022b4ba69164f420d600f5c5f1e8e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def host_passes(self, host_state, filter_properties):"},{"line_number":36,"context_line":"        num_instances \u003d host_state.num_instances"},{"line_number":37,"context_line":"        max_instances \u003d self.get_config(\u0027max_instances_per_host\u0027,"},{"line_number":38,"context_line":"                                    filter_properties)"},{"line_number":39,"context_line":"        passes \u003d num_instances \u003c max_instances"},{"line_number":40,"context_line":"        if not passes:"},{"line_number":41,"context_line":"            LOG.debug(_(\"%(host_state)s fails num_instances check: Max \""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BME4%3D","line":38,"updated":"2013-11-29 13:25:23.000000000","message":"indentation here looks odd. why not have the f under the \u0027?","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"ed26579ac81bcbd47aa078e0ad074fd8999a7a8f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def host_passes(self, host_state, filter_properties):"},{"line_number":36,"context_line":"        num_instances \u003d host_state.num_instances"},{"line_number":37,"context_line":"        max_instances \u003d self.get_config(\u0027max_instances_per_host\u0027,"},{"line_number":38,"context_line":"                                    filter_properties)"},{"line_number":39,"context_line":"        passes \u003d num_instances \u003c max_instances"},{"line_number":40,"context_line":"        if not passes:"},{"line_number":41,"context_line":"            LOG.debug(_(\"%(host_state)s fails num_instances check: Max \""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BA0s%3D","line":38,"in_reply_to":"AAAATn%2F%2BME4%3D","updated":"2013-12-04 18:30:29.000000000","message":"Done","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"}],"nova/scheduler/filters/ram_filter.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a7dc3f9c3da022b4ba69164f420d600f5c5f1e8e","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _get_ram_allocation_ratio(self, host_state, filter_properties):"},{"line_number":72,"context_line":"        return self.get_config(\u0027ram_allocation_ratio\u0027,"},{"line_number":73,"context_line":"                                filter_properties)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class AggregateRamFilter(scheduler_conf.AggregateOverrideConf, BaseRamFilter):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BME0%3D","line":73,"updated":"2013-11-29 13:25:23.000000000","message":"indetation looks odd","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"ed26579ac81bcbd47aa078e0ad074fd8999a7a8f","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _get_ram_allocation_ratio(self, host_state, filter_properties):"},{"line_number":72,"context_line":"        return self.get_config(\u0027ram_allocation_ratio\u0027,"},{"line_number":73,"context_line":"                                filter_properties)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class AggregateRamFilter(scheduler_conf.AggregateOverrideConf, BaseRamFilter):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BA1E%3D","line":73,"in_reply_to":"AAAATn%2F%2BME0%3D","updated":"2013-12-04 18:30:29.000000000","message":"Done","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a7dc3f9c3da022b4ba69164f420d600f5c5f1e8e","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _get_ram_allocation_ratio(self, host_state, filter_properties):"},{"line_number":83,"context_line":"        aggregate_vals \u003d self.get_config(\u0027ram_allocation_ratio\u0027,"},{"line_number":84,"context_line":"                                        filter_properties,"},{"line_number":85,"context_line":"                                        host_state.host)"},{"line_number":86,"context_line":"        num_values \u003d len(aggregate_vals)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BMEw%3D","line":84,"updated":"2013-11-29 13:25:23.000000000","message":"ditto","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"ed26579ac81bcbd47aa078e0ad074fd8999a7a8f","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _get_ram_allocation_ratio(self, host_state, filter_properties):"},{"line_number":83,"context_line":"        aggregate_vals \u003d self.get_config(\u0027ram_allocation_ratio\u0027,"},{"line_number":84,"context_line":"                                        filter_properties,"},{"line_number":85,"context_line":"                                        host_state.host)"},{"line_number":86,"context_line":"        num_values \u003d len(aggregate_vals)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BA1A%3D","line":84,"in_reply_to":"AAAATn%2F%2BMEw%3D","updated":"2013-12-04 18:30:29.000000000","message":"Done","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"}],"nova/scheduler/host_manager.py":[{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"71c5db9b7abdc6518bf502d3df111055d79042aa","unresolved":false,"context_lines":[{"line_number":407,"context_line":"            LOG.audit(msg % forced_nodes_str)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        filter_classes \u003d self._choose_host_filters(filter_class_names,"},{"line_number":410,"context_line":"                                            filter_properties)"},{"line_number":411,"context_line":"        ignore_hosts \u003d filter_properties.get(\u0027ignore_hosts\u0027, [])"},{"line_number":412,"context_line":"        force_hosts \u003d filter_properties.get(\u0027force_hosts\u0027, [])"},{"line_number":413,"context_line":"        force_nodes \u003d filter_properties.get(\u0027force_nodes\u0027, [])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BZds%3D","line":410,"updated":"2013-11-26 15:13:46.000000000","message":"it will work as is, but maybe more accurate would be:\n\nfilter_classes \u003d self._choose_host_filters(filter_class_names, filter_properties\u003dfilter_properties)","commit_id":"a8657bc8ad8959501658782cca00ae2104823748"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"6195509d6dbeedc5f5509ce5e86abf542277b5aa","unresolved":false,"context_lines":[{"line_number":407,"context_line":"            LOG.audit(msg % forced_nodes_str)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        filter_classes \u003d self._choose_host_filters(filter_class_names,"},{"line_number":410,"context_line":"                                            filter_properties)"},{"line_number":411,"context_line":"        ignore_hosts \u003d filter_properties.get(\u0027ignore_hosts\u0027, [])"},{"line_number":412,"context_line":"        force_hosts \u003d filter_properties.get(\u0027force_hosts\u0027, [])"},{"line_number":413,"context_line":"        force_nodes \u003d filter_properties.get(\u0027force_nodes\u0027, [])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BX1Y%3D","line":410,"in_reply_to":"AAAATn%2F%2BZds%3D","updated":"2013-11-26 19:32:11.000000000","message":"I will leave it as is for now","commit_id":"a8657bc8ad8959501658782cca00ae2104823748"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a7dc3f9c3da022b4ba69164f420d600f5c5f1e8e","unresolved":false,"context_lines":[{"line_number":407,"context_line":"            LOG.audit(msg % forced_nodes_str)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        filter_classes \u003d self._choose_host_filters(filter_class_names,"},{"line_number":410,"context_line":"                                            filter_properties)"},{"line_number":411,"context_line":"        ignore_hosts \u003d filter_properties.get(\u0027ignore_hosts\u0027, [])"},{"line_number":412,"context_line":"        force_hosts \u003d filter_properties.get(\u0027force_hosts\u0027, [])"},{"line_number":413,"context_line":"        force_nodes \u003d filter_properties.get(\u0027force_nodes\u0027, [])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BMEs%3D","line":410,"updated":"2013-11-29 13:25:23.000000000","message":"indentation","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"ed26579ac81bcbd47aa078e0ad074fd8999a7a8f","unresolved":false,"context_lines":[{"line_number":407,"context_line":"            LOG.audit(msg % forced_nodes_str)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        filter_classes \u003d self._choose_host_filters(filter_class_names,"},{"line_number":410,"context_line":"                                            filter_properties)"},{"line_number":411,"context_line":"        ignore_hosts \u003d filter_properties.get(\u0027ignore_hosts\u0027, [])"},{"line_number":412,"context_line":"        force_hosts \u003d filter_properties.get(\u0027force_hosts\u0027, [])"},{"line_number":413,"context_line":"        force_nodes \u003d filter_properties.get(\u0027force_nodes\u0027, [])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BA1g%3D","line":410,"in_reply_to":"AAAATn%2F%2BMEs%3D","updated":"2013-12-04 18:30:29.000000000","message":"Done","commit_id":"61cf0220f48ad1af61705ef85b8980f4babc463d"}],"nova/scheduler/policy_configuration.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b1f213ff8ecd08233a5d9fa6b759965cc198716c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (c) 2010 OpenStack Foundation"},{"line_number":4,"context_line":"# Copyright 2013 IBM Corp."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F8tFE%3D","line":3,"updated":"2013-12-22 11:50:11.000000000","message":"I think that this should be 2012 or 2013. Not 100% sure though","commit_id":"811541c55b00b0705670b76c44c925a0665e755c"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"e67a27115f4188b23716d041bb844b455e526b66","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (c) 2010 OpenStack Foundation"},{"line_number":4,"context_line":"# Copyright 2013 IBM Corp."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F8s%2FM%3D","line":3,"in_reply_to":"AAAATn%2F8tFE%3D","updated":"2013-12-22 14:49:14.000000000","message":"Done","commit_id":"811541c55b00b0705670b76c44c925a0665e755c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b1f213ff8ecd08233a5d9fa6b759965cc198716c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            return {}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        opt_group \u003d cfg.OptGroup(name\u003dconfig_group,"},{"line_number":91,"context_line":"                        title\u003d_(\u0027Scheduler policy %s group\u0027) % config_group)"},{"line_number":92,"context_line":"        CONF.register_group(opt_group)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        config_opts \u003d get_policy_configuration_opts(config_group)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F8tE8%3D","line":91,"updated":"2013-12-22 11:50:11.000000000","message":"not 100% sure why the title needs to be translated. Is this done in other places","commit_id":"811541c55b00b0705670b76c44c925a0665e755c"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"e67a27115f4188b23716d041bb844b455e526b66","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            return {}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        opt_group \u003d cfg.OptGroup(name\u003dconfig_group,"},{"line_number":91,"context_line":"                        title\u003d_(\u0027Scheduler policy %s group\u0027) % config_group)"},{"line_number":92,"context_line":"        CONF.register_group(opt_group)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        config_opts \u003d get_policy_configuration_opts(config_group)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F8s%2FI%3D","line":91,"in_reply_to":"AAAATn%2F8tE8%3D","updated":"2013-12-22 14:49:14.000000000","message":"Done","commit_id":"811541c55b00b0705670b76c44c925a0665e755c"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"243b1f20bf3bd2a24a8de95fbd1ba161e5d79fa1","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            res.append(cfg.StrOpt(override,"},{"line_number":59,"context_line":"                                  default\u003dopt.default,"},{"line_number":60,"context_line":"                                  help\u003dopt.help))"},{"line_number":61,"context_line":"        if type(opt) is cfg.ListOpt:"},{"line_number":62,"context_line":"            res.append(cfg.ListOpt(override,"},{"line_number":63,"context_line":"                                   default\u003dopt.default,"},{"line_number":64,"context_line":"                                   help\u003dopt.help))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FKp8%3D","line":61,"updated":"2014-01-16 19:51:43.000000000","message":"These types are all exclusive so you should use elif rather than if after the first one.","commit_id":"fb85224807b3de0e121bfe800c697a821ee457ba"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"243b1f20bf3bd2a24a8de95fbd1ba161e5d79fa1","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            res.append(cfg.ListOpt(override,"},{"line_number":63,"context_line":"                                   default\u003dopt.default,"},{"line_number":64,"context_line":"                                   help\u003dopt.help))"},{"line_number":65,"context_line":"        if type(opt) is cfg.FloatOpt:"},{"line_number":66,"context_line":"            res.append(cfg.FloatOpt(override,"},{"line_number":67,"context_line":"                                    default\u003dopt.default,"},{"line_number":68,"context_line":"                                    help\u003dopt.help))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FKp4%3D","line":65,"updated":"2014-01-16 19:51:43.000000000","message":"elif","commit_id":"fb85224807b3de0e121bfe800c697a821ee457ba"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"243b1f20bf3bd2a24a8de95fbd1ba161e5d79fa1","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            res.append(cfg.FloatOpt(override,"},{"line_number":67,"context_line":"                                    default\u003dopt.default,"},{"line_number":68,"context_line":"                                    help\u003dopt.help))"},{"line_number":69,"context_line":"        if type(opt) is cfg.IntOpt:"},{"line_number":70,"context_line":"            res.append(cfg.IntOpt(override,"},{"line_number":71,"context_line":"                                  default\u003dopt.default,"},{"line_number":72,"context_line":"                                  help\u003dopt.help))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FKpw%3D","line":69,"updated":"2014-01-16 19:51:43.000000000","message":"elif","commit_id":"fb85224807b3de0e121bfe800c697a821ee457ba"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"243b1f20bf3bd2a24a8de95fbd1ba161e5d79fa1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            res.append(cfg.IntOpt(override,"},{"line_number":71,"context_line":"                                  default\u003dopt.default,"},{"line_number":72,"context_line":"                                  help\u003dopt.help))"},{"line_number":73,"context_line":"        if type(opt) is cfg.BoolOpt:"},{"line_number":74,"context_line":"            res.append(cfg.BoolOpt(override,"},{"line_number":75,"context_line":"                                   default\u003dopt.default,"},{"line_number":76,"context_line":"                                   help\u003dopt.help))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FKps%3D","line":73,"updated":"2014-01-16 19:51:43.000000000","message":"elif","commit_id":"fb85224807b3de0e121bfe800c697a821ee457ba"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"243b1f20bf3bd2a24a8de95fbd1ba161e5d79fa1","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    return res"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def get_policy_conf(policy_name):"},{"line_number":81,"context_line":"        config_group \u003d policy_name"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if config_group \u003d\u003d \"DEFAULT\":"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FKpo%3D","line":80,"updated":"2014-01-16 19:51:43.000000000","message":"indentation looks wrong here","commit_id":"fb85224807b3de0e121bfe800c697a821ee457ba"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"cb6497e08b0f943022f3322045bbe2c2f0500d36","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    return res"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def get_policy_conf(policy_name):"},{"line_number":81,"context_line":"        config_group \u003d policy_name"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if config_group \u003d\u003d \"DEFAULT\":"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2Bpkc%3D","line":80,"updated":"2014-01-23 15:08:13.000000000","message":"indentation is still wrong here.  Should be 4 spaces.","commit_id":"9893fe1d05140f1f0697d6cdacb0ee05cd881ff9"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"2cf50e2cff9d3f5976db6b747b7da18926eb9870","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        elif type(opt) is cfg.BoolOpt:"},{"line_number":74,"context_line":"            res.append(cfg.BoolOpt(override,"},{"line_number":75,"context_line":"                                   default\u003dopt.default,"},{"line_number":76,"context_line":"                                   help\u003dopt.help))"},{"line_number":77,"context_line":"    return res"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2BCGE%3D","line":76,"updated":"2014-01-30 20:03:54.000000000","message":"Lots of duplicated code here.\n\nI think you could do something shorter and more maintainable like:\n\nif type(opt) in [cfg.StrOpt, cfg.ListOpt, cfg.FloatOpt, cfg.IntOpt, cfg.BoolOpt]:\n    res.append(type(opt)(override, default\u003dopt.default, help\u003dopt.help)","commit_id":"c8df5dbc67b6a6d4605aa6b8db4fec5963621726"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"75fd39c46102fe9757d37a19188105fe450d94ef","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        elif type(opt) is cfg.BoolOpt:"},{"line_number":74,"context_line":"            res.append(cfg.BoolOpt(override,"},{"line_number":75,"context_line":"                                   default\u003dopt.default,"},{"line_number":76,"context_line":"                                   help\u003dopt.help))"},{"line_number":77,"context_line":"    return res"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F94mQ%3D","line":76,"in_reply_to":"AAAAUH%2F%2BCGE%3D","updated":"2014-02-02 14:04:46.000000000","message":"This way we don\u0027t even need the if type(opt) ...\ndone, thanks","commit_id":"c8df5dbc67b6a6d4605aa6b8db4fec5963621726"}],"nova/scheduler/policy_utils.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b1f213ff8ecd08233a5d9fa6b759965cc198716c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        sched_policy_name \u003d _select_scheduler_policy(context,"},{"line_number":46,"context_line":"                              keyed_args[\u0027request_spec\u0027],"},{"line_number":47,"context_line":"                              keyed_args[\u0027filter_properties\u0027])"},{"line_number":48,"context_line":"        LOG.info(_(\"Using scheduler policy \u003d %s\"), sched_policy_name)"},{"line_number":49,"context_line":"        return function(self, context, *args, **kwargs)"},{"line_number":50,"context_line":"    return decorated_function"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F8tEw%3D","line":48,"updated":"2013-12-22 11:50:11.000000000","message":"does this need to be a info call. why not debug?","commit_id":"811541c55b00b0705670b76c44c925a0665e755c"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"e67a27115f4188b23716d041bb844b455e526b66","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        sched_policy_name \u003d _select_scheduler_policy(context,"},{"line_number":46,"context_line":"                              keyed_args[\u0027request_spec\u0027],"},{"line_number":47,"context_line":"                              keyed_args[\u0027filter_properties\u0027])"},{"line_number":48,"context_line":"        LOG.info(_(\"Using scheduler policy \u003d %s\"), sched_policy_name)"},{"line_number":49,"context_line":"        return function(self, context, *args, **kwargs)"},{"line_number":50,"context_line":"    return decorated_function"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F8s%2FE%3D","line":48,"in_reply_to":"AAAATn%2F8tEw%3D","updated":"2013-12-22 14:49:14.000000000","message":"Done","commit_id":"811541c55b00b0705670b76c44c925a0665e755c"},{"author":{"_account_id":8690,"name":"Khanh-Toan TRAN","email":"khtoantran@gmail.com","username":"toan-tran"},"change_message_id":"73c133f3b3aa6941d3d117598a3b0fedbfac4abe","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                if kv[\u0027key\u0027] \u003d\u003d \u0027sched_policy\u0027:"},{"line_number":70,"context_line":"                    values.append(kv[\u0027value\u0027])"},{"line_number":71,"context_line":"        if values:"},{"line_number":72,"context_line":"            selected_policy \u003d values[0]"},{"line_number":73,"context_line":"            overrides \u003d policy_configuration.get_policy_conf(selected_policy)"},{"line_number":74,"context_line":"            overrides[\u0027sched_policy\u0027] \u003d selected_policy"},{"line_number":75,"context_line":"            filter_properties[\u0027conf_overrides\u0027] \u003d overrides"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUX%2F%2Fk8U%3D","line":72,"updated":"2014-02-12 09:13:18.000000000","message":"why only the first sched_policy? If admin specifies one sched_policy for each aggregate, why only the first one is selected for all the aggregates in the az ? For instance, admin sets low-cpu for agg-1, high-cpu for agg-2, this function will return low-cpu as the final selected_policy, which will be applied to agg-2, too !\n\nIn this case, there is also a potential conflict of returned value due to the fact that the order of the aggregates in the \u0027aggregates\u0027 list: if this order is changed between the calls, then the returned value is not the same. In the example above, if the next call, the order in the \u0027aggregates\u0027 list is [\u0027agg-2\u0027, \u0027agg-1\u0027], then the final selected_policy will be \u0027high-cpu\u0027  instead of \u0027low-cpu\u0027 !","commit_id":"9a47eb615ff756147ada747001a2f6ce3ffa4da9"},{"author":{"_account_id":7238,"name":"Inbar Shapira","email":"inbar_shapira@il.ibm.com","username":"Inbar"},"change_message_id":"5da20c78b9bf80207d745e3c1e9288bc1a48ae8c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                if kv[\u0027key\u0027] \u003d\u003d \u0027sched_policy\u0027:"},{"line_number":70,"context_line":"                    values.append(kv[\u0027value\u0027])"},{"line_number":71,"context_line":"        if values:"},{"line_number":72,"context_line":"            selected_policy \u003d values[0]"},{"line_number":73,"context_line":"            overrides \u003d policy_configuration.get_policy_conf(selected_policy)"},{"line_number":74,"context_line":"            overrides[\u0027sched_policy\u0027] \u003d selected_policy"},{"line_number":75,"context_line":"            filter_properties[\u0027conf_overrides\u0027] \u003d overrides"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUX%2F%2FH8w%3D","line":72,"in_reply_to":"AAAAUX%2F%2Fk8U%3D","updated":"2014-02-17 07:00:51.000000000","message":"In this patch we introduce a policy selection based on AZ,\nso its up to the administrator to set the same policy to all\naggregates that belong to same AZ.\nA user still has an option to override the default/policy definition by\nsetting specific parameters in the aggregate and use the matching\nAggregate filter\nlike for CoreFilter you can set cpu_allocation_ratio\u003dX in a specific\naggregate and use  AggregateCoreFilter instead","commit_id":"9a47eb615ff756147ada747001a2f6ce3ffa4da9"}],"nova/tests/scheduler/test_scheduler_policies.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"243b1f20bf3bd2a24a8de95fbd1ba161e5d79fa1","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from nova.scheduler import policy_configuration"},{"line_number":24,"context_line":"from nova.scheduler import policy_utils"},{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"import os"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FKrI%3D","line":26,"updated":"2014-01-16 19:51:43.000000000","message":"builtin imports go at the top, in a separate block","commit_id":"fb85224807b3de0e121bfe800c697a821ee457ba"}]}
