)]}'
{"watcher/api/controllers/v1/audit_template.py":[{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"e595ba0020e6ad9cae81bd83c770c0925a61154b","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            if \u0027host_aggregates\u0027 in rule:"},{"line_number":116,"context_line":"                include_host_aggregates \u003d True"},{"line_number":117,"context_line":"            elif \u0027exclude\u0027 in rule:"},{"line_number":118,"context_line":"                if \u0027host_aggregates\u0027 in rule[\u0027exclude\u0027]:"},{"line_number":119,"context_line":"                    exclude_host_aggregates \u003d True"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if include_host_aggregates and exclude_host_aggregates:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_165ca223","line":118,"range":{"start_line":118,"start_character":16,"end_line":118,"end_character":56},"updated":"2017-04-17 12:37:17.000000000","message":"Can\u0027t we write here like:\n    if \u0027host_aggregates\u0027 in rule[\u0027exclude\u0027] and include_host_aggregates:\n        raise exception.InvalidScope(\n                message\u003d_(\n                    \"host_aggregates can\u0027t be included and excluded together\"))\n?","commit_id":"24b3612834f6b6273849e9cd6ff26f49f9579e99"},{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"6d6ee6a29af4aad7fe0a86bd6b842b568bbf958f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            if \u0027host_aggregates\u0027 in rule:"},{"line_number":116,"context_line":"                include_host_aggregates \u003d True"},{"line_number":117,"context_line":"            elif \u0027exclude\u0027 in rule:"},{"line_number":118,"context_line":"                if \u0027host_aggregates\u0027 in rule[\u0027exclude\u0027]:"},{"line_number":119,"context_line":"                    exclude_host_aggregates \u003d True"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if include_host_aggregates and exclude_host_aggregates:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_e08f1321","line":118,"range":{"start_line":118,"start_character":16,"end_line":118,"end_character":56},"in_reply_to":"7ffa3b31_165ca223","updated":"2017-04-18 04:47:37.000000000","message":"Done, i assume host_aggregates always comes prior to exclude in the scope list.","commit_id":"24b3612834f6b6273849e9cd6ff26f49f9579e99"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"628eb67cd41253515afcd2428a4724812019180d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            if \u0027host_aggregates\u0027 in rule:"},{"line_number":115,"context_line":"                include_host_aggregates \u003d True"},{"line_number":116,"context_line":"            elif \u0027exclude\u0027 in rule:"},{"line_number":117,"context_line":"                if \u0027host_aggregates\u0027 in rule[\u0027exclude\u0027] and \\"},{"line_number":118,"context_line":"                        include_host_aggregates:"},{"line_number":119,"context_line":"                    raise exception.Invalid("},{"line_number":120,"context_line":"                        message\u003d_("}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_56105fa8","line":117,"range":{"start_line":117,"start_character":40,"end_line":117,"end_character":56},"updated":"2017-04-21 06:14:55.000000000","message":"This did not work, \"rule[\u0027exclude\u0027][0]\" worked.\nI tested with the following scope:\n - host_aggregates:\n   - id: 1\n - exclude:\n   - host_aggregates:\n     - id: 1\n   - compute_nodes:\n     - compute1\n\nIn this case, exclude has array:\n{\u0027exclude\u0027: [{\u0027host_aggregates\u0027: [{\u0027id\u0027: 1}]}, {\u0027compute_nodes\u0027: [{\u0027name\u0027: \u0027compute1\u0027}]}]}","commit_id":"8a78cbdb2c7a824c5e99a2a0a1453bdf4ce66069"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"851b74b3b548466e4ced5fc3d6f3b2b08e2ef1f2","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        for rule in audit_template.scope:"},{"line_number":115,"context_line":"            if \u0027host_aggregates\u0027 in rule:"},{"line_number":116,"context_line":"                include_host_aggregates \u003d True"},{"line_number":117,"context_line":"            elif \u0027exclude\u0027 in rule:"},{"line_number":118,"context_line":"                for resource in rule[\u0027exclude\u0027]:"},{"line_number":119,"context_line":"                    if \u0027host_aggregates\u0027 in resource:"},{"line_number":120,"context_line":"                        exclude_host_aggregates \u003d True"},{"line_number":121,"context_line":"        if include_host_aggregates and exclude_host_aggregates:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_7673ad4e","line":118,"range":{"start_line":117,"start_character":12,"end_line":118,"end_character":48},"updated":"2017-04-26 12:13:20.000000000","message":"why not simply writing:\n\n    for resource in rule.get(\u0027exclude\u0027, []):\n        if \u0027host_aggregates\u0027 in resource:\n            exclude_host_aggregates \u003d True\n\nBy doing so, if the \"exclude\" key doesn\u0027t exist, we iterate over [], but because it\u0027s empty, we don\u0027t actually perform any iteration. No iteration here would act the same as the ``if \u0027exclude\u0027 in rule``\n\n    elif \u0027exclude\u0027 in rule:\n        for resource in rule[\u0027exclude\u0027]:\n            if \u0027host_aggregates\u0027 in resource:\n                exclude_host_aggregates \u003d True","commit_id":"b9ff562be38bd22776cf06eca40b3f607261f160"},{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"41fff5b906c02b45d565ff7bd90caa223d84aba7","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        for rule in audit_template.scope:"},{"line_number":115,"context_line":"            if \u0027host_aggregates\u0027 in rule:"},{"line_number":116,"context_line":"                include_host_aggregates \u003d True"},{"line_number":117,"context_line":"            elif \u0027exclude\u0027 in rule:"},{"line_number":118,"context_line":"                for resource in rule[\u0027exclude\u0027]:"},{"line_number":119,"context_line":"                    if \u0027host_aggregates\u0027 in resource:"},{"line_number":120,"context_line":"                        exclude_host_aggregates \u003d True"},{"line_number":121,"context_line":"        if include_host_aggregates and exclude_host_aggregates:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_85e5bd0b","line":118,"range":{"start_line":117,"start_character":12,"end_line":118,"end_character":48},"in_reply_to":"5ff73747_7673ad4e","updated":"2017-04-27 08:23:46.000000000","message":"Vincent, Please excuse me if i am wrong. Why should we even iterate over an empty list even \u0027exclude\u0027 does not exists in the scope?\n\nFor example for below scope,\n\n[{\u0027host_aggregates\u0027: [{\u0027id\u0027: \u0027*\u0027}]}, {\u0027availability_zones\u0027: [{\u0027name\u0027: \u0027AZ1\u0027}, {\u0027name\u0027: \u0027AZ2\u0027}]}], it will iterate over empty list twice, am i correct?","commit_id":"b9ff562be38bd22776cf06eca40b3f607261f160"}],"watcher/common/exception.py":[{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"e595ba0020e6ad9cae81bd83c770c0925a61154b","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"class InvalidScope(Invalid):"},{"line_number":174,"context_line":"    msg_fmt \u003d _(\"Scope %(strategy)s is invalid\")"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"class InvalidAudit(Invalid):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_e4cbbc50","line":174,"range":{"start_line":174,"start_character":4,"end_line":174,"end_character":48},"updated":"2017-04-17 12:37:17.000000000","message":"You replace this message in API section. Do you really need to have InvalidScope?","commit_id":"24b3612834f6b6273849e9cd6ff26f49f9579e99"},{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"6d6ee6a29af4aad7fe0a86bd6b842b568bbf958f","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"class InvalidScope(Invalid):"},{"line_number":174,"context_line":"    msg_fmt \u003d _(\"Scope %(strategy)s is invalid\")"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"class InvalidAudit(Invalid):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_c092d74b","line":174,"range":{"start_line":174,"start_character":4,"end_line":174,"end_character":48},"in_reply_to":"7ffa3b31_e4cbbc50","updated":"2017-04-18 04:47:37.000000000","message":"done.","commit_id":"24b3612834f6b6273849e9cd6ff26f49f9579e99"}],"watcher/decision_engine/scope/default.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"8d8b776c3cc4d1e679bdc699a472cd65e0991c46","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"    }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def __init__(self, scope, config, osc\u003dNone):"},{"line_number":113,"context_line":"        super(DefaultScope, self).__init__(scope)"},{"line_number":114,"context_line":"        self._osc \u003d osc"},{"line_number":115,"context_line":"        self.config \u003d config"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_1169338a","line":112,"range":{"start_line":112,"start_character":30,"end_line":112,"end_character":38},"updated":"2017-04-18 07:34:23.000000000","message":"IMHO, this extra parameter should be added down into the base.BaseScope __init__() constructor.","commit_id":"dfdbd9f8a34cde8d2883ea80c4257bb8e2610633"},{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"43eb4bf8565b335e4565f6451822f5ad603041eb","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"    }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def __init__(self, scope, config, osc\u003dNone):"},{"line_number":113,"context_line":"        super(DefaultScope, self).__init__(scope)"},{"line_number":114,"context_line":"        self._osc \u003d osc"},{"line_number":115,"context_line":"        self.config \u003d config"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_7cc0002b","line":112,"range":{"start_line":112,"start_character":30,"end_line":112,"end_character":38},"in_reply_to":"7ffa3b31_1169338a","updated":"2017-04-20 09:16:43.000000000","message":"Done","commit_id":"dfdbd9f8a34cde8d2883ea80c4257bb8e2610633"}]}
