)]}'
{"ceilometer/alarm/notifier/trust.py":[{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"a8843d24666bcb7820dd37bdaf08ae2d8625e344","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright © 2013 eNovance"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2Fvm4%3D","line":3,"updated":"2014-04-17 19:08:37.000000000","message":"May you change year of copyright?","commit_id":"c0f347769156aeecb78f31ba096748e1b6c6ab66"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"7bee6ec27e98db87c69951924a7431a62b529641","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright © 2013 eNovance"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FsQI%3D","line":3,"in_reply_to":"AAAAXH%2F%2Fvm4%3D","updated":"2014-04-18 07:19:38.000000000","message":"Done","commit_id":"c0f347769156aeecb78f31ba096748e1b6c6ab66"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"a8843d24666bcb7820dd37bdaf08ae2d8625e344","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    keystone authentication. It uses the ceilometer service user to"},{"line_number":37,"context_line":"    authenticate using the trust ID provided."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    The URL must be in the form http+trust://trust-id@host/action."},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FvkM%3D","line":39,"updated":"2014-04-17 19:08:37.000000000","message":"In tests and in code you use scheme \u0027trust+http\u0027. May add right scheme to docstring, please?","commit_id":"c0f347769156aeecb78f31ba096748e1b6c6ab66"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"7bee6ec27e98db87c69951924a7431a62b529641","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    keystone authentication. It uses the ceilometer service user to"},{"line_number":37,"context_line":"    authenticate using the trust ID provided."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    The URL must be in the form http+trust://trust-id@host/action."},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FsQE%3D","line":39,"in_reply_to":"AAAAXH%2F%2FvkM%3D","updated":"2014-04-18 07:19:38.000000000","message":"Done","commit_id":"c0f347769156aeecb78f31ba096748e1b6c6ab66"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7f8422dacb43192bd32ab87705a7ec78cac16cd0","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        trust_id \u003d action.username"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        auth_url \u003d cfg.CONF.service_credentials.os_auth_url.replace("},{"line_number":47,"context_line":"            \"v2.0\", \"v3\")"},{"line_number":48,"context_line":"        client \u003d keystone_client.Client("},{"line_number":49,"context_line":"            username\u003dcfg.CONF.service_credentials.os_username,"},{"line_number":50,"context_line":"            password\u003dcfg.CONF.service_credentials.os_password,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FsI8%3D","line":47,"updated":"2014-04-18 07:42:57.000000000","message":"Looks a bit hacky, but I don\u0027t see an other way :(","commit_id":"014cd00649be40225aa2c71f92702c1ec2872d8e"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7f8422dacb43192bd32ab87705a7ec78cac16cd0","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                             action.fragment)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        headers \u003d {\u0027X-Auth-Token\u0027: client.auth_token}"},{"line_number":66,"context_line":"        notifier.rest.RestAlarmNotifier.notify(action, alarm_id, previous,"},{"line_number":67,"context_line":"                                               current, reason, reason_data,"},{"line_number":68,"context_line":"                                               headers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FsIQ%3D","line":66,"updated":"2014-04-18 07:42:57.000000000","message":"I think it\u0027s better to inherit from RestAlarmNotifier and call super instead of using directly the static method.","commit_id":"014cd00649be40225aa2c71f92702c1ec2872d8e"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"139b99c75e9b7704723ed7dd80f2b19c96169f3f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                             action.fragment)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        headers \u003d {\u0027X-Auth-Token\u0027: client.auth_token}"},{"line_number":66,"context_line":"        notifier.rest.RestAlarmNotifier.notify(action, alarm_id, previous,"},{"line_number":67,"context_line":"                                               current, reason, reason_data,"},{"line_number":68,"context_line":"                                               headers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FpYA%3D","line":66,"in_reply_to":"AAAAXH%2F%2FsIQ%3D","updated":"2014-04-18 14:50:45.000000000","message":"So super doesn\u0027t work in static methods... I added the inheritance, but it doesn\u0027t seem super useful.","commit_id":"014cd00649be40225aa2c71f92702c1ec2872d8e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"86dc706ed1bf2b087b341a7b06270a3a477390f8","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"\"\"\"Rest alarm notifier with trusted authentication.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    import urllib.parse"},{"line_number":20,"context_line":"    SplitResult \u003d urllib.parse.SplitResult"},{"line_number":21,"context_line":"except ImportError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2F%2BWQ%3D","line":18,"updated":"2014-04-24 22:31:43.000000000","message":"this should use:\n\nfrom six.moves.urllib import parse\n\nand parse.SplitResult below","commit_id":"0b6f2a306f89b011ba0a137d1cbaf07458eefe87"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"4ec964a1ecdf66862bd59a3946839ea05bae3180","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"\"\"\"Rest alarm notifier with trusted authentication.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    import urllib.parse"},{"line_number":20,"context_line":"    SplitResult \u003d urllib.parse.SplitResult"},{"line_number":21,"context_line":"except ImportError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2F8rk%3D","line":18,"in_reply_to":"AAAAXX%2F%2F%2BWQ%3D","updated":"2014-04-25 05:41:07.000000000","message":"I can\u0027t yet, because the requirements hasn\u0027t been synced. See https://review.openstack.org/#/c/88714/","commit_id":"0b6f2a306f89b011ba0a137d1cbaf07458eefe87"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"86dc706ed1bf2b087b341a7b06270a3a477390f8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    import urlparse"},{"line_number":23,"context_line":"    SplitResult \u003d urlparse.SplitResult"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from oslo.config import cfg"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from keystoneclient.v3 import client as keystone_client"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2F%2BWI%3D","line":25,"updated":"2014-04-24 22:31:43.000000000","message":"remove empty line after this","commit_id":"0b6f2a306f89b011ba0a137d1cbaf07458eefe87"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"4ec964a1ecdf66862bd59a3946839ea05bae3180","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    import urlparse"},{"line_number":23,"context_line":"    SplitResult \u003d urlparse.SplitResult"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from oslo.config import cfg"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from keystoneclient.v3 import client as keystone_client"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2F8rg%3D","line":25,"in_reply_to":"AAAAXX%2F%2F%2BWI%3D","updated":"2014-04-25 05:41:07.000000000","message":"Done","commit_id":"0b6f2a306f89b011ba0a137d1cbaf07458eefe87"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"86dc706ed1bf2b087b341a7b06270a3a477390f8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            insecure\u003dcfg.CONF.service_credentials.insecure,"},{"line_number":55,"context_line":"            trust_id\u003dtrust_id)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        # Remove the fake user"},{"line_number":58,"context_line":"        netloc \u003d action.netloc.split(\"@\")[1]"},{"line_number":59,"context_line":"        # Remove the trust prefix"},{"line_number":60,"context_line":"        scheme \u003d action.scheme[6:]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2F%2BWA%3D","line":57,"updated":"2014-04-24 22:31:43.000000000","message":"what\u0027s \u0027the fake user\u0027?","commit_id":"0b6f2a306f89b011ba0a137d1cbaf07458eefe87"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"4ec964a1ecdf66862bd59a3946839ea05bae3180","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            insecure\u003dcfg.CONF.service_credentials.insecure,"},{"line_number":55,"context_line":"            trust_id\u003dtrust_id)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        # Remove the fake user"},{"line_number":58,"context_line":"        netloc \u003d action.netloc.split(\"@\")[1]"},{"line_number":59,"context_line":"        # Remove the trust prefix"},{"line_number":60,"context_line":"        scheme \u003d action.scheme[6:]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2F8rY%3D","line":57,"in_reply_to":"AAAAXX%2F%2F%2BWA%3D","updated":"2014-04-25 05:41:07.000000000","message":"I use the URI username to pass the trust_id, as seen above, so I remove it here.","commit_id":"0b6f2a306f89b011ba0a137d1cbaf07458eefe87"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"86dc706ed1bf2b087b341a7b06270a3a477390f8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                             action.fragment)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        headers \u003d {\u0027X-Auth-Token\u0027: client.auth_token}"},{"line_number":66,"context_line":"        notifier.rest.RestAlarmNotifier.notify("},{"line_number":67,"context_line":"            action, alarm_id, previous, current, reason, reason_data, headers)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FTqg%3D","line":66,"updated":"2014-04-24 22:31:43.000000000","message":"can we use super instead?","commit_id":"0b6f2a306f89b011ba0a137d1cbaf07458eefe87"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"4ec964a1ecdf66862bd59a3946839ea05bae3180","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                             action.fragment)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        headers \u003d {\u0027X-Auth-Token\u0027: client.auth_token}"},{"line_number":66,"context_line":"        notifier.rest.RestAlarmNotifier.notify("},{"line_number":67,"context_line":"            action, alarm_id, previous, current, reason, reason_data, headers)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2F8rQ%3D","line":66,"in_reply_to":"AAAAXH%2F%2FTqg%3D","updated":"2014-04-25 05:41:07.000000000","message":"No, it\u0027s a static method.","commit_id":"0b6f2a306f89b011ba0a137d1cbaf07458eefe87"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"1012b6858203294f04b95e9d15360341c2a54ed2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                             action.fragment)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        headers \u003d {\u0027X-Auth-Token\u0027: client.auth_token}"},{"line_number":66,"context_line":"        notifier.rest.RestAlarmNotifier.notify("},{"line_number":67,"context_line":"            action, alarm_id, previous, current, reason, reason_data, headers)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXX%2F%2F8cM%3D","line":66,"in_reply_to":"AAAAXX%2F%2F8rQ%3D","updated":"2014-04-25 06:08:55.000000000","message":"So, the method should be a classmethod to use super.","commit_id":"0b6f2a306f89b011ba0a137d1cbaf07458eefe87"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"e173139789a521620c4db45b273e97ddbf4135ac","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        trust_id \u003d action.username"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        auth_url \u003d cfg.CONF.service_credentials.os_auth_url.replace("},{"line_number":46,"context_line":"            \"v2.0\", \"v3\")"},{"line_number":47,"context_line":"        client \u003d keystone_client.Client("},{"line_number":48,"context_line":"            username\u003dcfg.CONF.service_credentials.os_username,"},{"line_number":49,"context_line":"            password\u003dcfg.CONF.service_credentials.os_password,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXX%2F%2F7uo%3D","line":46,"updated":"2014-04-25 08:05:06.000000000","message":"I\u0027m a little concerned that this is acting ultra vires with respect to the user\u0027s intent re. selection of a keystone API version.\n\nIf the OS_AUTH_URL was explicitly configured with a trailing v2.0, doesn\u0027t that mean they want to restrict keystone usage to that particular version of the API? (maybe they think v3 is too immature, or something of that ilk)\n\nAre we assuming that the creation of an alarm by a non-admin user with an action based on \u0027trust+http\u0027 overrides the intent expressed in the OS_AUTH_URL config?","commit_id":"107577587383570d06aa1900eb11edcada9aff26"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"de12c14101eec6c1871fc9942f4b67d9636c4838","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        trust_id \u003d action.username"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        auth_url \u003d cfg.CONF.service_credentials.os_auth_url.replace("},{"line_number":46,"context_line":"            \"v2.0\", \"v3\")"},{"line_number":47,"context_line":"        client \u003d keystone_client.Client("},{"line_number":48,"context_line":"            username\u003dcfg.CONF.service_credentials.os_username,"},{"line_number":49,"context_line":"            password\u003dcfg.CONF.service_credentials.os_password,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXX%2F%2F7ao%3D","line":46,"in_reply_to":"AAAAXX%2F%2F7uo%3D","updated":"2014-04-25 08:34:38.000000000","message":"This is valid question. The keys are that:\n* You have to put a version in auth_uri\n* The other parts of ceilometer only works with v2 for now, although we should be able to migrate\n* Specifying v2 in auth_uri isn\u0027t really an intent of \"only support keystone v2\". You\u0027d want to configure keystone to not expose v3 if that was the case.\n\nThis is definitely not ideal. Keystone is starting to improve the situation, by offering ways to discover which versions are available, but it requires additional query logic. I think for now doing the replace is fine and should not be a problem.\n\nThanks!","commit_id":"107577587383570d06aa1900eb11edcada9aff26"}]}
