)]}'
{"doc/source/development_guidelines.rst":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cdf5dd916019f8cb1b818024a188f57945704ad3","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"The environment variable ``SWIFT_TEST_POLICY`` may be set to specify a"},{"line_number":64,"context_line":"particular storage policy *name* that will be used for testing. When set, tests"},{"line_number":65,"context_line":"that would otherwise use the default policy or choose a random policy from"},{"line_number":66,"context_line":"those available will instead use the policy specified. Tests that use more than"},{"line_number":67,"context_line":"one policy will include the specified policy in the set of policies used. The"},{"line_number":68,"context_line":"specified policy must be available on the cluster under test."}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_3dffcf35","line":65,"updated":"2015-04-03 20:32:39.000000000","message":"need to fix the \u0027default\u0027 part here, now that the default can be used","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"5b7a4f15b8b08114625f8bad7bf079733aab90a3","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"The environment variable ``SWIFT_TEST_POLICY`` may be set to specify a"},{"line_number":64,"context_line":"particular storage policy *name* that will be used for testing. When set, tests"},{"line_number":65,"context_line":"that would otherwise use the default policy or choose a random policy from"},{"line_number":66,"context_line":"those available will instead use the policy specified. Tests that use more than"},{"line_number":67,"context_line":"one policy will include the specified policy in the set of policies used. The"},{"line_number":68,"context_line":"specified policy must be available on the cluster under test."}],"source_content_type":"text/x-rst","patch_set":9,"id":"9aa53dc9_6eda9f7a","line":65,"in_reply_to":"baa041b7_3dffcf35","updated":"2015-04-06 16:39:05.000000000","message":"Done","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"}],"test/functional/__init__.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"94bf2ea19045851af08e099ac1f104223f1daa0b","unresolved":false,"context_lines":[{"line_number":760,"context_line":"    def patch_request():"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"        def request_with_policy(method, url, body\u003dNone, headers\u003d{}):"},{"line_number":763,"context_line":"            global policy_specified"},{"line_number":764,"context_line":"            if policy_specified and not (\u0027X-Storage-Policy\u0027 in headers):"},{"line_number":765,"context_line":"                headers[\u0027X-Storage-Policy\u0027] \u003d policy_specified"},{"line_number":766,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_46a3d0b1","line":763,"updated":"2015-03-26 06:25:50.000000000","message":"For reference, we don\u0027t have to call \u0027global\u0027. we need \u0027global\u0027 when we want to assign a value to the variable in the out of scope.","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"2abc00f0c42b1b3f3c43c8bcb078dbecb9ffc223","unresolved":false,"context_lines":[{"line_number":760,"context_line":"    def patch_request():"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"        def request_with_policy(method, url, body\u003dNone, headers\u003d{}):"},{"line_number":763,"context_line":"            global policy_specified"},{"line_number":764,"context_line":"            if policy_specified and not (\u0027X-Storage-Policy\u0027 in headers):"},{"line_number":765,"context_line":"                headers[\u0027X-Storage-Policy\u0027] \u003d policy_specified"},{"line_number":766,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_2c25c908","line":763,"in_reply_to":"1a6ced46_46a3d0b1","updated":"2015-03-26 11:37:43.000000000","message":"Done","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"94bf2ea19045851af08e099ac1f104223f1daa0b","unresolved":false,"context_lines":[{"line_number":761,"context_line":""},{"line_number":762,"context_line":"        def request_with_policy(method, url, body\u003dNone, headers\u003d{}):"},{"line_number":763,"context_line":"            global policy_specified"},{"line_number":764,"context_line":"            if policy_specified and not (\u0027X-Storage-Policy\u0027 in headers):"},{"line_number":765,"context_line":"                headers[\u0027X-Storage-Policy\u0027] \u003d policy_specified"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"            return orig_request(method, url, body, headers)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_e67afc22","line":764,"updated":"2015-03-26 06:25:50.000000000","message":"(Nit) If we could use\n\n \u0027X-Storage-Policy\u0027 not in headers\n\nwe can remove \"()\" and it is 2 characters fewer :D","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9a52a6688b30ad9b30599def84300951fe083ef8","unresolved":false,"context_lines":[{"line_number":761,"context_line":""},{"line_number":762,"context_line":"        def request_with_policy(method, url, body\u003dNone, headers\u003d{}):"},{"line_number":763,"context_line":"            global policy_specified"},{"line_number":764,"context_line":"            if policy_specified and not (\u0027X-Storage-Policy\u0027 in headers):"},{"line_number":765,"context_line":"                headers[\u0027X-Storage-Policy\u0027] \u003d policy_specified"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"            return orig_request(method, url, body, headers)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_f4aa9d6f","line":764,"in_reply_to":"1a6ced46_e67afc22","updated":"2015-03-26 09:25:15.000000000","message":"+1","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"2abc00f0c42b1b3f3c43c8bcb078dbecb9ffc223","unresolved":false,"context_lines":[{"line_number":761,"context_line":""},{"line_number":762,"context_line":"        def request_with_policy(method, url, body\u003dNone, headers\u003d{}):"},{"line_number":763,"context_line":"            global policy_specified"},{"line_number":764,"context_line":"            if policy_specified and not (\u0027X-Storage-Policy\u0027 in headers):"},{"line_number":765,"context_line":"                headers[\u0027X-Storage-Policy\u0027] \u003d policy_specified"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"            return orig_request(method, url, body, headers)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_4c1e85bc","line":764,"in_reply_to":"1a6ced46_f4aa9d6f","updated":"2015-03-26 11:37:43.000000000","message":"Done","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"94bf2ea19045851af08e099ac1f104223f1daa0b","unresolved":false,"context_lines":[{"line_number":965,"context_line":"        if policy_specified:"},{"line_number":966,"context_line":"            for p in self:"},{"line_number":967,"context_line":"                if p[\u0027name\u0027] \u003d\u003d policy_specified:"},{"line_number":968,"context_line":"                    return p"},{"line_number":969,"context_line":"        return random.choice(self)"},{"line_number":970,"context_line":""},{"line_number":971,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_112d90a8","line":968,"updated":"2015-03-26 06:25:50.000000000","message":"not sure but if we want to set policy_specified to the default for testing purpose, we should set it to policies.default on from_info method around L942.\n\ni.e. \n def from_info(cls, info\u003dNone):\n (*snip*)\n   if policy_specified:\n     for p in policies:\n       if p[\u0027name\u0027] \u003d\u003d policy_specified:\n         policies.default \u003d p\n    return policies\n\nIf it is suitable for you, we could get rid of if condition from test_container \"if tf.policy_specified\".\n\nI hope this would be good for you.","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"2abc00f0c42b1b3f3c43c8bcb078dbecb9ffc223","unresolved":false,"context_lines":[{"line_number":965,"context_line":"        if policy_specified:"},{"line_number":966,"context_line":"            for p in self:"},{"line_number":967,"context_line":"                if p[\u0027name\u0027] \u003d\u003d policy_specified:"},{"line_number":968,"context_line":"                    return p"},{"line_number":969,"context_line":"        return random.choice(self)"},{"line_number":970,"context_line":""},{"line_number":971,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_ec5d717a","line":968,"in_reply_to":"1a6ced46_112d90a8","updated":"2015-03-26 11:37:43.000000000","message":"Kota, actually we wanted to remove the \"randomness\" of select when SWIFT_TEST_POLICY is set and just use that one policy instead. The only time we will allow randomness would be for the second policy when two policies are needed in a test.","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ed5a12f23797774de846f40a158e520416f5bc03","unresolved":false,"context_lines":[{"line_number":522,"context_line":"def setup_package():"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    global policy_specified"},{"line_number":525,"context_line":"    policy_specified \u003d os.environ.get(\u0027SWIFT_TEST_POLICY\u0027)"},{"line_number":526,"context_line":"    print \u003e\u003esys.stderr, \u0027SWIFT_TEST_POLICY %s\u0027 % policy_specified"},{"line_number":527,"context_line":"    Container.policy_specified \u003d policy_specified"},{"line_number":528,"context_line":"    in_process_env \u003d os.environ.get(\u0027SWIFT_TEST_IN_PROCESS\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6ced46_b254b0ff","line":525,"updated":"2015-03-26 12:15:35.000000000","message":"we should check that policy_specified is advertised in the cluster info and abort testing if not, with a suitable message e.g.\n\n  SKIPPING FUNCTIONAL TESTS DUE TO POLICY \u003cname\u003e NOT BEING AVAILABLE","commit_id":"447963931720d297d9fe62bf0b7c8b1860955e53"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"41398e0d1fa35b44230a1b8a90de9d8a73b573b8","unresolved":false,"context_lines":[{"line_number":522,"context_line":"def setup_package():"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    global policy_specified"},{"line_number":525,"context_line":"    policy_specified \u003d os.environ.get(\u0027SWIFT_TEST_POLICY\u0027)"},{"line_number":526,"context_line":"    print \u003e\u003esys.stderr, \u0027SWIFT_TEST_POLICY %s\u0027 % policy_specified"},{"line_number":527,"context_line":"    Container.policy_specified \u003d policy_specified"},{"line_number":528,"context_line":"    in_process_env \u003d os.environ.get(\u0027SWIFT_TEST_IN_PROCESS\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa963961_fb5e4c44","line":525,"in_reply_to":"1a6ced46_b254b0ff","updated":"2015-03-27 13:00:37.000000000","message":"Done","commit_id":"447963931720d297d9fe62bf0b7c8b1860955e53"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ed5a12f23797774de846f40a158e520416f5bc03","unresolved":false,"context_lines":[{"line_number":926,"context_line":"        for p in self:"},{"line_number":927,"context_line":"            if p.get(\u0027default\u0027, False):"},{"line_number":928,"context_line":"                assert self.default is None, \u0027Found multiple default \u0027 \\"},{"line_number":929,"context_line":"                    \u0027policies %r and %r\u0027 % (self.default, p)"},{"line_number":930,"context_line":"                self.default \u003d p"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6ced46_6f2a5391","line":929,"updated":"2015-03-26 12:15:35.000000000","message":"I think Kota has a point that if policy_specified !\u003d False then the \u0027default\u0027 variable should probably be set \u003d policy_specified.However, I think this should be done in __init__ . It would future proof this change, e.g. if a test were to explicitly set a header using:\n\n  \u0027X-Storage-Policy\u0027 \u003d self.policies.default.name or whatever\n\nthen our header insertion code would be bypassed (because the header is already set) but the value would be policy_specified anyway.\n\nHowever, I haven\u0027t audited those tests that are accessing the default variable to check that makes sense.","commit_id":"447963931720d297d9fe62bf0b7c8b1860955e53"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"41398e0d1fa35b44230a1b8a90de9d8a73b573b8","unresolved":false,"context_lines":[{"line_number":926,"context_line":"        for p in self:"},{"line_number":927,"context_line":"            if p.get(\u0027default\u0027, False):"},{"line_number":928,"context_line":"                assert self.default is None, \u0027Found multiple default \u0027 \\"},{"line_number":929,"context_line":"                    \u0027policies %r and %r\u0027 % (self.default, p)"},{"line_number":930,"context_line":"                self.default \u003d p"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa963961_7b311c0b","line":929,"in_reply_to":"1a6ced46_6f2a5391","updated":"2015-03-27 13:00:37.000000000","message":"sounds good to me too, I will +1 on this dependent patch","commit_id":"447963931720d297d9fe62bf0b7c8b1860955e53"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"425c97f1a15344d540e37db31ebfa035a76d3ea0","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    # clear all policies from test swift.conf before adding test policy back"},{"line_number":210,"context_line":"    for policy in policies:"},{"line_number":211,"context_line":"        conf.remove_section(sp_prefix + str(policy.idx))"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    if policy_specified:"},{"line_number":214,"context_line":"        policy_to_test \u003d policies.get_by_name(policy_specified)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_31785cc4","line":211,"updated":"2015-03-30 12:35:45.000000000","message":"Do you need this at beginning of this method ?\n\n     global policy_specified","commit_id":"ca5ab76b0de12868b306ab13903399b7c5639987"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"da9752e44bf592e4e40e6f9ba259f8b72338cdda","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    # clear all policies from test swift.conf before adding test policy back"},{"line_number":210,"context_line":"    for policy in policies:"},{"line_number":211,"context_line":"        conf.remove_section(sp_prefix + str(policy.idx))"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    if policy_specified:"},{"line_number":214,"context_line":"        policy_to_test \u003d policies.get_by_name(policy_specified)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_25ba4424","line":211,"in_reply_to":"da9b358b_31785cc4","updated":"2015-04-01 17:12:26.000000000","message":"not needed here, it\u0027s only needed when the variable is being assigned a value.","commit_id":"ca5ab76b0de12868b306ab13903399b7c5639987"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"a716dc47669e7de96a8dbfef5ffc3df94ae61268","unresolved":false,"context_lines":[{"line_number":772,"context_line":""},{"line_number":773,"context_line":"    def patch_request():"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"        def request_with_policy(method, url, body\u003dNone, headers\u003d{}):"},{"line_number":776,"context_line":"            if policy_specified and not \u0027X-Storage-Policy\u0027 in headers:"},{"line_number":777,"context_line":"                headers[\u0027X-Storage-Policy\u0027] \u003d policy_specified"},{"line_number":778,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_462b2431","line":775,"updated":"2015-03-30 12:12:17.000000000","message":"nit: The named arg \u0027body\u0027 is called \u0027data\u0027 in swiftclient.HTTPConnection.request. Also the method has an additional arg \u0027files\u0027\n\nAlso, may be, consider adding \u0027X-Storage-Policy\u0027 header after checking url and method to ascertain it\u0027s a container creation request.","commit_id":"ca5ab76b0de12868b306ab13903399b7c5639987"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"da9752e44bf592e4e40e6f9ba259f8b72338cdda","unresolved":false,"context_lines":[{"line_number":772,"context_line":""},{"line_number":773,"context_line":"    def patch_request():"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"        def request_with_policy(method, url, body\u003dNone, headers\u003d{}):"},{"line_number":776,"context_line":"            if policy_specified and not \u0027X-Storage-Policy\u0027 in headers:"},{"line_number":777,"context_line":"                headers[\u0027X-Storage-Policy\u0027] \u003d policy_specified"},{"line_number":778,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_5d1aec18","line":775,"in_reply_to":"da9b358b_462b2431","updated":"2015-04-01 17:12:26.000000000","message":"I used the same method definition as in httplib. Is that wrong?\nAdded the check to method and url as suggested.","commit_id":"ca5ab76b0de12868b306ab13903399b7c5639987"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"a716dc47669e7de96a8dbfef5ffc3df94ae61268","unresolved":false,"context_lines":[{"line_number":780,"context_line":""},{"line_number":781,"context_line":"        http_conn.request \u003d request_with_policy"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    # Add the policy header, if requested"},{"line_number":784,"context_line":"    patch_request()"},{"line_number":785,"context_line":"    return parsed_url, http_conn"},{"line_number":786,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_864fec91","line":783,"updated":"2015-03-30 12:12:17.000000000","message":"I did not understand the \"if requested\" part in the comment above.","commit_id":"ca5ab76b0de12868b306ab13903399b7c5639987"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"da9752e44bf592e4e40e6f9ba259f8b72338cdda","unresolved":false,"context_lines":[{"line_number":780,"context_line":""},{"line_number":781,"context_line":"        http_conn.request \u003d request_with_policy"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"    # Add the policy header, if requested"},{"line_number":784,"context_line":"    patch_request()"},{"line_number":785,"context_line":"    return parsed_url, http_conn"},{"line_number":786,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_3d1728ef","line":783,"in_reply_to":"da9b358b_864fec91","updated":"2015-04-01 17:12:26.000000000","message":"Done","commit_id":"ca5ab76b0de12868b306ab13903399b7c5639987"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cdf5dd916019f8cb1b818024a188f57945704ad3","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        ps_found \u003d False"},{"line_number":708,"context_line":"        for p in policies:"},{"line_number":709,"context_line":"            if policy_specified \u003d\u003d p[\u0027name\u0027]:"},{"line_number":710,"context_line":"                ps_found \u003d True"},{"line_number":711,"context_line":"                break"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"        if ps_found:"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_3ac11581","line":710,"updated":"2015-04-03 20:32:39.000000000","message":"nit: you could use a for/else construct here to avoid the ps_found ... if ps_found","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"5b7a4f15b8b08114625f8bad7bf079733aab90a3","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        ps_found \u003d False"},{"line_number":708,"context_line":"        for p in policies:"},{"line_number":709,"context_line":"            if policy_specified \u003d\u003d p[\u0027name\u0027]:"},{"line_number":710,"context_line":"                ps_found \u003d True"},{"line_number":711,"context_line":"                break"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"        if ps_found:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_b95c6fee","line":710,"in_reply_to":"baa041b7_3ac11581","updated":"2015-04-06 16:39:05.000000000","message":"Done","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cdf5dd916019f8cb1b818024a188f57945704ad3","unresolved":false,"context_lines":[{"line_number":715,"context_line":"            Container.policy_specified \u003d policy_specified"},{"line_number":716,"context_line":"        else:"},{"line_number":717,"context_line":"            _info(\u0027Failed to find specified policy %s\u0027 % policy_specified)"},{"line_number":718,"context_line":"            raise"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"    get_cluster_info()"},{"line_number":721,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_1d4d2b6c","line":718,"updated":"2015-04-03 20:32:39.000000000","message":"you need to specify an exception to raise when not in an except clause.\n\nTBH, I don\u0027t know whats best here, raise an exception, set skip\u003d\u003dTrue or call exit(), or print a warning and fallback to default behavior.\n\nAnyone got an opinion?","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"265e2e32e95f92aa80e10d46b1e9c277c60b092f","unresolved":false,"context_lines":[{"line_number":715,"context_line":"            Container.policy_specified \u003d policy_specified"},{"line_number":716,"context_line":"        else:"},{"line_number":717,"context_line":"            _info(\u0027Failed to find specified policy %s\u0027 % policy_specified)"},{"line_number":718,"context_line":"            raise"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"    get_cluster_info()"},{"line_number":721,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_759f9cb4","line":718,"in_reply_to":"baa041b7_1d4d2b6c","updated":"2015-04-06 01:53:47.000000000","message":"+1 for this idea.\n\nIMO, Not sure but raising AssertionError seems better because we lost the assertion to verify the test under the specified policy.","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cdf5dd916019f8cb1b818024a188f57945704ad3","unresolved":false,"context_lines":[{"line_number":783,"context_line":"        http_conn.request \u003d request_with_policy"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"    # Add the policy header if policy_specified is set"},{"line_number":786,"context_line":"    patch_request()"},{"line_number":787,"context_line":"    return parsed_url, http_conn"},{"line_number":788,"context_line":""},{"line_number":789,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_bdd75f22","line":786,"updated":"2015-04-03 20:32:39.000000000","message":"hmmm, does this need to be broken out as a method call, or do we have enough context already (the http_connection instance) to go ahead and patch request without delegating to a patch_request scope? i.e. delete lines with patch_request() and unindent the method body.\n\nidk, i\u0027m tired, maybe i\u0027m not seeing it :)","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"5b7a4f15b8b08114625f8bad7bf079733aab90a3","unresolved":false,"context_lines":[{"line_number":783,"context_line":"        http_conn.request \u003d request_with_policy"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"    # Add the policy header if policy_specified is set"},{"line_number":786,"context_line":"    patch_request()"},{"line_number":787,"context_line":"    return parsed_url, http_conn"},{"line_number":788,"context_line":""},{"line_number":789,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_21ddc514","line":786,"in_reply_to":"baa041b7_bdd75f22","updated":"2015-04-06 16:39:05.000000000","message":"Done","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5fbac9584ab371e7dd3d34d612a43ceffd2a513f","unresolved":false,"context_lines":[{"line_number":979,"context_line":"        if policy_specified:"},{"line_number":980,"context_line":"            for p in self:"},{"line_number":981,"context_line":"                if p[\u0027name\u0027] \u003d\u003d policy_specified:"},{"line_number":982,"context_line":"                    return p"},{"line_number":983,"context_line":"        return random.choice(self)"},{"line_number":984,"context_line":""},{"line_number":985,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_675164d8","line":982,"updated":"2015-04-03 01:17:17.000000000","message":"Can we return Container.policy_specified directly without for-loop?\n\nif policy_specified is not empty, we should prevent to return a rancom choiced policy, IMHO, but this code has a possibility that, right?\n\nHence, the code might be\n\ndef select(self):\n  if policy_specified:\n    if Container.policy_specified:\n      return Container.policy_specified\n    else:\n      _info(\u0027Failed to select specified policy %s\u0027 % policy_specified)\n      raise\n  else:\n    return random.choice(self)\n\nI don\u0027t think this is the best way but I think it achieves to remove unfortunate failures.","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cdf5dd916019f8cb1b818024a188f57945704ad3","unresolved":false,"context_lines":[{"line_number":979,"context_line":"        if policy_specified:"},{"line_number":980,"context_line":"            for p in self:"},{"line_number":981,"context_line":"                if p[\u0027name\u0027] \u003d\u003d policy_specified:"},{"line_number":982,"context_line":"                    return p"},{"line_number":983,"context_line":"        return random.choice(self)"},{"line_number":984,"context_line":""},{"line_number":985,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_fdb5e730","line":982,"in_reply_to":"baa041b7_675164d8","updated":"2015-04-03 20:32:39.000000000","message":"I like kota\u0027s idea but even better lets follow cshwede\u0027s trick with the Container class and set a class variable in the FunctionalStoragePolicyCollection class.\n\nNote to self: you have to be sure that when you construct a new instance using exclude or filter, that you don\u0027t just assume the policy_specified is in that instance\u0027s list.","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"5b7a4f15b8b08114625f8bad7bf079733aab90a3","unresolved":false,"context_lines":[{"line_number":979,"context_line":"        if policy_specified:"},{"line_number":980,"context_line":"            for p in self:"},{"line_number":981,"context_line":"                if p[\u0027name\u0027] \u003d\u003d policy_specified:"},{"line_number":982,"context_line":"                    return p"},{"line_number":983,"context_line":"        return random.choice(self)"},{"line_number":984,"context_line":""},{"line_number":985,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9aa53dc9_d9597390","line":982,"in_reply_to":"baa041b7_fdb5e730","updated":"2015-04-06 16:39:05.000000000","message":"Done","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"}],"test/functional/swift_test_client.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"0d976bbb248ef133260824a5bc351da54ca13aec","unresolved":false,"context_lines":[{"line_number":493,"context_line":"            parms \u003d {}"},{"line_number":494,"context_line":"        if cfg is None:"},{"line_number":495,"context_line":"            cfg \u003d {}"},{"line_number":496,"context_line":"        import test.functional as tf"},{"line_number":497,"context_line":"        if tf.policy_specified and not (\u0027X-Storage-Policy\u0027 in hdrs):"},{"line_number":498,"context_line":"            hdrs[\u0027X-Storage-Policy\u0027] \u003d tf.policy_specified"},{"line_number":499,"context_line":"        return self.conn.make_request(\u0027PUT\u0027, self.path, hdrs\u003dhdrs,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6ced46_bff73558","line":496,"updated":"2015-03-25 19:06:56.000000000","message":"I know this was asked on IRC earlier on, and I don\u0027t have a solution yet.\n\nI think we should avoid this at all, this might make it really hard to debug in the future because you don\u0027t see all imports at the top of the file. Actually wondering that flake8 doesn\u0027t complain about this. I will have a deeper look tomorrow morning, trying to propose something","commit_id":"4aa09c167e480ab650585fc01bd7c36d47ca7bb2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9a52a6688b30ad9b30599def84300951fe083ef8","unresolved":false,"context_lines":[{"line_number":481,"context_line":""},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"class Container(Base):"},{"line_number":484,"context_line":"    policy_specified \u003d None"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    def __init__(self, conn, account, name):"},{"line_number":487,"context_line":"        self.conn \u003d conn"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_b47825c5","line":484,"updated":"2015-03-26 09:25:15.000000000","message":"maybe a comment here to explain why we have a variable that does not appear to ever be set in __init__, to save someone grep\u0027ing to find where it is set.","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"2abc00f0c42b1b3f3c43c8bcb078dbecb9ffc223","unresolved":false,"context_lines":[{"line_number":481,"context_line":""},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"class Container(Base):"},{"line_number":484,"context_line":"    policy_specified \u003d None"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    def __init__(self, conn, account, name):"},{"line_number":487,"context_line":"        self.conn \u003d conn"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_ac51b937","line":484,"in_reply_to":"1a6ced46_b47825c5","updated":"2015-03-26 11:37:43.000000000","message":"Done","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"94bf2ea19045851af08e099ac1f104223f1daa0b","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            parms \u003d {}"},{"line_number":496,"context_line":"        if cfg is None:"},{"line_number":497,"context_line":"            cfg \u003d {}"},{"line_number":498,"context_line":"        if self.policy_specified and not (\u0027X-Storage-Policy\u0027 in hdrs):"},{"line_number":499,"context_line":"            hdrs[\u0027X-Storage-Policy\u0027] \u003d self.policy_specified"},{"line_number":500,"context_line":"        return self.conn.make_request(\u0027PUT\u0027, self.path, hdrs\u003dhdrs,"},{"line_number":501,"context_line":"                                      parms\u003dparms, cfg\u003dcfg) in (201, 202)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_46b830c8","line":498,"updated":"2015-03-26 06:25:50.000000000","message":"same as __init__.py, \u0027X-Storage-Policy\u0027 not in hdrs would be better.","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9a52a6688b30ad9b30599def84300951fe083ef8","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            parms \u003d {}"},{"line_number":496,"context_line":"        if cfg is None:"},{"line_number":497,"context_line":"            cfg \u003d {}"},{"line_number":498,"context_line":"        if self.policy_specified and not (\u0027X-Storage-Policy\u0027 in hdrs):"},{"line_number":499,"context_line":"            hdrs[\u0027X-Storage-Policy\u0027] \u003d self.policy_specified"},{"line_number":500,"context_line":"        return self.conn.make_request(\u0027PUT\u0027, self.path, hdrs\u003dhdrs,"},{"line_number":501,"context_line":"                                      parms\u003dparms, cfg\u003dcfg) in (201, 202)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_f4461dbf","line":498,"in_reply_to":"1a6ced46_46b830c8","updated":"2015-03-26 09:25:15.000000000","message":"+1","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"2abc00f0c42b1b3f3c43c8bcb078dbecb9ffc223","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            parms \u003d {}"},{"line_number":496,"context_line":"        if cfg is None:"},{"line_number":497,"context_line":"            cfg \u003d {}"},{"line_number":498,"context_line":"        if self.policy_specified and not (\u0027X-Storage-Policy\u0027 in hdrs):"},{"line_number":499,"context_line":"            hdrs[\u0027X-Storage-Policy\u0027] \u003d self.policy_specified"},{"line_number":500,"context_line":"        return self.conn.make_request(\u0027PUT\u0027, self.path, hdrs\u003dhdrs,"},{"line_number":501,"context_line":"                                      parms\u003dparms, cfg\u003dcfg) in (201, 202)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_cc427567","line":498,"in_reply_to":"1a6ced46_f4461dbf","updated":"2015-03-26 11:37:43.000000000","message":"Done","commit_id":"87779a644c1e3450a36bb355c46a7cfe527dc9a9"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"a716dc47669e7de96a8dbfef5ffc3df94ae61268","unresolved":false,"context_lines":[{"line_number":496,"context_line":"            parms \u003d {}"},{"line_number":497,"context_line":"        if cfg is None:"},{"line_number":498,"context_line":"            cfg \u003d {}"},{"line_number":499,"context_line":"        if self.policy_specified and not \u0027X-Storage-Policy\u0027 in hdrs:"},{"line_number":500,"context_line":"            hdrs[\u0027X-Storage-Policy\u0027] \u003d self.policy_specified"},{"line_number":501,"context_line":"        return self.conn.make_request(\u0027PUT\u0027, self.path, hdrs\u003dhdrs,"},{"line_number":502,"context_line":"                                      parms\u003dparms, cfg\u003dcfg) in (201, 202)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_e39fca5d","line":499,"updated":"2015-03-30 12:12:17.000000000","message":"nit: I\u0027d write the and part of if condition as \n\n    \u0027X-Storage-Policy\u0027 not in hdrs:","commit_id":"ca5ab76b0de12868b306ab13903399b7c5639987"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"da9752e44bf592e4e40e6f9ba259f8b72338cdda","unresolved":false,"context_lines":[{"line_number":496,"context_line":"            parms \u003d {}"},{"line_number":497,"context_line":"        if cfg is None:"},{"line_number":498,"context_line":"            cfg \u003d {}"},{"line_number":499,"context_line":"        if self.policy_specified and not \u0027X-Storage-Policy\u0027 in hdrs:"},{"line_number":500,"context_line":"            hdrs[\u0027X-Storage-Policy\u0027] \u003d self.policy_specified"},{"line_number":501,"context_line":"        return self.conn.make_request(\u0027PUT\u0027, self.path, hdrs\u003dhdrs,"},{"line_number":502,"context_line":"                                      parms\u003dparms, cfg\u003dcfg) in (201, 202)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa041b7_9add1d73","line":499,"in_reply_to":"da9b358b_e39fca5d","updated":"2015-04-01 17:12:26.000000000","message":"Done","commit_id":"ca5ab76b0de12868b306ab13903399b7c5639987"}],"test/functional/test_container.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cdf5dd916019f8cb1b818024a188f57945704ad3","unresolved":false,"context_lines":[{"line_number":1383,"context_line":"        def put(url, token, parsed, conn):"},{"line_number":1384,"context_line":"            # using the empty storage policy header value here to ensure"},{"line_number":1385,"context_line":"            # that the default policy is chosen in case policy_specified is set"},{"line_number":1386,"context_line":"            # see __init__.py for details on policy_specified"},{"line_number":1387,"context_line":"            conn.request(\u0027PUT\u0027, parsed.path + \u0027/\u0027 + self.container, \u0027\u0027,"},{"line_number":1388,"context_line":"                         {\u0027X-Auth-Token\u0027: token, \u0027X-Storage-Policy\u0027: \u0027\u0027})"},{"line_number":1389,"context_line":"            return check_response(conn)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_bdbe3fd2","line":1386,"updated":"2015-04-03 20:32:39.000000000","message":"+1 for the comment, great!","commit_id":"1e9a985576d948d5e62b5be93924640efffa9d76"}]}
